diff --git a/mods/Arrival/Edited_OLD_DAO_readme.txt b/mods/Arrival/Edited_OLD_DAO_readme.txt
new file mode 100644
index 00000000..9e9efa79
--- /dev/null
+++ b/mods/Arrival/Edited_OLD_DAO_readme.txt
@@ -0,0 +1,37 @@
+MODDED EXES ARE REQUIRED FOR WORK: https://github.com/themrdemonized/STALKER-Anomaly-modded-exes
+
+DLTX OR FDDA EXES ALSO WORK
+
+Dynamic Anomalies Overhaul (DAO)
+Written by demonized, 2022
+Based on work by DoctorX and Eugenium Hazardous Anomalies
+Edited by S.e.m.i.t.o.n.e for Arrival - Anomalies mod
+
+Features
+ Creating anomalies at the start of level after emission/psi-storm and removing anomalies after emission/psi-storm instead of just disabling them, allowing for truly dynamic generation
+ Anomalies behaviour:
+ enable/disable with randomized periods, duration and cooldowns for every single anomaly
+ behaviour if actor is near an anomaly
+ behaviour on hit
+ articles about new anomalies
+ Spawning artefacts in new anomaly zones
+ Enhanced behaviour of usual anomalies
+
+ Anomalies:
+ - "Darkness" - typical one shot anomaly, very omnious looking, met only on north locations. Special behaviour - has a chance to spawn poltergeist in the proximity of player.
+ - "Flash" - bubbly temporal anomaly, which doesnt hurt the player by itself, but travels him forward in time.
+ - "Ghost" - Green bubble anomaly that moves along the fixed path.
+ - "Liquid gold" - Yellow acid pool like anomaly, special behaviour - drains thirst and some stamina.
+ - "Sloth" - Acid field anomaly, special behaviour - 50% reduction of speed near anomaly.
+ - "Mefistotel" - Strange flower-like anomaly.
+ - "Net" - Fountain of particles.
+ - "Point" - Ball lightning anomaly, special behaviour - charges batteries of active items if near actor.
+ - "CDF" - Psy anomaly, has weak but unavoidable psy field which hurts player along with main hit.
+ - "Rebounder" - Gravitational anomaly, provides 50%-100% resistance to bullet damage if near actor.
+ - "No Gravity" - Hard to spot, highly radioactive field that rases dust and rocks arround you bluring your vision and slowing you down.
+ - "Electra - has electric field that damages player and equipment, causes electrical interference to PDA and flashlights.
+ - "Gravitational anomalies - emits disturbance in gravitational field, causing player to tremble and shake.
+ - "Springboard" - a twisting swirl of unknown particles and orbiting leaves that releases a swarm of small elements of itself inflicting shock damage.
+ - "Thorn" -
+ - "Shatterpoint" -
+ - "Seed" -
\ No newline at end of file
diff --git a/mods/Arrival/desktop.ini b/mods/Arrival/desktop.ini
new file mode 100644
index 00000000..8e1236e3
--- /dev/null
+++ b/mods/Arrival/desktop.ini
@@ -0,0 +1,2 @@
+[.ShellClassInfo]
+IconResource=C:\Users\Admin\Desktop\MOD RELEASE\Latest\Arrival - Anomalies\fomod\Arrival.ico,0
diff --git a/mods/Arrival/gamedata/anims/mine_orange.ppe b/mods/Arrival/gamedata/anims/mine_orange.ppe
new file mode 100644
index 00000000..67de66f1
Binary files /dev/null and b/mods/Arrival/gamedata/anims/mine_orange.ppe differ
diff --git a/mods/Arrival/gamedata/anims/radiation.ppe b/mods/Arrival/gamedata/anims/radiation.ppe
new file mode 100644
index 00000000..c7ce4e6f
Binary files /dev/null and b/mods/Arrival/gamedata/anims/radiation.ppe differ
diff --git a/mods/Arrival/gamedata/configs/drx/drx_da_config.ltx b/mods/Arrival/gamedata/configs/drx/drx_da_config.ltx
new file mode 100644
index 00000000..5f1c6701
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/drx/drx_da_config.ltx
@@ -0,0 +1,34 @@
+; Random position offset settings:
+; max_offset - Magnitude for anomaly offset from smart terrain center (float, meters) (x=east, y=up, z=north)
+; max_tries - Maximum number of iterations to try generating a spawn position before aborting (int)
+
+[location_offset]
+max_offset_x = 35
+max_offset_y = 0
+max_offset_z = 35
+max_tries = 64
+
+; Levels dynamic anomalies can spawn on (allowable smart terrains for each level must be declared below):
+; Unused
+[anomaly_levels]
+k00_marsh
+k01_darkscape
+l01_escape
+l02_garbage
+l03_agroprom
+l04_darkvalley
+l05_bar
+l06_rostok
+l07_military
+l08_yantar
+l09_deadcity
+l10_limansk
+l10_radar
+l10_red_forest
+l11_pripyat
+l12_stancia
+l12_stancia_2
+zaton
+jupiter
+pripyat
+k02_trucks_cemetery
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/jupiter.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/jupiter.ltx
new file mode 100644
index 00000000..1f8be38f
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/jupiter.ltx
@@ -0,0 +1,78 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 30
+anomaly_max_active = 38 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_vapour
+zone_mine_flash
+zone_mine_vortex
+zone_mine_ghost
+zone_mine_springboard
+zone_mine_mefistotel
+zone_mine_cdf
+zone_mine_point
+zone_mine_sphere
+zone_mine_blast
+zone_mine_net
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+zone_no_gravity
+zone_mine_thorn
+zone_mine_seed
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+jup_a9
+; jup_b8_smart_terrain
+; jup_b47
+jup_b208
+jup_b209
+jup_b212
+jup_sim_1
+jup_sim_2
+jup_sim_3
+jup_sim_4
+jup_sim_6
+jup_sim_7
+jup_sim_8
+jup_sim_10
+jup_sim_11
+jup_sim_13
+jup_sim_14
+jup_sim_15
+jup_sim_16
+jup_sim_17
+jup_sim_18
+jup_sim_19
+
+;Determines the smarts around which anomalies will be created, with reduced amount (see script for how much)
+[available_smarts_reduced]
+jup_b8_smart_terrain
+jup_b47
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/jupiter_underground.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/jupiter_underground.ltx
new file mode 100644
index 00000000..3bcebb75
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/jupiter_underground.ltx
@@ -0,0 +1,46 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 2
+anomaly_max_active = 38 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_zharka
+zone_mine_ghost
+zone_mine_point
+zone_mine_gold
+zone_mine_thorn
+zone_mine_blast
+zone_mine_cdf
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_radioactive_weak
+zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+pas_b400_canalisation
+pas_b400_downstairs
+pas_b400_elevator
+pas_b400_fake
+pas_b400_hall
+pas_b400_track
+pas_b400_tunnel
+pas_b400_way
+
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/k00_marsh.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/k00_marsh.ltx
new file mode 100644
index 00000000..425b7d7b
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/k00_marsh.ltx
@@ -0,0 +1,62 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.3
+anomaly_max_number = 35
+anomaly_max_active = 45 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+zone_mine_vapour
+zone_mine_flash
+zone_mine_blast
+zone_mine_vortex
+zone_mine_net
+zone_mine_sloth
+zone_field_radioactive_weak
+; zone_field_radioactive_average
+; zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+; zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+zone_no_gravity
+
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+mar_smart_terrain_3_7
+mar_smart_terrain_3_10
+mar_smart_terrain_4_7
+mar_smart_terrain_6_4
+mar_smart_terrain_6_7
+mar_smart_terrain_6_8
+mar_smart_terrain_6_10
+; mar_smart_terrain_6_11
+mar_smart_terrain_7_7
+mar_smart_terrain_8_4
+mar_smart_terrain_8_8
+mar_smart_terrain_10_7
+mar_smart_terrain_10_10
+mar_smart_terrain_11_3
+
+;Determines the smarts around which anomalies will be created, with reduced amount (see script for how much)
+[available_smarts_reduced]
+mar_smart_terrain_6_11
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/k01_darkscape.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/k01_darkscape.ltx
new file mode 100644
index 00000000..2cf91ace
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/k01_darkscape.ltx
@@ -0,0 +1,55 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 42
+anomaly_max_active = 45 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_flash
+zone_mine_blast
+zone_mine_vortex
+zone_mine_net
+zone_mine_sloth
+zone_mine_springboard
+zone_field_radioactive_weak
+zone_field_radioactive_average
+; zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+zone_no_gravity
+zone_mine_shatterpoint
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+ds_boars_nest
+ds_grverfer2
+ds_kem1
+ds_kem3
+ds_ptr
+ds_ptr2
+ds_ptr3
+ds_ptr4
+ds2_st_dogs
+ds2_st_hoofs
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/k02_trucks_cemetery.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/k02_trucks_cemetery.ltx
new file mode 100644
index 00000000..3603d2ca
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/k02_trucks_cemetery.ltx
@@ -0,0 +1,64 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 30
+anomaly_max_active = 38 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_flash
+zone_mine_vortex
+zone_mine_ghost
+zone_mine_springboard
+zone_mine_seed
+zone_mine_shatterpoint
+zone_mine_mefistotel
+zone_mine_gold
+zone_mine_thorn
+zone_mine_cdf
+zone_mine_sphere
+zone_mine_blast
+zone_mine_point
+zone_mine_net
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+zone_no_gravity
+zone_mine_seed
+
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+trc_sim_5
+trc_sim_8
+trc_sim_9
+trc_sim_11
+trc_sim_13
+trc_sim_14
+trc_sim_15
+trc_sim_16
+trc_sim_19
+trc_sim_21
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l01_escape.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l01_escape.ltx
new file mode 100644
index 00000000..68fa59ed
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l01_escape.ltx
@@ -0,0 +1,61 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.35
+anomaly_max_number = 25
+anomaly_max_active = 38 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_blast
+zone_mine_vortex
+;zone_mine_springboard
+zone_mine_sphere
+zone_field_radioactive_weak
+; zone_field_radioactive_average
+; zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+; zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+; zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+; zone_mine_gravitational_strong
+
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+; esc_smart_terrain_1_11
+esc_smart_terrain_2_14
+esc_smart_terrain_3_7
+esc_smart_terrain_4_9
+esc_smart_terrain_4_11
+; esc_smart_terrain_5_2
+esc_smart_terrain_5_4
+esc_smart_terrain_5_6
+esc_smart_terrain_5_12
+; esc_smart_terrain_6_6
+esc_smart_terrain_8_9
+esc_smart_terrain_8_10
+esc_smart_terrain_9_7
+
+;Determines the smarts around which anomalies will be created, with reduced amount (see script for how much)
+[available_smarts_reduced]
+esc_smart_terrain_1_11
+esc_smart_terrain_5_2
+esc_smart_terrain_6_6
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l02_garbage.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l02_garbage.ltx
new file mode 100644
index 00000000..0d150c05
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l02_garbage.ltx
@@ -0,0 +1,63 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.35
+anomaly_max_number = 30
+anomaly_max_active = 38 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_blast
+zone_mine_vortex
+zone_mine_net
+zone_mine_ghost
+zone_mine_springboard
+zone_mine_sphere
+zone_mine_sloth
+zone_field_radioactive_weak
+; zone_field_radioactive_average
+; zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+; zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+zone_no_gravity
+zone_mine_seed
+
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+gar_smart_terrain_2_4
+gar_smart_terrain_4_2
+gar_smart_terrain_4_5
+gar_smart_terrain_5_4
+gar_smart_terrain_5_5
+gar_smart_terrain_5_6
+gar_smart_terrain_6_1
+; gar_smart_terrain_6_3
+gar_smart_terrain_6_6
+gar_smart_terrain_6_7
+gar_smart_terrain_7_4
+gar_smart_terrain_8_5
+
+;Determines the smarts around which anomalies will be created, with reduced amount (see script for how much)
+[available_smarts_reduced]
+gar_smart_terrain_6_3
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l03_agroprom.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l03_agroprom.ltx
new file mode 100644
index 00000000..3124bd4a
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l03_agroprom.ltx
@@ -0,0 +1,67 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 30
+anomaly_max_active = 38 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_flash
+zone_mine_vortex
+zone_mine_blast
+zone_mine_net
+zone_mine_ghost
+zone_mine_gold
+zone_mine_thorn
+zone_mine_sphere
+zone_mine_point
+zone_mine_springboard
+zone_field_radioactive_weak
+zone_field_radioactive_average
+; zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+; zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+zone_mine_shatterpoint
+zone_mine_seed
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+agr_smart_terrain_1_2
+agr_smart_terrain_1_3
+agr_smart_terrain_2_2
+; agr_smart_terrain_4_4_near_1
+; agr_smart_terrain_4_4_near_2
+; agr_smart_terrain_4_4_near_3
+agr_smart_terrain_4_6
+agr_smart_terrain_5_2
+agr_smart_terrain_5_3
+agr_smart_terrain_5_7
+agr_smart_terrain_6_4
+agr_smart_terrain_7_5
+
+;Determines the smarts around which anomalies will be created, with reduced amount (see script for how much)
+[available_smarts_reduced]
+agr_smart_terrain_4_4_near_1
+agr_smart_terrain_4_4_near_2
+agr_smart_terrain_4_4_near_3
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l03u_agr_underground.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l03u_agr_underground.ltx
new file mode 100644
index 00000000..847eae1b
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l03u_agr_underground.ltx
@@ -0,0 +1,40 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 2
+anomaly_max_active = 38 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_zharka
+zone_mine_ghost
+zone_mine_point
+zone_mine_umbra
+zone_mine_blast
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+;zone_mine_electric_average
+;zone_mine_electric_strong
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+agr_u_bandits
+agr_u_bloodsucker
+agr_u_bloodsucker_2
+agr_u_monsters
+agr_u_soldiers
+
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l04_darkvalley.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l04_darkvalley.ltx
new file mode 100644
index 00000000..db40a062
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l04_darkvalley.ltx
@@ -0,0 +1,60 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 30
+anomaly_max_active = 38 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_vapour
+zone_mine_flash
+zone_mine_vortex
+zone_mine_net
+zone_mine_ghost
+zone_mine_springboard
+zone_mine_mefistotel
+zone_mine_sloth
+zone_mine_sphere
+zone_mine_blast
+zone_mine_point
+zone_field_radioactive_weak
+zone_field_radioactive_average
+; zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+zone_no_gravity
+zone_mine_shatterpoint
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+val_smart_terrain_3_0
+val_smart_terrain_5_10
+val_smart_terrain_6_4
+val_smart_terrain_6_5
+val_smart_terrain_7_8
+val_smart_terrain_8_7
+val_smart_terrain_8_9
+val_smart_terrain_9_2
+val_smart_terrain_9_6
+val_smart_terrain_9_10
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l04u_labx18.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l04u_labx18.ltx
new file mode 100644
index 00000000..ff824744
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l04u_labx18.ltx
@@ -0,0 +1,44 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 2
+anomaly_max_active = 38 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_zharka
+zone_mine_umbra
+zone_mine_cdf
+; zone_mine_blast
+zone_mine_gold
+zone_mine_thorn
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+; zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+dar_angar
+dar_control_poltergeist
+dar_poltergeist_ring
+dar_poltergeist_tele
+dar_poltergeist_tele_round
+dar_smart_snork
+
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l05_bar.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l05_bar.ltx
new file mode 100644
index 00000000..efd62995
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l05_bar.ltx
@@ -0,0 +1,45 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.35
+anomaly_max_number = 20
+anomaly_max_active = 38 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_flash
+zone_mine_vortex
+zone_mine_net
+zone_mine_springboard
+zone_mine_blast
+zone_mine_point
+zone_field_radioactive_weak
+zone_field_radioactive_average
+; zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+bar_zastava_dogs_lair
+bar_zastava_dogs_lair_2
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l06_rostok.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l06_rostok.ltx
new file mode 100644
index 00000000..193b0017
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l06_rostok.ltx
@@ -0,0 +1,54 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.35
+anomaly_max_number = 20
+anomaly_max_active = 38 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_vapour
+zone_mine_vortex
+zone_mine_ghost
+zone_mine_springboard
+zone_mine_cdf
+zone_mine_blast
+zone_mine_point
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+ros_smart_monster4
+ros_smart_monster5
+; ros_smart_monster7
+ros_smart_poltergeist2
+ros_smart_snork1
+
+;Determines the smarts around which anomalies will be created, with reduced amount (see script for how much)
+[available_smarts_reduced]
+ros_smart_monster7
+
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l07_military.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l07_military.ltx
new file mode 100644
index 00000000..230a664b
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l07_military.ltx
@@ -0,0 +1,52 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 30
+anomaly_max_active = 38 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_flash
+zone_mine_vortex
+zone_mine_ghost
+zone_mine_cdf
+zone_mine_point
+zone_mine_mefistotel
+zone_mine_sphere
+zone_mine_blast
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+zone_mine_shatterpoint
+zone_mine_seed
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+mil_smart_terrain_2_1
+mil_smart_terrain_4_2
+mil_smart_terrain_4_3
+mil_smart_terrain_4_7
+mil_smart_terrain_8_3
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l08_yantar.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l08_yantar.ltx
new file mode 100644
index 00000000..bf8fd217
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l08_yantar.ltx
@@ -0,0 +1,63 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.35
+anomaly_max_number = 20
+anomaly_max_active = 45 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_vapour
+zone_mine_flash
+zone_mine_vortex
+zone_mine_mefistotel
+zone_mine_cdf
+zone_mine_gold
+zone_mine_thorn
+zone_mine_seed
+zone_mine_blast
+zone_field_radioactive_weak
+zone_field_radioactive_average
+; zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+zone_no_gravity
+zone_mine_shatterpoint
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+yan_smart_terrain_1_6
+yan_smart_terrain_2_5
+yan_smart_terrain_4_2
+yan_smart_terrain_4_4
+yan_smart_terrain_4_5
+; yan_smart_terrain_5_3
+; yan_smart_terrain_5_5
+yan_smart_terrain_6_2
+; yan_smart_terrain_snork_u
+
+;Determines the smarts around which anomalies will be created, with reduced amount (see script for how much)
+[available_smarts_reduced]
+yan_smart_terrain_5_3
+yan_smart_terrain_5_5
+yan_smart_terrain_snork_u
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l08u_brainlab.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l08u_brainlab.ltx
new file mode 100644
index 00000000..2ce10df6
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l08u_brainlab.ltx
@@ -0,0 +1,45 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 2
+anomaly_max_active = 38 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_zharka
+zone_mine_umbra
+zone_mine_cdf
+zone_mine_blast
+zone_mine_ghost
+zone_mine_point
+; zone_mine_gold
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+x162_st_burer
+x162_st_gigant
+x162_st_poltergeist
+x162_st_snork
+
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l09_deadcity.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l09_deadcity.ltx
new file mode 100644
index 00000000..a54f69ca
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l09_deadcity.ltx
@@ -0,0 +1,48 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 25
+anomaly_max_active = 45 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_flash
+zone_mine_vortex
+zone_mine_ghost
+zone_mine_cdf
+zone_mine_point
+zone_mine_blast
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+zone_no_gravity
+zone_mine_shatterpoint
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+cit_kanaliz2
+cit_kanaliz1
+cit_killers_vs_bandits
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l10_limansk.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l10_limansk.ltx
new file mode 100644
index 00000000..6979e2b0
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l10_limansk.ltx
@@ -0,0 +1,61 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.3
+anomaly_max_number = 20
+anomaly_max_active = 32 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_vapour
+zone_mine_flash
+zone_mine_vortex
+zone_mine_ghost
+zone_mine_springboard
+zone_mine_mefistotel
+zone_mine_cdf
+zone_mine_point
+zone_mine_sphere
+zone_mine_gold
+zone_mine_thorn
+zone_mine_seed
+zone_mine_shatterpoint
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+zone_no_gravity
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+; lim_smart_terrain_4
+; lim_smart_terrain_6
+lim_smart_terrain_8
+lim_smart_terrain_9
+lim_smart_terrain_10
+
+;Determines the smarts around which anomalies will be created, with reduced amount (see script for how much)
+[available_smarts_reduced]
+lim_smart_terrain_4
+lim_smart_terrain_6
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l10_radar.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l10_radar.ltx
new file mode 100644
index 00000000..b31acf5d
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l10_radar.ltx
@@ -0,0 +1,68 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 16
+anomaly_max_active = 38 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_zharka
+zone_mine_flash
+zone_mine_ghost
+zone_mine_cdf
+zone_mine_point
+zone_mine_umbra
+zone_mine_sphere
+zone_mine_gold
+zone_mine_thorn
+zone_mine_seed
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+zone_no_gravity
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+; rad_after_valley
+rad_rusty_forest_center
+; rad_bloodsucker
+rad_pseudodogs
+rad_snork1
+rad_snork2
+rad_valley
+; rad_valley_dogs
+rad_zombied1
+rad_zombied2
+; rad2_loner_0000
+rad2_loner_0001
+; rad2_loner_0002
+
+;Determines the smarts around which anomalies will be created, with reduced amount (see script for how much)
+[available_smarts_reduced]
+rad_bloodsucker
+; rad_pseudodogs
+; rad_snork1
+rad_valley_dogs
+rad_after_valley
+rad2_loner_0000
+rad2_loner_0002
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l10_red_forest.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l10_red_forest.ltx
new file mode 100644
index 00000000..c1f70ea7
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l10_red_forest.ltx
@@ -0,0 +1,61 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.3
+anomaly_max_number = 30
+anomaly_max_active = 32 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_flash
+zone_mine_ghost
+zone_mine_mefistotel
+zone_mine_cdf
+zone_mine_point
+zone_mine_umbra
+zone_mine_sphere
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+zone_no_gravity
+zone_mine_thorn
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+red_smart_terrain_3_1
+; red_smart_terrain_3_2
+red_smart_terrain_3_3
+red_smart_terrain_4_3
+red_smart_terrain_4_5
+red_smart_terrain_5_5
+red_smart_terrain_5_6
+red_smart_terrain_6_3
+red_smart_terrain_6_6
+red_smart_terrain_monsters_2
+red_smart_terrain_monsters_3
+
+;Determines the smarts around which anomalies will be created, with reduced amount (see script for how much)
+[available_smarts_reduced]
+red_smart_terrain_3_2
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l10u_bunker.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l10u_bunker.ltx
new file mode 100644
index 00000000..ef3519e4
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l10u_bunker.ltx
@@ -0,0 +1,28 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 1
+anomaly_max_active = 38 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_zharka
+zone_mine_umbra
+zone_mine_cdf
+; zone_mine_gold
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_field_radioactive_strong
+zone_radioactive_weak
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+bun2_st_bloodsucker
+bun2_tushkano_lair
+bun_krovosos_nest
+
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l11_hospital.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l11_hospital.ltx
new file mode 100644
index 00000000..e7410bbe
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l11_hospital.ltx
@@ -0,0 +1,43 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 3
+anomaly_max_active = 38 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_zharka
+zone_mine_point
+zone_mine_umbra
+zone_mine_cdf
+zone_mine_blast
+zone_mine_vortex
+zone_mine_gold
+zone_mine_thorn
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+katacomb_smart_terrain
+
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l11_pripyat.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l11_pripyat.ltx
new file mode 100644
index 00000000..492df695
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l11_pripyat.ltx
@@ -0,0 +1,58 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.3
+anomaly_max_number = 20
+anomaly_max_active = 32 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_vapour
+zone_mine_flash
+zone_mine_vortex
+zone_mine_umbra
+zone_mine_springboard
+zone_mine_mefistotel
+zone_mine_cdf
+zone_mine_point
+zone_mine_sphere
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+zone_no_gravity
+zone_mine_thorn
+zone_mine_shatterpoint
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+pri_smart_bloodsucker_lair1
+pri_smart_controler_lair1
+pri_smart_controler_lair2
+pri_smart_giant_lair1
+pri_smart_monster_lair1
+pri_smart_pseudodog_lair1
+pri_smart_snork_lair1
+pri_smart_snork_lair2
+pri_smart_tushkano_lair1
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l12_stancia.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l12_stancia.ltx
new file mode 100644
index 00000000..2a32e65c
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l12_stancia.ltx
@@ -0,0 +1,48 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 42
+anomaly_max_active = 45 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+zone_mine_flash
+zone_mine_ghost
+zone_mine_mefistotel
+zone_mine_cdf
+zone_mine_point
+zone_mine_sphere
+zone_mine_umbra
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+zone_mine_shatterpoint
+zone_mine_thorn
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+aes_smart_terrain_monsters1
+aes_smart_terrain_monsters2
+aes_smart_terrain_monsters3
+aes_smart_terrain_monsters4
+aes_smart_terran_soldier2
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l12_stancia_2.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l12_stancia_2.ltx
new file mode 100644
index 00000000..ead5a03a
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l12_stancia_2.ltx
@@ -0,0 +1,50 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 42
+anomaly_max_active = 45 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+zone_mine_flash
+zone_mine_ghost
+zone_mine_mefistotel
+zone_mine_cdf
+zone_mine_point
+zone_mine_sphere
+zone_mine_umbra
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+zone_mine_shatterpoint
+zone_mine_thorn
+zone_mine_seed
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+aes2_monolith_camp1
+aes2_monolith_camp2
+aes2_monolith_camp3
+aes2_monolith_camp4
+aes2_monsters1
+aes2_monsters2
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l13_generators.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l13_generators.ltx
new file mode 100644
index 00000000..fa1910e4
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/l13_generators.ltx
@@ -0,0 +1,45 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 25
+anomaly_max_active = 45 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+zone_mine_flash
+zone_mine_cdf
+zone_mine_point
+zone_mine_sphere
+zone_mine_umbra
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+zone_mine_shatterpoint
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+gen_smart_terrain_urod
+gen_smart_terrain_forest
+gen_smart_terrain_junk
+gen_smart_terrain_military
+gen_smart_terrain_cemetery
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/labx8.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/labx8.ltx
new file mode 100644
index 00000000..588533d9
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/labx8.ltx
@@ -0,0 +1,37 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 2
+anomaly_max_active = 38 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_zharka
+zone_mine_ghost
+zone_mine_point
+zone_mine_umbra
+zone_mine_cdf
+zone_mine_blast
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+;zone_mine_electric_average
+;zone_mine_electric_strong
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+lx8_smart_terrain
+
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/pripyat.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/pripyat.ltx
new file mode 100644
index 00000000..bcbf9bc4
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/pripyat.ltx
@@ -0,0 +1,61 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.3
+anomaly_max_number = 20
+anomaly_max_active = 32 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_vapour
+zone_mine_flash
+zone_mine_vortex
+zone_mine_springboard
+zone_mine_umbra
+zone_mine_cdf
+zone_mine_point
+zone_mine_sphere
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+zone_mine_shatterpoint
+zone_mine_thorn
+zone_mine_seed
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+pri_a21_smart_terrain
+pri_a22_smart_terrain
+pri_a25_smart_terrain
+pri_b301
+pri_b303
+pri_b304
+pri_sim_3
+pri_sim_5
+pri_sim_8
+pri_sim_9
+pri_sim_10
+pri_sim_11
+pri_sim_12
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/y04_pole.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/y04_pole.ltx
new file mode 100644
index 00000000..eb241d04
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/y04_pole.ltx
@@ -0,0 +1,48 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 13
+anomaly_max_active = 38 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_flash
+zone_mine_blast
+zone_mine_vortex
+zone_mine_net
+zone_mine_ghost
+zone_mine_gold
+zone_mine_thorn
+zone_mine_sphere
+zone_field_radioactive_weak
+; zone_field_radioactive_average
+; zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+; zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+pol_smart_terrain_1_1
+pol_smart_terrain_2_2
+pol_sim_1
diff --git a/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/zaton.ltx b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/zaton.ltx
new file mode 100644
index 00000000..d0316c1a
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/hazardous_anomalies/regions/zaton.ltx
@@ -0,0 +1,84 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 30
+anomaly_max_active = 38 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_vapour
+zone_mine_flash
+zone_mine_vortex
+zone_mine_ghost
+zone_mine_springboard
+zone_mine_mefistotel
+zone_mine_cdf
+zone_mine_point
+zone_mine_sphere
+zone_mine_sloth
+zone_mine_blast
+zone_mine_net
+zone_field_radioactive_weak
+zone_field_radioactive_average
+zone_field_radioactive_strong
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+zone_mine_gravitational_strong
+zone_no_gravity
+zone_mine_thorn
+zone_mine_shatterpoint
+zone_mine_seed
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+zat_a23_smart_terrain
+zat_b28
+zat_b33
+zat_b38
+zat_b42_smart_terrain
+zat_b100
+zat_b106_smart_terrain
+zat_sim_1
+zat_sim_2
+zat_sim_3
+zat_sim_4
+zat_sim_5
+zat_sim_6
+zat_sim_7
+zat_sim_8
+zat_sim_9
+zat_sim_11
+zat_sim_12
+zat_sim_14
+zat_sim_15
+zat_sim_16
+zat_sim_17
+zat_sim_18
+zat_sim_21
+zat_sim_22
+zat_sim_23
+zat_sim_24
+zat_sim_25
+zat_sim_26
+zat_sim_27
+zat_sim_30
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/items/items/items_zz_dbg.ltx b/mods/Arrival/gamedata/configs/items/items/items_zz_dbg.ltx
new file mode 100644
index 00000000..094f6183
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/items/items/items_zz_dbg.ltx
@@ -0,0 +1,15 @@
+[dbg_increase_thirst_sleep]
+eat_sleepiness = 0.1
+eat_thirstiness = 0.1
+
+[dbg_decrease_thirst_sleep]
+eat_sleepiness = -0.1
+eat_thirstiness = -0.1
+
+[dbg_increase_thirst_sleep_small]
+eat_sleepiness = 0.01
+eat_thirstiness = 0.01
+
+[dbg_decrease_thirst_sleep_small]
+eat_sleepiness = -0.01
+eat_thirstiness = -0.01
diff --git a/mods/Arrival/gamedata/configs/misc/postprocess.ltx b/mods/Arrival/gamedata/configs/misc/postprocess.ltx
new file mode 100644
index 00000000..b99f437a
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/misc/postprocess.ltx
@@ -0,0 +1,344 @@
+[postprocess_base]
+pp_eff_name = radiation.ppe
+duality_h = .015
+duality_v = .015
+blur = 1
+gray = .0
+noise = .01
+noise_scale = 1
+noise_color = 255,255,255,70
+
+[postprocess_anomaly]
+pp_eff_name = radiation.ppe
+duality_h = 0
+duality_v = 0
+blur = 1
+gray = .7 ;.9
+noise = .2 ;.5
+noise_scale = 1
+noise_color = 155,155,155,70
+
+;-------------------------------------------------------------------------------
+; New zone postprocess
+;-------------------------------------------------------------------------------
+[postprocess_steam_mine]
+pp_eff_cyclic = 1
+pp_eff_overlap = true
+
+pp_eff_name = steam_mine.ppe
+radius_min = 0.7
+radius_max = 1.0
+
+[postprocess_acidic]
+pp_eff_cyclic = 1
+pp_eff_overlap = true
+
+pp_eff_name = acidic.ppe
+radius_min = 0.3
+radius_max = 1.0
+
+[postprocess_acidic_mine]
+pp_eff_cyclic = 1
+pp_eff_overlap = true
+
+pp_eff_name = acidic_mine.ppe
+radius_min = 0.7
+radius_max = 1.0
+
+[postprocess_thermal]
+pp_eff_cyclic = 1
+pp_eff_overlap = true
+
+pp_eff_name = thermal.ppe
+radius_min = 0.3
+radius_max = 1.0
+
+[postprocess_thermal_mine]
+pp_eff_cyclic = 1
+pp_eff_overlap = true
+
+pp_eff_name = thermal_mine.ppe
+radius_min = 0.7
+radius_max = 1.0
+
+[postprocess_rad]
+pp_eff_cyclic = 1
+pp_eff_overlap = true
+
+pp_eff_name = radiation.ppe
+radius_min = 0.3
+radius_max = 1.0
+
+[postprocess_psi]
+pp_eff_cyclic = 1
+pp_eff_overlap = true
+
+pp_eff_name = psi.ppe
+radius_min = 0.3
+radius_max = 1.0
+
+[psy_antenna]
+pp_eff_name = psi.ppe
+pp_eff_cyclic = 1
+pp_eff_overlap = true
+
+radius_min = 0.3
+radius_max = 1.0
+
+[postprocess_death]
+pp_eff_name = death.ppe
+radius_min = 0.5
+radius_max = 1.1
+
+[postprocess_flame]
+pp_eff_name = flame.ppe
+radius_min = 0.5
+radius_max = 0.8
+
+[postprocess_fuzz]
+pp_eff_name = fuzz.ppe
+radius_min = 0.5
+radius_max = 0.8
+
+[postprocess_gravi]
+pp_eff_name = gravi.ppe
+radius_min = 0.8
+radius_max = 1.4
+
+[postprocess_gravi_mine]
+pp_eff_name = gravi_mine.ppe
+radius_min = 0.7
+radius_max = 1.0
+
+[postprocess_electra]
+pp_eff_name = electra.ppe
+radius_min = 0.5
+radius_max = 0.9
+
+[postprocess_electra_mine]
+pp_eff_name = electra_mine.ppe
+radius_min = 0.3
+radius_max = 1.0
+
+[mosquito_bald]
+pp_eff_name = mosquito_bald.ppe
+radius_min = 0.2
+radius_max = 2.7
+
+[postprocess_gas]
+pp_eff_name = alcohol.ppe
+radius_min = 0.3
+radius_max = 1.0
+
+[postprocess_new]
+pp_eff_name = radiation.ppe
+radius_min = 0.5
+radius_max = 1.1
+
+;-------------------------------------------------------------------------------
+[effector_alcohol]
+pp_eff_name = alcohol.ppe
+pp_eff_cyclic = 1
+pp_eff_overlap = true
+
+cam_eff_name = camera_effects\drunk.anm
+cam_eff_cyclic = 1
+
+[alcohol]
+pp_eff_name = alcohol.ppe
+pp_eff_overlap = true
+pp_eff_cyclic = 0
+cam_eff_name = camera_effects\drunk.anm
+cam_eff_cyclic = 0
+radius_min = 0.7
+radius_max = 1.1
+
+[effector_explode_hit]
+cam_eff_cyclic = 0
+cam_eff_name = camera_effects\shell_shock.anm
+cam_eff_hud_affect = true
+
+[effector_fire_hit]
+pp_eff_name = fire_hit.ppe
+pp_eff_cyclic = 0
+pp_eff_overlap = true
+cam_eff_cyclic = 0
+
+[effector_fire_hit_0]:effector_fire_hit
+cam_eff_name = camera_effects\hit_front.anm
+
+[effector_fire_hit_1]:effector_fire_hit
+cam_eff_name = camera_effects\hit_right.anm
+
+[effector_fire_hit_2]:effector_fire_hit
+cam_eff_name = camera_effects\hit_back.anm
+
+[effector_fire_hit_3]:effector_fire_hit
+cam_eff_name = camera_effects\hit_left.anm
+
+[effector_fire_hit_4]:effector_fire_hit
+cam_eff_name = camera_effects\hit_front_left.anm
+
+[effector_fire_hit_5]:effector_fire_hit
+cam_eff_name = camera_effects\hit_back_left.anm
+
+[effector_fire_hit_6]:effector_fire_hit
+cam_eff_name = camera_effects\hit_front_right.anm
+
+[effector_fire_hit_7]:effector_fire_hit
+cam_eff_name = camera_effects\hit_back_right.anm
+
+[snd_shock_effector]
+;pp_eff_name = duality_circle.ppe
+pp_eff_name = snd_shock.ppe
+pp_eff_overlap = true
+pp_eff_cyclic = 1
+
+[effector_controller_aura]
+pp_eff_name = controller_hit.ppe
+pp_eff_overlap = true
+pp_eff_cyclic = 0
+
+[effector_blink_black]
+pp_eff_name = blink_black.ppe
+pp_eff_cyclic = 0
+pp_eff_overlap = true
+
+[effector_controller_aura2]:effector_alcohol
+pp_eff_cyclic = 0
+cam_eff_cyclic = 0
+
+[effector_monster_hit]
+;pp_eff_name = fire_hit.ppe ; no postprocess
+;pp_eff_cyclic = 0
+cam_eff_cyclic = 0
+
+[effector_monster_hit_0]:effector_monster_hit
+cam_eff_name = camera_effects\hit_front.anm
+
+[effector_monster_hit_1]:effector_monster_hit
+cam_eff_name = camera_effects\hit_right.anm
+
+[effector_monster_hit_2]:effector_monster_hit
+cam_eff_name = camera_effects\hit_back.anm
+
+[effector_monster_hit_3]:effector_monster_hit
+cam_eff_name = camera_effects\hit_left.anm
+
+[effector_monster_hit_4]:effector_monster_hit
+cam_eff_name = camera_effects\hit_front_left.anm
+
+[effector_monster_hit_5]:effector_monster_hit
+cam_eff_name = camera_effects\hit_back_left.anm
+
+[effector_monster_hit_6]:effector_monster_hit
+cam_eff_name = camera_effects\hit_front_right.anm
+
+[effector_monster_hit_7]:effector_monster_hit
+cam_eff_name = camera_effects\hit_back_right.anm
+
+;-------------------------------------------------------------------------------
+; Nightvision postprocess
+;-------------------------------------------------------------------------------
+[effector_nightvision_1]
+pp_eff_name = nightvision_1.ppe
+pp_eff_overlap = false
+pp_eff_cyclic = 1
+
+
+[effector_nightvision_2]
+pp_eff_name = nightvision_2.ppe
+pp_eff_cyclic = 1
+pp_eff_overlap = false
+
+[effector_nightvision_3]
+pp_eff_name = nightvision_3.ppe
+pp_eff_cyclic = 1
+pp_eff_overlap = false
+
+;-------------------------------------------------------------------------------
+; Детект нас полтергейстами
+;-------------------------------------------------------------------------------
+[poltergeist_detection_effector]
+pp_eff_name = poltergeist_scan.ppe
+pp_eff_cyclic = 1
+pp_eff_overlap = true
+;-------------------------------------------------------------------------------
+
+[_actor_death_effector]
+pp_eff_name = actor_death.ppe
+pp_eff_cyclic = 0
+pp_eff_overlap = true
+cam_eff_name = camera_effects\drunk.anm
+cam_eff_cyclic = 1
+snd = characters_voice\human_01\dolg\help\wounded_heavy\help_8
+
+[brighten]
+pp_eff_name = brighten.ppe
+pp_eff_cyclic = 1
+pp_eff_overlap = true
+
+;-------------------------------------------------------------------------------
+; Fade
+;-------------------------------------------------------------------------------
+
+[fade_in]
+pp_eff_name = fade_in.ppe
+pp_eff_cyclic = 0
+pp_eff_overlap = false
+
+[fade_in_out]
+pp_eff_name = fade_in_out.ppe
+pp_eff_cyclic = 0
+pp_eff_overlap = false
+
+[black]
+pp_eff_name = black.ppe
+pp_eff_cyclic = 1
+pp_eff_overlap = false
+
+[blink]
+pp_eff_name = blink.ppe
+pp_eff_cyclic = 0
+pp_eff_overlap = false
+
+[fade_to_black_9_sec]
+pp_eff_name = fade_to_black_9_sec.ppe
+pp_eff_cyclic = 0
+pp_eff_overlap = false
+
+[agr_u_fade]
+pp_eff_name = agr_u_fade.ppe
+pp_eff_cyclic = 0
+pp_eff_overlap = false
+
+;-------------------------------------------------------------------------------
+; Brain Scorcher
+;-------------------------------------------------------------------------------
+[effector_radar_stop]
+;pp_eff_name = radar_stop.ppe
+;pp_eff_cyclic = 0
+
+cam_eff_name = camera_effects\radar_stop.anm
+cam_eff_cyclic = 0
+
+;Eugenium Hazardous Anomalies
+
+[postprocess_orange]
+pp_eff_name = mine_orange.ppe
+radius_min = 0.3
+radius_max = 1.0
+
+;-----------------------------------------
+[extra_controller]
+pp_eff_name = psychic.ppe
+pp_eff_cyclic = 1
+pp_eff_overlap = true
+
+radius_min = 0.3
+radius_max = 1.0
+
+
+[anti_aim_effector]
+cam_eff_name = camera_effects\pripyat_horror.anm
+cam_eff_cyclic = 0
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/misc/sound/script_sound.ltx b/mods/Arrival/gamedata/configs/misc/sound/script_sound.ltx
new file mode 100644
index 00000000..d0ccb0fc
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/misc/sound/script_sound.ltx
@@ -0,0 +1,985 @@
+;; NOTICE FOR MODDERS ;;
+; unless you need to edit already existing sound sections, do NOT edit the "script_sound_*" files but make a new one that defines your new sound sections
+; eg. "script_sound_mymod.ltx"
+; it will be automatically included and won't cause conflict with other mods that add/edit sound sections
+
+#include "script_sound_*.ltx"
+
+;include "script_sound_agroprom.ltx"
+;include "script_sound_axr.ltx"
+;include "script_sound_darkvalley.ltx"
+;include "script_sound_escape.ltx"
+;include "script_sound_jupiter.ltx"
+;include "script_sound_l05_bar.ltx"
+;include "script_sound_marsh.ltx"
+;include "script_sound_military.ltx"
+;include "script_sound_pripyat.ltx"
+;include "script_sound_story_and_music.ltx"
+;include "script_sound_yantar.ltx"
+;include "script_sound_zaton.ltx"
+;include "script_sound_x16.ltx"
+;include "script_sound_x18.ltx"
+;include "script_sound_warlab.ltx"
+;include "script_sound_mlr.ltx"
+
+; A new feature has been added to help alleviate an issue with all sounds being loaded, even unused ones. Restricting sounds by level and story id is this solution.
+; 'levels' is a new optional field. It's what levels to load the sound on, otherwise sound is not loaded. The absense of a levels field means the sound is loaded on all levels.
+; 'story_ids' is a new optional field. It's a list of story_ids that can load the sound, otherwise sound is not loaded. The absense of a story_ids field means the sound can be loaded by all npc.
+
+[brain_scorcher_rumble]
+type = 3d
+path = semitone\anomalies\generators
+levels = l13u_warlab, l10u_bunker
+
+[radar_drone]
+type = looped
+path = ambient\radar_1
+levels = l10_radar
+
+[radar_thunder]
+type = looped
+path = ambient\radar_2
+levels = l10_radar
+
+[gen_noos_tunnel]
+type = looped
+path = semitone\anomalies\generators\generators_idle
+levels = l13_generators
+
+[warlab_pod_noise]
+type = looped
+path = ambient\warlab_pod_noise
+levels = l13u_warlab
+
+[red_bloodsucker_growl]
+type = 3d
+path = monsters\bloodsucker\distant_growl_
+shuffle = rnd
+idle = 10,20,100
+levels = l08u_brainlab, l03u_agr_underground
+
+[controller_script_attack]
+type = 3d
+path = monsters\controller\controller_script_attack_
+shuffle = rnd
+idle = 10,20,100
+levels = l08u_brainlab, l03u_agr_underground
+
+[rad_hat_1]
+type = actor
+actor_stereo = true
+npc_prefix = false
+path = characters_voice\scenario\radar\rad_hat_1
+shuffle = seq
+idle = 1,1,100
+levels = l10_radar, l10u_bunker, l08u_brainlab
+
+[rad_hat_2]
+type = actor
+actor_stereo = true
+npc_prefix = false
+path = characters_voice\scenario\radar\rad_hat_2
+shuffle = seq
+idle = 1,1,100
+levels = l10_radar, l10u_bunker, l08u_brainlab
+
+[radar_meh_on]
+type = looped
+path = ambient\cooling_run
+levels = l10u_bunker, l04u_labx18
+
+[radar_meh_off]
+type = 3d
+path = ambient\cooling_stop
+levels = l10u_bunker, l04u_labx18
+
+[psy_blackout]
+type = actor
+actor_stereo = true
+npc_prefix = false
+path = affects\psy_blackout
+shuffle = seq
+idle = 1,1,100
+levels = l10u_bunker, l13u_warlab
+
+[bun_patrol_prikaz]
+type = actor
+actor_stereo = true
+npc_prefix = false
+path = characters_voice\scenario\bun\patrol_prikaz
+shuffle = seq
+idle = 1,1,100
+levels = l10u_bunker
+
+[val_patrol_prikaz]
+type = actor
+actor_stereo = true
+npc_prefix = false
+path = characters_voice\scenario\val\patrol_prikaz
+shuffle = seq
+idle = 1,1,100
+levels = l04u_labx18
+
+[bun_monolith_call_1]
+type = actor
+actor_stereo = true
+npc_prefix = false
+path = characters_voice\scenario\sarcofag\monolith_call_1
+shuffle = seq
+idle = 1,1,100
+levels = l10u_bunker
+
+[sar_monolith_call]
+type = actor
+actor_stereo = true
+npc_prefix = false
+path = characters_voice\scenario\sarcofag\monolith_call_
+shuffle = rnd
+idle = 10,15,100
+levels = l12u_sarcofag
+
+[sar2_monolith_call]
+type = actor
+actor_stereo = true
+npc_prefix = false
+path = characters_voice\scenario\sarcofag\monolith_call_1
+shuffle = rnd
+idle = 30,60,100
+levels = l12u_sarcofag
+
+[mon_ambient]
+type = looped
+path = ambient\monolith_1
+levels = l12u_sarcofag
+
+[mon_organic_moan]
+type = 3d
+path = ambient\organic_moan1
+levels = l12u_sarcofag
+
+[mon_explosion]
+type = 3d
+path = ambient\mon_explosion
+levels = l12u_sarcofag, l13u_warlab
+
+[warlab_decoder]
+type = looped
+path = device\decoder
+levels = l13u_warlab
+
+[warlab_oso]
+type = looped
+path = ambient\os_1
+levels = l13u_warlab
+
+[mon_monolith_damaged]
+type = 3d
+path = characters_voice\scenario\sarcofag\monolith_damaged
+shuffle = rnd
+idle = 0,0,100
+levels = l13u_warlab
+
+[mon_monolith_heavy_damaged]
+type = 3d
+path = characters_voice\scenario\sarcofag\monolith_heavy_damaged
+shuffle = rnd
+idle = 0,0,100
+levels = l13u_warlab
+
+[mon_monolith_alarm]
+type = 3d
+path = characters_voice\scenario\sarcofag\monolith_alarm
+shuffle = rnd
+idle = 0,0,100
+levels = l13u_warlab
+
+
+[surge_earthquake_sound_looped]
+type = looped
+path = ambient\earthquake
+
+[surge_earthquake_sound]
+type = 3d
+path = ambient\earthquake
+
+[blowout_begin]
+type = 3d
+path = ambient\blowout\blowout_begin
+
+[blowout_rumble]
+type = looped
+path = ambient\blowout\blowout_rumble
+
+[blowout_hit_1]
+type = 3d
+path = ambient\blowout\blowout_impact
+
+[blowout_hit_2]
+type = 3d
+path = ambient\blowout\blowout_impact_02
+
+[blowout_hit_3]
+type = 3d
+path = ambient\blowout\blowout_outro
+
+[blowout_wave_1]
+type = 3d
+path = ambient\blowout\blowout_wave_01
+
+[blowout_wave_2]
+type = 3d
+path = ambient\blowout\blowout_wave_04
+
+[blowout_wave_3]
+type = 3d
+path = ambient\blowout_wave_3
+
+[blowout_particle_wave_looped]
+type = looped
+path = ambient\blowout\blowout_particle_wave
+
+[fallout_acid_rain]
+type = looped
+path = anomaly\acid_rain
+
+[state]
+type = npc
+npc_prefix = true
+avail_communities = bandit, csky, dolg, ecolog, freedom, killer, army, monolith, stalker, greh, greh_npc, army_npc, isg, renegade
+path = states\idle\idle_
+shuffle = rnd
+idle = 7,13,100
+group_snd = true
+
+[state_1]
+type = npc|actor|3d
+actor_stereo = true|false
+npc_prefix = true|false
+path = states\idle\idle_
+shuffle = rnd|seq|loop
+idle = 3,5,100 ;min,max,rnd
+
+;************************************************************
+;Универсальная озвучка встречи
+;************************************************************
+[wait]
+type = npc
+avail_communities = bandit, csky, dolg, ecolog, freedom, killer, army, monolith, stalker, greh, greh_npc, army_npc, isg, renegade
+npc_prefix = true
+path = states\idle\idle_
+shuffle = rnd
+idle = 7,10,100
+
+
+;************************************************************
+; Alife
+;************************************************************
+
+[patrol_sneak]
+type = npc
+actor_stereo = false
+npc_prefix = true
+group_snd = true
+path = alife\patrol\sneak_
+avail_communities = bandit, csky, dolg, freedom, army, stalker, army_npc, isg, renegade
+shuffle = rnd
+idle = 1,1,100
+
+[patrol_run]
+type = npc
+actor_stereo = false
+npc_prefix = true
+group_snd = true
+path = alife\patrol\run_
+avail_communities = bandit, csky, dolg, freedom, army, stalker, army_npc, isg, renegade
+shuffle = rnd
+idle = 1,1,100
+
+[patrol_walk]
+type = npc
+actor_stereo = false
+npc_prefix = true
+group_snd = true
+path = alife\patrol\walk_
+avail_communities = bandit, csky, dolg, freedom, army, stalker, army_npc, isg, renegade
+shuffle = rnd
+idle = 1,1,100
+
+[fight_attack]
+type = npc
+actor_stereo = false
+npc_prefix = true
+path = fight\attack\script_attack_
+avail_communities = bandit, csky, dolg, freedom, army, stalker, monolith, killer, army_npc, isg, renegade
+shuffle = rnd
+idle = 1,1,100
+is_combat_sound = true
+
+[post_combat_wait]
+type = npc
+actor_stereo = false
+npc_prefix = true
+group_snd = true
+path = fight\post_combat_wait\wait_
+avail_communities = bandit, csky, dolg, freedom, army, stalker, army_npc, isg, renegade
+shuffle = rnd
+idle = 3,5,100
+
+[post_combat_wait_long]
+type = npc
+actor_stereo = false
+npc_prefix = true
+group_snd = true
+path = fight\post_combat_wait\wait_
+avail_communities = bandit, csky, dolg, freedom, army, stalker, army_npc, isg, renegade
+shuffle = rnd
+idle = 7,10,100
+
+[post_combat_relax]
+type = npc
+actor_stereo = false
+npc_prefix = true
+group_snd = true
+path = fight\post_combat_wait\relax_
+avail_communities = bandit, csky, dolg, freedom, army, stalker, army_npc, isg, renegade
+shuffle = rnd
+idle = 1,1,100
+
+
+;***************************************************************
+; Звуки дверей
+;***************************************************************
+[trader_door_open_start]
+type = 3d
+path = device\door_start
+shuffle = rnd
+idle = 1,1,100
+
+[trader_door_close_start]
+type = 3d
+path = device\door_closing
+shuffle = rnd
+idle = 1,1,100
+
+[trader_door_close_stop]
+type = 3d
+path = device\door_stop
+shuffle = rnd
+idle = 1,1,100
+
+[trader_door_locked]
+type = 3d
+path = device\door_locked
+shuffle = rnd
+idle = 1,1,100
+
+[trader_door_unlock]
+type = 3d
+path = device\door_servomotor
+shuffle = rnd
+idle = 1,1,100
+
+[wood_small_open]
+type = 3d
+path = device\wood_small_open
+shuffle = rnd
+idle = 1,1,100
+
+[wood_small_close_start]
+type = 3d
+path = device\wood_small_close_start
+shuffle = rnd
+idle = 1,1,100
+
+[wood_small_close_stop]
+type = 3d
+path = device\wood_small_close_stop
+shuffle = rnd
+idle = 1,1,100
+
+[wood_large_open]
+type = 3d
+path = device\wood_large_open
+shuffle = rnd
+idle = 1,1,100
+
+[wood_large_close_start]
+type = 3d
+path = device\wood_large_close_start
+shuffle = rnd
+idle = 1,1,100
+
+[wood_large_close_stop]
+type = 3d
+path = device\wood_large_close_stop
+shuffle = rnd
+idle = 1,1,100
+
+[metal_small_open]
+type = 3d
+path = device\metal_small_open
+shuffle = rnd
+idle = 1,1,100
+
+[metal_small_close_start]
+type = 3d
+path = device\metal_small_close_start
+shuffle = rnd
+idle = 1,1,100
+
+[metal_small_close_stop]
+type = 3d
+path = device\metal_small_close_stop
+shuffle = rnd
+idle = 1,1,100
+
+[power_switch]
+type = 3d
+path = device\power_switch
+shuffle = rnd
+idle = 1,1,100
+
+;***************************************************************
+; звуки настольной рации
+;***************************************************************
+[radio_call]
+type = 3d
+path = device\radio_call
+shuffle = rnd
+idle = 0,0,100
+
+
+;***************************************************************
+; Озвучка ПДА
+;***************************************************************
+[pda_alarm]
+type = actor
+npc_prefix = false
+path = device\pda\pda_alarm
+shuffle = rnd
+idle = 0,0,100
+
+[pda_news]
+type = actor
+npc_prefix = false
+path = device\pda\pda_news
+shuffle = rnd
+idle = 1,1,100
+
+[pda_tips]
+type = actor
+npc_prefix = false
+path = device\pda\pda_tip
+shuffle = rnd
+idle = 1,1,100
+
+[pda_task]
+type = actor
+npc_prefix = false
+path = device\pda\pda_objective
+shuffle = rnd
+idle = 1,1,100
+
+[pda_welcome]
+type = actor
+npc_prefix = false
+path = device\pda\pda_welcome
+shuffle = rnd
+idle = 1,1,100
+
+[pda_beep_1]
+type = actor
+npc_prefix = false
+path = device\pda\pda_beep_1
+shuffle = rnd
+idle = 1,1,100
+
+[pda_beep_2]
+type = actor
+npc_prefix = false
+path = device\pda\pda_beep_2
+shuffle = rnd
+idle = 1,1,100
+
+[pda_communication_lost]
+type = actor
+npc_prefix = false
+path = device\pda\pda_communication_lost
+shuffle = rnd
+idle = 1,1,100
+
+;***************************************************************
+; Озвучка Вертиберда
+;***************************************************************
+[heli_damaged]
+type = actor
+npc_prefix = false
+path = vehicles\helicopter\damage_
+shuffle = rnd
+idle = 1,1,100
+
+[heli_down]
+type = actor
+npc_prefix = false
+path = vehicles\helicopter\death_
+shuffle = rnd
+idle = 1,1,100
+
+[heli_hit]
+type = actor
+npc_prefix = false
+path = vehicles\helicopter\hit_
+shuffle = rnd
+idle = 3,4,40
+
+
+
+;***************************************************************
+; ОСНОВНЫЕ ТЕМЫ
+;***************************************************************
+[alarm]
+type = 3d
+path = ambient\siren1
+shuffle = loop
+idle = 0,0,100
+
+[meet_hello]
+type = npc
+avail_communities = bandit, csky, dolg, ecolog, freedom, killer, army, stalker, monolith, greh, greh_npc, army_npc, isg, renegade
+npc_prefix = true
+path = states\meet\meet_hello_
+shuffle = rnd
+idle = 7,10,100
+
+[meet_wait]
+type = npc
+avail_communities = bandit, csky, dolg, freedom, killer, stalker, greh, greh_npc, army_npc, isg, renegade
+npc_prefix = true
+path = states\meet\meet_wait_
+shuffle = seq
+delay_sound = 15000
+idle = 15,20,100
+
+[meet_stop]
+type = npc
+avail_communities = bandit, csky, dolg, freedom, stalker, greh, greh_npc, army_npc, isg, renegade
+npc_prefix = true
+path = states\meet\meet_stop_
+shuffle = rnd
+idle = 2,2,100
+
+[meet_hide_weapon]
+type = npc
+avail_communities = bandit, csky, dolg, ecolog, freedom, army, stalker, killer, greh, greh_npc, army_npc, isg, renegade
+npc_prefix = true
+path = states\meet\meet_hide_weapon_
+shuffle = rnd
+idle = 7,10,100
+
+[meet_use_no_default]
+type = npc
+avail_communities = bandit, csky, dolg, ecolog, freedom, army, stalker, greh, greh_npc, army_npc, isg, renegade
+npc_prefix = true
+path = states\meet\meet_use_no_default_
+shuffle = rnd
+idle = 1,1,100
+
+[meet_use_no_fight]
+type = npc
+avail_communities = bandit, csky, dolg, ecolog, freedom, army, stalker, killer, monolith, greh, greh_npc, army_npc, isg, renegade
+npc_prefix = true
+path = states\meet\meet_use_no_fight_
+shuffle = rnd
+idle = 2,2,100
+
+[meet_use_no_weapon]
+type = npc
+avail_communities = bandit, csky, dolg, ecolog, freedom, army, stalker, greh, greh_npc, army_npc, isg, renegade
+npc_prefix = true
+path = states\meet\meet_use_no_weapon_
+shuffle = rnd
+idle = 5,7,100
+
+[meet_use_no_talk_leader]
+type = npc
+avail_communities = bandit, csky, dolg, ecolog, freedom, army, stalker, killer, monolith, greh, greh_npc, army_npc, isg, renegade
+npc_prefix = true
+path = states\meet\meet_use_no_talk_leader_
+shuffle = rnd
+idle = 5,7,100
+
+
+[corpse_loot_begin]
+type = npc
+avail_communities = bandit, csky, dolg, freedom, killer, army, monolith, stalker, greh, greh_npc, army_npc, isg, renegade
+npc_prefix = true
+path = states\loot\loot_begin_
+shuffle = rnd
+idle = 10,11,100
+
+[corpse_loot_good]
+type = npc
+avail_communities = bandit, csky, dolg, freedom, killer, army, monolith, stalker, greh, greh_npc, army_npc, isg, renegade
+npc_prefix = true
+path = states\loot\loot_good_
+shuffle = rnd
+idle = 10,11,100
+
+[corpse_loot_bad]
+type = npc
+avail_communities = bandit, csky, dolg, freedom, killer, army, monolith, stalker, greh, greh_npc, army_npc, isg, renegade
+npc_prefix = true
+path = states\loot\loot_bad_
+shuffle = rnd
+idle = 10,11,100
+
+[help_heavy]
+type = npc
+avail_communities = bandit, csky, dolg, ecolog, freedom, killer, army, monolith, stalker, greh, greh_npc, army_npc, isg, renegade
+npc_prefix = true
+path = help\wounded_heavy\help_
+shuffle = rnd
+idle = 4,8,100
+
+[help_thanks]
+type = npc
+avail_communities = bandit, csky, dolg, ecolog, freedom, killer, army, stalker, greh, greh_npc, army_npc, isg, renegade
+npc_prefix = true
+path = help\wounded_thanx\thanx_
+shuffle = rnd
+idle = 1,1,100
+
+[wounded_medkit]
+type = npc
+avail_communities = army, stalker, bandit, dolg, freedom, killer, csky, greh, greh_npc, army_npc, isg, renegade
+npc_prefix = true
+path = help\wounded\medkit_
+shuffle = rnd
+idle = 1,1,100
+
+;***************************************************************
+; ТЕМЫ ДЛЯ ТИРА
+;***************************************************************
+[steam_blowout]
+type = 3d
+path = anomaly\steam_blowout
+shuffle = rnd
+idle = 0,0,100
+
+;***************************************************************
+; Yasti: Repair, Cooking and Artifact Containers
+;***************************************************************
+[inv_repair_kit_use_fast_2p8]
+type = actor
+path = interface\inv_repair_kit_use_fast_2p8
+shuffle = rnd
+
+[inv_repair_kit_use_fast]
+type = actor
+path = interface\inv_repair_kit_use_fast
+shuffle = rnd
+
+[inv_repair_kit_with_brushes]
+type = actor
+path = interface\inv_repair_kit_with_brushes
+shuffle = rnd
+
+[inv_repair_sewing_kit]
+type = actor
+path = interface\inv_repair_sewing_kit
+shuffle = rnd
+
+[inv_repair_sewing_kit_fast]
+type = actor
+path = interface\inv_repair_sewing_kit_fast
+shuffle = rnd
+
+[inv_repair_spray_oil]
+type = actor
+path = interface\inv_repair_spray_oil
+shuffle = rnd
+
+[inv_repair_brushes]
+type = actor
+path = interface\inv_repair_brushes
+shuffle = rnd
+
+[inv_repair_kit]
+type = actor
+path = interface\inv_repair_kit
+shuffle = rnd
+
+[inv_drink_flask_2]
+type = actor
+path = interface\inv_drink_flask_2
+shuffle = rnd
+
+[inv_aam_close]
+type = actor
+path = interface\inv_aam_close
+shuffle = rnd
+
+[inv_aam_open]
+type = actor
+path = interface\inv_aam_open
+shuffle = rnd
+
+[inv_iam_open]
+type = actor
+path = interface\inv_iam_open
+shuffle = rnd
+
+[inv_iam_close]
+type = actor
+path = interface\inv_iam_close
+shuffle = rnd
+
+[inv_aac_open]
+type = actor
+path = interface\inv_aac_open
+shuffle = rnd
+
+[inv_aac_close]
+type = actor
+path = interface\inv_aac_close
+shuffle = rnd
+
+[inv_lead_open]
+type = actor
+path = interface\inv_lead_open
+shuffle = rnd
+
+[inv_lead_close]
+type = actor
+path = interface\inv_lead_close
+shuffle = rnd
+
+[inv_batt]
+type = actor
+path = interface\inv_batt
+shuffle = rnd
+
+[inv_cooking]
+type = actor
+path = interface\inv_cooking
+shuffle = rnd
+
+[inv_cooking_cooker]
+type = actor
+path = interface\inv_cooking_cooker
+shuffle = rnd
+
+[inv_cooking_stove]
+type = actor
+path = interface\inv_cooking_stove
+shuffle = rnd
+
+[inv_mutant_loot_animal]
+type = actor
+path = interface\inv_mutant_loot_animal
+shuffle = rnd
+idle = 0,0,0 ;min,max,rnd
+
+[inv_mutant_loot_animal2]
+type = actor
+path = interface\inv_mutant_loot_animal2
+shuffle = rnd
+idle = 0,0,0 ;min,max,rnd
+
+[inv_mutant_loot_crow]
+type = actor
+path = interface\inv_mutant_loot_crow
+shuffle = rnd
+idle = 0,0,0 ;min,max,rnd
+
+[inv_mutant_loot_grease]
+type = actor
+path = interface\inv_mutant_loot_grease
+shuffle = rnd
+idle = 0,0,0 ;min,max,rnd
+
+[inv_mutant_loot_grease2]
+type = actor
+path = interface\inv_mutant_loot_grease2
+shuffle = rnd
+idle = 0,0,0 ;min,max,rnd
+
+[inv_mutant_loot_human]
+type = actor
+path = interface\inv_mutant_loot_human
+shuffle = rnd
+idle = 0,0,0 ;min,max,rnd
+
+[inv_mutant_loot_human2]
+type = actor
+path = interface\inv_mutant_loot_human2
+shuffle = rnd
+idle = 0,0,0 ;min,max,rnd
+
+[inv_mutant_loot_rotten]
+type = actor
+path = interface\inv_mutant_loot_rotten
+shuffle = rnd
+idle = 0,0,0 ;min,max,rnd
+
+[inv_mutant_loot_smaller]
+type = actor
+path = interface\inv_mutant_loot_smaller
+shuffle = rnd
+idle = 0,0,0 ;min,max,rnd
+
+[inv_matches]
+type = actor
+path = interface\inv_matches
+shuffle = rnd
+idle = 0,0,0 ;min,max,rnd
+
+[inv_death]
+type = actor
+path = interface\inv_death
+shuffle = rnd
+idle = 0,0,0 ;min,max,rnd
+
+[torch_click]
+type = actor
+path = weapons\pistol_empty
+shuffle = rnd
+idle = 0,0,0 ;min,max,rnd
+
+[inv_mask_clean]
+type = actor
+path = interface\inv_mask_clean
+shuffle = rnd
+
+[inv_open]
+type = actor
+path = interface\inv_open
+shuffle = rnd
+
+[inv_briefcase_light_open]
+type = actor
+path = interface\inv_briefcase_light_open
+shuffle = rnd
+
+; AWR
+[awr_fail_1]
+type = actor
+path = actor\awr\awr_fail_1
+shuffle = rnd
+idle = 0,0,0
+
+[awr_fail_2]
+type = actor
+path = actor\awr\awr_fail_2
+shuffle = rnd
+idle = 0,0,0
+
+[awr_fail_3]
+type = actor
+path = actor\awr\awr_fail_3
+shuffle = rnd
+idle = 0,0,0
+
+[awr_fail_4]
+type = actor
+path = actor\awr\awr_fail_4
+shuffle = rnd
+idle = 0,0,0
+
+[awr_fail_5]
+type = actor
+path = actor\awr\awr_fail_5
+shuffle = rnd
+idle = 0,0,0
+
+; IMM
+[inv_eat_can_imm]
+type = actor
+path = interface\inv_eat_can_imm
+shuffle = rnd
+idle = 0,0,0
+
+[inv_axe_dismember_1]
+type = actor
+path = interface\inv_axe_dismember_1
+shuffle = rnd
+idle = 0,0,0
+
+[inv_axe_dismember_2]
+type = actor
+path = interface\inv_axe_dismember_2
+shuffle = rnd
+idle = 0,0,0
+
+[inv_axe_dismember_3]
+type = actor
+path = interface\inv_axe_dismember_3
+shuffle = rnd
+idle = 0,0,0
+
+[inv_axe_dismember_4]
+type = actor
+path = interface\inv_axe_dismember_4
+shuffle = rnd
+idle = 0,0,0
+
+[inv_axe_dismember_5]
+type = actor
+path = interface\inv_axe_dismember_5
+shuffle = rnd
+idle = 0,0,0
+
+[inv_disassemble_metal_fast]
+type = actor
+path = interface\inv_disassemble_metal_fast_
+shuffle = rnd
+idle = 0,0,0
+
+[inv_disassemble_cloth_fast]
+type = actor
+path = interface\inv_disassemble_cloth_fast_
+shuffle = rnd
+idle = 0,0,0
+
+[inv_tear_patch]
+type = actor
+path = interface\inv_disassemble_cloth_fast_2
+shuffle = rnd
+idle = 0,0,0
+
+
+[wind_storm1]
+type = looped
+path = nature\wind_storm1
+
+[wind_storm2]
+type = looped
+path = nature\wind_storm2
+
+[wind_storm3]
+type = looped
+path = nature\wind_storm3
+
+[underground_drone]
+type = looped
+path = ambient\trx\background\underground
+
+[rain_helmet]
+type = looped
+path = ambient\rain_helm
+
+[rain_indoors]
+type = looped
+path = ambient\rain_indoors
+
+
+[snd_inv_mask_clean]
+type = actor
+path = interface\inv_mask_clean_3
+shuffle = rnd
+idle = 0,0,0
+
+[reload_shell]
+type = actor
+path = weapons\remington870\remington870_load
+idle = 0,0,0
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/mod_system_SSS_zones.ltx b/mods/Arrival/gamedata/configs/mod_system_SSS_zones.ltx
new file mode 100644
index 00000000..4516f6aa
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/mod_system_SSS_zones.ltx
@@ -0,0 +1,426 @@
+; @ Version: SCREEN SPACE SHADERS - UPDATE 16
+; @ Description: Interactive Grass - Anomalies animations
+; @ Author: https://www.moddb.com/members/ascii1457
+; @ Mod: https://www.moddb.com/mods/stalker-anomaly/addons/screen-space-shaders
+; Edited by S.e.m.i.t.o.n.e. for the Arrival - Anomalies Mod
+
+; Animations
+; 1 = Push
+; 2 = Wavy
+; 3 = Suck
+; 4 = Blow
+; 5 = Pulse
+
+; ------------------ Acidic Anomalies ---------------------------
+![zone_mine_acid]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 3.0
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+![zone_mine_acidic]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 3.0
+
+![zone_mine_acidic_weak]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 3.0
+
+![zone_mine_acidic_average]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 3.0
+
+![zone_mine_acidic_strong]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 3.5
+
+![zone_mine_acidic_big]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 3.5
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+![zone_mine_chemical]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 3.0
+
+![zone_mine_chemical_weak]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 3.0
+
+![zone_mine_chemical_average]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 3.0
+
+![zone_mine_chemical_strong]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 3.5
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+![zone_buzz]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 3.0
+
+![zone_buzz_weak]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 3.0
+
+![zone_buzz_average]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 3.0
+
+![zone_buzz_strong]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 3.5
+
+
+; ------------------ Electric Anomalies ---------------------------
+![zone_mine_electra]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 4.0
+bend_grass_blowout_radius = 5.0
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+![zone_mine_electric]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 4.0
+bend_grass_blowout_radius = 5.0
+
+![zone_mine_electric_weak]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 4.0
+bend_grass_blowout_radius = 5.0
+
+![zone_mine_electric_average]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 4.0
+bend_grass_blowout_radius = 5.0
+
+![zone_mine_electric_strong]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 4.0
+bend_grass_blowout_radius = 5.0
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+![zone_mine_static]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 4.0
+bend_grass_blowout_radius = 5.0
+
+![zone_mine_static_weak]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 4.0
+bend_grass_blowout_radius = 5.0
+
+![zone_mine_static_average]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 4.0
+bend_grass_blowout_radius = 5.0
+
+![zone_mine_static_strong]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 4.0
+bend_grass_blowout_radius = 5.0
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+![zone_witches_galantine]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 4.0
+bend_grass_blowout_radius = 5.0
+
+![zone_witches_galantine_weak]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 4.0
+bend_grass_blowout_radius = 5.0
+
+![zone_witches_galantine_average]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 4.0
+bend_grass_blowout_radius = 5.0
+
+![zone_witches_galantine_strong]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 4.0
+bend_grass_blowout_radius = 5.0
+
+
+; ------------------ Gravitational Anomalies ---------------------------
+![zone_mine_gravitational_weak]
+bend_grass_idle_anim = 4
+bend_grass_idle_radius = 5.0
+bend_grass_idle_speed = 4.2
+
+bend_grass_blowout = true
+bend_grass_blowout_speed = 5.0
+bend_grass_blowout_radius = 10.0
+
+![zone_mine_gravitational_average]
+bend_grass_idle_anim = 4
+bend_grass_idle_radius = 4.0
+bend_grass_idle_speed = 5.5
+
+bend_grass_whenactive_anim = 3
+bend_grass_whenactive_str = 8.5
+bend_grass_whenactive_speed = 4.5
+
+bend_grass_blowout = true
+bend_grass_blowout_duration = 2400
+bend_grass_blowout_speed = 5.0
+bend_grass_blowout_radius = 20.0
+
+![zone_mine_gravitational_strong]
+bend_grass_idle_anim = 2
+bend_grass_idle_radius = 4.0
+bend_grass_idle_speed = 1.3
+
+bend_grass_whenactive_anim = 3
+bend_grass_whenactive_str = 3.5
+bend_grass_whenactive_speed = 4.5
+
+bend_grass_blowout = true
+bend_grass_blowout_duration = 5500
+bend_grass_blowout_speed = 5.0
+bend_grass_blowout_radius = 20.0
+
+![zone_mine_gravitational_big]
+bend_grass_idle_anim = 2
+bend_grass_idle_radius = 4.0
+bend_grass_idle_speed = 1.3
+
+bend_grass_whenactive_anim = 3
+bend_grass_whenactive_str = 3.0
+bend_grass_whenactive_speed = 4.0
+
+bend_grass_blowout = true
+bend_grass_blowout_duration = 5500
+bend_grass_blowout_speed = 5.0
+bend_grass_blowout_radius = 20.0
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+![zone_mine_vortex]
+bend_grass_idle_anim = 4
+bend_grass_idle_radius = 4.0
+bend_grass_idle_speed = 5.5
+
+bend_grass_whenactive_anim = 3
+bend_grass_whenactive_str = 8.5
+bend_grass_whenactive_speed = 4.5
+
+bend_grass_blowout = true
+bend_grass_blowout_duration = 2400
+bend_grass_blowout_speed = 5.0
+bend_grass_blowout_radius = 20.0
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+![zone_mine_blast]
+bend_grass_idle_anim = 4
+bend_grass_idle_radius = 5.0
+bend_grass_idle_speed = 4.2
+
+bend_grass_blowout = true
+bend_grass_blowout_speed = 5.0
+bend_grass_blowout_radius = 10.0
+
+
+; ------------------ Springboard ---------------------------
+![zone_mine_springboard]
+bend_grass_idle_anim = 3
+bend_grass_idle_radius = 5.0
+bend_grass_idle_speed = 3.2
+
+bend_grass_blowout = true
+bend_grass_blowout_speed = 5.0
+bend_grass_blowout_radius = 10.0
+
+
+; ------------------ CDF ---------------------------
+![zone_mine_cdf]
+bend_grass_idle_anim = 3
+bend_grass_idle_radius = 6.0
+bend_grass_idle_speed = 1.2
+
+bend_grass_blowout = true
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 10.0
+
+
+; ------------------ Flash ---------------------------
+![zone_mine_flash]
+bend_grass_idle_anim = 2
+bend_grass_idle_radius = 5.0
+bend_grass_idle_speed = 1.2
+
+bend_grass_blowout = true
+bend_grass_blowout_speed = 5.0
+bend_grass_blowout_radius = 10.0
+
+
+; ------------------ Ghost ---------------------------
+![zone_mine_ghost]
+bend_grass_idle_anim = 1
+bend_grass_idle_radius = 3.0
+bend_grass_idle_speed = 1.2
+
+bend_grass_blowout = true
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 6.0
+
+
+; ------------------ Gold ---------------------------
+![zone_mine_gold]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 3.0
+
+
+; ------------------ Net ---------------------------
+![zone_mine_net]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 7.0
+
+
+; ------------------ Point ---------------------------
+![zone_mine_point]
+bend_grass_idle_anim = 1
+bend_grass_idle_radius = 3.0
+bend_grass_idle_speed = 1.2
+
+bend_grass_blowout = true
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 6.0
+
+
+; ------------------ Seed ---------------------------
+![zone_mine_seed]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 7.0
+
+
+; ------------------ Shatterpoint ---------------------------
+![zone_mine_shatterpoint]
+bend_grass_idle_anim = 2
+bend_grass_idle_radius = 4.0
+bend_grass_idle_speed = 1.3
+
+bend_grass_whenactive_anim = 1
+bend_grass_whenactive_str = 3.5
+bend_grass_whenactive_speed = 4.5
+
+bend_grass_blowout = true
+bend_grass_blowout_duration = 11000
+bend_grass_blowout_speed = 5.0
+bend_grass_blowout_radius = 20.0
+
+
+; ------------------ Sloth ---------------------------
+![zone_mine_sloth]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 2.0
+bend_grass_blowout_radius = 8.0
+
+
+; ------------------ Sphere ---------------------------
+![zone_mine_sphere]
+bend_grass_idle_anim = 1
+bend_grass_idle_radius = 5.0
+bend_grass_idle_speed = 2.2
+
+bend_grass_blowout = true
+bend_grass_blowout_speed = 5.0
+bend_grass_blowout_radius = 10.0
+
+
+; ------------------ Thorn ---------------------------
+![zone_mine_thorn]
+bend_grass_idle_anim = 1
+bend_grass_idle_radius = 4.0
+bend_grass_idle_str = 2.0
+bend_grass_idle_speed = 1.5
+
+bend_grass_whenactive_str = 3.0
+bend_grass_whenactive_speed = 3.0
+
+bend_grass_blowout = true
+bend_grass_blowout_duration = 2000
+bend_grass_blowout_speed = 6.0
+bend_grass_blowout_radius = 20.0
+
+
+; ------------------ Umbral Cluster ---------------------------
+![zone_mine_umbra]
+bend_grass_idle_anim = 3
+bend_grass_idle_radius = 4.0
+bend_grass_idle_str = 2.0
+bend_grass_idle_speed = 1.5
+
+
+; ------------------ No Gravity ---------------------------
+![zone_nogravity]
+bend_grass_blowout = true
+bend_grass_blowout_speed = 2.0
+bend_grass_blowout_radius = 15.0
+
+
+; ------------------ Zharka ---------------------------
+![zone_mine_thermal]
+bend_grass_idle_radius = 3.5
+
+bend_grass_whenactive_anim = 4
+bend_grass_whenactive_str = 2.0
+bend_grass_whenactive_speed = 3.5
+
+bend_grass_blowout = true
+bend_grass_blowout_duration = 9500
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 5.0
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+![zone_mine_zharka]
+bend_grass_idle_radius = 3.5
+
+bend_grass_whenactive_anim = 4
+bend_grass_whenactive_str = 2.0
+bend_grass_whenactive_speed = 3.5
+
+bend_grass_blowout = true
+bend_grass_blowout_duration = 9500
+bend_grass_blowout_speed = 3.0
+bend_grass_blowout_radius = 5.0
+
+
+; ------------------ Comet ---------------------------
+![fireball_zone]
+bend_grass_idle_anim = 4
+bend_grass_idle_str = 2.0
+bend_grass_idle_radius = 5.0
+bend_grass_idle_speed = 4.5
+
+
+; ------------------ Tesla ---------------------------
+![fireball_electric_zone]
+bend_grass_idle_anim = 1
+bend_grass_idle_str = 0.15
+bend_grass_idle_radius = 20.0
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/mod_system_wildkins_s_dao_svarog_patch.ltx b/mods/Arrival/gamedata/configs/mod_system_wildkins_s_dao_svarog_patch.ltx
new file mode 100644
index 00000000..c9b5537b
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/mod_system_wildkins_s_dao_svarog_patch.ltx
@@ -0,0 +1,41 @@
+![detector_scientific]
+zone_class_38 = zone_mine_umbra
+zone_class_39 = zone_mine_flash
+zone_class_40 = zone_mine_ghost
+zone_class_41 = zone_mine_gold
+zone_class_42 = zone_mine_sloth
+zone_class_43 = zone_mine_mefistotel
+zone_class_44 = zone_mine_net
+zone_class_45 = zone_mine_point
+zone_class_46 = zone_mine_cdf
+zone_class_47 = zone_mine_sphere
+zone_class_48 = zone_mine_acid
+zone_class_49 = zone_mine_electra
+zone_class_50 = zone_mine_springboard
+zone_class_51 = zone_mine_vortex
+zone_class_52 = zone_mine_blast
+zone_class_53 = zone_mine_zharka
+zone_class_54 = zone_mine_vapour
+zone_class_55 = zone_mine_seed
+zone_class_56 = zone_mine_thorn
+zone_class_57 = zone_mine_shatterpoint
+zone_freq_38 = 0.05, 2
+zone_freq_39 = 0.05, 2
+zone_freq_40 = 0.05, 2
+zone_freq_41 = 0.05, 2
+zone_freq_42 = 0.05, 2
+zone_freq_43 = 0.05, 2
+zone_freq_44 = 0.05, 2
+zone_freq_45 = 0.05, 2
+zone_freq_46 = 0.05, 2
+zone_freq_47 = 0.05, 2
+zone_freq_48 = 0.05, 2
+zone_freq_49 = 0.05, 2
+zone_freq_50 = 0.05, 2
+zone_freq_51 = 0.05, 2
+zone_freq_52 = 0.05, 2
+zone_freq_53 = 0.05, 2
+zone_freq_54 = 0.05, 2
+zone_freq_55 = 0.05, 2
+zone_freq_56 = 0.05, 2
+zone_freq_57 = 0.05, 2
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/plugins/radioactive_water_settings.ltx b/mods/Arrival/gamedata/configs/plugins/radioactive_water_settings.ltx
new file mode 100644
index 00000000..019fd7fd
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/plugins/radioactive_water_settings.ltx
@@ -0,0 +1,42 @@
+; this is radiation built every millisecond when in water in that specific map
+; 0.000016 means you will get fully irradiated standing in water for 60 real seconds without any protection
+; outfits will reduce this, above a certain radiation protection water won't irradiate you anymore depending on the value
+
+[settings]
+enabled = true
+
+jupiter = 0.000128
+pripyat = 0.000128
+zaton = 0.000128
+
+jupiter_underground = 0.000128
+labx8 = 0.000128
+l03u_agr_underground = 0.000128
+l04u_labx18 = 0.000128
+l08u_brainlab = 0.000128
+l10u_bunker = 0.000128
+l12u_control_monolith = 0.000128
+l12u_sarcofag = 0.000128
+l13u_warlab = 0.000128
+
+k00_marsh = 0.000128
+k01_darkscape = 0.000128
+k02_trucks_cemetery = 0.000128
+l01_escape = 0.000128
+l02_garbage = 0.000128
+l03_agroprom = 0.000128
+l04_darkvalley = 0.000128
+l05_bar = 0.000000
+l06_rostok = 0.000000
+l07_military = 0.000128
+l08_yantar = 0.000128
+l09_deadcity = 0.000000
+l10_limansk = 0.000128
+l10_radar = 0.000128
+l10_red_forest = 0.000128
+l11_hospital = 0.000128
+l11_pripyat = 0.000128
+l12_stancia = 0.000128
+l12_stancia_2 = 0.000128
+l13_generators = 0.000128
+y04_pole = 0.000128
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/scripts/generators/gen_play_particles.ltx b/mods/Arrival/gamedata/configs/scripts/generators/gen_play_particles.ltx
new file mode 100644
index 00000000..1a9a69bf
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/scripts/generators/gen_play_particles.ltx
@@ -0,0 +1,25 @@
+[logic]
+active = sr_particle
+
+[sr_particle]
+name = semitone\anomalies\generators\generatory
+mode = 2
+path = gen_part_points
+looped = true
+on_info = {+warlab_deactivate_generators_done} sr_idle@nil %=clear_weather%
+on_info2 = {+aes2_greh_squad1_dead +aes2_greh_squad2_dead -ms_stitch_msg =actor_on_level(l13_generators)} sr_idle@msg
+on_info3 = {+stalker_stitch_mortal_sin_emission_buildup -ms_decisive_blow} sr_timer@impending_doom
+on_info4 = {+premature_emission_started} sr_idle@nil
+
+[sr_timer@impending_doom]
+type = dec
+start_value = 1080000
+on_value = 5 | %=play_sound_on_actor(rad_hat_2)%
+on_info = {+ms_decisive_blow} sr_particle
+on_info2 = {+too_late} sr_particle
+string = st_impending_doom
+
+[sr_idle@msg]:sr_particle
+on_game_timer = 60 | sr_particle %=gen_stitch_message +ms_stitch_msg%
+
+[sr_idle@nil]
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/text/eng/ui_st_drx_da_encyclopedia.xml b/mods/Arrival/gamedata/configs/text/eng/ui_st_drx_da_encyclopedia.xml
new file mode 100644
index 00000000..44c199db
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/text/eng/ui_st_drx_da_encyclopedia.xml
@@ -0,0 +1,212 @@
+
+
+
+
+ Cognitive Dissonance Field
+
+
+
+ Umbral Cluster
+
+
+
+ Flash
+
+
+
+ Ghost
+
+
+
+ Liquid Gold
+
+
+
+ Thorn
+
+
+
+ Seed
+
+
+
+ Shatterpoint
+
+
+
+ Sloth
+
+
+
+ Mefistotel
+
+
+
+ Net
+
+
+
+ Point
+
+
+
+ Rebounder
+
+
+
+ Cognitive Dissonance Field
+
+
+
+ • Name: %c[d_cyan]Cognitive Dissonance Field%c[ui_gray_1]
+ \n• Type: %c[d_orange]Psionic
+ \n \n%c[pda_green]Information%c[ui_gray_1]
+ \nThe "Cognitive Dissonance Field", also known as "CDF anomaly," is a highly localized breach in the fabric of the Noosphere. It emits a weak psionic aura that can have severe effects on the mental health of anyone within its vicinity. This anomaly is particularly insidious because it scrambles the brainwave frequencies of those it affects, leading to confusion, disorientation, and other negative cognitive effects. Unlike regular psi-fields, the "CDF" anomaly bypasses any conventional means of psionic protection, affecting the victim's mind directly. The Cognitive Dissonance Field is difficult to spot during the day because the color it emits is similar to the sky of the Zone. However, its distinctive sound can be easily distinguished from the surrounding environment, making it essential for stalkers to focus on this sound to stay alive and sane. During the night, the anomaly is more noticeable due to the contrast of the black night sky, emitting pulsating faint blue lights that can help identify its location. Exposure to the Cognitive Dissonance Field should be avoided at all costs, as it can have severe and long-lasting effects on mental health. Even brief exposure can lead to confusion, memory loss, and other cognitive impairments. Stalkers should exercise caution when navigating areas where this anomaly is present and take necessary precautions to protect their mental well-being.
+
+
+
+
+ Umbral Cluster
+
+
+
+ • Name: %c[d_cyan]Umbral Cluster%c[ui_gray_1]
+ \n• Type: %c[d_orange]Psionic
+ \n \n%c[pda_green]Information%c[ui_gray_1]
+ \nThe "Umbral Cluster" or more commonly referred to as just "Umbra" is highly unusual and dangerous formation that appears to disrupt the very fabric of reality itself. It is believed to be of extraterrestrial origin and is capable of altering the fundamental laws of physics within its vicinity. The anomaly manifests as a swarm of shadow-like entities that move in unison, creating an eerie and unsettling atmosphere. Umbra anomaly has a unique effect on the human psyche, inducing feelings of dread, paranoia, and terror in those who venture too close. Recent research suggests that the Umbral Cluster may be a form of non-Newtonian matter that operates on principles that are not fully understood. The swarm's movement patterns and behavior appear to be governed by complex algorithms that defy conventional physics. Moreover, the anomaly's influence on the human brain may be related to its interaction with the body's electromagnetic field, resulting in the production of abnormal brainwave patterns. This anomaly is also known to attract poltergeists, who are believed to find refuge within the swarm. The reasons behind this attraction are unclear, but some researchers speculate that the poltergeists may be drawn to the anomaly's unique electromagnetic field. The Umbral Cluster is one of the most dangerous anomalies ever recorded in the Zone, and exposure to its effects should be avoided at all costs. Even brief exposure can lead to long-lasting psychological trauma, and those who spend extended periods in the vicinity of the anomaly may suffer permanent damage to their mental health. Stalkers should exercise extreme caution when approaching this anomaly and take all necessary precautions to protect their well-being.
+
+
+
+
+ Flash
+
+
+
+ • Name: %c[d_cyan]Flash%c[ui_gray_1]
+ \n• Type: %c[d_orange]Temporal
+ \n \n%c[pda_green]Information%c[ui_gray_1]
+ \nThe "Flash" anomaly creates a tear in the space-time continuum that disrupts the fabric of the universe itself, or so it seams. When a passing the point at which effect begins, you experience a rapid time movement of unknown temporal extent, in just a single moment. The effects of the "Flash" anomaly on living organisms are complex and not yet fully understood. Some theories suggest that the rift may cause quantum-level disruptions in the individual's molecular structure, leading to physical and mental harm. Others propose that the time-travel effect of the anomaly may cause a loss of synchronicity between the individual's internal biological clock and the external environment, leading to disorientation and confusion. Despite the potential dangers of the "Flash" anomaly, some stalkers have found ways to use these rifts to their advantage. By carefully timing their entry and exit points, they can use the anomaly to evade pursuit or to wait for the perfect moment to retrieve an artifact. Navigating the "Flash" anomaly requires caution and skill, as its effects can be unpredictable and potentially deadly. Stalkers should exercise extreme caution when entering this rift and be aware of their surroundings at all times to avoid getting lost or disoriented. Additionally, those who use the "Flash" anomaly for their own purposes should be aware of the risks and take necessary precautions to ensure their safety, as some who wondered in it have never returned.
+
+
+
+
+ Ghost
+
+
+
+ • Name: %c[d_cyan]Ghost%c[ui_gray_1]
+ \n• Type: %c[d_orange]Electrical/Chemical
+ \n \n%c[pda_green]Information%c[ui_gray_1]
+ \n"Ghost" anomaly, as it is colloquially known among seasoned Stalkers, is a true mysterious occurrence, which appears as a puff of smoky, ethereal substance that moves with purpose. The Ghost's behavior is unique among all known anomalies, as it seems to possess some level of sentience that defies all scientific explanation. Some Stalkers believe that it is an ancient and malevolent entity that has existed since the Zone's creation, while others postulate that it is a manifestation of the collective consciousness of all those who have perished in the Zone. Its haunting and otherworldly sound sends chills down the bones of all who hear it. Theories abound about the source of these sounds that it emits, with some believing that they are the screams of lost souls trapped within the anomaly's embrace, while others maintain that they are the voices of the Zone itself, crying out in agony at the endless suffering and torment it has witnessed. The Ghost has become the subject of numerous myths and legends, with some even claiming that it possesses the power to grant wishes to those who can successfully capture it. Others tell of hapless Stalkers who have been lured to their deaths by its siren call, lost forever in the depths of the Zone. Despite its enigmatic nature, the Ghost is not to be underestimated, for it is a deadly and unpredictable force that can strike without warning. Those who venture too close to its path risk being electrocuted or disintegrated by its potent energies. This anomaly is a true enigma of the Zone, possessing a level of sentience and purpose that defies all scientific explanation. Its eerie sounds and ghostly presence have made it the subject of many myths and legends, adding to its mystique and terror. Approach with caution, for the Ghost anomaly is a deadly force that should not be taken lightly by even the most experienced of Stalkers.
+
+
+
+
+ Liquid Gold
+
+
+
+ • Name: %c[d_cyan]Liquid Gold%c[ui_gray_1]
+ \n• Type: %c[d_orange]Chemical
+ \n \n%c[pda_green]Information%c[ui_gray_1]
+ \nThe "Liquid Gold" anomaly is a highly dangerous and potent anomaly that emits a cloud of orange/golden colored toxic chemical substance. It is often considered to be the twin sister of the "Acidic" anomaly due to its similar appearance, but with far more severe effects. Upon contact with the substance, victims experience a rapid increase in body temperature, surpassing even feverish levels. The speed and intensity of this reaction vary depending on the potency of the anomaly. The symptoms range from severe dehydration to an excruciating death caused by the victim's blood reaching its boiling point. The toxic chemicals also affect the victim's skin, causing severe burns that can be small and hard to notice at first. However, these burns can worsen and lead to further complications, exacerbating the already life-threatening symptoms of the anomaly. The chemicals from the burns can also enter the bloodstream, affecting the body's internal organs, and potentially causing permanent damage. Due to the highly toxic and deadly nature of the anomaly, extreme caution must be exercised when encountering or handling it. Protective gear should be worn at all times, and immediate medical attention should be sought in the event of exposure. The "Liquid Gold" anomaly is a formidable threat that must be approached with the utmost care and caution.
+
+
+
+
+ Thorn
+
+
+
+ • Name: %c[d_cyan]Thorn%c[ui_gray_1]
+ \n• Type: %c[d_orange]Physical\Chemical
+ \n \n%c[pda_green]Information%c[ui_gray_1]
+ \nThorn is a deadly anomaly that can activate at a moment's notice. It appears as a small, unremarkable patch on the ground, but when triggered, it expands rapidly, revealing its true nature. Its jagged, spiky thorns protrude menacingly from the surface, giving it an appearance of deadly beauty. The biggest danger of Thorn lies not just in its deadly spikes, but in its unpredictable nature. It can be set off by any number of stimuli, including sound, vibration, or even the presence of living creatures nearby. This makes it a constant threat to any Stalker who ventures too close. What makes it even more lethal is that the spikes are coated in a toxic substance that can cause severe injury or even death. Once disturbed it unleashes a barrage of sharp, barbed thorns that shoot out in all directions, piercing through anything in their path with brutal force. The toxic nature of the spikes makes it an even greater challenge for Stalkers attempting to harvest its valuable artifacts. Without proper protection or antidotes, a single brush with the spikes can prove fatal. Despite the danger, some brave Stalkers risk everything to acquire the artifacts, driven by the promise of wealth and fame. But doing so requires nerves of steel, lightning-fast reflexes, and an intimate knowledge of the anomaly's behavior. Even then, there are no guarantees of survival. In the Zone, Thorn is a symbol of the dangers that lurk around every corner. It serves as a reminder that no matter how well-prepared a Stalker may be, they can never truly know what dangers they will face in the ever-shifting landscape of the Zone.
+
+
+
+
+ Seed
+
+
+
+ • Name: %c[d_cyan]Seed%c[ui_gray_1]
+ \n• Type: %c[d_orange]Chemical
+ \n \n%c[pda_green]Information%c[ui_gray_1]
+ \nSeed Anomaly, an enigmatic and treacherous occurrence, possesses an inherent peril that surpasses that of most anomalies, as it harbors the capability to multiply. Its elusive nature and multiplying ability heighten the level of danger associated with this phenomenon, demanding extreme caution from any who dare to venture near it. This anomalous entity manifests as a swirling mass of luminescent particles, resembling countless diminutive life forms that exhibit flawless coordination and collaboration. The orchestrated movements of the Seed Anomaly's constituent life forms suggest a remarkable level of organization and intelligence, which, when activated, culminate in a cataclysmic effect. Within certain scientific circles, a prevailing notion contends that the Seed Anomaly may signify an unprecedented manifestation of subatomic interactions, an elusive particle or an uncharted force of nature that has yet to be comprehensively understood. Alternatively, speculation abounds that this anomaly may manifest a novel phase of matter, hitherto unseen in the natural world. Astute stalkers have even reported witnessing patterns and configurations formed by these particles, resembling intricate structures found in nature, including swarms of birds or schools of fish. The behavior and purpose of the life forms within the Seed Anomaly remain shrouded in mystery, their intricate coordination suggesting an intelligence that surpasses the norm observed in other anomalies. Upon activation, the anomaly instantaneously releases its particles in a sudden and forceful burst, propelling them in all directions with extraordinary vigor. These particles possess an intense level of radioactivity, their emission accompanied by a piercing high-pitched sound that reverberates across great distances. The peril associated with the Seed Anomaly is further amplified by its uncanny ability to blend seamlessly into its surroundings, rendering its detection an arduous task until it is too late. Those unfortunate enough to encounter its wrath suffer dire consequences. The highly radioactive particles cause severe burns and radiation sickness, while the sheer force of the explosion can violently knock individuals off their feet, inflicting grave injuries. The disorienting effect of the particles' shrill emission complicates matters, hindering the escape of those in close proximity. Regardless of its origins or potential applications, the Seed Anomaly remains an alluring enigma that captivates the imaginations of both scientific minds and ordinary individuals. Its extraordinary properties and potential utilities perpetuate endless fascination and debate, ensuring that research and exploration pertaining to this anomaly will persist for years to come. In light of its inherent dangers, the Seed Anomaly must never be treated lightly, and only those who possess ample preparation, appropriate equipment, and comprehensive knowledge should dare to approach it.
+
+
+
+
+ Shatterpoint
+
+
+
+ • Name: %c[d_cyan]Shutterpoint%c[ui_gray_1]
+ \n• Type: %c[d_orange]Highly unstable gravitational
+ \n \n%c[pda_green]Information%c[ui_gray_1]
+ \nA dangerous and unpredictable phenomenon that can be found in certain areas of the Zone. It appears as a cluster of sharp, transparent glass shards tied to a central point. It is highly advised to avoid Shatterpoint anomaly as it brings certain death. The shards that make up the Shatterpoint anomaly are not naturally occurring glass, but are instead created by the anomaly's unique behavior. It has a powerful gravitational field that pulls in small elements of the environment towards its central point, and as they are drawn in, they are subjected to extreme temperatures that cause them to heat up rapidly. Remnants of the previous triggering orbit around it and when disturbed they will explode in a burst of energy, which due to it's unstable gravitational field will suspend them in the air for a brief moment before they are all suddenly pulled towards the center of the anomaly, merging all together. The intense heat melting the shards will enwrap them into a single point followed by a sudden, rapid cooling that causes that point to shatter into million tiny pieces before the anomaly's gravitational field fluctuates again and it finally explodes, sending the shards flying in all directions. Stalkers should exercise extreme caution when approaching the Shatterpoint, as it is extremely sharp and dangerous and can cause significant harm to anyone who comes into contact with it. It is important to take steps to protect yourself from the flying glass if you must enter its vicinity.
+
+
+
+
+ Sloth
+
+
+
+ • Name: %c[d_cyan]Sloth%c[ui_gray_1]
+ \n• Type: %c[d_orange]Chemical
+ \n \n%c[pda_green]Information%c[ui_gray_1]
+ \nThe so called "Sloth" anomaly is highly unusual and enigmatic phenomenon that poses a significant threat to any organisms that come into contact with it. Upon analysis of its observed properties, it is possible to suggest that it is a complex and highly reactive cloud of unknown chemical composition. One possibility is that the Sloth anomaly is a highly reactive form of atmospheric pollution of the Zone, consisting of a complex mixture of organic and inorganic compounds. This could explain the anomaly's poisonous nature, as well as its ability to adversely affect the biological functions of organisms that come into contact with it. Alternatively, there are suggestions that Sloth may be a form of bio-engineered weapon that came in contact with Zone's anomalous fields, and got twisted to it's own will. Likely created by some unknown organization for use in combat or espionage, as this could explain the anomaly's highly specific and targeted effects, as well as its apparent ability to persist in the environment over long periods of time. Another possibility is that it's a natural byproduct of the Zone's unusual and often unpredictable environment. The Zone is known to produce a wide variety of unusual and potentially hazardous phenomena, including anomalies that affect the physical and biological functions of organisms that come into contact with them. It is possible that the Sloth anomaly is simply another example of this phenomenon, a natural expression of the strange and often unpredictable forces that make up this mysterious place. Regardless of its underlying nature, the Sloth is clearly a highly dangerous and potentially lethal phenomenon that demands caution and respect from all who enter the Zone. Its ability to hinder the motor skills of organisms that come into contact with it is a testament to the complex and often unpredictable nature of the forces that shape our world, and serves as a reminder of the dangers that lurk within the unknown reaches of the Zone.
+
+
+
+
+ Mefistotel
+
+
+
+ • Name: %c[d_cyan]Mefistotel%c[ui_gray_1]
+ \n• Type: %c[d_orange]Electrical/Chemical
+ \n \n%c[pda_green]Information%c[ui_gray_1]
+ \nMefistotel is a rare and mysterious anomaly that takes its name from the trickster demon of medieval folklore. The anomaly appears as a strange flower-like formation, with delicate tendrils that emit an eerie sound when any living organism approaches. Despite its alluring appearance, Mephistotel is extremely dangerous to any living creature that ventures too close. One of the most insidious aspects of Mephistotel is that its appearance can sometimes be mistaken for an artefact, a highly valuable and sought-after item in the Zone. Many rookie stalkers have fallen victim to this deception, believing they have stumbled upon a rare artefact, only to be drawn towards the anomaly's deadly center and meet their end. As soon as the victim enters Mephistotel's active radius, it is nearly instantly drawn towards its center, as if by some unseen force. Once drawn in, the victim is shredded into pieces by the anomaly's tendrils, which act like razor-sharp blades. The process is quick and brutal, leaving no chance for escape or survival. Many stalkers who have encountered Mephistotel report feeling an overwhelming sense of dread and unease when they came across it, but also speak of Its beautiful appearance and eerie sound that seem almost hypnotic, drawing in unsuspecting prey that quickly meets its demise. Rumors and legends about the anomaly have spread among stalkers, with some believing that Mephistotel, according to the story that has been passed down among stalkers, only appears to those who are driven by greed and the desire for material gain. It is said that those who have never wished for anything from the Zone have never seen the anomaly, and are therefore safe from its deadly lure. Some even believe that Mephistotel can read a person's thoughts and desires, and will only reveal itself to those who are deemed unworthy, luring them to their death. This belief has caused many stalkers who have seen it to approach the anomaly with caution and respect, fearing that their own greed may be their undoing.
+
+
+
+
+ Net
+
+
+
+ • Name: %c[d_cyan]Net%c[ui_gray_1]
+ \n• Type: %c[d_orange]gravitational\Chemical
+ \n \n%c[pda_green]Information%c[ui_gray_1]
+ \nThe "net" anomaly is characterized by a highly charged stream of particles that are accelerated through gravitational forces. The charged particles create an electromagnetic field that entraps any object within its effective radius, much like an invisible net. The particles adhere to the surface of the trapped object, forming a tightly woven mesh that can be difficult to break free from. This phenomenon is caused by the interaction between the charged particles and the electromagnetic forces within the anomaly. The "net" anomaly is considered highly dangerous, as it can ensnare living organisms and cause severe physical harm or death. According to the rumors and legends among stalkers, the "Net" anomaly was first discovered by a group of experienced Zone veterans who had been exploring the area for years. As they wandered through the Zone, they noticed a strange electrical disturbance in the air, and as they got closer, they were suddenly enveloped by the charged particles of the anomaly. It is said that the stalkers struggled to escape the grasp of the "Net," but found themselves trapped in its grip, unable to break free. As they struggled, they saw the ghostly figures of other stalkers who had been caught in the anomaly before them, their bodies slowly being consumed by the charged particles. Net anomaly is feared and respected by all stalkers who venture into the Zone, and tales of its deadly grasp continue to spread among those who dare to explore its boundaries.
+
+
+
+
+ Point
+
+
+
+ • Name: %c[d_cyan]Point%c[ui_gray_1]
+ \n• Type: %c[d_orange]Electrical
+ \n \n%c[pda_green]Information%c[ui_gray_1]
+ \nPoint is an electrical phenomenon characterized by a transparent and crystalline orb that exhibits control over a spherical region of electrically charged energy. The orb appears to track the movement of nearby objects or individuals, suggesting a level of awareness and intentionality. The source of the electric energy within the sphere is not fully understood, but it has been observed to exhibit an interaction with electrical objects, such as batteries and capacitors, which appear to be charged in its proximity. However, due to the unknown nature of this interaction, it is strongly recommended to approach the anomaly with caution and proper protective measures. Despite its potential danger, some daring stalkers seek out Point anomaly in hopes of harnessing its power. Rumors have circulated about a group of stalkers who were able to extract the charged energy from the anomaly to power their devices, but it didn't end well. Story of tragic incident happened when a group of stalkers got lost somewhere in the Zone, it was middle of the night and their flashlights and PDA's were dead empty so they decided to try their luck with claims of this anomaly's ability so they could escape that part of the zone before they get ripped apart by mutants. As the group of stalkers approached the anomaly, they excitedly pulled out their PDAs and other electrical devices, hoping to charge them using the energy allegedly emitted by the anomaly. But as they drew closer, they began to feel a sense of unease. The crystalized orb seemed to be watching them, and the energy ball pulsed with an ominous glow. Suddenly, with a blinding flash of light, the energy ball discharged a massive surge of electricity. The stalkers were thrown back violently, their bodies contorted and writhing in agony as the electricity coursed through their flesh. Their screams echoed across the Zone, as the electricity fried their nerve endings and cooked their internal organs. Days later, other stalkers found their lifeless bodies scattered around the anomaly, their flesh charred and blackened from the electrical surge, and their devices fully charged. It was a gruesome reminder of the deadly power of the Point anomaly, and a warning to all who dared to approach it. Most stalkers heed the warning to stay away from the anomaly, knowing all too well the deadly consequences of tempting fate in the Zone.
+
+
+
+
+ Rebounder
+
+
+
+ • Name: %c[d_cyan]Rebounder%c[ui_gray_1]
+ \n• Type: %c[d_orange]Gravitational
+ \n \n%c[pda_green]Information%c[ui_gray_1]
+ \n"Rebounder" is a rare and enigmatic gravitational anomaly that manifests as a dense concentration of multiple force fields, forming a spherical shape. These force fields interact in complex ways to create a gravitational distortion, so when a moving object approaches the Rebounder's sphere, it encounters a force field that slows it down and alters its trajectory. This effect is caused by the distortion of the local space-time fabric, which creates a curvature that opposes the motion of the object. In addition to its defensive capabilities, the Rebounder can also be used offensively by skilled stalkers. By strategically placing themselves near the anomaly, experienced stalkers can use the distortion field to shield themselves from bullets or even deflect incoming projectiles towards their enemies. This technique requires precise timing and aim, but it can be a devastating tool in the hands of a skilled fighter. However, the Rebounder's effects are not always predictable, and inexperienced stalkers who attempt to use it may find themselves at the mercy of its unpredictable gravitational forces. Furthermore, prolonged exposure to the Rebounder's distortion field can have adverse effects on the stalker's health and well-being, causing disorientation and nausea. Overall, the Rebounder is a highly sought-after anomaly among Stalkers due to its unique defensive and offensive capabilities. However, its unpredictable nature and potential health hazards make it a dangerous anomaly to approach and use without proper preparation and caution.
+
+
+
+
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/text/eng/ui_st_drx_da_mcm.xml b/mods/Arrival/gamedata/configs/text/eng/ui_st_drx_da_mcm.xml
new file mode 100644
index 00000000..930980d0
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/text/eng/ui_st_drx_da_mcm.xml
@@ -0,0 +1,172 @@
+
+
+
+
+
+ Arrival - Anomalies
+
+
+
+
+ Presets
+
+
+ Choose predefined settings from the list
+
+
+ Easy
+
+
+ Normal
+
+
+ Hard
+
+
+
+ Anomaly Zone Spawn Chance
+
+
+ The chance for predefined smart terrain to spawn anomaly zone
+
+
+
+ Anomaly Zone Radius
+
+
+ Maximum distance from the center of smart terrain that is allowed for anomaly zone
+
+
+
+ Minimum Distance Between Anomalies
+
+
+ Defines minimum distance between anomalies in zone. Negative values will allow anomalies to overlap each other
+
+
+
+ Anomaly Amount Modifier
+
+
+ Modifies the amount of anomalies each anomaly zone can have
+
+
+
+ Max Artefacts Per Zone
+
+
+ Defines the maximum amount of artefacts that can spawn in an anomaly zone
+
+
+
+ Artefacts Spawn Chance
+
+
+ Each of defined maximum amount of artefacts will have this chance to spawn
+
+
+
+ Random Artefact Chance
+
+
+ Which artefacts can be spawn is defined by the level. South locations can spawn only weak artys, while underground and north ones can spawn strong artys. However there is a chance, defined by this value, that an anomaly zone can spawn any artefact, including unique ones
+
+
+
+ Gravitational Shake Modifier
+
+
+ Modifier of screen shake near gravitational anomalies
+
+
+
+ Electric Field Modifier
+
+
+ Modifier of damage of electric fields. Does not affect glitches of electronic devices
+
+
+
+ Enable Anomalies Dynamic Behaviour
+
+
+ Defines if dynamic anomalies have special behaviour and can pop in and out of existence in zone
+
+
+
+ Save Game After Anomalies Removal
+
+
+ Saves the game after emission or psi-storm when dynamic anomalies are removed from the level
+
+
+
+ Disable New Anomalies
+
+
+ Disables new kinds of anomalies from spawning. The option will take effect after next emission or psy-storm or at the new game
+
+
+
+
+ Below you can selectively enable
+ \nwhich new kinds of anomalies will be spawned in the game
+
+
+
+ Enable
+
+
+ Enable
+
+
+ Enable
+
+
+ Enable
+
+
+ Enable
+
+
+ Enable
+
+
+ Enable
+
+
+ Enable
+
+
+ Enable
+
+
+ Enable
+
+
+ Enable
+
+
+ Enable
+
+
+ Enable
+
+
+
+ Delete Dynamic Anomalies
+
+
+ Deletes all generated anomaly zones from the game. This option is intended for safe removal of the mod. Enable the option, then return to the game, save the game, quit the game and remove the mod
+
+
+
+ Debug Mode
+
+
+ Enables message spam in console
+
+
+
diff --git a/mods/Arrival/gamedata/configs/text/rus/ui_st_drx_da_encyclopedia.xml b/mods/Arrival/gamedata/configs/text/rus/ui_st_drx_da_encyclopedia.xml
new file mode 100644
index 00000000..e8396344
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/text/rus/ui_st_drx_da_encyclopedia.xml
@@ -0,0 +1,212 @@
+
+
+
+
+ «Поле Когнитивного Диссонанса»
+
+
+
+ «Умбра»
+
+
+
+ «Вспышка»
+
+
+
+ «Призрак»
+
+
+
+ «Жидкое золото»
+
+
+
+ «Колючка»
+
+
+
+ «Семя»
+
+
+
+ «Дребезги»
+
+
+
+ «Ленивец»
+
+
+
+ «Мефистофель»
+
+
+
+ «Сеть»
+
+
+
+ «Точка»
+
+
+
+ «Отбойник»
+
+
+
+ «Поле Когнитивного Диссонанса»
+
+
+
+ • Название: %c[d_cyan]Поле Когнитивного Диссонанса%c[ui_gray_1]
+ \n• Тип: %c[d_orange]Пси-аномалия%c[ui_gray_1]
+ \n \n%c[d_green]Информация%c[ui_gray_1]
+ \n"Поле Когнитивного Диссонанса", также известное как "аномалия ПКД", представляет собой локализованную брешь в ткани Ноосферы. Она излучает слабую псионическую ауру, которая может оказать серьезное воздействие на психическое здоровье всех, кто находится поблизости. Эта аномалия особенно коварна, поскольку она искажает частоты мозговых волн тех, на кого она воздействует, что приводит к замешательству, дезориентации и другим негативным когнитивным эффектам. В отличие от обычных пси-полей, "ПКД" обходит любые привычные средства псионической защиты, воздействуя непосредственно на разум жертвы. Поле Когнитивного Диссонанса трудно заметить днем, потому что оно сливается с небом. Однако его характерный звук легко отличить от звуков окружающей среды, поэтому сталкерам необходимо концентрироваться на этом звуке, чтобы остаться живыми и в здравом уме. В ночное время аномалия более заметна из-за контраста с черным ночным небом, излучая слабый пульсирующий голубой свет, по которому можно определить ее местоположение. Воздействия Поля Когнитивного Диссонанса следует избегать любой ценой, поскольку оно может иметь серьезные и долгоиграющие последствия для психического здоровья. Даже кратковременное воздействие может привести к спутанности сознания, потере памяти и другим когнитивным нарушениям. Сталкерам следует проявлять осторожность при нахождении в местах, где присутствует эта аномалия, и принимать все возможные меры предосторожности для защиты своего психического здоровья.
+
+
+
+
+ «Умбра»
+
+
+
+ • Название: %c[d_cyan]Умбра%c[ui_gray_1]
+ \n• Тип: %c[d_orange]Пси-аномалия%c[ui_gray_1]
+ \n \n%c[d_green]Информация%c[ui_gray_1]
+ \n"Умбральный кластер" или чаще называемый просто "Умбра" - это крайне необычное и опасное образование, которое, похоже, нарушает саму ткань реальности. Считается, что оно имеет внеземное происхождение и способно изменять фундаментальные законы физики в непосредственной близости от себя. Аномалия проявляется в виде роя тенеподобных образований, которые движутся в унисон, создавая жуткую и тревожную атмосферу. Аномалия Умбра оказывает особое воздействие на психику человека, вызывая чувство страха, паранойи и ужаса у тех, кто осмеливается приблизиться к ней слишком близко. Последние исследования показывают, что Умбральный кластер может быть формой неньютоновской материи, которая действует по не до конца понятным принципам. Модели движения и поведения "роя", похоже, управляются сложными алгоритмами, которые не поддаются обычной физике. Более того, влияние аномалии на человеческий мозг может быть связано с ее взаимодействием с электромагнитным полем тела, что приводит к возникновению аномальных мозговых волн. Известно, что эта аномалия также привлекает полтергейстов, которые, как считается, находят убежище внутри "роя". Причины такого притяжения неясны, но некоторые исследователи предполагают, что полтергейстов может привлекать уникальное электромагнитное поле аномалии. Умбральный кластер - одна из самых опасных аномалий, когда-либо зафиксированных в Зоне, и ее воздействия следует избегать любой ценой. Даже кратковременное воздействие может привести к длительной психологической травме, а те, кто проведет длительное время вблизи аномалии, могут получить необратимый вред психическому здоровью. Сталкеры должны проявлять крайнюю осторожность при приближении к этой аномалии и принимать необходимые меры предосторожности для защиты своего здоровья.
+
+
+
+
+ «Вспышка»
+
+
+
+ • Название: %c[d_cyan]Вспышка%c[ui_gray_1]
+ \n• Тип: %c[d_orange]Временная аномалия%c[ui_gray_1]
+ \n \n%c[d_green]Информация%c[ui_gray_1]
+ \nАномалия "Вспышка" создает разрыв в пространственно-временном континууме, который нарушает структуру самой вселенной, или так это кажется. При пересечении границы, в которой начинается эффект, происходит резкое перемещение во времени на неизвестный временной промежуток буквально в одно мгновение. Воздействие аномалии "Вспышка" на живые организмы является сложным и еще не до конца понятным. Некоторые теории предполагают, что разлом может вызвать нарушения на квантовом уровне в молекулярной структуре человека, что приводит к физическим и психическим увечьям. Другие предполагают, что эффект путешествия во времени, вызванный аномалией, может привести к нарушению синхронизации между внутренними биологическими часами человека и внешней средой, что приведет к замешательству и дезориентации. Несмотря на потенциальную опасность аномалии "Вспышка", некоторые сталкеры нашли способ использовать эти разрывы в своих интересах. Тщательно рассчитав время своего входа и выхода, они могут использовать аномалию, чтобы уйти от преследования или дождаться идеального момента, чтобы заполучить артефакт. Навигация по аномалии "Вспышка" требует осторожности и умения, поскольку ее воздействие может быть непредсказуемым и потенциально смертельно опасным. Сталкеры должны проявлять крайнюю осторожность при входе в этот разлом и постоянно следить за окружающей обстановкой, чтобы не заблудиться и не оказаться дезориентированными. Кроме того, те, кто использует аномалию "Вспышка" в своих целях, должны осознавать риск и принимать необходимые меры предосторожности для обеспечения своей безопасности, поскольку некоторые, кто забрел в нее, так и не вернулись.
+
+
+
+
+ «Призрак»
+
+
+
+ • Название: %c[d_cyan]Призрак%c[ui_gray_1]
+ \n• Тип: %c[d_orange]Электро-химическая аномалия%c[ui_gray_1]
+ \n \n%c[d_green]Информация%c[ui_gray_1]
+ \nэфирной субстанции, которая движется целенаправленно. Поведение Призрака уникально среди всех известных аномалий, поскольку он, похоже, обладает неким уровнем разумности, который не поддается никакому научному объяснению. Некоторые сталкеры считают, что это древняя и злобная сущность, существовавшая с момента создания Зоны, другие предполагают, что это проявление коллективного сознания всех тех, кто погиб в Зоне. Его жуткий и потусторонний звук пробирает до костей всех, кто его слышит. Существует множество теорий об источнике этих звуков, некоторые считают, что это крики потерянных душ, запертых в плену аномалии, другие же утверждают, что это голоса самой Зоны, кричащей в агонии о бесконечных страданиях и мучениях, свидетелем которых она стала. Призрак стал предметом многочисленных мифов и легенд, некоторые даже утверждают, что он обладает способностью исполнять желания тех, кто сумеет его поймать. Другие рассказывают о незадачливых сталкерах, которых его зов заманил на верную смерть, навсегда сгинув в глубинах Зоны. Несмотря на свою таинственность, Призрака не стоит недооценивать, ведь это смертоносная и непредсказуемая сила, способная поразить без предупреждения. Те, кто рискнет приблизиться к нему слишком близко, рискуют быть поражены током или дезинтегрированы его мощной энергией. Эта аномалия - настоящая загадка Зоны, обладающая таким уровнем разумности, который не поддается никакому научному объяснению. Ее жуткие звуки и призрачное присутствие стали предметом многих мифов и легенд, что придает ей еще больше таинственности и ужаса.
+
+
+
+
+ «Жидкое золото»
+
+
+
+ • Название: %c[d_cyan]Жидкое золото%c[ui_gray_1]
+ \n• Тип: %c[d_orange]Химическая аномалия%c[ui_gray_1]
+ \n \n%c[d_green]Информация%c[ui_gray_1]
+ \nАномалия "Жидкое золото" - это очень опасная и мощная аномалия, которая испускает облако токсичного химического вещества оранжево-золотистого цвета. Ее часто считают сестрой-близнецом кислотной аномалии из-за схожего внешнего вида, но с гораздо более серьезными последствиями. При контакте с этим веществом у жертв быстро повышается температура тела, превышая даже показатели лихорадки. Темп и интенсивность этой реакции зависят от силы аномалии. Симптомы варьируются от сильного обезвоживания до мучительной смерти, вызванной тем, что кровь жертвы закипала. Токсичные химикаты также воздействуют на кожу жертвы, вызывая сильные ожоги, которые сначала могут быть небольшими и незаметными. Однако эти ожоги могут ухудшиться и привести к дальнейшим осложнениям, усугубляя и без того опасные для жизни симптомы аномалии. Химические вещества из ожогов также могут попасть в кровь, поражая внутренние органы организма и потенциально вызывая необратимые повреждения. Из-за высокотоксичной и смертельно опасной природы аномалии необходимо соблюдать крайнюю осторожность при встрече или обращении с ней. Необходимо всегда носить защитное снаряжение, а в случае контакта с аномалией следует немедленно обратиться за медицинской помощью. Аномалия "Жидкое золото" представляет собой серьезную угрозу, к которой следует подходить с максимальной осторожностью и осмотрительностью.
+
+
+
+
+ «Колючка»
+
+
+
+ • Название: %c[d_cyan]Колючка%c[ui_gray_1]
+ \n• Тип: %c[d_orange]физический\Химическая аномалия%c[ui_gray_1]
+ \n \n%c[d_green]Информация%c[ui_gray_1]
+ \n"Колючка" - это смертельно опасная аномалия, которая может активироваться в одно мгновение. Она выглядит как небольшое, ничем не примечательное пятно на земле, но при срабатывании быстро разрастается, показывая свою истинную природу. Её зазубренные, острые шипы угрожающе выступают над поверхностью, придавая ей смертоносную красоту. Самая большая опасность Колючки заключается не только в её смертоносных шипах, но и в её непредсказуемом характере. Она может быть спровоцирована любым раздражителем, включая звук, вибрацию или даже присутствие живых существ поблизости. Это делает её постоянной угрозой для любого сталкера, который рискнет подойти слишком близко. Что делает её еще более смертоносным, так это то, что шипы покрыты токсичным веществом, которое может вызвать тяжелые травмы или даже смерть. Как только потревожена, она выпускает шквал острых зазубренных шипов, которые разлетаются во все стороны, пронзая все на своем пути со страшной силой. Ядовитый характер шипов делает её еще более сложной преградой для сталкеров, пытающихся собрать ценные артефакты. Без надлежащей защиты или противоядия одно столкновение с шипами может оказаться смертельным. Несмотря на опасность, некоторые отважные сталкеры рискуют всем, чтобы заполучить артефакты, движимые обещанием богатства и славы. Но для этого нужны стальные нервы, молниеносные рефлексы и глубокие познания о поведении аномалии. Но даже в этом случае нет никаких гарантий выживания. В Зоне Колючка - символ опасностей, которые таятся за каждым углом. Она служит напоминанием о том, что как бы хорошо ни был подготовлен сталкер, он никогда не может знать, с какими опасностями ему придется столкнуться в постоянно меняющемся пейзаже Зоны.
+
+
+
+
+ «Семя»
+
+
+
+ • Название: %c[d_cyan]Семя%c[ui_gray_1]
+ \n• Тип: %c[d_orange]Химическая аномалия%c[ui_gray_1]
+ \n \n%c[d_green]Информация%c[ui_gray_1]
+ \nАномалия "Семя", загадочное и коварное явление, обладает изначальной опасностью, превосходящей опасности большинства аномалий, поскольку обладает способностью к размножению. Ее неуловимая натура и способность к размножению повышают уровень опасности, связанной с этим явлением, требуя особой осторожности от любого, кто осмелится приблизиться к ней. Эта аномальная структура проявляется в виде клубящейся массы светящихся частиц, напоминающих бесчисленные мельчайшие формы жизни, которые демонстрируют безупречную координацию и слаженность действий. Оркестрованные движения составляющих Аномалию "Семя" форм жизни свидетельствуют об удивительном уровне организации и интеллекта, которые при активации приводят к катаклизмическому эффекту. В определенных научных кругах преобладает мнение, что Аномалия "Семя" может представлять собой беспрецедентное проявление субатомных взаимодействий, неуловимую частицу или неизведанную силу природы, которую еще предстоит всесторонне изучить. Кроме того, существует множество предположений, что эта аномалия может быть проявлением новой фазы материи, до сих пор невиданной в мире природы. Опытные сталкеры даже сообщали, что наблюдали узоры и фигуры, образованные этими частицами, напоминающие сложные структуры, встречающиеся в природе, включая стаи птиц или косяки рыб. Поведение и цель жизненных форм внутри аномалии "Семя" остаются окутанными тайной, но их сложная координация предполагает наличие интеллекта, существенно отличающегося от того, что наблюдается в других аномалиях. При активации аномалия мгновенно высвобождает свои частицы во внезапном и мощном всплеске, разбрасывая их во все стороны с необычайной силой. Эти частицы обладают высоким уровнем радиоактивности, их выброс сопровождается пронзительным высокочастотным звуком, который разносится на большие расстояния. Опасность, связанная с аномалией "Семя", еще больше усиливается благодаря ее удивительной способности органично вписываться в окружающую среду, что делает ее обнаружение трудной задачей, пока не станет слишком поздно. Те, кому не повезло столкнуться с ее воздействием, страдают от ужасных последствий. Высокорадиоактивные частицы вызывают сильные ожоги и лучевую болезнь, а огромная сила взрыва может сбить человека с ног, нанеся ему тяжелые травмы. Дезориентирующее действие пронзительного выброса частиц усложняет ситуацию, препятствуя бегству тех, кто находится в непосредственной близости. Независимо от происхождения и потенциального применения, аномалия "Семя" остается притягательной загадкой, пленяющей воображение как научных умов, так и обычных людей. Ее необычные свойства и потенциальная польза вызывают бесконечное восхищение и дебаты, гарантируя, что исследования и поиски, связанные с этой аномалией, будут продолжаться еще долгие годы. В свете присущих ей опасностей к аномалии "Семя" нельзя относиться легкомысленно, и только те, кто обладает достаточной подготовкой, соответствующим оборудованием и всесторонними знаниями, должны осмелиться приблизиться к ней.
+
+
+
+
+ «Дребезги»
+
+
+
+ • Название: %c[d_cyan]Дребезги%c[ui_gray_1]
+ \n• Тип: %c[d_orange]Гравитационная аномалия%c[ui_gray_1]
+ \n \n%c[d_green]Информация%c[ui_gray_1]
+ \nОпасное и непредсказуемое явление, которое можно встретить в некоторых районах Зоны. Проявляется в виде скопления острых прозрачных осколков стекла, сцепленных с некой центральной точкой. Настоятельно рекомендуется избегать аномалии Дребезги, так как она несет верную смерть. Осколки, составляющие аномалию Дребезги, не являются стеклом естественного происхождения, а создаются в результате уникального поведения аномалии. Она обладает мощным гравитационным полем, которое притягивает мелкие элементы окружающей среды к своей центральной точке, и по мере притягивания они подвергаются воздействию экстремальных температур, что приводит к их быстрому нагреванию. Остатки предыдущего срабатывания вращаются вокруг нее, и когда их потревожат, они взрываются во вспышке энергии, которая из-за нестабильного гравитационного поля на короткое мгновение подвешивает их в воздухе, прежде чем все они внезапно притягиваются к центру аномалии, сливаясь воедино. Интенсивное тепло, плавящее осколки, сворачивает их в одну точку, после чего происходит резкое охлаждение, в результате которого точка рассыпается на миллионы крошечных кусочков, а гравитационное поле аномалии снова колеблется, и она взрывается, разбрасывая осколки во все стороны. Сталкеры должны проявлять крайнюю осторожность при приближении к аномалии Дребезги, так как она чрезвычайно остра и опасна и может причинить значительный вред любому, кто вступит с ней в контакт. Важно принять меры, чтобы защитить себя от разлетающегося стекла, если вам придется войти в ее окрестности.
+
+
+
+
+ «Ленивец»
+
+
+
+ • Название: %c[d_cyan]Ленивец%c[ui_gray_1]
+ \n• Тип: %c[d_orange]Химическая аномалия%c[ui_gray_1]
+ \n \n%c[d_green]Информация%c[ui_gray_1]
+ \nТак называемая аномалия "Ленивец" - крайне необычное и загадочное явление, представляющее значительную угрозу для любых организмов, вступающих с ней в контакт. После анализа ее наблюдаемых свойств можно предположить, что она представляет собой сложное и высокореактивное облако неизвестного химического состава. Одна из версий заключается в том, что аномалия "Ленивец" - это высокореактивная форма атмосферного загрязнения Зоны, состоящая из сложной смеси органических и неорганических соединений. Это может объяснить ядовитую природу аномалии, а также ее способность негативно влиять на биологические функции организмов, которые вступают с ней в контакт. В качестве альтернативы есть предположения, что Ленивец может быть разновидностью биоинженерного оружия, которое вступило в контакт с аномальными полями Зоны и стало извращаться по её воле. Вероятно, его создала какая-то неизвестная организация для использования в бою или шпионаже, так как это может объяснить высокоспецифичное и целенаправленное воздействие аномалии, а также ее очевидную способность сохраняться в окружающей среде в течение длительных периодов времени. Другая версия заключается в том, что это естественный побочный продукт необычной и часто непредсказуемой среды Зоны. Известно, что Зона порождает широкий спектр необычных и потенциально опасных явлений, включая аномалии, влияющие на физические и биологические функции организмов, которые вступают с ними в контакт. Возможно, что аномалия "Ленивец" - это просто еще один пример такого явления, естественное проявление странных и часто непредсказуемых сил, присущих этому загадочному месту. Независимо от своей глубинной природы, "Ленивец", несомненно, является очень опасным и потенциально смертельным явлением, которое требует осторожности всех, кто входит в Зону. Его способность препятствовать двигательным навыкам организмов, которые вступают с ним в контакт, свидетельствует о сложной и часто непредсказуемой природе сил, формирующих наш мир, и служит напоминанием об опасностях, которые таятся в неизведанных уголках Зоны.
+
+
+
+
+ «Мефистофель»
+
+
+
+ • Название: %c[d_cyan]Мефистофель%c[ui_gray_1]
+ \n• Тип: %c[d_orange]Электро-химическая аномалия%c[ui_gray_1]
+ \n \n%c[d_green]Информация%c[ui_gray_1]
+ \nМефистотель - редкая и загадочная аномалия, получившая свое название от демона-хитреца из средневекового фольклора. Аномалия выглядит как странное образование, похожее на цветок, с тонкими усиками, которые издают жуткий звук при приближении любого живого организма. Несмотря на свой манящий вид, Мефистотель чрезвычайно опасен для любого живого существа, которое рискнет приблизиться к нему слишком близко. Один из самых коварных аспектов Мефистотеля - то, что его внешний вид иногда можно принять за артефакт, очень ценный и востребованный в Зоне товар. Многие сталкеры-новички становились жертвами этого обмана, полагая, что наткнулись на редкий артефакт, но потом их затягивало в центр смертоносной аномалии, и они погибали. Как только жертва попадает в радиус действия Мефистотеля, ее почти мгновенно притягивает к его центру, будто какая-то невидимая сила. После втягивания жертву разрывает на части усиками аномалии, которые подобны острым лезвиям. Процесс происходит быстро и безжалостно, не оставляя шансов на спасение или выживание. Многие сталкеры, столкнувшиеся с Мефистотелем, рассказывают, что испытывают непреодолимое чувство ужаса и тревоги, когда сталкиваются с ним, но также говорят о его прекрасном внешнем виде и жутком звуке, который кажется почти гипнотическим, притягивая ничего не подозревающую добычу, которая быстро встречает свою погибель. Слухи и легенды об аномалии распространились среди сталкеров, причем некоторые считают, что Мефистотель, согласно передаваемой среди сталкеров истории, появляется только у тех, кем движет жадность и стремление к материальной выгоде. Говорят, что те, кто никогда ничего не желал от Зоны, никогда не видели аномалию и поэтому защищены от ее смертельной привлекательности. Некоторые даже верят, что Мефистотель может читать мысли и желания человека и открывается только тем, кого считает недостойным, заманивая их на смерть. Эта вера заставила многих сталкеров, видевших его, подходить к аномалии с осторожностью и почтением, опасаясь, что их собственная жадность может стать их погибелью.
+
+
+
+
+ «Сеть»
+
+
+
+ • Название: %c[d_cyan]Сеть%c[ui_gray_1]
+ \n• Тип: %c[d_orange]Гравитационная\Химическая аномалия%c[ui_gray_1]
+ \n \n%c[d_green]Информация%c[ui_gray_1]
+ \nАномалия "Сеть" представляет собой высокозаряженный поток частиц, которые ускоряются под действием гравитационных сил. Заряженные частицы создают электромагнитное поле, которое захватывает любой объект в радиусе своего действия, подобно невидимой сети. Частицы прилипают к поверхности захваченного объекта, образуя плотно сплетенную паутину, из которой бывает трудно вырваться. Это явление вызвано взаимодействием между заряженными частицами и электромагнитными силами внутри аномалии. Аномалия "Сеть" считается очень опасной, так как она может опутать живые организмы и причинить серьезный физический урон или смерть. Согласно слухам и легендам, бытующим среди сталкеров, аномалия "Сеть" была впервые обнаружена группой опытных ветеранов Зоны, которые исследовали эту местность в течение многих лет. Бродя по Зоне, они заметили странное электрическое возмущение в воздухе, а когда подошли ближе, их внезапно окутали заряженные частицы аномалии. Говорят, что сталкеры изо всех сил пытались вырваться из хватки "Сети", но оказались зажаты в ее тисках, не в силах освободиться. Пока они боролись, они видели призрачные фигуры других сталкеров, попавших в аномалию до них, тела которых медленно поглощались заряженными частицами. Аномалию боятся и почитают все сталкеры, решившиеся войти в Зону, а рассказы о ее смертельной хватке продолжают распространяться среди тех, кто осмеливается исследовать ее границы.
+
+
+
+
+ «Точка»
+
+
+
+ • Название: %c[d_cyan]Точка%c[ui_gray_1]
+ \n• Тип: %c[d_orange]Электрическая аномалия%c[ui_gray_1]
+ \n \n%c[d_green]Информация%c[ui_gray_1]
+ \nТочка - это электрический феномен, описывающийся как прозрачная и кристалловидная сфера, которая демонстрирует контроль над сферической областью электрически заряженной энергии. Сфера, по-видимому, отслеживает движение близлежащих объектов или людей, что свидетельствует об уровне осознанности и направленности действий. Источник электрической энергии внутри сферы не до конца понятен, но было замечено, что она взаимодействует с электрическими объектами, такими как батареи и конденсаторы, которые, по-видимому, заряжаются в непосредственной близости от нее. Однако из-за неизвестной природы этого взаимодействия настоятельно рекомендуется подходить к аномалии с осторожностью и применять надлежащие меры защиты. Несмотря на потенциальную опасность, некоторые смельчаки ищут аномалию в надежде воспользоваться ее силой. Ходили слухи о группе сталкеров, которые смогли извлечь из аномалии заряженную энергию для питания своих устройств, но ничем хорошим это не закончилось. История трагического инцидента произошла, когда группа сталкеров заблудилась где-то в Зоне, была глубокая ночь, их фонарики и КПК были разряжены, и они решили попытать счастья, заявив о способностях этой аномалии, чтобы выбраться из той части Зоны, пока их не разорвали мутанты. Когда группа сталкеров приблизилась к аномалии, они с волнением достали свои КПК и другие электрические устройства, надеясь зарядить их с помощью энергии, якобы излучаемой аномалией. Но по мере приближения они начали ощущать беспокойство. Кристаллизованная сфера, казалось, наблюдала за ними, а энергетический шар пульсировал зловещим свечением. Внезапно, с ослепительной вспышкой света, энергетический шар разрядился мощным потоком электричества. Преследователей отбросило назад, их тела исказились и корчились в агонии, когда электричество пронизывало их плоть. Их крики эхом разносились по Зоне, пока электричество пережигало нервные окончания и поджаривало внутренние органы. Спустя несколько дней другие сталкеры нашли их безжизненные тела, разбросанные вокруг аномалии, их плоть обуглилась и почернела от электрического разряда, а их устройства были полностью заряжены. Это было жуткое напоминание о смертоносной силе аномалии Точка и предупреждение всем, кто осмелится приблизиться к ней. Большинство сталкеров прислушались к этому предупреждению и держались подальше от аномалии, слишком хорошо зная о смертельных последствиях попыток искусить судьбу в Зоне.
+
+
+
+
+ «Отбойник»
+
+
+
+ • Название: %c[d_cyan]Отбойник%c[ui_gray_1]
+ \n• Тип: %c[d_orange]Гравитационная аномалия%c[ui_gray_1]
+ \n \n%c[d_green]Информация%c[ui_gray_1]
+ \n"Отбойник" - это редкая и загадочная гравитационная аномалия, которая проявляется как плотная концентрация нескольких силовых полей, образующих сферическую форму. Эти силовые поля взаимодействуют сложным образом, создавая гравитационное искажение, поэтому, когда движущийся объект приближается к сфере "Отбойника", он сталкивается с силовым полем, которое замедляет его и изменяет его траекторию. Этот эффект вызван искажением местной ткани пространства-времени, которое создает искривление, противодействующее движению объекта. В дополнение к своим защитным возможностям, "Отбойник" также может использоваться в наступательных целях опытными преследователями. Стратегически расположившись вблизи аномалии, опытные сталкеры могут использовать поле искажения, чтобы защититься от пуль или даже отклонить входящие снаряды в сторону врага. Этот прием требует точного выбора времени и точности прицеливания, но в руках опытного бойца он может стать разрушительным средством. Однако действие "Отбойника" не всегда предсказуемо, и неопытные сталкеры, пытающиеся использовать его, могут оказаться во власти непредсказуемой гравитационной силы. Кроме того, длительное воздействие искажающего поля "Отбойника" может негативно сказаться на здоровье и самочувствии преследователя, вызывая дезориентацию и тошноту. В целом, "Отбойник" является весьма востребованной аномалией среди сталкеров благодаря своим уникальным защитным и наступательным возможностям. Однако ее непредсказуемый характер и потенциальная опасность для здоровья делают ее опасной аномалией в использовании без должной подготовки и осторожности.
+
+
+
+
diff --git a/mods/Arrival/gamedata/configs/text/rus/ui_st_drx_da_mcm.xml b/mods/Arrival/gamedata/configs/text/rus/ui_st_drx_da_mcm.xml
new file mode 100644
index 00000000..1bf21f34
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/text/rus/ui_st_drx_da_mcm.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+ Arrival - Anomalies
+
+
+
+
+ Предустановки
+
+
+ Выберите предопределенные настройки из списка
+
+
+ Легко
+
+
+ Нормально
+
+
+ Тяжело
+
+
+
+ Шанс появления аномальной зоны
+
+
+ Шанс появления аномальной зоны на предопределенной местности
+
+
+
+ Радиус аномальной зоны
+
+
+ Максимальное расстояние от центра смарт террейна, допустимое для зоны аномалий
+
+
+
+ Минимальное расстояние между аномалиями
+
+
+ Определяет минимальное расстояние между аномалиями в зоне. Отрицательные значения позволяют аномалиям перекрывать друг друга.
+
+
+
+ Модификатор количества аномалий
+
+
+ Изменяет количество аномалий, которое может иметь каждая аномальная зона.
+
+
+
+ Максимальное количество артефактов на зону
+
+
+ Определяет максимальное количество артефактов, которые могут спауниться в аномальной зоне
+
+
+
+ Шанс появления артефактов
+
+
+ Каждый из определенного максимального количества артефактов будет иметь такой шанс на появление
+
+
+
+ Шанс случайного артефакта
+
+
+ Какие артефакты можно спаунить, определяется уровнем. Южные локации могут спаунить только слабые артефакты, в то время как подземные и северные локации могут спаунить сильные артефакты. Однако существует шанс, определяемый этим значением, что зона аномалий может спаунить любой артефакт, включая уникальные.
+
+
+
+ Модификатор гравитационного дрожания
+
+
+ Модификатор дрожания экрана вблизи гравитационных аномалий
+
+
+
+ Модификатор электрического поля
+
+
+ Модификатор повреждений от электрических полей. Не влияет на глюки электронных устройств
+
+
+
+ Включить динамическое поведение аномалий
+
+
+ Определяет, имеют ли динамические аномалии особое поведение, а именно могут ли они появляться и исчезать в аномальной зоне.
+
+
+
+ Сохранить игру после удаления аномалий
+
+
+ Сохраняет игру после выброса или пси-шторма после удаления аномалий
+
+
+
+ Отключить новые аномалии
+
+
+ Запрещает появление новых видов аномалий. Опция вступит в силу после следующего выброса или пси-шторма или в новой игре.
+
+
+
+ Ниже вы можете выборочно включить \n новые виды аномалий, которые могут спауниться
+
+
+
+ Включить
+
+
+ Включить
+
+
+ Включить
+
+
+ Включить
+
+
+ Включить
+
+
+ Включить
+
+
+ Включить
+
+
+ Включить
+
+
+ Включить
+
+
+ Включить
+
+
+ Включить
+
+
+ Включить
+
+
+ Включить
+
+
+
+ Удалить динамические аномалии
+
+
+ Удаляет все сгенерированные аномальные зоны из игры. Эта опция предназначена для безопасного удаления мода. Включите опцию, затем вернитесь в игру, сохраните игру, выйдите из игры и удалите мод.
+
+
+
+ Режим отладки
+
+
+ Включает спам сообщений в консоли
+
+
+
diff --git a/mods/Arrival/gamedata/configs/ui/textures_descr/ui_pda_encyclopedia_drx_da.xml b/mods/Arrival/gamedata/configs/ui/textures_descr/ui_pda_encyclopedia_drx_da.xml
new file mode 100644
index 00000000..2fbd3b07
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/ui/textures_descr/ui_pda_encyclopedia_drx_da.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/ui/ui_detector_artefact.xml b/mods/Arrival/gamedata/configs/ui/ui_detector_artefact.xml
new file mode 100644
index 00000000..1300ed86
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/ui/ui_detector_artefact.xml
@@ -0,0 +1,6698 @@
+
+
+
+
+ ui_temp_ad3_radar_glow
+
+
+
+
+ ui_temp_ad3_artefact
+
+
+
+ ui_temp_ad3_artefact
+
+
+
+
+
+
+ ui_temp_ad3_radar_glow
+
+
+
+
+ ui_inGame2_Detector_icon_acid_big
+
+
+ ui_inGame2_Detector_icon_acid_big
+
+
+ ui_inGame2_Detector_icon_acid_big
+
+
+
+ ui_inGame2_Detector_icon_acid_big
+
+
+ ui_inGame2_Detector_icon_acid_big
+
+
+ ui_inGame2_Detector_icon_acid_big
+
+
+
+ ui_inGame2_Detector_icon_acid_big
+
+
+ ui_inGame2_Detector_icon_acid_big
+
+
+ ui_inGame2_Detector_icon_acid_big
+
+
+
+ ui_inGame2_Detector_icon_electro_big
+
+
+ ui_inGame2_Detector_icon_electro_big
+
+
+ ui_inGame2_Detector_icon_electro_big
+
+
+
+ ui_inGame2_Detector_icon_electro_big
+
+
+ ui_inGame2_Detector_icon_electro_big
+
+
+ ui_inGame2_Detector_icon_electro_big
+
+
+
+ ui_inGame2_Detector_icon_electro_big
+
+
+ ui_inGame2_Detector_icon_electro_big
+
+
+ ui_inGame2_Detector_icon_electro_big
+
+
+
+ ui_inGame2_Detector_icon_gravity_big
+
+
+ ui_inGame2_Detector_icon_gravity_big
+
+
+ ui_inGame2_Detector_icon_gravity_big
+
+
+
+ ui_inGame2_Detector_icon_gravity_big
+
+
+
+ ui_inGame2_Detector_icon_fire_big
+
+
+ ui_inGame2_Detector_icon_fire_big
+
+
+ ui_inGame2_Detector_icon_fire_big
+
+
+
+ ui_inGame2_Detector_icon_fire_big
+
+
+ ui_inGame2_Detector_icon_fire_big
+
+
+ ui_inGame2_Detector_icon_fire_big
+
+
+
+ ui_inGame2_Detector_icon_fire_big
+
+
+ ui_inGame2_Detector_icon_fire_big
+
+
+ ui_inGame2_Detector_icon_fire_big
+
+
+
+
+ ui_inGame2_Detector_icon_gravity_big
+
+
+ ui_inGame2_Detector_icon_gravity_big
+
+
+ ui_inGame2_Detector_icon_gravity_big
+
+
+ ui_inGame2_Detector_icon_gravity_big
+
+
+ ui_inGame2_Detector_icon_gravity_big
+
+
+ ui_inGame2_Detector_icon_gravity_big
+
+
+
+ ui_inGame2_Detector_icon_gravity_big
+
+
+ ui_inGame2_Detector_icon_gravity_big
+
+
+ ui_inGame2_Detector_icon_acid_big
+
+
+ ui_inGame2_Detector_icon_acid_big
+
+
+ ui_inGame2_Detector_icon_acid_big
+
+
+ ui_inGame2_Detector_icon_electro_big
+
+
+ ui_inGame2_Detector_icon_gravity_big
+
+
+ ui_inGame2_Detector_icon_electro_big
+
+
+ ui_inGame2_Detector_icon_electro_big
+
+
+ ui_inGame2_Detector_icon_gravity_big
+
+
+ ui_inGame2_Detector_icon_gravity_big
+
+
+ ui_inGame2_Detector_icon_gravity_big
+
+
+ ui_inGame2_Detector_icon_gravity_big
+
+
+
+ ui_inGame2_Detector_icon_acid_big
+
+
+ ui_inGame2_Detector_icon_electro_big
+
+
+ ui_inGame2_Detector_icon_gravity_big
+
+
+ ui_inGame2_Detector_icon_gravity_big
+
+
+ ui_inGame2_Detector_icon_gravity_big
+
+
+ ui_inGame2_Detector_icon_fire_big
+
+
+ ui_inGame2_Detector_icon_fire_big
+
+
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+ ui_inGame2_Detector_icon_artefact
+
+
+
+
diff --git a/mods/Arrival/gamedata/configs/zones/zone_field_acidic.ltx b/mods/Arrival/gamedata/configs/zones/zone_field_acidic.ltx
new file mode 100644
index 00000000..d549bc05
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_field_acidic.ltx
@@ -0,0 +1,76 @@
+[zone_field_acidic]:zone_base_noshadow
+GroupControlSection = spawn_group_zone
+$def_sphere = 15
+;$prefetch = 16
+class = ZS_RADIO
+hit_impulse_scale = .01
+effective_radius = 1.00 ;размер радиуса в процентах от оригинального, где действует зона
+
+postprocess = alcohol
+
+ef_anomaly_type = 3
+ef_weapon_type = 15
+
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0
+attenuation = 0.5
+
+
+idle_particles = zones\zone_acidic_idle
+idle_particles_dont_stop = true
+
+;hit_small_particles =
+;hit_big_particles =
+;idle_small_particles =
+;idle_big_particles =
+
+idle_sound = anomaly\buzz_idle; bfuzz_blowout ;постоянный звук
+;blowout_sound = anomaly\buzz_hit; bfuzz_hit ;во время выброса(удара) в центре аномалии
+;hit_sound = anomaly\buzz_hit; bfuzz_hit ;на персонаже, когда тот получает хит
+;entrance_sound = anomaly\buzz_hit; bfuzz_hit ;при попадании объекта в аномалию
+
+
+hit_type = chemical_burn
+
+disable_time = -1 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = -1 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = -1 ;время отключения idle партиклов
+
+ignore_nonalive = true;
+ignore_small = false;
+ignore_artefacts = true
+
+blowout_light = off
+idle_light = off
+
+awaking_time = 100
+blowout_time = 300
+accamulate_time = 100
+
+blowout_wind = off
+
+shape_transp_color = 200, 200, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
+[zone_field_acidic_weak]:zone_field_acidic
+$spawn = "zones\field_acidic_weak"
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.1
+
+
+
+[zone_field_acidic_average]:zone_field_acidic
+$spawn = "zones\field_acidic_average"
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.1
+
+
+
+[zone_field_acidic_strong]:zone_field_acidic
+$spawn = "zones\field_acidic_strong"
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.1
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/zones/zone_field_psychic.ltx b/mods/Arrival/gamedata/configs/zones/zone_field_psychic.ltx
new file mode 100644
index 00000000..81b30f7f
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_field_psychic.ltx
@@ -0,0 +1,75 @@
+[zone_field_psychic]:zone_base
+GroupControlSection = spawn_group_zone
+$def_sphere = 15
+;$prefetch = 16
+class = ZS_RADIO
+hit_impulse_scale = .01
+effective_radius = 1.00 ;размер радиуса в процентах от оригинального, где действует зона
+postprocess = postprocess_psi
+
+ef_anomaly_type = 3
+ef_weapon_type = 15
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0
+attenuation = 0.5
+
+idle_particles = zones\zone_psychic_idle
+;blowout_particles =
+
+;hit_small_particles = damage_fx\burn_creatures
+;hit_big_particles = damage_fx\burn_creatures00
+;idle_small_particles = damage_fx\burn_creatures
+;idle_big_particles = damage_fx\burn_creatures00
+
+idle_particles_dont_stop = true;
+
+;idle_sound = ambient\fire2 ;iinoiyiiue caoe
+;blowout_sound = anomaly\zhar_blow ;ai a?aiy aua?ina(oaa?a) a oaio?a aiiiaeee
+;hit_sound = ambient\zhar ;ia ia?niia?a, eiaaa oio iieo?aao oeo
+;entrance_sound = ambient\zhar ;i?e iiiaaaiee iauaeoa a aiiiaee?
+
+hit_type = telepatic
+
+disable_time = -1 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = -1 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = -1 ;время отключения idle партиклов
+
+ignore_nonalive = true;
+ignore_small = false;
+ignore_artefacts = true
+
+blowout_light = off
+idle_light = off
+
+awaking_time = 100
+blowout_time = 800
+accamulate_time = 100
+
+blowout_wind = off
+
+shape_transp_color = 200, 200, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
+
+[zone_field_psychic_weak]:zone_field_psychic
+$spawn = "zones\field_psychic_weak"
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.2
+
+
+
+[zone_field_psychic_average]:zone_field_psychic
+$spawn = "zones\field_psychic_average"
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.55
+
+
+
+[zone_field_psychic_strong]:zone_field_psychic
+$spawn = "zones\field_psychic_strong"
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.9
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/zones/zone_field_radioactive.ltx b/mods/Arrival/gamedata/configs/zones/zone_field_radioactive.ltx
new file mode 100644
index 00000000..0e70efea
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_field_radioactive.ltx
@@ -0,0 +1,131 @@
+;--------------- Radiation Settings ------------------
+
+[zone_field_radioactive]:zone_base
+GroupControlSection = spawn_group_zone
+$def_sphere = 15
+;$prefetch = 16
+class = ZS_RADIO
+hit_impulse_scale = .01
+effective_radius = 1.00 ;the size of the radius as a percentage of the original, where the zone is in effect
+postprocess = postprocess_rad
+
+ef_anomaly_type = 3
+ef_weapon_type = 15
+
+; ===== Zone Base ======
+idle_light_volumetric = false
+idle_light_shadow = false
+pick_dof_effector = false
+idle_light_r1 = false
+
+; ===== Anomaly settings ======
+max_start_power = 0
+attenuation = 0.5
+
+hit_type = radiation
+
+disable_time = -1 ;time to ignore an inanimate object in the zone (-1 if not needed)
+disable_time_small = -1 ;time to ignore small inanimate object in the zone (-1 if not needed)
+disable_idle_time = -1 ;time to disable idle particles
+
+ignore_nonalive = true;
+ignore_small = false;
+ignore_artefacts = true
+
+blowout_light = off
+idle_light = off
+
+awaking_time = 100
+blowout_time = 100
+accamulate_time = 100
+
+blowout_wind = off
+
+shape_transp_color = 200, 200, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
+;########################################################
+[zone_field_radioactive_very_weak]:zone_field_radioactive
+$spawn = "zones\field_radioactive_very_weak"
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.015
+
+;########################################################
+[zone_field_radioactive_weak]:zone_field_radioactive
+$spawn = "zones\field_radioactive_weak"
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.020
+
+;########################################################
+[zone_field_radioactive_below_average]:zone_field_radioactive
+$spawn = "zones\field_radioactive_below_average"
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.025
+
+;########################################################
+[zone_field_radioactive_average]:zone_field_radioactive
+$spawn = "zones\field_radioactive_average"
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.030
+
+;########################################################
+[zone_field_radioactive_above_average]:zone_field_radioactive
+$spawn = "zones\field_radioactive_above_average"
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.035
+
+;########################################################
+[zone_field_radioactive_strong]:zone_field_radioactive
+$spawn = "zones\field_radioactive_strong"
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.040
+
+;########################################################
+[zone_field_radioactive_lethal]:zone_field_radioactive
+$spawn = "zones\field_radioactive_lethal"
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.045
+
+
+
+
+[zone_radioactive]:zone_field_radioactive
+GroupControlSection = spawn_group_zone
+$def_sphere = 1
+class = ZS_RADIO
+attenuation = 0.1
+
+[zone_radioactive_very_weak]:zone_radioactive
+$spawn = "zones\mp\radioactive_very_weak"
+max_start_power = 0.0091
+
+[zone_radioactive_weak]:zone_radioactive
+$spawn = "zones\mp\radioactive_weak"
+max_start_power = 0.015
+
+[zone_radioactive_below_average]:zone_radioactive
+$spawn = "zones\mp\radioactive_below_average"
+max_start_power = 0.020
+
+[zone_radioactive_average]:zone_radioactive
+$spawn = "zones\mp\radioactive_average"
+max_start_power = 0.025
+
+[zone_radioactive_above_average]:zone_radioactive
+$spawn = "zones\mp\radioactive_above_average"
+max_start_power = 0.030
+
+[zone_radioactive_strong]:zone_radioactive
+$spawn = "zones\mp\radioactive_strong"
+max_start_power = 0.040
+
+[zone_radioactive_lethal]:zone_radioactive
+$spawn = "zones\mp\radioactive_lethal"
+max_start_power = 0.70
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/zones/zone_field_thermal.ltx b/mods/Arrival/gamedata/configs/zones/zone_field_thermal.ltx
new file mode 100644
index 00000000..c26c61fd
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_field_thermal.ltx
@@ -0,0 +1,77 @@
+[zone_field_thermal]:zone_base
+GroupControlSection = spawn_group_zone
+$def_sphere = 15
+;$prefetch = 16
+class = ZS_RADIO
+hit_impulse_scale = .01
+effective_radius = 1.00 ;размер радиуса в процентах от оригинального, где действует зона
+postprocess = postprocess_thermal
+
+ef_anomaly_type = 3
+ef_weapon_type = 15
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0
+attenuation = 0.5
+
+idle_particles = zones\zone_thermal_idle
+;blowout_particles =
+
+;hit_small_particles = damage_fx\burn_creatures
+;hit_big_particles = damage_fx\burn_creatures00
+;idle_small_particles = damage_fx\burn_creatures
+;idle_big_particles = damage_fx\burn_creatures00
+
+idle_particles_dont_stop = true;
+
+idle_sound = ambient\fire2 ;iinoiyiiue caoe
+;blowout_sound = anomaly\zhar_blow ;ai a?aiy aua?ina(oaa?a) a oaio?a aiiiaeee
+;hit_sound = ambient\zhar ;ia ia?niia?a, eiaaa oio iieo?aao oeo
+;entrance_sound = ambient\zhar ;i?e iiiaaaiee iauaeoa a aiiiaee?
+
+
+hit_type = light_burn
+
+disable_time = -1 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = -1 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = -1 ;время отключения idle партиклов
+
+ignore_nonalive = true;
+ignore_small = false;
+ignore_artefacts = true
+
+blowout_light = off
+idle_light = off
+
+awaking_time = 100
+blowout_time = 300
+accamulate_time = 100
+
+blowout_wind = off
+
+shape_transp_color = 200, 200, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
+
+
+[zone_field_thermal_weak]:zone_field_thermal
+$spawn = "zones\field_thermal_weak"
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.1
+
+
+
+[zone_field_thermal_average]:zone_field_thermal
+$spawn = "zones\field_thermal_average"
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.1
+
+
+
+[zone_field_thermal_strong]:zone_field_thermal
+$spawn = "zones\field_thermal_strong"
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.1
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/zones/zone_mine_acidic.ltx b/mods/Arrival/gamedata/configs/zones/zone_mine_acidic.ltx
new file mode 100644
index 00000000..bcab9697
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_mine_acidic.ltx
@@ -0,0 +1,184 @@
+[zone_mine_acidic]:zone_base
+GroupControlSection = spawn_group_zone
+$def_sphere = 2
+$prefetch = 16
+class = ZS_MBALD
+
+hit_impulse_scale = 0.0
+effective_radius = 1.0 ;размер радиуса в процентах от оригинального, где действует зона
+
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+postprocess = postprocess_acidic_mine
+
+
+;----------- Anomaly settings -----------------------
+max_start_power = 1.00
+attenuation = 1
+
+idle_particles = semitone\anomalies\acidic\acidic_mine_idle
+blowout_particles = semitone\anomalies\acidic\acidic_mine_hit
+
+;hit_small_particles = semitone\anomalies\acidic\acidic_mine_hit
+;hit_big_particles = semitone\anomalies\acidic\acidic_mine_hit
+;idle_small_particles = semitone\anomalies\acidic\acidic_mine_idle
+;idle_big_particles = semitone\anomalies\acidic\acidic_mine_idle
+
+idle_sound = semitone\anomalies\acidic\acidic_idle ; bfuzz_blowout ;постоянный звук
+blowout_sound = semitone\anomalies\acidic\acidic_hit ;во время выброса(удара) в центре аномалии
+hit_sound = semitone\anomalies\acidic\acidic_hit ;на персонаже, когда тот получает хит
+entrance_sound = semitone\anomalies\acidic\acidic_hit ;при попадании объекта в аномалию
+
+hit_type = chemical_burn
+
+disable_time = 10000 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = -1 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 50000 ;время отключения idle партиклов
+
+ignore_nonalive = false
+ignore_small = false
+ignore_artefacts = false
+
+blowout_light = on
+light_color = 1.1,1.7,1.4
+light_animation = light_green_01
+light_range = 7.0
+light_time = 0.35
+light_height = 0.75 ;подъем источника света на высоту
+
+
+idle_light = on
+idle_light_shadow = false
+idle_light_range = 4.0
+idle_light_anim = light_green_02
+idle_light_height = 0.75 ;подъем источника света на высоту
+
+awaking_time = 100
+blowout_time = 1400
+accamulate_time = 300
+
+blowout_wind = off
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 600
+blowout_wind_time_end = 899
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
+
+[zone_mine_acidic_weak]:zone_mine_acidic
+$spawn = "zones\mine_acidic_weak"
+max_start_power = 0.2
+attenuation = 1
+use_secondary_hit = true
+secondary_hit_power = 0.005
+
+[zone_mine_acidic_average]:zone_mine_acidic
+$spawn = "zones\mine_acidic_average"
+max_start_power = 0.2
+attenuation = 1
+use_secondary_hit = true
+secondary_hit_power = 0.005
+
+[zone_mine_acidic_strong]:zone_mine_acidic
+$spawn = "zones\mine_acidic_strong"
+max_start_power = 0.2
+attenuation = 1
+use_secondary_hit = true
+secondary_hit_power = 0.005
+
+[zone_mine_acidic_big]:zone_mine_acidic
+$spawn = "zones\scenes\mine_acidic_big"
+
+;----------- Anomaly settings -----------------------
+$def_sphere = 7.5
+max_start_power = 1
+
+idle_particles = semitone\anomalies\acidic\acidic_mine_idle
+blowout_particles = semitone\anomalies\acidic\acidic_mine_hit
+
+hit_small_particles =
+hit_big_particles =
+idle_small_particles =
+idle_big_particles =
+entrance_small_particles =
+entrance_big_particles =
+
+awaking_time = 7000
+blowout_time = 1000
+accamulate_time = 1000
+
+idle_sound = semitone\anomalies\acidic\acidic_idle
+blowout_sound = semitone\anomalies\acidic\acidic_hit
+hit_sound = semitone\anomalies\acidic\acidic_hit
+entrance_sound = semitone\anomalies\acidic\acidic_hit
+
+blowout_light = on
+light_color = 1.1,1.7,1.4
+light_animation = light_green_01
+light_range = 7.0
+light_time = 0.35
+light_height = 0.75 ;подъем источника света на высоту
+
+
+idle_light = on
+idle_light_shadow = false
+idle_light_range = 4.0
+idle_light_anim = light_green_02
+idle_light_height = 0.75 ;подъем источника света на высоту
+
+[zone_mine_chemical]:zone_base
+idle_light = on
+idle_light_shadow = on
+idle_particles = anomaly2\studen_idle_bottom
+blowout_particles = anomaly2\studen_blowout
+
+hit_small_particles = anomaly2\studen_idle_bottom_00
+hit_big_particles = anomaly2\studen_idle_bottom_00
+idle_small_particles = anomaly2\studen_idle_bottom_00
+idle_big_particles = anomaly2\studen_idle_bottom_00
+
+
+[zone_mine_chemical_weak]:zone_mine_acidic_weak, zone_mine_chemical
+$spawn = "zones\scenes\mine_chemical_weak"
+
+
+[zone_mine_chemical_average]:zone_mine_acidic_average, zone_mine_chemical
+$spawn = "zones\scenes\mine_chemical_average"
+
+
+[zone_mine_chemical_strong]:zone_mine_acidic_strong, zone_mine_chemical
+$spawn = "zones\scenes\mine_chemical_strong"
+
+
+
+[zone_buzz]:zone_mine_acidic
+postprocess = postprocess_flame
+max_start_power = 1.00
+
+idle_light = on
+
+idle_particles = anomaly2\studen_idle_bottom
+blowout_particles = anomaly2\studen_blowout
+
+hit_small_particles = anomaly2\studen_idle_bottom_00
+hit_big_particles = anomaly2\studen_idle_bottom_00
+idle_small_particles = anomaly2\studen_idle_bottom_00
+idle_big_particles = anomaly2\studen_idle_bottom_00
+
+
+[zone_buzz_weak]:zone_buzz
+$spawn = "zones\mp\buzz_weak"
+max_start_power = 0.15
+
+[zone_buzz_average]:zone_buzz
+$spawn = "zones\mp\buzz_average"
+max_start_power = 0.50
+
+[zone_buzz_strong]:zone_buzz
+$spawn = "zones\mp\buzz_strong"
+max_start_power = 1.00
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/zones/zone_mine_cdf.ltx b/mods/Arrival/gamedata/configs/zones/zone_mine_cdf.ltx
new file mode 100644
index 00000000..e5781869
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_mine_cdf.ltx
@@ -0,0 +1,68 @@
+[zone_mine_cdf]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones_eugenium\zone_mine_cdf"
+$def_sphere = 2
+$prefetch = 16
+class = ZS_MBALD
+
+hit_impulse_scale = 0.0
+effective_radius = 1.0 ;размер радиуса в процентах от оригинального, где действует зона
+
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+postprocess = postprocess_thermal_mine
+
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.60
+attenuation = 1
+
+idle_particles = semitone\anomalies\cdf\cdf_idle
+blowout_particles = semitone\anomalies\cdf\cdf_blowout
+
+hit_small_particles = ;semitone\anomalies\cdf\cdf_blowout
+hit_big_particles = ;semitone\anomalies\cdf\cdf_blowout
+idle_small_particles =
+idle_big_particles =
+entrance_small_particles = ;
+entrance_big_particles = ;semitone\anomalies\cdf\cdf_blowout
+
+idle_sound = semitone\anomalies\cdf\cdf_idle
+blowout_sound = semitone\anomalies\cdf\cdf_blowout
+hit_sound = semitone\anomalies\cdf\cdf_blowout
+entrance_sound = semitone\anomalies\cdf\cdf_blowout
+
+blowout_light = off
+light_color = 0.8,0.9,1
+light_range = 30.0
+light_time = 1;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+idle_light = off
+
+hit_type = telepatic
+
+disable_time = 50 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 500 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;время отключения idle партиклов
+
+awaking_time = 100
+blowout_time = 100
+accamulate_time = 1500
+
+ignore_nonalive = false
+ignore_small = false
+ignore_artefacts = true
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = off
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 150
+blowout_wind_time_end = 299
+blowout_wind_power = 0.2 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/zones/zone_mine_electric.ltx b/mods/Arrival/gamedata/configs/zones/zone_mine_electric.ltx
new file mode 100644
index 00000000..8de50bdc
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_mine_electric.ltx
@@ -0,0 +1,130 @@
+[zone_mine_electric]:zone_base
+GroupControlSection = spawn_group_zone
+$def_sphere = 2
+$prefetch = 16
+class = ZS_MBALD
+
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+postprocess = postprocess_electra_mine
+
+
+
+hit_impulse_scale = 0.0
+effective_radius = 1.0
+
+;----------- Anomaly settings -----------------------
+max_start_power = 1.00
+attenuation = 1
+
+awaking_time = 50
+accamulate_time = 10000
+blowout_time = 30000
+
+idle_particles = semitone\anomalies\electra\electra_idle
+blowout_particles = semitone\anomalies\electra\electra_blowout
+
+hit_small_particles = anomaly2\electra_entrance_small
+hit_big_particles = anomaly2\electra_damage_02_smoke
+idle_small_particles = anomaly2\electra_damage_01_smoke
+idle_big_particles = anomaly2\electra_damage_02_smoke
+entrance_small_particles = anomaly2\electra_entrance_small
+entrance_big_particles = anomaly2\emi_entrance_big_00
+
+idle_sound = semitone\anomalies\electra\electra_idle
+blowout_sound = semitone\anomalies\electra\electra_blowout
+hit_sound = semitone\anomalies\electra\electra_hit
+entrance_sound = semitone\anomalies\electra\electra_hit
+
+blowout_light = on
+light_color = 0.8,0.9,1
+light_range = 30.0
+light_time = 1;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+idle_light = on
+idle_light_shadow = true
+idle_light_range = 3.0
+idle_light_anim = koster_01_electra
+idle_light_height = 0.75 ;подъем источника света на высоту
+
+hit_type = shock
+
+disable_time = 50 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 500 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;время отключения idle партиклов
+
+awaking_time = 100
+blowout_time = 100
+accamulate_time = 1500
+
+ignore_nonalive = false
+ignore_small = false
+ignore_artefacts = true
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = off
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 150
+blowout_wind_time_end = 299
+blowout_wind_power = 0.2 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
+
+[zone_mine_electric_weak]:zone_mine_electric
+$spawn = "zones\mine_electric_weak"
+max_start_power = 0.5
+
+
+[zone_mine_electric_average]:zone_mine_electric
+$spawn = "zones\mine_electric_average"
+max_start_power = 0.6
+
+
+[zone_mine_electric_strong]:zone_mine_electric
+$spawn = "zones\mine_electric_strong"
+max_start_power = 0.8
+
+
+
+[zone_mine_static]:zone_base
+postprocess = postprocess_electra_mine
+idle_particles = semitone\anomalies\electra\electra_idle
+
+
+[zone_mine_static_weak]:zone_mine_electric_weak, zone_mine_static
+$spawn = "zones\scenes\mine_static_weak"
+
+
+[zone_mine_static_average]:zone_mine_electric_average, zone_mine_static
+$spawn = "zones\scenes\mine_static_average"
+
+
+[zone_mine_static_strong]:zone_mine_electric_strong, zone_mine_static
+$spawn = "zones\scenes\mine_static_strong"
+
+
+
+[zone_witches_galantine]:zone_mine_electric
+postprocess = postprocess_electra
+idle_particles = semitone\anomalies\electra\electra_idle
+
+
+[zone_witches_galantine_weak]:zone_witches_galantine
+$spawn = "zones\mp\witches_galantine_weak"
+max_start_power = 0.50
+
+
+[zone_witches_galantine_average]:zone_witches_galantine
+$spawn = "zones\mp\witches_galantine_average"
+max_start_power = 1.20
+
+
+[zone_witches_galantine_strong]:zone_witches_galantine
+$spawn = "zones\mp\witches_galantine_strong"
+max_start_power = 2.00
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/zones/zone_mine_flash.ltx b/mods/Arrival/gamedata/configs/zones/zone_mine_flash.ltx
new file mode 100644
index 00000000..2a04d511
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_mine_flash.ltx
@@ -0,0 +1,75 @@
+[zone_mine_flash]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones_eugenium\zone_mine_flash"
+$def_sphere = 3
+$prefetch = 16
+class = ZS_MBALD ;---CMosquitoBald
+hit_impulse_scale = 0.3;0.5 ;0.1
+effective_radius = 1.0 ;размер радиуса в процентах от оригинального, где действует зона
+actor_blowout_radius_percent = 0.75
+
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+postprocess = postprocess_electra_mine
+
+hit_type = shock
+
+;----------- Anomaly settings -----------------------
+max_start_power = 1
+attenuation = 1
+
+idle_particles = semitone\anomalies\flash\flash_idle
+blowout_particles = semitone\anomalies\flash\flash_blowout
+
+hit_small_particles = semitone\anomalies\flash\flash_blowout
+hit_big_particles = semitone\anomalies\flash\flash_blowout
+idle_small_particles =
+idle_big_particles =
+entrance_small_particles = semitone\anomalies\flash\flash_shield
+entrance_big_particles = semitone\anomalies\flash\flash_shield
+
+idle_sound = semitone\anomalies\flash\flash_idle ;постоянный звук
+blowout_sound = semitone\anomalies\flash\flash_blowout ; anomaly_gravy_blast01 ;во время выброса(удара) в центре аномалии
+hit_sound = semitone\anomalies\flash\flash_shield ;на персонаже, когда тот получает хит
+entrance_sound = semitone\anomalies\flash\flash_shield ;при попадании объекта в аномалию
+
+
+awaking_time = 50;100
+blowout_time = 500
+accamulate_time = 60000 ;10;200
+
+blowout_light_time = 200
+blowout_explosion_time = 200
+blowout_particles_time = 200
+blowout_sound_time = 100
+
+disable_time = 5000 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 5000 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;время отключения idle партиклов
+
+ignore_nonalive = false
+ignore_small = true
+ignore_artefacts = true
+
+blowout_light = on
+light_color = 0.5,0.4,0.3
+light_range = 30.0
+light_time = 0.9;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+
+idle_light = off
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = on
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 300
+blowout_wind_time_end = 501; 899
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/zones/zone_mine_ghost.ltx b/mods/Arrival/gamedata/configs/zones/zone_mine_ghost.ltx
new file mode 100644
index 00000000..ac8d2653
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_mine_ghost.ltx
@@ -0,0 +1,80 @@
+[zone_mine_ghost]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones_eugenium\zone_mine_ghost"
+$def_sphere = 3
+$prefetch = 16
+class = ZS_MBALD ;---CMosquitoBald
+hit_impulse_scale = 0.3;0.5 ;0.1
+effective_radius = 1.0 ;размер радиуса в процентах от оригинального, где действует зона
+actor_blowout_radius_percent = 0.75
+
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+postprocess = postprocess_electra_mine
+
+hit_type = shock
+
+;----------- Anomaly settings -----------------------
+max_start_power = 1
+attenuation = 1
+
+idle_particles = semitone\anomalies\ghost\ghost_idle
+blowout_particles = semitone\anomalies\ghost\ghost_blowout
+
+hit_small_particles =
+hit_big_particles =
+idle_small_particles =
+idle_big_particles =
+entrance_small_particles =
+entrance_big_particles =
+
+idle_sound = semitone\anomalies\ghost\ghost_idle ;постоянный звук
+blowout_sound = semitone\anomalies\ghost\ghost_blowout ; anomaly_gravy_blast01 ;во время выброса(удара) в центре аномалии
+hit_sound = semitone\anomalies\ghost\ghost_blowout ;на персонаже, когда тот получает хит
+entrance_sound = semitone\anomalies\silence ;при попадании объекта в аномалию
+
+
+awaking_time = 50;100
+blowout_time = 500
+accamulate_time = 1000 ;10;200
+
+blowout_light_time = 200
+blowout_explosion_time = 200
+blowout_particles_time = 200
+blowout_sound_time = 100
+
+disable_time = 5000 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 5000 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;время отключения idle партиклов
+
+ignore_nonalive = false
+ignore_small = true
+ignore_artefacts = true
+
+blowout_light = on
+light_color = 0.5,0.4,0.3
+light_range = 30.0
+light_time = 0.9;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+
+idle_light = off
+idle_light_anim = light_green_02
+light_color = 1.4,1.6,1.3
+idle_light_shadow = true
+idle_light_range = 2.8
+idle_light_height = 0.8 ;подъем источника света на высоту
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = on
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 300
+blowout_wind_time_end = 501; 899
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/zones/zone_mine_gold.ltx b/mods/Arrival/gamedata/configs/zones/zone_mine_gold.ltx
new file mode 100644
index 00000000..0fc855ef
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_mine_gold.ltx
@@ -0,0 +1,72 @@
+[zone_mine_gold]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones_eugenium\zone_mine_gold"
+$def_sphere = 2
+$prefetch = 16
+class = ZS_MBALD
+
+hit_impulse_scale = 0.0
+effective_radius = 1.0 ;размер радиуса в процентах от оригинального, где действует зона
+
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+postprocess = postprocess_orange
+
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.8
+attenuation = 1
+
+idle_particles = semitone\anomalies\gold\gold_idle
+blowout_particles = semitone\anomalies\gold\gold_blowout
+
+hit_small_particles =
+hit_big_particles =
+idle_small_particles =
+idle_big_particles =
+entrance_small_particles =
+entrance_big_particles =
+
+idle_sound = semitone\anomalies\gold\gold_idle ;постоянный звук
+blowout_sound = semitone\anomalies\gold\gold_blowout ;во время выброса(удара) в центре аномалии
+hit_sound = semitone\anomalies\silence ;на персонаже, когда тот получает хит
+entrance_sound = semitone\anomalies\silence ;при попадании объекта в аномалию
+
+hit_type = chemical_burn
+
+disable_time = 10000 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 1000 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 50000 ;время отключения idle партиклов
+
+ignore_nonalive = false
+ignore_small = false
+ignore_artefacts = true
+
+blowout_light = off
+light_color = 1.1,1.7,1.4
+light_animation = light_green_01
+light_range = 7
+light_time = 0.35
+light_height = 0.75 ;подъем источника света на высоту
+
+
+idle_light = off
+idle_light_range = 3.0
+idle_light_anim = light_green_02
+idle_light_height = 0.70 ;подъем источника света на высоту
+
+awaking_time = 100
+blowout_time = 1400
+accamulate_time = 300
+
+blowout_wind = off
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 600
+blowout_wind_time_end = 899
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/zones/zone_mine_gravitational.ltx b/mods/Arrival/gamedata/configs/zones/zone_mine_gravitational.ltx
new file mode 100644
index 00000000..27860264
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_mine_gravitational.ltx
@@ -0,0 +1,289 @@
+[zone_mine_gravitational_strong]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones\mine_gravitational_strong"
+$def_sphere = 4
+$prefetch = 16
+class = ZS_MINCE ;--CMincer
+
+ef_anomaly_type = 2
+ef_weapon_type = 14
+
+postprocess = postprocess_gravi_mine
+
+;----------- Anomaly settings -----------------------;
+max_start_power = 1.6
+attenuation = 1
+
+idle_particles = semitone\anomalies\gravitational_strong\gravitational_strong_idle
+awake_particles = semitone\anomalies\gravitational_strong\gravitational_strong_awake
+;accum_particles = anomaly2\gravi_zaxvat_myasorubka
+blowout_particles = semitone\anomalies\gravitational_strong\gravitational_strong_blowout
+
+tearing_particles = semitone\anomalies\gravitational_strong\gravitational_strong_blood_splash
+torn_particles = semitone\anomalies\gravitational_strong\gravitational_strong_blood_splash
+
+idle_small_particles = anomaly2\gravity_damage_01_smoke
+idle_big_particles = anomaly2\gravity_damage_02_blood2
+hit_small_particles = hit_fx\hit_metal_02
+hit_big_particles = anomaly2\gravity_damage_02_blood2
+
+entrance_small_particles = semitone\anomalies\gravitational_strong\gravitational_strong_shield
+entrance_big_particles = anomaly2\gravi_anomaly_00;
+
+tele_particles_small = anomaly2\gravity_damage_01_smoke
+tele_particles_big = anomaly2\gravity_damage_02_smoke
+
+idle_sound = semitone\anomalies\gravitational_strong\gravitational_strong_idle
+awake_sound = semitone\anomalies\gravitational_strong\gravitational_strong_shield
+accum_sound = anomaly\gravi_idle01
+blowout_sound = semitone\anomalies\gravitational_strong\gravitational_strong_blowout
+
+hit_sound = semitone\anomalies\gravitational_strong\gravitational_strong_shield
+entrance_sound = semitone\anomalies\gravitational_strong\gravitational_strong_shield
+body_tearing_sound = anomaly\anomaly_body_tear_1
+
+hit_type = strike
+hit_impulse_scale = 0.1
+effective_radius = 1.0
+
+disable_time = -1
+disable_time_small = -1
+disable_idle_time = 100
+
+ignore_nonalive = false
+ignore_small = true
+ignore_artefacts = true
+
+blowout_light = off
+light_color = 1.4,1.6,1.3
+light_range = 20.0
+light_time = 0.38 ;0.35
+light_height = 1.5
+
+idle_light = off
+
+awaking_time = 50
+blowout_time = 10000
+accamulate_time = 4000
+
+blowout_particles_time = 50
+blowout_sound_time = 100
+blowout_light_time = 5988
+blowout_explosion_time = 5999
+
+;параметры телекинеза для зоны
+throw_in_impulse = 4000 ;сила втягивания для единичной массы на расстоянии один метр
+throw_out_impulse = 1500 ;сила выбрасывания взрывом
+throw_in_impulse_alive = 600 ;сила импульса втягивания для живых
+throw_in_atten = 1.2 ;3;коэфф. затягивания (чем меньше, тем плавнее затягивает)
+blowout_radius_percent = 0.6 ;радиус (в процентах от всего радиуса) непосредственно выброса
+actor_blowout_radius_percent = 0.6
+tele_height = 10 ;1.5 ;высота подъема телекинеза
+time_to_tele = 7000 ;время деражания объекта в воздухе
+tele_pause = 4000 ;пауза перед тем как снова поднять упавший объект
+
+;; ветер
+blowout_wind = on
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 5900
+blowout_wind_time_end = 10000;9999
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
+
+[zone_mine_gravitational_average]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones\mine_gravitational_average"
+$def_sphere = 4
+$prefetch = 16
+class = ZS_GALAN ;--CMincer
+
+ef_anomaly_type = 5
+ef_weapon_type = 17
+
+postprocess = postprocess_gravi_mine
+
+
+;----------- Anomaly settings -----------------------
+max_start_power = 1.00
+attenuation = 1
+
+
+idle_particles = semitone\anomalies\gravitational_average\gravitational_average_idle
+blowout_particles = semitone\anomalies\gravitational_average\gravitational_average_blowout
+tearing_particles = semitone\anomalies\gravitational_average\gravitational_average_blood_splash
+torn_particles = anomaly2\body_tear_01
+
+hit_small_particles = semitone\anomalies\gravitational_average\gravitational_average_shield
+hit_big_particles = anomaly2\gravity_damage_02_blood2
+idle_small_particles = anomaly2\gravity_damage_01_smoke
+idle_big_particles = anomaly2\gravity_damage_02_smoke
+entrance_small_particles = semitone\anomalies\gravitational_average\gravitational_average_shield
+entrance_big_particles = anomaly2\gravi_anomaly_00;
+
+tele_particles_small = anomaly2\gravity_damage_01_smoke ;anomaly2\gravity_damage_01_smoke
+tele_particles_big = anomaly2\gravity_damage_02_smoke
+
+
+idle_sound = semitone\anomalies\gravitational_average\gravitational_average_idle ;постоянный звук
+blowout_sound = semitone\anomalies\gravitational_average\gravitational_average_blowout ;во время выброса(удара) в центре аномалии
+hit_sound = semitone\anomalies\gravitational_strong\gravitational_strong_shield ;на персонаже, когда тот получает хит
+body_tearing_sound = anomaly\anomaly_body_tear_1 ;звук разрывания трупа
+entrance_sound = semitone\anomalies\gravitational_strong\gravitational_strong_shield ;при попадании объекта в аномалию
+
+hit_type = strike
+hit_impulse_scale = 0.02;0.5;0.1 ;соотношение физического импульса и силы хита
+effective_radius = 1.0 ;размер радиуса в процентах от оригинального, где действует зона
+
+disable_time = 5000 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 500 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;-1 ;время отключения idle партиклов
+
+ignore_nonalive = false
+ignore_small = true
+ignore_artefacts = true
+
+blowout_light = off
+light_color = 1.4,1.6,1.3
+light_range = 30.0
+light_time = 0.8;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+idle_light = off
+
+awaking_time = 300;1000
+blowout_time = 2500
+accamulate_time = 1000
+
+
+blowout_light_time = 2100
+blowout_explosion_time = 2100
+
+;параметры телекинеза для зоны
+throw_in_impulse = 2000;3000;4000 ;сила импульса втягивания (для тела 100кг)
+throw_out_impulse = 4000; ;сила выбрасывания взрывом
+throw_in_impulse_alive = 1000;600 800 ;сила импульса втягивания для живых
+throw_in_atten = 2;8 ;коэфф. затягивания (чем меньше, тем плавнее затягивает)
+blowout_radius_percent = 0.8 ;радиус (в процентах от всего радиуса) непосредственно выброса
+actor_blowout_radius_percent= 0.5
+
+tele_height = 0.05; 3.5 ;высота подъема телекинеза
+time_to_tele = 5000 ;время деражания объекта в воздухе
+tele_pause = 5000 ;пауза перед тем как снова поднять упавший объект
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = on
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 1500
+blowout_wind_time_end = 2501; 2499
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
+
+
+
+
+[zone_mine_gravitational_weak]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones\mine_gravitational_weak"
+$def_sphere = 3
+$prefetch = 16
+class = ZS_MBALD ;---CMosquitoBald
+hit_impulse_scale = 0.3;0.5 ;0.1
+effective_radius = 1.0 ;размер радиуса в процентах от оригинального, где действует зона
+actor_blowout_radius_percent = 0.75
+
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+postprocess = postprocess_gravi_mine
+
+hit_type = strike
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.85
+attenuation = 1
+
+idle_particles = semitone\anomalies\gravitational\gravitational_idle
+blowout_particles = semitone\anomalies\gravitational\gravitational_blowout
+
+hit_small_particles = semitone\anomalies\gravitational\gravitational_shield
+hit_big_particles = anomaly2\gravity_damage_02_blood2
+idle_small_particles = anomaly2\gravity_damage_01_smoke
+idle_big_particles = anomaly2\gravity_damage_02_smoke
+entrance_small_particles = anomaly2\gravi_anomaly_shield_00
+entrance_big_particles = anomaly2\gravity_entrance_big
+
+idle_sound = semitone\anomalies\gravitational\gravitational_idle ;постоянный звук
+blowout_sound = anomaly\anomaly_gravy_blast1; anomaly_gravy_blast01 ;во время выброса(удара) в центре аномалии
+hit_sound = anomaly\anomaly_gravy_hit1 ;на персонаже, когда тот получает хит
+entrance_sound = semitone\anomalies\gravitational_strong\gravitational_strong_shield ;при попадании объекта в аномалию
+
+
+awaking_time = 50;100
+blowout_time = 500
+accamulate_time = 1000 ;10;200
+
+blowout_light_time = 200
+blowout_explosion_time = 200
+blowout_particles_time = 200
+blowout_sound_time = 100
+
+disable_time = 5000 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 5000 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;время отключения idle партиклов
+
+ignore_nonalive = false
+ignore_small = true
+ignore_artefacts = true
+
+blowout_light = on
+light_color = 0.5,0.4,0.3
+light_range = 30.0
+light_time = 0.9;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+
+idle_light = off
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = on
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 300
+blowout_wind_time_end = 501; 899
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
+
+
+
+
+
+
+
+[zone_mine_gravitational_big]:zone_mine_gravitational_strong
+$spawn = "zones\scenes\mine_gravitational_big"
+$def_sphere = 8
+
+
+[zone_gravi_zone]:zone_mine_gravitational_average
+$spawn = "zones\mp\gravi_zone"
+$def_sphere = 1
+postprocess = postprocess_gravi
+max_start_power = 1.00
+idle_particles = anomaly2\gravity_idle
+blowout_particles = anomaly2\gravity_blast_final00 ;gravity_blast_03
+effective_radius = 0.75 ;размер радиуса в процентах от оригинального, где действует зона
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/zones/zone_mine_mefistotel.ltx b/mods/Arrival/gamedata/configs/zones/zone_mine_mefistotel.ltx
new file mode 100644
index 00000000..36eaddf0
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_mine_mefistotel.ltx
@@ -0,0 +1,100 @@
+[zone_mine_mefistotel]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones_eugenium\zone_mine_mefistotel"
+$def_sphere = 4
+$prefetch = 16
+class = ZS_GALAN ;--CMincer
+
+ef_anomaly_type = 5
+ef_weapon_type = 17
+
+postprocess = alcohol
+
+;----------- Anomaly settings -----------------------
+max_start_power = 1.3
+attenuation = 1
+
+idle_particles = semitone\anomalies\mefistotel\mefistotel_idle
+blowout_particles = semitone\anomalies\mefistotel\mefistotel_blowout
+tearing_particles = anomaly2\body_tear_00
+torn_particles = anomaly2\body_tear_01
+
+hit_small_particles = ;semitone\anomalies\mefistotel\mefistotel_blowout
+hit_big_particles = ;semitone\anomalies\mefistotel\mefistotel_blowout
+idle_small_particles =
+idle_big_particles =
+entrance_small_particles = semitone\anomalies\mefistotel\mefistotel_shield
+entrance_big_particles = semitone\anomalies\mefistotel\mefistotel_shield
+
+tele_particles_small =
+tele_particles_big =
+
+
+idle_sound = semitone\anomalies\mefistotel\mefistotel_idle ;посто¤нный звук
+blowout_sound = semitone\anomalies\mefistotel\mefistotel_blowout ;во врем¤ выброса(удара) в центре аномалии
+hit_sound = semitone\anomalies\mefistotel\mefistotel_blowout ;на персонаже, когда тот получает хит
+body_tearing_sound = anomaly\anomaly_body_tear_1 ;звук разрывани¤ трупа
+entrance_sound = semitone\anomalies\mefistotel\mefistotel_shield ;при попадании объекта в аномалию
+
+hit_type = shock
+hit_impulse_scale = 9.4 ;соотношение физического импульса и силы хита
+effective_radius = 4.2 ;размер радиуса в процентах от оригинального, где действует зона
+
+disable_time = 5000 ;врем¤ игнорировани¤ неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 5000 ;врем¤ игнорировани¤ маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;-1 ;врем¤ отключени¤ idle партиклов
+
+ignore_nonalive = false
+ignore_small = true
+ignore_artefacts = true
+
+blowout_light = off
+light_color = 1.4,1.6,1.3
+light_range = 30.0
+light_time = 0.8;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+idle_light = off
+
+awaking_time = 10
+blowout_time = 100
+accamulate_time = 100
+
+blowout_light_time = 59
+blowout_explosion_time = 59
+
+;параметры телекинеза дл¤ зоны
+throw_in_impulse = 40000000 ;сила вт¤гивани¤ дл¤ единичной массы на рассто¤нии один метр
+throw_out_impulse = 15 ;сила выбрасывани¤ взрывом
+throw_in_impulse_alive = 60000000 ;сила импульса вт¤гивани¤ дл¤ живых
+throw_in_atten = 10 ;коэфф. зат¤гивани¤ (чем меньше, тем плавнее зат¤гивает)
+blowout_radius_percent = 1 ;радиус (в процентах от всего радиуса) непосредственно выброса
+actor_blowout_radius_percent = 1
+tele_height = 0.01 ; 0.2 ;высота подъема телекинеза
+time_to_tele = 0.0 ;врем¤ деражани¤ объекта в воздухе
+tele_pause = 0.0 ;пауза перед тем как снова подн¤ть упавший объект
+
+;; ветер
+blowout_wind = off
+
+blowout_wind_time_start = 1
+blowout_wind_time_peak = 5900
+blowout_wind_time_end = 1000
+blowout_wind_power = 0.1 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = on
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 1500
+blowout_wind_time_end = 2501; 2499
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/zones/zone_mine_net.ltx b/mods/Arrival/gamedata/configs/zones/zone_mine_net.ltx
new file mode 100644
index 00000000..c0f0f617
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_mine_net.ltx
@@ -0,0 +1,75 @@
+[zone_mine_net]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones_eugenium\zone_mine_net"
+$def_sphere = 3
+$prefetch = 16
+class = ZS_MBALD ;---CMosquitoBald
+hit_impulse_scale = 0.3;0.5 ;0.1
+effective_radius = 1.0 ;размер радиуса в процентах от оригинального, где действует зона
+actor_blowout_radius_percent = 0.75
+
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+postprocess = postprocess_gravi_mine
+
+hit_type = shock
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.7
+attenuation = 1
+
+idle_particles = semitone\anomalies\net\net_idle
+blowout_particles = semitone\anomalies\net\net_blowout
+
+hit_small_particles = semitone\anomalies\net\net_blowout
+hit_big_particles = semitone\anomalies\net\net_blowout
+idle_small_particles =
+idle_big_particles =
+entrance_small_particles = semitone\anomalies\net\net_shield
+entrance_big_particles = semitone\anomalies\net\net_shield
+
+idle_sound = semitone\anomalies\net\net_idle ;постоянный звук
+blowout_sound = semitone\anomalies\net\net_blowout ; anomaly_gravy_blast01 ;во время выброса(удара) в центре аномалии
+hit_sound = semitone\anomalies\net\net_blowout ;на персонаже, когда тот получает хит
+entrance_sound = semitone\anomalies\net\net_shield ;при попадании объекта в аномалию
+
+
+awaking_time = 50;100
+blowout_time = 500
+accamulate_time = 1000 ;10;200
+
+blowout_light_time = 200
+blowout_explosion_time = 200
+blowout_particles_time = 200
+blowout_sound_time = 100
+
+disable_time = 5000 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 5000 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;время отключения idle партиклов
+
+ignore_nonalive = false
+ignore_small = true
+ignore_artefacts = true
+
+blowout_light = off
+light_color = 0.5,0.4,0.3
+light_range = 30.0
+light_time = 0.9;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+
+idle_light = off
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = on
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 300
+blowout_wind_time_end = 501; 899
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/zones/zone_mine_point.ltx b/mods/Arrival/gamedata/configs/zones/zone_mine_point.ltx
new file mode 100644
index 00000000..2cbb86cd
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_mine_point.ltx
@@ -0,0 +1,72 @@
+[zone_mine_point]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones_eugenium\zone_mine_point"
+$def_sphere = 2
+$prefetch = 16
+class = ZS_MBALD
+
+hit_impulse_scale = 0.0
+effective_radius = 1.0 ;размер радиуса в процентах от оригинального, где действует зона
+
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+postprocess = postprocess_electra_mine
+
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.7
+attenuation = 1
+
+idle_particles = semitone\anomalies\point\point_idle
+blowout_particles = semitone\anomalies\point\point_blowout
+
+hit_small_particles = semitone\anomalies\point\point_blowout
+hit_big_particles = semitone\anomalies\point\point_blowout
+idle_small_particles =
+idle_big_particles =
+entrance_small_particles =
+entrance_big_particles =
+
+idle_sound = semitone\anomalies\point\point_idle
+blowout_sound = semitone\anomalies\point\point_blowout
+hit_sound = semitone\anomalies\point\point_blowout
+entrance_sound = semitone\anomalies\point\point_blowout
+
+blowout_light = on
+light_color = 0.8,0.9,1
+light_range = 30.0
+light_time = 1;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+idle_light = on
+idle_light_shadow = true
+idle_light_range = 4.0
+idle_light_anim = koster_01_electra
+idle_light_height = 0.75 ;подъем источника света на высоту
+
+hit_type = shock
+
+disable_time = 50 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 500 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;время отключения idle партиклов
+
+awaking_time = 10
+blowout_time = 100
+accamulate_time = 1000
+
+ignore_nonalive = false
+ignore_small = false
+ignore_artefacts = true
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = off
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 150
+blowout_wind_time_end = 299
+blowout_wind_power = 0.2 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/zones/zone_mine_seed.ltx b/mods/Arrival/gamedata/configs/zones/zone_mine_seed.ltx
new file mode 100644
index 00000000..7905433f
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_mine_seed.ltx
@@ -0,0 +1,75 @@
+[zone_mine_seed]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones_eugenium\zone_mine_seed"
+$def_sphere = 3
+$prefetch = 16
+class = ZS_MBALD ;---CMosquitoBald
+hit_impulse_scale = 0.3;0.5 ;0.1
+effective_radius = 1.0 ;размер радиуса в процентах от оригинального, где действует зона
+actor_blowout_radius_percent = 1.75
+
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+postprocess = postprocess_rad
+
+hit_type = shock
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.7
+attenuation = 1
+
+idle_particles = semitone\anomalies\seed\seed_idle
+blowout_particles = semitone\anomalies\seed\seed_blowout
+
+hit_small_particles = semitone\anomalies\seed\seed_shield
+hit_big_particles = semitone\anomalies\seed\seed_shield
+idle_small_particles = semitone\anomalies\seed\seed_shield
+idle_big_particles = semitone\anomalies\seed\seed_shield
+entrance_small_particles = semitone\anomalies\seed\seed_shield
+entrance_big_particles = semitone\anomalies\seed\seed_shield
+
+idle_sound = semitone\anomalies\seed\seed_idle ;постоянный звук
+blowout_sound = semitone\anomalies\net\net_blowout ; anomaly_gravy_blast01 ;во время выброса(удара) в центре аномалии
+hit_sound = semitone\anomalies\net\net_blowout ;на персонаже, когда тот получает хит
+entrance_sound = semitone\anomalies\net\net_shield ;при попадании объекта в аномалию
+
+
+awaking_time = 50;100
+blowout_time = 500
+accamulate_time = 1000 ;10;200
+
+blowout_light_time = 200
+blowout_explosion_time = 200
+blowout_particles_time = 200
+blowout_sound_time = 100
+
+disable_time = 5000 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 5000 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;время отключения idle партиклов
+
+ignore_nonalive = false
+ignore_small = true
+ignore_artefacts = true
+
+blowout_light = off
+light_color = 0.5,0.4,0.3
+light_range = 30.0
+light_time = 0.9;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+
+idle_light = off
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = on
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 300
+blowout_wind_time_end = 501; 899
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/zones/zone_mine_shatterpoint.ltx b/mods/Arrival/gamedata/configs/zones/zone_mine_shatterpoint.ltx
new file mode 100644
index 00000000..01a23a3e
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_mine_shatterpoint.ltx
@@ -0,0 +1,93 @@
+[zone_mine_shatterpoint]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones_eugenium\zone_mine_shatterpoint"
+$def_sphere = 4
+$prefetch = 16
+class = ZS_GALAN
+
+ef_anomaly_type = 5
+ef_weapon_type = 17
+
+postprocess = postprocess_gravi_mine
+
+
+;----------- Anomaly settings -----------------------
+max_start_power = 1.00
+attenuation = 1
+
+
+idle_particles = semitone\anomalies\shatterpoint\shatterpoint_idle
+blowout_particles = semitone\anomalies\shatterpoint\shatterpoint_blowout
+tearing_particles = semitone\anomalies\gravitational_average\gravitational_average_blood_splash
+torn_particles = anomaly2\body_tear_01
+
+hit_small_particles = semitone\anomalies\gravitational_average\gravitational_average_shield
+hit_big_particles = anomaly2\gravity_damage_02_blood2
+idle_small_particles = anomaly2\gravity_damage_01_smoke
+idle_big_particles = anomaly2\gravity_damage_02_smoke
+entrance_small_particles = semitone\anomalies\gravitational_average\gravitational_average_shield
+entrance_big_particles = anomaly2\gravi_anomaly_00;
+
+tele_particles_small = anomaly2\gravity_damage_01_smoke ;anomaly2\gravity_damage_01_smoke
+tele_particles_big = anomaly2\gravity_damage_02_smoke
+
+
+idle_sound = semitone\anomalies\shatterpoint\shatterpoint_idle ;постоянный звук
+blowout_sound = semitone\anomalies\shatterpoint\shatterpoint_blowout ;во время выброса(удара) в центре аномалии
+hit_sound = semitone\anomalies\gravitational_strong\gravitational_strong_shield ;на персонаже, когда тот получает хит
+body_tearing_sound = anomaly\anomaly_body_tear_1 ;звук разрывания трупа
+entrance_sound = semitone\anomalies\gravitational_strong\gravitational_strong_shield ;при попадании объекта в аномалию
+
+hit_type = strike
+hit_impulse_scale = 0.02;0.5;0.1 ;соотношение физического импульса и силы хита
+effective_radius = 1.0 ;размер радиуса в процентах от оригинального, где действует зона
+
+disable_time = 5000 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 500 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;-1 ;время отключения idle партиклов
+
+ignore_nonalive = false
+ignore_small = true
+ignore_artefacts = true
+
+blowout_light = on
+light_color = 1.4,1.6,1.3
+light_range = 30.0
+light_time = 0.8;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+idle_light = off
+
+awaking_time = 100
+blowout_time = 11100
+accamulate_time = 10000
+
+
+blowout_light_time = 11000
+blowout_explosion_time = 11000
+
+;параметры телекинеза для зоны
+throw_in_impulse = 4000; ;сила импульса втягивания (для тела 100кг)
+throw_out_impulse = 3000; ;сила выбрасывания взрывом
+throw_in_impulse_alive = 1000; ;сила импульса втягивания для живых
+throw_in_atten = 2;8 ;коэфф. затягивания (чем меньше, тем плавнее затягивает)
+blowout_radius_percent = 0.8 ;радиус (в процентах от всего радиуса) непосредственно выброса
+actor_blowout_radius_percent= 0.5
+
+tele_height = 1.5 =;3.5 ;высота подъема телекинеза
+time_to_tele = 5000 ;время деражания объекта в воздухе
+tele_pause = 9900 ;пауза перед тем как снова поднять упавший объект
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = on
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 1500
+blowout_wind_time_end = 2501; 2499
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
diff --git a/mods/Arrival/gamedata/configs/zones/zone_mine_sloth.ltx b/mods/Arrival/gamedata/configs/zones/zone_mine_sloth.ltx
new file mode 100644
index 00000000..c2ea4ea0
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_mine_sloth.ltx
@@ -0,0 +1,75 @@
+[zone_mine_sloth]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones_eugenium\zone_mine_sloth"
+$def_sphere = 3
+$prefetch = 16
+class = ZS_MBALD ;---CMosquitoBald
+hit_impulse_scale = 0.3;0.5 ;0.1
+effective_radius = 1.0 ;размер радиуса в процентах от оригинального, где действует зона
+actor_blowout_radius_percent = 0.75
+
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+postprocess = postprocess_acidic_mine
+
+hit_type = chemical_burn
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.35
+attenuation = 1
+
+idle_particles = semitone\anomalies\sloth\sloth_idle
+blowout_particles = semitone\anomalies\sloth\sloth_blowout
+
+hit_small_particles =
+hit_big_particles =
+idle_small_particles =
+idle_big_particles =
+entrance_small_particles =
+entrance_big_particles =
+
+idle_sound = semitone\anomalies\sloth\sloth_idle ;постоянный звук
+blowout_sound = semitone\anomalies\sloth\sloth_blowout ; anomaly_gravy_blast01 ;во время выброса(удара) в центре аномалии
+hit_sound = semitone\anomalies\sloth\sloth_blowout ;на персонаже, когда тот получает хит
+entrance_sound = semitone\anomalies\sloth\sloth_blowout ;при попадании объекта в аномалию
+
+
+awaking_time = 50;100
+blowout_time = 500
+accamulate_time = 1000 ;10;200
+
+blowout_light_time = 200
+blowout_explosion_time = 200
+blowout_particles_time = 200
+blowout_sound_time = 100
+
+disable_time = 5000 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 5000 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;время отключения idle партиклов
+
+ignore_nonalive = false
+ignore_small = false
+ignore_artefacts = true
+
+blowout_light = off
+light_color = 0.5,0.4,0.3
+light_range = 30.0
+light_time = 0.9;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+
+idle_light = off
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = on
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 300
+blowout_wind_time_end = 501; 899
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/zones/zone_mine_sphere.ltx b/mods/Arrival/gamedata/configs/zones/zone_mine_sphere.ltx
new file mode 100644
index 00000000..653f871b
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_mine_sphere.ltx
@@ -0,0 +1,100 @@
+[zone_mine_sphere]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones_eugenium\zone_mine_sphere"
+$def_sphere = 4
+$prefetch = 16
+class = ZS_GALAN ;--CMincer
+
+ef_anomaly_type = 5
+ef_weapon_type = 17
+
+postprocess = postprocess_gravi_mine
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.65
+attenuation = 1
+
+idle_particles = semitone\anomalies\sphere\sphere_idle
+blowout_particles = semitone\anomalies\sphere\sphere_blowout
+tearing_particles = anomaly2\body_tear_00
+torn_particles = anomaly2\body_tear_01
+
+hit_small_particles = semitone\anomalies\sphere\sphere_blowout
+hit_big_particles = semitone\anomalies\sphere\sphere_blowout
+idle_small_particles =
+idle_big_particles =
+entrance_small_particles =
+entrance_big_particles =
+
+tele_particles_small =
+tele_particles_big =
+
+
+idle_sound = semitone\anomalies\sphere\sphere_idle ;постоянный звук
+blowout_sound = semitone\anomalies\sphere\sphere_blowout ;во время выброса(удара) в центре аномалии
+hit_sound = semitone\anomalies\sphere\sphere_blowout ;на персонаже, когда тот получает хит
+body_tearing_sound = anomaly\anomaly_body_tear_1 ;звук разрывания трупа
+entrance_sound = semitone\anomalies\sphere\sphere_blowout ;при попадании объекта в аномалию
+
+hit_type = strike
+hit_impulse_scale = 7.5 ;соотношение физического импульса и силы хита
+effective_radius = 2 ;размер радиуса в процентах от оригинального, где действует зона
+
+disable_time = 5000 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 5000 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;-1 ;время отключения idle партиклов
+
+ignore_nonalive = false
+ignore_small = false
+ignore_artefacts = true
+
+blowout_light = off
+light_color = 1.4,1.6,1.3
+light_range = 30.0
+light_time = 0.8;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+idle_light = off
+
+awaking_time = 10
+blowout_time = 100
+accamulate_time = 400
+
+blowout_light_time = 59
+blowout_explosion_time = 59
+
+;параметры телекинеза для зоны
+throw_in_impulse = -60000000 ;сила втягивания для единичной массы на расстоянии один метр
+throw_out_impulse = 40000000 ;сила выбрасывания взрывом
+throw_in_impulse_alive = -60000000 ;сила импульса втягивания для живых
+throw_in_atten = 10 ;коэфф. затягивания (чем меньше, тем плавнее затягивает)
+blowout_radius_percent = 1 ;радиус (в процентах от всего радиуса) непосредственно выброса
+actor_blowout_radius_percent = 1
+tele_height = 0.01 ; 0.2 ;высота подъема телекинеза
+time_to_tele = 0.0 ;время деражания объекта в воздухе
+tele_pause = 0.0 ;пауза перед тем как снова поднять упавший объект
+
+;; ветер
+blowout_wind = off
+
+blowout_wind_time_start = 1
+blowout_wind_time_peak = 5900
+blowout_wind_time_end = 1000
+blowout_wind_power = 0.1 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = on
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 1500
+blowout_wind_time_end = 2501; 2499
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/zones/zone_mine_thermal.ltx b/mods/Arrival/gamedata/configs/zones/zone_mine_thermal.ltx
new file mode 100644
index 00000000..2211ee50
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_mine_thermal.ltx
@@ -0,0 +1,139 @@
+[zone_mine_thermal]:zone_base
+GroupControlSection = spawn_group_zone
+$def_sphere = 2
+$prefetch = 16
+class = ZS_MBALD
+hit_impulse_scale = 0.0
+effective_radius = 1.0
+
+postprocess = postprocess_thermal_mine
+
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+
+;----------- Anomaly settings -----------------------
+max_start_power = 1.00
+attenuation = 1
+
+idle_particles = semitone\anomalies\zharka\zharka_idle
+blowout_particles = semitone\anomalies\zharka\zharka_blowout
+
+hit_small_particles = damage_fx\burn_creatures
+hit_big_particles = damage_fx\burn_creatures00
+idle_small_particles = damage_fx\burn_creatures
+idle_big_particles = damage_fx\burn_creatures00
+
+idle_particles_dont_stop = true;
+
+idle_sound = anomaly\fire_idle
+blowout_sound = semitone\anomalies\zharka\zharka_blowout
+hit_sound = ambient\zhar
+entrance_sound = ambient\zhar
+
+hit_type = light_burn
+
+disable_time = 10000
+disable_time_small = -1
+disable_idle_time = 50000
+
+ignore_nonalive = false
+ignore_small = false
+ignore_artefacts = true
+
+blowout_light = on
+light_color = 1.9,1.6,1.3
+light_range = 9.0
+light_time = 10
+light_height = 2
+
+
+idle_light = off
+idle_light_range = 8.0
+idle_light_anim = koster_01
+idle_light_height = 0.70
+
+awaking_time = 100
+blowout_time = 7000
+accamulate_time = 250
+
+blowout_wind = off
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
+
+[zone_mine_thermal_weak]:zone_mine_thermal
+$spawn = "zones\mine_thermal_weak"
+max_start_power = 0.2
+use_secondary_hit = true
+secondary_hit_power = 0.008
+
+[zone_mine_thermal_average]:zone_mine_thermal
+$spawn = "zones\mine_thermal_average"
+max_start_power = 0.2
+use_secondary_hit = true
+secondary_hit_power = 0.008
+
+[zone_mine_thermal_strong]:zone_mine_thermal
+$spawn = "zones\mine_thermal_strong"
+max_start_power = 0.2
+use_secondary_hit = true
+secondary_hit_power = 0.008
+
+
+[zone_mine_steam]:zone_base
+postprocess = postprocess_steam_mine
+
+blowout_particles = static\zharka_static_steam
+
+hit_small_particles = damage_fx\smoke
+hit_big_particles = damage_fx\smoke
+idle_small_particles = damage_fx\smoke
+idle_big_particles = damage_fx\smoke
+
+idle_sound = anomaly\steam
+blowout_sound = anomaly\steam_blowout
+hit_sound = anomaly\steam_hit
+entrance_sound = anomaly\steam_hit
+
+blowout_light = off
+
+
+[zone_mine_steam_weak]:zone_mine_thermal_weak, zone_mine_steam
+$spawn = "zones\scenes\mine_steam_weak"
+max_start_power = 0.17
+use_secondary_hit = true
+secondary_hit_power = 0.01
+
+[zone_mine_steam_average]:zone_mine_thermal_average, zone_mine_steam
+$spawn = "zones\scenes\mine_steam_average"
+max_start_power = 0.17
+use_secondary_hit = true
+secondary_hit_power = 0.01
+
+[zone_mine_steam_strong]:zone_mine_thermal_strong, zone_mine_steam
+$spawn = "zones\scenes\mine_steam_strong"
+max_start_power = 0.17
+use_secondary_hit = true
+secondary_hit_power = 0.01
+
+
+[zone_zharka_static]:zone_mine_thermal
+postprocess = postprocess_flame
+idle_sound = ambient\fire2
+
+
+[zone_zharka_static_weak]:zone_zharka_static
+$spawn = "zones\mp\zharka_statik_weak"
+max_start_power = 0.50
+
+
+[zone_zharka_static_average]:zone_zharka_static
+$spawn = "zones\mp\zharka_statik_average"
+max_start_power = 1.20
+
+
+[zone_zharka_static_strong]:zone_zharka_static
+$spawn = "zones\mp\zharka_statik_strong"
+max_start_power = 2.00
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/zones/zone_mine_thorn.ltx b/mods/Arrival/gamedata/configs/zones/zone_mine_thorn.ltx
new file mode 100644
index 00000000..30fb87f7
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_mine_thorn.ltx
@@ -0,0 +1,92 @@
+[zone_mine_thorn]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones_eugenium\zone_mine_thorn"
+$def_sphere = 4
+$prefetch = 16
+class = ZS_GALAN ;--CMincer
+
+ef_anomaly_type = 5
+ef_weapon_type = 17
+
+postprocess = postprocess_gravi_mine
+
+
+;----------- Anomaly settings -----------------------
+max_start_power = 1.00
+attenuation = 1
+
+
+idle_particles = semitone\anomalies\thorn\thorn_idle
+blowout_particles = semitone\anomalies\thorn\thorn_blowout
+tearing_particles = semitone\anomalies\gravitational_average\gravitational_average_blood_splash
+torn_particles = anomaly2\body_tear_01
+
+hit_small_particles = semitone\anomalies\gravitational_average\gravitational_average_shield
+hit_big_particles = anomaly2\gravity_damage_02_blood2
+idle_small_particles = anomaly2\gravity_damage_01_smoke
+idle_big_particles = anomaly2\gravity_damage_02_smoke
+entrance_small_particles = semitone\anomalies\gravitational_average\gravitational_average_shield
+entrance_big_particles = anomaly2\gravi_anomaly_00;
+
+tele_particles_small = anomaly2\gravity_damage_01_smoke ;anomaly2\gravity_damage_01_smoke
+tele_particles_big = anomaly2\gravity_damage_02_smoke
+
+
+idle_sound = semitone\anomalies\shatterpoint\shatterpoint_idle ;постоянный звук
+blowout_sound = semitone\anomalies\thorn\thorn_blowout ;во время выброса(удара) в центре аномалии
+hit_sound = semitone\anomalies\gravitational_strong\gravitational_strong_shield ;на персонаже, когда тот получает хит
+body_tearing_sound = anomaly\anomaly_body_tear_1 ;звук разрывания трупа
+entrance_sound = semitone\anomalies\gravitational_strong\gravitational_strong_shield ;при попадании объекта в аномалию
+
+hit_type = strike
+hit_impulse_scale = 0.02;0.5;0.1 ;соотношение физического импульса и силы хита
+effective_radius = 1.0 ;размер радиуса в процентах от оригинального, где действует зона
+
+disable_time = 5000 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 500 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;-1 ;время отключения idle партиклов
+
+ignore_nonalive = false
+ignore_small = true
+ignore_artefacts = true
+
+blowout_light = off
+light_color = 1.4,1.6,1.3
+light_range = 30.0
+light_time = 0.8;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+idle_light = off
+
+awaking_time = 300;1000
+blowout_time = 2100
+accamulate_time = 1900
+
+
+blowout_light_time = 2000
+blowout_explosion_time = 2000
+
+;параметры телекинеза для зоны
+throw_in_impulse = 2000;3000;4000 ;сила импульса втягивания (для тела 100кг)
+throw_out_impulse = 4000; ;сила выбрасывания взрывом
+throw_in_impulse_alive = 1000;600 800 ;сила импульса втягивания для живых
+throw_in_atten = 2;8 ;коэфф. затягивания (чем меньше, тем плавнее затягивает)
+blowout_radius_percent = 0.8 ;радиус (в процентах от всего радиуса) непосредственно выброса
+actor_blowout_radius_percent= 0.5
+
+tele_height = 1.5; 3.5 ;высота подъема телекинеза
+time_to_tele = 2000 ;время деражания объекта в воздухе
+tele_pause = 2000 ;пауза перед тем как снова поднять упавший объект
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = on
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 1500
+blowout_wind_time_end = 2501; 2499
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
diff --git a/mods/Arrival/gamedata/configs/zones/zone_mine_umbra.ltx b/mods/Arrival/gamedata/configs/zones/zone_mine_umbra.ltx
new file mode 100644
index 00000000..4485b09a
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_mine_umbra.ltx
@@ -0,0 +1,100 @@
+[zone_mine_umbra]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones_eugenium\zone_mine_umbra"
+$def_sphere = 4
+$prefetch = 16
+class = ZS_GALAN ;--CMincer
+
+ef_anomaly_type = 5
+ef_weapon_type = 17
+
+postprocess = postprocess_electra_mine
+
+;----------- Anomaly settings -----------------------
+max_start_power = 2
+attenuation = 1
+
+idle_particles = semitone\anomalies\umbra\umbra_idle
+blowout_particles =
+tearing_particles = anomaly2\body_tear_00
+torn_particles = anomaly2\body_tear_01
+
+hit_small_particles =
+hit_big_particles =
+idle_small_particles =
+idle_big_particles =
+entrance_small_particles =
+entrance_big_particles =
+
+tele_particles_small =
+tele_particles_big =
+
+
+idle_sound = semitone\anomalies\umbra\umbra_idle ;посто¤нный звук
+blowout_sound = semitone\anomalies\silence ;во врем¤ выброса(удара) в центре аномалии
+hit_sound = semitone\anomalies\silence ;на персонаже, когда тот получает хит
+body_tearing_sound = anomaly\anomaly_body_tear_1 ;звук разрывани¤ трупа
+entrance_sound = semitone\anomalies\silence ;при попадании объекта в аномалию
+
+hit_type = telepatic
+hit_impulse_scale = 9.4 ;соотношение физического импульса и силы хита
+effective_radius = 1 ;размер радиуса в процентах от оригинального, где действует зона
+
+disable_time = 5000 ;врем¤ игнорировани¤ неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 5000 ;врем¤ игнорировани¤ маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;-1 ;врем¤ отключени¤ idle партиклов
+
+ignore_nonalive = false
+ignore_small = true
+ignore_artefacts = true
+
+blowout_light = off
+light_color = 1.4,1.6,1.3
+light_range = 30.0
+light_time = 0.8;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+idle_light = off
+
+awaking_time = 10
+blowout_time = 100
+accamulate_time = 100
+
+blowout_light_time = 59
+blowout_explosion_time = 59
+
+;параметры телекинеза дл¤ зоны
+throw_in_impulse = 40000000 ;сила вт¤гивани¤ дл¤ единичной массы на рассто¤нии один метр
+throw_out_impulse = 15 ;сила выбрасывани¤ взрывом
+throw_in_impulse_alive = 60000000 ;сила импульса вт¤гивани¤ дл¤ живых
+throw_in_atten = 10 ;коэфф. зат¤гивани¤ (чем меньше, тем плавнее зат¤гивает)
+blowout_radius_percent = 1 ;радиус (в процентах от всего радиуса) непосредственно выброса
+actor_blowout_radius_percent = 1
+tele_height = 0.01 ; 0.2 ;высота подъема телекинеза
+time_to_tele = 0.0 ;врем¤ деражани¤ объекта в воздухе
+tele_pause = 0.0 ;пауза перед тем как снова подн¤ть упавший объект
+
+;; ветер
+blowout_wind = off
+
+blowout_wind_time_start = 1
+blowout_wind_time_peak = 5900
+blowout_wind_time_end = 1000
+blowout_wind_power = 0.1 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = on
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 1500
+blowout_wind_time_end = 2501; 2499
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/zones/zone_mine_updated.ltx b/mods/Arrival/gamedata/configs/zones/zone_mine_updated.ltx
new file mode 100644
index 00000000..19751eae
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_mine_updated.ltx
@@ -0,0 +1,522 @@
+
+;--------------- Acid ------------------
+
+;zone_mine_acidic
+[zone_mine_acid]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones_eugenium\zone_mine_acid"
+$def_sphere = 2
+$prefetch = 16
+class = ZS_MBALD
+
+hit_impulse_scale = 0.0
+effective_radius = 1.0 ;размер радиуса в процентах от оригинального, где действует зона
+
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+postprocess = postprocess_acidic_mine
+
+
+; ===== Anomaly settings ======
+max_start_power = 0.20
+attenuation = 1
+
+use_secondary_hit = true
+secondary_hit_power = 0.005
+
+idle_particles = semitone\anomalies\acidic\acidic_mine_idle
+blowout_particles = semitone\anomalies\acidic\acidic_mine_hit
+
+;hit_small_particles = semitone\anomalies\acidic\acidic_mine_hit
+;hit_big_particles = semitone\anomalies\acidic\acidic_mine_hit
+;idle_small_particles = semitone\anomalies\acidic\acidic_mine_idle
+;idle_big_particles = semitone\anomalies\acidic\acidic_mine_idle
+
+idle_sound = semitone\anomalies\acidic\acidic_idle ; bfuzz_blowout ;постоянный звук
+blowout_sound = semitone\anomalies\acidic\acidic_hit ;во время выброса(удара) в центре аномалии
+hit_sound = semitone\anomalies\acidic\acidic_hit ;на персонаже, когда тот получает хит
+entrance_sound = semitone\anomalies\acidic\acidic_hit ;при попадании объекта в аномалию
+
+hit_type = chemical_burn
+
+disable_time = 10000 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = -1 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 50000 ;время отключения idle партиклов
+
+ignore_nonalive = false
+ignore_small = false
+ignore_artefacts = false
+
+blowout_light = on
+light_color = 1.1,1.7,1.4
+light_animation = light_green_01
+light_range = 7
+light_time = 0.35
+light_height = 0.75 ;подъем источника света на высоту
+
+
+idle_light = on
+idle_light_range = 3.0
+idle_light_anim = light_green_02
+idle_light_height = 0.70 ;подъем источника света на высоту
+
+awaking_time = 100
+blowout_time = 1400
+accamulate_time = 300
+
+blowout_wind = off
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 600
+blowout_wind_time_end = 899
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
+
+
+
+;--------------- Electra ------------------
+
+;zone_mine_electric
+[zone_mine_electra]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones_eugenium\zone_mine_electra"
+$def_sphere = 2
+$prefetch = 16
+class = ZS_MBALD
+
+hit_impulse_scale = 0.0
+effective_radius = 1.0 ;размер радиуса в процентах от оригинального, где действует зона
+
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+postprocess = postprocess_electra_mine
+
+
+; ===== Anomaly settings ======
+max_start_power = 0.80
+attenuation = 1
+
+idle_particles = semitone\anomalies\electra\electra_idle
+blowout_particles = semitone\anomalies\electra\electra_blowout
+
+hit_small_particles = anomaly2\electra_entrance_small
+hit_big_particles = anomaly2\electra_damage_02_smoke
+idle_small_particles = anomaly2\electra_damage_01_smoke
+idle_big_particles = anomaly2\electra_damage_02_smoke
+entrance_small_particles = anomaly2\electra_entrance_small
+entrance_big_particles = anomaly2\emi_entrance_big_00
+
+idle_sound = semitone\anomalies\electra\electra_idle
+blowout_sound = semitone\anomalies\electra\electra_blowout
+hit_sound = semitone\anomalies\electra\electra_hit
+entrance_sound = semitone\anomalies\electra\electra_hit
+
+
+blowout_light = on
+light_color = 0.8,0.9,1
+light_range = 30.0
+light_time = 1;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+idle_light = on
+idle_light_shadow = true
+idle_light_range = 3.0
+idle_light_anim = koster_01_electra
+idle_light_height = 0.75 ;подъем источника света на высоту
+hit_type = shock
+
+
+disable_time = 50 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 500 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;время отключения idle партиклов
+
+awaking_time = 100
+blowout_time = 100
+accamulate_time = 1500
+
+ignore_nonalive = false
+ignore_small = false
+ignore_artefacts = true
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = off
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 150
+blowout_wind_time_end = 299
+blowout_wind_power = 0.2 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
+
+
+
+
+
+
+
+;--------------- Vortex ------------------
+
+;zone_mine_gravitational_average
+[zone_mine_vortex]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones_eugenium\zone_mine_vortex"
+$def_sphere = 4
+$prefetch = 16
+class = ZS_GALAN ;--CMincer
+
+ef_anomaly_type = 5
+ef_weapon_type = 17
+
+postprocess = postprocess_gravi_mine
+
+
+; ===== Anomaly settings ======
+max_start_power = 1.10
+attenuation = 1
+
+
+idle_particles = semitone\anomalies\gravitational_average\gravitational_average_idle
+blowout_particles = semitone\anomalies\gravitational_average\gravitational_average_blowout
+tearing_particles = anomaly2\body_tear_00
+torn_particles = semitone\anomalies\gravitational_strong\gravitational_strong_blood_splash
+
+hit_small_particles = hit_fx\hit_metal_02
+hit_big_particles = anomaly2\gravity_damage_02_blood2
+idle_small_particles = anomaly2\gravity_damage_01_smoke
+idle_big_particles = anomaly2\gravity_damage_02_smoke
+entrance_small_particles = semitone\anomalies\gravitational_strong\gravitational_strong_shield
+entrance_big_particles = anomaly2\gravi_anomaly_00;
+
+tele_particles_small = anomaly2\gravity_damage_01_smoke ;anomaly2\gravity_damage_01_smoke
+tele_particles_big = anomaly2\gravity_damage_02_smoke
+
+
+idle_sound = drx_da\drx_da_gravi_idle00 ;постоянный звук
+blowout_sound = anomaly\gravi_blowout6; anomaly_gravy_blast01 ;во время выброса(удара) в центре аномалии
+hit_sound = semitone\anomaliesl\gravitational\gravitational_shield ;на персонаже, когда тот получает хит
+body_tearing_sound = anomaly\anomaly_body_tear_1 ;звук разрывания трупа
+entrance_sound = semitone\anomaliesl\gravitational\gravitational_shield ;при попадании объекта в аномалию
+
+hit_type = strike
+hit_impulse_scale = 0.02;0.5;0.1 ;соотношение физического импульса и силы хита
+effective_radius = 1.0 ;размер радиуса в процентах от оригинального, где действует зона
+
+disable_time = 5000 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 500 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;-1 ;время отключения idle партиклов
+
+ignore_nonalive = false
+ignore_small = true
+ignore_artefacts = true
+
+blowout_light = on
+light_color = 1.4,1.6,1.3
+light_range = 30.0
+light_time = 0.8;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+idle_light = off
+
+awaking_time = 300;1000
+blowout_time = 2500
+accamulate_time = 1000
+
+
+blowout_light_time = 2100
+blowout_explosion_time = 2100
+
+;параметры телекинеза для зоны
+throw_in_impulse = 2000;3000;4000 ;сила импульса втягивания (для тела 100кг)
+throw_out_impulse = 4000; ;сила выбрасывания взрывом
+throw_in_impulse_alive = 1000;600 800 ;сила импульса втягивания для живых
+throw_in_atten = 1;8 ;коэфф. затягивания (чем меньше, тем плавнее затягивает)
+blowout_radius_percent = 0.8 ;радиус (в процентах от всего радиуса) непосредственно выброса
+actor_blowout_radius_percent= 0.5
+
+tele_height = 0.05; 3.5 ;высота подъема телекинеза
+time_to_tele = 5000 ;время деражания объекта в воздухе
+tele_pause = 5000 ;пауза перед тем как снова поднять упавший объект
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = on
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 1500
+blowout_wind_time_end = 2501; 2499
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
+
+
+;--------------- Blast -----------------
+
+;zone_mine_gravitational_weak
+[zone_mine_blast]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones_eugenium\zone_mine_blast"
+$def_sphere = 3
+$prefetch = 16
+class = ZS_MBALD ;---CMosquitoBald
+hit_impulse_scale = 0.3;0.5 ;0.1
+effective_radius = 1.6 ;размер радиуса в процентах от оригинального, где действует зона
+actor_blowout_radius_percent = 1.35
+
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+postprocess = postprocess_gravi_mine
+
+hit_type = strike
+
+; ===== Anomaly settings ======
+max_start_power = 0.55
+attenuation = 1
+
+idle_particles = semitone\anomalies\gravitational\gravitational_idle
+blowout_particles = semitone\anomalies\gravitational\gravitational_blowout
+
+hit_small_particles = hit_fx\hit_metal_02
+hit_big_particles = anomaly2\gravity_damage_02_blood2
+idle_small_particles = anomaly2\gravity_damage_01_smoke
+idle_big_particles = anomaly2\gravity_damage_02_smoke
+entrance_small_particles = semitone\anomalies\gravitational\gravitational_shield
+entrance_big_particles = anomaly2\gravity_entrance_big
+
+idle_sound = semitone\anomalies\gravitational\gravitational_idle ;постоянный звук
+blowout_sound = anomaly\anomaly_gravy_blast1; anomaly_gravy_blast01 ;во время выброса(удара) в центре аномалии
+hit_sound = drx_da\drx_da_anomaly_gravy_hit1 ;на персонаже, когда тот получает хит
+entrance_sound = drx_da\drx_da_anomaly_gravy_hit1 ;при попадании объекта в аномалию
+
+
+awaking_time = 50;100
+blowout_time = 500
+accamulate_time = 1000 ;10;200
+
+blowout_light_time = 200
+blowout_explosion_time = 200
+blowout_particles_time = 200
+blowout_sound_time = 100
+
+disable_time = 5000 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 5000 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;время отключения idle партиклов
+
+ignore_nonalive = false
+ignore_small = true
+ignore_artefacts = true
+
+blowout_light = on
+light_color = 0.5,0.4,0.3
+light_range = 30.0
+light_time = 0.9;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+
+idle_light = off
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = on
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 300
+blowout_wind_time_end = 501; 899
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
+
+
+;--------------- Zharka ------------------
+
+;zone_mine_thermal
+[zone_mine_zharka]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones_eugenium\zone_mine_zharka"
+$def_sphere = 2
+$prefetch = 16
+class = ZS_MBALD
+hit_impulse_scale = 0.0
+effective_radius = 1.0
+
+postprocess = postprocess_thermal_mine
+
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+
+; ===== Anomaly settings ======
+max_start_power = 0.2
+use_secondary_hit = true
+secondary_hit_power = 0.008
+attenuation = 1
+
+idle_particles = semitone\anomalies\zharka\zharka_idle
+blowout_particles = semitone\anomalies\zharka\zharka_blowout
+
+hit_small_particles = damage_fx\burn_creatures
+hit_big_particles = damage_fx\burn_creatures00
+idle_small_particles = damage_fx\burn_creatures
+idle_big_particles = damage_fx\burn_creatures00
+
+idle_particles_dont_stop = true;
+
+idle_sound = drx_da\drx_da_fire_idle
+blowout_sound = anomaly\zhar_blow
+hit_sound = ambient\zhar
+entrance_sound = ambient\zhar
+
+hit_type = burn
+
+disable_time = 10000
+disable_time_small = -1
+disable_idle_time = 50000
+
+ignore_nonalive = false
+ignore_small = false
+ignore_artefacts = true
+
+blowout_light = on
+light_color = 1.9,1.6,1.3
+light_range = 9.0
+light_time = 10
+light_height = 2
+
+
+idle_light = off
+idle_light_range = 8.0
+idle_light_anim = koster_01
+idle_light_height = 0.70
+
+awaking_time = 100
+blowout_time = 7000
+accamulate_time = 250
+
+blowout_wind = off
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
+;zone_mine_steam
+[zone_mine_vapour]:zone_mine_zharka
+$spawn = "zones_eugenium\zone_mine_vapour"
+postprocess = postprocess_steam_mine
+
+max_start_power = 0.17
+use_secondary_hit = true
+secondary_hit_power = 0.01
+
+blowout_particles = static\zharka_static_steam
+
+hit_small_particles = damage_fx\smoke
+hit_big_particles = damage_fx\smoke
+idle_small_particles = damage_fx\smoke
+idle_big_particles = damage_fx\smoke
+
+idle_sound = anomaly\steam
+blowout_sound = anomaly\steam_blowout
+hit_sound = anomaly\steam_hit
+entrance_sound = anomaly\steam_hit
+
+blowout_light = off
+
+
+
+
+
+;--------------- Springboard -----------------------
+
+[zone_mine_springboard]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones_eugenium\zone_mine_springboard"
+
+$def_sphere = 3
+$prefetch = 16
+class = ZS_MBALD
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+hit_type = shock
+hit_impulse_scale = 1.3
+effective_radius = 1.0
+
+postprocess = postprocess_fuzz
+
+; ===== Anomaly settings ======
+max_start_power = 0.7
+attenuation = 1
+
+idle_particles = semitone\anomalies\springboard\springboard_idle
+blowout_particles = semitone\anomalies\springboard\springboard_blowout
+
+hit_small_particles = semitone\anomalies\springboard\springboard_hit
+hit_big_particles = semitone\anomalies\springboard\springboard_hit
+idle_small_particles =
+idle_big_particles =
+entrance_small_particles = semitone\anomalies\springboard\springboard_hit
+entrance_big_particles =
+
+idle_sound = semitone\anomalies\springboard\springboard_idle
+blowout_sound = semitone\anomalies\springboard\springboard_blowout
+hit_sound = semitone\anomalies\springboard\springboard_blowout
+entrance_sound = semitone\anomalies\springboard\springboard_shield
+
+blowout_light = off
+light_color = 0.8,0.9,1
+light_range = 8.0
+light_time = 1;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+idle_light = off
+idle_light_shadow = true
+idle_light_range = 4.0
+idle_light_anim = koster_01_electra
+idle_light_height = 0.75 ;подъем источника света на высоту
+
+
+disable_time = 50 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 500 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;время отключения idle партиклов
+
+awaking_time = 10
+blowout_time = 100
+accamulate_time = 1000
+
+ignore_nonalive = false
+ignore_small = false
+ignore_artefacts = true
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = off
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 150
+blowout_wind_time_end = 299
+blowout_wind_power = 0.2 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
+
+
+
+
+
+
+
diff --git a/mods/Arrival/gamedata/configs/zones/zone_monolith.ltx b/mods/Arrival/gamedata/configs/zones/zone_monolith.ltx
new file mode 100644
index 00000000..f6198294
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_monolith.ltx
@@ -0,0 +1,57 @@
+[zone_monolith]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones\monolith"
+;$prefetch = 16
+class = ZS_RADIO
+hit_impulse_scale = .01
+effective_radius = 1.00 ;размер радиуса в процентах от оригинального, где действует зона
+sound = zone_mosquito_bald
+postprocess = postprocess_electra
+
+ef_anomaly_type = 3
+ef_weapon_type = 15
+
+artefacts =
+BirthProbability = 0.0;0.1
+
+;----------- Anomaly settings -----------------------
+min_start_power = 0.99
+max_start_power = 1.00
+attenuation = 0.1
+period = 1
+min_artefact_count = 0
+max_artefact_count = 0
+
+hit_type = telepatic
+
+idle_particles = semitone\anomalies\wish_granter\wish_granter_idle
+blowout_particles = semitone\anomalies\wish_granter\wish_granter_active
+
+disable_time = -1 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = -1 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = -1 ;время отключения idle партиклов
+
+idle_sound = anomaly\monolith_idle; anomaly_gravy_idle
+blowout_sound = anomaly\monolith_idle
+
+ignore_nonalive = true;
+ignore_small = true;
+ignore_artefacts = true
+
+blowout_light = off
+idle_light = off
+
+awaking_time = 1
+blowout_time = 9000
+accamulate_time = 1
+
+visible_by_detector = on
+
+blowout_wind = off
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;рождение артефактов во время срабатывания
+spawn_blowout_artefacts = off
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
diff --git a/mods/Arrival/gamedata/configs/zones/zone_nogravity.ltx b/mods/Arrival/gamedata/configs/zones/zone_nogravity.ltx
new file mode 100644
index 00000000..5204f2ec
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_nogravity.ltx
@@ -0,0 +1,82 @@
+[zone_no_gravity]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones_eugenium\zone_no_gravity"
+
+$def_sphere = 3
+$prefetch = 16
+class = ZS_MBALD ;---CMosquitoBald
+hit_impulse_scale = 0.3;0.5 ;0.1
+effective_radius = 1.0 ;размер радиуса в процентах от оригинального, где действует зона
+actor_blowout_radius_percent = 0.75
+
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+postprocess = alcohol
+
+hit_type = radiation
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.25
+attenuation = 1
+
+idle_particles = semitone\anomalies\no_gravity\no_gravity_idle
+blowout_particles = semitone\anomalies\no_gravity\no_gravity_blowout
+
+hit_small_particles = hit_fx\hit_metal_02
+hit_big_particles = anomaly2\gravity_damage_02_blood2
+idle_small_particles = anomaly2\gravity_damage_01_smoke
+idle_big_particles = anomaly2\gravity_damage_02_blood2; anomaly2\gravity_damage_02_smoke
+entrance_small_particles = semitone\anomalies\springboard\springboard_hit
+entrance_big_particles = anomaly2\gravi_anomaly_00;
+
+idle_sound = semitone\anomalies\net\net_idle ;постоянный звук
+awake_sound = drx_da\drx_da_gravi_idle01
+accum_sound = drx_da\drx_da_gravi_idle01
+blowout_sound = semitone\anomalies\sloth\sloth_blowout ;во время выброса(удара) в центре аномалии
+hit_sound = semitone\anomalies\gravitational_strong\gravitational_strong_shield ;на персонаже, когда тот получает хит
+entrance_sound = semitone\anomalies\gravitational_strong\gravitational_strong_shield ;при попадании объекта в аномалию
+body_tearing_sound = anomaly\anomaly_body_tear_1
+
+disable_time = -1 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = -1 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100
+
+awaking_time = 800;100
+blowout_time = 500
+accamulate_time = 1000 ;10;200
+
+blowout_light_time = 200
+blowout_explosion_time = 200
+blowout_particles_time = 200
+blowout_sound_time = 100
+
+disable_time = 5000 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 5000 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;время отключения idle партиклов
+
+ignore_nonalive = false
+ignore_small = false
+ignore_artefacts = true
+
+blowout_light = off
+light_color = 0.5,0.4,0.3
+light_range = 30.0
+light_time = 0.9;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+
+idle_light = off
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = on
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 300
+blowout_wind_time_end = 501; 899
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/configs/zones/zone_teleport.ltx b/mods/Arrival/gamedata/configs/zones/zone_teleport.ltx
new file mode 100644
index 00000000..742a2bae
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_teleport.ltx
@@ -0,0 +1,290 @@
+[zone_spatial_bubble]:zone_base ;zone_teleport_chaes
+
+GroupControlSection = spawn_group_zone
+$spawn = "zones\scenes\teleport"
+$prefetch = 16
+class = ZS_MBALD
+
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+postprocess = postprocess_electra
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.00
+attenuation = 1
+
+idle_particles = semitone\anomalies\spatial_bubble\spatial_bubble_idle
+
+--blowout_particles = anomaly2\teleport
+--tearing_particles = anomaly2\teleport_tear
+--torn_particles = anomaly2\teleport_tear
+
+hit_small_particles = hit_fx\hit_metal_02
+hit_big_particles = anomaly2\teleport_damage
+idle_small_particles = anomaly2\teleport_damage_smoke_00
+idle_big_particles = anomaly2\teleport_damage_smoke_00
+entrance_small_particles = anomaly2\teleport_damage
+entrance_big_particles = anomaly2\teleport_damage
+
+tele_particles_small = anomaly2\gravity_damage_01_smoke ;anomaly2\gravity_damage_01_smoke
+tele_particles_big = anomaly2\gravity_damage_02_smoke
+
+
+idle_sound = semitone\anomalies\flash\flash_idle ;gravi_idle01 ;постоянный звук
+blowout_sound = $no_sound ;во время выброса(удара) в центре аномалии
+hit_sound = $no_sound ;anomaly\anomaly_gravy_hit1 ;на персонаже, когда тот получает хит
+body_tearing_sound = $no_sound ;anomaly\gravity_entrance ;звук разрывания трупа
+entrance_sound = $no_sound ;anomaly\gravi_idle01 ;при попадании объекта в аномалию
+
+hit_type = strike
+hit_impulse_scale = 0.0 ;0.5;0.1 ;соотношение физического импульса и силы хита
+effective_radius = 1 ;размер радиуса в процентах от оригинального, где действует зона
+
+disable_time = -1 ;5000 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = -1 ;500 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;-1 ;время отключения idle партиклов
+
+ignore_nonalive = false
+ignore_small = false
+ignore_artefacts = true
+
+blowout_light = off
+light_color = 1.4,1.6,1.8
+light_range = 30.0
+light_time = 0.8 ;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+idle_light = on ;off
+idle_light_range = 15.0
+idle_light_anim = teleport_stancia_in_01
+idle_light_height = 1.50 ;подъем источника света на высоту
+
+awaking_time = 0 ;5000 ;0;1000
+blowout_time = 500
+accamulate_time = 3000 ;1000
+
+
+blowout_light_time = 800
+blowout_explosion_time = 800
+
+;параметры телекинеза для зоны
+throw_in_impulse = 4000 ;сила втягивания для единичной массы на расстоянии один метр
+throw_out_impulse = 1500 ;сила выбрасывания взрывом
+throw_in_impulse_alive = 600 ;сила импульса втягивания для живых
+throw_in_atten = 8 ;8 ;коэфф. затягивания (чем меньше, тем плавнее затягивает)
+blowout_radius_percent = 0.8 ;радиус (в процентах от всего радиуса) непосредственно выброса
+actor_blowout_radius_percent= 0.5
+
+tele_height = 0.05 ;3.5 ;высота подъема телекинеза
+time_to_tele = 5000 ;время деражания объекта в воздухе
+tele_pause = 5000 ;пауза перед тем как снова поднять упавший объект
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = on
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 800
+blowout_wind_time_end = 1001 ;2499
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[zone_teleport]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones\scenes\teleport"
+$prefetch = 16
+class = ZS_MBALD
+
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+postprocess = postprocess_electra
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.00
+attenuation = 1
+
+idle_particles = anomaly2\teleport_idle
+blowout_particles = anomaly2\teleport
+tearing_particles = anomaly2\teleport_tear
+torn_particles = anomaly2\teleport_tear
+
+hit_small_particles = hit_fx\hit_metal_02
+hit_big_particles = anomaly2\teleport_damage
+idle_small_particles = anomaly2\teleport_damage_smoke_00
+idle_big_particles = anomaly2\teleport_damage_smoke_00
+entrance_small_particles = anomaly2\teleport_damage
+entrance_big_particles = anomaly2\teleport_damage
+
+tele_particles_small = anomaly2\gravity_damage_01_smoke ;anomaly2\gravity_damage_01_smoke
+tele_particles_big = anomaly2\gravity_damage_02_smoke
+
+
+idle_sound = anomaly\teleport_idle; gravi_idle01 ;постоянный звук
+blowout_sound = anomaly\teleport_work_2; anomaly_gravy_blast01 ;во время выброса(удара) в центре аномалии
+hit_sound = anomaly\anomaly_gravy_hit1 ;на персонаже, когда тот получает хит
+body_tearing_sound = anomaly\gravity_entrance ;звук разрывания трупа
+entrance_sound = anomaly\gravi_idle01 ;при попадании объекта в аномалию
+
+hit_type = strike
+hit_impulse_scale = 0.0;0.5;0.1 ;соотношение физического импульса и силы хита
+effective_radius = 1 ;размер радиуса в процентах от оригинального, где действует зона
+
+disable_time = 5000 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 500 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100;-1 ;время отключения idle партиклов
+
+ignore_nonalive = false
+ignore_small = false
+ignore_artefacts = true
+
+blowout_light = on
+light_color = 1.4,1.6,1.8
+light_range = 30.0
+light_time = 0.8;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+idle_light = on
+idle_light_range = 15.0
+idle_light_anim = teleport_stancia_in_01
+idle_light_height = 3.0 ;подъем источника света на высоту
+
+awaking_time = 0;1000
+blowout_time = 1000
+accamulate_time = 500
+
+
+blowout_light_time = 800
+blowout_explosion_time = 800
+
+;параметры телекинеза для зоны
+throw_in_impulse = 4000 ;сила втягивания для единичной массы на расстоянии один метр
+throw_out_impulse = 1500 ;сила выбрасывания взрывом
+throw_in_impulse_alive = 600 ;сила импульса втягивания для живых
+throw_in_atten = 8;8 ;коэфф. затягивания (чем меньше, тем плавнее затягивает)
+blowout_radius_percent = 0.8 ;радиус (в процентах от всего радиуса) непосредственно выброса
+actor_blowout_radius_percent= 0.5
+
+tele_height = 0.05; 3.5 ;высота подъема телекинеза
+time_to_tele = 5000 ;время деражания объекта в воздухе
+tele_pause = 5000 ;пауза перед тем как снова поднять упавший объект
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = on
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 800
+blowout_wind_time_end = 1001; 2499
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+
+
+
+[zone_teleport_chaes]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones\scenes\teleport"
+$prefetch = 16
+class = ZS_MBALD
+
+ef_anomaly_type = 1
+ef_weapon_type = 13
+
+postprocess = postprocess_electra
+
+;----------- Anomaly settings -----------------------
+max_start_power = 0.00
+attenuation = 1
+
+idle_particles = anomaly2\teleport_idle
+blowout_particles = anomaly2\teleport
+tearing_particles = anomaly2\teleport_tear
+torn_particles = anomaly2\teleport_tear
+
+hit_small_particles = hit_fx\hit_metal_02
+hit_big_particles = anomaly2\teleport_damage
+idle_small_particles = anomaly2\teleport_damage_smoke_00
+idle_big_particles = anomaly2\teleport_damage_smoke_00
+entrance_small_particles = anomaly2\teleport_damage
+entrance_big_particles = anomaly2\teleport_damage
+
+tele_particles_small = anomaly2\gravity_damage_01_smoke ;anomaly2\gravity_damage_01_smoke
+tele_particles_big = anomaly2\gravity_damage_02_smoke
+
+
+idle_sound = $no_sound ;semitone\anomalies\gravitational_strong\gravitational_strong_idle ;постоянный звук
+blowout_sound = anomaly\teleport_work_2 ;anomaly_gravy_blast01 ;во время выброса(удара) в центре аномалии
+hit_sound = anomaly\anomaly_gravy_hit1 ;на персонаже, когда тот получает хит
+body_tearing_sound = anomaly\gravity_entrance ;звук разрывания трупа
+entrance_sound = anomaly\gravi_idle01 ;при попадании объекта в аномалию
+
+hit_type = strike
+hit_impulse_scale = 0.0 ;0.5;0.1 ;соотношение физического импульса и силы хита
+effective_radius = 1 ;размер радиуса в процентах от оригинального, где действует зона
+
+disable_time = 5000 ;время игнорирования неживого объекта в зоне (-1 если не нужно)
+disable_time_small = 500 ;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
+disable_idle_time = 100 ;-1 ;время отключения idle партиклов
+
+ignore_nonalive = false
+ignore_small = false
+ignore_artefacts = true
+
+blowout_light = on
+light_color = 1.4,1.6,1.8
+light_range = 30.0
+light_time = 0.8 ;0.35
+light_height = 1.5 ;подъем источника света на высоту
+
+idle_light = off ;on
+idle_light_range = 15.0
+idle_light_anim = teleport_stancia_in_01
+idle_light_height = 1.50 ;подъем источника света на высоту
+
+awaking_time = 0 ;5000 ;0;1000
+blowout_time = 100 ;500
+accamulate_time = 3000 ;1000
+
+
+blowout_light_time = 100 ;800
+blowout_explosion_time = 100 ;800
+
+;параметры телекинеза для зоны
+throw_in_impulse = 4000 ;сила втягивания для единичной массы на расстоянии один метр
+throw_out_impulse = 1500 ;сила выбрасывания взрывом
+throw_in_impulse_alive = 600 ;сила импульса втягивания для живых
+throw_in_atten = 8 ;8 ;коэфф. затягивания (чем меньше, тем плавнее затягивает)
+blowout_radius_percent = 0.8 ;радиус (в процентах от всего радиуса) непосредственно выброса
+actor_blowout_radius_percent= 0.5
+
+tele_height = 0.05 ;3.5 ;высота подъема телекинеза
+time_to_tele = 5000 ;время деражания объекта в воздухе
+tele_pause = 5000 ;пауза перед тем как снова поднять упавший объект
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ветер
+blowout_wind = on
+
+blowout_wind_time_start = 0
+blowout_wind_time_peak = 800
+blowout_wind_time_end = 1001 ;2499
+blowout_wind_power = 0.5 ;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak
+
+visible_by_detector = off
+
+
+
diff --git a/mods/Arrival/gamedata/configs/zones/zone_unknow.ltx b/mods/Arrival/gamedata/configs/zones/zone_unknow.ltx
new file mode 100644
index 00000000..d122aff4
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zone_unknow.ltx
@@ -0,0 +1,63 @@
+;----------- ГЂГîìà ëèÿ Õâà òà ëêà -----------------------
+[zone_unknown]:zone_base
+GroupControlSection = spawn_group_zone
+$spawn = "zones\ameba\hvatalka"
+;$prefetch = 64
+$def_sphere = 2.5
+class = ZS_BFUZZ
+visual = dynamics\anomaly\anomaly_hvatalka
+min_speed_to_react = 1.00 ; 1.00 < 2.00
+ef_anomaly_type = 2
+ef_weapon_type = 14
+
+hit_impulse_scale = 01
+effective_radius = 1 ;ðà çìåð ðà äèóñà â ïðîöåГГІГ Гµ îò îðèãèГà ëüГîãî, ãäå äåéñòâóåò çîГГ
+sound = zone_mosquito_bald
+postprocess = postprocess_fuzz
+
+shape_transp_color = 255, 0, 0, 60
+shape_edge_color = 32, 32, 32, 255
+
+
+;----------- Anomaly settings -----------------------
+;min_start_power = 0.49
+max_start_power = 0.5
+attenuation = 1
+;period = 1
+
+idle_particles = anomaly2\pux_idle
+blowout_particles = _samples_particles_\pux_atack
+idle_small_particles = anomaly2\effects\gele_00
+idle_big_particles = _samples_particles_\pux_atack
+
+blowout_sound = ambient\rnd_outdoor\rnd_fly2
+hit_sound = ambient\rnd_outdoor\rnd_fly1
+entrance_sound = ambient\rnd_outdoor\rnd_flies_1
+
+hit_type = strike
+
+disable_time = 10000
+disable_time_small = -1
+disable_idle_time = 50000
+
+ignore_nonalive = false
+ignore_small = false
+ignore_artefacts = true
+
+awaking_time = 100
+blowout_time = 7000
+accamulate_time = 250
+
+attack_animation_start = 0
+attack_animation_end = 5000
+
+blowout_light = off
+idle_light = off
+
+;visible_by_detector = on
+
+blowout_wind = off
+
+;ðîæäåГГЁГҐ à ðòåôà êòîâ ГўГ® âðåìÿ ñðà áà òûâà ГГЁГї
+;spawn_blowout_artefacts = off
+
diff --git a/mods/Arrival/gamedata/configs/zones/zones.ltx b/mods/Arrival/gamedata/configs/zones/zones.ltx
new file mode 100644
index 00000000..832d65a8
--- /dev/null
+++ b/mods/Arrival/gamedata/configs/zones/zones.ltx
@@ -0,0 +1,50 @@
+; Uncomment below to enable, delete everything else under below
+
+;#include "zone_*.ltx"
+
+
+;;===== The Arrival ======;;
+
+#include "zone_base.ltx"
+#include "zone_campfire.ltx"
+
+#include "zone_burningfuzz.ltx"
+#include "zone_minefield.ltx"
+#include "zone_nogravity.ltx"
+#include "zone_teleport.ltx"
+#include "zone_fireball.ltx"
+#include "zone_generator.ltx"
+
+#include "zone_field_acidic.ltx"
+#include "zone_field_psychic.ltx"
+#include "zone_field_radioactive.ltx"
+#include "zone_field_thermal.ltx"
+
+#include "zone_mine_acidic.ltx"
+#include "zone_mine_electric.ltx"
+#include "zone_mine_gravitational.ltx"
+#include "zone_mine_thermal.ltx"
+
+#include "zone_monolith.ltx"
+#include "zone_liana.ltx"
+#include "zone_hvatalka.ltx"
+#include "zone_studen.ltx"
+#include "zone_mosquitobald.ltx"
+#include "zone_unknow.ltx"
+
+
+#include "zone_mine_sphere.ltx"
+#include "zone_mine_mefistotel.ltx"
+#include "zone_mine_point.ltx"
+#include "zone_mine_cdf.ltx"
+#include "zone_mine_flash.ltx"
+#include "zone_mine_ghost.ltx"
+#include "zone_mine_net.ltx"
+#include "zone_mine_gold.ltx"
+#include "zone_mine_thorn.ltx"
+#include "zone_mine_seed.ltx"
+#include "zone_mine_shatterpoint.ltx"
+#include "zone_mine_sloth.ltx"
+#include "zone_mine_umbra.ltx"
+;Updated
+#include "zone_mine_updated.ltx"
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/environmental/Dandelion_Seed_v1.dds b/mods/Arrival/gamedata/environmental/Dandelion_Seed_v1.dds
new file mode 100644
index 00000000..dffdf62c
--- /dev/null
+++ b/mods/Arrival/gamedata/environmental/Dandelion_Seed_v1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c076a4872b70d5f7baee5f0e088b6dcec4b9b6fbc0b70b4333e010acd5c732ff
+size 5616
diff --git a/mods/Arrival/gamedata/environmental/Dandelion_Seed_v2.dds b/mods/Arrival/gamedata/environmental/Dandelion_Seed_v2.dds
new file mode 100644
index 00000000..271b42c3
--- /dev/null
+++ b/mods/Arrival/gamedata/environmental/Dandelion_Seed_v2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c26583a01c7d1efbaf621d45f09c69029fd933801c1301971d505b612b668c73
+size 5616
diff --git a/mods/Arrival/gamedata/environmental/Maple_Seed_v1.dds b/mods/Arrival/gamedata/environmental/Maple_Seed_v1.dds
new file mode 100644
index 00000000..0ff95ce8
--- /dev/null
+++ b/mods/Arrival/gamedata/environmental/Maple_Seed_v1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f9e09c17e231e2ca47ea7004a978f4462ec429e12e20e48845de54e2c0b1a0d9
+size 5616
diff --git a/mods/Arrival/gamedata/environmental/Maple_Seed_v2.dds b/mods/Arrival/gamedata/environmental/Maple_Seed_v2.dds
new file mode 100644
index 00000000..b527413b
--- /dev/null
+++ b/mods/Arrival/gamedata/environmental/Maple_Seed_v2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e98a9dbef4500234ff7d7afdce995dcf4dab3bd5f5776dd73ea73b1ecf3c6260
+size 5616
diff --git a/mods/Arrival/gamedata/levels/l01_escape/level.ps_static b/mods/Arrival/gamedata/levels/l01_escape/level.ps_static
new file mode 100644
index 00000000..120605e5
Binary files /dev/null and b/mods/Arrival/gamedata/levels/l01_escape/level.ps_static differ
diff --git a/mods/Arrival/gamedata/levels/l10_limansk/level.ps_static b/mods/Arrival/gamedata/levels/l10_limansk/level.ps_static
new file mode 100644
index 00000000..e3bdff6f
Binary files /dev/null and b/mods/Arrival/gamedata/levels/l10_limansk/level.ps_static differ
diff --git a/mods/Arrival/gamedata/levels/l10_red_forest/level.ps_static b/mods/Arrival/gamedata/levels/l10_red_forest/level.ps_static
new file mode 100644
index 00000000..87bb2b00
Binary files /dev/null and b/mods/Arrival/gamedata/levels/l10_red_forest/level.ps_static differ
diff --git a/mods/Arrival/gamedata/particles/anomaly2/anomaly_teleport.pg b/mods/Arrival/gamedata/particles/anomaly2/anomaly_teleport.pg
new file mode 100644
index 00000000..7cc26463
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/anomaly2/anomaly_teleport.pg
@@ -0,0 +1,231 @@
+[_group]
+ effects_count = 25
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\anomaly_teleport_bubble_colorrr
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\anomaly_teleport_bubble_sphere_dist_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\anomaly_teleport_bubble_sphere_core_steam_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\anomaly_teleport_bubble_sphere_000
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\anomaly_teleport_bubble_sphere_001
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\anomaly_teleport_bubble_sphere_002
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\anomaly_teleport_bubble_sphere_004
+ flags = 68
+ on_birth_child =
+ on_death_child = semitone\anomalies\spatial_bubble_limansk\anomaly_teleport_electric_smoke_puff_00
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0007]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\anomaly_teleport_bubble_sphere_006
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0008]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\anomaly_teleport_bubble_sphere_outter_pulse
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0009]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\anomaly_teleport_particle_output_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0010]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\teleport_leaves_orbit_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0011]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\teleport_leaves_orbit_1
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0012]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\anomaly_teleport_bubble_sphere_fuzzzzz
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0013]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\anomaly_teleport_bubble_sphere_fuzz_000
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0014]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\anomaly_teleport_bubble_sphere_fuzz_001
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0015]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\anomaly_teleport_bubble_sphere_fuzz_big_left
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0016]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\anomaly_teleport_bubble_sphere_fuzz_big_up
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0017]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\anomaly_teleport_sphere_graviti_distort_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0018]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\spatial_bubble_rupture_wave_blast_dist_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0019]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\gravity_dust_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0020]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\teleport_core_unstalble_2_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0021]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\teleport_core_sparks_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0022]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\anomaly_teleport_flare1_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0023]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\teleport_flare_blue_2_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0024]
+ effect_name = semitone\anomalies\spatial_bubble_limansk\impact_dist_00
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/anomaly2/studen_idle_bottom.pg b/mods/Arrival/gamedata/particles/anomaly2/studen_idle_bottom.pg
new file mode 100644
index 00000000..2a5ec686
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/anomaly2/studen_idle_bottom.pg
@@ -0,0 +1,123 @@
+[_group]
+ effects_count = 13
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_02
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_08
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_05
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\acidic\effects\idle\studen_idle_glow_00
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_07
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_glow_02
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_07_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_shader
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0007]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_top_heat_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0008]
+ effect_name = semitone\anomalies\acidic\effects\idle\anomaly_toxic_particle_test
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0009]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_03
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0010]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_20
+ flags = 36
+ on_birth_child = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_09
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0011]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0012]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_12
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/anomaly2/studen_idle_bottom_00.pg b/mods/Arrival/gamedata/particles/anomaly2/studen_idle_bottom_00.pg
new file mode 100644
index 00000000..4fea99b4
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/anomaly2/studen_idle_bottom_00.pg
@@ -0,0 +1,87 @@
+[_group]
+ effects_count = 9
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_02
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_08
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_05
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\acidic\effects\idle\studen_idle_glow_00
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_07
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_glow_02
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_07_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_shader
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0007]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_12
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0008]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/acidic_hit.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/acidic_hit.pg
new file mode 100644
index 00000000..338fe8bf
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/acidic_hit.pg
@@ -0,0 +1,24 @@
+[_group]
+ effects_count = 2
+ flags = 0
+ timelimit = 2.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\acidic\effects\hit\zone_acidic_mine_hit_1_09
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\acidic\effects\hit\zone_acidic_hit_big_dist
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/acidic_mine_hit.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/acidic_mine_hit.pg
new file mode 100644
index 00000000..188bdd2d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/acidic_mine_hit.pg
@@ -0,0 +1,51 @@
+[_group]
+ effects_count = 5
+ flags = 0
+ timelimit = 2.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\acidic\effects\hit\zone_acidic_mine_hit_1
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 1.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\acidic\effects\hit\zone_acidic_mine_hit_1_08
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 2.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\acidic\effects\hit\zone_acidic_mine_hit_1_09
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 2.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\acidic\effects\hit\zone_acidic_mine_hit_1_10
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 1.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\acidic\effects\hit\zone_acidic_mine_hit_1_11
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/acidic_mine_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/acidic_mine_idle.pg
new file mode 100644
index 00000000..1e90421a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/acidic_mine_idle.pg
@@ -0,0 +1,78 @@
+[_group]
+ effects_count = 8
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_02
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\acidic\effects\idle\acidic_mine_smok
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_shader
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\acidic\effects\idle\anomaly_toxic_particle_test_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_glow_02
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_12
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0007]
+ effect_name = semitone\anomalies\acidic\effects\idle\studen_idle_bottom_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/campfire_flame_hd_smoke_11.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/campfire_flame_hd_smoke_11.pe
new file mode 100644
index 00000000..3fbd1916
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/campfire_flame_hd_smoke_11.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 12585985
+ max_particles = 125
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.937255, 0.980392, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 1.600000, 1.600000, 1.600000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.835294, 0.811765, 0.670588
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.400000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.045000, 0.600000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 3.141593, 3.141593, 3.141593
+ v1 = -3.141593, -3.141593, -3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.750000, 0.750000, 0.750000
+ v1 = 1.250000, 1.250000, 1.250000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.500000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 93.000000, 146.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\smokeburstpuffanim
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/studen_idle_bottom_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/studen_idle_bottom_01.pe
new file mode 100644
index 00000000..aba08e58
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/studen_idle_bottom_01.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 19457
+ max_particles = 20
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.500000, 2.500000, 2.500000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.466667, 0.556863, 0.313726
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, -0.050000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.400000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -3.141593, -3.141593, -3.141593
+ v1 = 3.141593, 3.141593, 3.141593
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 125
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\slime_anim_b
+
+[timelimit]
+ value = 0.700000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/zone_acidic_hit_big_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/zone_acidic_hit_big_dist.pe
new file mode 100644
index 00000000..28de27a7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/zone_acidic_hit_big_dist.pe
@@ -0,0 +1,142 @@
+[_effect]
+ action_count = 10
+ flags = 2136065
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.200000
+ version = 1
+
+[action_0001]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ flt_0001 = 3000.000000
+ flt_0002 = 1.800000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = damping
+ action_type = 4
+ flags = 1
+ flt_0000 = 80.000000
+ flt_0001 = 1.000000
+ vec_0000 = -17.000000, -17.000000, -17.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.000000
+ flt_0003 = 120.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 2
+ version = 1
+
+[action_0005]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.996078, 1.000000, 0.886275
+ version = 1
+
+[action_0006]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 6.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0007]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0009]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.380392, 0.380392, 0.380392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 0.000000
+ v1 = 0.800000, 0.800000, 0.800000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -4.000000, -4.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 4
+ v0 = -2.000000, 0.000000, -2.000000
+ v1 = 2.000000, -1.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\acidic_mine\pfx_distortion
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/zone_acidic_mine_hit_1.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/zone_acidic_mine_hit_1.pe
new file mode 100644
index 00000000..62c0d655
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/zone_acidic_mine_hit_1.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.800000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.533333, 0.623529, 0.396078
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.500000, 0.500000, 0.500000
+ vec_0001 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.533333, 0.623529, 0.396078
+ v1 = 0.372549, 0.447059, 0.309804
+ v2 = 0.345098, 0.274510, 0.231373
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 6.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\smallsplashatlas
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/zone_acidic_mine_hit_1_08.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/zone_acidic_mine_hit_1_08.pe
new file mode 100644
index 00000000..afecf965
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/zone_acidic_mine_hit_1_08.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.533333, 0.623529, 0.396078
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.500000, 0.500000, 0.500000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.533333, 0.623529, 0.396078
+ v1 = 0.372549, 0.447059, 0.309804
+ v2 = 0.345098, 0.274510, 0.231373
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 6.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\smoke_tiled_d
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/zone_acidic_mine_hit_1_09.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/zone_acidic_mine_hit_1_09.pe
new file mode 100644
index 00000000..d2a277a1
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/zone_acidic_mine_hit_1_09.pe
@@ -0,0 +1,114 @@
+[_effect]
+ action_count = 8
+ flags = 20481
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.568628, 0.619608, 0.494118
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -2.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.564706, 0.619608, 0.482353
+ v1 = 0.372549, 0.447059, 0.309804
+ v2 = 0.345098, 0.274510, 0.231373
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 8.000000, 0.000000
+ v2 = 0.000000, 12.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\spore_white
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/zone_acidic_mine_hit_1_10.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/zone_acidic_mine_hit_1_10.pe
new file mode 100644
index 00000000..c9ebf917
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/zone_acidic_mine_hit_1_10.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.533333, 0.623529, 0.396078
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.500000
+ vec_0001 = 6.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.533333, 0.623529, 0.396078
+ v1 = 0.372549, 0.447059, 0.309804
+ v2 = 0.345098, 0.274510, 0.231373
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 2.000000, 4.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\smoke_tiled_d
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/zone_acidic_mine_hit_1_11.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/zone_acidic_mine_hit_1_11.pe
new file mode 100644
index 00000000..96d472c5
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/hit/zone_acidic_mine_hit_1_11.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.250000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.533333, 0.623529, 0.396078
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 4.000000, 4.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.533333, 0.623529, 0.396078
+ v1 = 0.372549, 0.447059, 0.309804
+ v2 = 0.345098, 0.274510, 0.231373
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 8.000000, 0.000000
+ v1 = 0.000000, 7.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\smoke_tiled_b
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/acidic_mine_smok.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/acidic_mine_smok.pe
new file mode 100644
index 00000000..466e569d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/acidic_mine_smok.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 1.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.050000, 0.050000, 0.050000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.700000, 0.700000, 0.000000
+ vec_0001 = 3.000000, 3.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 2.273140, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 1
+ v0 = 0.290196, 0.286275, 0.172549
+ v1 = 0.100000, 0.100000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.400000, 0.000000
+ v1 = 0.500000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\pfx_smoke_b
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/anomaly_dao_darkness_big_puff_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/anomaly_dao_darkness_big_puff_01.pe
new file mode 100644
index 00000000..5a574143
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/anomaly_dao_darkness_big_puff_01.pe
@@ -0,0 +1,160 @@
+[_effect]
+ action_count = 11
+ flags = 3073
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 0.700000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 4.000000
+ flt_0001 = 100.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 25.000000
+ flt_0001 = 200.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 5.000000, -2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0010]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.643137, 0.639216, 0.329412
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = -0.500000, 0.000000, -0.500000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -29.999994, -29.999994
+ v1 = -180.000000, 29.999994, 29.999994
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.200000, 0.200000
+ v1 = 3.000000, 3.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 100.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/anomaly_toxic_particle_test.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/anomaly_toxic_particle_test.pe
new file mode 100644
index 00000000..4a737efb
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/anomaly_toxic_particle_test.pe
@@ -0,0 +1,133 @@
+[_effect]
+ action_count = 9
+ flags = 2103297
+ max_particles = 35
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 16.000000, 16.000000, 16.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -16.000000, -16.000000, -16.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 13.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 360.000000, 0.000000, 30.000000
+ vec_0001 = 720.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 0.541176, 0.521569, 0.325490
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.500000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 1.000000, 0.300000, 0.000000
+ v1 = 3.000000, 8.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\fx_moon_full_foggy
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/anomaly_toxic_particle_test_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/anomaly_toxic_particle_test_00.pe
new file mode 100644
index 00000000..e83317b1
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/anomaly_toxic_particle_test_00.pe
@@ -0,0 +1,147 @@
+[_effect]
+ action_count = 10
+ flags = 2103297
+ max_particles = 35
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 16.000000, 16.000000, 16.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -16.000000, -16.000000, -16.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 32.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 360.000000, 0.000000, 30.000000
+ vec_0001 = 720.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0009]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 0.611765, 0.635294, 0.286275
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.500000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.150000, 0.150000, 0.150000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = -2.000000, 2.000000, -2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0008_0000]
+ type = 4
+ v0 = 4.000000, 0.000000, 4.000000
+ v1 = -4.000000, -3.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\fx_moon_full_foggy
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_00.pe
new file mode 100644
index 00000000..0404f17b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_00.pe
@@ -0,0 +1,98 @@
+[_effect]
+ action_count = 6
+ flags = 2134017
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.800000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\acidic_mine\distort_anomaly_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_01.pe
new file mode 100644
index 00000000..3e18c57c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_01.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 37889
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 900.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.500000, 2.500000, 2.500000
+ vec_0001 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.949020, 0.941177, 0.313726
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.400000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 3.141593, 3.141593, 3.141593
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.000000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 4.000000, 0.000000
+ v1 = 2.000000, 4.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\rain_drop2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_02.pe
new file mode 100644
index 00000000..4a879f4a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_02.pe
@@ -0,0 +1,102 @@
+[_effect]
+ action_count = 6
+ flags = 7169
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.500000, 2.500000, 2.500000
+ vec_0001 = 1.500000, 1.500000, 1.500000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.619608, 0.615686, 0.392157
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.300000, 0.300000, 0.300000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 0.250000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\smokeburstpuffanim
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_03.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_03.pe
new file mode 100644
index 00000000..cc567a99
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_03.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 8
+ flags = 3073
+ max_particles = 10
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.500000, 2.500000, 2.500000
+ vec_0001 = 1.500000, 1.500000, 1.500000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.012800
+ vec_0000 = 50.837220, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.494118, 0.474510, 0.270588
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, -0.050000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.650000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.300000, 0.300000, 0.300000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\slime_anim_a_spec
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_05.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_05.pe
new file mode 100644
index 00000000..1f677969
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_05.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 3073
+ max_particles = 10
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.500000, 2.500000, 2.500000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.556863, 0.560784, 0.313726
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, -0.050000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.400000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -3.141593, -3.141593, -3.141593
+ v1 = 3.141593, 3.141593, 3.141593
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 125
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\slime_anim_b
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_07.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_07.pe
new file mode 100644
index 00000000..a52436b6
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_07.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 3073
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.500000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 0.200000
+ vec_0000 = 0.529412, 0.541176, 0.270588
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 0.003922, 0.003922, 0.003922
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.541176, 0.537255, 0.270588
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, -0.050000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.650000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.300000, 0.300000, 0.300000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_07_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_07_00.pe
new file mode 100644
index 00000000..4763cb76
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_07_00.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 3073
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.500000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 0.200000
+ vec_0000 = 0.541176, 0.521569, 0.325490
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.533333, 0.541176, 0.325490
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, -0.050000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.650000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 1.570796, 1.570796, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.300000, 0.300000, 0.300000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_08.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_08.pe
new file mode 100644
index 00000000..b7f64606
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_08.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 8
+ flags = 5121
+ max_particles = 14
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.500000, 2.500000, 2.500000
+ vec_0001 = 2.000000, 2.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.012800
+ vec_0000 = 50.837220, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.450980, 0.568628, 0.278431
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.650000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.300000, 0.300000, 0.300000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\smoke_tiled_b
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_09.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_09.pe
new file mode 100644
index 00000000..94838da3
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_09.pe
@@ -0,0 +1,116 @@
+[_effect]
+ action_count = 7
+ flags = 54273
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 900.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.500000, 2.500000, 2.500000
+ vec_0001 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.949020, 0.941177, 0.313726
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.400000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 3.141593, 3.141593, 3.141593
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.000000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 4.000000, 0.000000
+ v1 = 2.000000, 4.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\rain_drop2
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_12.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_12.pe
new file mode 100644
index 00000000..2e65adf7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_12.pe
@@ -0,0 +1,105 @@
+[_effect]
+ action_count = 6
+ flags = 2135041
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.760784, 0.709804, 0.364706
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.600000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\water_river_a
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_20.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_20.pe
new file mode 100644
index 00000000..0c84c757
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_20.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 3073
+ max_particles = 14
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.500000, 2.500000, 2.500000
+ vec_0001 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.949020, 0.882353, 0.313726
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, -0.050000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.400000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 125
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\slime_anim_a_diff
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_glow_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_glow_02.pe
new file mode 100644
index 00000000..2dd2feb4
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_glow_02.pe
@@ -0,0 +1,96 @@
+[_effect]
+ action_count = 5
+ flags = 273409
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.800000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 8.000000, 8.000000, 0.000000
+ vec_0001 = 2.000000, 3.000000, 0.001000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.737255, 0.760784, 0.364706
+ v1 = 0.188235, 0.419608, 0.176471
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 0.700000, 0.100000, 0.700000
+ v1 = -0.700000, 0.000000, -0.700000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 6
+ frame_count = 66
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.166667, 0.090909
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\acid_smoke_512
+
+[velocity_scale]
+ value = 0.000000, 0.020000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_shader.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_shader.pe
new file mode 100644
index 00000000..c2c0cb62
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_bottom_shader.pe
@@ -0,0 +1,117 @@
+[_effect]
+ action_count = 8
+ flags = 2049
+ max_particles = 20
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.800000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.500000, 2.500000, 2.500000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, -0.050000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.400000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -3.141593, -3.141593, -3.141593
+ v1 = 3.141593, 3.141593, 3.141593
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 4
+ v0 = 4.000000, -0.200000, 4.000000
+ v1 = -4.000000, -0.300000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\acidic_mine\pfx_distortion
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_glow_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_glow_00.pe
new file mode 100644
index 00000000..254ffc13
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_glow_00.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 22529
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 0.000000
+ vec_0001 = 4.000000, 4.000000, 0.001000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.949020, 0.941177, 0.313726
+ v1 = 0.188235, 0.419608, 0.176471
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.080000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.400000, 0.400000, 0.400000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\puffcolorsplash
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_glow_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_glow_02.pe
new file mode 100644
index 00000000..bf7dded8
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_glow_02.pe
@@ -0,0 +1,96 @@
+[_effect]
+ action_count = 5
+ flags = 267265
+ max_particles = 6
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 0.000000
+ vec_0001 = 4.000000, 1.500000, 0.001000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.533333, 0.541176, 0.325490
+ v1 = 0.188235, 0.419608, 0.176471
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\cumulus_02
+
+[velocity_scale]
+ value = 0.000000, 0.020000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_top_heat.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_top_heat.pe
new file mode 100644
index 00000000..163f4e2b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_top_heat.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 8
+ flags = 1058817
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 3
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0004]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.039000
+ flt_0001 = 1.000000
+ flt_0002 = 4.000000
+ int_0000 = 2
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 3
+ vec_0000 = 0.000000, 5.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.588235, 0.588235, 0.588235
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 1.000000, -3.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -13.962634, -13.962634, -13.962634
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, -0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.000000, 24.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\acidic_mine\pfx_dist2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_top_heat_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_top_heat_00.pe
new file mode 100644
index 00000000..4773018a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/studen_idle_top_heat_00.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 8
+ flags = 1058817
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 3
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0004]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.039000
+ flt_0001 = 1.000000
+ flt_0002 = 4.000000
+ int_0000 = 2
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 3
+ vec_0000 = 0.000000, 5.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.588235, 0.588235, 0.588235
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 0.500000, 3.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -13.962634, -13.962634, -13.962634
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, -0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.000000, 24.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\acidic_mine\pfx_dist2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/zone_acidic_idle_trail_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/zone_acidic_idle_trail_00.pe
new file mode 100644
index 00000000..5832c4b4
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/acidic/effects/idle/zone_acidic_idle_trail_00.pe
@@ -0,0 +1,103 @@
+[_effect]
+ action_count = 7
+ flags = 2049
+ max_particles = 6
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 6.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.900000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.010000
+ vec_0000 = 30.002210, 30.002210, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.533333, 0.623529, 0.396078
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -6.283186, -6.283186, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\spore_white
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/cdf_blowout.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/cdf_blowout.pg
new file mode 100644
index 00000000..4837aed9
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/cdf_blowout.pg
@@ -0,0 +1,51 @@
+[_group]
+ effects_count = 5
+ flags = 0
+ timelimit = 4.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\cdf\effects\anomaly_dao_glow_radar_blast
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\cdf\effects\anomaly_dao_radar_blast_core_dist_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\cdf\effects\anomaly_dao_radar_blast_core_dist_01
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\cdf\effects\gold_shield_dist_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\cdf\effects\anomaly_dao_wave_blast_dist_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/cdf_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/cdf_idle.pg
new file mode 100644
index 00000000..2b2066fb
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/cdf_idle.pg
@@ -0,0 +1,69 @@
+[_group]
+ effects_count = 7
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\cdf\effects\radar_ground_orbiting_leaves_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\cdf\effects\radar_smoke_fast
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\cdf\effects\anomaly_dao_core_flare_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\cdf\effects\radar_leaves_damping
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\cdf\effects\anomaly_dao_glow_damping_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\cdf\effects\anomaly_dao_radar_echo_shader_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\cdf\effects\radar_center_smoke
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_core_flare_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_core_flare_00.pe
new file mode 100644
index 00000000..b8dba7db
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_core_flare_00.pe
@@ -0,0 +1,94 @@
+[_effect]
+ action_count = 6
+ flags = 4097
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 5.000000, 5.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.054902, 0.090196, 0.098039
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 13.500000, 0.000000
+ v1 = 4.000000, 25.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\cdf\white_flare
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_glow_damping_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_glow_damping_00.pe
new file mode 100644
index 00000000..ccd2b5a3
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_glow_damping_00.pe
@@ -0,0 +1,106 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.450000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.023529, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 15.000000, 15.000000, 12.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = 39.866164, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ flt_0001 = 220.000000
+ flt_0002 = 66.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 25.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.054902, 0.090196, 0.098039
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 10.000000, 0.000000
+ v1 = 0.000000, 14.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\cdf\smokecloud4
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_glow_damping_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_glow_damping_01.pe
new file mode 100644
index 00000000..d063d4ae
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_glow_damping_01.pe
@@ -0,0 +1,106 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 22
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 55.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.023529, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 18.000000, 18.000000, 10.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = 39.866164, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ flt_0001 = 220.000000
+ flt_0002 = 66.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 25.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.054902, 0.090196, 0.098039
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 10.000000, 0.000000
+ v1 = 0.000000, 14.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\cdf\puffcolorsplashflicker2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_glow_radar_blast.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_glow_radar_blast.pe
new file mode 100644
index 00000000..8d6d4754
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_glow_radar_blast.pe
@@ -0,0 +1,127 @@
+[_effect]
+ action_count = 9
+ flags = 1
+ max_particles = 75
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.450000
+ flt_0002 = 0.000000
+ flt_0003 = 55.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.023529, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 15.000000, 15.000000, 5.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 39.866164, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = -5.000000
+ flt_0001 = 220.000000
+ flt_0002 = 66.000000
+ vec_0000 = 0.000000, -37.000000, 0.000000
+ vec_0001 = 0.000000, 25.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = randomvelocity
+ action_type = 17
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = speedlimit
+ action_type = 22
+ flags = 0
+ flt_0000 = 25.000000
+ flt_0001 = 12.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.054902, 0.090196, 0.098039
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 14.000000, 0.000000
+ v1 = 0.000000, 16.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, -5.000000, 0.000000
+ v1 = 0.000000, -10.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 4
+ v0 = 2.000000, 0.000000, 2.000000
+ v1 = -2.000000, -5.000000, -2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\cdf\puffcolorsplashflicker2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_radar_blast_core_dist_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_radar_blast_core_dist_00.pe
new file mode 100644
index 00000000..0c19047c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_radar_blast_core_dist_00.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 21505
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 55.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.400000
+ flt_0001 = 3.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 8.000000, 8.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 13.000000, 0.000000
+ v1 = 4.000000, 25.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 6.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 16.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\cdf\distort_anomaly_01
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_radar_blast_core_dist_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_radar_blast_core_dist_01.pe
new file mode 100644
index 00000000..b02ad1fd
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_radar_blast_core_dist_01.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 21505
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 55.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.400000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 8.000000, 8.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 13.000000, 0.000000
+ v1 = 4.000000, 25.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 6.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 16.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\cdf\pfx_dist2inv
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_radar_echo_shader_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_radar_echo_shader_00.pe
new file mode 100644
index 00000000..38e4fba9
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_radar_echo_shader_00.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 8
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 12.000000, 12.000000, 12.000000
+ vec_0001 = 4.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 0
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 13.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 6.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 5.000000, 5.000000, 5.000000
+ v1 = 0.500000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = -4.000000, -4.000000, -4.000000
+ v1 = 4.000000, 4.000000, 4.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\cdf\distort_anomaly_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_wave_blast_dist_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_wave_blast_dist_00.pe
new file mode 100644
index 00000000..c7b7c1c3
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/anomaly_dao_wave_blast_dist_00.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 18433
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.800000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 7.000000, 7.000000, 7.000000
+ vec_0001 = 15.000000, 15.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 13.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -1.570796, -1.570796, -1.570796
+ v1 = 1.570796, 1.570796, 1.570796
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\cdf\pfx_dist3
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/gold_shield_dist_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/gold_shield_dist_00.pe
new file mode 100644
index 00000000..75a86a0c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/gold_shield_dist_00.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 26625
+ max_particles = 3
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.330000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.831373, 0.792157, 0.701961
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 9.000000, 9.000000, 9.000000
+ vec_0001 = 0.500000, 0.500000, 0.500000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 13.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -6.108652, -6.108652, -6.108652
+ v1 = 6.108652, 6.108652, 6.108652
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 20.000000, 20.000000, 20.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\cdf\distort_anomaly_01
+
+[timelimit]
+ value = 0.500000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_center_smoke.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_center_smoke.pe
new file mode 100644
index 00000000..6edc3908
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_center_smoke.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 32
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 0.400000
+ vec_0001 = 6.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.005000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.168627, 0.258824, 0.290196
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 13.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.300000, 0.300000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 2.000000, 5.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\cdf\cumulus_02
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_electric_smoke.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_electric_smoke.pe
new file mode 100644
index 00000000..61f655cc
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_electric_smoke.pe
@@ -0,0 +1,101 @@
+[_effect]
+ action_count = 6
+ flags = 7169
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 21.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 2.500000, 2.500000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 10.000000, 0.000000
+ v1 = 2.000000, 6.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\cdf\electricblast3
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_electric_smoke_puf.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_electric_smoke_puf.pe
new file mode 100644
index 00000000..e4da59c1
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_electric_smoke_puf.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 19457
+ max_particles = 2
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.666667, 0.678431, 0.678431
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 15.000000, 15.000000, 0.100000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.666667, 0.678431, 0.678431
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 4.000000, 25.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -17.435840, -17.435840, -17.435840
+ v1 = 17.435840, 17.435840, 17.435840
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.400000, 0.400000, 0.500000
+ v1 = 2.000000, 2.000000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\cdf\smoke_burst_02
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_ground_orbiting_leaves_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_ground_orbiting_leaves_00.pe
new file mode 100644
index 00000000..fbeae399
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_ground_orbiting_leaves_00.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.349020, 0.403922, 0.349020
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.337255, 0.392157, 0.329412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 5.000000, 10.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.025000, 0.025000, 0.000000
+ v1 = 0.150000, 0.150000, 0.150000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.400000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 3.000000, 8.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\cdf\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_leaves_damping.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_leaves_damping.pe
new file mode 100644
index 00000000..5a9345dd
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_leaves_damping.pe
@@ -0,0 +1,131 @@
+[_effect]
+ action_count = 8
+ flags = 39937
+ max_particles = 250
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ flt_0001 = 222.000000
+ flt_0002 = 2222.000128
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ vec_0001 = 0.000000, 22.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 32.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.215686, 0.274510, 0.215686
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 0
+ v0 = 0.211765, 0.262745, 0.203922
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0005_0001]
+ type = 5
+ v0 = 0.000000, 14.000000, 0.000000
+ v1 = 2.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.200000, 0.200000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 5.000000, 10.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 16.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\cdf\bitsleaves01anim_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_smoke_fast.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_smoke_fast.pe
new file mode 100644
index 00000000..31352068
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_smoke_fast.pe
@@ -0,0 +1,168 @@
+[_effect]
+ action_count = 12
+ flags = 11265
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.300000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 10.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.619608, 0.635294, 0.619608
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 3.000000
+ flt_0001 = 150.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 25.000000
+ flt_0001 = 200.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 5.000000, -2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 0
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.082353, 0.113726, 0.180392
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 4.000000, 14.000000, 4.000000
+ v1 = -4.000000, 13.000000, -4.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 6
+ v0 = -12.566371, 0.052360, -0.052360
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 0.300000, -0.300000, 0.300000
+ v1 = -0.500000, 0.300000, -0.500000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 100.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\cdf\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_vacuum_leaves.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_vacuum_leaves.pe
new file mode 100644
index 00000000..0c34786f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/cdf/effects/radar_vacuum_leaves.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 6
+ flags = 39937
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.100000
+ flt_0001 = 100.000000
+ flt_0002 = 999999998050644.787200
+ vec_0000 = 0.000000, 20.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0003]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 8.000000
+ flt_0001 = -1.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0002_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 0
+ v0 = 0.396078, 0.427451, 0.368627
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0005_0001]
+ type = 9
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 0.000000, 8.000000, 0.000000
+ v2 = 0.000000, 18.000000, 0.000000
+
+[domain_action_0005_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.150000, 0.150000, 0.150000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0004]
+ type = 0
+ v0 = 0.500000, 4.000000, 0.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\cdf\bitsleaves01anim_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/anomaly_teleport_sphere_graviti_distort_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/anomaly_teleport_sphere_graviti_distort_00.pe
new file mode 100644
index 00000000..1528affe
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/anomaly_teleport_sphere_graviti_distort_00.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 16385
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.750000
+ flt_0002 = 0.000000
+ flt_0003 = 55.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 8.000000, 8.000000, 8.000000
+ vec_0001 = 2.000000, 3.700000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 0
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 2.000000, 2.000000
+ v1 = 0.500000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\electra\distort_anomaly_01
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/body_tear_blood_polter_flash_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/body_tear_blood_polter_flash_00.pe
new file mode 100644
index 00000000..4fa67f0f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/body_tear_blood_polter_flash_00.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 23553
+ max_particles = 3
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 900.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 15.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 12.000000, 12.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -1.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.060000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, -1.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.427451, 0.462745, 0.631373
+ v1 = 0.300000, 0.300000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 0.000000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 23.335052, -1.000004, -1.000004
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 0.000000
+ v1 = 12.000000, 12.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 4.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 64.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\electra\puffcolorsplashflicker
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_01.pe
new file mode 100644
index 00000000..213cd715
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_01.pe
@@ -0,0 +1,96 @@
+[_effect]
+ action_count = 5
+ flags = 8418305
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.301961, 0.513726, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 6.000000, 6.000000, 6.000000
+ vec_0001 = 9.000000, 9.000000, 9.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.309804, 0.537255, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 3.141593, 3.141593, 3.141593
+ v1 = 3.141593, 3.141593, 3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 5.000000, 0.000000
+ v2 = 0.000000, 24.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 64.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\electra\smokebasic01atlas
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_06.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_06.pe
new file mode 100644
index 00000000..ce562c1e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_06.pe
@@ -0,0 +1,105 @@
+[_effect]
+ action_count = 6
+ flags = 9460737
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 900.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 21.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 11.000000, 11.000000, 11.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 8.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.584314, 0.745098, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 1.570796, 1.570796, 1.570796
+ v1 = -3.141593, -3.141593, -3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 2.000000, 2.000000, 2.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 7.000000, 12.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 64.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\electra\gauss1
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_08.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_08.pe
new file mode 100644
index 00000000..f12e61cf
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_08.pe
@@ -0,0 +1,108 @@
+[_effect]
+ action_count = 6
+ flags = 9493505
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 900.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 21.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 11.000000, 11.000000, 11.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 8.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 3.839724, 3.839724, 3.839724
+ v1 = -3.141593, -3.141593, -3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 2.000000, 2.000000, 2.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 6.000000, 0.000000
+ v2 = 0.000000, 24.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 64.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\electra\electricblast3
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_1_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_1_00.pe
new file mode 100644
index 00000000..bf10b6aa
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_1_00.pe
@@ -0,0 +1,96 @@
+[_effect]
+ action_count = 5
+ flags = 8418305
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.200000, 0.439216, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 6.000000, 6.000000, 6.000000
+ vec_0001 = 9.000000, 9.000000, 9.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.184314, 0.564706, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 3.141593, 3.141593, 3.141593
+ v1 = 3.141593, 3.141593, 3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 5.000000, 0.000000
+ v2 = 0.000000, 24.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 64.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\electra\cumulus_02
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_new_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_new_00.pe
new file mode 100644
index 00000000..ea5d1490
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_new_00.pe
@@ -0,0 +1,105 @@
+[_effect]
+ action_count = 6
+ flags = 8412161
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 18.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 6.000000, 6.000000, 6.000000
+ vec_0001 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -3.141593, -3.141593, -3.141593
+ v1 = 3.141593, 3.141593, 3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 24.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 64.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\electra\electricblast2_blue
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_new_03.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_new_03.pe
new file mode 100644
index 00000000..91efa63b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_new_03.pe
@@ -0,0 +1,105 @@
+[_effect]
+ action_count = 6
+ flags = 8412161
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.300000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 18.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 6.000000, 6.000000, 6.000000
+ vec_0001 = 4.000000, 4.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.400000, 0.000000
+ v1 = 0.000000, 12.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -3.141593, -3.141593, -3.141593
+ v1 = 3.141593, 3.141593, 3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 21.000000, 32.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\electra\electricblast2_blue
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_new_04.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_new_04.pe
new file mode 100644
index 00000000..c16aab22
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_new_04.pe
@@ -0,0 +1,105 @@
+[_effect]
+ action_count = 6
+ flags = 8412161
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.200000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 18.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ vec_0001 = 3.000000, 3.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.400000, 0.000000
+ v1 = 0.000000, 12.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -3.141593, -3.141593, -3.141593
+ v1 = 3.141593, 3.141593, 3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 21.000000, 32.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\electra\electricblast1
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_new_05.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_new_05.pe
new file mode 100644
index 00000000..bd66c5d0
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_new_05.pe
@@ -0,0 +1,105 @@
+[_effect]
+ action_count = 6
+ flags = 8412161
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.100000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 18.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 6.000000, 6.000000, 6.000000
+ vec_0001 = 4.000000, 4.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.400000, 0.000000
+ v1 = 0.000000, 12.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -3.141593, -3.141593, -3.141593
+ v1 = 3.141593, 3.141593, 3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 21.000000, 32.000000, 0.000000
+ v2 = 0.000000, 32.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\electra\electricblast1
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_new_07.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_new_07.pe
new file mode 100644
index 00000000..6497f5dc
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/electra2_flash_new_07.pe
@@ -0,0 +1,116 @@
+[_effect]
+ action_count = 7
+ flags = 8412161
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 6.000000, 6.000000, 6.000000
+ vec_0001 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 5.000000
+ flt_0002 = 89.000000
+ int_0000 = 5
+ vec_0000 = 25.000000, 25.000000, 25.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -3.141593, -3.141593, -3.141593
+ v1 = 3.141593, 3.141593, 3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 24.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 64.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\electra\electricblast2_blue
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/gold_shield_dist_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/gold_shield_dist_00.pe
new file mode 100644
index 00000000..db108ddf
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/hit/gold_shield_dist_00.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 26625
+ max_particles = 3
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.330000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.831373, 0.792157, 0.701961
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 9.000000, 9.000000, 9.000000
+ vec_0001 = 0.500000, 0.500000, 0.500000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.600000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -6.108652, -6.108652, -6.108652
+ v1 = 6.108652, 6.108652, 6.108652
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 20.000000, 20.000000, 20.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\electra\distort_anomaly_01
+
+[timelimit]
+ value = 0.500000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/idle/zone_electric_mine_idle_disk.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/idle/zone_electric_mine_idle_disk.pe
new file mode 100644
index 00000000..621586ad
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/idle/zone_electric_mine_idle_disk.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 3167233
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.478431, 0.498039, 0.568628
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 15.000000, 15.000000, 0.100000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 0
+ vec_0000 = 0.000000, -10.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.478431, 0.498039, 0.568628
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.250000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -17.435840, -17.435840, -17.435840
+ v1 = 17.435840, 17.435840, 17.435840
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.400000, 0.400000, 0.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.010000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 64.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\electra\smokefillvapor01atlassoft_d
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/idle/zone_electric_mine_idle_sparks.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/idle/zone_electric_mine_idle_sparks.pe
new file mode 100644
index 00000000..a06737fe
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/effects/idle/zone_electric_mine_idle_sparks.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 7169
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.200000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.300000
+ flt_0003 = 0.500000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 10.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 8.000000, 8.000000, 8.000000
+ vec_0001 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.250000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 2.500000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 0.300000
+ v1 = 0.100000, 0.100000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\electra\electricblast1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/electra/electra_blowout.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/electra_blowout.pg
new file mode 100644
index 00000000..1e631b72
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/electra_blowout.pg
@@ -0,0 +1,123 @@
+[_group]
+ effects_count = 13
+ flags = 0
+ timelimit = 15.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\electra\effects\hit\electra2_flash_new_00
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\electra\effects\hit\electra2_flash_1_00
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\electra\effects\hit\electra2_flash_08
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.080000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\electra\effects\hit\electra2_flash_new_04
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\electra\effects\hit\electra2_flash_new_04
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.100000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\electra\effects\hit\electra2_flash_new_04
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\electra\effects\hit\electra2_flash_new_05
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\electra\effects\hit\electra2_flash_new_03
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0007]
+ effect_name = semitone\anomalies\electra\effects\hit\body_tear_blood_polter_flash_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0008]
+ effect_name = semitone\anomalies\electra\effects\hit\electra2_flash_new_07
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0009]
+ effect_name = semitone\anomalies\electra\effects\hit\electra2_flash_06
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0010]
+ effect_name = semitone\anomalies\electra\effects\hit\electra2_flash_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0011]
+ effect_name = semitone\anomalies\electra\effects\hit\gold_shield_dist_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0012]
+ effect_name = semitone\anomalies\electra\effects\hit\anomaly_teleport_sphere_graviti_distort_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/electra/electra_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/electra_idle.pg
new file mode 100644
index 00000000..e96b1144
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/electra/electra_idle.pg
@@ -0,0 +1,15 @@
+[_group]
+ effects_count = 1
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\electra\effects\idle\zone_electric_mine_idle_sparks
+ flags = 36
+ on_birth_child = semitone\anomalies\electra\effects\idle\zone_electric_mine_idle_disk
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaliy_dao_flash_puff.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaliy_dao_flash_puff.pe
new file mode 100644
index 00000000..e5297650
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaliy_dao_flash_puff.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 21505
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.150000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.150000, 0.150000, 0.001000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.858824, 0.772549, 0.498039
+ v1 = 0.372549, 0.447059, 0.309804
+ v2 = 0.345098, 0.274510, 0.231373
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.200000, 0.001000
+ v1 = 0.300000, 0.300000, 0.001000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\flash\smoke_tiled_b
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_blast smoke.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_blast smoke.pe
new file mode 100644
index 00000000..4f3fabaa
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_blast smoke.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 17409
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 8.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 6.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.643137, 0.462745, 0.149020
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 3.000000, 7.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.500000, 0.500000, 0.001000
+ v1 = 0.400000, 0.400000, 0.001000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 1.000000, 50.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\flash\smokefillvapor01atlassoft_d_small
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_blast_particles.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_blast_particles.pe
new file mode 100644
index 00000000..1fba2090
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_blast_particles.pe
@@ -0,0 +1,139 @@
+[_effect]
+ action_count = 9
+ flags = 55297
+ max_particles = 500
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 200.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.898039, 0.776471, 0.619608
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 8
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.200000, 0.200000, 0.200000
+ v1 = 0.300000, 0.300000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 20.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\flash\flash_particle
+
+[timelimit]
+ value = 3.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_blast_wave.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_blast_wave.pe
new file mode 100644
index 00000000..e4abab99
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_blast_wave.pe
@@ -0,0 +1,97 @@
+[_effect]
+ action_count = 6
+ flags = 18433
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 17.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 12.566371, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 5.000000
+ vec_0001 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 2.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -6.283186, -6.283186, 0.000000
+ v1 = 6.283186, 6.283186, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.500000
+ v1 = 0.700000, 0.300000, 0.700000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\flash\pfx_dist2
+
+[timelimit]
+ value = 0.300000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_idle_particles.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_idle_particles.pe
new file mode 100644
index 00000000..a5d15172
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_idle_particles.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 20
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.400000
+ vec_0001 = 5.000000, 5.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.005000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.549020, 0.411765, 0.219608
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 1.000000, 0.100000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 2.000000, 5.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\flash\water_river_a
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_idle_particles_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_idle_particles_00.pe
new file mode 100644
index 00000000..b811d0fa
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_idle_particles_00.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 30
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.400000
+ vec_0001 = 12.000000, 12.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.005000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.549020, 0.411765, 0.219608
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.300000, 0.300000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 2.000000, 5.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\flash\spore_a
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_idle_smoke.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_idle_smoke.pe
new file mode 100644
index 00000000..c242bc43
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_idle_smoke.pe
@@ -0,0 +1,102 @@
+[_effect]
+ action_count = 6
+ flags = 1025
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 14.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 18.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.500000, 1.500000, 0.400000
+ vec_0001 = 7.000000, 7.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.839473, 2.678945
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.219608, 0.505882, 0.549020
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.300000, 0.300000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, -16.000000
+ v2 = 1.000000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\flash\smokefillvapor01atlassoft_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_idle_smoke_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_idle_smoke_00.pe
new file mode 100644
index 00000000..82c7f482
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_idle_smoke_00.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 32
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 0.400000
+ vec_0001 = 12.000000, 12.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.005000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.549020, 0.411765, 0.219608
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.300000, 0.300000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 2.000000, 5.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\flash\cumulus_02
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_idle_smoke_dust.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_idle_smoke_dust.pe
new file mode 100644
index 00000000..8b1f2c47
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_idle_smoke_dust.pe
@@ -0,0 +1,102 @@
+[_effect]
+ action_count = 6
+ flags = 5121
+ max_particles = 14
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 16.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.400000
+ vec_0001 = 7.000000, 7.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.839473, 2.678945
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.545098, 0.407843, 0.219608
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.200000, 0.200000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, -16.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\flash\water_river_b
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_shield.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_shield.pe
new file mode 100644
index 00000000..533d9502
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_shield.pe
@@ -0,0 +1,115 @@
+[_effect]
+ action_count = 7
+ flags = 23553
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 100.000000
+ flt_0002 = 8.000000
+ vec_0000 = 0.000000, 8.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 14.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 8.000000, 8.000000, 0.001000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.176471, 0.396078, 0.435294
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.500000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.500000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, -5.000000
+ v1 = 0.000000, 0.000000, 0.100000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 50.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\flash\around
+
+[timelimit]
+ value = 0.600000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_shield_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_shield_00.pe
new file mode 100644
index 00000000..2471dff6
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_flash_shield_00.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 2119681
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.300000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.700000
+ flt_0001 = 15.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 7.000000, 7.000000, 0.001000
+ vec_0001 = 15.000000, 15.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.482353, 0.360784, 0.152941
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 3.000000, 3.000000, 0.001000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, -20.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\flash\pfx_flash_03, semitone\anomalies\flash\pfx_gradient
+
+[timelimit]
+ value = 0.300000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_orbiting_particles_v1_x+.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_orbiting_particles_v1_x+.pe
new file mode 100644
index 00000000..2cd5b992
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_orbiting_particles_v1_x+.pe
@@ -0,0 +1,158 @@
+[_effect]
+ action_count = 11
+ flags = 38913
+ max_particles = 80
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 6.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_x
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 7.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_z-
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 2.000000, -7.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_x-
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -7.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_z+
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 2.000000, 7.000000
+ version = 1
+
+[action_0006]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0008]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0009]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0010]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.658824, 0.501961, 0.223529
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 7.000000, 2.000000, 0.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.200000, 0.200000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 5
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\flash\flash_particle
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_orbiting_particles_v1_x-.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_orbiting_particles_v1_x-.pe
new file mode 100644
index 00000000..a1df0089
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_orbiting_particles_v1_x-.pe
@@ -0,0 +1,158 @@
+[_effect]
+ action_count = 11
+ flags = 38913
+ max_particles = 80
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 6.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_x
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 7.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_z-
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 2.000000, -7.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_x-
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -7.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_z+
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 2.000000, 7.000000
+ version = 1
+
+[action_0006]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0008]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0009]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0010]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.658824, 0.501961, 0.223529
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = -7.000000, 2.000000, 0.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.200000, 0.200000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 5
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\flash\flash_particle
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_orbiting_particles_v1_z+.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_orbiting_particles_v1_z+.pe
new file mode 100644
index 00000000..5b67ea52
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_orbiting_particles_v1_z+.pe
@@ -0,0 +1,158 @@
+[_effect]
+ action_count = 11
+ flags = 38913
+ max_particles = 80
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 6.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_x
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 7.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_z-
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 2.000000, -7.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_x-
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -7.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_z+
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 2.000000, 7.000000
+ version = 1
+
+[action_0006]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0008]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0009]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0010]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.658824, 0.501961, 0.223529
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 7.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.200000, 0.200000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 5
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\flash\flash_particle
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_orbiting_particles_v1_z-.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_orbiting_particles_v1_z-.pe
new file mode 100644
index 00000000..3111ae24
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_orbiting_particles_v1_z-.pe
@@ -0,0 +1,158 @@
+[_effect]
+ action_count = 11
+ flags = 38913
+ max_particles = 80
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 6.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_x
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 7.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_z-
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 2.000000, -7.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_x-
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -7.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_z+
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 2.000000, 7.000000
+ version = 1
+
+[action_0006]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0008]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0009]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0010]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.658824, 0.501961, 0.223529
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, -7.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.200000, 0.200000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 5
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\flash\flash_particle
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_tentacle_particle_x+z-.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_tentacle_particle_x+z-.pe
new file mode 100644
index 00000000..b00f5d78
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_tentacle_particle_x+z-.pe
@@ -0,0 +1,128 @@
+[_effect]
+ action_count = 8
+ flags = 38913
+ max_particles = 80
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 9.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_x+z-
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 4.000000
+ flt_0001 = 25.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 7.000000, 2.000000, -7.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_x+
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 55.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 7.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 25.000000, -35.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.580392, 0.439216, 0.215686
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.200000, 0.200000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 5
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\flash\flash_particle
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_tentacle_particle_x-z-.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_tentacle_particle_x-z-.pe
new file mode 100644
index 00000000..a7101e78
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/effects/anomaly_dao_tentacle_particle_x-z-.pe
@@ -0,0 +1,128 @@
+[_effect]
+ action_count = 8
+ flags = 38913
+ max_particles = 80
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 9.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_x-z-
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 4.000000
+ flt_0001 = 25.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -7.000000, 2.000000, -7.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_x-
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 55.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -7.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 25.000000, 35.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.580392, 0.439216, 0.215686
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.200000, 0.200000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 5
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\flash\flash_particle
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/flash/flash_blowout.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/flash_blowout.pg
new file mode 100644
index 00000000..23378fdb
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/flash_blowout.pg
@@ -0,0 +1,33 @@
+[_group]
+ effects_count = 3
+ flags = 0
+ timelimit = 1.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\flash\effects\anomaly_dao_flash_blast_wave
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\flash\effects\anomaly_dao_flash_blast_particles
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\flash\effects\anomaly_dao_flash_shield
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/flash/flash_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/flash_idle.pg
new file mode 100644
index 00000000..710eed14
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/flash_idle.pg
@@ -0,0 +1,105 @@
+[_group]
+ effects_count = 11
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\flash\effects\anomaly_dao_flash_idle_smoke_dust
+ flags = 5
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\flash\effects\anomaly_dao_flash_idle_smoke
+ flags = 5
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\flash\effects\anomaly_dao_flash_idle_particles
+ flags = 5
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\flash\effects\anomaly_dao_flash_idle_particles_00
+ flags = 5
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\flash\effects\anomaly_dao_flash_idle_smoke_00
+ flags = 68
+ on_birth_child =
+ on_death_child = semitone\anomalies\flash\effects\anomaliy_dao_flash_puff
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\flash\effects\anomaly_dao_orbiting_particles_v1_x+
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\flash\effects\anomaly_dao_orbiting_particles_v1_x-
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0007]
+ effect_name = semitone\anomalies\flash\effects\anomaly_dao_orbiting_particles_v1_z+
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0008]
+ effect_name = semitone\anomalies\flash\effects\anomaly_dao_orbiting_particles_v1_z-
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0009]
+ effect_name = semitone\anomalies\flash\effects\anomaly_dao_tentacle_particle_x+z-
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0010]
+ effect_name = semitone\anomalies\flash\effects\anomaly_dao_tentacle_particle_x-z-
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/flash/flash_shield.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/flash_shield.pg
new file mode 100644
index 00000000..8753f3e0
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/flash/flash_shield.pg
@@ -0,0 +1,15 @@
+[_group]
+ effects_count = 1
+ flags = 0
+ timelimit = 1.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\flash\effects\anomaly_dao_flash_shield_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/aaaaaaaaa.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/aaaaaaaaa.pe
new file mode 100644
index 00000000..7fcdf500
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/aaaaaaaaa.pe
@@ -0,0 +1,127 @@
+[_effect]
+ action_count = 8
+ flags = 5121
+ max_particles = 500
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 20.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.000064
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.900000
+ flt_0003 = 1.000000
+ vec_0000 = 0.090196, 0.090196, 0.090196
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 0
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 500.000000
+ flt_0001 = 250.000000
+ flt_0002 = 0.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = gravitate
+ action_type = 7
+ flags = 1
+ flt_0000 = 500.000000
+ flt_0001 = 500.000000
+ flt_0002 = 800.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.333333, 0.333333, 0.333333
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 120.000000, 35.000000, 120.000000
+ v1 = -120.000000, -15.000000, -120.000000
+ v2 = 5.000000, 120.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.350000, 0.350000, 0.350000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\set
+ texture = semitone\anomalies\generators\bitssmallrocky_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_leaves.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_leaves.pe
new file mode 100644
index 00000000..d2d6dd36
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_leaves.pe
@@ -0,0 +1,140 @@
+[_effect]
+ action_count = 9
+ flags = 5121
+ max_particles = 200
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.090196, 0.090196, 0.090196
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 800.000000
+ flt_0001 = 500.000000
+ flt_0002 = 500.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.100000
+ flt_0001 = 800.000000
+ flt_0002 = 200.000000
+ vec_0000 = 0.000000, 280.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint_00
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.100000
+ flt_0001 = 1000.000000
+ flt_0002 = 350.000000
+ vec_0000 = 0.000000, 280.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.141176, 0.141176, 0.141176
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 120.000000, 1.000000, 120.000000
+ v1 = -120.000000, -5.000000, -120.000000
+ v2 = 5.000000, 120.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.150000, 0.150000, 0.150000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\generators\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_leaves_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_leaves_00.pe
new file mode 100644
index 00000000..0f504cd9
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_leaves_00.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 500
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 120.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.349020, 0.403922, 0.349020
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.337255, 0.392157, 0.329412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 5.000000, 10.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.025000, 0.025000, 0.000000
+ v1 = 0.150000, 0.150000, 0.150000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.400000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 3.000000, 8.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\generators\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_rocks.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_rocks.pe
new file mode 100644
index 00000000..ebc1a086
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_rocks.pe
@@ -0,0 +1,127 @@
+[_effect]
+ action_count = 8
+ flags = 5121
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 45.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.125490, 0.125490, 0.125490
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 800.000000
+ flt_0001 = 200.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = gravitate
+ action_type = 7
+ flags = 1
+ flt_0000 = 0.001000
+ flt_0001 = 1.000000
+ flt_0002 = 10.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.129412, 0.129412, 0.129412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 7
+ v0 = 0.000000, -3.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 5.000000, 25.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.700000, 0.700000, 0.700000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 4.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 8
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.300000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\generators\bitssmallrocky_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_rocks_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_rocks_00.pe
new file mode 100644
index 00000000..8cd5258d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_rocks_00.pe
@@ -0,0 +1,128 @@
+[_effect]
+ action_count = 8
+ flags = 5121
+ max_particles = 350
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 25.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.000064
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.090196, 0.090196, 0.090196
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 500.000000
+ flt_0001 = 75.000000
+ flt_0002 = 500.000000
+ vec_0000 = 0.000000, 12.000000, 0.000000
+ vec_0001 = 0.000000, 55.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = gravitate
+ action_type = 7
+ flags = 1
+ flt_0000 = 500.000000
+ flt_0001 = 1.000000
+ flt_0002 = 300.000000
+ version = 1
+
+[action_0007]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.109804, 0.109804, 0.109804
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 80.000000, 45.000000, 80.000000
+ v1 = -80.000000, -15.000000, -80.000000
+ v2 = 5.000000, 120.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.350000, 0.350000, 0.350000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.050000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 4
+ v0 = 150.000000, -15.000000, 150.000000
+ v1 = -150.000000, -15.500000, -150.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\generators\bitssmallrocky_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_rocks_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_rocks_01.pe
new file mode 100644
index 00000000..1721296f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_rocks_01.pe
@@ -0,0 +1,141 @@
+[_effect]
+ action_count = 9
+ flags = 5121
+ max_particles = 300
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 25.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.000064
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.090196, 0.090196, 0.090196
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 500.000000
+ flt_0001 = 200.000000
+ flt_0002 = 500.000000
+ vec_0000 = 0.000000, 12.000000, 0.000000
+ vec_0001 = 0.000000, 55.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = gravitate
+ action_type = 7
+ flags = 1
+ flt_0000 = 500.000000
+ flt_0001 = 1.000000
+ flt_0002 = 300.000000
+ version = 1
+
+[action_0008]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.109804, 0.109804, 0.109804
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 25.000000, 35.000000, 25.000000
+ v1 = -25.000000, -15.000000, -25.000000
+ v2 = 5.000000, 120.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.350000, 0.350000, 0.350000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.050000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0008_0000]
+ type = 4
+ v0 = 150.000000, -15.000000, 150.000000
+ v1 = -150.000000, -15.500000, -150.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\generators\bitssmallrocky_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_rocks_big.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_rocks_big.pe
new file mode 100644
index 00000000..85a72099
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_rocks_big.pe
@@ -0,0 +1,93 @@
+[_effect]
+ action_count = 5
+ flags = 5121
+ max_particles = 300
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 20.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.000064
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.900000
+ flt_0003 = 1.000000
+ vec_0000 = 0.090196, 0.090196, 0.090196
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.333333, 0.333333, 0.333333
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 80.000000, 20.000000, 80.000000
+ v1 = -80.000000, -15.000000, -80.000000
+ v2 = 5.000000, 120.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.150000, 0.150000, 0.150000
+ v1 = 0.350000, 0.350000, 0.350000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\generators\bitssmallrocky_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_rocks_leaves.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_rocks_leaves.pe
new file mode 100644
index 00000000..91435823
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_rocks_leaves.pe
@@ -0,0 +1,141 @@
+[_effect]
+ action_count = 9
+ flags = 5121
+ max_particles = 350
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 25.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.090196, 0.090196, 0.090196
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 0
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 500.000000
+ flt_0001 = 200.000000
+ flt_0002 = 500.000000
+ vec_0000 = 0.000000, 12.000000, 0.000000
+ vec_0001 = 0.000000, 55.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = gravitate
+ action_type = 7
+ flags = 1
+ flt_0000 = 500.000000
+ flt_0001 = 1.000000
+ flt_0002 = 300.000000
+ version = 1
+
+[action_0008]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.109804, 0.109804, 0.109804
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 120.000000, 35.000000, 120.000000
+ v1 = -120.000000, -15.000000, -120.000000
+ v2 = 5.000000, 120.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.200000, 0.200000, 0.200000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.050000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0008_0000]
+ type = 4
+ v0 = 150.000000, -15.000000, 150.000000
+ v1 = -150.000000, -15.500000, -150.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\generators\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_rocks_noloop.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_rocks_noloop.pe
new file mode 100644
index 00000000..84c8eaa0
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/anomaly_wish_granter_rocks_noloop.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 7
+ flags = 21505
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 10.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.156863, 0.156863, 0.156863
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 5.000000, 55.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 2.000000, 2.000000, 2.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 15.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 3.000000, 8.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\generators\bitssmallrocky_d
+
+[timelimit]
+ value = 10.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/buble_distort_0222_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/buble_distort_0222_01.pe
new file mode 100644
index 00000000..d9f6f0c9
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/buble_distort_0222_01.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 15.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, 0.600000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 2
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 55.000000, 0.000000
+ v1 = 0.000000, 200.000000, 0.000000
+ v2 = 0.000000, 25.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 20.000000, 45.000000, 1.000000
+ v1 = 8.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 5.000000, 14.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\generators\pfx_dist2inv
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/buble_distort_sphere.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/buble_distort_sphere.pe
new file mode 100644
index 00000000..c41c611d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/buble_distort_sphere.pe
@@ -0,0 +1,115 @@
+[_effect]
+ action_count = 8
+ flags = 1
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 10.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 120.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 25.000000, 25.000000, 25.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, 0.600000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 3
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.050000
+ vec_0000 = 214.884928, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 15.000000, 0.000000
+ v1 = 4.000000, 25.000000, 0.000000
+ v2 = 0.000000, 25.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 150.000000, 150.000000, 1.000000
+ v1 = 8.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 125.000000, 250.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\generators\pfx_dist3_005
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/buble_distort_sphere_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/buble_distort_sphere_00.pe
new file mode 100644
index 00000000..a19d85aa
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/buble_distort_sphere_00.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 10.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 120.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, 0.600000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 2
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 15.000000, 0.000000
+ v1 = 4.000000, 25.000000, 0.000000
+ v2 = 0.000000, 25.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 65.000000, 15.000000, 1.000000
+ v1 = 8.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 125.000000, 250.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\all_tex\0new\dist\pfx_dist_lens
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/buble_distort_uupppp.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/buble_distort_uupppp.pe
new file mode 100644
index 00000000..0e849a9f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/buble_distort_uupppp.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 15.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 14.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, 0.600000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 2
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 55.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 0.000000, 25.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 35.000000, 25.000000, 1.000000
+ v1 = 8.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 135.000000, 0.000000
+ v1 = 8.000000, 1.000000, 0.000000
+ v2 = 125.000000, 250.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\generators\pfx_dist2inv
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_discharge_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_discharge_02.pe
new file mode 100644
index 00000000..e1105360
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_discharge_02.pe
@@ -0,0 +1,102 @@
+[_effect]
+ action_count = 6
+ flags = 5121
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.662745, 0.662745, 0.662745
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 15.000000, 15.000000, 0.000000
+ vec_0001 = 35.000000, 35.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.760784, 0.874510, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 10
+ v0 = 12.000000, 55.000000, 12.000000
+ v1 = -12.000000, 100.000000, -12.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.300000, 0.300000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 120.000000, 0.000000
+ v2 = 15.000000, 55.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 73908407458521415680000.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\generators\cumulus_02
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_glow.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_glow.pe
new file mode 100644
index 00000000..6b3ccdae
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_glow.pe
@@ -0,0 +1,114 @@
+[_effect]
+ action_count = 8
+ flags = 3158017
+ max_particles = 32
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.611765, 0.811765, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 200.000000, 200.000000, 200.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.120000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 9.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.490196, 0.752941, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 55.000000, 0.000000
+ v1 = 0.000000, 60.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 25.000000, 25.000000, 25.000000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 12.000000, 25.000000, 12.000000
+ v2 = 18.000000, 20.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\generators\semi\genericpuff
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_glow_05.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_glow_05.pe
new file mode 100644
index 00000000..74cb9e0c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_glow_05.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 29697
+ max_particles = 14
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.011765, 0.027451, 0.031373
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 8.000000, 8.000000, 2.000000
+ vec_0001 = 20.000000, 20.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.800000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.006000
+ vec_0000 = 0.000000, 1.343904, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.737255, 0.858824, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 25.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 40.000000, 40.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 99.000000, -16.000000
+ v2 = 1.000000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\generators\smokhighcontrast
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main.pe
new file mode 100644
index 00000000..f5883348
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main.pe
@@ -0,0 +1,102 @@
+[_effect]
+ action_count = 6
+ flags = 3156993
+ max_particles = 6
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 60.000000, 60.000000, 60.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 15.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 25.000000, 25.000000, 25.000000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 12.000000, 19.000000, 12.000000
+ v2 = 18.000000, 20.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 60.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\generators\electricblast2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_00.pe
new file mode 100644
index 00000000..7040ef6a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_00.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 3156993
+ max_particles = 18
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 120.000000, 120.000000, 120.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.120000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 20.000000, 20.000000, 20.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 12.000000, 19.000000, 12.000000
+ v2 = 15.000000, 20.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 30.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\portal_8x8_v1_4096
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_01.pe
new file mode 100644
index 00000000..18996997
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_01.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 3193857
+ max_particles = 18
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 12.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 80.000000, 80.000000, 80.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.120000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 7
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 2.000000, 14.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 25.000000, 25.000000, 25.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 12.000000, 19.000000, 12.000000
+ v2 = 18.000000, 20.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 30.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\spatial_bubble\portal_8x8_v2_4096
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_02.pe
new file mode 100644
index 00000000..e74a9cc1
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_02.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 3156993
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 5.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 50.000000, 50.000000, 50.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.120000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 15.000000, 15.000000, 15.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 12.000000, 19.000000, 12.000000
+ v2 = 18.000000, 20.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 30.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\spatial_bubble\portal_8x8_v2_4096
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_03.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_03.pe
new file mode 100644
index 00000000..d180714f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_03.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 3156993
+ max_particles = 18
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.517647, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 120.000000, 120.000000, 120.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.120000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.027451, 0.917647, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 25.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 20.000000, 20.000000, 20.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 12.000000, 19.000000, 12.000000
+ v2 = 15.000000, 20.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 30.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\all_tex\0new\flame\fireball_08_a
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_04.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_04.pe
new file mode 100644
index 00000000..3f512e14
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_04.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 3156993
+ max_particles = 18
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.752941, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 120.000000, 120.000000, 120.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.120000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.462745, 0.505882
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 25.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 20.000000, 20.000000, 20.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 6.000000, 12.000000, 6.000000
+ v2 = 15.000000, 20.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 30.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\all_tex\0new\flame\fireball_08_c
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_05.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_05.pe
new file mode 100644
index 00000000..698542fd
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_05.pe
@@ -0,0 +1,105 @@
+[_effect]
+ action_count = 6
+ flags = 3173377
+ max_particles = 8
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 60.000000, 60.000000, 60.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.674510, 1.000000, 0.905882
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 25.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 25.000000, 25.000000, 25.000000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 12.000000, 19.000000, 12.000000
+ v2 = 5.000000, 15.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\generators\electricblast2_blue
+
+[timelimit]
+ value = 15.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_06.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_06.pe
new file mode 100644
index 00000000..da346e1a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_06.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 3156993
+ max_particles = 18
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 0.945098, 0.070588
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 120.000000, 120.000000, 120.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.120000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.047059, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 20.000000, 20.000000, 20.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 6.000000, 12.000000, 6.000000
+ v2 = 15.000000, 20.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 30.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\all_tex\0new\flame\fireball_anim_a_grey
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_07.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_07.pe
new file mode 100644
index 00000000..ef728d8e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_07.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 3156993
+ max_particles = 6
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 60.000000, 60.000000, 60.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.120000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.674510, 1.000000, 0.905882
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 25.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 25.000000, 25.000000, 25.000000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 12.000000, 19.000000, 12.000000
+ v2 = 5.000000, 35.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\generators\electricblast2_blue
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_08.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_08.pe
new file mode 100644
index 00000000..e98afc30
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_08.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 3156993
+ max_particles = 8
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 60.000000, 60.000000, 60.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.120000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.674510, 1.000000, 0.905882
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 25.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 25.000000, 25.000000, 25.000000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 12.000000, 19.000000, 12.000000
+ v2 = 5.000000, 15.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\generators\electricblast2_blue
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_09.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_09.pe
new file mode 100644
index 00000000..6c43a0a5
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_09.pe
@@ -0,0 +1,103 @@
+[_effect]
+ action_count = 7
+ flags = 3155969
+ max_particles = 8
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 120.000000, 120.000000, 120.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 15.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 25.000000, 25.000000, 25.000000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 12.000000, 19.000000, 12.000000
+ v2 = 18.000000, 20.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\generators\pfx_dist2inv
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_carry.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_carry.pe
new file mode 100644
index 00000000..84682746
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_carry.pe
@@ -0,0 +1,116 @@
+[_effect]
+ action_count = 7
+ flags = 3447809
+ max_particles = 18
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 60.000000, 60.000000, 60.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.005000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.800000, 0.964706, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 55.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 25.000000, 25.000000, 25.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 12.000000, 19.000000, 12.000000
+ v2 = 18.000000, 20.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 60.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\spatial_bubble\gauss2
+
+[velocity_scale]
+ value = 0.000000, 0.200000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_dist.pe
new file mode 100644
index 00000000..6c1c92e5
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_dist.pe
@@ -0,0 +1,103 @@
+[_effect]
+ action_count = 7
+ flags = 3155969
+ max_particles = 18
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 120.000000, 120.000000, 120.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.020000
+ vec_0000 = 241.204608, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 25.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 20.000000, 20.000000, 20.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 6.000000, 12.000000, 6.000000
+ v2 = 15.000000, 20.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\generators\pfx_dist3_005
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_dist_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_dist_00.pe
new file mode 100644
index 00000000..08ee1be5
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_dist_00.pe
@@ -0,0 +1,115 @@
+[_effect]
+ action_count = 8
+ flags = 3155969
+ max_particles = 18
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 120.000000, 120.000000, 120.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.020000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.001000
+ flt_0001 = 5.000000
+ flt_0002 = 1.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ vec_0001 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 8
+ v0 = 0.000000, 100.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 20.000000, 20.000000, 20.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 6.000000, 12.000000, 6.000000
+ v2 = 15.000000, 20.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\all_tex\0new\dist\pfx_dist9_r
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_dist_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_dist_01.pe
new file mode 100644
index 00000000..71ecc6bd
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_dist_01.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 8
+ flags = 3188737
+ max_particles = 18
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 120.000000, 120.000000, 120.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.020000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.001000
+ flt_0001 = 1.000000
+ flt_0002 = 1.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ vec_0001 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 25.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 20.000000, 20.000000, 20.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 6.000000, 12.000000, 6.000000
+ v2 = 15.000000, 20.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\generators\pfx_dist3_005
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_small.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_small.pe
new file mode 100644
index 00000000..63595b79
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_small.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 3156993
+ max_particles = 6
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 15.000000, 15.000000, 15.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.120000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.674510, 1.000000, 0.905882
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 15.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 5.000000, 5.000000, 5.000000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 12.000000, 19.000000, 12.000000
+ v2 = 5.000000, 15.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\generators\electricblast2_blue
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_top.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_top.pe
new file mode 100644
index 00000000..ec768055
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_top.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 3156993
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 60.000000, 60.000000, 60.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.120000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.674510, 1.000000, 0.905882
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 150.000000, 0.000000
+ v1 = 0.000000, 120.000000, 0.000000
+ v2 = 2.000000, 150.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 25.000000, 25.000000, 25.000000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 12.000000, 19.000000, 12.000000
+ v2 = 5.000000, 250.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\generators\electricblast2_blue
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider.pe
new file mode 100644
index 00000000..d46e6a82
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 3148801
+ max_particles = 18
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.039216, 0.831373, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 120.000000, 120.000000, 120.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.010000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.286275, 0.819608, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 25.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 20.000000, 20.000000, 20.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 12.000000, 20.000000, 12.000000
+ v2 = 15.000000, 20.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\all_tex\0new\smoke\energyball2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_00.pe
new file mode 100644
index 00000000..489bfc80
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_00.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 1051649
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 22.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.549020, 0.917647, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 120.000000, 120.000000, 120.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.010000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.745098, 0.933333, 0.968628
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 80.000000, 0.000000
+ v1 = 0.000000, 250.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 10.000000, 10.000000, 10.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 12.000000, 20.000000, 12.000000
+ v2 = 15.000000, 20.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 30.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\generators\semi\smokeburstpuffanim
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_01.pe
new file mode 100644
index 00000000..2795eeb1
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_01.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 3148801
+ max_particles = 18
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.552941, 0.917647, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 120.000000, 120.000000, 120.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.010000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 15.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 45.000000, 45.000000, 45.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 12.000000, 20.000000, 12.000000
+ v2 = 15.000000, 28.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 30.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\all_tex\0new\smoke\dirtburst_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_02.pe
new file mode 100644
index 00000000..5c50be50
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_02.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 1063937
+ max_particles = 18
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.800000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.400000, 0.400000, 0.400000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 120.000000, 120.000000, 120.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.010000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.811765, 0.811765, 0.811765
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 25.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 20.000000, 20.000000, 20.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 12.000000, 20.000000, 12.000000
+ v2 = 15.000000, 20.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\all_tex\0new\smoke\smoke_burst_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_03.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_03.pe
new file mode 100644
index 00000000..3e0f7030
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_03.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 1063937
+ max_particles = 8
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 6.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.549020, 0.917647, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 65.000000, 65.000000, 65.000000
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.010000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.745098, 0.933333, 0.968628
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 7
+ v0 = 0.000000, 80.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 2.000000, 45.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 5.000000, 5.000000, 5.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 12.000000, 150.000000, 12.000000
+ v2 = 5.000000, 45.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 30.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\generators\semi\smokeburstpuffanim
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_04.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_04.pe
new file mode 100644
index 00000000..ec6094d8
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_04.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 1051649
+ max_particles = 18
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.549020, 0.917647, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 8.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 120.000000, 120.000000, 120.000000
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.010000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.745098, 0.933333, 0.968628
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 45.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 10.000000, 10.000000, 10.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 12.000000, 20.000000, 12.000000
+ v2 = 15.000000, 20.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 30.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\generators\semi\smokeburstpuffanim
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_05.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_05.pe
new file mode 100644
index 00000000..a4ba6894
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_05.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 1051649
+ max_particles = 18
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 120.000000, 120.000000, 120.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.010000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 80.000000, 0.000000
+ v1 = 0.000000, 250.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 10.000000, 10.000000, 10.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 12.000000, 20.000000, 12.000000
+ v2 = 15.000000, 20.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 30.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\all_tex\sphere_something_4096_v1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_nolloop.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_nolloop.pe
new file mode 100644
index 00000000..829eac42
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/generator_sparks_main_wider_nolloop.pe
@@ -0,0 +1,124 @@
+[_effect]
+ action_count = 8
+ flags = 1068033
+ max_particles = 18
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.500000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.549020, 0.917647, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 8.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 120.000000, 120.000000, 120.000000
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.010000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.745098, 0.933333, 0.968628
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 45.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -52.359880, -52.359880, -52.359880
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 10.000000, 10.000000, 10.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 12.000000, 20.000000, 12.000000
+ v2 = 15.000000, 20.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 30.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\generators\semi\smokeburstpuffanim
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/gravi_we_rocks_levitate_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/gravi_we_rocks_levitate_00.pe
new file mode 100644
index 00000000..c491e38b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/gravi_we_rocks_levitate_00.pe
@@ -0,0 +1,135 @@
+[_effect]
+ action_count = 9
+ flags = 1025
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.086275, 0.098039, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.050000
+ flt_0001 = 1.300000
+ flt_0002 = 100.000000
+ int_0000 = 2
+ vec_0000 = -0.700000, -1.000000, 10.700000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.129412, 0.129412, 0.129412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 2.000000, 2.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 20.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 2.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bitssmallrocky_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/leaves_center.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/leaves_center.pe
new file mode 100644
index 00000000..ece093e6
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/leaves_center.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 500
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 120.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.349020, 0.403922, 0.349020
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.337255, 0.392157, 0.329412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 5.000000, 10.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.025000, 0.025000, 0.000000
+ v1 = 0.150000, 0.150000, 0.150000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 3.000000, 8.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\generators\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/monolith_dist00_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/monolith_dist00_01.pe
new file mode 100644
index 00000000..c523e3c0
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/monolith_dist00_01.pe
@@ -0,0 +1,127 @@
+[_effect]
+ action_count = 9
+ flags = 1
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 5.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.003922, 0.003922
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.700000, 0.700000, 0.000000
+ vec_0001 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.010000
+ vec_0000 = 39.866164, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ flt_0001 = 220.000000
+ flt_0002 = 66.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 25.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0008]
+ action_name = targetsize_00
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 10.000000, 10.000000, 0.001000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 10.000000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\generators\distort_anomaly_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/monolith_dist_glow_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/monolith_dist_glow_02.pe
new file mode 100644
index 00000000..257fac16
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/monolith_dist_glow_02.pe
@@ -0,0 +1,106 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 9.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.023529, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 25.000000, 25.000000, 10.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = 39.866164, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ flt_0001 = 220.000000
+ flt_0002 = 66.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 25.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.149020, 0.517647, 0.709804
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 0.200000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\generators\semi\genericpuff
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/monolith_dist_glow_noloop.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/monolith_dist_glow_noloop.pe
new file mode 100644
index 00000000..84ad5a65
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/monolith_dist_glow_noloop.pe
@@ -0,0 +1,109 @@
+[_effect]
+ action_count = 7
+ flags = 16385
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 9.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.023529, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 25.000000, 25.000000, 10.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = 39.866164, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ flt_0001 = 220.000000
+ flt_0002 = 66.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 25.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.149020, 0.517647, 0.709804
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 0.200000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\generators\semi\genericpuff
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/monolith_dist_glow_noloop_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/monolith_dist_glow_noloop_00.pe
new file mode 100644
index 00000000..c72019e1
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/monolith_dist_glow_noloop_00.pe
@@ -0,0 +1,109 @@
+[_effect]
+ action_count = 7
+ flags = 16385
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 9.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.023529, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 25.000000, 25.000000, 10.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = 39.866164, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ flt_0001 = 220.000000
+ flt_0002 = 66.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 25.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.356863, 0.498039, 0.529412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 0.200000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\generators\semi\genericpuff
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/psi_storm_glow_06_dist_generators_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/psi_storm_glow_06_dist_generators_00.pe
new file mode 100644
index 00000000..eb645073
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/psi_storm_glow_06_dist_generators_00.pe
@@ -0,0 +1,98 @@
+[_effect]
+ action_count = 6
+ flags = 16385
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 70.000000, 70.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.839473, 2.678945
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 12.000000, 12.000000, 12.000000
+ v1 = 8.000000, 8.000000, 8.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, -16.000000
+ v2 = 1.000000, 3.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = pfx\pfx_dist2inv
+
+[timelimit]
+ value = 6.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/psi_storm_glow_06_dist_generators_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/psi_storm_glow_06_dist_generators_01.pe
new file mode 100644
index 00000000..2eaf4f09
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/psi_storm_glow_06_dist_generators_01.pe
@@ -0,0 +1,95 @@
+[_effect]
+ action_count = 6
+ flags = 1
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 70.000000, 70.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.839473, 2.678945
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 35.000000, 0.000000
+ v1 = 0.000000, 300.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 12.000000, 12.000000, 12.000000
+ v1 = 8.000000, 8.000000, 8.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, -16.000000
+ v2 = 1.000000, 3.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = pfx\pfx_dist2inv
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/rocks_noloop_center.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/rocks_noloop_center.pe
new file mode 100644
index 00000000..57e1995d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/rocks_noloop_center.pe
@@ -0,0 +1,127 @@
+[_effect]
+ action_count = 8
+ flags = 5121
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 13.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = gravitate
+ action_type = 7
+ flags = 1
+ flt_0000 = 0.001000
+ flt_0001 = 1.000000
+ flt_0002 = 10.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.156863, 0.156863, 0.156863
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 30.000000, 200.000000, 30.000000
+ v1 = -30.000000, 50.000000, -30.000000
+ v2 = 5.000000, 55.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 2.000000, 2.000000, 2.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 8.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 3.000000, 8.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\generators\bitssmallrocky_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_core_steam_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_core_steam_00.pe
new file mode 100644
index 00000000..3d21e789
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_core_steam_00.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 125
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 35.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.400000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.500000, 2.500000, 0.000000
+ vec_0001 = 10.000000, 10.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.034907, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 5.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.180392, 0.537255, 0.600000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 5.000000, 10.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 5
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 8.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 16.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\wish_granter\cumulus_02
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_core_steam_noloop.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_core_steam_noloop.pe
new file mode 100644
index 00000000..2e7c3bd2
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_core_steam_noloop.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 21505
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 35.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.400000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.500000, 2.500000, 0.000000
+ vec_0001 = 10.000000, 10.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.034907, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 5.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.180392, 0.537255, 0.600000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 5.000000, 10.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 5
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 8.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 16.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\wish_granter\cumulus_02
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_electric_smoke_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_electric_smoke_00.pe
new file mode 100644
index 00000000..dbf6a37f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_electric_smoke_00.pe
@@ -0,0 +1,101 @@
+[_effect]
+ action_count = 6
+ flags = 7169
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 21.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 2.500000, 2.500000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 4.000000, 12.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\generators\electricblast3_2k
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_electric_smoke_huge.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_electric_smoke_huge.pe
new file mode 100644
index 00000000..64b466ec
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_electric_smoke_huge.pe
@@ -0,0 +1,101 @@
+[_effect]
+ action_count = 6
+ flags = 3073
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 21.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 35.000000, 35.000000, 10.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 4.000000, 55.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 12.000000, 12.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 60.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\wish_granter\electricblast3
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_electric_smoke_huge_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_electric_smoke_huge_00.pe
new file mode 100644
index 00000000..7df4b879
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_electric_smoke_huge_00.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 11265
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 21.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 35.000000, 35.000000, 10.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.001000
+ flt_0001 = 125.000000
+ flt_0002 = 55.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ vec_0001 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.917647, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 4.000000, 55.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 12.000000, 12.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 60.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\generators\electricblast2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_particle_output_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_particle_output_00.pe
new file mode 100644
index 00000000..a5ad993d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_particle_output_00.pe
@@ -0,0 +1,136 @@
+[_effect]
+ action_count = 9
+ flags = 1087489
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 18.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 20.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 64.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.100000
+ flt_0001 = 75.000000
+ flt_0002 = 100.000000
+ vec_0000 = 360.000000, 2124123.996160, 30.000000
+ vec_0001 = 720.000000, 55.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 0.717647, 0.929412, 1.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 4
+ v0 = -25.000000, 30.000000, -25.000000
+ v1 = 25.000000, 100.000000, 25.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 5
+ v0 = 0.000000, 15.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 14.000000, 45.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\generators\semi\flash_particle
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_particle_output_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_particle_output_01.pe
new file mode 100644
index 00000000..b8b99762
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_particle_output_01.pe
@@ -0,0 +1,136 @@
+[_effect]
+ action_count = 9
+ flags = 1087489
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 18.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 20.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 64.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.100000
+ flt_0001 = 75.000000
+ flt_0002 = 100.000000
+ vec_0000 = 360.000000, 2124123.996160, 30.000000
+ vec_0001 = 720.000000, 55.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 0.717647, 0.929412, 1.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 4
+ v0 = -35.000000, 0.000000, -35.000000
+ v1 = 35.000000, 50.000000, 35.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 1
+ v0 = 0.400000, 0.400000, 0.400000
+ v1 = 4.000000, 4.000000, 4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 5
+ v0 = 0.000000, 15.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 14.000000, 45.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\generators\semi\flash_particle
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_smoke_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_smoke_00.pe
new file mode 100644
index 00000000..f264be29
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/effects/wish_granter_smoke_00.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 20.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.400000
+ vec_0001 = 8.000000, 8.000000, 3.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.005000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.219608, 0.513726, 0.549020
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = -10.000000, 0.000000, -10.000000
+ v1 = 10.000000, 15.000000, 10.000000
+ v2 = 5.000000, 10.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 5
+ v0 = 0.500000, 0.500000, 2.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 1.000000, 0.000000, 1.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 2.000000, 5.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 12.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\wish_granter\water_river_a
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/generators/generatory.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/generatory.pg
new file mode 100644
index 00000000..3572fc2a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/generators/generatory.pg
@@ -0,0 +1,168 @@
+[_group]
+ effects_count = 18
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\generators\effects\generator_sparks_main
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\generators\effects\generator_sparks_main_05
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\generators\effects\generator_sparks_main_top
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\generators\effects\generator_sparks_main_08
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\generators\effects\anomaly_wish_granter_rocks_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\generators\effects\generator_sparks_main_small
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\generators\effects\anomaly_wish_granter_rocks_big
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\generators\effects\generator_sparks_main_wider_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0007]
+ effect_name = semitone\anomalies\generators\effects\generator_sparks_main_07
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0008]
+ effect_name = semitone\anomalies\generators\effects\generator_sparks_main_wider_03
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0009]
+ effect_name = semitone\anomalies\generators\effects\buble_distort_0222_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0010]
+ effect_name = semitone\anomalies\generators\effects\leaves_center
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0011]
+ effect_name = semitone\anomalies\generators\effects\monolith_dist00_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0012]
+ effect_name = semitone\anomalies\generators\effects\anomaly_wish_granter_rocks_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0013]
+ effect_name = semitone\anomalies\generators\effects\generator_sparks_main_carry
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0014]
+ effect_name = semitone\anomalies\generators\effects\wish_granter_smoke_00
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0015]
+ effect_name = semitone\anomalies\generators\effects\generator_discharge_02
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0016]
+ effect_name = semitone\anomalies\generators\effects\rocks_noloop_center
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0017]
+ effect_name = semitone\anomalies\generators\effects\anomaly_wish_granter_rocks_leaves
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/anomaliy_dao_ghost_orbit_blast.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/anomaliy_dao_ghost_orbit_blast.pe
new file mode 100644
index 00000000..c4612424
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/anomaliy_dao_ghost_orbit_blast.pe
@@ -0,0 +1,123 @@
+[_effect]
+ action_count = 9
+ flags = 6145
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.100000
+ flt_0001 = 3.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = gravitate
+ action_type = 7
+ flags = 1
+ flt_0000 = 0.001000
+ flt_0001 = 1.000000
+ flt_0002 = 9999999980506447.872000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 55.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.010000, 0.010000, 0.001000
+ vec_0001 = 0.500000, 0.500000, 0.001000
+ version = 1
+
+[action_0007]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 0.580392, 0.721569, 0.741176
+ v1 = 0.372549, 0.447059, 0.309804
+ v2 = 0.345098, 0.274510, 0.231373
+
+[domain_action_0003_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.001000
+ v1 = 0.200000, 0.200000, 0.001000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 20.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\ghost\glow_white
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/anomaliy_dao_ghost_particle_puff.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/anomaliy_dao_ghost_particle_puff.pe
new file mode 100644
index 00000000..d4585d30
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/anomaliy_dao_ghost_particle_puff.pe
@@ -0,0 +1,106 @@
+[_effect]
+ action_count = 7
+ flags = 20481
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.100000, 0.100000, 0.001000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.537255, 0.537255, 0.537255
+ v1 = 0.372549, 0.447059, 0.309804
+ v2 = 0.345098, 0.274510, 0.231373
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.001000
+ v1 = 0.200000, 0.200000, 0.001000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\ghost\glow_white
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/anomaly_dao_ghost_blast_smoke.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/anomaly_dao_ghost_blast_smoke.pe
new file mode 100644
index 00000000..f7022b45
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/anomaly_dao_ghost_blast_smoke.pe
@@ -0,0 +1,101 @@
+[_effect]
+ action_count = 6
+ flags = 5121
+ max_particles = 10
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 0.400000
+ vec_0001 = 6.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.005000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.364706, 0.415686, 0.454902
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.300000, 0.300000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 2.000000, 5.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 64.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\ghost\cumulus_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/anomaly_dao_ghost_blast_smoke_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/anomaly_dao_ghost_blast_smoke_00.pe
new file mode 100644
index 00000000..ce0104fd
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/anomaly_dao_ghost_blast_smoke_00.pe
@@ -0,0 +1,101 @@
+[_effect]
+ action_count = 6
+ flags = 3073
+ max_particles = 10
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.400000
+ vec_0001 = 4.000000, 4.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.005000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.364706, 0.415686, 0.454902
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.300000, 0.300000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 2.000000, 5.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 64.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\ghost\energyball2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/anomaly_dao_sphere_blast.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/anomaly_dao_sphere_blast.pe
new file mode 100644
index 00000000..e99e9cb2
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/anomaly_dao_sphere_blast.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 2119681
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.100000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.700000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 7.000000, 7.000000, 0.001000
+ vec_0001 = 15.000000, 15.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.482353, 0.490196, 0.498039
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 3.000000, 3.000000, 0.001000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, -20.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\ghost\pfx_flash_07, semitone\anomalies\ghost\pfx_dist7
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/anomaly_dao_wave_blast_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/anomaly_dao_wave_blast_dist.pe
new file mode 100644
index 00000000..b109e41d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/anomaly_dao_wave_blast_dist.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 18433
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.800000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 7.000000, 7.000000, 7.000000
+ vec_0001 = 15.000000, 15.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -1.570796, -1.570796, -1.570796
+ v1 = 1.570796, 1.570796, 1.570796
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\ghost\pfx_dist3
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/goodsmoke_white_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/goodsmoke_white_00.pe
new file mode 100644
index 00000000..ec53e9c0
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/effects/goodsmoke_white_00.pe
@@ -0,0 +1,85 @@
+[_effect]
+ action_count = 4
+ flags = 3073
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.486275, 0.486275, 0.486275
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 4.000000, 4.000000, 4.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.500000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 64.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\ghost\energyball2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/ghost_blowout.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/ghost_blowout.pg
new file mode 100644
index 00000000..157d82c6
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/ghost_blowout.pg
@@ -0,0 +1,24 @@
+[_group]
+ effects_count = 2
+ flags = 0
+ timelimit = 0.500000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\ghost\effects\anomaly_dao_sphere_blast
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\ghost\effects\anomaly_dao_wave_blast_dist
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/ghost_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/ghost_idle.pg
new file mode 100644
index 00000000..7d23c84c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/ghost/ghost_idle.pg
@@ -0,0 +1,42 @@
+[_group]
+ effects_count = 4
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\ghost\effects\anomaly_dao_ghost_blast_smoke
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\ghost\effects\anomaliy_dao_ghost_orbit_blast
+ flags = 68
+ on_birth_child =
+ on_death_child = semitone\anomalies\ghost\effects\anomaliy_dao_ghost_particle_puff
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\ghost\effects\goodsmoke_white_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\ghost\effects\anomaly_dao_ghost_blast_smoke_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/anomaly_dao_gold_bottom.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/anomaly_dao_gold_bottom.pe
new file mode 100644
index 00000000..029a6a39
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/anomaly_dao_gold_bottom.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 8
+ flags = 5121
+ max_particles = 10
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 5.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.823530, 0.529412, 0.192157
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.500000, 2.500000, 2.500000
+ vec_0001 = 2.000000, 2.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.012800
+ vec_0000 = 50.837220, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.709804, 0.431373, 0.156863
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.300000, 0.300000, 0.300000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\gold\smoke_tiled_b
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/anomaly_dao_gold_bottom_splash.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/anomaly_dao_gold_bottom_splash.pe
new file mode 100644
index 00000000..07708f7f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/anomaly_dao_gold_bottom_splash.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 3073
+ max_particles = 10
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.862745, 0.517647, 0.121569
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.500000, 2.500000, 2.500000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.862745, 0.509804, 0.200000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, -0.050000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.700000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -3.141593, -3.141593, -3.141593
+ v1 = 3.141593, 3.141593, 3.141593
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 125
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gold\slime_anim_b
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/anomaly_dao_gold_bottom_splash_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/anomaly_dao_gold_bottom_splash_00.pe
new file mode 100644
index 00000000..4c447552
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/anomaly_dao_gold_bottom_splash_00.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 3073
+ max_particles = 10
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 5.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.862745, 0.517647, 0.121569
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.500000, 2.500000, 2.500000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.862745, 0.509804, 0.200000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, -0.050000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.700000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -3.141593, -3.141593, -3.141593
+ v1 = 3.141593, 3.141593, 3.141593
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 125
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\gold\slime_anim_a_diff
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/anomaly_dao_gold_ground_smoke.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/anomaly_dao_gold_ground_smoke.pe
new file mode 100644
index 00000000..f0f5bf23
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/anomaly_dao_gold_ground_smoke.pe
@@ -0,0 +1,102 @@
+[_effect]
+ action_count = 6
+ flags = 7169
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.003922, 0.003922, 0.003922
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.500000, 2.500000, 2.500000
+ vec_0001 = 1.500000, 1.500000, 1.500000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.866667, 0.568628, 0.215686
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.300000, 0.300000, 0.300000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 0.250000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\gold\smokeburstpuffanim
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/anomaly_dao_gold_heat.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/anomaly_dao_gold_heat.pe
new file mode 100644
index 00000000..351b8849
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/anomaly_dao_gold_heat.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 8
+ flags = 1058817
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 6.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 3
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0004]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.039000
+ flt_0001 = 1.000000
+ flt_0002 = 4.000000
+ int_0000 = 2
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 3
+ vec_0000 = 0.000000, 5.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.588235, 0.588235, 0.588235
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -13.962634, -13.962634, -13.962634
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, -0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.000000, 24.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gold\pfx_dist2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_dist_blast.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_dist_blast.pe
new file mode 100644
index 00000000..d3271bd0
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_dist_blast.pe
@@ -0,0 +1,128 @@
+[_effect]
+ action_count = 9
+ flags = 22529
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 125.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 0.000000
+ vec_0001 = 7.000000, 7.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 12.000000
+ flt_0002 = 20.000000
+ int_0000 = 6
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0008]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.100000
+ flt_0001 = 900.000000
+ flt_0002 = 100.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 12.000000, 0.000000
+ v2 = 25.000000, 30.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 12.000000, 12.000000, 12.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 12.000000, 0.000000
+ v2 = 12.000000, 24.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gold\pfx_dist2inv
+
+[timelimit]
+ value = 5.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_dust_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_dust_00.pe
new file mode 100644
index 00000000..cc1a635c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_dust_00.pe
@@ -0,0 +1,177 @@
+[_effect]
+ action_count = 12
+ flags = 21505
+ max_particles = 40
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 0.120000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 4.000000, 4.000000, 4.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.500000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = bounce
+ action_type = 1
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.700000
+ version = 1
+
+[action_0006]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 6.000000
+ flt_0001 = 19.000000
+ flt_0002 = 3.700000
+ vec_0000 = 0.000000, 0.000000, -10.000000
+ vec_0001 = -1.700000, 2.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 6.000000
+ flt_0001 = 19.000000
+ flt_0002 = 3.700000
+ vec_0000 = 0.000000, 0.000000, 10.000000
+ vec_0001 = 1.700000, 2.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 6.000000
+ flt_0001 = 19.000000
+ flt_0002 = 3.700000
+ vec_0000 = -10.000000, 0.000000, 0.000000
+ vec_0001 = 0.000000, 2.000000, 1.700000
+ version = 1
+
+[action_0009]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 6.000000
+ flt_0001 = 19.000000
+ flt_0002 = 3.700000
+ vec_0000 = 10.000000, 0.000000, 0.000000
+ vec_0001 = 0.000000, 2.000000, -1.700000
+ version = 1
+
+[action_0010]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.020000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.278431, 0.207843, 0.137255
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.200000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 17.998534, -29.999994, -29.999994
+ v1 = -17.998534, 29.999994, 29.999994
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.300000, 1.300000, 0.000000
+ v1 = 1.900000, 1.900000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 10.000000, 15.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\gold\cumulus_02
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_hit.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_hit.pe
new file mode 100644
index 00000000..b818c9a5
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_hit.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.749020, 0.345098, 0.019608
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.500000, 0.500000, 0.500000
+ vec_0001 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.619608, 0.384314, 0.094118
+ v1 = 0.372549, 0.447059, 0.309804
+ v2 = 0.345098, 0.274510, 0.231373
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 6.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\gold\smallsplashatlas
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_hit_1.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_hit_1.pe
new file mode 100644
index 00000000..cb49641e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_hit_1.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 23553
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.501961, 0.509804, 0.494118
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.500000, 0.500000, 0.500000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.768628, 0.474510, 0.113726
+ v1 = 0.372549, 0.447059, 0.309804
+ v2 = 0.345098, 0.274510, 0.231373
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 6.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\gold\smokeburstpuffanim
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_idle_bottom_glow_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_idle_bottom_glow_00.pe
new file mode 100644
index 00000000..dc9b1fe7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_idle_bottom_glow_00.pe
@@ -0,0 +1,96 @@
+[_effect]
+ action_count = 5
+ flags = 269313
+ max_particles = 10
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 14.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 0.000000
+ vec_0001 = 2.000000, 3.000000, 0.001000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.400000, 0.266667, 0.031373
+ v1 = 0.188235, 0.419608, 0.176471
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 6
+ frame_count = 66
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.166667, 0.090909
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\gold\acid_smoke_512
+
+[velocity_scale]
+ value = 0.000000, 0.020000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_idle_bottom_glow_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_idle_bottom_glow_01.pe
new file mode 100644
index 00000000..c4a501d9
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_idle_bottom_glow_01.pe
@@ -0,0 +1,96 @@
+[_effect]
+ action_count = 5
+ flags = 267265
+ max_particles = 10
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 0.000000
+ vec_0001 = 4.000000, 1.500000, 0.001000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.400000, 0.266667, 0.031373
+ v1 = 0.188235, 0.419608, 0.176471
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\gold\cumulus_02
+
+[velocity_scale]
+ value = 0.000000, 0.020000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_idle_smoke_big_puff.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_idle_smoke_big_puff.pe
new file mode 100644
index 00000000..e59d17f4
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_idle_smoke_big_puff.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 3073
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.500000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 0.200000
+ vec_0000 = 0.521569, 0.525490, 0.509804
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 0.003922, 0.003922, 0.003922
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.709804, 0.431373, 0.156863
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, -0.050000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.650000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.300000, 0.300000, 0.300000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\gold\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_shield_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_shield_dist.pe
new file mode 100644
index 00000000..7e8648de
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/gold_shield_dist.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 26625
+ max_particles = 3
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.330000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.831373, 0.792157, 0.701961
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 9.000000, 9.000000, 9.000000
+ vec_0001 = 0.500000, 0.500000, 0.500000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.600000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -6.108652, -6.108652, -6.108652
+ v1 = 6.108652, 6.108652, 6.108652
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 20.000000, 20.000000, 20.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gold\distort_anomaly_01
+
+[timelimit]
+ value = 0.500000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/studen_idle_bottom_heat_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/studen_idle_bottom_heat_00.pe
new file mode 100644
index 00000000..b82c5d02
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/studen_idle_bottom_heat_00.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 8
+ flags = 1058817
+ max_particles = 10
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 6.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 3
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0004]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.039000
+ flt_0001 = 1.000000
+ flt_0002 = 4.000000
+ int_0000 = 2
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 3
+ vec_0000 = 0.000000, 5.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.588235, 0.588235, 0.588235
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -13.962634, -13.962634, -13.962634
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, -0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.000000, 24.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gold\pfx_dist2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/studen_idle_bottom_shader.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/studen_idle_bottom_shader.pe
new file mode 100644
index 00000000..53277603
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/effects/studen_idle_bottom_shader.pe
@@ -0,0 +1,117 @@
+[_effect]
+ action_count = 8
+ flags = 2049
+ max_particles = 10
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.800000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.500000, 2.500000, 2.500000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, -0.050000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.400000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -3.141593, -3.141593, -3.141593
+ v1 = 3.141593, 3.141593, 3.141593
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 4
+ v0 = 4.000000, -0.200000, 4.000000
+ v1 = -4.000000, -0.300000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gold\pfx_distortion
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gold/gold_blowout.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/gold_blowout.pg
new file mode 100644
index 00000000..3e298f22
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/gold_blowout.pg
@@ -0,0 +1,51 @@
+[_group]
+ effects_count = 5
+ flags = 0
+ timelimit = 2.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\gold\effects\gold_hit
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\gold\effects\gold_hit_1
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\gold\effects\gold_dust_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\gold\effects\gold_dist_blast
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\gold\effects\gold_shield_dist
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gold/gold_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/gold_idle.pg
new file mode 100644
index 00000000..d13d53b2
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gold/gold_idle.pg
@@ -0,0 +1,87 @@
+[_group]
+ effects_count = 9
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\gold\effects\anomaly_dao_gold_ground_smoke
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\gold\effects\anomaly_dao_gold_bottom
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\gold\effects\anomaly_dao_gold_bottom_splash
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\gold\effects\anomaly_dao_gold_bottom_splash_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\gold\effects\studen_idle_bottom_shader
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\gold\effects\gold_idle_smoke_big_puff
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\gold\effects\gold_idle_bottom_glow_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0007]
+ effect_name = semitone\anomalies\gold\effects\studen_idle_bottom_heat_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0008]
+ effect_name = semitone\anomalies\gold\effects\gold_idle_bottom_glow_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravi_av_rocks_rise.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravi_av_rocks_rise.pe
new file mode 100644
index 00000000..b420fb0b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravi_av_rocks_rise.pe
@@ -0,0 +1,129 @@
+[_effect]
+ action_count = 8
+ flags = 7169
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 8.000000
+ flt_0002 = 0.600000
+ flt_0003 = 1.000000
+ vec_0000 = 0.207843, 0.207843, 0.207843
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 140.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 25.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.211765, 0.211765, 0.211765
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.120000, 0.120000, 0.000000
+ v1 = 0.250000, 0.250000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational\bitssmallrocky_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravitational_blowout_leaves.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravitational_blowout_leaves.pe
new file mode 100644
index 00000000..ad571ef1
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravitational_blowout_leaves.pe
@@ -0,0 +1,129 @@
+[_effect]
+ action_count = 8
+ flags = 70657
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.080000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -5.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 0
+ version = 1
+
+[collision]
+ collide_resilence = 0.000000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 1.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.368627, 0.368627, 0.368627
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 2.000000, 0.500000, 2.000000
+ v1 = -2.000000, 0.000000, -2.000000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.020000, 0.020000, 0.020000
+ v1 = 0.200000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 2.000000, 3.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 4
+ v0 = 15.000000, 0.000000, 15.000000
+ v1 = -15.000000, -1.000000, -15.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravitational_rocks_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravitational_rocks_dist.pe
new file mode 100644
index 00000000..2ee64fb3
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravitational_rocks_dist.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 0
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.500000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational\distort_anomaly_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravitational_we_rocks_burs,_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravitational_we_rocks_burs,_00.pe
new file mode 100644
index 00000000..769d18b2
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravitational_we_rocks_burs,_00.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 82945
+ max_particles = 30
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -20.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[collision]
+ collide_resilence = 0.000000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 1.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.180392, 0.180392, 0.180392
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.250000, 0.400000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.200000, 0.200000, 0.200000
+ v1 = 0.550000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 10.000000, 0.000000
+ v1 = 8.000000, 15.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 3.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bitssmallrocky_d
+
+[timelimit]
+ value = 3.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravitational_we_rocks_burst2_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravitational_we_rocks_burst2_00.pe
new file mode 100644
index 00000000..59a5920a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravitational_we_rocks_burst2_00.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 82945
+ max_particles = 30
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -25.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[collision]
+ collide_resilence = 0.000000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 1.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.180392, 0.180392, 0.180392
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.250000, 0.400000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 5
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.100000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 4.000000, 0.000000
+ v1 = 8.000000, 15.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 3.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational\bitssmallrocky_d
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravitational_we_rocks_outburst_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravitational_we_rocks_outburst_00.pe
new file mode 100644
index 00000000..bf2e3d40
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravitational_we_rocks_outburst_00.pe
@@ -0,0 +1,142 @@
+[_effect]
+ action_count = 9
+ flags = 17409
+ max_particles = 14
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 1.000000
+ flt_0002 = 5.000000
+ int_0000 = 2
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 3
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[action_0008]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 250.000000
+ flt_0001 = 250.000000
+ flt_0002 = 25.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ vec_0001 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.188235, 0.188235, 0.188235
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 1.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 3.717551, 0.226893, 7.225663
+ v1 = -214.884928, 229.039568, -2.146755
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.150000, 0.150000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 8.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 4
+ v0 = 6.000000, 0.000000, 6.000000
+ v1 = -6.000000, -6.000000, -6.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 2.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational\bitssmallrocky_d
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravity_dust_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravity_dust_00.pe
new file mode 100644
index 00000000..9fef4fe7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravity_dust_00.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 21505
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.800000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.333333, 0.321569, 0.301961
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 5.000000, 5.000000, 5.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.286275, 0.262745, 0.227451
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 3.000000, 0.000000, 3.000000
+ v1 = -3.000000, 0.200000, -3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.900000, 1.900000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 4.000000, 3.000000, 4.000000
+ v1 = -4.000000, 5.000000, -4.000000
+ v2 = 12.000000, 50.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational\cumulus_02
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravity_dust_0022.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravity_dust_0022.pe
new file mode 100644
index 00000000..3ca73ee2
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/hit/gravity_dust_0022.pe
@@ -0,0 +1,105 @@
+[_effect]
+ action_count = 6
+ flags = 21505
+ max_particles = 35
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.800000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.333333, 0.321569, 0.301961
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 5.000000, 5.000000, 5.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 8.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.286275, 0.262745, 0.227451
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 4.000000, 4.000000, 4.000000
+ v1 = 1.900000, 1.900000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 1.000000, 4.000000, 1.000000
+ v1 = 15.000000, 0.000000, -2.000000
+ v2 = 12.000000, 50.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\cumulus_02
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitat_bottom_dist_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitat_bottom_dist_01.pe
new file mode 100644
index 00000000..41220da8
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitat_bottom_dist_01.pe
@@ -0,0 +1,114 @@
+[_effect]
+ action_count = 8
+ flags = 2049
+ max_particles = 3
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.800000
+ flt_0002 = 0.000000
+ flt_0003 = 14.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 5.000000
+ vec_0001 = 3.000000, 3.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 120.000000
+ flt_0001 = 400.000000
+ flt_0002 = 100.000000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, -0.050000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -3.141593, -3.141593, -3.141593
+ v1 = 3.141593, 3.141593, 3.141593
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational\pfx_distortion
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves.pe
new file mode 100644
index 00000000..76eca1a4
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves.pe
@@ -0,0 +1,129 @@
+[_effect]
+ action_count = 8
+ flags = 201729
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 22.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.080000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -5.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 0
+ version = 1
+
+[collision]
+ collide_resilence = 0.000000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 1.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.368627, 0.368627, 0.368627
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 2.000000, 0.500000, 2.000000
+ v1 = -2.000000, 0.000000, -2.000000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.200000, 0.200000, 0.200000
+ v1 = 0.550000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 4
+ v0 = 15.000000, 0.000000, 15.000000
+ v1 = -15.000000, -1.000000, -15.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves_00.pe
new file mode 100644
index 00000000..5f5a394d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves_00.pe
@@ -0,0 +1,129 @@
+[_effect]
+ action_count = 8
+ flags = 201729
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 22.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.080000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -5.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 0
+ version = 1
+
+[collision]
+ collide_resilence = 0.000000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 1.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.368627, 0.368627, 0.368627
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 2.000000, 0.500000, 2.000000
+ v1 = -2.000000, 0.000000, -2.000000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.250000, 0.250000, 0.250000
+ v1 = 0.550000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 6.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 4
+ v0 = 15.000000, 0.000000, 15.000000
+ v1 = -15.000000, -1.000000, -15.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves_01.pe
new file mode 100644
index 00000000..f4ca91bf
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves_01.pe
@@ -0,0 +1,122 @@
+[_effect]
+ action_count = 8
+ flags = 200705
+ max_particles = 3
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 14.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.080000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -5.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 0
+ version = 1
+
+[collision]
+ collide_resilence = 0.000000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 1.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.368627, 0.368627, 0.368627
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 2.000000, 0.500000, 2.000000
+ v1 = -2.000000, 0.000000, -2.000000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.200000, 0.200000, 0.200000
+ v1 = 0.550000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 6.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 4
+ v0 = 15.000000, 0.000000, 15.000000
+ v1 = -15.000000, -1.000000, -15.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational\leaf_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves_02.pe
new file mode 100644
index 00000000..f391893a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves_02.pe
@@ -0,0 +1,122 @@
+[_effect]
+ action_count = 8
+ flags = 200705
+ max_particles = 3
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 14.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.080000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -8.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 0
+ version = 1
+
+[collision]
+ collide_resilence = 0.000000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 1.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.368627, 0.368627, 0.368627
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 2.000000, 0.500000, 2.000000
+ v1 = -2.000000, 0.000000, -2.000000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.550000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 2.000000, 5.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 4
+ v0 = 15.000000, 0.000000, 15.000000
+ v1 = -15.000000, -1.000000, -15.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational\leaf_04
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves_03.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves_03.pe
new file mode 100644
index 00000000..4bd518d0
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves_03.pe
@@ -0,0 +1,122 @@
+[_effect]
+ action_count = 8
+ flags = 200705
+ max_particles = 10
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.080000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -5.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 0
+ version = 1
+
+[collision]
+ collide_resilence = 0.000000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 1.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.545098, 0.545098, 0.545098
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 2.000000, 0.500000, 2.000000
+ v1 = -2.000000, 0.000000, -2.000000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.020000, 0.020000, 0.000000
+ v1 = 0.200000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 6.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 4
+ v0 = 15.000000, 0.000000, 15.000000
+ v1 = -15.000000, -1.000000, -15.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational\branch_03
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves_04.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves_04.pe
new file mode 100644
index 00000000..5cc4c452
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves_04.pe
@@ -0,0 +1,122 @@
+[_effect]
+ action_count = 8
+ flags = 200705
+ max_particles = 2
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.080000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -8.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.200000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 0
+ version = 1
+
+[collision]
+ collide_resilence = 0.000000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 1.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.694118, 0.588235, 0.517647
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 2.000000, 0.500000, 2.000000
+ v1 = -2.000000, 0.000000, -2.000000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.020000, 0.025000, 0.020000
+ v1 = 0.200000, 0.200000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 1.000000, 2.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 4
+ v0 = 15.000000, 0.000000, 15.000000
+ v1 = -15.000000, -1.000000, -15.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational\leaf_10
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves_05.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves_05.pe
new file mode 100644
index 00000000..edabb005
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_av_leaves_05.pe
@@ -0,0 +1,122 @@
+[_effect]
+ action_count = 8
+ flags = 200705
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.080000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -5.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 0
+ version = 1
+
+[collision]
+ collide_resilence = 0.000000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 1.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.368627, 0.368627, 0.368627
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 2.000000, 0.500000, 2.000000
+ v1 = -2.000000, 0.000000, -2.000000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.020000, 0.020000, 0.000000
+ v1 = 0.300000, 0.100000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 4
+ v0 = 15.000000, 0.000000, 15.000000
+ v1 = -15.000000, -1.000000, -15.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\springboard\leaf
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_rocks_dist_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_rocks_dist_00.pe
new file mode 100644
index 00000000..2ee64fb3
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_rocks_dist_00.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 0
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.500000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational\distort_anomaly_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_we_rocks_burst2_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_we_rocks_burst2_00.pe
new file mode 100644
index 00000000..cc26b6a8
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_we_rocks_burst2_00.pe
@@ -0,0 +1,124 @@
+[_effect]
+ action_count = 8
+ flags = 1025
+ max_particles = 3
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.080000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -9.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 3
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.121569, 0.121569, 0.121569
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 2.000000, 0.000000, 2.000000
+ v1 = -2.000000, 0.000000, -2.000000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.550000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 2.000000, 4.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 4
+ v0 = 4.000000, -0.300000, 4.000000
+ v1 = -4.000000, -0.400000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 23.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational\clothbitanim
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_we_rocks_burst2_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_we_rocks_burst2_01.pe
new file mode 100644
index 00000000..a8854839
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/gravitational_we_rocks_burst2_01.pe
@@ -0,0 +1,115 @@
+[_effect]
+ action_count = 7
+ flags = 66561
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.080000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -9.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 5.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[collision]
+ collide_resilence = 0.000000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 1.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.121569, 0.121569, 0.121569
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 2.000000, 0.500000, 2.000000
+ v1 = -2.000000, 0.000000, -2.000000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.200000, 0.200000, 0.200000
+ v1 = 0.550000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 6.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 3.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational\bitssmallrocky_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/nograv_dust_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/nograv_dust_00.pe
new file mode 100644
index 00000000..d85bb1ae
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/nograv_dust_00.pe
@@ -0,0 +1,143 @@
+[_effect]
+ action_count = 10
+ flags = 5121
+ max_particles = 30
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 0.300000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 250.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.300000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 4.000000, 4.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.020000
+ vec_0000 = 40.491640, 2148.901888, 2166374.531072
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -0.100000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 0
+ version = 1
+
+[action_0007]
+ action_name = gravitate
+ action_type = 7
+ flags = 0
+ flt_0000 = 0.001000
+ flt_0001 = 0.300000
+ flt_0002 = 0.400000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 24.000000
+ flt_0002 = 250.000000
+ int_0000 = 2
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.235294, 0.235294, 0.235294
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 2.000000, 0.300000, 2.000000
+ v1 = -2.000000, 0.000000, -2.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 8
+ v0 = -12.566371, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 0.500000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 4
+ v0 = 8.000000, -0.500000, 8.000000
+ v1 = -8.000000, -1.000000, -8.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational\cumulus_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/nograv_dust_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/nograv_dust_01.pe
new file mode 100644
index 00000000..ee656a1d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/nograv_dust_01.pe
@@ -0,0 +1,123 @@
+[_effect]
+ action_count = 8
+ flags = 5121
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.300000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 4.000000, 4.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.000000
+ vec_0000 = 40.491640, 0.000017, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -0.100000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 0
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.235294, 0.235294, 0.235294
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 2.000000, 0.300000, 2.000000
+ v1 = -2.000000, -1.000000, -2.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = -12.566371, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 0.500000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 4
+ v0 = 8.000000, -0.500000, 8.000000
+ v1 = -8.000000, -1.000000, -8.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational\cumulus_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/zone_graviti_mine_idle_leaves_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/zone_graviti_mine_idle_leaves_01.pe
new file mode 100644
index 00000000..b8f04278
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/zone_graviti_mine_idle_leaves_01.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 6.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.349020, 0.403922, 0.349020
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.337255, 0.392157, 0.329412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.030000, 0.030000, 0.000000
+ v1 = 0.090000, 0.090000, 0.090000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational\cumulus_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/zone_graviti_mine_smoke.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/zone_graviti_mine_smoke.pe
new file mode 100644
index 00000000..5477c877
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/idle/zone_graviti_mine_smoke.pe
@@ -0,0 +1,129 @@
+[_effect]
+ action_count = 8
+ flags = 19457
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 15.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.200000, 0.176471, 0.164706
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.012000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 4.000000, 4.000000, 0.001000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.243137, 0.211765, 0.184314
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.250000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 64.000000, 64.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\puff_00
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/shield/gold_shield_dist_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/shield/gold_shield_dist_00.pe
new file mode 100644
index 00000000..d62538c7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/effects/shield/gold_shield_dist_00.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 26625
+ max_particles = 3
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.330000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 9.000000, 9.000000, 9.000000
+ vec_0001 = 0.500000, 0.500000, 0.500000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.600000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -6.108652, -6.108652, -6.108652
+ v1 = 6.108652, 6.108652, 6.108652
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 20.000000, 20.000000, 20.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\spatial_bubble\pfx_dist2inv
+
+[timelimit]
+ value = 0.500000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/gravitational_blowout.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/gravitational_blowout.pg
new file mode 100644
index 00000000..c7614091
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/gravitational_blowout.pg
@@ -0,0 +1,51 @@
+[_group]
+ effects_count = 5
+ flags = 0
+ timelimit = 6.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\gravitational\effects\hit\gravitational_we_rocks_outburst_00
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\gravitational\effects\hit\gravitational_rocks_dist
+ time0 = 0.000000
+ time1 = 5.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\gravitational\effects\hit\gravitational_we_rocks_burst2_00
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\gravitational\effects\hit\gravitational_rocks_dist
+ time0 = 0.000000
+ time1 = 6.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\gravitational\effects\hit\gravity_dust_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\gravitational\effects\hit\gravitational_we_rocks_burs, _00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\gravitational\effects\hit\gravity_dust_0022
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\gravitational\effects\hit\gravitational_blowout_leaves
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/gravitational_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/gravitational_idle.pg
new file mode 100644
index 00000000..40c4c13a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/gravitational_idle.pg
@@ -0,0 +1,60 @@
+[_group]
+ effects_count = 6
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\gravitational\effects\idle\gravitational_we_rocks_burst2_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\gravitational\effects\idle\gravitational_av_leaves
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\gravitational\effects\idle\gravitational_av_leaves_00
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\gravitational\effects\idle\zone_graviti_mine_smoke
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\gravitational\effects\idle\gravitational_av_leaves_01
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\gravitational\effects\idle\gravitational_av_leaves_02
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\gravitational\effects\idle\gravitational_av_leaves_04
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\gravitational\effects\idle\gravitational_av_leaves_05
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\gravitational\effects\idle\gravitat_bottom_dist_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/gravitational_shield.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/gravitational_shield.pg
new file mode 100644
index 00000000..2ca97ce3
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational/gravitational_shield.pg
@@ -0,0 +1,15 @@
+[_group]
+ effects_count = 1
+ flags = 0
+ timelimit = 1.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\gravitational\effects\shield\gold_shield_dist_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood.pe
new file mode 100644
index 00000000..4b59104f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 89089
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 900.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 0.176471, 0.023529, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -6.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -0.640522, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[collision]
+ collide_resilence = 0.000000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 1.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.176471, 0.023529, 0.023529
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.500000, 0.500000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 3.000000, 5.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\clothbitanim
+
+[timelimit]
+ value = 0.500000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood1.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood1.pe
new file mode 100644
index 00000000..ca612905
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood1.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 89089
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 6.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.080000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -9.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[collision]
+ collide_resilence = 0.300000
+ collide_sqr_cutoff = 0.250000
+ one_minus_friction = 0.500000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.176471, 0.023529, 0.023529
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.400000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.040000, 0.000000
+ v1 = 0.550000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 8.000000, 15.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\clothbitanim
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood2.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood2.pe
new file mode 100644
index 00000000..123947f1
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood2.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 89089
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 6.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.176471, 0.023529, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -12.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 10.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[collision]
+ collide_resilence = 0.400000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 0.500000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.176471, 0.023529, 0.023529
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.400000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.040000, 0.040000, 0.000000
+ v1 = 0.450000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 10.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\clothbitanim
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood4.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood4.pe
new file mode 100644
index 00000000..51f407a8
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood4.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 19457
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 200.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.176471, 0.023529, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 15.000000, 15.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.060000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, -4.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.176471, 0.023529, 0.023529
+ v1 = 0.300000, 0.300000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 4.000000, 12.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 125
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bloodburst07_var4
+
+[timelimit]
+ value = 0.500000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood5.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood5.pe
new file mode 100644
index 00000000..dcfb8639
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood5.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 90.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.176471, 0.023529, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 12.000000, 12.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.060000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, -4.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.176471, 0.023529, 0.023529
+ v1 = 0.300000, 0.300000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 23.335052, -1.000004, -1.000004
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 4.000000, 0.000000
+ v1 = 5.000000, 35.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bloodsquirt2
+
+[timelimit]
+ value = 0.500000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood6.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood6.pe
new file mode 100644
index 00000000..dfff6200
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood6.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 19457
+ max_particles = 14
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 900.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 16.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.176471, 0.023529, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 15.000000, 15.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.060000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, -4.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.176471, 0.023529, 0.023529
+ v1 = 0.300000, 0.300000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 23.335052, -1.000004, -1.000004
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 24.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 32
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bloodburst07_var4
+
+[timelimit]
+ value = 0.500000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood7.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood7.pe
new file mode 100644
index 00000000..f414dd6a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood7.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 220161
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 6.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.080000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -9.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[collision]
+ collide_resilence = 0.300000
+ collide_sqr_cutoff = 0.250000
+ one_minus_friction = 0.500000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.219608, 0.050980, 0.050980
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.400000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.040000, 0.000000
+ v1 = 0.550000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 15.000000, 0.000000
+ v1 = 8.000000, 15.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\clothbitanim
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood7_child_od_dead.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood7_child_od_dead.pe
new file mode 100644
index 00000000..b67e2547
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood7_child_od_dead.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 19457
+ max_particles = 2
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 900.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.219608, 0.050980, 0.050980
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 2.000000, 2.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -2.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -0.640522, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.219608, 0.050980, 0.050980
+ v1 = 0.300000, 0.300000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.500000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bloodburst03_var5
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood7_child_on_play.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood7_child_on_play.pe
new file mode 100644
index 00000000..3e13f817
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood7_child_on_play.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 8
+ flags = 3073
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 20.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 8.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.176471, 0.023529, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 4.000000, 4.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -2.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -0.640522, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.176471, 0.023529, 0.023529
+ v1 = 0.300000, 0.300000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 32
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bloodburst07_var4
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood8.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood8.pe
new file mode 100644
index 00000000..a6272db6
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_blood8.pe
@@ -0,0 +1,129 @@
+[_effect]
+ action_count = 8
+ flags = 220161
+ max_particles = 52
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 12.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.219608, 0.050980, 0.050980
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -2.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 10.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 1.000000
+ flt_0002 = 15.000000
+ int_0000 = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[collision]
+ collide_resilence = 0.400000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 0.500000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.219608, 0.050980, 0.050980
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.400000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.040000, 0.040000, 0.000000
+ v1 = 0.450000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 8.000000, 0.000000
+ v1 = 6.000000, 10.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\clothbitanim
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_dust_burst.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_dust_burst.pe
new file mode 100644
index 00000000..819e4c2b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blood_splash/sb_dust_burst.pe
@@ -0,0 +1,119 @@
+[_effect]
+ action_count = 8
+ flags = 81921
+ max_particles = 32
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.286275, 0.054902, 0.054902
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 0.000000
+ vec_0001 = 12.000000, 12.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 0
+ vec_0000 = 0.000000, -2.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -0.640522, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[collision]
+ collide_resilence = 0.000000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 1.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.286275, 0.054902, 0.054902
+ v1 = 0.300000, 0.300000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 12.000000, 0.000000
+ v2 = 50.000000, 75.000000, 0.000000
+
+[sprite]
+ shader = particles\set
+ texture = semitone\anomalies\gravitational_average\spore_a
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_av_rocks_rise_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_av_rocks_rise_00.pe
new file mode 100644
index 00000000..86762b55
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_av_rocks_rise_00.pe
@@ -0,0 +1,129 @@
+[_effect]
+ action_count = 8
+ flags = 7169
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 8.000000
+ flt_0002 = 0.600000
+ flt_0003 = 1.000000
+ vec_0000 = 0.207843, 0.207843, 0.207843
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 140.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 25.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.211765, 0.211765, 0.211765
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.150000, 0.150000, 0.150000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bitssmallrocky_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_distort_12.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_distort_12.pe
new file mode 100644
index 00000000..eaf2b427
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_distort_12.pe
@@ -0,0 +1,94 @@
+[_effect]
+ action_count = 6
+ flags = 1
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 9.000000, 9.000000, 9.000000
+ vec_0001 = 3.500000, 3.500000, 3.500000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.580392, 0.580392, 0.580392
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.100000
+ vec_0000 = -69.813168, -69.813168, -69.813168
+ version = 1
+
+[action_0004]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 10000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0004_0000]
+ type = 0
+ v0 = 0.007843, 0.007843, 0.007843
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0001]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 0.250000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0003]
+ type = 1
+ v0 = 17.000000, 17.000000, 17.000000
+ v1 = 18.000000, 18.000000, 18.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_average\pfx_dist9
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_distort_3.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_distort_3.pe
new file mode 100644
index 00000000..d37b3c0f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_distort_3.pe
@@ -0,0 +1,94 @@
+[_effect]
+ action_count = 6
+ flags = 1
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 5.000000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.100000
+ vec_0000 = -8.726646, -8.726646, -8.726646
+ version = 1
+
+[action_0004]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 10000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0004_0000]
+ type = 0
+ v0 = 0.007843, 0.007843, 0.007843
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0001]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 0.250000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0003]
+ type = 1
+ v0 = 8.000000, 8.000000, 8.000000
+ v1 = 9.000000, 9.000000, 9.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_average\pfx_dist9
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_distort_6.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_distort_6.pe
new file mode 100644
index 00000000..d31c1334
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_distort_6.pe
@@ -0,0 +1,94 @@
+[_effect]
+ action_count = 6
+ flags = 1
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 5.000000
+ vec_0001 = 1.500000, 1.500000, 1.500000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.100000
+ vec_0000 = -17.453292, -17.453292, -17.453292
+ version = 1
+
+[action_0004]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 10000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0004_0000]
+ type = 0
+ v0 = 0.007843, 0.007843, 0.007843
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0001]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 0.250000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0003]
+ type = 1
+ v0 = 11.000000, 11.000000, 11.000000
+ v1 = 12.000000, 12.000000, 12.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_average\pfx_dist9
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_distort_9.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_distort_9.pe
new file mode 100644
index 00000000..317b0858
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_distort_9.pe
@@ -0,0 +1,94 @@
+[_effect]
+ action_count = 6
+ flags = 1
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 7.000000, 7.000000, 7.000000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.764706, 0.764706, 0.764706
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.100000
+ vec_0000 = -43.633232, -43.633232, -43.633232
+ version = 1
+
+[action_0004]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 10000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0004_0000]
+ type = 0
+ v0 = 0.007843, 0.007843, 0.007843
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0001]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 0.250000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0003]
+ type = 1
+ v0 = 14.000000, 14.000000, 14.000000
+ v1 = 15.000000, 15.000000, 15.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_average\pfx_dist9
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_shield_wave.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_shield_wave.pe
new file mode 100644
index 00000000..9b0636e6
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_shield_wave.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 18433
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 17.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 5.000000
+ vec_0001 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 2.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -6.283186, -6.283186, 0.000000
+ v1 = 6.283186, 6.283186, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.500000
+ v1 = 0.700000, 0.300000, 0.700000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_average\pfx_dist2
+
+[timelimit]
+ value = 0.300000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_vaccuuum.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_vaccuuum.pe
new file mode 100644
index 00000000..66a70ac9
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_vaccuuum.pe
@@ -0,0 +1,120 @@
+[_effect]
+ action_count = 8
+ flags = 7169
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.400000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.100000
+ flt_0001 = 500.000000
+ flt_0002 = 999999998050644.787200
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 20.000000
+ flt_0001 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0006]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 60.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0006_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0006_0001]
+ type = 4
+ v0 = 10.000000, 0.500000, 10.000000
+ v1 = -10.000000, 2.000000, -10.000000
+ v2 = 8.000000, 12.000000, 0.000000
+
+[domain_action_0006_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -6.806784, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bitsleavessprite
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_vacuum_12.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_vacuum_12.pe
new file mode 100644
index 00000000..c5943915
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_vacuum_12.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 6
+ flags = 56321
+ max_particles = 70
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.100000
+ flt_0001 = 400.000000
+ flt_0002 = 999999998050644.787200
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0003]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 15.000000
+ flt_0001 = -1.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 70.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0002_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 0
+ v0 = 0.501961, 0.654902, 0.509804
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0005_0001]
+ type = 9
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 10.000000, 12.000000, 0.000000
+
+[domain_action_0005_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.170000, 0.170000, 0.170000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0004]
+ type = 0
+ v0 = 0.500000, 3.000000, 0.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bitsleavessprite
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_vacuum_6.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_vacuum_6.pe
new file mode 100644
index 00000000..2125e3d2
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_vacuum_6.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 6
+ flags = 56321
+ max_particles = 70
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.100000
+ flt_0001 = 400.000000
+ flt_0002 = 999999998050644.787200
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0003]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 10.000000
+ flt_0001 = -1.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 80.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0002_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 0
+ v0 = 0.521569, 0.635294, 0.525490
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0005_0001]
+ type = 9
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 7.000000, 9.000000, 0.000000
+
+[domain_action_0005_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.100000, 0.100000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0004]
+ type = 0
+ v0 = 0.500000, 4.000000, 0.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bitsleavessprite
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_vacuum_dust_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_vacuum_dust_01.pe
new file mode 100644
index 00000000..2450d82b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_vacuum_dust_01.pe
@@ -0,0 +1,137 @@
+[_effect]
+ action_count = 9
+ flags = 17409
+ max_particles = 40
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.500000
+ flt_0001 = 3.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.321569, 0.305882, 0.298039
+ version = 1
+
+[action_0002]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.100000
+ flt_0001 = 500.000000
+ flt_0002 = 999999998050644.787200
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 20.000000
+ flt_0001 = -1.000000
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.300000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.050000
+ flt_0002 = 0.000000
+ flt_0003 = 100.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 0
+ v0 = 0.427451, 0.423529, 0.419608
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0007_0001]
+ type = 9
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 8.000000, 13.000000, 0.000000
+
+[domain_action_0007_0002]
+ type = 1
+ v0 = -5.235988, -5.235988, -5.235988
+ v1 = 52.359880, 52.359880, 52.359880
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0003]
+ type = 1
+ v0 = 2.000000, 2.000000, 2.000000
+ v1 = 4.000000, 4.000000, 4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0004]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\smokepuffscontrastatlas
+
+[timelimit]
+ value = 1.500000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_vacuum_dust_10.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_vacuum_dust_10.pe
new file mode 100644
index 00000000..a37494ac
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_vacuum_dust_10.pe
@@ -0,0 +1,148 @@
+[_effect]
+ action_count = 10
+ flags = 21505
+ max_particles = 40
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.100000
+ flt_0001 = 3.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.368627, 0.301961, 0.270588
+ version = 1
+
+[action_0002]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.100000
+ flt_0001 = 300.000000
+ flt_0002 = 999999998050644.787200
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 15.000000
+ flt_0001 = -1.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.100000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.050000
+ flt_0002 = 0.000000
+ flt_0003 = 80.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0009]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.313726, 0.274510, 0.254902
+ version = 1
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0008_0000]
+ type = 0
+ v0 = 0.290196, 0.247059, 0.219608
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0008_0001]
+ type = 9
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 3.000000, 7.000000, 0.000000
+
+[domain_action_0008_0002]
+ type = 1
+ v0 = -5.235988, -5.235988, -5.235988
+ v1 = 52.359880, 52.359880, 52.359880
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0008_0003]
+ type = 1
+ v0 = 4.000000, 4.000000, 4.000000
+ v1 = 5.000000, 5.000000, 5.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0008_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\smokepuffscontrastatlas
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_wave_distort.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_wave_distort.pe
new file mode 100644
index 00000000..348d23da
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_wave_distort.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 8
+ flags = 6145
+ max_particles = 40
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.400000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.100000
+ flt_0001 = 500.000000
+ flt_0002 = 999999998050644.787200
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 20.000000
+ flt_0001 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0006]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 60.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0006_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0006_0001]
+ type = 9
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 8.000000, 12.000000, 0.000000
+
+[domain_action_0006_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -6.806784, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0003]
+ type = 1
+ v0 = 2.000000, 2.000000, 2.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_average\pfx_distortion
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_zaxvat_otbrosy00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_zaxvat_otbrosy00.pe
new file mode 100644
index 00000000..a269598a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravi_zaxvat_otbrosy00.pe
@@ -0,0 +1,133 @@
+[_effect]
+ action_count = 8
+ flags = 56321
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 6.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.509804, 0.623529, 0.513726
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -5.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 1.000000
+ flt_0002 = 5.000000
+ int_0000 = 2
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.501961, 0.600000, 0.501961
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 1.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 10.000000, 20.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 4
+ v0 = 6.000000, 0.000000, 6.000000
+ v1 = -6.000000, -6.000000, -6.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bitsleaves01anim_d
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravitational_leaves_burst.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravitational_leaves_burst.pe
new file mode 100644
index 00000000..87a25c00
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravitational_leaves_burst.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 17409
+ max_particles = 30
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.080000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -20.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.576471, 0.576471, 0.576471
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.250000, 0.400000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.200000, 0.200000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 10.000000, 0.000000
+ v1 = 8.000000, 15.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 3.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bitsleavessprite
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravitational_rocks_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravitational_rocks_dist.pe
new file mode 100644
index 00000000..e63b4775
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravitational_rocks_dist.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 0
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.500000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_average\distort_anomaly_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravitational_we_rocks_burst2.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravitational_we_rocks_burst2.pe
new file mode 100644
index 00000000..1e4a8a50
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravitational_we_rocks_burst2.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 82945
+ max_particles = 30
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.080000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -20.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[collision]
+ collide_resilence = 0.000000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 1.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.180392, 0.180392, 0.180392
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.250000, 0.400000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.150000, 0.150000, 0.150000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 10.000000, 0.000000
+ v1 = 8.000000, 15.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 3.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bitssmallrocky_d
+
+[timelimit]
+ value = 8.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravitational_we_rocks_outburst.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravitational_we_rocks_outburst.pe
new file mode 100644
index 00000000..6ecf1b2e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravitational_we_rocks_outburst.pe
@@ -0,0 +1,142 @@
+[_effect]
+ action_count = 9
+ flags = 21505
+ max_particles = 14
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 1.000000
+ flt_0002 = 5.000000
+ int_0000 = 2
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[action_0008]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 250.000000
+ flt_0001 = 250.000000
+ flt_0002 = 25.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ vec_0001 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.188235, 0.188235, 0.188235
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 1.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 3.717551, 0.226893, 7.225663
+ v1 = -214.884928, 229.039568, -2.146755
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.150000, 0.150000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 8.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 4
+ v0 = 6.000000, 0.000000, 6.000000
+ v1 = -6.000000, -6.000000, -6.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 2.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bitsleavessprite
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dist_average_additional_05.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dist_average_additional_05.pe
new file mode 100644
index 00000000..41ca9ba6
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dist_average_additional_05.pe
@@ -0,0 +1,128 @@
+[_effect]
+ action_count = 9
+ flags = 22529
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 0.000000
+ vec_0001 = 11.000000, 11.000000, 11.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 2.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 12.000000
+ flt_0002 = 20.000000
+ int_0000 = 6
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0008]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.100000
+ flt_0001 = 900.000000
+ flt_0002 = 100.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 5.000000, 5.000000, 5.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 4.000000, 0.000000
+ v1 = 12.000000, 24.000000, 0.000000
+ v2 = 52.000000, 62.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_average\pfx_dist2inv
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dust_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dust_01.pe
new file mode 100644
index 00000000..801c235d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dust_01.pe
@@ -0,0 +1,105 @@
+[_effect]
+ action_count = 6
+ flags = 21505
+ max_particles = 80
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.800000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.333333, 0.321569, 0.301961
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 5.000000, 5.000000, 5.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 8.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.286275, 0.262745, 0.227451
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 4.000000, 4.000000, 4.000000
+ v1 = 1.900000, 1.900000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 1.000000, 4.000000, 1.000000
+ v1 = 15.000000, 0.000000, -2.000000
+ v2 = 12.000000, 50.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\cumulus_02
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dust_21.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dust_21.pe
new file mode 100644
index 00000000..edb47869
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dust_21.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 21505
+ max_particles = 32
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.423529, 0.458824, 0.372549
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 6.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.411765, 0.447059, 0.360784
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 3.000000, 7.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.120000, 0.120000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 24.000000, 0.000000
+ v2 = 128.000000, 128.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 1
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bitsleavessprite
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dust_22.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dust_22.pe
new file mode 100644
index 00000000..17207d20
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dust_22.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 21505
+ max_particles = 42
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.239216, 0.215686, 0.207843
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 6.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.266667, 0.235294, 0.223529
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 3.000000, 7.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.200000, 0.200000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 24.000000, 0.000000
+ v2 = 128.000000, 128.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bitssmallrocky_d
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dust_23.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dust_23.pe
new file mode 100644
index 00000000..1edcc558
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dust_23.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 21505
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.239216, 0.215686, 0.207843
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 6.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.266667, 0.235294, 0.223529
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 3.000000, 7.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.120000, 0.120000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 24.000000, 0.000000
+ v2 = 128.000000, 128.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bitswoodsplintersatlas
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dust_24.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dust_24.pe
new file mode 100644
index 00000000..9c74e0d7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dust_24.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 21505
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.239216, 0.215686, 0.207843
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 6.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.266667, 0.235294, 0.223529
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 3.000000, 7.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.120000, 0.120000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 24.000000, 0.000000
+ v2 = 128.000000, 128.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bushtrimmings_d
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dust_25.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dust_25.pe
new file mode 100644
index 00000000..ac856697
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_dust_25.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 21505
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.239216, 0.215686, 0.207843
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 6.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.266667, 0.235294, 0.223529
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 3.000000, 7.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.120000, 0.120000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 24.000000, 0.000000
+ v2 = 128.000000, 128.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\clothbitanim
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_leaves_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_leaves_00.pe
new file mode 100644
index 00000000..63fbe77b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/gravity_leaves_00.pe
@@ -0,0 +1,183 @@
+[_effect]
+ action_count = 12
+ flags = 23553
+ max_particles = 73
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.100000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.549020, 0.658824, 0.556863
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.700000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = bounce
+ action_type = 1
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 1.000000
+ version = 1
+
+[action_0006]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ flt_0001 = 33.000000
+ flt_0002 = 3.000000
+ vec_0000 = 0.000000, 0.000000, -10.000000
+ vec_0001 = -1.700000, 2.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ flt_0001 = 33.000000
+ flt_0002 = 3.000000
+ vec_0000 = 0.000000, 0.000000, 10.000000
+ vec_0001 = 1.700000, 2.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ flt_0001 = 33.000000
+ flt_0002 = 3.000000
+ vec_0000 = -10.000000, 0.000000, 0.000000
+ vec_0001 = 0.000000, 2.000000, 1.700000
+ version = 1
+
+[action_0009]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ flt_0001 = 33.000000
+ flt_0002 = 3.000000
+ vec_0000 = 10.000000, 0.000000, 0.000000
+ vec_0001 = 0.000000, 2.000000, -1.700000
+ version = 1
+
+[action_0010]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -15.000000, 0.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.541176, 0.674510, 0.576471
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.160000, 0.160000, 0.160000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, -1.000000, 0.000000
+ v1 = 0.000000, -37.000000, 0.000000
+ v2 = 3.000000, 17.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 3
+ v0 = 0.000000, -1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 6.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 64.000000, 64.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bitsleaves01anim_d
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/zone_graviti_mine_idle_leaves_06.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/zone_graviti_mine_idle_leaves_06.pe
new file mode 100644
index 00000000..f8af8566
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/zone_graviti_mine_idle_leaves_06.pe
@@ -0,0 +1,137 @@
+[_effect]
+ action_count = 9
+ flags = 7169
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 6.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 8.000000
+ flt_0002 = 0.600000
+ flt_0003 = 1.000000
+ vec_0000 = 0.364706, 0.325490, 0.294118
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 50.000000
+ flt_0001 = 140.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 2.000000
+ flt_0002 = 2.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0008]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 0.120000, 0.120000, 0.001000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.419608, 0.376471, 0.341176
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.250000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bitssmallrocky_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/zone_graviti_mine_idle_leaves_07.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/zone_graviti_mine_idle_leaves_07.pe
new file mode 100644
index 00000000..b6fb7be1
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/blowout/zone_graviti_mine_idle_leaves_07.pe
@@ -0,0 +1,129 @@
+[_effect]
+ action_count = 8
+ flags = 5121
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 6.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 8.000000
+ flt_0002 = 0.600000
+ flt_0003 = 1.000000
+ vec_0000 = 0.333333, 0.360784, 0.290196
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 140.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 24.000000
+ flt_0002 = 32.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.392157, 0.419608, 0.341176
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.120000, 0.120000, 0.000000
+ v1 = 0.250000, 0.250000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/dist_vacuum_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/dist_vacuum_01.pe
new file mode 100644
index 00000000..e80ad037
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/dist_vacuum_01.pe
@@ -0,0 +1,164 @@
+[_effect]
+ action_count = 12
+ flags = 34817
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 10.000000
+ flt_0001 = 20.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 0.200000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 1.000000, 4.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 7.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 13.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.020000
+ flt_0001 = 150.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 0.200000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 14.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0008]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0009]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 6.000000
+ flt_0001 = 3.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 0
+ v0 = 0.776471, 0.776471, 0.776471
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0007_0001]
+ type = 4
+ v0 = 4.000000, 4.000000, 4.000000
+ v1 = -4.000000, -1.000000, -4.000000
+ v2 = 5.000000, 6.000000, 0.000000
+
+[domain_action_0007_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.250000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0004]
+ type = 6
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 2.900000, 6.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_average\pfx_dist2inv
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/expl_car_smoke_big_smoke_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/expl_car_smoke_big_smoke_00.pe
new file mode 100644
index 00000000..8f178d79
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/expl_car_smoke_big_smoke_00.pe
@@ -0,0 +1,108 @@
+[_effect]
+ action_count = 6
+ flags = 54273
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 45.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 1
+ v0 = 0.364706, 0.329412, 0.298039
+ v1 = 0.286275, 0.286275, 0.286275
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -1.801878, 2.999750, 2.999750
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.000000
+ v1 = 0.500000, 0.500000, 0.500000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\shatterpoint\cumulus_02
+
+[timelimit]
+ value = 8.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_ground_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_ground_dist.pe
new file mode 100644
index 00000000..87a21553
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_ground_dist.pe
@@ -0,0 +1,114 @@
+[_effect]
+ action_count = 8
+ flags = 2049
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.800000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 120.000000
+ flt_0001 = 20.000000
+ flt_0002 = 100.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, -0.050000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -3.141593, -3.141593, -3.141593
+ v1 = 3.141593, 3.141593, 3.141593
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_average\pfx_distortion
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_ground_dust.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_ground_dust.pe
new file mode 100644
index 00000000..23917ec1
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_ground_dust.pe
@@ -0,0 +1,133 @@
+[_effect]
+ action_count = 9
+ flags = 3073
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 14.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -6.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 120.000000
+ flt_0001 = 20.000000
+ flt_0002 = 100.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.001000
+ flt_0001 = 2.000000
+ flt_0002 = 1.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ vec_0001 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.239216, 0.211765, 0.184314
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, -0.050000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -3.141593, -3.141593, -3.141593
+ v1 = 3.141593, 3.141593, 3.141593
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\puff_00
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_leaves_dist_child.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_leaves_dist_child.pe
new file mode 100644
index 00000000..83730157
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_leaves_dist_child.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 0
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.500000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_average\distort_anomaly_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_leaves_small.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_leaves_small.pe
new file mode 100644
index 00000000..6e42dfa9
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_leaves_small.pe
@@ -0,0 +1,147 @@
+[_effect]
+ action_count = 10
+ flags = 5121
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.086275, 0.098039, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 1.000000
+ flt_0002 = 100.000000
+ int_0000 = 2
+ vec_0000 = -0.700000, -1.000000, 10.700000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 0
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.200000, 0.200000, 0.200000
+ vec_0001 = 0.100000, 0.100000, 0.100000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0009]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ flt_0001 = 25.000000
+ flt_0002 = 13.000000
+ vec_0000 = -0.100000, 1.000000, 0.100000
+ vec_0001 = 0.000000, 0.500000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.129412, 0.129412, 0.129412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 2.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_leaves_small_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_leaves_small_00.pe
new file mode 100644
index 00000000..7d805164
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_leaves_small_00.pe
@@ -0,0 +1,140 @@
+[_effect]
+ action_count = 10
+ flags = 4097
+ max_particles = 3
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.086275, 0.098039, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, -1.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 22.000000
+ flt_0001 = 3.000000
+ flt_0002 = 250.000000
+ int_0000 = 1
+ vec_0000 = -0.700000, 0.000000, 10.700000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 0
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 0.200000, 0.200000, 0.200000
+ version = 1
+
+[action_0008]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ flt_0001 = 25.000000
+ flt_0002 = 13.000000
+ vec_0000 = -0.100000, 1.000000, 0.100000
+ vec_0001 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0009]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.500000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 10.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_average\pfx_dist2inv
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_leaves_small_new.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_leaves_small_new.pe
new file mode 100644
index 00000000..1d428b84
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_leaves_small_new.pe
@@ -0,0 +1,174 @@
+[_effect]
+ action_count = 13
+ flags = 4097
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.086275, 0.098039, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 22.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.005000
+ flt_0001 = 1.000000
+ flt_0002 = 100.000000
+ int_0000 = 1
+ vec_0000 = -1.000000, 0.000000, -5.000000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 0
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.200000, 0.200000, 0.200000
+ vec_0001 = 0.100000, 0.100000, 0.100000
+ version = 1
+
+[action_0008]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ flt_0001 = 12.000000
+ flt_0002 = 2.000000
+ vec_0000 = 0.000000, -2.000000, -1.000000
+ vec_0001 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0009]
+ action_name = bounce
+ action_type = 1
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.500000
+ version = 1
+
+[action_0010]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0011]
+ action_name = gravitate
+ action_type = 7
+ flags = 1
+ flt_0000 = 0.001000
+ flt_0001 = 0.300000
+ flt_0002 = 0.200000
+ version = 1
+
+[action_0012]
+ action_name = gravitate_00
+ action_type = 7
+ flags = 1
+ flt_0000 = 4.000000
+ flt_0001 = 1.000000
+ flt_0002 = 3.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.388235, 0.388235, 0.388235
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 7
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, -1.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0009_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\leaf
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_leaves_small_new_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_leaves_small_new_00.pe
new file mode 100644
index 00000000..01377be7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_leaves_small_new_00.pe
@@ -0,0 +1,162 @@
+[_effect]
+ action_count = 12
+ flags = 1
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.086275, 0.098039, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.005000
+ flt_0001 = 1.000000
+ flt_0002 = 100.000000
+ int_0000 = 2
+ vec_0000 = -1.000000, 0.000000, -5.000000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.250000, 0.250000, 0.250000
+ vec_0001 = 0.050000, 0.050000, 0.050000
+ version = 1
+
+[action_0008]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0009]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ flt_0001 = 25.000000
+ flt_0002 = 3.000000
+ vec_0000 = 0.000000, 0.500000, 0.000000
+ vec_0001 = 0.000000, 0.500000, 0.000000
+ version = 1
+
+[action_0010]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0011]
+ action_name = gravitate
+ action_type = 7
+ flags = 1
+ flt_0000 = 0.001000
+ flt_0001 = 0.300000
+ flt_0002 = 0.500000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.301961, 0.301961, 0.301961
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.050000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0008_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\leaf
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_leaves_small_new_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_leaves_small_new_01.pe
new file mode 100644
index 00000000..4c072c01
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_leaves_small_new_01.pe
@@ -0,0 +1,147 @@
+[_effect]
+ action_count = 10
+ flags = 5121
+ max_particles = 10
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.086275, 0.098039, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.005000
+ flt_0001 = 1.000000
+ flt_0002 = 100.000000
+ int_0000 = 2
+ vec_0000 = -1.000000, 0.000000, -5.000000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 0
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.400000, 0.400000, 0.400000
+ vec_0001 = 0.050000, 0.050000, 0.050000
+ version = 1
+
+[action_0008]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ flt_0001 = 25.000000
+ flt_0002 = 3.000000
+ vec_0000 = 0.000000, 0.500000, 0.100000
+ vec_0001 = 0.000000, 0.500000, 0.000000
+ version = 1
+
+[action_0009]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.129412, 0.129412, 0.129412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.050000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 2.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_rocks_dist_child.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_rocks_dist_child.pe
new file mode 100644
index 00000000..4631d840
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_rocks_dist_child.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 0
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.500000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_average\distort_anomaly_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_rocks_levitate.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_rocks_levitate.pe
new file mode 100644
index 00000000..5ef5c279
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravi_we_rocks_levitate.pe
@@ -0,0 +1,135 @@
+[_effect]
+ action_count = 9
+ flags = 3073
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.086275, 0.098039, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.050000
+ flt_0001 = 1.300000
+ flt_0002 = 100.000000
+ int_0000 = 2
+ vec_0000 = -0.700000, -1.000000, 10.700000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 0.200000, 0.200000, 0.200000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.129412, 0.129412, 0.129412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 20.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 2.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bitssmallrocky_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravitational_av_leaves_03.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravitational_av_leaves_03.pe
new file mode 100644
index 00000000..bf128228
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/gravitational_av_leaves_03.pe
@@ -0,0 +1,124 @@
+[_effect]
+ action_count = 8
+ flags = 529409
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.080000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -2.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.368627, 0.368627, 0.368627
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 2.000000, 0.500000, 2.000000
+ v1 = -2.000000, 0.000000, -2.000000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.550000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 4
+ v0 = 15.000000, 0.000000, 15.000000
+ v1 = -15.000000, -1.000000, -15.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\bitsleavessprite
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/zone_graviti_mine_idle_leaves_,_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/zone_graviti_mine_idle_leaves_,_00.pe
new file mode 100644
index 00000000..737770b5
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/zone_graviti_mine_idle_leaves_,_00.pe
@@ -0,0 +1,126 @@
+[_effect]
+ action_count = 8
+ flags = 3073
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.200000, 0.176471, 0.164706
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.012000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 8.000000, 8.000000, 0.001000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.243137, 0.211765, 0.184314
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.250000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 64.000000, 64.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\puff_00
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/zone_graviti_mine_idle_leaves_,_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/zone_graviti_mine_idle_leaves_,_01.pe
new file mode 100644
index 00000000..76c36c17
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/idle/zone_graviti_mine_idle_leaves_,_01.pe
@@ -0,0 +1,129 @@
+[_effect]
+ action_count = 8
+ flags = 19457
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.200000, 0.176471, 0.164706
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.012000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 4.000000, 4.000000, 0.001000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.243137, 0.211765, 0.184314
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.250000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 64.000000, 64.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\puff_00
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/shield/gold_shield_dist_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/shield/gold_shield_dist_01.pe
new file mode 100644
index 00000000..97158666
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/effects/shield/gold_shield_dist_01.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 26625
+ max_particles = 3
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.330000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.831373, 0.792157, 0.701961
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 9.000000, 9.000000, 9.000000
+ vec_0001 = 0.500000, 0.500000, 0.500000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.600000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -6.108652, -6.108652, -6.108652
+ v1 = 6.108652, 6.108652, 6.108652
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 20.000000, 20.000000, 20.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_average\distort_anomaly_01
+
+[timelimit]
+ value = 0.500000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/gravitational_average_blood_splash.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/gravitational_average_blood_splash.pg
new file mode 100644
index 00000000..79727c45
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/gravitational_average_blood_splash.pg
@@ -0,0 +1,87 @@
+[_group]
+ effects_count = 9
+ flags = 0
+ timelimit = 12.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\gravitational_average\effects\blood_splash\sb_dust_burst
+ flags = 20
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 10.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\gravitational_average\effects\blood_splash\sb_blood
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\gravitational_average\effects\blood_splash\sb_blood1
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\gravitational_average\effects\blood_splash\sb_blood2
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\gravitational_average\effects\blood_splash\sb_blood4
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\gravitational_average\effects\blood_splash\sb_blood5
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\gravitational_average\effects\blood_splash\sb_blood6
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0007]
+ effect_name = semitone\anomalies\gravitational_average\effects\blood_splash\sb_blood7
+ flags = 70
+ on_birth_child =
+ on_death_child = semitone\anomalies\gravitational_average\effects\blood_splash\sb_blood7_child_od_dead
+ on_play_child = semitone\anomalies\gravitational_average\effects\blood_splash\sb_blood7_child_on_play
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0008]
+ effect_name = semitone\anomalies\gravitational_average\effects\blood_splash\sb_blood8
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/gravitational_average_blowout.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/gravitational_average_blowout.pg
new file mode 100644
index 00000000..cd02307a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/gravitational_average_blowout.pg
@@ -0,0 +1,240 @@
+[_group]
+ effects_count = 26
+ flags = 0
+ timelimit = 7.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravi_vacuum_6
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.250000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravi_vacuum_12
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.750000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravi_vacuum_dust_10
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravity_leaves_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.250000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravi_distort_3
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 2.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravi_distort_6
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.250000
+ time1 = 2.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravi_distort_9
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.500000
+ time1 = 2.000000
+
+[effect_0007]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravi_distort_12
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.750000
+ time1 = 2.000000
+
+[effect_0008]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravi_wave_distort
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 2.250000
+
+[effect_0009]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravi_shield_wave
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.300000
+ time1 = 0.000000
+
+[effect_0010]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravi_zaxvat_otbrosy00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.250000
+ time1 = 0.000000
+
+[effect_0011]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravi_av_rocks_rise_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 2.500000
+
+[effect_0012]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\zone_graviti_mine_idle_leaves_06
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 2.500000
+
+[effect_0013]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\zone_graviti_mine_idle_leaves_07
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 2.500000
+
+[effect_0014]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravity_dust_21
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.400000
+ time1 = 0.000000
+
+[effect_0015]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravity_dust_22
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.100000
+ time1 = 0.000000
+
+[effect_0016]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravity_dust_23
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.200000
+ time1 = 0.000000
+
+[effect_0017]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravity_dust_24
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.100000
+ time1 = 0.000000
+
+[effect_0018]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravity_dust_25
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.200000
+ time1 = 0.000000
+
+[effect_0019]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravity_dist_average_additional_05
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.200000
+ time1 = 0.000000
+
+[effect_0020]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravitational_we_rocks_outburst
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.500000
+ time1 = 0.000000
+
+[effect_0021]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravitational_we_rocks_burst2
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.000000
+ time1 = 0.000000
+
+[effect_0022]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravity_dust_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.100000
+ time1 = 0.000000
+
+[effect_0023]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravi_vacuum_dust_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0024]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravi_vaccuuum
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 2.000000
+
+[effect_0025]
+ effect_name = semitone\anomalies\gravitational_average\effects\blowout\gravitational_leaves_burst
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/gravitational_average_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/gravitational_average_idle.pg
new file mode 100644
index 00000000..8bfbed08
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/gravitational_average_idle.pg
@@ -0,0 +1,69 @@
+[_group]
+ effects_count = 7
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\gravitational_average\effects\idle\gravi_we_leaves_small
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\gravitational_average\effects\idle\gravi_we_ground_dist
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\gravitational_average\effects\idle\gravi_we_leaves_small_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\gravitational_average\effects\idle\zone_graviti_mine_idle_leaves_, _00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\gravitational_average\effects\idle\gravi_we_leaves_small_new
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\gravitational_average\effects\idle\gravi_we_leaves_small_new_00
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\gravitational_average\effects\idle\gravi_we_leaves_small_new_00
+ flags = 38
+ on_birth_child = semitone\anomalies\gravitational_average\effects\idle\zone_graviti_mine_idle_leaves_, _01
+ on_death_child =
+ on_play_child = semitone\anomalies\gravitational_average\effects\idle\gravi_we_leaves_small_new_01
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\gravitational_average\effects\idle\gravi_we_ground_dust
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/gravitational_average_shield.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/gravitational_average_shield.pg
new file mode 100644
index 00000000..eccafaba
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_average/gravitational_average_shield.pg
@@ -0,0 +1,15 @@
+[_group]
+ effects_count = 1
+ flags = 0
+ timelimit = 1.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\gravitational_average\effects\shield\gold_shield_dist_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/awake/gold_dist_blast_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/awake/gold_dist_blast_00.pe
new file mode 100644
index 00000000..bd145a4b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/awake/gold_dist_blast_00.pe
@@ -0,0 +1,128 @@
+[_effect]
+ action_count = 9
+ flags = 22529
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 125.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 0.000000
+ vec_0001 = 7.000000, 7.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 12.000000
+ flt_0002 = 20.000000
+ int_0000 = 6
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0008]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.100000
+ flt_0001 = 900.000000
+ flt_0002 = 100.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 12.000000, 0.000000
+ v2 = 25.000000, 30.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 12.000000, 12.000000, 12.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 12.000000, 0.000000
+ v2 = 12.000000, 24.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_strong\pfx_dist2inv
+
+[timelimit]
+ value = 5.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/awake/gold_shield_dist_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/awake/gold_shield_dist_00.pe
new file mode 100644
index 00000000..4b46ed8f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/awake/gold_shield_dist_00.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 26625
+ max_particles = 3
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.330000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.831373, 0.792157, 0.701961
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 9.000000, 9.000000, 9.000000
+ vec_0001 = 0.500000, 0.500000, 0.500000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -6.108652, -6.108652, -6.108652
+ v1 = 6.108652, 6.108652, 6.108652
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 20.000000, 20.000000, 20.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_strong\distort_anomaly_01
+
+[timelimit]
+ value = 0.500000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood.pe
new file mode 100644
index 00000000..1ce7a455
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 89089
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 900.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 0.560784, 0.188235, 0.188235
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -6.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -0.640522, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[collision]
+ collide_resilence = 0.000000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 1.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.560784, 0.188235, 0.188235
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.500000, 0.500000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 3.000000, 5.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\clothbitanim
+
+[timelimit]
+ value = 0.500000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood1.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood1.pe
new file mode 100644
index 00000000..98b28eae
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood1.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 89089
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 6.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.080000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -9.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[collision]
+ collide_resilence = 0.300000
+ collide_sqr_cutoff = 0.250000
+ one_minus_friction = 0.500000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.568628, 0.207843, 0.207843
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.400000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.040000, 0.000000
+ v1 = 0.550000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 8.000000, 15.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\clothbitanim
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood2.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood2.pe
new file mode 100644
index 00000000..58b3c019
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood2.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 89089
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 6.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.478431, 0.164706, 0.164706
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -12.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 10.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[collision]
+ collide_resilence = 0.400000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 0.500000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.490196, 0.156863, 0.156863
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.400000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.040000, 0.040000, 0.000000
+ v1 = 0.450000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 10.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\clothbitanim
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood4.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood4.pe
new file mode 100644
index 00000000..4f701393
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood4.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 19457
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 200.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.227451, 0.054902, 0.054902
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 15.000000, 15.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.060000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, -4.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.243137, 0.058824, 0.058824
+ v1 = 0.300000, 0.300000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 4.000000, 12.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 125
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bloodburst07_var4
+
+[timelimit]
+ value = 0.500000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood5.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood5.pe
new file mode 100644
index 00000000..d697fee4
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood5.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 90.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.203922, 0.050980, 0.050980
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 12.000000, 12.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.060000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, -4.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.203922, 0.043137, 0.043137
+ v1 = 0.300000, 0.300000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 23.335052, -1.000004, -1.000004
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 4.000000, 0.000000
+ v1 = 5.000000, 35.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bloodsquirt2
+
+[timelimit]
+ value = 0.500000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood6.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood6.pe
new file mode 100644
index 00000000..9d8d0d3a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood6.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 19457
+ max_particles = 14
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 900.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 16.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.278431, 0.062745, 0.062745
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 15.000000, 15.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -9.800000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.060000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, -4.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.270588, 0.058824, 0.058824
+ v1 = 0.300000, 0.300000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 23.335052, -1.000004, -1.000004
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 24.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 32
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bloodburst07_var4
+
+[timelimit]
+ value = 0.500000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood7.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood7.pe
new file mode 100644
index 00000000..8c460b63
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood7.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 220161
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 6.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.080000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -9.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[collision]
+ collide_resilence = 0.300000
+ collide_sqr_cutoff = 0.250000
+ one_minus_friction = 0.500000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.568628, 0.207843, 0.207843
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.400000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.040000, 0.000000
+ v1 = 0.550000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 15.000000, 0.000000
+ v1 = 8.000000, 15.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\clothbitanim
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood7_child_od_dead.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood7_child_od_dead.pe
new file mode 100644
index 00000000..04405ebc
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood7_child_od_dead.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 19457
+ max_particles = 2
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 900.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.431373, 0.145098, 0.145098
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 2.000000, 2.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -2.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -0.640522, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.454902, 0.145098, 0.145098
+ v1 = 0.300000, 0.300000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.500000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bloodburst03_var5
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood7_child_on_play.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood7_child_on_play.pe
new file mode 100644
index 00000000..c86db16f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood7_child_on_play.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 8
+ flags = 3073
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 20.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 8.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.294118, 0.109804, 0.109804
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 4.000000, 4.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -2.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -0.640522, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.274510, 0.086275, 0.086275
+ v1 = 0.300000, 0.300000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 32
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bloodburst07_var4
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood8.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood8.pe
new file mode 100644
index 00000000..cba77e8f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_blood8.pe
@@ -0,0 +1,129 @@
+[_effect]
+ action_count = 8
+ flags = 220161
+ max_particles = 52
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 12.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.352941, 0.133333, 0.133333
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -2.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 10.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 1.000000
+ flt_0002 = 15.000000
+ int_0000 = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[collision]
+ collide_resilence = 0.400000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 0.500000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.384314, 0.137255, 0.137255
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.400000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.040000, 0.040000, 0.000000
+ v1 = 0.450000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 8.000000, 0.000000
+ v1 = 6.000000, 10.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\clothbitanim
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_dust_burst.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_dust_burst.pe
new file mode 100644
index 00000000..bba8285c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blood_splash/sb_dust_burst.pe
@@ -0,0 +1,119 @@
+[_effect]
+ action_count = 8
+ flags = 81921
+ max_particles = 32
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.611765, 0.066667, 0.066667
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 0.000000
+ vec_0001 = 12.000000, 12.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 0
+ vec_0000 = 0.000000, -2.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -0.640522, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[collision]
+ collide_resilence = 0.000000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 1.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.364706, 0.035294, 0.035294
+ v1 = 0.300000, 0.300000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 12.000000, 0.000000
+ v2 = 50.000000, 75.000000, 0.000000
+
+[sprite]
+ shader = particles\set
+ texture = semitone\anomalies\gravitational_strong\spore_a
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_hit_rocks_outburst.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_hit_rocks_outburst.pe
new file mode 100644
index 00000000..9c6386ea
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_hit_rocks_outburst.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 42
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.239216, 0.215686, 0.207843
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 6.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -6.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.266667, 0.235294, 0.223529
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 10.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 3.000000, 7.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.120000, 0.120000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 128.000000, 128.000000, 0.000000
+ v2 = 128.000000, 128.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bitssmallrocky_d
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_hit_rocks_upper.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_hit_rocks_upper.pe
new file mode 100644
index 00000000..c3d23ab5
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_hit_rocks_upper.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 15361
+ max_particles = 20
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 120.000000
+ flt_0001 = 5000.000000
+ flt_0002 = 120.000000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 33.000000
+ flt_0002 = 15.000000
+ int_0000 = 3
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.600000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.192157, 0.192157, 0.192157
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 10.000000, 0.000000
+ v1 = 2.000000, 5.000000, 0.000000
+ v2 = 0.000000, 4.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 4.712389, 4.712389, 4.712389
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.200000, 0.200000
+ v1 = 0.100000, 0.100000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bitssmallrocky_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_hit_rocks_vacuum_hight10.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_hit_rocks_vacuum_hight10.pe
new file mode 100644
index 00000000..b513b757
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_hit_rocks_vacuum_hight10.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 6
+ flags = 56321
+ max_particles = 20
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.800000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 20.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.100000
+ flt_0001 = 40.000000
+ flt_0002 = 999999998050644.787200
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = speedlimit
+ action_type = 22
+ flags = 0
+ flt_0000 = 8.000000
+ flt_0001 = -1.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.164706, 0.164706, 0.164706
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 6.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.200000, 0.200000
+ v1 = 0.100000, 0.100000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.500000, 1.000000, 0.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bitssmallrocky_d
+
+[timelimit]
+ value = 4.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat-400_leaves_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat-400_leaves_dist.pe
new file mode 100644
index 00000000..2ac69464
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat-400_leaves_dist.pe
@@ -0,0 +1,175 @@
+[_effect]
+ action_count = 13
+ flags = 51201
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.500000, 2.000000, 0.500000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -1.000000, 4.000000, -1.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 13.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 15.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0007]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0008]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0009]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0010]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0011]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.012000
+ flt_0001 = 5.000000
+ flt_0002 = 10.000000
+ int_0000 = 2
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0012]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 2.000000, 2.000000, 0.001000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0006_0001]
+ type = 1
+ v0 = -6.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0006_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 2.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0004]
+ type = 0
+ v0 = 2.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_strong\pfx_dist2inv
+
+[timelimit]
+ value = 3.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat004_leaves_00_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat004_leaves_00_dist.pe
new file mode 100644
index 00000000..b34e9458
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat004_leaves_00_dist.pe
@@ -0,0 +1,180 @@
+[_effect]
+ action_count = 14
+ flags = 30721
+ max_particles = 35
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.500000, 1.000000, 0.500000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -1.000000, 3.000000, -1.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 13.000000, -2.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 15.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0008]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0009]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0012]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.600000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0013]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[domain_action_0007_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0007_0001]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 4.000000, 0.000000
+
+[domain_action_0007_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 4.712389, 4.712389, 4.712389
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0003]
+ type = 0
+ v0 = 0.250000, 0.250000, 0.250000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0004]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_strong\pfx_dist2inv
+
+[timelimit]
+ value = 3.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat400_leaves_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat400_leaves_dist.pe
new file mode 100644
index 00000000..9f820407
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat400_leaves_dist.pe
@@ -0,0 +1,186 @@
+[_effect]
+ action_count = 14
+ flags = 51201
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.500000, 1.000000, 0.500000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -1.000000, 4.000000, -1.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 12.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 15.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0008]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0009]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0012]
+ action_name = turbulence_00
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.012000
+ flt_0001 = 5.000000
+ flt_0002 = 10.000000
+ int_0000 = 2
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0013]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 2.000000, 2.000000, 0.001000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0007_0001]
+ type = 1
+ v0 = 6.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0007_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.250000, 0.250000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0004]
+ type = 0
+ v0 = -2.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_strong\pfx_dist2inv
+
+[timelimit]
+ value = 3.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat_leaves_inner.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat_leaves_inner.pe
new file mode 100644
index 00000000..176e671f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat_leaves_inner.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 6
+ flags = 52225
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 15.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.423529, 0.549020, 0.431373
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.470588, 0.596078, 0.474510
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 1.000000, 6.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.250000, 0.250000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bushtrimmings_d
+
+[timelimit]
+ value = 3.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat_leaves_outter.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat_leaves_outter.pe
new file mode 100644
index 00000000..20b1a074
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat_leaves_outter.pe
@@ -0,0 +1,174 @@
+[_effect]
+ action_count = 12
+ flags = 52225
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 10.000000
+ flt_0001 = 20.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 1.000000, 4.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 7.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 13.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 8.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 15.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0008]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0009]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.423529, 0.549020, 0.431373
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 6.000000
+ flt_0001 = 3.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 0
+ v0 = 0.470588, 0.596078, 0.474510
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0007_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 5.000000, 6.000000, 0.000000
+
+[domain_action_0007_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.250000, 0.250000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0004]
+ type = 6
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bushtrimmings_d
+
+[timelimit]
+ value = 3.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat_otbrosy.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat_otbrosy.pe
new file mode 100644
index 00000000..73de9791
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat_otbrosy.pe
@@ -0,0 +1,133 @@
+[_effect]
+ action_count = 8
+ flags = 52225
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 6.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.541176, 0.650980, 0.529412
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -5.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 1.000000
+ flt_0002 = 5.000000
+ int_0000 = 2
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.545098, 0.666667, 0.545098
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 8.000000, 0.000000
+ v1 = 1.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.150000, 0.150000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 10.000000, 20.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 4
+ v0 = 6.000000, 0.000000, 6.000000
+ v1 = -6.000000, -6.000000, -6.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bitsleaves01anim_d
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat_wave_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat_wave_dist.pe
new file mode 100644
index 00000000..f8645067
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat_wave_dist.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 18433
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 7.000000, 7.000000, 7.000000
+ vec_0001 = 15.000000, 15.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 10.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -1.570796, -1.570796, -1.570796
+ v1 = 1.570796, 1.570796, 1.570796
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_strong\pfx_dist3
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat_yadro_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat_yadro_01.pe
new file mode 100644
index 00000000..9427984e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat_yadro_01.pe
@@ -0,0 +1,115 @@
+[_effect]
+ action_count = 7
+ flags = 7169
+ max_particles = 45
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 32.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.423529, 0.372549, 0.329412
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[action_0006]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 0.200000, 0.200000, 0.001000
+ version = 1
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 0.368627, 0.317647, 0.278431
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 10.000000, 0.000000
+ v1 = 1.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.450000, 0.450000, 0.450000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 3.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 8
+ reserved = 0.000000, 0.000000
+ speed = 16.000000
+ tex_size = 0.250000, 0.500000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bitswoodsplintersatlas
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat_yadro_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat_yadro_02.pe
new file mode 100644
index 00000000..a93da530
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravi_zaxvat_yadro_02.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 6
+ flags = 39937
+ max_particles = 45
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 32.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.215686, 0.274510, 0.215686
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 0.211765, 0.262745, 0.203922
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 10.000000, 0.000000
+ v1 = 1.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.200000, 0.200000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 3.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 16.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bitsleaves01anim_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravitat_ground_leaves_lift.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravitat_ground_leaves_lift.pe
new file mode 100644
index 00000000..44ff3c23
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravitat_ground_leaves_lift.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 6
+ flags = 56321
+ max_particles = 45
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.100000
+ flt_0001 = 100.000000
+ flt_0002 = 999999998050644.787200
+ vec_0000 = 0.000000, 20.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0003]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 8.000000
+ flt_0001 = -1.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0002_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 0
+ v0 = 0.396078, 0.427451, 0.368627
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0005_0001]
+ type = 9
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 0.000000, 8.000000, 0.000000
+ v2 = 0.000000, 10.000000, 0.000000
+
+[domain_action_0005_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.200000, 0.200000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0004]
+ type = 6
+ v0 = 0.500000, 4.000000, 0.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bitsleaves01anim_d
+
+[timelimit]
+ value = 4.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravitat_inner_sphere_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravitat_inner_sphere_00.pe
new file mode 100644
index 00000000..cd61ee47
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravitat_inner_sphere_00.pe
@@ -0,0 +1,67 @@
+[_effect]
+ action_count = 3
+ flags = 1
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.050000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 10.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 5.000000, 5.000000, 5.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.500000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_strong\albedoshadersingleframe
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/graviti_steam_trigger_strong_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/graviti_steam_trigger_strong_01.pe
new file mode 100644
index 00000000..aa03afec
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/graviti_steam_trigger_strong_01.pe
@@ -0,0 +1,97 @@
+[_effect]
+ action_count = 6
+ flags = 16385
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 5.000000
+ vec_0001 = 12.000000, 12.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.200000, 0.145098, 0.074510
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 10.000000, 0.000000
+ v1 = 0.000000, 0.200000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\gravitational_strong\shockwave_c
+
+[timelimit]
+ value = 5.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravity_dist_strong_04.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravity_dist_strong_04.pe
new file mode 100644
index 00000000..d32e195d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravity_dist_strong_04.pe
@@ -0,0 +1,106 @@
+[_effect]
+ action_count = 7
+ flags = 153601
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ vec_0001 = 11.000000, 4.000000, 6.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, -0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 4.000000, 1.000000, 1.000000
+ v1 = 1.900000, 1.900000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 4.000000, 24.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_strong\pfx_dist2inv
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravity_dist_strong_08.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravity_dist_strong_08.pe
new file mode 100644
index 00000000..88598d3b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravity_dist_strong_08.pe
@@ -0,0 +1,106 @@
+[_effect]
+ action_count = 7
+ flags = 22529
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ vec_0001 = 12.000000, 12.000000, 12.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, -0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 10.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.900000, 1.900000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 4.000000, 0.000000
+ v2 = 12.000000, 24.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_strong\pfx_dist2inv
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravity_dust_superstrong.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravity_dust_superstrong.pe
new file mode 100644
index 00000000..2ebb1633
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravity_dust_superstrong.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 42
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.239216, 0.215686, 0.207843
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 6.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -6.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.266667, 0.235294, 0.223529
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 10.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 3.000000, 7.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.120000, 0.120000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 128.000000, 128.000000, 0.000000
+ v2 = 128.000000, 128.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\clothbitanim
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravity_dust_superstrong_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravity_dust_superstrong_00.pe
new file mode 100644
index 00000000..44e2f833
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravity_dust_superstrong_00.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 32
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.501961, 0.458824, 0.443137
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 6.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -6.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.505882, 0.447059, 0.427451
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 10.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 3.000000, 7.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.120000, 0.120000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 128.000000, 128.000000, 0.000000
+ v2 = 128.000000, 128.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bitssmallrocky_d
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravity_dust_superstrong_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravity_dust_superstrong_01.pe
new file mode 100644
index 00000000..b3ca5575
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravity_dust_superstrong_01.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 32
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.623529, 0.690196, 0.627451
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 6.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -6.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.607843, 0.674510, 0.596078
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 10.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 3.000000, 7.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.250000, 0.250000, 0.000000
+ v1 = 0.400000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 128.000000, 128.000000, 0.000000
+ v2 = 128.000000, 128.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bushtrimmings_d
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravity_dust_superstrong_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravity_dust_superstrong_02.pe
new file mode 100644
index 00000000..f282b943
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/gravity_dust_superstrong_02.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 32
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.584314, 0.521569, 0.486275
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 6.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -6.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.525490, 0.450980, 0.423529
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 10.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 3.000000, 7.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.250000, 0.250000, 0.000000
+ v1 = 0.400000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 128.000000, 128.000000, 0.000000
+ v2 = 128.000000, 128.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bitswoodsplintersatlas
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/zone_graviti_mine_idle_leaves_09.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/zone_graviti_mine_idle_leaves_09.pe
new file mode 100644
index 00000000..9fcb5bb7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/blowout/zone_graviti_mine_idle_leaves_09.pe
@@ -0,0 +1,129 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 42
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.494118, 0.486275, 0.482353
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.015000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 8.000000, 8.000000, 0.001000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.494118, 0.486275, 0.482353
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 5.000000, 5.000000, 5.000000
+ v1 = 9.000000, 9.000000, 9.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 30.000000, 90.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\cumulus_02
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/dist_orbit.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/dist_orbit.pe
new file mode 100644
index 00000000..5b6ee302
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/dist_orbit.pe
@@ -0,0 +1,133 @@
+[_effect]
+ action_count = 10
+ flags = 6145
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 1.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.458824, 0.439216, 0.411765
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 25.000000
+ vec_0000 = -6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -8.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate_00
+ action_type = 25
+ flags = 1
+ flt_0000 = 222.000000
+ vec_0000 = -372.121632, 0.000000, 2116.054656
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.100000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ flt_0001 = 250.000000
+ flt_0002 = 20.000000
+ vec_0000 = 0.000000, 1.600000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.500000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.600000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 1.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 6.283186, 6.283186, 0.000000
+ v1 = -300.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.450000, 0.450000, 0.450000
+ v1 = 0.700000, 0.700000, 0.700000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 8.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_strong\pfx_dist2inv
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/dust.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/dust.pe
new file mode 100644
index 00000000..21067dac
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/dust.pe
@@ -0,0 +1,126 @@
+[_effect]
+ action_count = 8
+ flags = 3073
+ max_particles = 18
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.200000, 0.176471, 0.164706
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.012000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 3.000000, 3.000000, 0.001000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.313726, 0.301961, 0.290196
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.250000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 64.000000, 64.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\puff_00
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravi_rocks1.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravi_rocks1.pe
new file mode 100644
index 00000000..f6b9f309
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravi_rocks1.pe
@@ -0,0 +1,132 @@
+[_effect]
+ action_count = 9
+ flags = 7169
+ max_particles = 20
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 1.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.458824, 0.439216, 0.411765
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.003000
+ vec_0000 = -6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -8.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.060000
+ flt_0001 = 400.000000
+ flt_0002 = 100.000000
+ vec_0000 = 0.000000, 1.600000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 2.000000
+ flt_0002 = 10.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.133333, 0.133333, 0.133333
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.600000, 0.000000
+ v1 = 0.500000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 1.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 6.283186, 6.283186, 0.000000
+ v1 = -300.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.250000, 0.250000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 7.000000, 0.000000
+ v2 = 0.000000, 8.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 32.000000, 32.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bitssmallrocky_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravi_rocks2.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravi_rocks2.pe
new file mode 100644
index 00000000..7b6b73e9
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravi_rocks2.pe
@@ -0,0 +1,132 @@
+[_effect]
+ action_count = 9
+ flags = 7169
+ max_particles = 8
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 1.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.458824, 0.439216, 0.411765
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 25.000000
+ vec_0000 = -6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -8.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.100000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ flt_0001 = 250.000000
+ flt_0002 = 20.000000
+ vec_0000 = 0.000000, 1.600000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.500000
+ flt_0001 = 24.000000
+ flt_0002 = 10.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.133333, 0.133333, 0.133333
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.600000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 1.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 6.283186, 6.283186, 0.000000
+ v1 = -300.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.200000, 0.200000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 7.000000, 0.000000
+ v2 = 0.000000, 8.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 32.000000, 32.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bitssmallrocky_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravi_we_leaves_small_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravi_we_leaves_small_01.pe
new file mode 100644
index 00000000..308c786d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravi_we_leaves_small_01.pe
@@ -0,0 +1,156 @@
+[_effect]
+ action_count = 11
+ flags = 5121
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.086275, 0.098039, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.050000
+ flt_0001 = 12.000000
+ flt_0002 = 100.000000
+ int_0000 = 2
+ vec_0000 = -0.700000, -1.000000, 10.700000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 0.200000, 0.200000, 0.200000
+ version = 1
+
+[action_0008]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ flt_0001 = 25.000000
+ flt_0002 = 2.000000
+ vec_0000 = -0.100000, 0.500000, 0.100000
+ vec_0001 = 0.000000, 0.500000, 0.000000
+ version = 1
+
+[action_0009]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0010]
+ action_name = gravitate
+ action_type = 7
+ flags = 0
+ flt_0000 = 0.001000
+ flt_0001 = 1.000000
+ flt_0002 = 10.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.129412, 0.129412, 0.129412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 2.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravitat_bottom_dist_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravitat_bottom_dist_00.pe
new file mode 100644
index 00000000..2c6e9f65
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravitat_bottom_dist_00.pe
@@ -0,0 +1,114 @@
+[_effect]
+ action_count = 8
+ flags = 2049
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.800000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 5.000000
+ vec_0001 = 3.000000, 3.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 120.000000
+ flt_0001 = 400.000000
+ flt_0002 = 100.000000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, -0.050000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -3.141593, -3.141593, -3.141593
+ v1 = 3.141593, 3.141593, 3.141593
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_strong\pfx_distortion
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravitat_dist_ring_single.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravitat_dist_ring_single.pe
new file mode 100644
index 00000000..55890c15
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravitat_dist_ring_single.pe
@@ -0,0 +1,75 @@
+[_effect]
+ action_count = 4
+ flags = 1
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.300000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 220.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 3.300000, 3.300000, 3.300000
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 8
+ v0 = -1.570796, -1.570796, -1.570796
+ v1 = 5.000000, 800.000000, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_strong\brokenglass
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravitat_inner_sphere.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravitat_inner_sphere.pe
new file mode 100644
index 00000000..81bc1bd1
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravitat_inner_sphere.pe
@@ -0,0 +1,67 @@
+[_effect]
+ action_count = 3
+ flags = 1
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.100000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 0.100000, 0.100000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.500000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_strong\albedoshadersingleframe
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravitational_core_bubble2.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravitational_core_bubble2.pe
new file mode 100644
index 00000000..d8a43fd5
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravitational_core_bubble2.pe
@@ -0,0 +1,97 @@
+[_effect]
+ action_count = 6
+ flags = 2049
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.030000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 0
+ flt_0000 = 1.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.050000
+ flt_0003 = 0.950000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.262745, 0.262745, 0.262745
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = 12.566371, 12.566371, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.356863, 0.678431, 0.760784
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 5
+ v0 = 0.600000, 0.600000, 0.600000
+ v1 = 0.000000, 0.600000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\gravitational_strong\pfx_teleport
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravitational_core_bubble_small.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravitational_core_bubble_small.pe
new file mode 100644
index 00000000..1b935d36
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravitational_core_bubble_small.pe
@@ -0,0 +1,97 @@
+[_effect]
+ action_count = 6
+ flags = 2049
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.030000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 0
+ flt_0000 = 1.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.050000
+ flt_0003 = 0.950000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = 12.566371, 12.566371, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 5
+ v0 = 0.600000, 0.600000, 0.600000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\gravitational_strong\pfx_teleport
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravitational_ripples.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravitational_ripples.pe
new file mode 100644
index 00000000..a920845b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/gravitational_ripples.pe
@@ -0,0 +1,86 @@
+[_effect]
+ action_count = 5
+ flags = 2049
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 9.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ vec_0001 = 5.000000, 5.000000, 5.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 8
+ v0 = -1.570796, -1.570796, -1.570796
+ v1 = 1.570796, 1.570796, 1.570796
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_strong\pfx_dist3
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/nyah_idle_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/nyah_idle_00.pe
new file mode 100644
index 00000000..b9ac34a4
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/nyah_idle_00.pe
@@ -0,0 +1,143 @@
+[_effect]
+ action_count = 9
+ flags = 35841
+ max_particles = 8
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 16.000000, 16.000000, 16.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -16.000000, -16.000000, -16.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.002000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 360.000000, 0.000000, 30.000000
+ vec_0001 = 720.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.180392, 0.192157, 0.145098
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.200000, 0.200000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.100000, 14.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bitsleavessprite
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/radar_leaves_damping_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/radar_leaves_damping_00.pe
new file mode 100644
index 00000000..327fd00c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/radar_leaves_damping_00.pe
@@ -0,0 +1,135 @@
+[_effect]
+ action_count = 9
+ flags = 38913
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 55.000000
+ flt_0001 = 120.000000
+ flt_0002 = 12.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ vec_0001 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 2.000000
+ flt_0002 = 2.000000
+ int_0000 = 2
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0006]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.900000
+ flt_0002 = 0.000000
+ flt_0003 = 22.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0007]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.215686, 0.274510, 0.215686
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 0
+ v0 = 0.211765, 0.262745, 0.203922
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0006_0001]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 2.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.150000, 0.150000, 0.150000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\leaf_10
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/zone_graviti_leaves_pulsing.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/zone_graviti_leaves_pulsing.pe
new file mode 100644
index 00000000..5063e180
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/zone_graviti_leaves_pulsing.pe
@@ -0,0 +1,137 @@
+[_effect]
+ action_count = 9
+ flags = 5121
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 6.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.349020, 0.403922, 0.349020
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.100000
+ flt_0001 = 400.000000
+ flt_0002 = 100.000000
+ vec_0000 = 0.000000, 1.500000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.200000, 0.200000, 0.200000
+ vec_0001 = 0.100000, 0.100000, 0.100000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.337255, 0.392157, 0.329412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.100000, 0.100000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/zone_graviti_mine_idle_leaves_,_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/zone_graviti_mine_idle_leaves_,_01.pe
new file mode 100644
index 00000000..759634ec
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/zone_graviti_mine_idle_leaves_,_01.pe
@@ -0,0 +1,126 @@
+[_effect]
+ action_count = 8
+ flags = 3073
+ max_particles = 2
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.200000, 0.176471, 0.164706
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.012000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 8.000000, 8.000000, 0.001000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.243137, 0.211765, 0.184314
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.250000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 64.000000, 64.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\puff_00
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/zone_graviti_mine_idle_leaves_,_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/zone_graviti_mine_idle_leaves_,_02.pe
new file mode 100644
index 00000000..44de6154
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/zone_graviti_mine_idle_leaves_,_02.pe
@@ -0,0 +1,126 @@
+[_effect]
+ action_count = 8
+ flags = 3073
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.200000, 0.176471, 0.164706
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.012000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 4.000000, 4.000000, 0.001000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.243137, 0.211765, 0.184314
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.250000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 64.000000, 64.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_average\puff_00
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/zone_graviti_mine_idle_leaves_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/zone_graviti_mine_idle_leaves_00.pe
new file mode 100644
index 00000000..b1831ad5
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/idle/zone_graviti_mine_idle_leaves_00.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 6.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.349020, 0.403922, 0.349020
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.337255, 0.392157, 0.329412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.030000, 0.030000, 0.000000
+ v1 = 0.150000, 0.150000, 0.150000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\gravitational_strong\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/shield/anomaly_dao_wave_blast_dist_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/shield/anomaly_dao_wave_blast_dist_00.pe
new file mode 100644
index 00000000..3d1e326e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/effects/shield/anomaly_dao_wave_blast_dist_00.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 18433
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.800000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 7.000000, 7.000000, 7.000000
+ vec_0001 = 15.000000, 15.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -1.570796, -1.570796, -1.570796
+ v1 = 1.570796, 1.570796, 1.570796
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_strong\pfx_dist3
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/gravitational_strong_awake.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/gravitational_strong_awake.pg
new file mode 100644
index 00000000..ef0f0706
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/gravitational_strong_awake.pg
@@ -0,0 +1,24 @@
+[_group]
+ effects_count = 2
+ flags = 0
+ timelimit = 1.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\gravitational_strong\effects\awake\gold_dist_blast_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\gravitational_strong\effects\awake\gold_shield_dist_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/gravitational_strong_blood_splash.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/gravitational_strong_blood_splash.pg
new file mode 100644
index 00000000..e68b4e23
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/gravitational_strong_blood_splash.pg
@@ -0,0 +1,87 @@
+[_group]
+ effects_count = 9
+ flags = 0
+ timelimit = 12.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blood_splash\sb_dust_burst
+ flags = 20
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 10.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blood_splash\sb_blood
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blood_splash\sb_blood1
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blood_splash\sb_blood2
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blood_splash\sb_blood4
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blood_splash\sb_blood5
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blood_splash\sb_blood6
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0007]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blood_splash\sb_blood7
+ flags = 70
+ on_birth_child =
+ on_death_child = semitone\anomalies\gravitational_strong\effects\blood_splash\sb_blood7_child_od_dead
+ on_play_child = semitone\anomalies\gravitational_strong\effects\blood_splash\sb_blood7_child_on_play
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0008]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blood_splash\sb_blood8
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/gravitational_strong_blowout.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/gravitational_strong_blowout.pg
new file mode 100644
index 00000000..03f2f4bc
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/gravitational_strong_blowout.pg
@@ -0,0 +1,204 @@
+[_group]
+ effects_count = 22
+ flags = 0
+ timelimit = 10.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\gravi_zaxvat_yadro_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.000000
+ time1 = 6.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\gravi_zaxvat_yadro_02
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.000000
+ time1 = 6.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\gravi_zaxvat_leaves_inner
+ flags = 5
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 3.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\gravi_zaxvat_leaves_outter
+ flags = 5
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 3.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\gravitat_inner_sphere_00
+ flags = 5
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 3.000000
+ time1 = 6.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\graviti_steam_trigger_strong_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.000000
+ time1 = 6.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\gravi_zaxvat_otbrosy
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 6.200000
+ time1 = 0.000000
+
+[effect_0007]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\gravi_zaxvat_wave_dist
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 6.100000
+ time1 = 0.000000
+
+[effect_0008]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\gravity_dust_superstrong
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 6.000000
+ time1 = 0.000000
+
+[effect_0009]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\gravity_dust_superstrong_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 6.000000
+ time1 = 0.000000
+
+[effect_0010]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\gravity_dust_superstrong_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 6.000000
+ time1 = 0.000000
+
+[effect_0011]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\gravity_dust_superstrong_02
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 6.000000
+ time1 = 0.000000
+
+[effect_0012]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\zone_graviti_mine_idle_leaves_09
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 6.000000
+ time1 = 0.000000
+
+[effect_0013]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\gravi_zaxvat-400_leaves_dist
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0014]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\gravi_zaxvat004_leaves_00_dist
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0015]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\gravi_zaxvat400_leaves_dist
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0016]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\gravity_dist_strong_04
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 6.000000
+ time1 = 0.000000
+
+[effect_0017]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\gravity_dist_strong_08
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 6.000000
+ time1 = 0.000000
+
+[effect_0018]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\gravi_hit_rocks_vacuum_hight10
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0019]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\gravi_hit_rocks_upper
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.000000
+ time1 = 6.000000
+
+[effect_0020]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\gravitat_ground_leaves_lift
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0021]
+ effect_name = semitone\anomalies\gravitational_strong\effects\blowout\gravi_hit_rocks_outburst
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 6.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/gravitational_strong_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/gravitational_strong_idle.pg
new file mode 100644
index 00000000..f5cd7559
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/gravitational_strong_idle.pg
@@ -0,0 +1,114 @@
+[_group]
+ effects_count = 12
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\gravitational_strong\effects\idle\gravitational_ripples
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\gravitational_strong\effects\idle\zone_graviti_mine_idle_leaves_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\gravitational_strong\effects\idle\gravitat_dist_ring_single
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\gravitational_strong\effects\idle\gravi_rocks1
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\gravitational_strong\effects\idle\gravitational_core_bubble_small
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\gravitational_strong\effects\idle\gravitational_core_bubble2
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\gravitational_strong\effects\idle\zone_graviti_leaves_pulsing
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0007]
+ effect_name = semitone\anomalies\gravitational_strong\effects\idle\gravitat_bottom_dist_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0008]
+ effect_name = semitone\anomalies\gravitational_strong\effects\idle\radar_leaves_damping_00
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\gravitational_strong\effects\idle\nyah_idle_00
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0009]
+ effect_name = semitone\anomalies\gravitational_strong\effects\idle\gravi_rocks2
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0010]
+ effect_name = semitone\anomalies\gravitational_strong\effects\idle\zone_graviti_mine_idle_leaves_, _01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0011]
+ effect_name = semitone\anomalies\gravitational_strong\effects\idle\gravi_we_leaves_small_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/gravitational_strong_shield.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/gravitational_strong_shield.pg
new file mode 100644
index 00000000..988ca7e0
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/gravitational_strong/gravitational_strong_shield.pg
@@ -0,0 +1,15 @@
+[_group]
+ effects_count = 1
+ flags = 0
+ timelimit = 1.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\gravitational_strong\effects\shield\anomaly_dao_wave_blast_dist_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/gravi_flash_dist_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/gravi_flash_dist_00.pe
new file mode 100644
index 00000000..125ce50c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/gravi_flash_dist_00.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 16385
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.100000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 10000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 15.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.023529, 0.015686, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ vec_0001 = 15.000000, 15.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\mefistotel\pfx_dist4
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/gravi_zaxvat_otbrosy00_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/gravi_zaxvat_otbrosy00_01.pe
new file mode 100644
index 00000000..4d9403e0
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/gravi_zaxvat_otbrosy00_01.pe
@@ -0,0 +1,133 @@
+[_effect]
+ action_count = 8
+ flags = 185345
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.247059, 0.294118, 0.243137
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -5.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 1.000000
+ flt_0002 = 5.000000
+ int_0000 = 2
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.258824, 0.313726, 0.235294
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.500000, 1.000000, 0.000000
+ v1 = 1.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.250000, 0.250000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 10.000000, 20.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 4
+ v0 = 6.000000, 0.000000, 6.000000
+ v1 = -6.000000, -6.000000, -6.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\mefistotel\bushtrimmings_d
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/gravi_zaxvat_otbrosy00_01222.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/gravi_zaxvat_otbrosy00_01222.pe
new file mode 100644
index 00000000..cdfac399
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/gravi_zaxvat_otbrosy00_01222.pe
@@ -0,0 +1,133 @@
+[_effect]
+ action_count = 8
+ flags = 183297
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 6.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.372549, 0.447059, 0.364706
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -5.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 1.000000
+ flt_0002 = 5.000000
+ int_0000 = 2
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.380392, 0.458824, 0.345098
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 1.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 10.000000, 20.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 4
+ v0 = 6.000000, 0.000000, 6.000000
+ v1 = -6.000000, -6.000000, -6.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\mefistotel\bitsleaves01anim_d
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/graviti_steam_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/graviti_steam_00.pe
new file mode 100644
index 00000000..8a6df75c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/graviti_steam_00.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.500000, 0.500000, 5.000000
+ vec_0001 = 0.100000, 0.100000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.200000, 0.200000
+ v1 = 0.100000, 0.100000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\mefistotel\distort_anomaly_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/graviti_steam_asdasd.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/graviti_steam_asdasd.pe
new file mode 100644
index 00000000..f07f712b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/graviti_steam_asdasd.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 16385
+ max_particles = 6
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 120.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 5.000000
+ vec_0001 = 2.000000, 2.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.239216, 0.364706, 0.356863
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 24.000000, 32.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\mefistotel\spore_white
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/graviti_steam_trigger_weak_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/graviti_steam_trigger_weak_00.pe
new file mode 100644
index 00000000..c7bd53e7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/graviti_steam_trigger_weak_00.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 16385
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 52.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 5.000000
+ vec_0001 = 3.700000, 3.700000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.125490, 0.298039, 0.270588
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 0.200000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 32.000000, 42.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\mefistotel\shockwave_c
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/graviti_steam_trigger_weak_04.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/graviti_steam_trigger_weak_04.pe
new file mode 100644
index 00000000..d32c38c7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/graviti_steam_trigger_weak_04.pe
@@ -0,0 +1,97 @@
+[_effect]
+ action_count = 6
+ flags = 16385
+ max_particles = 8
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 900.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 5.000000
+ vec_0001 = 8.000000, 8.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.909804, 0.721569, 0.443137
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\mefistotel\shockwave_c
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/graviti_steam_trigger_weak_232.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/graviti_steam_trigger_weak_232.pe
new file mode 100644
index 00000000..4aa80608
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/graviti_steam_trigger_weak_232.pe
@@ -0,0 +1,97 @@
+[_effect]
+ action_count = 6
+ flags = 16385
+ max_particles = 14
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 8.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 5.000000
+ vec_0001 = 3.700000, 3.700000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 4.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 2.000000, 2.000000, 2.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\mefistotel\distort_anomaly_01
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/gravity_dust_03.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/gravity_dust_03.pe
new file mode 100644
index 00000000..ac79e300
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/gravity_dust_03.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 21505
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.800000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.500000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.333333, 0.321569, 0.301961
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 5.000000, 5.000000, 5.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.149020, 0.211765, 0.219608
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.200000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.900000, 1.900000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 12.000000, 41.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\mefistotel\cumulus_02
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/gravity_dust_0sdads.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/gravity_dust_0sdads.pe
new file mode 100644
index 00000000..078b69f6
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/gravity_dust_0sdads.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 21505
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.239216, 0.215686, 0.207843
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 6.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.266667, 0.235294, 0.223529
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 3.000000, 7.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.120000, 0.120000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 24.000000, 0.000000
+ v2 = 128.000000, 128.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\mefistotel\clothbitanim
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_blast_vortex.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_blast_vortex.pe
new file mode 100644
index 00000000..c90376dd
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_blast_vortex.pe
@@ -0,0 +1,115 @@
+[_effect]
+ action_count = 7
+ flags = 23553
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 45.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 100.000000
+ flt_0002 = 8.000000
+ vec_0000 = 0.000000, 8.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 14.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 8.000000, 8.000000, 0.001000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.176471, 0.396078, 0.435294
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.500000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.500000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, -5.000000
+ v1 = 0.000000, 0.000000, 0.100000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 50.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\mefistotel\around
+
+[timelimit]
+ value = 0.600000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_center_glow.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_center_glow.pe
new file mode 100644
index 00000000..40b9a1da
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_center_glow.pe
@@ -0,0 +1,81 @@
+[_effect]
+ action_count = 4
+ flags = 266241
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.062745, 0.666667, 0.866667
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.203922, 0.325490, 0.929412
+ v1 = 0.078431, 0.490196, 0.580392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.490000, 0.000000
+ v1 = 0.050000, 0.010000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = -3.141593, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.300000, 0.300000, 0.000000
+ v1 = 0.600000, 0.600000, 0.600000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\mefistotel\glow_fire1
+
+[velocity_scale]
+ value = 0.000000, 0.020000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_core_pulse.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_core_pulse.pe
new file mode 100644
index 00000000..0d1810eb
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_core_pulse.pe
@@ -0,0 +1,101 @@
+[_effect]
+ action_count = 6
+ flags = 7169
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.020000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.150000
+ flt_0002 = 0.000000
+ flt_0003 = 9998.999552
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 21.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.247059, 0.247059, 0.247059
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 5.000000, 5.000000, 0.000000
+ vec_0001 = 5.000000, 5.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.176471, 0.309804, 0.341176
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 4.000000, 25.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.500000, 0.500000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 5
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\mefistotel\puffcolorsplashflicker
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_core_smoke.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_core_smoke.pe
new file mode 100644
index 00000000..e172964d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_core_smoke.pe
@@ -0,0 +1,102 @@
+[_effect]
+ action_count = 6
+ flags = 5121
+ max_particles = 18
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 18.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.839473, 2.678945
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.274510, 0.529412, 0.498039
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.200000, 0.200000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\mefistotel\water_river_b
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_flower.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_flower.pe
new file mode 100644
index 00000000..30269433
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_flower.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 3073
+ max_particles = 2
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.050000
+ flt_0003 = 0.950000
+ vec_0000 = 0.372549, 0.372549, 0.372549
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 2
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.262745, 0.262745, 0.262745
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 12.566371, 12.566371, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.349020, 0.803922, 0.835294
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.800000, 0.800000, 0.800000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.500000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\mefistotel\sphere_something_4096_v1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_inner_flower.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_inner_flower.pe
new file mode 100644
index 00000000..c77c30b0
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_inner_flower.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 7169
+ max_particles = 2
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.900000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.050000
+ flt_0003 = 0.950000
+ vec_0000 = 0.372549, 0.372549, 0.372549
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 2
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.262745, 0.262745, 0.262745
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 12.566371, 12.566371, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.352941, 0.627451, 0.839216
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.380000, 0.380000, 0.380000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.500000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\mefistotel\shockwave_2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_inner_flower_2.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_inner_flower_2.pe
new file mode 100644
index 00000000..0526c925
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_inner_flower_2.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 15361
+ max_particles = 2
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.900000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.050000
+ flt_0003 = 0.950000
+ vec_0000 = 0.372549, 0.372549, 0.372549
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 2
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.262745, 0.262745, 0.262745
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 12.566371, 12.566371, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.352941, 0.627451, 0.839216
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.200000, 0.200000, 0.200000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.500000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\mefistotel\shockwave_1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_shield_core.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_shield_core.pe
new file mode 100644
index 00000000..00168d69
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_shield_core.pe
@@ -0,0 +1,97 @@
+[_effect]
+ action_count = 6
+ flags = 30721
+ max_particles = 2
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.020000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 15.000000, 15.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.517647, 0.866667, 0.890196
+ v1 = 0.380392, 0.380392, 0.380392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 6.000000, 7.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.700000, 0.700000, 0.700000
+ v1 = 0.800000, 0.800000, 0.800000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -4.000000, -4.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\mefistotel\blue_flare
+
+[timelimit]
+ value = 0.300000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_shield_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_shield_dist.pe
new file mode 100644
index 00000000..15b31ff8
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_shield_dist.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 26625
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.330000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 9.000000, 9.000000, 9.000000
+ vec_0001 = 0.500000, 0.500000, 0.500000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.600000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -6.108652, -6.108652, -6.108652
+ v1 = 6.108652, 6.108652, 6.108652
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 10.000000, 10.000000, 0.001000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\mefistotel\pfx_dist2inv
+
+[timelimit]
+ value = 0.500000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_shield_dist2.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_shield_dist2.pe
new file mode 100644
index 00000000..61e9ab85
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_shield_dist2.pe
@@ -0,0 +1,128 @@
+[_effect]
+ action_count = 9
+ flags = 22529
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 125.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 0.000000
+ vec_0001 = 7.000000, 7.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 12.000000
+ flt_0002 = 20.000000
+ int_0000 = 6
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0008]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.100000
+ flt_0001 = 900.000000
+ flt_0002 = 100.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 12.000000, 0.000000
+ v2 = 25.000000, 30.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 12.000000, 12.000000, 12.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 12.000000, 0.000000
+ v2 = 12.000000, 24.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\mefistotel\pfx_dist2inv
+
+[timelimit]
+ value = 5.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_shield_flower_pulse.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_shield_flower_pulse.pe
new file mode 100644
index 00000000..df3f879a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_shield_flower_pulse.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 11265
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.050000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.400000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.352941, 0.807843, 0.839216
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -12.566371, 12.566371, 6.283186
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.349020, 0.803922, 0.835294
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.300000, 1.300000, 1.300000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.500000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\mefistotel\sphere_something_4096_v1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_shield_glow_pulse.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_shield_glow_pulse.pe
new file mode 100644
index 00000000..f93620bd
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotel_shield_glow_pulse.pe
@@ -0,0 +1,81 @@
+[_effect]
+ action_count = 4
+ flags = 266241
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.298039, 0.694118, 0.729412
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 1
+ v0 = 0.133333, 0.580392, 0.725490
+ v1 = 0.117647, 0.505882, 0.513726
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.450000, 0.000000
+ v1 = 0.050000, 0.010000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = -3.141593, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 1.300000, 1.300000, 1.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\mefistotel\glow_fire1
+
+[velocity_scale]
+ value = 0.000000, 0.020000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotlel_black_flower.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotlel_black_flower.pe
new file mode 100644
index 00000000..121240ae
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/effects/mefistotlel_black_flower.pe
@@ -0,0 +1,82 @@
+[_effect]
+ action_count = 4
+ flags = 3073
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 0.200000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 12.566371, 12.566371, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.749020, 0.749020, 0.749020
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.017453, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.700000, 0.700000, 0.700000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.500000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\mefistotel\darkness_core_distort_4k_v2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/mefistotel_blowout.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/mefistotel_blowout.pg
new file mode 100644
index 00000000..86f80cce
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/mefistotel_blowout.pg
@@ -0,0 +1,60 @@
+[_group]
+ effects_count = 6
+ flags = 0
+ timelimit = 4.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\mefistotel\effects\gravity_dust_03
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.100000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\mefistotel\effects\gravi_zaxvat_otbrosy00_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\mefistotel\effects\graviti_steam_trigger_weak_232
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\mefistotel\effects\gravi_zaxvat_otbrosy00_01222
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\mefistotel\effects\gravi_flash_dist_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\mefistotel\effects\gravity_dust_0sdads
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/mefistotel_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/mefistotel_idle.pg
new file mode 100644
index 00000000..cb8d051d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/mefistotel_idle.pg
@@ -0,0 +1,69 @@
+[_group]
+ effects_count = 7
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\mefistotel\effects\mefistotel_inner_flower
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\mefistotel\effects\mefistotel_center_glow
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\mefistotel\effects\mefistotel_flower
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\mefistotel\effects\mefistotlel_black_flower
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\mefistotel\effects\mefistotel_inner_flower
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\mefistotel\effects\mefistotel_inner_flower_2
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\mefistotel\effects\graviti_steam_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/mefistotel_shield.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/mefistotel_shield.pg
new file mode 100644
index 00000000..ab60696f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/mefistotel/mefistotel_shield.pg
@@ -0,0 +1,24 @@
+[_group]
+ effects_count = 2
+ flags = 0
+ timelimit = 1.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\mefistotel\effects\mefistotel_shield_dist
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 1.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\mefistotel\effects\mefistotel_shield_dist2
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/blowout/net_shield.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/blowout/net_shield.pe
new file mode 100644
index 00000000..fa6a520b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/blowout/net_shield.pe
@@ -0,0 +1,131 @@
+[_effect]
+ action_count = 9
+ flags = 18433
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 20.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.050000
+ flt_0001 = 1.800000
+ flt_0002 = 100.000000
+ int_0000 = 2
+ vec_0000 = -0.700000, -1.000000, 10.700000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 0.200000, 0.200000, 0.200000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.568628, 0.709804, 0.780392
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 7
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.030000, 0.030000, 0.030000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 7.000000, 0.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\net\glow_white
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/blowout/net_shield_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/blowout/net_shield_dist.pe
new file mode 100644
index 00000000..8c4448e1
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/blowout/net_shield_dist.pe
@@ -0,0 +1,138 @@
+[_effect]
+ action_count = 9
+ flags = 19457
+ max_particles = 22
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 18.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.050000
+ flt_0001 = 1.000000
+ flt_0002 = 100.000000
+ int_0000 = 2
+ vec_0000 = -0.700000, -1.000000, 10.700000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 5.000000
+ vec_0001 = 0.200000, 0.200000, 0.200000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.568628, 0.709804, 0.780392
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 7
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 5.000000, 5.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 7.000000, 0.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 8
+ reserved = 64.000000, 64.000000
+ speed = 20.000000
+ tex_size = 0.250000, 0.500000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\net\distort_anomaly_01
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/blowout/net_shield_smok.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/blowout/net_shield_smok.pe
new file mode 100644
index 00000000..a8b58779
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/blowout/net_shield_smok.pe
@@ -0,0 +1,138 @@
+[_effect]
+ action_count = 9
+ flags = 19457
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 22.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.050000
+ flt_0001 = 1.800000
+ flt_0002 = 100.000000
+ int_0000 = 2
+ vec_0000 = -0.700000, -1.000000, 10.700000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 0.200000, 0.200000, 0.200000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.219608, 0.282353, 0.313726
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 7
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.030000, 0.030000, 0.030000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 7.000000, 0.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 32
+ reserved = 64.000000, 64.000000
+ speed = 20.000000
+ tex_size = 0.125000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\net\smoke_cannon
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/idle/net_idle_new.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/idle/net_idle_new.pe
new file mode 100644
index 00000000..fecf5fb9
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/idle/net_idle_new.pe
@@ -0,0 +1,128 @@
+[_effect]
+ action_count = 9
+ flags = 2049
+ max_particles = 45
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 0.086275, 0.098039, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.050000
+ flt_0001 = 1.300000
+ flt_0002 = 100.000000
+ int_0000 = 2
+ vec_0000 = -0.700000, -1.000000, 10.700000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.500000, 0.500000, 0.500000
+ vec_0001 = 0.200000, 0.200000, 0.200000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.286275, 0.364706, 0.380392
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 35.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\net\glow_white
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/idle/net_idle_new_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/idle/net_idle_new_00.pe
new file mode 100644
index 00000000..98e57641
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/idle/net_idle_new_00.pe
@@ -0,0 +1,135 @@
+[_effect]
+ action_count = 9
+ flags = 3073
+ max_particles = 45
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.086275, 0.098039, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.200000
+ flt_0001 = 1.000000
+ flt_0002 = 100.000000
+ int_0000 = 1
+ vec_0000 = -0.700000, -1.000000, 10.700000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 0.200000, 0.200000, 0.200000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.352941, 0.352941, 0.352941
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 35.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 32
+ reserved = 64.000000, 64.000000
+ speed = 20.000000
+ tex_size = 0.125000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\net\smoke_cannon
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/net_idle_old.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/net_idle_old.pe
new file mode 100644
index 00000000..17dc8df6
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/net_idle_old.pe
@@ -0,0 +1,135 @@
+[_effect]
+ action_count = 9
+ flags = 7169
+ max_particles = 200
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.086275, 0.098039, 0.023529
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.050000
+ flt_0001 = 1.000000
+ flt_0002 = 100.000000
+ int_0000 = 1
+ vec_0000 = -0.700000, -1.000000, 10.700000
+ version = 1
+
+[action_0005]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 100.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 0.200000, 0.200000, 0.200000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0005_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0001]
+ type = 0
+ v0 = 0.000000, 0.250000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0005_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0005_0003]
+ type = 0
+ v0 = 0.300000, 0.300000, 0.510000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 20.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 8
+ reserved = 64.000000, 64.000000
+ speed = 20.000000
+ tex_size = 0.250000, 0.500000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\net\pfx_sparks
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/net_shield_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/net_shield_00.pe
new file mode 100644
index 00000000..90e154f7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/net_shield_00.pe
@@ -0,0 +1,135 @@
+[_effect]
+ action_count = 9
+ flags = 3073
+ max_particles = 200
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.086275, 0.098039, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.050000
+ flt_0001 = 1.300000
+ flt_0002 = 100.000000
+ int_0000 = 2
+ vec_0000 = -0.700000, -1.000000, 10.700000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 0.200000, 0.200000, 0.200000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.568628, 0.709804, 0.780392
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 35.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 8
+ reserved = 64.000000, 64.000000
+ speed = 20.000000
+ tex_size = 0.250000, 0.500000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\net\pfx_sparks
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/shield/net_shield_new.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/shield/net_shield_new.pe
new file mode 100644
index 00000000..0f5a3b65
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/net/effects/shield/net_shield_new.pe
@@ -0,0 +1,131 @@
+[_effect]
+ action_count = 9
+ flags = 18433
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 6.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.050000
+ flt_0001 = 1.300000
+ flt_0002 = 100.000000
+ int_0000 = 2
+ vec_0000 = -0.700000, -1.000000, 10.700000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.150000, 0.150000, 0.150000
+ vec_0001 = 0.150000, 0.150000, 0.150000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.368627, 0.498039, 0.560784
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.030000, 0.030000, 0.030000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 20.000000, 20.000000, 20.000000
+ v1 = -10.000000, -20.000000, -10.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\ghost\glow_white
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/net/net_blowout.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/net/net_blowout.pg
new file mode 100644
index 00000000..11f3143b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/net/net_blowout.pg
@@ -0,0 +1,33 @@
+[_group]
+ effects_count = 3
+ flags = 0
+ timelimit = 4.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\net\effects\blowout\net_shield
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 2.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\net\effects\blowout\net_shield_dist
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 3.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\net\effects\blowout\net_shield_smok
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/net/net_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/net/net_idle.pg
new file mode 100644
index 00000000..20df0bcb
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/net/net_idle.pg
@@ -0,0 +1,24 @@
+[_group]
+ effects_count = 2
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\net\effects\idle\net_idle_new
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\net\effects\idle\net_idle_new_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/net/net_shield.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/net/net_shield.pg
new file mode 100644
index 00000000..0f6683b4
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/net/net_shield.pg
@@ -0,0 +1,15 @@
+[_group]
+ effects_count = 1
+ flags = 0
+ timelimit = 4.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\net\effects\shield\net_shield_new
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_leaves_lift.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_leaves_lift.pe
new file mode 100644
index 00000000..c8c15651
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_leaves_lift.pe
@@ -0,0 +1,125 @@
+[_effect]
+ action_count = 8
+ flags = 557057
+ max_particles = 80
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 45.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 500.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.050000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -0.150000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.400000, 0.400000, 0.400000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 20.000000, -1.000000, 20.000000
+ v1 = -20.000000, 1.000000, -20.000000
+ v2 = 0.000000, 6.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.000000
+ v1 = 0.150000, 0.150000, 0.150000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 9
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = -0.005000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 4
+ v0 = 20.000000, -0.300000, 20.000000
+ v1 = -20.000000, -0.400000, -20.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\springboard\leaf
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_leaves_lift_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_leaves_lift_00.pe
new file mode 100644
index 00000000..864d529e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_leaves_lift_00.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 558081
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 45.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 500.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.050000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -0.150000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.400000, 0.400000, 0.400000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 20.000000, -1.000000, 20.000000
+ v1 = -20.000000, 1.000000, -20.000000
+ v2 = 0.000000, 6.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.150000, 0.150000, 0.150000
+ v1 = 0.100000, 0.100000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 9
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = -0.005000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\no_gravity\leaf_10
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_leaves_lift_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_leaves_lift_01.pe
new file mode 100644
index 00000000..bb7dfb44
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_leaves_lift_01.pe
@@ -0,0 +1,111 @@
+[_effect]
+ action_count = 7
+ flags = 557057
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 45.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 500.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.050000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -0.150000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.400000, 0.400000, 0.400000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 20.000000, -1.000000, 20.000000
+ v1 = -20.000000, 1.000000, -20.000000
+ v2 = 0.000000, 6.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.000000
+ v1 = 0.150000, 0.150000, 0.150000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 9
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = -0.005000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\no_gravity\branch_02
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_rocks_center_big_burst.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_rocks_center_big_burst.pe
new file mode 100644
index 00000000..e92da924
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_rocks_center_big_burst.pe
@@ -0,0 +1,94 @@
+[_effect]
+ action_count = 5
+ flags = 17409
+ max_particles = 20
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 45.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.121569, 0.121569, 0.121569
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.250000, 0.400000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.000000
+ v1 = 0.200000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 8.000000, 15.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 3.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\no_gravity\bitssmallrocky_d
+
+[timelimit]
+ value = 8.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_rocks_center_small_burst.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_rocks_center_small_burst.pe
new file mode 100644
index 00000000..5946c302
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_rocks_center_small_burst.pe
@@ -0,0 +1,102 @@
+[_effect]
+ action_count = 6
+ flags = 525313
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 45.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 150.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ vec_0000 = 0.000000, 0.500000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -0.500000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 1.000000
+ flt_0002 = 5.000000
+ int_0000 = 2
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.121569, 0.121569, 0.121569
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.200000, 0.000000
+ v2 = 1.000000, 6.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 3.717551, 0.226893, 7.225663
+ v1 = -214.884928, 229.039568, -2.146755
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.150000, 0.150000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.050000, 0.000000
+ v1 = 10.000000, 20.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 2.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\no_gravity\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_rocks_dist_child.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_rocks_dist_child.pe
new file mode 100644
index 00000000..597e7999
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_rocks_dist_child.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 0
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.500000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\no_gravity\distort_anomaly_small
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_rocks_small_lift.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_rocks_small_lift.pe
new file mode 100644
index 00000000..8bfc05b7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/no_grav_rocks_small_lift.pe
@@ -0,0 +1,112 @@
+[_effect]
+ action_count = 7
+ flags = 557057
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 45.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 500.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.050000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -0.150000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.427451, 0.427451, 0.427451
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 20.000000, -1.000000, 20.000000
+ v1 = -20.000000, 1.000000, -20.000000
+ v2 = 0.000000, 6.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.000000
+ v1 = 0.150000, 0.150000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 9
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 4
+ v0 = 20.000000, -0.300000, 20.000000
+ v1 = -20.000000, -0.400000, -20.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\springboard\leaf
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/nograv_dust.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/nograv_dust.pe
new file mode 100644
index 00000000..48b36dd2
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/nograv_dust.pe
@@ -0,0 +1,112 @@
+[_effect]
+ action_count = 7
+ flags = 21505
+ max_particles = 155
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 45.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.010000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 5.000000, 5.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.003000
+ vec_0000 = 40.491640, 0.000017, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -0.030000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.250980, 0.243137, 0.231373
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 20.000000, 1.000000, 20.000000
+ v1 = -20.000000, -1.000000, -20.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = -12.566371, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 0.500000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\no_gravity\cumulus_02
+
+[timelimit]
+ value = 15.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/nograv_dust_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/nograv_dust_00.pe
new file mode 100644
index 00000000..010425f9
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/nograv_dust_00.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 80
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 28.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.800000
+ flt_0001 = 0.050000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 5.000000, 5.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 1.000000, 0.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.000000
+ vec_0000 = 0.000000, 0.000017, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -0.100000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.286275, 0.286275, 0.286275
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = -12.566371, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 0.500000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 16.000000, 32.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\no_gravity\cumulus_02
+
+[timelimit]
+ value = 0.300000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/nograv_dust_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/nograv_dust_01.pe
new file mode 100644
index 00000000..8df72d87
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/nograv_dust_01.pe
@@ -0,0 +1,105 @@
+[_effect]
+ action_count = 7
+ flags = 20481
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 15.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.010000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 5.000000, 5.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.000000
+ vec_0000 = 40.491640, 0.000017, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -0.020000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.168627, 0.168627, 0.164706
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 20.000000, 1.000000, 20.000000
+ v1 = -20.000000, -1.000000, -20.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = -12.566371, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 0.500000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\no_gravity\smoke128_3w
+
+[timelimit]
+ value = 15.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/nograv_dust_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/nograv_dust_02.pe
new file mode 100644
index 00000000..a1a75210
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/hit/nograv_dust_02.pe
@@ -0,0 +1,117 @@
+[_effect]
+ action_count = 8
+ flags = 20481
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 45.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.010000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 5.000000, 5.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.003000
+ vec_0000 = 40.491640, 0.000017, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -0.030000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.001000
+ flt_0001 = 1.000000
+ flt_0002 = 1.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ vec_0001 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.250980, 0.243137, 0.231373
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 20.000000, 1.000000, 20.000000
+ v1 = -20.000000, -1.000000, -20.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -12.566371, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.500000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\no_gravity\ffff
+
+[timelimit]
+ value = 15.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/idle/nograv_center_leaves.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/idle/nograv_center_leaves.pe
new file mode 100644
index 00000000..709f9bc0
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/idle/nograv_center_leaves.pe
@@ -0,0 +1,135 @@
+[_effect]
+ action_count = 9
+ flags = 5121
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.086275, 0.098039, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.050000
+ flt_0001 = 1.300000
+ flt_0002 = 100.000000
+ int_0000 = 2
+ vec_0000 = -0.700000, -1.000000, 10.700000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 0.200000, 0.200000, 0.200000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.129412, 0.129412, 0.129412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 20.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 2.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\no_gravity\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/idle/nograv_center_leaves_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/idle/nograv_center_leaves_00.pe
new file mode 100644
index 00000000..e754cf52
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/idle/nograv_center_leaves_00.pe
@@ -0,0 +1,135 @@
+[_effect]
+ action_count = 9
+ flags = 5121
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.086275, 0.098039, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.050000
+ flt_0001 = 1.300000
+ flt_0002 = 100.000000
+ int_0000 = 2
+ vec_0000 = -0.700000, -1.000000, 10.700000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 0.200000, 0.200000, 0.200000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.129412, 0.129412, 0.129412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 10.000000, 1.500000, 10.000000
+ v1 = -10.000000, 1.000000, -10.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 20.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 2.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\no_gravity\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/idle/nograv_center_leaves_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/idle/nograv_center_leaves_dist.pe
new file mode 100644
index 00000000..7eb47069
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/idle/nograv_center_leaves_dist.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 0
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.500000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\no_gravity\distort_anomaly_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/idle/nograv_ground_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/idle/nograv_ground_dist.pe
new file mode 100644
index 00000000..30440bbc
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/effects/idle/nograv_ground_dist.pe
@@ -0,0 +1,119 @@
+[_effect]
+ action_count = 8
+ flags = 67585
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.800000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -9.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 120.000000
+ flt_0001 = 20.000000
+ flt_0002 = 100.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[collision]
+ collide_resilence = 0.000000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 1.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, -0.050000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -3.141593, -3.141593, -3.141593
+ v1 = 3.141593, 3.141593, 3.141593
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\no_gravity\pfx_distortion
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/no_gravity_blowout.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/no_gravity_blowout.pg
new file mode 100644
index 00000000..4cd6112f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/no_gravity_blowout.pg
@@ -0,0 +1,69 @@
+[_group]
+ effects_count = 7
+ flags = 0
+ timelimit = 45.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\no_gravity\effects\hit\no_grav_rocks_center_big_burst
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\no_gravity\effects\hit\no_grav_rocks_center_small_burst
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\no_gravity\effects\hit\no_grav_rocks_small_lift
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\no_gravity\effects\hit\no_grav_leaves_lift
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\no_gravity\effects\hit\nograv_dust
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\no_gravity\effects\hit\nograv_dust_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\no_gravity\effects\hit\no_grav_leaves_lift_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/no_gravity_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/no_gravity_idle.pg
new file mode 100644
index 00000000..50b33e72
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/no_gravity/no_gravity_idle.pg
@@ -0,0 +1,15 @@
+[_group]
+ effects_count = 1
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\no_gravity\effects\idle\nograv_center_leaves_00
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\no_gravity\effects\idle\nograv_center_leaves_dist
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaliy_dao_ghost_particle_puff.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaliy_dao_ghost_particle_puff.pe
new file mode 100644
index 00000000..2b24598d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaliy_dao_ghost_particle_puff.pe
@@ -0,0 +1,106 @@
+[_effect]
+ action_count = 7
+ flags = 20481
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.700000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.100000, 0.100000, 0.001000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.501961, 0.815686, 0.862745
+ v1 = 0.372549, 0.447059, 0.309804
+ v2 = 0.345098, 0.274510, 0.231373
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.001000
+ v1 = 0.200000, 0.200000, 0.001000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\point\glow_white
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_da_new_sphere.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_da_new_sphere.pe
new file mode 100644
index 00000000..07ebd3e3
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_da_new_sphere.pe
@@ -0,0 +1,74 @@
+[_effect]
+ action_count = 3
+ flags = 3073
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 0.200000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 2.000000, 2.000000, 2.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.500000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\point\sphere_something_4096_v2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_da_new_sphere_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_da_new_sphere_00.pe
new file mode 100644
index 00000000..ba5c345b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_da_new_sphere_00.pe
@@ -0,0 +1,74 @@
+[_effect]
+ action_count = 3
+ flags = 3073
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 0.200000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.392157, 0.666667, 0.941177
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 2.000000, 2.000000, 2.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.500000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\point\sphere_something_4096_v2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_da_new_sphere_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_da_new_sphere_dist.pe
new file mode 100644
index 00000000..c67ebc56
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_da_new_sphere_dist.pe
@@ -0,0 +1,67 @@
+[_effect]
+ action_count = 3
+ flags = 1
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 0.200000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 2.000000, 2.000000, 2.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.500000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\point\pfx_dist8
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_bubble_pulse_smaller.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_bubble_pulse_smaller.pe
new file mode 100644
index 00000000..82124237
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_bubble_pulse_smaller.pe
@@ -0,0 +1,141 @@
+[_effect]
+ action_count = 10
+ flags = 2136065
+ max_particles = 35
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3000.000000
+ flt_0002 = 2600.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = damping
+ action_type = 4
+ flags = 1
+ flt_0000 = 85.000000
+ flt_0001 = 1.000000
+ vec_0000 = -30.000000, -30.000000, -30.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 23.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.200000
+ flt_0003 = 0.800000
+ vec_0000 = 0.556863, 0.337255, 0.972549
+ version = 1
+
+[action_0005]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[action_0007]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 12.566371, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0009]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.380392, 0.380392, 0.380392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 1.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 5
+ v0 = 0.200000, 0.200000, 0.200000
+ v1 = 0.200000, 0.200000, 0.800000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0008_0000]
+ type = 5
+ v0 = 3.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\point\pfx_dist2a
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_core_dist_y2k.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_core_dist_y2k.pe
new file mode 100644
index 00000000..3834e430
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_core_dist_y2k.pe
@@ -0,0 +1,101 @@
+[_effect]
+ action_count = 6
+ flags = 5121
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.400000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 5.000000, 5.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 4.000000, 25.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 16.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\point\pfx_dist2inv
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_core_small_unstable.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_core_small_unstable.pe
new file mode 100644
index 00000000..63e2d34f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_core_small_unstable.pe
@@ -0,0 +1,94 @@
+[_effect]
+ action_count = 6
+ flags = 14337
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.100000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 11.000000, 11.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.313726, 0.796078, 0.725490
+ v1 = 0.380392, 0.380392, 0.380392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 6.000000, 7.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.700000, 0.700000, 0.700000
+ v1 = 0.800000, 0.800000, 0.800000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -4.000000, -4.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\point\blue_flare
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_ghost_smoke_fast.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_ghost_smoke_fast.pe
new file mode 100644
index 00000000..bccacc6c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_ghost_smoke_fast.pe
@@ -0,0 +1,168 @@
+[_effect]
+ action_count = 12
+ flags = 11265
+ max_particles = 3
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.300000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 10.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.619608, 0.635294, 0.619608
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 3.000000
+ flt_0001 = 150.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 25.000000
+ flt_0001 = 200.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 5.000000, -2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 0
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.082353, 0.113726, 0.180392
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 6
+ v0 = -12.566371, 0.052360, -0.052360
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 0.300000, -0.300000, 0.300000
+ v1 = -0.500000, 0.300000, -0.500000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 100.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\point\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_jelly_blast_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_jelly_blast_dist.pe
new file mode 100644
index 00000000..d41b8897
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_jelly_blast_dist.pe
@@ -0,0 +1,130 @@
+[_effect]
+ action_count = 9
+ flags = 2136065
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ flt_0001 = 3000.000000
+ flt_0002 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = damping
+ action_type = 4
+ flags = 1
+ flt_0000 = 200.000000
+ flt_0001 = 0.100000
+ vec_0000 = -3.000000, -23.000000, -3.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 22.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.380392, 0.380392, 0.380392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 0.200000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -12.566371, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 5
+ v0 = 0.200000, 0.000000, 0.200000
+ v1 = 0.100000, 0.800000, 0.800000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -4.000000, -4.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\point\pfx_dist2a
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_jelly_heat_puff_carrier.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_jelly_heat_puff_carrier.pe
new file mode 100644
index 00000000..a58f0e46
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_jelly_heat_puff_carrier.pe
@@ -0,0 +1,141 @@
+[_effect]
+ action_count = 10
+ flags = 2136065
+ max_particles = 10
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ flt_0001 = 3000.000000
+ flt_0002 = 2600.000000
+ vec_0000 = 0.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = damping
+ action_type = 4
+ flags = 1
+ flt_0000 = 80.000000
+ flt_0001 = 2.000000
+ vec_0000 = -15.000000, -15.000000, -15.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.200000
+ flt_0003 = 0.800000
+ vec_0000 = 0.556863, 0.337255, 0.972549
+ version = 1
+
+[action_0005]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.100000, 0.100000, 0.100000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0007]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0009]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.380392, 0.380392, 0.380392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.500000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 5
+ v0 = 0.050000, 0.050000, 0.001000
+ v1 = 0.200000, 0.800000, 0.800000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -4.000000, -4.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0008_0000]
+ type = 5
+ v0 = 1.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\point\pfx_distortion
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_jellyfish_heat.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_jellyfish_heat.pe
new file mode 100644
index 00000000..844f62aa
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_jellyfish_heat.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 8
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 10.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 5.000000
+ vec_0001 = 2.000000, 3.700000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 0
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 2.000000, 2.000000
+ v1 = 0.500000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 3.000000, -5.000000
+ v2 = 0.300000, 2.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\point\distort_anomaly_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_jellyfish_heat_puff.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_jellyfish_heat_puff.pe
new file mode 100644
index 00000000..97285500
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_jellyfish_heat_puff.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 16385
+ max_particles = 8
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.300000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 5.000000
+ vec_0001 = 2.000000, 3.700000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 0
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 2.000000, 2.000000
+ v1 = 0.500000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 3.000000, -5.000000
+ v2 = 0.300000, 2.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\point\distort_anomaly_01
+
+[timelimit]
+ value = 0.400000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_point_electric_puff.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_point_electric_puff.pe
new file mode 100644
index 00000000..16388ab9
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_point_electric_puff.pe
@@ -0,0 +1,85 @@
+[_effect]
+ action_count = 4
+ flags = 7169
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 18.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.411765, 0.752941, 0.898039
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 9.552118, 7.749262, 0.000000
+ v1 = -9.552118, -7.749262, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.100000, 0.100000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 45.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\point\electricblast1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_point_flash.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_point_flash.pe
new file mode 100644
index 00000000..7b079eda
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_point_flash.pe
@@ -0,0 +1,96 @@
+[_effect]
+ action_count = 5
+ flags = 8418305
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.301961, 0.513726, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 6.000000, 6.000000, 6.000000
+ vec_0001 = 5.000000, 5.000000, 5.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.309804, 0.537255, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 3.141593, 3.141593, 3.141593
+ v1 = 3.141593, 3.141593, 3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 3.000000, 0.000000
+ v2 = 0.000000, 24.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 64.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\point\smokebasic01atlas
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_point_flash_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_point_flash_00.pe
new file mode 100644
index 00000000..05918eea
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_point_flash_00.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 6
+ flags = 8584193
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 15.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.686274, 0.827451, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 6.000000, 6.000000, 6.000000
+ vec_0001 = 0.100000, 0.100000, 0.100000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 4.000000
+ flt_0002 = 24.000000
+ int_0000 = 4
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.588235, 0.780392, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 3.141593, 3.141593, 3.141593
+ v1 = 3.141593, 3.141593, 3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 5.000000, 14.000000, 0.000000
+ v2 = 6.000000, 14.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\point\bitsglowybits01atlas
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_point_flash_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_point_flash_01.pe
new file mode 100644
index 00000000..18f4da94
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_point_flash_01.pe
@@ -0,0 +1,105 @@
+[_effect]
+ action_count = 6
+ flags = 8420353
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 900.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 19.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 7.000000, 7.000000, 7.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 8.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.521569, 0.831373, 0.933333
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 3.141593, 3.141593, 3.141593
+ v1 = -3.141593, -3.141593, -3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 12.000000, 0.000000
+ v2 = 0.000000, 90.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 64.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\point\electricblast2
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_point_flash_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_point_flash_02.pe
new file mode 100644
index 00000000..a8222f72
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_point_flash_02.pe
@@ -0,0 +1,105 @@
+[_effect]
+ action_count = 6
+ flags = 8420353
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 900.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 19.000000
+ flt_0002 = 0.120000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 11.000000, 11.000000, 11.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 18.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.372549, 0.619608, 0.835294
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 3.141593, 3.141593, 3.141593
+ v1 = -3.141593, -3.141593, -3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 24.000000, 0.000000
+ v1 = 0.000000, 90.000000, 0.000000
+ v2 = 0.000000, 60.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 128.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\point\electricblast2
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_sphere_full_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_sphere_full_dist.pe
new file mode 100644
index 00000000..26b20ebc
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_sphere_full_dist.pe
@@ -0,0 +1,135 @@
+[_effect]
+ action_count = 9
+ flags = 2137089
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ flt_0001 = 1000.000000
+ flt_0002 = 1.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = damping
+ action_type = 4
+ flags = 1
+ flt_0000 = 80.000000
+ flt_0001 = 3.000000
+ vec_0000 = -25.000000, -25.000000, -25.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 200.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.200000
+ flt_0003 = 0.800000
+ vec_0000 = 0.713726, 0.560784, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 0.000000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = -12.566371, 6.283186, -12.566371
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.380392, 0.380392, 0.380392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 2.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -12.566371, -12.566371, -12.566371
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.800000, 0.800000, 0.800000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -4.000000, -4.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 8
+ reserved = 0.000000, 0.000000
+ speed = 3.000000
+ tex_size = 0.250000, 0.500000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\point\pfx_dist_glass
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_wave_blast_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_wave_blast_dist.pe
new file mode 100644
index 00000000..8630ce24
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/anomaly_dao_wave_blast_dist.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 18433
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.800000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 7.000000, 7.000000, 7.000000
+ vec_0001 = 15.000000, 15.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -1.570796, -1.570796, -1.570796
+ v1 = 1.570796, 1.570796, 1.570796
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\point\pfx_dist3
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/point_particle_vacuum.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/point_particle_vacuum.pe
new file mode 100644
index 00000000..659cfb75
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/effects/point_particle_vacuum.pe
@@ -0,0 +1,74 @@
+[_effect]
+ action_count = 3
+ flags = 3073
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 0.200000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.078431, 0.454902, 0.290196
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 3.000000, 3.000000, 3.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.500000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 30.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\point\vacum_v1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/point_blowout.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/point/point_blowout.pg
new file mode 100644
index 00000000..c194559d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/point_blowout.pg
@@ -0,0 +1,51 @@
+[_group]
+ effects_count = 5
+ flags = 0
+ timelimit = 1.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\point\effects\anomaly_dao_point_flash
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\point\effects\anomaly_dao_point_flash_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\point\effects\anomaly_dao_point_flash_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\point\effects\anomaly_dao_point_flash_02
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\point\effects\anomaly_dao_wave_blast_dist
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/point/point_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/point/point_idle.pg
new file mode 100644
index 00000000..b761d7f3
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/point/point_idle.pg
@@ -0,0 +1,69 @@
+[_group]
+ effects_count = 7
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\point\effects\anomaly_da_new_sphere
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\point\effects\anomaly_da_new_sphere_dist
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\point\effects\anomaly_dao_core_small_unstable
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\point\effects\anomaly_dao_ghost_smoke_fast
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\point\effects\anomaly_dao_jellyfish_heat
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\point\effects\anomaly_dao_point_electric_puff
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\point\effects\point_particle_vacuum
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/expl_new_shockwave_wide_rafal_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/expl_new_shockwave_wide_rafal_00.pe
new file mode 100644
index 00000000..cbe708ba
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/expl_new_shockwave_wide_rafal_00.pe
@@ -0,0 +1,114 @@
+[_effect]
+ action_count = 8
+ flags = 18433
+ max_particles = 23
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 35.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 16.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 125.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 0
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 10.000000, 10.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 150.000000, 300.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\seed\pfx_dist2
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/expl_new_shockwave_wide_rafal_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/expl_new_shockwave_wide_rafal_01.pe
new file mode 100644
index 00000000..2cc6a328
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/expl_new_shockwave_wide_rafal_01.pe
@@ -0,0 +1,114 @@
+[_effect]
+ action_count = 8
+ flags = 18433
+ max_particles = 22
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 45.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 16.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 55.000000, 25.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 0
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 10.000000, 10.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 2.000000, 15.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\seed\pfx_dist3_005
+
+[timelimit]
+ value = 4.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/gravi_we_rocks_dist_child_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/gravi_we_rocks_dist_child_00.pe
new file mode 100644
index 00000000..4631d840
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/gravi_we_rocks_dist_child_00.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 0
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.500000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\gravitational_average\distort_anomaly_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/no_grav_leaves_lift_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/no_grav_leaves_lift_00.pe
new file mode 100644
index 00000000..25bfddec
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/no_grav_leaves_lift_00.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 558081
+ max_particles = 150
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 45.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 500.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.050000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -0.150000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.400000, 0.400000, 0.400000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 20.000000, -1.000000, 20.000000
+ v1 = -20.000000, 1.000000, -20.000000
+ v2 = 0.000000, 6.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.150000, 0.150000, 0.150000
+ v1 = 0.100000, 0.100000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 9
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = -0.005000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\no_gravity\bitsleaves01anim_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/no_grav_leaves_lift_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/no_grav_leaves_lift_01.pe
new file mode 100644
index 00000000..25bfddec
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/no_grav_leaves_lift_01.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 558081
+ max_particles = 150
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 45.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 500.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.050000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -0.150000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.400000, 0.400000, 0.400000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 20.000000, -1.000000, 20.000000
+ v1 = -20.000000, 1.000000, -20.000000
+ v2 = 0.000000, 6.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.150000, 0.150000, 0.150000
+ v1 = 0.100000, 0.100000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 9
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = -0.005000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\no_gravity\bitsleaves01anim_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/nyah_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/nyah_00.pe
new file mode 100644
index 00000000..066b9e12
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/nyah_00.pe
@@ -0,0 +1,146 @@
+[_effect]
+ action_count = 9
+ flags = 52225
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 155.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 16.000000, 16.000000, 16.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -16.000000, -16.000000, -16.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 360.000000, 0.000000, 30.000000
+ vec_0001 = 720.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.500000, -2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 8.000000, 8.000000, 8.000000
+ v1 = -8.000000, -8.000000, -8.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.100000, 50.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\seed\dirtburst_01
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/nyah_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/nyah_01.pe
new file mode 100644
index 00000000..4c49a595
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/nyah_01.pe
@@ -0,0 +1,146 @@
+[_effect]
+ action_count = 9
+ flags = 52225
+ max_particles = 120
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 200.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 16.000000, 16.000000, 16.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -16.000000, -16.000000, -16.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 360.000000, 0.000000, 30.000000
+ vec_0001 = 720.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.500000, -2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = -0.250000, 0.250000, 0.250000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 8.000000, 8.000000, 8.000000
+ v1 = -8.000000, -8.000000, -8.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.100000, 50.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\seed\spray_v1
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/nyah_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/nyah_02.pe
new file mode 100644
index 00000000..2f9596dc
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/nyah_02.pe
@@ -0,0 +1,146 @@
+[_effect]
+ action_count = 9
+ flags = 52225
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 16.000000, 16.000000, 16.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -16.000000, -16.000000, -16.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 360.000000, 0.000000, 30.000000
+ vec_0001 = 720.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.500000, -2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 8.000000, 8.000000, 8.000000
+ v1 = -8.000000, -8.000000, -8.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.100000, 50.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\seed\dirtburst_01
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/nyah_lift.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/nyah_lift.pe
new file mode 100644
index 00000000..0b6b6814
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/nyah_lift.pe
@@ -0,0 +1,146 @@
+[_effect]
+ action_count = 9
+ flags = 52225
+ max_particles = 250
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 555.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 16.000000, 16.000000, 16.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -16.000000, -16.000000, -16.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 360.000000, 0.000000, 30.000000
+ vec_0001 = 720.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 15.000000, 1.500000, 15.000000
+ v1 = -15.000000, -2.000000, -15.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 8.000000, 8.000000, 8.000000
+ v1 = -8.000000, -8.000000, -8.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.100000, 50.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\seed\dirtburst_01
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/seed_disturbed.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/seed_disturbed.pe
new file mode 100644
index 00000000..c7fe5d89
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/seed_disturbed.pe
@@ -0,0 +1,138 @@
+[_effect]
+ action_count = 9
+ flags = 64513
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 25.000000
+ vec_0000 = -6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -8.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.060000
+ flt_0001 = 800.000000
+ flt_0002 = 100.000000
+ vec_0000 = 0.000000, 1.600000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 2.000000
+ flt_0002 = 10.000000
+ int_0000 = 2
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.600000, 0.000000
+ v1 = 0.500000, 0.600000, 0.000000
+ v2 = 0.000000, 0.000000, 1.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 6.283186, 6.283186, 0.000000
+ v1 = -300.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.250000, 0.250000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 7.000000, 0.000000
+ v2 = 0.000000, 8.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 32.000000, 32.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\seed\spray_v1
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/seed_disturbed_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/seed_disturbed_00.pe
new file mode 100644
index 00000000..1a2658da
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/blowout/seed_disturbed_00.pe
@@ -0,0 +1,138 @@
+[_effect]
+ action_count = 9
+ flags = 60417
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 25.000000
+ vec_0000 = -6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -8.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.060000
+ flt_0001 = 800.000000
+ flt_0002 = 100.000000
+ vec_0000 = 0.000000, 1.600000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 2.000000
+ flt_0002 = 10.000000
+ int_0000 = 2
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.600000, 0.000000
+ v1 = 0.500000, 0.600000, 0.000000
+ v2 = 0.000000, 0.000000, 1.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 6.283186, 6.283186, 0.000000
+ v1 = -300.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.100000, 0.250000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 7.000000, 0.000000
+ v2 = 0.000000, 8.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 32.000000, 32.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\seed\smoke_streched_tiled_a
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/idle/anomaly_teleport_particle_output_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/idle/anomaly_teleport_particle_output_00.pe
new file mode 100644
index 00000000..cae2ebce
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/idle/anomaly_teleport_particle_output_00.pe
@@ -0,0 +1,136 @@
+[_effect]
+ action_count = 9
+ flags = 38913
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 16.000000, 16.000000, 16.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -16.000000, -16.000000, -16.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 55.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 360.000000, 0.000000, 30.000000
+ vec_0001 = 720.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 0.549020, 0.611765, 0.635294
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.500000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.200000, 0.200000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\seed\fx_moon_full_foggy
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/idle/nyah_idle.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/idle/nyah_idle.pe
new file mode 100644
index 00000000..ae6fb23c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/idle/nyah_idle.pe
@@ -0,0 +1,143 @@
+[_effect]
+ action_count = 9
+ flags = 35841
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 14.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 16.000000, 16.000000, 16.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -16.000000, -16.000000, -16.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 360.000000, 0.000000, 30.000000
+ vec_0001 = 720.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.200000, 0.200000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.100000, 14.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\seed\spray_v1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/idle/test.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/idle/test.pe
new file mode 100644
index 00000000..1305b6c0
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/effects/idle/test.pe
@@ -0,0 +1,143 @@
+[_effect]
+ action_count = 9
+ flags = 35841
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 55.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 16.000000, 16.000000, 16.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -16.000000, -16.000000, -16.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 360.000000, 0.000000, 30.000000
+ vec_0001 = 720.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.100000, 14.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\seed\dirtburst_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/seed/seed_blowout.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/seed_blowout.pg
new file mode 100644
index 00000000..bba0f17a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/seed_blowout.pg
@@ -0,0 +1,60 @@
+[_group]
+ effects_count = 6
+ flags = 0
+ timelimit = 4.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\seed\effects\blowout\nyah_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\seed\effects\blowout\seed_disturbed
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.200000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\seed\effects\blowout\nyah_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\seed\effects\blowout\seed_disturbed_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\seed\effects\blowout\expl_new_shockwave_wide_rafal_01
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 3.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\seed\effects\blowout\nyah_02
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\seed\effects\blowout\gravi_we_rocks_dist_child_00
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/seed/seed_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/seed_idle.pg
new file mode 100644
index 00000000..abff724b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/seed_idle.pg
@@ -0,0 +1,33 @@
+[_group]
+ effects_count = 3
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\seed\effects\idle\nyah_idle
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\seed\effects\idle\test
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\seed\effects\idle\anomaly_teleport_particle_output_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/seed/seed_shield.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/seed_shield.pg
new file mode 100644
index 00000000..2e6e35ef
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/seed/seed_shield.pg
@@ -0,0 +1,6 @@
+[_group]
+ effects_count = 0
+ flags = 0
+ timelimit = 1.000000
+ version = 3
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/anomaly_dao_sphere_blast_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/anomaly_dao_sphere_blast_00.pe
new file mode 100644
index 00000000..aa89d684
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/anomaly_dao_sphere_blast_00.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 2119681
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.100000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.700000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 7.000000, 7.000000, 0.001000
+ vec_0001 = 15.000000, 15.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.482353, 0.490196, 0.498039
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 3.000000, 3.000000, 0.001000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, -20.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\shatterpoint\pfx_flash_07, semitone\anomalies\shatterpoint\pfx_dist7
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/anomaly_dao_wave_blast_dist_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/anomaly_dao_wave_blast_dist_00.pe
new file mode 100644
index 00000000..c44b4faf
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/anomaly_dao_wave_blast_dist_00.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 18433
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 7.000000, 7.000000, 7.000000
+ vec_0001 = 15.000000, 15.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -1.570796, -1.570796, -1.570796
+ v1 = 1.570796, 1.570796, 1.570796
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\shatterpoint\pfx_dist3
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/buble_distort_0222_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/buble_distort_0222_01.pe
new file mode 100644
index 00000000..9e084590
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/buble_distort_0222_01.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 16385
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, 0.600000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 2
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 65.000000, 12.000000, 1.000000
+ v1 = 8.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 125.000000, 500.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\shatterpoint\pfx_dist2inv
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/core_spin_smoke.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/core_spin_smoke.pe
new file mode 100644
index 00000000..50a29e4c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/core_spin_smoke.pe
@@ -0,0 +1,108 @@
+[_effect]
+ action_count = 6
+ flags = 54273
+ max_particles = 8
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 45.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.568628, 0.568628, 0.568628
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -1.801878, 2.999750, 2.999750
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\shatterpoint\cumulus_02
+
+[timelimit]
+ value = 8.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/dist_burst.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/dist_burst.pe
new file mode 100644
index 00000000..815ad245
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/dist_burst.pe
@@ -0,0 +1,128 @@
+[_effect]
+ action_count = 8
+ flags = 17409
+ max_particles = 45
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 500.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 62.831852, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 1.000000
+ flt_0002 = 10.000000
+ int_0000 = 4
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0006]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 25.000000
+ flt_0001 = 1.000000
+ flt_0002 = 1.000000
+ vec_0000 = 3.000000, 1.000000, 3.000000
+ vec_0001 = 2.000000, 1.000000, 2.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.984314, 0.984314, 0.984314
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.250000, 1.000000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 3.000000, 3.000000, 3.000000
+ v1 = 0.550000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 45.000000, 14.000000, 45.000000
+ v1 = -45.000000, -8.000000, -45.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 3.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\shatterpoint\pfx_dist2inv
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/dust.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/dust.pe
new file mode 100644
index 00000000..c97e52ac
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/dust.pe
@@ -0,0 +1,129 @@
+[_effect]
+ action_count = 8
+ flags = 19457
+ max_particles = 18
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.239216, 0.211765, 0.184314
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.012000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 8.000000, 8.000000, 0.001000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.239216, 0.211765, 0.184314
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.250000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 64.000000, 64.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\shatterpoint\puff_00
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/expl_car_smoke_big_smoke_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/expl_car_smoke_big_smoke_00.pe
new file mode 100644
index 00000000..30e3cf76
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/expl_car_smoke_big_smoke_00.pe
@@ -0,0 +1,108 @@
+[_effect]
+ action_count = 6
+ flags = 54273
+ max_particles = 22
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 45.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.568628, 0.568628, 0.568628
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -1.801878, 2.999750, 2.999750
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\shatterpoint\cumulus_02
+
+[timelimit]
+ value = 8.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/expl_fallout4_debris_20.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/expl_fallout4_debris_20.pe
new file mode 100644
index 00000000..7a35fa6e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/expl_fallout4_debris_20.pe
@@ -0,0 +1,124 @@
+[_effect]
+ action_count = 8
+ flags = 171009
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 2
+ flt_0000 = 25.000000
+ vec_0000 = -6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -2.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 4.000000
+ flt_0002 = 15.000000
+ int_0000 = 2
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.635294, 0.513726, 0.423529
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.500000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 1.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -300.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.000000
+ v1 = 0.150000, 0.150000, 0.150000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 2.000000, 4.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\shatterpoint\spark_tiled_a
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/expl_new_sparks_aftermath_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/expl_new_sparks_aftermath_00.pe
new file mode 100644
index 00000000..6ab6e38a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/expl_new_sparks_aftermath_00.pe
@@ -0,0 +1,111 @@
+[_effect]
+ action_count = 6
+ flags = 193537
+ max_particles = 256
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 7.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 16.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 8.000000, 2.000000, 8.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 8.000000
+ flt_0002 = 15.000000
+ int_0000 = 4
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.010000, 0.500000, 0.050000
+ v1 = 0.100000, 2.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 4.500000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\shatterpoint\sparkwires_b_flicker
+
+[timelimit]
+ value = 25.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/expl_new_sparks_bottom_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/expl_new_sparks_bottom_00.pe
new file mode 100644
index 00000000..5a2b1490
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/expl_new_sparks_bottom_00.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 162817
+ max_particles = 6
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 40.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 0.874510, 0.721569
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 25.000000
+ vec_0000 = -6.283186, 0.000017, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -8.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.600000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 0.843137, 0.639216
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 3.141593, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.500000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 6.000000, 0.000000
+ v1 = 0.000000, 12.000000, 0.000000
+ v2 = 0.000000, 4.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\shatterpoint\puffcolorsplashflicker
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/expl_sparks_grenade_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/expl_sparks_grenade_00.pe
new file mode 100644
index 00000000..1c1e543d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/expl_sparks_grenade_00.pe
@@ -0,0 +1,112 @@
+[_effect]
+ action_count = 7
+ flags = 311297
+ max_particles = 18
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 730.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.200000
+ flt_0001 = 12.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.231373, 0.058824, 0.011765
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 10.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ vec_0001 = 0.500000, 0.500000, 0.500000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -7.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 2.000000, 2.000000, 2.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.150000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.200000, 0.050000
+ v1 = 0.100000, 0.200000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 22.000000, 0.000000
+ v1 = 44.000000, 15.000000, 0.000000
+ v2 = 120.000000, 12.000000, 0.000000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\shatterpoint\pfx_spark_01
+
+[timelimit]
+ value = 0.120000
+
+[velocity_scale]
+ value = 0.000000, 0.050000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/glass_burst.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/glass_burst.pe
new file mode 100644
index 00000000..229390e6
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/glass_burst.pe
@@ -0,0 +1,105 @@
+[_effect]
+ action_count = 6
+ flags = 17409
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.300000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 62.831852, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.650980, 0.650980, 0.650980
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.250000, 0.700000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.200000, 0.200000, 0.200000
+ v1 = 0.550000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 22.000000, 12.000000, 22.000000
+ v1 = -22.000000, -4.000000, -22.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 3.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\shatterpoint\pfx_glass_shards_blend.2048
+
+[timelimit]
+ value = 5.300000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/glass_burst_2.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/glass_burst_2.pe
new file mode 100644
index 00000000..a62bf465
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/glass_burst_2.pe
@@ -0,0 +1,128 @@
+[_effect]
+ action_count = 8
+ flags = 17409
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.300000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 62.831852, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 1.000000
+ flt_0002 = 10.000000
+ int_0000 = 4
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0006]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 25.000000
+ flt_0001 = 1.000000
+ flt_0002 = 1.000000
+ vec_0000 = 3.000000, 1.000000, 3.000000
+ vec_0001 = 2.000000, 1.000000, 2.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.984314, 0.984314, 0.984314
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.250000, 0.400000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.200000, 0.200000, 0.200000
+ v1 = 0.550000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 18.000000, 14.000000, 18.000000
+ v1 = -18.000000, -8.000000, -18.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 3.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\shatterpoint\pfx_glass_shards2.512, semitone\anomalies\shatterpoint\pfx_glass_shards2.2048
+
+[timelimit]
+ value = 5.300000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/glass_final_blow.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/glass_final_blow.pe
new file mode 100644
index 00000000..07c2b718
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/glass_final_blow.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 23553
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.080000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -6.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.698039, 0.698039, 0.698039
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.400000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.040000, 0.000000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 8.000000, 35.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\shatterpoint\pfx_glass_shards_blend.2048
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/glass_final_blow_1.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/glass_final_blow_1.pe
new file mode 100644
index 00000000..be54e0f2
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/glass_final_blow_1.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 23553
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.080000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -6.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.698039, 0.698039, 0.698039
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.400000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.040000, 0.000000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 8.000000, 122.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\shatterpoint\pfx_glass_shards2.1024
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/glass_final_blow_2.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/glass_final_blow_2.pe
new file mode 100644
index 00000000..7ebb7421
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/glass_final_blow_2.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 23553
+ max_particles = 45
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.080000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -6.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.937255, 0.937255, 0.937255
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.400000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.040000, 0.000000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 4.000000, 0.000000
+ v1 = 8.000000, 122.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\shatterpoint\pfx_glass_shards_blend.2048
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/glass_final_blow_smol_shards.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/glass_final_blow_smol_shards.pe
new file mode 100644
index 00000000..081a8594
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/glass_final_blow_smol_shards.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 19457
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.080000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -6.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.800000, 0.800000, 0.800000
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.400000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.040000, 0.000000
+ v1 = 0.550000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 8.000000, 35.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\shatterpoint\broken_glass
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/gravi_wave_distort_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/gravi_wave_distort_00.pe
new file mode 100644
index 00000000..52423709
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/gravi_wave_distort_00.pe
@@ -0,0 +1,116 @@
+[_effect]
+ action_count = 8
+ flags = 22529
+ max_particles = 40
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.400000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.100000
+ flt_0001 = 500.000000
+ flt_0002 = 999999998050644.787200
+ vec_0000 = 0.000000, 1.500000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 40.000000
+ flt_0001 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0006]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 60.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0006_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0006_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 4.000000, -15.000000
+ v2 = 8.000000, 12.000000, 0.000000
+
+[domain_action_0006_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -6.806784, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0003]
+ type = 1
+ v0 = 2.000000, 2.000000, 2.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\spatial_bubble\pfx_dist2inv
+
+[timelimit]
+ value = 5.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/gravi_zaxvat_otbrosy_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/gravi_zaxvat_otbrosy_00.pe
new file mode 100644
index 00000000..49194179
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/gravi_zaxvat_otbrosy_00.pe
@@ -0,0 +1,133 @@
+[_effect]
+ action_count = 8
+ flags = 576513
+ max_particles = 45
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.101961, 0.101961, 0.101961
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -12.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 1.000000
+ flt_0002 = 5.000000
+ int_0000 = 2
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 2
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.196078, 0.196078, 0.196078
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 1.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.020000, 0.020000, 0.020000
+ v1 = 0.010000, 0.010000, 0.010000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 10.000000, 120.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 4
+ v0 = 6.000000, 0.000000, 6.000000
+ v1 = -6.000000, -6.000000, -6.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\shatterpoint\bitsleaves01anim_d
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/gravi_zaxvat_otbrosy_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/gravi_zaxvat_otbrosy_01.pe
new file mode 100644
index 00000000..fbf388f2
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/gravi_zaxvat_otbrosy_01.pe
@@ -0,0 +1,141 @@
+[_effect]
+ action_count = 9
+ flags = 576513
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.101961, 0.101961, 0.101961
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 14.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -12.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 1.000000
+ flt_0002 = 5.000000
+ int_0000 = 2
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 2
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[action_0008]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 2.000000, 2.000000, 0.001000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.196078, 0.196078, 0.196078
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 1.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.020000, 0.020000, 0.020000
+ v1 = 0.010000, 0.010000, 0.010000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 10.000000, 120.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 4
+ v0 = 6.000000, 0.000000, 6.000000
+ v1 = -6.000000, -6.000000, -6.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\shatterpoint\bitsleaves01anim_d
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/ground_spread_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/ground_spread_02.pe
new file mode 100644
index 00000000..818c5d58
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/ground_spread_02.pe
@@ -0,0 +1,132 @@
+[_effect]
+ action_count = 9
+ flags = 21505
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 25.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 1.000000
+ flt_0001 = 0.030000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.325490, 0.325490, 0.325490
+ version = 1
+
+[action_0003]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 4.000000, 4.000000, 0.001000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 1.000000, 0.000000, 1.000000
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.000000
+ vec_0000 = 0.000000, 0.000017, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.211765, 0.211765, 0.211765
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 32.000000, 64.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\shatterpoint\cumulus_02
+
+[timelimit]
+ value = 0.300000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/heat_sparks_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/heat_sparks_00.pe
new file mode 100644
index 00000000..ae6ee5cd
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/heat_sparks_00.pe
@@ -0,0 +1,116 @@
+[_effect]
+ action_count = 7
+ flags = 295937
+ max_particles = 22
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 37.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 0.400000
+ vec_0001 = 0.100000, 0.100000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -7.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 1.000000, 0.000000, 1.000000
+ v1 = -1.000000, 0.000000, -1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.030000, 0.030000, 1.000000
+ v1 = 0.010000, 0.010000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 7.000000, 10.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 93.000000, 146.000000
+ speed = 30.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\shatterpoint\pfx_glass_shards_blend.2048
+
+[velocity_scale]
+ value = 0.000000, 0.020000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/shards_vacuum.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/shards_vacuum.pe
new file mode 100644
index 00000000..04618439
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/shards_vacuum.pe
@@ -0,0 +1,174 @@
+[_effect]
+ action_count = 12
+ flags = 52225
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 10.000000
+ flt_0001 = 20.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 1.000000, 4.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 7.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 13.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.020000
+ flt_0001 = 150.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 1.500000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 32.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0008]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0009]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 6.000000
+ flt_0001 = 3.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 0
+ v0 = 0.768628, 0.768628, 0.768628
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0007_0001]
+ type = 4
+ v0 = 8.000000, 8.000000, 8.000000
+ v1 = -8.000000, -2.000000, -8.000000
+ v2 = 5.000000, 6.000000, 0.000000
+
+[domain_action_0007_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.250000, 0.250000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0004]
+ type = 6
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 2.900000, 6.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\shatterpoint\pfx_glass_shards_blend.2048
+
+[timelimit]
+ value = 3.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/shards_vacuum_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/shards_vacuum_00.pe
new file mode 100644
index 00000000..890dfc9a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/shards_vacuum_00.pe
@@ -0,0 +1,174 @@
+[_effect]
+ action_count = 12
+ flags = 52225
+ max_particles = 155
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 10.000000
+ flt_0001 = 20.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 1.000000, 4.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 7.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 13.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.020000
+ flt_0001 = 150.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 1.500000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 120.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0008]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0009]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 6.000000
+ flt_0001 = 3.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 0
+ v0 = 0.768628, 0.768628, 0.768628
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0007_0001]
+ type = 4
+ v0 = 8.000000, 8.000000, 8.000000
+ v1 = -8.000000, -4.000000, -8.000000
+ v2 = 5.000000, 6.000000, 0.000000
+
+[domain_action_0007_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.250000, 0.250000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0004]
+ type = 6
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 2.900000, 6.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\shatterpoint\pfx_glass_shards2.1024
+
+[timelimit]
+ value = 3.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/shards_vacuum_ball.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/shards_vacuum_ball.pe
new file mode 100644
index 00000000..102ec129
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/shards_vacuum_ball.pe
@@ -0,0 +1,174 @@
+[_effect]
+ action_count = 12
+ flags = 52225
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 10.000000
+ flt_0001 = 20.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 1.000000, 4.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 7.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 13.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.040000
+ flt_0001 = 120.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 1.500000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 120.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0008]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0009]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 6.000000
+ flt_0001 = 3.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 0
+ v0 = 0.768628, 0.768628, 0.768628
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0007_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.400000, -8.000000
+ v2 = 5.000000, 6.000000, 0.000000
+
+[domain_action_0007_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0003]
+ type = 1
+ v0 = 0.100000, 1.000000, 0.100000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0004]
+ type = 6
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 2.900000, 6.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\shatterpoint\pfx_glass_shards2.1024
+
+[timelimit]
+ value = 3.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/shards_vacuum_ball_white.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/shards_vacuum_ball_white.pe
new file mode 100644
index 00000000..d1dcc1a6
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/shards_vacuum_ball_white.pe
@@ -0,0 +1,174 @@
+[_effect]
+ action_count = 12
+ flags = 52225
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 10.000000
+ flt_0001 = 20.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 1.000000, 4.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 7.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 13.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.040000
+ flt_0001 = 120.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 1.500000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 120.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0008]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0009]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 6.000000
+ flt_0001 = 3.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 0
+ v0 = 0.768628, 0.768628, 0.768628
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0007_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.400000, -8.000000
+ v2 = 5.000000, 6.000000, 0.000000
+
+[domain_action_0007_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0003]
+ type = 1
+ v0 = 0.100000, 1.000000, 0.100000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0004]
+ type = 6
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 2.900000, 6.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\shatterpoint\pfx_glass_shards2.512
+
+[timelimit]
+ value = 3.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/zone_graviti_mine_idle_leave,_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/zone_graviti_mine_idle_leave,_00.pe
new file mode 100644
index 00000000..56245851
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/blowout/zone_graviti_mine_idle_leave,_00.pe
@@ -0,0 +1,129 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.494118, 0.486275, 0.482353
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.015000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 8.000000, 8.000000, 0.001000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.494118, 0.486275, 0.482353
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 0.000000, 8.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 5.000000, 5.000000, 5.000000
+ v1 = 9.000000, 9.000000, 9.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 30.000000, 90.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\shatterpoint\cumulus_02
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/gravi_we_rocks_dist_child_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/gravi_we_rocks_dist_child_00.pe
new file mode 100644
index 00000000..15ad5f8f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/gravi_we_rocks_dist_child_00.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 0
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.500000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\shatterpoint\distort_anomaly_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/glass_shards.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/glass_shards.pe
new file mode 100644
index 00000000..8feed8a5
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/glass_shards.pe
@@ -0,0 +1,135 @@
+[_effect]
+ action_count = 9
+ flags = 7169
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.086275, 0.098039, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.050000
+ flt_0001 = 1.300000
+ flt_0002 = 100.000000
+ int_0000 = 2
+ vec_0000 = -0.700000, -1.000000, 10.700000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 0.200000, 0.200000, 0.200000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.870588, 0.870588, 0.870588
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.300000, 0.300000, 0.300000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 20.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 64.000000, 64.000000
+ speed = 18.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\shatterpoint\pfx_glass_shards_blend.2048
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/glass_shards_2.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/glass_shards_2.pe
new file mode 100644
index 00000000..cae8265b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/glass_shards_2.pe
@@ -0,0 +1,135 @@
+[_effect]
+ action_count = 9
+ flags = 7169
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.086275, 0.098039, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.050000
+ flt_0001 = 1.300000
+ flt_0002 = 100.000000
+ int_0000 = 2
+ vec_0000 = -0.700000, -1.000000, 10.700000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 0.200000, 0.200000, 0.200000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.400000, 0.400000, 0.400000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 20.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 64.000000, 64.000000
+ speed = 18.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\shatterpoint\pfx_glass_shards2.1024
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/glass_shards_2_small.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/glass_shards_2_small.pe
new file mode 100644
index 00000000..e74f16ae
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/glass_shards_2_small.pe
@@ -0,0 +1,135 @@
+[_effect]
+ action_count = 9
+ flags = 7169
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.086275, 0.098039, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.050000
+ flt_0001 = 1.300000
+ flt_0002 = 100.000000
+ int_0000 = 2
+ vec_0000 = -0.700000, -1.000000, 10.700000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 0.200000, 0.200000, 0.200000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.150000, 0.150000, 0.150000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 20.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 64.000000, 64.000000
+ speed = 18.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\shatterpoint\pfx_glass_shards2.1024
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/glass_shards_small.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/glass_shards_small.pe
new file mode 100644
index 00000000..e27a3165
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/glass_shards_small.pe
@@ -0,0 +1,135 @@
+[_effect]
+ action_count = 9
+ flags = 7169
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.086275, 0.098039, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.050000
+ flt_0001 = 1.300000
+ flt_0002 = 100.000000
+ int_0000 = 2
+ vec_0000 = -0.700000, -1.000000, 10.700000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 0.200000, 0.200000, 0.200000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.870588, 0.870588, 0.870588
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 20.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 64.000000, 64.000000
+ speed = 18.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\shatterpoint\pfx_glass_shards_blend.2048
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/glass_shards_test.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/glass_shards_test.pe
new file mode 100644
index 00000000..4a31b3f8
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/glass_shards_test.pe
@@ -0,0 +1,135 @@
+[_effect]
+ action_count = 9
+ flags = 7169
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.086275, 0.098039, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.050000
+ flt_0001 = 1.300000
+ flt_0002 = 100.000000
+ int_0000 = 2
+ vec_0000 = -0.700000, -1.000000, 10.700000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 0.200000, 0.200000, 0.200000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.654902, 0.654902, 0.654902
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.400000, 0.400000, 0.400000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 20.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 64.000000, 64.000000
+ speed = 18.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\shatterpoint\pfx_glass_shards1.2048, semitone\anomalies\shatterpoint\pfx_glass_shards2.2048
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/smol_shards.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/smol_shards.pe
new file mode 100644
index 00000000..3fb415d7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/smol_shards.pe
@@ -0,0 +1,135 @@
+[_effect]
+ action_count = 9
+ flags = 3073
+ max_particles = 200
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.086275, 0.098039, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.200000
+ flt_0001 = 1.000000
+ flt_0002 = 100.000000
+ int_0000 = 1
+ vec_0000 = -0.700000, -1.000000, 10.700000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 0.200000, 0.200000, 0.200000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.980392, 0.980392, 0.980392
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 3.000000, 4.000000, 3.000000
+ v1 = -3.000000, 0.000000, -3.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 2.000000, 4.000000, 2.000000
+ v1 = -2.000000, -2.000000, -2.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 14.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\shatterpoint\broken_glass
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/triangles_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/triangles_00.pe
new file mode 100644
index 00000000..cf4dc0ae
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/idle/triangles_00.pe
@@ -0,0 +1,102 @@
+[_effect]
+ action_count = 6
+ flags = 7169
+ max_particles = 32
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.400000
+ vec_0001 = 7.000000, 7.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.839473, 2.678945
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.200000, 0.200000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\shatterpoint\triangles
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/zone_graviti_mine_idle_leaves_,_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/zone_graviti_mine_idle_leaves_,_01.pe
new file mode 100644
index 00000000..21ca91c2
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/effects/zone_graviti_mine_idle_leaves_,_01.pe
@@ -0,0 +1,126 @@
+[_effect]
+ action_count = 8
+ flags = 3073
+ max_particles = 18
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.200000, 0.176471, 0.164706
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.012000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 8.000000, 8.000000, 0.001000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.243137, 0.211765, 0.184314
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.250000, 0.250000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 64.000000, 64.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\shatterpoint\puff_00
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/shatterpoint_blowout.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/shatterpoint_blowout.pg
new file mode 100644
index 00000000..13ce25f3
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/shatterpoint_blowout.pg
@@ -0,0 +1,177 @@
+[_group]
+ effects_count = 19
+ flags = 0
+ timelimit = 20.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\shatterpoint\effects\blowout\glass_burst
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\shatterpoint\effects\gravi_we_rocks_dist_child_00
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\shatterpoint\effects\blowout\glass_burst_2
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\shatterpoint\effects\blowout\shards_vacuum
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 5.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\shatterpoint\effects\blowout\shards_vacuum_00
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\shatterpoint\effects\blowout\dust
+ time0 = 5.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\shatterpoint\effects\blowout\gravi_zaxvat_otbrosy_01
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\shatterpoint\effects\blowout\glass_final_blow
+ time0 = 11.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\shatterpoint\effects\blowout\gravi_zaxvat_otbrosy_01
+ flags = 38
+ on_birth_child = semitone\anomalies\shatterpoint\effects\blowout\dust
+ on_death_child =
+ on_play_child = semitone\anomalies\shatterpoint\effects\blowout\glass_final_blow_smol_shards
+ time0 = 11.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\shatterpoint\effects\blowout\gravi_zaxvat_otbrosy_01
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\shatterpoint\effects\blowout\glass_final_blow_1
+ time0 = 11.000000
+ time1 = 0.000000
+
+[effect_0007]
+ effect_name = semitone\anomalies\shatterpoint\effects\blowout\gravi_wave_distort_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 5.000000
+ time1 = 10.000000
+
+[effect_0008]
+ effect_name = semitone\anomalies\shatterpoint\effects\blowout\zone_graviti_mine_idle_leave, _00
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\shatterpoint\effects\blowout\expl_new_sparks_aftermath_00
+ time0 = 11.100000
+ time1 = 0.000000
+
+[effect_0009]
+ effect_name = semitone\anomalies\shatterpoint\effects\blowout\gravi_zaxvat_otbrosy_01
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\shatterpoint\effects\blowout\dust
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0010]
+ effect_name = semitone\anomalies\shatterpoint\effects\blowout\gravi_zaxvat_otbrosy_00
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\shatterpoint\effects\blowout\dust
+ time0 = 11.000000
+ time1 = 0.000000
+
+[effect_0011]
+ effect_name = semitone\anomalies\shatterpoint\effects\blowout\buble_distort_0222_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 11.000000
+ time1 = 0.000000
+
+[effect_0012]
+ effect_name = semitone\anomalies\shatterpoint\effects\blowout\gravi_zaxvat_otbrosy_01
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\shatterpoint\effects\blowout\glass_final_blow_2
+ time0 = 11.000000
+ time1 = 0.000000
+
+[effect_0013]
+ effect_name = semitone\anomalies\shatterpoint\effects\blowout\shards_vacuum_ball
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\shatterpoint\effects\blowout\expl_fallout4_debris_20
+ time0 = 7.000000
+ time1 = 11.200000
+
+[effect_0014]
+ effect_name = semitone\anomalies\shatterpoint\effects\blowout\expl_sparks_grenade_00
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\shatterpoint\effects\blowout\expl_car_smoke_big_smoke_00
+ time0 = 11.000000
+ time1 = 0.000000
+
+[effect_0015]
+ effect_name = semitone\anomalies\shatterpoint\effects\blowout\shards_vacuum_ball_white
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\shatterpoint\effects\blowout\core_spin_smoke
+ time0 = 7.000000
+ time1 = 11.200000
+
+[effect_0016]
+ effect_name = semitone\anomalies\shatterpoint\effects\blowout\ground_spread_02
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 11.000000
+ time1 = 0.000000
+
+[effect_0017]
+ effect_name = semitone\anomalies\shatterpoint\effects\blowout\anomaly_dao_sphere_blast_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 10.900000
+ time1 = 0.000000
+
+[effect_0018]
+ effect_name = semitone\anomalies\shatterpoint\effects\blowout\anomaly_dao_wave_blast_dist_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 10.900000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/shatterpoint_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/shatterpoint_idle.pg
new file mode 100644
index 00000000..6115e8d0
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/shatterpoint_idle.pg
@@ -0,0 +1,69 @@
+[_group]
+ effects_count = 7
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\shatterpoint\effects\idle\glass_shards_test
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\shatterpoint\effects\idle\glass_shards
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\shatterpoint\effects\idle\smol_shards
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\shatterpoint\effects\idle\triangles_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\shatterpoint\effects\idle\glass_shards_2
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\shatterpoint\effects\idle\glass_shards_2_small
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\shatterpoint\effects\idle\glass_shards_small
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/shatterpoint_shield.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/shatterpoint_shield.pg
new file mode 100644
index 00000000..2e6e35ef
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/shatterpoint/shatterpoint_shield.pg
@@ -0,0 +1,6 @@
+[_group]
+ effects_count = 0
+ flags = 0
+ timelimit = 1.000000
+ version = 3
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_blast smoke.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_blast smoke.pe
new file mode 100644
index 00000000..2bb397c5
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_blast smoke.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 17409
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.600000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 6.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.494118, 0.521569, 0.207843
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 3.000000, 7.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.500000, 0.500000, 0.001000
+ v1 = 0.400000, 0.400000, 0.001000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 1.000000, 50.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\sloth\smokefillvapor01atlassoft_d_small_a
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_blast_thingmajiggs.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_blast_thingmajiggs.pe
new file mode 100644
index 00000000..8f7bdef9
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_blast_thingmajiggs.pe
@@ -0,0 +1,120 @@
+[_effect]
+ action_count = 8
+ flags = 14337
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.500000
+ version = 1
+
+[action_0001]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 22.000000
+ flt_0001 = 2.000000
+ flt_0002 = 16.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 0.000000, -1.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 800.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 0
+ version = 1
+
+[action_0006]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 0.200000, 0.200000, 0.200000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 0.478431, 0.580392, 0.329412
+ v1 = 0.172549, 0.207843, 0.290196
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 9
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 6.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 6
+ v0 = 2.000000, 0.000000, 2.000000
+ v1 = -2.000000, 0.000000, -2.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\sloth\light
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_bottom_glow.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_bottom_glow.pe
new file mode 100644
index 00000000..4f97caf2
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_bottom_glow.pe
@@ -0,0 +1,81 @@
+[_effect]
+ action_count = 4
+ flags = 266241
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.047059, 0.027451, 0.243137
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 1
+ v0 = 0.129412, 0.580392, 0.082353
+ v1 = 0.427451, 0.470588, 0.780392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.150000, 0.121000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = -3.141593, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.500000, 1.500000, 1.500000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\sloth\glow_fire1
+
+[velocity_scale]
+ value = 0.000000, 0.020000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_glow_shader.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_glow_shader.pe
new file mode 100644
index 00000000..2c8f0657
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_glow_shader.pe
@@ -0,0 +1,84 @@
+[_effect]
+ action_count = 4
+ flags = 282625
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.917647, 0.917647, 0.917647
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.150000, 0.121000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = -3.141593, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 2.000000, 5.000000, 0.001000
+ v1 = 1.500000, 4.000000, 1.500000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\sloth\distort_anomaly_01
+
+[timelimit]
+ value = 1.000000
+
+[velocity_scale]
+ value = 0.000000, 0.020000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_gravi_shader.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_gravi_shader.pe
new file mode 100644
index 00000000..21b66b60
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_gravi_shader.pe
@@ -0,0 +1,119 @@
+[_effect]
+ action_count = 8
+ flags = 1
+ max_particles = 8
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 3.000000
+ flt_0001 = 3.000000
+ flt_0002 = 999999998050644.787200
+ vec_0000 = -5.000000, 1.000000, 0.000000
+ vec_0001 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 2.000000, 3.700000, 0.001000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 2.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.300000, 0.300000, 0.000000
+ v1 = 0.500000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 6.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\sloth\distort_anomaly_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_idle_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_idle_01.pe
new file mode 100644
index 00000000..9450f676
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_idle_01.pe
@@ -0,0 +1,81 @@
+[_effect]
+ action_count = 4
+ flags = 266241
+ max_particles = 14
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.300000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 17.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 1
+ v0 = 0.062745, 0.219608, 0.101961
+ v1 = 0.298039, 0.411765, 0.333333
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = -3.141593, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 3.500000, 3.500000, 3.500000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\sloth\glow_fire1
+
+[velocity_scale]
+ value = 0.000000, 0.020000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_idle_thingmajigg.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_idle_thingmajigg.pe
new file mode 100644
index 00000000..41e5a822
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_idle_thingmajigg.pe
@@ -0,0 +1,127 @@
+[_effect]
+ action_count = 8
+ flags = 15361
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.500000
+ version = 1
+
+[action_0001]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.403922, 0.949020, 0.521569
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 0.500000
+ flt_0002 = 10.000000
+ int_0000 = 1
+ vec_0000 = 0.150000, 2.500000, -0.150000
+ version = 1
+
+[action_0004]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 800.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0005]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 0.200000, 0.200000, 0.200000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0004_0000]
+ type = 1
+ v0 = 0.490196, 0.549020, 0.250980
+ v1 = 0.172549, 0.207843, 0.290196
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0001]
+ type = 0
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0004_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0004_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, -0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0004]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 8.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 8
+ reserved = 64.000000, 64.000000
+ speed = 20.000000
+ tex_size = 0.250000, 0.500000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\sloth\pfx_sparks
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_idle_thingmajigg_glow.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_idle_thingmajigg_glow.pe
new file mode 100644
index 00000000..9a5d0046
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_idle_thingmajigg_glow.pe
@@ -0,0 +1,115 @@
+[_effect]
+ action_count = 7
+ flags = 22529
+ max_particles = 20
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.500000
+ version = 1
+
+[action_0001]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.317647, 0.431373, 0.341176
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 0.500000
+ flt_0002 = 10.000000
+ int_0000 = 1
+ vec_0000 = 0.150000, 2.500000, -0.150000
+ version = 1
+
+[action_0004]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 800.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0005]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0004_0000]
+ type = 0
+ v0 = 0.086275, 0.168627, 0.109804
+ v1 = 0.219608, 0.290196, 0.172549
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0001]
+ type = 0
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0004_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0004_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0004]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 8.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\sloth\glow_fire1
+
+[timelimit]
+ value = 5.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_idle_thingmajigg_shader.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_idle_thingmajigg_shader.pe
new file mode 100644
index 00000000..b9ec3461
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_idle_thingmajigg_shader.pe
@@ -0,0 +1,112 @@
+[_effect]
+ action_count = 7
+ flags = 6145
+ max_particles = 20
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 0.500000
+ flt_0002 = 10.000000
+ int_0000 = 1
+ vec_0000 = 0.150000, 2.500000, -0.150000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.219608, 0.290196, 0.172549
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 0
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 8.000000, 0.000000
+ v2 = 10.000000, 22.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\sloth\distort_anomaly_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_particle1.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_particle1.pe
new file mode 100644
index 00000000..83b2d360
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_particle1.pe
@@ -0,0 +1,140 @@
+[_effect]
+ action_count = 9
+ flags = 7169
+ max_particles = 500
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.750000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 4.000000
+ flt_0001 = 2.000000
+ flt_0002 = 200.000000
+ int_0000 = 1
+ vec_0000 = -0.400000, -2.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0008]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[domain_action_0004_0000]
+ type = 0
+ v0 = 0.392157, 0.486275, 0.172549
+ v1 = 1.000000, 0.729412, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0001]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0004_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0004_0003]
+ type = 0
+ v0 = 0.060000, 0.060000, 0.510000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0004_0004]
+ type = 5
+ v0 = 0.000000, 9.000000, 0.000000
+ v1 = 0.000000, 30.000000, 0.000000
+ v2 = 3.000000, 17.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 3
+ v0 = 0.000000, -0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0008_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 21.000000, 32.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\sloth\puffcolorsplashflicker
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_sparks.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_sparks.pe
new file mode 100644
index 00000000..8aa4f6bb
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/effects/green_dragon_sparks.pe
@@ -0,0 +1,115 @@
+[_effect]
+ action_count = 7
+ flags = 37889
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.250000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 8.000000, 8.000000, 8.000000
+ vec_0001 = 0.100000, 0.100000, 0.100000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = 33.812028, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 4.000000
+ flt_0002 = 12.000000
+ int_0000 = 2
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.254902, 0.756863, 0.580392
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.250000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 2.500000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.200000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 64.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\sloth\bitsglowybits01atlas
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/sloth_blowout.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/sloth_blowout.pg
new file mode 100644
index 00000000..d69b7772
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/sloth_blowout.pg
@@ -0,0 +1,15 @@
+[_group]
+ effects_count = 1
+ flags = 0
+ timelimit = 3.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\sloth\effects\green_dragon_blast_thingmajiggs
+ flags = 22
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\sloth\effects\green_dragon_sparks
+ time0 = 0.000000
+ time1 = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/sloth_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/sloth_idle.pg
new file mode 100644
index 00000000..15f493cd
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sloth/sloth_idle.pg
@@ -0,0 +1,60 @@
+[_group]
+ effects_count = 6
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\sloth\effects\green_dragon_idle_thingmajigg
+ flags = 20
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\sloth\effects\green_dragon_idle_thingmajigg_glow
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\sloth\effects\green_dragon_bottom_glow
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\sloth\effects\green_dragon_idle_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\sloth\effects\green_dragon_gravi_shader
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\sloth\effects\green_dragon_particle1
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaliy_dao_ghost_particle_puff_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaliy_dao_ghost_particle_puff_00.pe
new file mode 100644
index 00000000..e8e3c53f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaliy_dao_ghost_particle_puff_00.pe
@@ -0,0 +1,106 @@
+[_effect]
+ action_count = 7
+ flags = 20481
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.100000, 0.100000, 0.001000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.501961, 0.815686, 0.862745
+ v1 = 0.372549, 0.447059, 0.309804
+ v2 = 0.345098, 0.274510, 0.231373
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.001000
+ v1 = 0.200000, 0.200000, 0.001000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\ghost\glow_white
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_color.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_color.pe
new file mode 100644
index 00000000..2dccb76f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_color.pe
@@ -0,0 +1,97 @@
+[_effect]
+ action_count = 6
+ flags = 2049
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.300000
+ flt_0001 = 1.000000
+ flt_0002 = 0.050000
+ flt_0003 = 0.950000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 2
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.262745, 0.262745, 0.262745
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 12.566371, 12.566371, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.427451, 0.533333, 0.627451
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 6.000000, 6.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\pfx_teleport
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_00.pe
new file mode 100644
index 00000000..8859f2b3
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_00.pe
@@ -0,0 +1,101 @@
+[_effect]
+ action_count = 6
+ flags = 15361
+ max_particles = 125
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 32.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.500000
+ flt_0001 = 21.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.254902, 0.250980, 0.250980
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 11.000000, 11.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.513726, 0.513726, 0.513726
+ v1 = 0.380392, 0.380392, 0.380392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 6.000000, 7.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.700000, 0.700000, 0.700000
+ v1 = 0.800000, 0.800000, 0.800000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -4.000000, -4.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 6.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\gauss2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_01.pe
new file mode 100644
index 00000000..68aa4b61
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_01.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 7169
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 3000.000000
+ flt_0002 = 8.000000
+ vec_0000 = 0.000000, 8.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = damping
+ action_type = 4
+ flags = 1
+ flt_0000 = 80.000000
+ flt_0001 = 1.000000
+ vec_0000 = -17.000000, -17.000000, -17.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.700000
+ flt_0001 = 21.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 4.000000, 4.000000, 0.001000
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 1.000000, 2.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 2.000000, 2.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 20.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\electricblast1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_02.pe
new file mode 100644
index 00000000..479bbfe0
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_02.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 7169
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 32.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 3000.000000
+ flt_0002 = 8.000000
+ vec_0000 = 0.000000, 8.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = damping
+ action_type = 4
+ flags = 1
+ flt_0000 = 80.000000
+ flt_0001 = 1.000000
+ vec_0000 = -17.000000, -17.000000, -17.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.400000
+ flt_0001 = 21.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 6.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 2.000000, 3.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.300000, 0.330000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 32
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\electricblast2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_04.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_04.pe
new file mode 100644
index 00000000..faad1bce
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_04.pe
@@ -0,0 +1,101 @@
+[_effect]
+ action_count = 6
+ flags = 7169
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 21.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 2.500000, 2.500000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 4.000000, 12.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\electricblast3
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_06.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_06.pe
new file mode 100644
index 00000000..718cab17
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_06.pe
@@ -0,0 +1,101 @@
+[_effect]
+ action_count = 6
+ flags = 7169
+ max_particles = 20
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 21.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 3.000000, 3.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 4.000000, 3.009000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.600000, 0.600000, 0.600000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 15.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\gauss1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_core_steam.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_core_steam.pe
new file mode 100644
index 00000000..f5294cc2
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_core_steam.pe
@@ -0,0 +1,101 @@
+[_effect]
+ action_count = 6
+ flags = 5121
+ max_particles = 125
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.020000
+ flt_0002 = 0.000000
+ flt_0003 = 48.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.300000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.500000, 2.500000, 0.000000
+ vec_0001 = 10.000000, 10.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.286275, 0.666667, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 4.000000, 25.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 10.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 16.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\cumulus_02
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_dist.pe
new file mode 100644
index 00000000..8969b2e4
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_dist.pe
@@ -0,0 +1,97 @@
+[_effect]
+ action_count = 6
+ flags = 2049
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.050000
+ flt_0003 = 0.950000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 2
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.262745, 0.262745, 0.262745
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.262745, 0.262745, 0.262745
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 12.566371, 12.566371, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 6.100000, 6.100000, 6.100000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\spatial_bubble\pfx_teleport
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_fuzz.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_fuzz.pe
new file mode 100644
index 00000000..425ff6b2
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_fuzz.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 3073
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.300000
+ flt_0001 = 1.000000
+ flt_0002 = 0.050000
+ flt_0003 = 0.950000
+ vec_0000 = 0.372549, 0.372549, 0.372549
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 2
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.262745, 0.262745, 0.262745
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.001000
+ vec_0000 = 125.663704, 12.566371, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.392157, 0.666667, 0.941177
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = -1.570796, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 9.500000, 9.500000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 45.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\portal_8x8_v1_4096
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_fuzz_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_fuzz_00.pe
new file mode 100644
index 00000000..687cbdaf
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_fuzz_00.pe
@@ -0,0 +1,117 @@
+[_effect]
+ action_count = 7
+ flags = 3073
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 2
+ flt_0000 = 0.070000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.300000
+ flt_0001 = 1.000000
+ flt_0002 = 0.050000
+ flt_0003 = 0.950000
+ vec_0000 = 0.796078, 0.333333, 0.333333
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 2
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.262745, 0.262745, 0.262745
+ version = 1
+
+[action_0004]
+ action_name = randomvelocity
+ action_type = 17
+ bool_0000 = on
+ flags = 0
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 2
+ flt_0000 = 0.100000
+ vec_0000 = 12.566371, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.792157, 0.262745, 0.262745
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 1.570796, 0.000000, 0.000000
+ v1 = -12.566371, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 6.700000, 6.700000, 0.000000
+ v1 = -1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 120.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\portal_8x8_v1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_fuzz_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_fuzz_01.pe
new file mode 100644
index 00000000..2cae26d3
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_fuzz_01.pe
@@ -0,0 +1,117 @@
+[_effect]
+ action_count = 7
+ flags = 3073
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 2
+ flt_0000 = 0.070000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.300000
+ flt_0001 = 1.000000
+ flt_0002 = 0.050000
+ flt_0003 = 0.950000
+ vec_0000 = 0.796078, 0.333333, 0.333333
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 2
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.262745, 0.262745, 0.262745
+ version = 1
+
+[action_0004]
+ action_name = randomvelocity
+ action_type = 17
+ bool_0000 = on
+ flags = 0
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 2
+ flt_0000 = 0.100000
+ vec_0000 = 12.566371, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.792157, 0.262745, 0.262745
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 6.700000, 6.700000, 0.000000
+ v1 = -1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 120.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\portal_8x8_v1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_fuzz_big_left.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_fuzz_big_left.pe
new file mode 100644
index 00000000..4b28d565
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_fuzz_big_left.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 3073
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.300000
+ flt_0001 = 1.000000
+ flt_0002 = 0.050000
+ flt_0003 = 0.950000
+ vec_0000 = 0.372549, 0.372549, 0.372549
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 2
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.262745, 0.262745, 0.262745
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.001000
+ vec_0000 = 125.663704, 12.566371, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.392157, 0.666667, 0.941177
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 1.570796, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 9.500000, 9.500000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 45.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\portal_8x8_v1_4096
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_fuzz_big_up.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_fuzz_big_up.pe
new file mode 100644
index 00000000..3f423e9a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_fuzz_big_up.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 3073
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.300000
+ flt_0001 = 1.000000
+ flt_0002 = 0.050000
+ flt_0003 = 0.950000
+ vec_0000 = 0.372549, 0.372549, 0.372549
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 2
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.262745, 0.262745, 0.262745
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.001000
+ vec_0000 = 125.663704, 12.566371, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.392157, 0.666667, 0.941177
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 9.500000, 9.500000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 45.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\portal_8x8_v1_4096
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_outter_pulse.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_outter_pulse.pe
new file mode 100644
index 00000000..569879a1
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_bubble_sphere_outter_pulse.pe
@@ -0,0 +1,135 @@
+[_effect]
+ action_count = 9
+ flags = 2137089
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ flt_0001 = 3000.000000
+ flt_0002 = 2.600000
+ vec_0000 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = damping
+ action_type = 4
+ flags = 1
+ flt_0000 = 80.000000
+ flt_0001 = 1.000000
+ vec_0000 = -17.000000, -17.000000, -17.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.200000
+ flt_0003 = 0.800000
+ vec_0000 = 0.713726, 0.560784, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 0.000000
+ vec_0001 = 5.000000, 5.000000, 5.000000
+ version = 1
+
+[action_0007]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.380392, 0.380392, 0.380392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 2.000000, 2.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.800000, 0.800000, 0.800000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -4.000000, -4.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 8
+ reserved = 0.000000, 0.000000
+ speed = 3.000000
+ tex_size = 0.250000, 0.500000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\spatial_bubble\pfx_dist_glass
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_electric_smoke_puff.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_electric_smoke_puff.pe
new file mode 100644
index 00000000..fd3e9aa2
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_electric_smoke_puff.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 19457
+ max_particles = 2
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.666667, 0.678431, 0.678431
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 15.000000, 15.000000, 0.100000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.666667, 0.678431, 0.678431
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 4.000000, 25.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -17.435840, -17.435840, -17.435840
+ v1 = 17.435840, 17.435840, 17.435840
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.400000, 0.400000, 0.500000
+ v1 = 2.000000, 2.000000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\spatial_bubble\smoke_burst_02
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_flare1.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_flare1.pe
new file mode 100644
index 00000000..d45b8e17
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_flare1.pe
@@ -0,0 +1,114 @@
+[_effect]
+ action_count = 8
+ flags = 2099201
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.040000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 555.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 5.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 20.000000, 15.000000, 20.000000
+ vec_0001 = 15.000000, 12.000000, 0.001000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 2.000000
+ flt_0002 = 10.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.415686, 0.988235, 0.890196
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.950000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, -0.000000, -0.000000
+ v1 = 0.100000, 0.100000, 29.845130
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 3.000000, 1.000000, 0.050000
+ v1 = 1.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\lensflarered
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_particle_output.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_particle_output.pe
new file mode 100644
index 00000000..aaa00242
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_particle_output.pe
@@ -0,0 +1,136 @@
+[_effect]
+ action_count = 9
+ flags = 38913
+ max_particles = 500
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 16.000000, 16.000000, 16.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -16.000000, -16.000000, -16.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 32.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 360.000000, 0.000000, 30.000000
+ vec_0001 = 720.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 0.717647, 0.929412, 1.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.500000, 4.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.300000, 0.300000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 1.000000, 0.300000, 0.000000
+ v1 = 3.000000, 8.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\fx_moon_full_foggy
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_sphere_graviti_distort.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_sphere_graviti_distort.pe
new file mode 100644
index 00000000..faedcf7a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/anomaly_teleport_sphere_graviti_distort.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.750000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 8.000000, 8.000000, 8.000000
+ vec_0001 = 2.000000, 3.700000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 0
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 2.000000, 2.000000
+ v1 = 0.500000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\spatial_bubble\distort_anomaly_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/gravity_dust_11.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/gravity_dust_11.pe
new file mode 100644
index 00000000..7feaedc5
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/gravity_dust_11.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 7169
+ max_particles = 23
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 12.000000, 12.000000, 12.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 0.643137, 0.643137
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 0.200000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 8.000000, 8.000000, 8.000000
+ v1 = 10.000000, 10.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 8.000000, 0.000000
+ v2 = 12.000000, 24.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 66.000000
+ tex_size = 0.125000, 0.333333
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\graviblast1orangecut
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/impact_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/impact_dist.pe
new file mode 100644
index 00000000..400bbe80
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/impact_dist.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, 0.600000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 2
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 8.000000, 8.000000, 8.000000
+ v1 = 8.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 10.000000, 0.000000
+ v2 = 125.000000, 500.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\spatial_bubble\pfx_dist2inv
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/spatial_bubble_rupture_wave_blast_dist_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/spatial_bubble_rupture_wave_blast_dist_00.pe
new file mode 100644
index 00000000..ec56ae24
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/spatial_bubble_rupture_wave_blast_dist_00.pe
@@ -0,0 +1,86 @@
+[_effect]
+ action_count = 5
+ flags = 2049
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 7.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 7.000000, 7.000000, 7.000000
+ vec_0001 = 10.000000, 10.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -1.570796, -1.570796, -1.570796
+ v1 = 1.570796, 1.570796, 1.570796
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, -3.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\spatial_bubble\pfx_dist3
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/teleport_core_sparks.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/teleport_core_sparks.pe
new file mode 100644
index 00000000..ab61c41d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/teleport_core_sparks.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 3073
+ max_particles = 3
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.100000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 5.000000, 5.000000, 5.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.900000, 1.900000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 24.000000, 41.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.333333
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\graviblast1orangecut
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/teleport_core_unstalble_2.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/teleport_core_unstalble_2.pe
new file mode 100644
index 00000000..8bc8dba9
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/teleport_core_unstalble_2.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 7169
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.300000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 6.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.388235, 0.894118, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 12.000000, 12.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.388235, 0.894118, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 3.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 8.000000, 0.000000
+ v2 = 12.000000, 24.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 5
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\puffcolorsplashflicker
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/teleport_flare_blue_2.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/teleport_flare_blue_2.pe
new file mode 100644
index 00000000..bfc19489
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/teleport_flare_blue_2.pe
@@ -0,0 +1,74 @@
+[_effect]
+ action_count = 3
+ flags = 3073
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 0.200000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 800.000000, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 7.000000, 5.000000, 7.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.500000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\flare_blue_v1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/teleport_leaves_orbit.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/teleport_leaves_orbit.pe
new file mode 100644
index 00000000..127b9e2a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/teleport_leaves_orbit.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.349020, 0.403922, 0.349020
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.337255, 0.392157, 0.329412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 2.000000, 6.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.025000, 0.025000, 0.000000
+ v1 = 0.100000, 0.100000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\spatial_bubble\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/teleport_leaves_orbit_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/teleport_leaves_orbit_00.pe
new file mode 100644
index 00000000..78a29ce1
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/effects/teleport_leaves_orbit_00.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.349020, 0.403922, 0.349020
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.337255, 0.392157, 0.329412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 6.000000, 8.000000, 0.000000
+ v2 = 5.000000, 6.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.150000, 0.150000, 0.150000
+ v1 = 0.200000, 0.200000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 4.000000, 7.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 3.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\spatial_bubble\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/spatial_bubble_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/spatial_bubble_idle.pg
new file mode 100644
index 00000000..0535a428
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble/spatial_bubble_idle.pg
@@ -0,0 +1,231 @@
+[_group]
+ effects_count = 25
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\spatial_bubble\effects\anomaly_teleport_bubble_color
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\spatial_bubble\effects\anomaly_teleport_bubble_sphere_dist
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\spatial_bubble\effects\anomaly_teleport_bubble_sphere_core_steam
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\spatial_bubble\effects\anomaly_teleport_bubble_sphere_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\spatial_bubble\effects\anomaly_teleport_bubble_sphere_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\spatial_bubble\effects\anomaly_teleport_bubble_sphere_02
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\spatial_bubble\effects\anomaly_teleport_bubble_sphere_04
+ flags = 68
+ on_birth_child =
+ on_death_child = semitone\anomalies\spatial_bubble\effects\anomaliy_dao_ghost_particle_puff_00
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0007]
+ effect_name = semitone\anomalies\spatial_bubble\effects\anomaly_teleport_bubble_sphere_06
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0008]
+ effect_name = semitone\anomalies\spatial_bubble\effects\anomaly_teleport_bubble_sphere_outter_pulse
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0009]
+ effect_name = semitone\anomalies\spatial_bubble\effects\anomaly_teleport_particle_output
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0010]
+ effect_name = semitone\anomalies\spatial_bubble\effects\teleport_leaves_orbit
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0011]
+ effect_name = semitone\anomalies\spatial_bubble\effects\teleport_leaves_orbit_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0012]
+ effect_name = semitone\anomalies\spatial_bubble\effects\anomaly_teleport_bubble_sphere_fuzz
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0013]
+ effect_name = semitone\anomalies\spatial_bubble\effects\anomaly_teleport_bubble_sphere_fuzz_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0014]
+ effect_name = semitone\anomalies\spatial_bubble\effects\anomaly_teleport_bubble_sphere_fuzz_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0015]
+ effect_name = semitone\anomalies\spatial_bubble\effects\anomaly_teleport_bubble_sphere_fuzz_big_left
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0016]
+ effect_name = semitone\anomalies\spatial_bubble\effects\anomaly_teleport_bubble_sphere_fuzz_big_up
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0017]
+ effect_name = semitone\anomalies\spatial_bubble\effects\anomaly_teleport_sphere_graviti_distort
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0018]
+ effect_name = semitone\anomalies\spatial_bubble\effects\spatial_bubble_rupture_wave_blast_dist_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0019]
+ effect_name = semitone\anomalies\spatial_bubble\effects\gravity_dust_11
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0020]
+ effect_name = semitone\anomalies\spatial_bubble\effects\teleport_core_unstalble_2
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0021]
+ effect_name = semitone\anomalies\spatial_bubble\effects\teleport_core_sparks
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0022]
+ effect_name = semitone\anomalies\spatial_bubble\effects\anomaly_teleport_flare1
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0023]
+ effect_name = semitone\anomalies\spatial_bubble\effects\teleport_flare_blue_2
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0024]
+ effect_name = semitone\anomalies\spatial_bubble\effects\impact_dist
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_colorrr.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_colorrr.pe
new file mode 100644
index 00000000..9bf37950
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_colorrr.pe
@@ -0,0 +1,97 @@
+[_effect]
+ action_count = 6
+ flags = 2049
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.300000
+ flt_0001 = 1.000000
+ flt_0002 = 0.050000
+ flt_0003 = 0.950000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 2
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.262745, 0.262745, 0.262745
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 12.566371, 12.566371, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.427451, 0.533333, 0.627451
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 4.000000, 4.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\pfx_teleport
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_000.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_000.pe
new file mode 100644
index 00000000..051415a8
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_000.pe
@@ -0,0 +1,101 @@
+[_effect]
+ action_count = 6
+ flags = 15361
+ max_particles = 125
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 32.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.500000
+ flt_0001 = 21.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.254902, 0.250980, 0.250980
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 6.500000, 6.500000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.513726, 0.513726, 0.513726
+ v1 = 0.380392, 0.380392, 0.380392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 6.000000, 7.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.700000, 0.700000, 0.700000
+ v1 = 0.800000, 0.800000, 0.800000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -4.000000, -4.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 6.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\gauss2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_001.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_001.pe
new file mode 100644
index 00000000..92c638f5
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_001.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 7169
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 3000.000000
+ flt_0002 = 8.000000
+ vec_0000 = 0.000000, 8.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = damping
+ action_type = 4
+ flags = 1
+ flt_0000 = 80.000000
+ flt_0001 = 1.000000
+ vec_0000 = -17.000000, -17.000000, -17.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.700000
+ flt_0001 = 21.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.600000, 0.600000, 0.600000
+ vec_0001 = 4.000000, 4.000000, 0.001000
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 1.000000, 2.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 2.000000, 2.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 20.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\electricblast1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_002.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_002.pe
new file mode 100644
index 00000000..1056b964
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_002.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 7169
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 32.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 3000.000000
+ flt_0002 = 8.000000
+ vec_0000 = 0.000000, 8.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = damping
+ action_type = 4
+ flags = 1
+ flt_0000 = 80.000000
+ flt_0001 = 1.000000
+ vec_0000 = -17.000000, -17.000000, -17.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.400000
+ flt_0001 = 21.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 4.000000, 4.000000, 0.001000
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 2.000000, 3.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.300000, 0.330000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 32
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\electricblast2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_004.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_004.pe
new file mode 100644
index 00000000..faad1bce
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_004.pe
@@ -0,0 +1,101 @@
+[_effect]
+ action_count = 6
+ flags = 7169
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 21.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 2.500000, 2.500000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 4.000000, 12.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\electricblast3
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_006.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_006.pe
new file mode 100644
index 00000000..718cab17
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_006.pe
@@ -0,0 +1,101 @@
+[_effect]
+ action_count = 6
+ flags = 7169
+ max_particles = 20
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 21.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 3.000000, 3.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 4.000000, 3.009000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.600000, 0.600000, 0.600000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 15.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\gauss1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_core_steam_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_core_steam_00.pe
new file mode 100644
index 00000000..a3e43dfb
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_core_steam_00.pe
@@ -0,0 +1,101 @@
+[_effect]
+ action_count = 6
+ flags = 5121
+ max_particles = 125
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.020000
+ flt_0002 = 0.000000
+ flt_0003 = 48.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.300000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.286275, 0.666667, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 4.000000, 25.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 6.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 16.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\cumulus_02
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_dist_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_dist_00.pe
new file mode 100644
index 00000000..6286d47d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_dist_00.pe
@@ -0,0 +1,97 @@
+[_effect]
+ action_count = 6
+ flags = 2049
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.050000
+ flt_0003 = 0.950000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 2
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.262745, 0.262745, 0.262745
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.262745, 0.262745, 0.262745
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 12.566371, 12.566371, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 3.700000, 3.700000, 3.700000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\spatial_bubble\pfx_teleport
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_fuzz_000.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_fuzz_000.pe
new file mode 100644
index 00000000..3c76cc17
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_fuzz_000.pe
@@ -0,0 +1,117 @@
+[_effect]
+ action_count = 7
+ flags = 3073
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 2
+ flt_0000 = 0.070000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.300000
+ flt_0001 = 1.000000
+ flt_0002 = 0.050000
+ flt_0003 = 0.950000
+ vec_0000 = 0.796078, 0.333333, 0.333333
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 2
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.262745, 0.262745, 0.262745
+ version = 1
+
+[action_0004]
+ action_name = randomvelocity
+ action_type = 17
+ bool_0000 = on
+ flags = 0
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 2
+ flt_0000 = 0.100000
+ vec_0000 = 12.566371, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.792157, 0.262745, 0.262745
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 1.570796, 0.000000, 0.000000
+ v1 = -12.566371, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 3.700000, 3.700000, 0.000000
+ v1 = -1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 120.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\portal_8x8_v1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_fuzz_001.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_fuzz_001.pe
new file mode 100644
index 00000000..369176a6
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_fuzz_001.pe
@@ -0,0 +1,117 @@
+[_effect]
+ action_count = 7
+ flags = 3073
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 2
+ flt_0000 = 0.070000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.300000
+ flt_0001 = 1.000000
+ flt_0002 = 0.050000
+ flt_0003 = 0.950000
+ vec_0000 = 0.796078, 0.333333, 0.333333
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 2
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.262745, 0.262745, 0.262745
+ version = 1
+
+[action_0004]
+ action_name = randomvelocity
+ action_type = 17
+ bool_0000 = on
+ flags = 0
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 2
+ flt_0000 = 0.100000
+ vec_0000 = 12.566371, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.792157, 0.262745, 0.262745
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 3.700000, 3.700000, 0.000000
+ v1 = -1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 120.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\portal_8x8_v1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_fuzz_big_left.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_fuzz_big_left.pe
new file mode 100644
index 00000000..5cdb2af4
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_fuzz_big_left.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 3073
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.300000
+ flt_0001 = 1.000000
+ flt_0002 = 0.050000
+ flt_0003 = 0.950000
+ vec_0000 = 0.372549, 0.372549, 0.372549
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 2
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.262745, 0.262745, 0.262745
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.001000
+ vec_0000 = 125.663704, 12.566371, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.392157, 0.666667, 0.941177
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 1.570796, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 6.000000, 6.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 45.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\portal_8x8_v1_4096
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_fuzz_big_up.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_fuzz_big_up.pe
new file mode 100644
index 00000000..9dd43289
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_fuzz_big_up.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 3073
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.300000
+ flt_0001 = 1.000000
+ flt_0002 = 0.050000
+ flt_0003 = 0.950000
+ vec_0000 = 0.372549, 0.372549, 0.372549
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 2
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.262745, 0.262745, 0.262745
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.001000
+ vec_0000 = 125.663704, 12.566371, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.392157, 0.666667, 0.941177
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 6.000000, 6.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 45.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\portal_8x8_v1_4096
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_fuzzzzz.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_fuzzzzz.pe
new file mode 100644
index 00000000..97c8f24d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_fuzzzzz.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 3073
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.300000
+ flt_0001 = 1.000000
+ flt_0002 = 0.050000
+ flt_0003 = 0.950000
+ vec_0000 = 0.372549, 0.372549, 0.372549
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 2
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.262745, 0.262745, 0.262745
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.001000
+ vec_0000 = 125.663704, 12.566371, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.392157, 0.666667, 0.941177
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = -1.570796, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 5.500000, 5.500000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 45.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\portal_8x8_v1_4096
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_outter_pulse.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_outter_pulse.pe
new file mode 100644
index 00000000..19cd8eb6
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_bubble_sphere_outter_pulse.pe
@@ -0,0 +1,135 @@
+[_effect]
+ action_count = 9
+ flags = 2137089
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ flt_0001 = 3000.000000
+ flt_0002 = 2.600000
+ vec_0000 = 0.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = damping
+ action_type = 4
+ flags = 1
+ flt_0000 = 80.000000
+ flt_0001 = 1.000000
+ vec_0000 = -20.000000, -20.000000, -20.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.200000
+ flt_0003 = 0.800000
+ vec_0000 = 0.713726, 0.560784, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0007]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.380392, 0.380392, 0.380392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 1.500000, 1.700000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.800000, 0.800000, 0.800000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -4.000000, -4.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 8
+ reserved = 0.000000, 0.000000
+ speed = 3.000000
+ tex_size = 0.250000, 0.500000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\spatial_bubble\pfx_dist_glass
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_electric_smoke_puff_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_electric_smoke_puff_00.pe
new file mode 100644
index 00000000..e269b4a4
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_electric_smoke_puff_00.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 19457
+ max_particles = 2
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.666667, 0.678431, 0.678431
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 15.000000, 15.000000, 0.100000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.666667, 0.678431, 0.678431
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 4.000000, 25.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -17.435840, -17.435840, -17.435840
+ v1 = 17.435840, 17.435840, 17.435840
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.400000, 0.400000, 0.500000
+ v1 = 2.000000, 2.000000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\spatial_bubble\smoke_burst_02
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_flare1_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_flare1_00.pe
new file mode 100644
index 00000000..aad0023a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_flare1_00.pe
@@ -0,0 +1,114 @@
+[_effect]
+ action_count = 8
+ flags = 2099201
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.040000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 555.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 5.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 20.000000, 15.000000, 20.000000
+ vec_0001 = 15.000000, 12.000000, 0.001000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 2.000000
+ flt_0002 = 10.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.415686, 0.988235, 0.890196
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.450000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, -0.000000, -0.000000
+ v1 = 0.100000, 0.100000, 29.845130
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.500000, 0.500000, 0.025000
+ v1 = 1.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\lensflarered
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_particle_output_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_particle_output_00.pe
new file mode 100644
index 00000000..aaa00242
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_particle_output_00.pe
@@ -0,0 +1,136 @@
+[_effect]
+ action_count = 9
+ flags = 38913
+ max_particles = 500
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 16.000000, 16.000000, 16.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -16.000000, -16.000000, -16.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 32.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 360.000000, 0.000000, 30.000000
+ vec_0001 = 720.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 0.717647, 0.929412, 1.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.500000, 4.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.300000, 0.300000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 1.000000, 0.300000, 0.000000
+ v1 = 3.000000, 8.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\fx_moon_full_foggy
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_sphere_graviti_distort_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_sphere_graviti_distort_00.pe
new file mode 100644
index 00000000..d9598804
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/anomaly_teleport_sphere_graviti_distort_00.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.750000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.010000, 0.010000, 0.010000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 8.000000, 8.000000, 8.000000
+ vec_0001 = 2.000000, 3.700000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 0
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 2.000000, 2.000000
+ v1 = 0.500000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\spatial_bubble\distort_anomaly_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/gravity_dust_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/gravity_dust_00.pe
new file mode 100644
index 00000000..8809eca3
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/gravity_dust_00.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 7169
+ max_particles = 23
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 12.000000, 12.000000, 12.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 0.643137, 0.643137
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 0.200000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 4.000000, 4.000000, 4.000000
+ v1 = 5.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 8.000000, 0.000000
+ v2 = 12.000000, 24.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 66.000000
+ tex_size = 0.125000, 0.333333
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\graviblast1orangecut
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/impact_dist_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/impact_dist_00.pe
new file mode 100644
index 00000000..400bbe80
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/impact_dist_00.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, 0.600000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 2
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 8.000000, 8.000000, 8.000000
+ v1 = 8.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 10.000000, 0.000000
+ v2 = 125.000000, 500.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\spatial_bubble\pfx_dist2inv
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/spatial_bubble_rupture_wave_blast_dist_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/spatial_bubble_rupture_wave_blast_dist_01.pe
new file mode 100644
index 00000000..c3696343
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/spatial_bubble_rupture_wave_blast_dist_01.pe
@@ -0,0 +1,86 @@
+[_effect]
+ action_count = 5
+ flags = 2049
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 7.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.500000, 3.500000, 3.500000
+ vec_0001 = 5.000000, 5.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -1.570796, -1.570796, -1.570796
+ v1 = 1.570796, 1.570796, 1.570796
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, -3.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\spatial_bubble\pfx_dist3
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/teleport_core_sparks_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/teleport_core_sparks_00.pe
new file mode 100644
index 00000000..d73c9bbb
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/teleport_core_sparks_00.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 3073
+ max_particles = 3
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.100000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.900000, 1.900000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 24.000000, 41.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.333333
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\graviblast1orangecut
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/teleport_core_unstalble_2_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/teleport_core_unstalble_2_00.pe
new file mode 100644
index 00000000..4b980b02
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/teleport_core_unstalble_2_00.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 7169
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.300000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 6.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.388235, 0.894118, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.388235, 0.894118, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 1.750000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 12.000000, 24.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 5
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\puffcolorsplashflicker
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/teleport_flare_blue_2_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/teleport_flare_blue_2_00.pe
new file mode 100644
index 00000000..aaf22048
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/teleport_flare_blue_2_00.pe
@@ -0,0 +1,74 @@
+[_effect]
+ action_count = 3
+ flags = 3073
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 0.200000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 800.000000, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 3.500000, 2.500000, 3.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.500000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\spatial_bubble\flare_blue_v1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/teleport_leaves_orbit_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/teleport_leaves_orbit_01.pe
new file mode 100644
index 00000000..78a29ce1
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/teleport_leaves_orbit_01.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.349020, 0.403922, 0.349020
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.337255, 0.392157, 0.329412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 6.000000, 8.000000, 0.000000
+ v2 = 5.000000, 6.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.150000, 0.150000, 0.150000
+ v1 = 0.200000, 0.200000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 4.000000, 7.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 3.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\spatial_bubble\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/teleport_leaves_orbit_1.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/teleport_leaves_orbit_1.pe
new file mode 100644
index 00000000..127b9e2a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/spatial_bubble_limansk/teleport_leaves_orbit_1.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.349020, 0.403922, 0.349020
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.337255, 0.392157, 0.329412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 2.000000, 6.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.025000, 0.025000, 0.000000
+ v1 = 0.100000, 0.100000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\spatial_bubble\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaliy_dao_puff.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaliy_dao_puff.pe
new file mode 100644
index 00000000..a1267e7e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaliy_dao_puff.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 21505
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.150000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.150000, 0.150000, 0.001000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.501961, 0.815686, 0.862745
+ v1 = 0.372549, 0.447059, 0.309804
+ v2 = 0.345098, 0.274510, 0.231373
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.200000, 0.001000
+ v1 = 0.300000, 0.300000, 0.001000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\sphere\smoke_tiled_b
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_da_new_sphere_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_da_new_sphere_01.pe
new file mode 100644
index 00000000..95cfc083
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_da_new_sphere_01.pe
@@ -0,0 +1,74 @@
+[_effect]
+ action_count = 3
+ flags = 3073
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 0.200000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 3.000000, 3.000000, 3.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.500000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 1
+ frame_count = 1
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 1.000000, 1.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\sphere\pfx_dist4
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_bubble_pulse.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_bubble_pulse.pe
new file mode 100644
index 00000000..c5419f9a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_bubble_pulse.pe
@@ -0,0 +1,141 @@
+[_effect]
+ action_count = 10
+ flags = 2136065
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ flt_0001 = 3000.000000
+ flt_0002 = 2600.000000
+ vec_0000 = 0.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = damping
+ action_type = 4
+ flags = 1
+ flt_0000 = 80.000000
+ flt_0001 = 2.000000
+ vec_0000 = -23.000000, -23.000000, -23.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 23.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.200000
+ flt_0003 = 0.800000
+ vec_0000 = 0.556863, 0.337255, 0.972549
+ version = 1
+
+[action_0005]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 5.000000, 5.000000, 5.000000
+ version = 1
+
+[action_0007]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0009]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.380392, 0.380392, 0.380392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 1.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 5
+ v0 = 0.200000, 0.200000, 0.200000
+ v1 = 0.200000, 0.800000, 0.800000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -4.000000, -4.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0008_0000]
+ type = 5
+ v0 = 3.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\sphere\pfx_dist2a
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_bubble_pulse_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_bubble_pulse_00.pe
new file mode 100644
index 00000000..b53c13e4
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_bubble_pulse_00.pe
@@ -0,0 +1,141 @@
+[_effect]
+ action_count = 10
+ flags = 2136065
+ max_particles = 10
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ flt_0001 = 3000.000000
+ flt_0002 = 2600.000000
+ vec_0000 = 0.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = damping
+ action_type = 4
+ flags = 1
+ flt_0000 = 80.000000
+ flt_0001 = 2.000000
+ vec_0000 = -23.000000, -23.000000, -23.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.200000
+ flt_0003 = 0.800000
+ vec_0000 = 0.556863, 0.337255, 0.972549
+ version = 1
+
+[action_0005]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0007]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0009]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.380392, 0.380392, 0.380392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 5
+ v0 = 0.050000, 0.050000, 0.001000
+ v1 = 0.200000, 0.800000, 0.800000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -4.000000, -4.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0008_0000]
+ type = 5
+ v0 = 1.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\sphere\pfx_distortion
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_bubble_pulse_inverted.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_bubble_pulse_inverted.pe
new file mode 100644
index 00000000..230375fc
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_bubble_pulse_inverted.pe
@@ -0,0 +1,141 @@
+[_effect]
+ action_count = 10
+ flags = 2136065
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ flt_0001 = 3000.000000
+ flt_0002 = 2600.000000
+ vec_0000 = 0.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = damping
+ action_type = 4
+ flags = 1
+ flt_0000 = 80.000000
+ flt_0001 = 2.000000
+ vec_0000 = -23.000000, -23.000000, -23.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 23.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.200000
+ flt_0003 = 0.800000
+ vec_0000 = 0.556863, 0.337255, 0.972549
+ version = 1
+
+[action_0005]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 5.000000, 5.000000, 5.000000
+ version = 1
+
+[action_0007]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0009]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.380392, 0.380392, 0.380392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 1.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 5
+ v0 = 0.200000, 0.200000, 0.200000
+ v1 = 0.200000, 0.800000, 0.800000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -4.000000, -4.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0008_0000]
+ type = 5
+ v0 = 3.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\spatial_bubble\pfx_dist2inv
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_core_flare_blast.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_core_flare_blast.pe
new file mode 100644
index 00000000..64eb84e9
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_core_flare_blast.pe
@@ -0,0 +1,97 @@
+[_effect]
+ action_count = 6
+ flags = 20481
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 200.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.400000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 5.000000, 5.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.215686, 0.231373, 0.235294
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 4.000000, 25.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = -1.000000, -1.000000, -1.000000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 20.000000, 50.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\sphere\white_flare
+
+[timelimit]
+ value = 0.500000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_core_small.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_core_small.pe
new file mode 100644
index 00000000..5873dc91
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_core_small.pe
@@ -0,0 +1,101 @@
+[_effect]
+ action_count = 6
+ flags = 7169
+ max_particles = 125
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.025000
+ flt_0002 = 0.000000
+ flt_0003 = 48.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.200000
+ flt_0001 = 21.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 5.000000, 5.000000, 0.000000
+ vec_0001 = 5.000000, 5.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.627451, 0.694118, 0.749020
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 4.000000, 25.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.500000, 0.500000, 0.000000
+ v1 = 0.500000, 0.500000, 0.001000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 5
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\sphere\puffcolorsplashflicker
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_core_small_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_core_small_00.pe
new file mode 100644
index 00000000..6172e6d3
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_core_small_00.pe
@@ -0,0 +1,94 @@
+[_effect]
+ action_count = 6
+ flags = 6145
+ max_particles = 2
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 48.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.200000
+ flt_0001 = 21.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 5.000000, 5.000000, 0.000000
+ vec_0001 = 5.000000, 5.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 4.000000, 25.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.500000, 0.500000, 0.000000
+ v1 = 0.500000, 0.500000, 0.001000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\sphere\albedoshadersingleframe
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_orbiting_leaves_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_orbiting_leaves_00.pe
new file mode 100644
index 00000000..5ea2b4b7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_orbiting_leaves_00.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.349020, 0.403922, 0.349020
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.337255, 0.392157, 0.329412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 3.000000, 8.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.025000, 0.025000, 0.000000
+ v1 = 0.100000, 0.100000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 3.000000, 8.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\sphere\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_sphere_blast.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_sphere_blast.pe
new file mode 100644
index 00000000..c749f201
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_sphere_blast.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 2119681
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.100000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.700000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 7.000000, 7.000000, 0.001000
+ vec_0001 = 15.000000, 15.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.482353, 0.490196, 0.498039
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 3.000000, 3.000000, 0.001000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, -20.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\sphere\pfx_flash_07, semitone\anomalies\sphere\pfx_dist7
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_sphere_blast_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_sphere_blast_dist.pe
new file mode 100644
index 00000000..3010b628
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_sphere_blast_dist.pe
@@ -0,0 +1,133 @@
+[_effect]
+ action_count = 9
+ flags = 2152449
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ flt_0001 = 3000.000000
+ flt_0002 = 2600.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = damping
+ action_type = 4
+ flags = 1
+ flt_0000 = 80.000000
+ flt_0001 = 2.000000
+ vec_0000 = -3.000000, -23.000000, -3.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 22.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 5.000000, 5.000000, 5.000000
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.380392, 0.380392, 0.380392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 0.200000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -12.566371, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 5
+ v0 = 0.200000, 0.000000, 0.200000
+ v1 = 0.100000, 0.800000, 0.800000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -4.000000, -4.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\sphere\pfx_dist2a
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_sphere_blast_flash.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_sphere_blast_flash.pe
new file mode 100644
index 00000000..50950ef1
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_sphere_blast_flash.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 2119681
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.100000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.800000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.700000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 7.000000, 7.000000, 0.001000
+ vec_0001 = 15.000000, 15.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.482353, 0.490196, 0.498039
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.001000
+ v1 = 3.000000, 3.000000, 0.001000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, -20.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\sphere\pfx_flash_04, semitone\anomalies\sphere\pfx_flash_05
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_wave_blast_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_wave_blast_dist.pe
new file mode 100644
index 00000000..edaa032a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_dao_wave_blast_dist.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 18433
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.800000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 7.000000, 7.000000, 7.000000
+ vec_0001 = 15.000000, 15.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -1.570796, -1.570796, -1.570796
+ v1 = 1.570796, 1.570796, 1.570796
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\sphere\pfx_dist3
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_teleport_electric_smoke_puff_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_teleport_electric_smoke_puff_00.pe
new file mode 100644
index 00000000..cc591278
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/effects/anomaly_teleport_electric_smoke_puff_00.pe
@@ -0,0 +1,101 @@
+[_effect]
+ action_count = 6
+ flags = 3073
+ max_particles = 2
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 300.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.478431, 0.478431, 0.478431
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 15.000000, 15.000000, 0.100000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.474510, 0.545098, 0.600000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 4.000000, 25.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -17.435840, -17.435840, -17.435840
+ v1 = 17.435840, 17.435840, 17.435840
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.400000, 0.400000, 0.500000
+ v1 = 2.000000, 2.000000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\sphere\smoke_burst_02
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/sphere_blowout.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/sphere_blowout.pg
new file mode 100644
index 00000000..5387bfe7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/sphere_blowout.pg
@@ -0,0 +1,60 @@
+[_group]
+ effects_count = 6
+ flags = 0
+ timelimit = 1.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\sphere\effects\anomaly_dao_core_flare_blast
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 1.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\sphere\effects\anomaly_dao_sphere_blast_dist
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\sphere\effects\anomaly_dao_wave_blast_dist
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\sphere\effects\anomaly_dao_sphere_blast
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\sphere\effects\anomaly_dao_sphere_blast_flash
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\sphere\effects\anomaliy_dao_puff
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/sphere_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/sphere_idle.pg
new file mode 100644
index 00000000..144d2e2d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/sphere/sphere_idle.pg
@@ -0,0 +1,51 @@
+[_group]
+ effects_count = 5
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\sphere\effects\anomaly_dao_bubble_pulse
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\sphere\effects\anomaly_dao_core_small_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\sphere\effects\anomaly_dao_orbiting_leaves_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\sphere\effects\anomaly_dao_bubble_pulse_00
+ flags = 68
+ on_birth_child =
+ on_death_child = semitone\anomalies\sphere\effects\anomaliy_dao_puff
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\sphere\effects\anomaly_teleport_electric_smoke_puff_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravi_hit_rocks_outburst_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravi_hit_rocks_outburst_00.pe
new file mode 100644
index 00000000..2add213e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravi_hit_rocks_outburst_00.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 42
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.239216, 0.215686, 0.207843
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 6.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -6.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.266667, 0.235294, 0.223529
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 3.000000, 7.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.120000, 0.120000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 128.000000, 128.000000, 0.000000
+ v2 = 128.000000, 128.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\springboard\bitssmallrocky_d
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravi_zaxvat_otbrosy_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravi_zaxvat_otbrosy_00.pe
new file mode 100644
index 00000000..9797e2d7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravi_zaxvat_otbrosy_00.pe
@@ -0,0 +1,133 @@
+[_effect]
+ action_count = 8
+ flags = 576513
+ max_particles = 45
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.101961, 0.101961, 0.101961
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -12.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 1.000000
+ flt_0002 = 5.000000
+ int_0000 = 2
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 2
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.196078, 0.196078, 0.196078
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 1.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.020000, 0.020000, 0.020000
+ v1 = 0.010000, 0.010000, 0.010000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 10.000000, 20.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 4
+ v0 = 6.000000, 0.000000, 6.000000
+ v1 = -6.000000, -6.000000, -6.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\springboard\bitsleaves01anim_d
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravi_zaxvat_wave_dist_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravi_zaxvat_wave_dist_00.pe
new file mode 100644
index 00000000..983b1a7e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravi_zaxvat_wave_dist_00.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 18433
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 7.000000, 7.000000, 7.000000
+ vec_0001 = 8.000000, 8.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -1.570796, -1.570796, -1.570796
+ v1 = 1.570796, 1.570796, 1.570796
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\springboard\pfx_dist3
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravity_dist_strong_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravity_dist_strong_00.pe
new file mode 100644
index 00000000..5d839f89
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravity_dist_strong_00.pe
@@ -0,0 +1,106 @@
+[_effect]
+ action_count = 7
+ flags = 153601
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ vec_0001 = 11.000000, 4.000000, 6.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, -0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 4.000000, 1.000000, 1.000000
+ v1 = 1.900000, 1.900000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 4.000000, 24.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\springboard\pfx_dist2inv
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravity_dist_strong_001.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravity_dist_strong_001.pe
new file mode 100644
index 00000000..fc2da4cf
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravity_dist_strong_001.pe
@@ -0,0 +1,106 @@
+[_effect]
+ action_count = 7
+ flags = 22529
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ vec_0001 = 12.000000, 12.000000, 12.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, -0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.900000, 1.900000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 4.000000, 0.000000
+ v2 = 12.000000, 24.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\springboard\pfx_dist2inv
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravity_dust_superstrong_03.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravity_dust_superstrong_03.pe
new file mode 100644
index 00000000..8ee247c1
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravity_dust_superstrong_03.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 42
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.239216, 0.215686, 0.207843
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 6.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -6.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.266667, 0.235294, 0.223529
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 3.000000, 7.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.120000, 0.120000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 128.000000, 128.000000, 0.000000
+ v2 = 128.000000, 128.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\springboard\clothbitanim
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravity_dust_superstrong_04.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravity_dust_superstrong_04.pe
new file mode 100644
index 00000000..46d5f513
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravity_dust_superstrong_04.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 32
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.501961, 0.458824, 0.443137
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 6.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -6.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.505882, 0.447059, 0.427451
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 3.000000, 7.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.120000, 0.120000, 0.000000
+ v1 = 0.200000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 128.000000, 128.000000, 0.000000
+ v2 = 128.000000, 128.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\springboard\bitssmallrocky_d
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravity_dust_superstrong_05.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravity_dust_superstrong_05.pe
new file mode 100644
index 00000000..66bc768d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravity_dust_superstrong_05.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 32
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.623529, 0.690196, 0.627451
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 6.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -6.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.607843, 0.674510, 0.596078
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 3.000000, 7.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.250000, 0.250000, 0.000000
+ v1 = 0.400000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 128.000000, 128.000000, 0.000000
+ v2 = 128.000000, 128.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\springboard\bushtrimmings_d
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravity_dust_superstrong_06.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravity_dust_superstrong_06.pe
new file mode 100644
index 00000000..2a313f27
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/gravity_dust_superstrong_06.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 32
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.584314, 0.521569, 0.486275
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 6.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.050000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -6.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.525490, 0.450980, 0.423529
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 3.000000, 7.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.250000, 0.250000, 0.000000
+ v1 = 0.400000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 128.000000, 128.000000, 0.000000
+ v2 = 128.000000, 128.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\springboard\bitswoodsplintersatlas
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/heat_sparks_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/heat_sparks_01.pe
new file mode 100644
index 00000000..53185a0f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/blowout/heat_sparks_01.pe
@@ -0,0 +1,119 @@
+[_effect]
+ action_count = 7
+ flags = 312321
+ max_particles = 14
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 37.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 0.400000
+ vec_0001 = 0.100000, 0.100000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -7.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.694118, 0.694118, 0.694118
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 1.000000, 0.000000, 1.000000
+ v1 = -1.000000, 0.000000, -1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.030000, 0.030000, 1.000000
+ v1 = 0.010000, 0.010000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 7.000000, 10.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 93.000000, 146.000000
+ speed = 30.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\springboard\pfx_ani-smoke-01
+
+[timelimit]
+ value = 2.000000
+
+[velocity_scale]
+ value = 0.000000, 0.020000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/hit/gravi_zaxvat_wave_dist_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/hit/gravi_zaxvat_wave_dist_01.pe
new file mode 100644
index 00000000..983b1a7e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/hit/gravi_zaxvat_wave_dist_01.pe
@@ -0,0 +1,89 @@
+[_effect]
+ action_count = 5
+ flags = 18433
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 7.000000, 7.000000, 7.000000
+ vec_0001 = 8.000000, 8.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -1.570796, -1.570796, -1.570796
+ v1 = 1.570796, 1.570796, 1.570796
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\springboard\pfx_dist3
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/hit/gravity_dist_strong_001_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/hit/gravity_dist_strong_001_00.pe
new file mode 100644
index 00000000..fc2da4cf
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/hit/gravity_dist_strong_001_00.pe
@@ -0,0 +1,106 @@
+[_effect]
+ action_count = 7
+ flags = 22529
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ vec_0001 = 12.000000, 12.000000, 12.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, -0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.900000, 1.900000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 4.000000, 0.000000
+ v2 = 12.000000, 24.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\springboard\pfx_dist2inv
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/anomaly_spiky_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/anomaly_spiky_00.pe
new file mode 100644
index 00000000..495a2187
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/anomaly_spiky_00.pe
@@ -0,0 +1,101 @@
+[_effect]
+ action_count = 6
+ flags = 3073
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 120.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 10.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 1.000000, 1.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.121569, 0.121569, 0.121569
+ v1 = 0.380392, 0.380392, 0.380392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 6.000000, 7.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.700000, 0.700000, 0.700000
+ v1 = 0.800000, 0.800000, 0.800000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -4.000000, -4.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\springboard\spray_v1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/campfire_flame_hd_sparks_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/campfire_flame_hd_sparks_02.pe
new file mode 100644
index 00000000..bc166181
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/campfire_flame_hd_sparks_02.pe
@@ -0,0 +1,102 @@
+[_effect]
+ action_count = 5
+ flags = 8584193
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 900.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 2.000000
+ flt_0002 = 10.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.400000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.045000, 0.250000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.025000, 0.025000, 0.025000
+ v1 = 0.075000, 0.100000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.100000, 0.200000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 6
+ reserved = 93.000000, 146.000000
+ speed = 16.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\springboard\sparks_tiled
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/expl_car_smoke_big_smoke_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/expl_car_smoke_big_smoke_01.pe
new file mode 100644
index 00000000..855a795e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/expl_car_smoke_big_smoke_01.pe
@@ -0,0 +1,108 @@
+[_effect]
+ action_count = 6
+ flags = 54273
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 45.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 1
+ v0 = 0.364706, 0.329412, 0.298039
+ v1 = 0.286275, 0.286275, 0.286275
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -1.801878, 2.999750, 2.999750
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\shatterpoint\cumulus_02
+
+[timelimit]
+ value = 8.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/expl_fallout4_debris_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/expl_fallout4_debris_00.pe
new file mode 100644
index 00000000..7a35fa6e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/expl_fallout4_debris_00.pe
@@ -0,0 +1,124 @@
+[_effect]
+ action_count = 8
+ flags = 171009
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 2
+ flt_0000 = 25.000000
+ vec_0000 = -6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -2.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 4.000000
+ flt_0002 = 15.000000
+ int_0000 = 2
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.635294, 0.513726, 0.423529
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.500000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 1.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -300.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.000000
+ v1 = 0.150000, 0.150000, 0.150000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 2.000000, 4.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\shatterpoint\spark_tiled_a
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/gravi_rocks2.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/gravi_rocks2.pe
new file mode 100644
index 00000000..cdfc0d0d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/gravi_rocks2.pe
@@ -0,0 +1,128 @@
+[_effect]
+ action_count = 9
+ flags = 38913
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 1.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.458824, 0.439216, 0.411765
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 25.000000
+ vec_0000 = -6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -8.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.100000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ flt_0001 = 250.000000
+ flt_0002 = 20.000000
+ vec_0000 = 0.000000, 1.600000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.500000
+ flt_0001 = 24.000000
+ flt_0002 = 10.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.333333, 0.333333, 0.333333
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.600000, 0.000000
+ v1 = 0.100000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 1.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 6.283186, 6.283186, 0.000000
+ v1 = -300.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.020000, 0.020000, 0.020000
+ v1 = 0.060000, 0.060000, 0.060000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 8.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\springboard\leaf
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/gravi_rocks2_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/gravi_rocks2_00.pe
new file mode 100644
index 00000000..01317c56
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/gravi_rocks2_00.pe
@@ -0,0 +1,125 @@
+[_effect]
+ action_count = 9
+ flags = 6145
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 22.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 1.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.458824, 0.439216, 0.411765
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 25.000000
+ vec_0000 = -6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -8.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.100000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ flt_0001 = 250.000000
+ flt_0002 = 20.000000
+ vec_0000 = 0.000000, 1.600000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.500000
+ flt_0001 = 24.000000
+ flt_0002 = 10.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.333333, 0.333333, 0.333333
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.100000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 1.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 6.283186, 6.283186, 0.000000
+ v1 = -300.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.020000, 0.020000, 0.020000
+ v1 = 0.060000, 0.060000, 0.060000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.000000, 8.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\springboard\leaf
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/gravitational_ripples.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/gravitational_ripples.pe
new file mode 100644
index 00000000..f9beaaa7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/gravitational_ripples.pe
@@ -0,0 +1,86 @@
+[_effect]
+ action_count = 5
+ flags = 2049
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 9.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ vec_0001 = 5.000000, 5.000000, 5.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 8
+ v0 = -1.570796, -1.570796, -1.570796
+ v1 = 1.570796, 1.570796, 1.570796
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\springboard\pfx_dist3
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/heat_sparks_idle.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/heat_sparks_idle.pe
new file mode 100644
index 00000000..7f0b9e94
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/heat_sparks_idle.pe
@@ -0,0 +1,128 @@
+[_effect]
+ action_count = 8
+ flags = 295937
+ max_particles = 2
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.400000
+ vec_0001 = 0.100000, 0.100000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -2.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.001000
+ flt_0001 = 4.000000
+ flt_0002 = 2.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ vec_0001 = 0.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.030000, 0.030000, 1.000000
+ v1 = 0.010000, 0.010000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 4.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 93.000000, 146.000000
+ speed = 30.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\springboard\pfx_ani-smoke-01
+
+[velocity_scale]
+ value = 0.000000, 0.020000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/heat_sparks_idle_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/heat_sparks_idle_00.pe
new file mode 100644
index 00000000..3fdd6e83
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/heat_sparks_idle_00.pe
@@ -0,0 +1,142 @@
+[_effect]
+ action_count = 9
+ flags = 312321
+ max_particles = 2
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 55.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.400000
+ vec_0001 = 0.400000, 0.400000, 0.100000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 0
+ vec_0000 = 0.000000, -2.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 2.000000
+ flt_0002 = 8.000000
+ int_0000 = 2
+ vec_0000 = 1.000000, 2.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 2.000000
+ flt_0002 = 2.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ vec_0001 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.282353, 0.466667, 0.466667
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.001000, 0.001000, 0.000000
+ v1 = 0.050000, 0.050000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 4.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 6
+ reserved = 93.000000, 146.000000
+ speed = 30.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\springboard\sparks_tiled
+
+[timelimit]
+ value = 1.000000
+
+[velocity_scale]
+ value = 0.000000, 0.020000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/heat_sparks_idle_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/heat_sparks_idle_01.pe
new file mode 100644
index 00000000..ccc5ab61
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/heat_sparks_idle_01.pe
@@ -0,0 +1,129 @@
+[_effect]
+ action_count = 9
+ flags = 262145
+ max_particles = 2
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 37.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 0.400000
+ vec_0001 = 0.400000, 0.400000, 0.100000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 0
+ vec_0000 = 0.000000, -2.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 2.000000
+ flt_0002 = 8.000000
+ int_0000 = 2
+ vec_0000 = 1.000000, 2.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 1.000000
+ flt_0002 = 2.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ vec_0001 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.030000, 0.030000, 1.000000
+ v1 = 0.010000, 0.010000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 4.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\springboard\flash_particle
+
+[velocity_scale]
+ value = 0.000000, 0.020000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/heat_sparks_idle_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/heat_sparks_idle_02.pe
new file mode 100644
index 00000000..5ddfd4b9
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/heat_sparks_idle_02.pe
@@ -0,0 +1,132 @@
+[_effect]
+ action_count = 9
+ flags = 294913
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 37.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.400000
+ vec_0001 = 0.400000, 0.400000, 0.100000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 0
+ vec_0000 = 0.000000, -2.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 2.000000
+ flt_0002 = 8.000000
+ int_0000 = 2
+ vec_0000 = 1.000000, 2.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 1.000000
+ flt_0002 = 2.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ vec_0001 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.384314, 0.384314, 0.384314
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.030000, 0.030000, 1.000000
+ v1 = 0.010000, 0.010000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 4.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\springboard\leaf
+
+[velocity_scale]
+ value = 0.000000, 0.020000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/radar_leaves_damping.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/radar_leaves_damping.pe
new file mode 100644
index 00000000..7ba9c2f8
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/radar_leaves_damping.pe
@@ -0,0 +1,149 @@
+[_effect]
+ action_count = 10
+ flags = 36865
+ max_particles = 14
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 2.000000
+ flt_0002 = 2.000000
+ int_0000 = 2
+ vec_0000 = 1.000000, 3.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ flt_0001 = 150.000000
+ flt_0002 = 25.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ vec_0001 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.900000
+ flt_0002 = 0.000000
+ flt_0003 = 32.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0007]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0009]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 0
+ v0 = 0.211765, 0.262745, 0.203922
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0006_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 2.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.150000, 0.150000, 0.150000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0008_0000]
+ type = 4
+ v0 = 6.000000, -0.300000, 6.000000
+ v1 = -6.000000, -0.500000, -6.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\springboard\leaf
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/zone_graviti_leaves_pulsing.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/zone_graviti_leaves_pulsing.pe
new file mode 100644
index 00000000..e46ea533
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/zone_graviti_leaves_pulsing.pe
@@ -0,0 +1,137 @@
+[_effect]
+ action_count = 9
+ flags = 5121
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 6.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.349020, 0.403922, 0.349020
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.100000
+ flt_0001 = 400.000000
+ flt_0002 = 100.000000
+ vec_0000 = 0.000000, 1.500000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.200000, 0.200000, 0.200000
+ vec_0001 = 0.100000, 0.100000, 0.100000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.337255, 0.392157, 0.329412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.050000, 0.050000, 0.050000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\springboard\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/zone_graviti_mine_idle_leaves.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/zone_graviti_mine_idle_leaves.pe
new file mode 100644
index 00000000..027a59e2
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/effects/idle/zone_graviti_mine_idle_leaves.pe
@@ -0,0 +1,132 @@
+[_effect]
+ action_count = 8
+ flags = 5121
+ max_particles = 14
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 6.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.349020, 0.403922, 0.349020
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.337255, 0.392157, 0.329412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.030000, 0.030000, 0.000000
+ v1 = 0.090000, 0.090000, 0.090000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 4
+ v0 = 6.000000, -0.300000, 6.000000
+ v1 = -6.000000, -0.500000, -6.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 4
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\springboard\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/springboard_blowout.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/springboard_blowout.pg
new file mode 100644
index 00000000..97ddde2d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/springboard_blowout.pg
@@ -0,0 +1,87 @@
+[_group]
+ effects_count = 9
+ flags = 0
+ timelimit = 3.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\springboard\effects\blowout\gravi_zaxvat_otbrosy_00
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\springboard\effects\blowout\heat_sparks_01
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\springboard\effects\blowout\gravi_zaxvat_wave_dist_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 3.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\springboard\effects\blowout\gravity_dust_superstrong_03
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 3.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\springboard\effects\blowout\gravity_dust_superstrong_04
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 3.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\springboard\effects\blowout\gravity_dust_superstrong_05
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 3.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\springboard\effects\blowout\gravity_dust_superstrong_06
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 3.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\springboard\effects\blowout\gravity_dist_strong_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 3.000000
+
+[effect_0007]
+ effect_name = semitone\anomalies\springboard\effects\blowout\gravity_dist_strong_001
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 3.000000
+
+[effect_0008]
+ effect_name = semitone\anomalies\springboard\effects\blowout\gravi_hit_rocks_outburst_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 3.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/springboard_hit.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/springboard_hit.pg
new file mode 100644
index 00000000..93ef17a0
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/springboard_hit.pg
@@ -0,0 +1,24 @@
+[_group]
+ effects_count = 2
+ flags = 0
+ timelimit = 3.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\springboard\effects\hit\gravi_zaxvat_wave_dist_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 3.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\springboard\effects\hit\gravity_dist_strong_001_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 3.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/springboard_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/springboard_idle.pg
new file mode 100644
index 00000000..fb1e887e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/springboard/springboard_idle.pg
@@ -0,0 +1,69 @@
+[_group]
+ effects_count = 7
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\springboard\effects\idle\gravitational_ripples
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\springboard\effects\idle\zone_graviti_mine_idle_leaves
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\springboard\effects\idle\zone_graviti_leaves_pulsing
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\springboard\effects\idle\radar_leaves_damping
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\springboard\effects\idle\gravi_rocks2
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\springboard\effects\idle\anomaly_spiky_00
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\springboard\effects\idle\heat_sparks_idle_00
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\springboard\effects\idle\gravi_rocks2_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/amebae_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/amebae_00.pe
new file mode 100644
index 00000000..89c6e345
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/amebae_00.pe
@@ -0,0 +1,146 @@
+[_effect]
+ action_count = 9
+ flags = 52225
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 32.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 16.000000, 16.000000, 16.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -16.000000, -16.000000, -16.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 360.000000, 0.000000, 30.000000
+ vec_0001 = 720.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.100000, 14.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\dirtburst_01
+
+[timelimit]
+ value = 5.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/expl_car_smoke_big_smoke_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/expl_car_smoke_big_smoke_01.pe
new file mode 100644
index 00000000..356b5384
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/expl_car_smoke_big_smoke_01.pe
@@ -0,0 +1,105 @@
+[_effect]
+ action_count = 6
+ flags = 21505
+ max_particles = 14
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 45.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.760784, 0.760784, 0.760784
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -1.801878, 2.999750, 2.999750
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\cumulus_02
+
+[timelimit]
+ value = 4.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/expl_new_shockwave_shader_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/expl_new_shockwave_shader_00.pe
new file mode 100644
index 00000000..f5ad5002
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/expl_new_shockwave_shader_00.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 18433
+ max_particles = 45
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 8.000000, 8.000000, 8.000000
+ vec_0001 = 12.000000, 32.000000, 0.001000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 0
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 2
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 14.000000, 14.000000, 1.000000
+ v1 = 10.000000, 10.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 15.000000, 0.000000
+ v2 = 10.000000, 25.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\thorn\distort_anomaly_01
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/expl_new_shockwave_wide_pulse.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/expl_new_shockwave_wide_pulse.pe
new file mode 100644
index 00000000..e8c661e0
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/expl_new_shockwave_wide_pulse.pe
@@ -0,0 +1,114 @@
+[_effect]
+ action_count = 8
+ flags = 18433
+ max_particles = 23
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 300.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 21.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 125.000000, 50.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 0
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 10.000000, 10.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 60.000000, 150.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\thorn\pfx_dist3_005
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/expl_new_shockwave_wide_rafal.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/expl_new_shockwave_wide_rafal.pe
new file mode 100644
index 00000000..95fe071a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/expl_new_shockwave_wide_rafal.pe
@@ -0,0 +1,114 @@
+[_effect]
+ action_count = 8
+ flags = 18433
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 55.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 16.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 125.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 0
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 10.000000, 10.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 150.000000, 300.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\thorn\pfx_dist2
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/expl_new_shockwave_wide_shader_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/expl_new_shockwave_wide_shader_02.pe
new file mode 100644
index 00000000..58e96f38
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/expl_new_shockwave_wide_shader_02.pe
@@ -0,0 +1,114 @@
+[_effect]
+ action_count = 8
+ flags = 18433
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 444.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 21.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 125.000000, 12.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 0
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 10.000000, 10.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.250000, 0.000000
+ v2 = 150.000000, 150.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\thorn\pfx_dist2
+
+[timelimit]
+ value = 3.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/expl_sparks_grenade_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/expl_sparks_grenade_01.pe
new file mode 100644
index 00000000..18e731a7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/expl_sparks_grenade_01.pe
@@ -0,0 +1,112 @@
+[_effect]
+ action_count = 7
+ flags = 311297
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 730.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.200000
+ flt_0001 = 12.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.231373, 0.058824, 0.011765
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 10.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ vec_0001 = 0.500000, 0.500000, 0.500000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -7.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.150000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.200000, 0.050000
+ v1 = 0.100000, 0.200000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 22.000000, 0.000000
+ v1 = 44.000000, 15.000000, 0.000000
+ v2 = 120.000000, 12.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\shatterpoint\pfx_spark_01
+
+[timelimit]
+ value = 0.120000
+
+[velocity_scale]
+ value = 0.000000, 0.050000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/glass_spike_2_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/glass_spike_2_00.pe
new file mode 100644
index 00000000..53d2d06d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/glass_spike_2_00.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 27649
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.200000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 120.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.741176, 0.741176, 0.741176
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.500000, 0.030000, 0.500000
+ vec_0001 = 1.000000, 0.010000, 4.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.839473, 2.678945
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.002000
+ vec_0000 = -0.628319, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.098039, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.010000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 4
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.030000, 0.030000, 0.030000
+ v1 = 0.500000, 0.010000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\pfx_glass_shards2.1024
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/gravitational_pulse_original_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/gravitational_pulse_original_01.pe
new file mode 100644
index 00000000..ef005014
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/gravitational_pulse_original_01.pe
@@ -0,0 +1,144 @@
+[_effect]
+ action_count = 10
+ flags = 2146305
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.200000
+ flt_0003 = 0.800000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 120.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0003]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ flt_0001 = 2000.000000
+ flt_0002 = 15.000000
+ vec_0000 = 0.000000, 1.500000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = damping
+ action_type = 4
+ flags = 1
+ flt_0000 = 80.000000
+ flt_0001 = 2.000000
+ vec_0000 = -20.000000, -20.000000, -20.000000
+ version = 1
+
+[action_0005]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 5.000000, 5.000000, 5.000000
+ version = 1
+
+[action_0007]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0009]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0002_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.380392, 0.380392, 0.380392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0002_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0002_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0002_0003]
+ type = 5
+ v0 = 2.000000, 2.000000, 2.000000
+ v1 = 0.000000, 0.200000, 0.800000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0002_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -4.000000, -4.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0008_0000]
+ type = 5
+ v0 = 3.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\thorn\albedoshadersingleframe
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/gravity_dust_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/gravity_dust_00.pe
new file mode 100644
index 00000000..5b2c5ae4
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/gravity_dust_00.pe
@@ -0,0 +1,105 @@
+[_effect]
+ action_count = 6
+ flags = 21505
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.800000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 255.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.333333, 0.321569, 0.301961
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 5.000000, 5.000000, 5.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 12.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.180392, 0.176471, 0.172549
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 5.000000, 0.000000, 5.000000
+ v1 = -5.000000, 0.000000, -5.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 4.000000, 4.000000, 4.000000
+ v1 = 1.900000, 1.900000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 1.000000, 2.000000, 1.000000
+ v1 = 15.000000, 0.000000, -2.000000
+ v2 = 12.000000, 50.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\cumulus_02
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/gravity_dust_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/gravity_dust_02.pe
new file mode 100644
index 00000000..08928b7e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/gravity_dust_02.pe
@@ -0,0 +1,105 @@
+[_effect]
+ action_count = 6
+ flags = 31745
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 60.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 5.000000, 5.000000, 5.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 8.000000
+ vec_0000 = -0.093000, 0.400000, -0.082000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.294118, 0.294118, 0.294118
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 8
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -30.000000, -30.000000, -30.000000
+ v1 = 30.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 4.000000, 4.000000, 4.000000
+ v1 = 1.900000, 1.900000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 15.000000, 0.000000, -2.000000
+ v2 = 12.000000, 50.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\around
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/ground_spike.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/ground_spike.pe
new file mode 100644
index 00000000..11f000be
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/ground_spike.pe
@@ -0,0 +1,135 @@
+[_effect]
+ action_count = 9
+ flags = 19457
+ max_particles = 35
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 800.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.400000
+ vec_0001 = 7.000000, 2.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -5.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.839473, 2.678945
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 0
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0008]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.002000
+ vec_0000 = -0.628319, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = -4.000000, 0.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 12.000000, 12.000000, 12.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 4
+ v0 = 6.000000, -3.000000, 6.000000
+ v1 = -6.000000, -4.000000, -6.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\flare_blue_v1
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/ground_spike_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/ground_spike_00.pe
new file mode 100644
index 00000000..523a0a8b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/ground_spike_00.pe
@@ -0,0 +1,135 @@
+[_effect]
+ action_count = 9
+ flags = 27649
+ max_particles = 45
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 800.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.258824, 0.258824, 0.258824
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 0.100000, 0.400000
+ vec_0001 = 7.000000, 0.100000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -5.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.839473, 2.678945
+ version = 1
+
+[action_0006]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 0
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0008]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.002000
+ vec_0000 = -0.628319, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = -4.000000, 0.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 12.000000, 0.100000, 12.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0006_0000]
+ type = 4
+ v0 = 6.000000, -3.000000, 6.000000
+ v1 = -6.000000, -4.000000, -6.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\thorn\pfx_glass_shards1.2048
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/particle_blast.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/particle_blast.pe
new file mode 100644
index 00000000..f12e44fd
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/particle_blast.pe
@@ -0,0 +1,141 @@
+[_effect]
+ action_count = 9
+ flags = 187393
+ max_particles = 13
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 120.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.300000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 2
+ flt_0000 = 25.000000
+ vec_0000 = -6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -2.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 4.000000
+ flt_0002 = 15.000000
+ int_0000 = 2
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.164706, 0.164706, 0.164706
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.500000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 1.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -300.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.000000
+ v1 = 0.150000, 0.150000, 0.150000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.500000, 12.000000, 0.000000
+ v2 = 2.000000, 4.000000, 0.000000
+
+[domain_action_0008_0000]
+ type = 4
+ v0 = 12.000000, -0.300000, 12.000000
+ v1 = -12.000000, -0.400000, -12.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\spark_tiled_a_1
+
+[timelimit]
+ value = 5.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/sb_blood7_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/sb_blood7_00.pe
new file mode 100644
index 00000000..b10a2f6c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/sb_blood7_00.pe
@@ -0,0 +1,127 @@
+[_effect]
+ action_count = 8
+ flags = 154625
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.080000
+ flt_0001 = 0.180000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -9.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.258824, 0.258824, 0.258824
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.250000, 0.400000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.040000, 0.000000
+ v1 = 0.550000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 8.000000, 35.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 4
+ v0 = 12.000000, -0.400000, 12.000000
+ v1 = -12.000000, -0.500000, -12.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\pfx_glass_shards2.512
+
+[timelimit]
+ value = 3.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/sb_blood_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/sb_blood_00.pe
new file mode 100644
index 00000000..fbb83e9c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/sb_blood_00.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 23553
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 900.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 0.137255, 0.137255, 0.137255
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -6.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -0.640522, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.207843, 0.207843, 0.207843
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.500000, 5.000000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.100000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 3.000000, 5.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\pfx_glass_shards_blend.2048
+
+[timelimit]
+ value = 0.500000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/sb_blood_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/sb_blood_01.pe
new file mode 100644
index 00000000..f414fcae
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/sb_blood_01.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 23553
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 900.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 0.560784, 0.188235, 0.188235
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -6.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -0.640522, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.560784, 0.188235, 0.188235
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.500000, 0.500000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 3.000000, 5.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\clothbitanim
+
+[timelimit]
+ value = 0.500000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/spike_darkblue_blowout.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/spike_darkblue_blowout.pe
new file mode 100644
index 00000000..ac12f2e0
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/blowout/spike_darkblue_blowout.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 21505
+ max_particles = 32
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 120.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.400000
+ vec_0001 = 7.000000, 2.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.839473, 2.678945
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.002000
+ vec_0000 = -0.628319, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.490196, 0.490196, 0.490196
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 2.000000, 2.000000, 2.000000
+ v1 = 12.000000, 12.000000, 12.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\flare_gray_v1
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/amebae.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/amebae.pe
new file mode 100644
index 00000000..c57e6e2a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/amebae.pe
@@ -0,0 +1,143 @@
+[_effect]
+ action_count = 9
+ flags = 35841
+ max_particles = 500
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 32.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 16.000000, 16.000000, 16.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -16.000000, -16.000000, -16.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 360.000000, 0.000000, 30.000000
+ vec_0001 = 720.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.100000, 14.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\dirtburst_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/buble_distort_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/buble_distort_00.pe
new file mode 100644
index 00000000..c4042e40
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/buble_distort_00.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 6
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.500000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, 0.600000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 9.000000, 2.000000, 1.000000
+ v1 = 8.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\thorn\pfx_dist2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/campfire_big_sparks_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/campfire_big_sparks_01.pe
new file mode 100644
index 00000000..19191d87
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/campfire_big_sparks_01.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 5
+ flags = 312321
+ max_particles = 30
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 30.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.262745, 0.262745, 0.262745
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.027000, 1.000000
+ v1 = 0.010000, 0.010000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 4.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 93.000000, 146.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\spark_tiled_a_1
+
+[timelimit]
+ value = 17.000000
+
+[velocity_scale]
+ value = 0.000000, 0.020000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/campfire_flame_hd_smoke_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/campfire_flame_hd_smoke_00.pe
new file mode 100644
index 00000000..1983b15a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/campfire_flame_hd_smoke_00.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 8393729
+ max_particles = 125
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.400000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 0.100000
+ vec_0000 = 0.239216, 0.239216, 0.239216
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.227451, 0.227451, 0.227451
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.478431, 0.478431, 0.478431
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 1.800000, 2.400000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 3.141593, 3.141593, 3.141593
+ v1 = -3.141593, -3.141593, -3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.750000, 0.750000, 0.750000
+ v1 = 1.250000, 1.250000, 1.250000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 93.000000, 146.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\smokefillvapor01atlassoft_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/expl_car_smoke_big_smoke_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/expl_car_smoke_big_smoke_01.pe
new file mode 100644
index 00000000..07a3b756
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/expl_car_smoke_big_smoke_01.pe
@@ -0,0 +1,105 @@
+[_effect]
+ action_count = 6
+ flags = 21505
+ max_particles = 8
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 45.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 6.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.529412, 0.529412, 0.529412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -1.801878, 2.999750, 2.999750
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 2.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\cumulus_02
+
+[timelimit]
+ value = 8.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/expl_fallout4_debris_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/expl_fallout4_debris_00.pe
new file mode 100644
index 00000000..66b1fde8
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/expl_fallout4_debris_00.pe
@@ -0,0 +1,132 @@
+[_effect]
+ action_count = 8
+ flags = 252929
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 120.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 2
+ flt_0000 = 25.000000
+ vec_0000 = -6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -2.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 4.000000
+ flt_0002 = 15.000000
+ int_0000 = 2
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[collision]
+ collide_resilence = 0.000000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 1.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.500000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 1.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -300.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.000000
+ v1 = 0.150000, 0.150000, 0.150000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 2.000000, 4.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\spark_tiled_a_1
+
+[timelimit]
+ value = 3.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/glass_spike.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/glass_spike.pe
new file mode 100644
index 00000000..e5dc0135
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/glass_spike.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 9217
+ max_particles = 32
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.129412, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 2.000000, 0.500000
+ vec_0001 = 3.000000, 0.010000, 4.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.839473, 2.678945
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.002000
+ vec_0000 = -0.628319, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.215686, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 4
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.030000, 0.400000, 0.030000
+ v1 = 1.000000, 0.050000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\pfx_glass_shards2.2048
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/glass_spike_2.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/glass_spike_2.pe
new file mode 100644
index 00000000..3ec0bc7a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/glass_spike_2.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 9217
+ max_particles = 32
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.741176, 0.741176, 0.741176
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 2.000000, 0.500000
+ vec_0001 = 3.000000, 0.010000, 4.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.839473, 2.678945
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.002000
+ vec_0000 = -0.628319, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.010000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 4
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.030000, 0.200000, 0.030000
+ v1 = 1.000000, 0.050000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\pfx_glass_shards2.1024
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/glass_spike_2_noloop.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/glass_spike_2_noloop.pe
new file mode 100644
index 00000000..20f69c90
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/glass_spike_2_noloop.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 25601
+ max_particles = 32
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.741176, 0.741176, 0.741176
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 2.000000, 0.500000
+ vec_0001 = 3.000000, 0.010000, 4.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.839473, 2.678945
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.002000
+ vec_0000 = -0.628319, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.010000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 4
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.030000, 0.200000, 0.030000
+ v1 = 1.000000, 0.050000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\pfx_glass_shards2.1024
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/gravitat_dist_ring_single_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/gravitat_dist_ring_single_00.pe
new file mode 100644
index 00000000..5647a438
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/gravitat_dist_ring_single_00.pe
@@ -0,0 +1,83 @@
+[_effect]
+ action_count = 5
+ flags = 1
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 220.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 1.000000, 3.300000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.003000
+ vec_0000 = -2148.901888, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 8
+ v0 = -1.570796, -1.570796, -1.570796
+ v1 = 5.000000, 800.000000, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\thorn\broken_glass
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/gravitational_pulse_original_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/gravitational_pulse_original_00.pe
new file mode 100644
index 00000000..ca78b951
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/gravitational_pulse_original_00.pe
@@ -0,0 +1,130 @@
+[_effect]
+ action_count = 9
+ flags = 2129921
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.200000
+ flt_0003 = 0.800000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ flt_0001 = 2000.000000
+ flt_0002 = 15.000000
+ vec_0000 = 0.000000, 1.500000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = damping
+ action_type = 4
+ flags = 1
+ flt_0000 = 80.000000
+ flt_0001 = 2.000000
+ vec_0000 = -20.000000, -20.000000, -20.000000
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 5.000000, 5.000000, 5.000000
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.380392, 0.380392, 0.380392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 5
+ v0 = 2.000000, 2.000000, 2.000000
+ v1 = 0.000000, 0.200000, 0.800000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -4.000000, -4.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 5
+ v0 = 3.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\thorn\pfx_dist3_006
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/orbiting_spores_blue_tint_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/orbiting_spores_blue_tint_00.pe
new file mode 100644
index 00000000..82f74e34
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/orbiting_spores_blue_tint_00.pe
@@ -0,0 +1,114 @@
+[_effect]
+ action_count = 8
+ flags = 32769
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 8.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 5.000000, 5.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 0
+ vec_0000 = 0.000000, -3.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -0.640522, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 3.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 0.466667, 0.000000
+ v1 = 0.300000, 0.300000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 8
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 2.000000, 0.000000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 2
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.200000, 1.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\set
+ texture = semitone\anomalies\thorn\spore_a
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/sb_blood_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/sb_blood_00.pe
new file mode 100644
index 00000000..01afa2c8
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/sb_blood_00.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 89089
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 900.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 0.560784, 0.188235, 0.188235
+ version = 1
+
+[action_0003]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -6.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -0.640522, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[collision]
+ collide_resilence = 0.000000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 1.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.560784, 0.188235, 0.188235
+ v1 = 0.380392, 0.066667, 0.050980
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.500000, 0.500000, 0.500000
+ v2 = 0.400000, 0.400000, 0.400000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.300000, 0.300000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 3.000000, 5.000000, 0.000000
+ v2 = 0.050000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\clothbitanim
+
+[timelimit]
+ value = 0.500000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/spike_blue.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/spike_blue.pe
new file mode 100644
index 00000000..8ef0aaeb
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/spike_blue.pe
@@ -0,0 +1,102 @@
+[_effect]
+ action_count = 6
+ flags = 5121
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.400000
+ vec_0001 = 4.000000, 4.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.839473, 2.678945
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.200000, 0.200000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\thorn\flare_gray_v1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/spike_core.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/spike_core.pe
new file mode 100644
index 00000000..2adea87b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/spike_core.pe
@@ -0,0 +1,93 @@
+[_effect]
+ action_count = 5
+ flags = 5121
+ max_particles = 13
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.100000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 250.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.400000
+ vec_0001 = 7.000000, 7.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.552941, 0.552941, 0.552941
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 0.200000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 21489.035264, 21489.035264, 21489.035264
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\flare_gray_v1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/spike_darkblue.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/spike_darkblue.pe
new file mode 100644
index 00000000..67cdc39b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/spike_darkblue.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 9217
+ max_particles = 32
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.400000
+ vec_0001 = 4.000000, 2.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.839473, 2.678945
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.002000
+ vec_0000 = -0.628319, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.070588, 0.070588, 0.070588
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.000000, 0.030000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 3.000000, 2.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 8
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\flare_gray_v1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/test_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/test_01.pe
new file mode 100644
index 00000000..15b66873
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/effects/idle/test_01.pe
@@ -0,0 +1,143 @@
+[_effect]
+ action_count = 9
+ flags = 35841
+ max_particles = 500
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 32.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 16.000000, 16.000000, 16.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -16.000000, -16.000000, -16.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 360.000000, 0.000000, 30.000000
+ vec_0001 = 720.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.500000, 0.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.100000, 14.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\thorn\dirtburst_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/thorn_blowout.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/thorn_blowout.pg
new file mode 100644
index 00000000..6c02c980
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/thorn_blowout.pg
@@ -0,0 +1,123 @@
+[_group]
+ effects_count = 13
+ flags = 0
+ timelimit = 5.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\thorn\effects\blowout\spike_darkblue_blowout
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 3.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\thorn\effects\blowout\gravity_dust_02
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 2.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\thorn\effects\blowout\ground_spike
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\thorn\effects\blowout\gravity_dust_00
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\thorn\effects\blowout\amebae_00
+ time0 = 2.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\thorn\effects\blowout\ground_spike_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\thorn\effects\blowout\expl_new_shockwave_shader_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\thorn\effects\blowout\expl_new_shockwave_wide_pulse
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.300000
+ time1 = 0.000000
+
+[effect_0007]
+ effect_name = semitone\anomalies\thorn\effects\blowout\expl_new_shockwave_wide_rafal
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.800000
+ time1 = 0.000000
+
+[effect_0008]
+ effect_name = semitone\anomalies\thorn\effects\blowout\expl_new_shockwave_wide_shader_02
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 3.000000
+ time1 = 0.000000
+
+[effect_0009]
+ effect_name = semitone\anomalies\thorn\effects\blowout\gravitational_pulse_original_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.000000
+ time1 = 0.000000
+
+[effect_0010]
+ effect_name = semitone\anomalies\thorn\effects\blowout\expl_sparks_grenade_01
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\thorn\effects\blowout\particle_blast
+ time0 = 2.000000
+ time1 = 0.000000
+
+[effect_0011]
+ effect_name = semitone\anomalies\thorn\effects\blowout\expl_sparks_grenade_01
+ flags = 6
+ on_birth_child =
+ on_death_child =
+ on_play_child = semitone\anomalies\thorn\effects\blowout\sb_blood_00
+ time0 = 2.000000
+ time1 = 0.000000
+
+[effect_0012]
+ effect_name = semitone\anomalies\thorn\effects\blowout\sb_blood7_00
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 2.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/thorn_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/thorn_idle.pg
new file mode 100644
index 00000000..3f03f994
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/thorn/thorn_idle.pg
@@ -0,0 +1,69 @@
+[_group]
+ effects_count = 7
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\thorn\effects\idle\spike_darkblue
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\thorn\effects\idle\spike_blue
+ flags = 38
+ on_birth_child = semitone\anomalies\thorn\effects\idle\expl_car_smoke_big_smoke_01
+ on_death_child =
+ on_play_child = semitone\anomalies\thorn\effects\idle\amebae
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\thorn\effects\idle\buble_distort_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\thorn\effects\idle\gravitational_pulse_original_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\thorn\effects\idle\glass_spike
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\thorn\effects\idle\campfire_flame_hd_smoke_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\thorn\effects\idle\campfire_big_sparks_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaliy_dao_distort_puff.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaliy_dao_distort_puff.pe
new file mode 100644
index 00000000..cc4e192e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaliy_dao_distort_puff.pe
@@ -0,0 +1,106 @@
+[_effect]
+ action_count = 7
+ flags = 20481
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 22.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 5.000000, 5.000000, 5.000000
+ vec_0001 = 0.001000, 0.001000, 0.001000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.400000
+ vec_0000 = 6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.372549, 0.447059, 0.309804
+ v2 = 0.345098, 0.274510, 0.231373
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.200000, 0.001000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\umbra\distort_anomaly_01
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaliy_dao_distort_puff_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaliy_dao_distort_puff_00.pe
new file mode 100644
index 00000000..7792791c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaliy_dao_distort_puff_00.pe
@@ -0,0 +1,106 @@
+[_effect]
+ action_count = 7
+ flags = 20481
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.001000
+ vec_0001 = 3.000000, 3.000000, 0.001000
+ version = 1
+
+[action_0002]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 22.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.400000
+ vec_0000 = 6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0002_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.372549, 0.447059, 0.309804
+ v2 = 0.345098, 0.274510, 0.231373
+
+[domain_action_0002_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0002_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0002_0003]
+ type = 1
+ v0 = 0.200000, 0.200000, 0.001000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0002_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 15.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\umbra\distort_anomaly_01
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaliy_dao_puff_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaliy_dao_puff_00.pe
new file mode 100644
index 00000000..bf4af0ed
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaliy_dao_puff_00.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 21505
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 0.474510, 0.474510, 0.474510
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.150000, 0.150000, 0.001000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.150000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.078431, 0.101961, 0.149020
+ v1 = 0.372549, 0.447059, 0.309804
+ v2 = 0.345098, 0.274510, 0.231373
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.200000, 0.001000
+ v1 = 0.300000, 0.300000, 0.001000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\smoke_tiled_b
+
+[timelimit]
+ value = 0.200000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaliy_dao_sphere_blast_smoke_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaliy_dao_sphere_blast_smoke_00.pe
new file mode 100644
index 00000000..0d54eda7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaliy_dao_sphere_blast_smoke_00.pe
@@ -0,0 +1,102 @@
+[_effect]
+ action_count = 6
+ flags = 3073
+ max_particles = 250
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.400000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 300.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.700000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.611765, 0.611765, 0.611765
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 3.000000, 3.000000, 0.001000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.082353, 0.113726, 0.180392
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 5
+ v0 = 0.000000, 0.034907, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.500000, 1.000000, 0.001000
+ v1 = 1.000000, 1.000000, 0.001000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 16.000000, 32.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\anm_smoke_desat
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_da_darkness_core.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_da_darkness_core.pe
new file mode 100644
index 00000000..e9472bfc
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_da_darkness_core.pe
@@ -0,0 +1,74 @@
+[_effect]
+ action_count = 3
+ flags = 3073
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 0
+ flt_0000 = 0.200000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.800000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -12.566371, -12.566371, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 6.000000, 6.000000, 6.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.500000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 57
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\darkness_core_4k_v1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_bubble_pulse_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_bubble_pulse_00.pe
new file mode 100644
index 00000000..c9f75484
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_bubble_pulse_00.pe
@@ -0,0 +1,141 @@
+[_effect]
+ action_count = 10
+ flags = 2136065
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ flt_0001 = 3000.000000
+ flt_0002 = 2600.000000
+ vec_0000 = 0.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = damping
+ action_type = 4
+ flags = 1
+ flt_0000 = 80.000000
+ flt_0001 = 2.000000
+ vec_0000 = -25.000000, -25.000000, -25.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.200000
+ flt_0003 = 0.800000
+ vec_0000 = 0.556863, 0.337255, 0.972549
+ version = 1
+
+[action_0005]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 1.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0007]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0009]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.380392, 0.380392, 0.380392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 5
+ v0 = 0.050000, 0.050000, 0.001000
+ v1 = 0.200000, 0.800000, 0.800000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -4.000000, -4.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0008_0000]
+ type = 5
+ v0 = 1.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\umbra\pfx_distortion
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_big_puff.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_big_puff.pe
new file mode 100644
index 00000000..5a0a41cb
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_big_puff.pe
@@ -0,0 +1,163 @@
+[_effect]
+ action_count = 11
+ flags = 31745
+ max_particles = 10
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.700000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.619608, 0.635294, 0.619608
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 4.000000
+ flt_0001 = 100.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 25.000000
+ flt_0001 = 200.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 5.000000, -2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0010]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.082353, 0.113726, 0.180392
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -29.999994, -29.999994
+ v1 = -180.000000, 29.999994, 29.999994
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.200000, 0.200000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 100.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\around
+
+[timelimit]
+ value = 0.400000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_big_puff_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_big_puff_00.pe
new file mode 100644
index 00000000..922e8c6f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_big_puff_00.pe
@@ -0,0 +1,163 @@
+[_effect]
+ action_count = 11
+ flags = 27649
+ max_particles = 10
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.700000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.619608, 0.635294, 0.619608
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 4.000000
+ flt_0001 = 100.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 25.000000
+ flt_0001 = 200.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 5.000000, -2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0010]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -29.999994, -29.999994
+ v1 = -180.000000, 29.999994, 29.999994
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 3.000000, 3.000000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 100.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\around
+
+[timelimit]
+ value = 0.400000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_shader.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_shader.pe
new file mode 100644
index 00000000..a0042796
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_shader.pe
@@ -0,0 +1,141 @@
+[_effect]
+ action_count = 10
+ flags = 2136065
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = scatter
+ action_type = 31
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ flt_0001 = 3000.000000
+ flt_0002 = 2600.000000
+ vec_0000 = 0.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = damping
+ action_type = 4
+ flags = 1
+ flt_0000 = 80.000000
+ flt_0001 = 2.000000
+ vec_0000 = -20.000000, -20.000000, -20.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 55.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.200000
+ flt_0003 = 0.800000
+ vec_0000 = 0.556863, 0.337255, 0.972549
+ version = 1
+
+[action_0005]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.300000, 0.300000, 0.300000
+ vec_0001 = 5.000000, 5.000000, 5.000000
+ version = 1
+
+[action_0007]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 6.283186, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0009]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.380392, 0.380392, 0.380392
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 1.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 5
+ v0 = 0.200000, 0.200000, 0.200000
+ v1 = 0.200000, 0.800000, 0.800000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -4.000000, -4.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0008_0000]
+ type = 5
+ v0 = 3.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\umbra\pfx_dist2a
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke.pe
new file mode 100644
index 00000000..81c028a1
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke.pe
@@ -0,0 +1,99 @@
+[_effect]
+ action_count = 6
+ flags = 3073
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 5000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.500000, 0.500000, 0.000000
+ vec_0001 = 10.000000, 10.000000, 0.001000
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.000000
+ vec_0000 = 0.000000, 0.000017, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.023529, 0.027451, 0.027451
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 5
+ v0 = 3.141593, 3.141593, 3.141593
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 1.000000, 12.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_rotation_x-.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_rotation_x-.pe
new file mode 100644
index 00000000..496de641
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_rotation_x-.pe
@@ -0,0 +1,168 @@
+[_effect]
+ action_count = 12
+ flags = 11265
+ max_particles = 240
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -0.500000, -2.000000, -2.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 4.000000, -2.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 2.000000
+ flt_0001 = 5.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 5.000000, 6.000000, 2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0008]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0009]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.470588, 0.549020, 0.466667
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.082353, 0.113726, 0.180392
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 3.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 2.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 100.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_rotation_x-_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_rotation_x-_00.pe
new file mode 100644
index 00000000..bfdfdada
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_rotation_x-_00.pe
@@ -0,0 +1,168 @@
+[_effect]
+ action_count = 12
+ flags = 2108417
+ max_particles = 240
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -0.500000, -2.000000, -2.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 4.000000, -2.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 2.000000
+ flt_0001 = 5.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 5.000000, 6.000000, 2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0008]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0009]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.968628, 0.968628, 0.968628
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 5.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.100000, 0.000000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 4.000000, 4.000000, 0.001000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 2.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 100.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_rotation_x.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_rotation_x.pe
new file mode 100644
index 00000000..cffa03a0
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_rotation_x.pe
@@ -0,0 +1,168 @@
+[_effect]
+ action_count = 12
+ flags = 11265
+ max_particles = 240
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.500000, -2.000000, 2.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 1.000000, -1.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 4.000000, 2.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 2.000000
+ flt_0001 = 5.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -5.000000, 6.000000, -2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0008]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0009]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.470588, 0.549020, 0.466667
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.082353, 0.113726, 0.180392
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = -3.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = -2.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 100.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_rotation_x_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_rotation_x_00.pe
new file mode 100644
index 00000000..ac4ee20c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_rotation_x_00.pe
@@ -0,0 +1,168 @@
+[_effect]
+ action_count = 12
+ flags = 11265
+ max_particles = 240
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.500000, -2.000000, 2.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 1.000000, -1.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 4.000000, 2.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 2.000000
+ flt_0001 = 5.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -5.000000, 6.000000, -2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0008]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0009]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 5.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = -0.100000, 0.000000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 4.000000, 4.000000, 0.001000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = -2.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 100.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_x+.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_x+.pe
new file mode 100644
index 00000000..0c52d84b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_x+.pe
@@ -0,0 +1,168 @@
+[_effect]
+ action_count = 12
+ flags = 11265
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.611765, 0.611765, 0.611765
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 3.000000
+ flt_0001 = 150.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 8.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 25.000000
+ flt_0001 = 200.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 5.000000, -2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 0
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.082353, 0.113726, 0.180392
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.200000, 2.000000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 5
+ v0 = 0.052360, 0.052360, -0.052360
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 5.000000, 5.000000, 5.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 1.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 100.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_x-.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_x-.pe
new file mode 100644
index 00000000..6838d851
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_x-.pe
@@ -0,0 +1,168 @@
+[_effect]
+ action_count = 12
+ flags = 11265
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.619608, 0.635294, 0.619608
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 3.000000
+ flt_0001 = 150.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -8.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 25.000000
+ flt_0001 = 200.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 5.000000, -2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 0
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.082353, 0.113726, 0.180392
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = -0.200000, 2.000000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 5
+ v0 = 0.052360, 0.052360, -0.052360
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 5.000000, 5.000000, 5.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = -1.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 100.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_y-.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_y-.pe
new file mode 100644
index 00000000..6030602e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_y-.pe
@@ -0,0 +1,168 @@
+[_effect]
+ action_count = 12
+ flags = 11265
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.619608, 0.635294, 0.619608
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 3.000000
+ flt_0001 = 150.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 25.000000
+ flt_0001 = 200.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 5.000000, -2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 0
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.082353, 0.113726, 0.180392
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 5
+ v0 = 0.052360, 0.052360, -0.052360
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 5.000000, 5.000000, 5.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 2.000000, -1.000000, 2.000000
+ v1 = -2.000000, 0.700000, -2.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 100.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_y-_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_y-_00.pe
new file mode 100644
index 00000000..22b03665
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_y-_00.pe
@@ -0,0 +1,168 @@
+[_effect]
+ action_count = 12
+ flags = 11265
+ max_particles = 45
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 3.000000
+ flt_0001 = 150.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 25.000000
+ flt_0001 = 200.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 5.000000, -2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 0
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 5
+ v0 = 0.052360, 0.052360, -0.052360
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 5.000000, 5.000000, 5.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 2.000000, -1.000000, 2.000000
+ v1 = -2.000000, 0.700000, -2.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 100.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_y.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_y.pe
new file mode 100644
index 00000000..a2b2a800
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_y.pe
@@ -0,0 +1,168 @@
+[_effect]
+ action_count = 12
+ flags = 11265
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.619608, 0.635294, 0.619608
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 3.000000
+ flt_0001 = 150.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 25.000000
+ flt_0001 = 200.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 5.000000, -2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 0
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.082353, 0.113726, 0.180392
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.200000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 5
+ v0 = 0.052360, 0.052360, -0.052360
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 5.000000, 5.000000, 5.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 100.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_y_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_y_00.pe
new file mode 100644
index 00000000..07661d3b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_y_00.pe
@@ -0,0 +1,168 @@
+[_effect]
+ action_count = 12
+ flags = 11265
+ max_particles = 45
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 55.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 3.000000
+ flt_0001 = 150.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 25.000000
+ flt_0001 = 200.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 5.000000, -2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 0
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.800000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 5
+ v0 = 0.052360, 0.052360, -0.052360
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 5.000000, 5.000000, 5.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 100.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_z+.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_z+.pe
new file mode 100644
index 00000000..6fc3744f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_z+.pe
@@ -0,0 +1,168 @@
+[_effect]
+ action_count = 12
+ flags = 11265
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.619608, 0.635294, 0.619608
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 3.000000
+ flt_0001 = 150.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 1.000000, 8.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 25.000000
+ flt_0001 = 200.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 5.000000, -2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 0
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.082353, 0.113726, 0.180392
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.200000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 5
+ v0 = 0.052360, 0.052360, -0.052360
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 5.000000, 5.000000, 5.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 1.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 100.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_z-.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_z-.pe
new file mode 100644
index 00000000..a5e56504
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_smoke_z-.pe
@@ -0,0 +1,168 @@
+[_effect]
+ action_count = 12
+ flags = 11265
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.619608, 0.635294, 0.619608
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 3.000000
+ flt_0001 = 150.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 1.000000, -8.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 25.000000
+ flt_0001 = 200.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 5.000000, -2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 0
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.082353, 0.113726, 0.180392
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, -0.200000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 5
+ v0 = 0.052360, 0.052360, -0.052360
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 5.000000, 5.000000, 5.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, -1.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 100.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_tentacle_x-.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_tentacle_x-.pe
new file mode 100644
index 00000000..f1b4d344
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_tentacle_x-.pe
@@ -0,0 +1,168 @@
+[_effect]
+ action_count = 12
+ flags = 11265
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 3.000000
+ flt_0001 = 150.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -8.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 25.000000
+ flt_0001 = 200.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 5.000000, -2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 0
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.082353, 0.113726, 0.180392
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 5
+ v0 = 0.052360, 0.052360, -0.052360
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 7
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 50.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_tentacle_x.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_tentacle_x.pe
new file mode 100644
index 00000000..b2b0172c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_tentacle_x.pe
@@ -0,0 +1,168 @@
+[_effect]
+ action_count = 12
+ flags = 11265
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 3.000000
+ flt_0001 = 150.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 8.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 25.000000
+ flt_0001 = 200.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 5.000000, -2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 0
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.082353, 0.113726, 0.180392
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 5
+ v0 = 0.052360, 0.052360, -0.052360
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 7
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 50.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_tentacle_x_test.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_tentacle_x_test.pe
new file mode 100644
index 00000000..01731e3c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_darkness_tentacle_x_test.pe
@@ -0,0 +1,168 @@
+[_effect]
+ action_count = 12
+ flags = 11265
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 22.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 3.000000
+ flt_0001 = 150.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 8.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 25.000000
+ flt_0001 = 200.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 5.000000, -2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 0
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 5
+ v0 = 0.052360, 0.052360, -0.052360
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 7
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 5.000000, 5.000000, 5.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 0.500000, 2.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 35.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_glow_damping_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_glow_damping_00.pe
new file mode 100644
index 00000000..82d4fa7e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_glow_damping_00.pe
@@ -0,0 +1,106 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 75
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.450000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.500000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.023529, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 25.000000, 25.000000, 10.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = 39.866164, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ flt_0001 = 220.000000
+ flt_0002 = 66.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 25.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\puffcolorsplashflicker2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_orbiting_leaves_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_orbiting_leaves_00.pe
new file mode 100644
index 00000000..465bc786
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/anomaly_dao_orbiting_leaves_00.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 3.000000, 8.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.025000, 0.025000, 0.000000
+ v1 = 0.170000, 0.170000, 0.170000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 3.000000, 8.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/darkness_leaves_2_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/darkness_leaves_2_00.pe
new file mode 100644
index 00000000..d0b832ab
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/darkness_leaves_2_00.pe
@@ -0,0 +1,88 @@
+[_effect]
+ action_count = 4
+ flags = 39937
+ max_particles = 250
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 32.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.141176, 0.141176, 0.141176
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.129412, 0.129412, 0.129412
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 2.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 5.000000, 10.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 16.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\bitsleaves01anim_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/fog_1_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/fog_1_00.pe
new file mode 100644
index 00000000..8907fd3a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/fog_1_00.pe
@@ -0,0 +1,119 @@
+[_effect]
+ action_count = 7
+ flags = 138241
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 900.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.000000
+ flt_0003 = 37.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.062745, 0.062745, 0.062745
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -27.658924, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.001000
+ flt_0001 = 7.000000
+ flt_0002 = 30.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ vec_0001 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.027451, 0.027451, 0.027451
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 2.000000, 50.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 30.000000, 20.000000, 0.000000
+ v1 = 60.000000, 50.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 0.000000, 0.000000
+ v2 = 0.200000, 0.000000, 0.000000
+
+[domain_action_0002_0000]
+ type = 3
+ v0 = 0.000000, -1.700000, 0.000000
+ v1 = 0.000000, -1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 5
+ frame_count = 25
+ reserved = 0.000000, 0.000000
+ speed = 16.000000
+ tex_size = 0.200000, 0.200000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\dust_loop_02
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/nyah_idle_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/nyah_idle_01.pe
new file mode 100644
index 00000000..ab5c29bd
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/nyah_idle_01.pe
@@ -0,0 +1,136 @@
+[_effect]
+ action_count = 9
+ flags = 34817
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 5.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 16.000000, 16.000000, 16.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -16.000000, -16.000000, -16.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.002000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 360.000000, 0.000000, 30.000000
+ vec_0001 = 720.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.180392, 0.192157, 0.145098
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.100000, 0.100000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.100000, 14.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\leaf
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/teleport_bubble_particle_output_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/teleport_bubble_particle_output_00.pe
new file mode 100644
index 00000000..4534ff14
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/teleport_bubble_particle_output_00.pe
@@ -0,0 +1,136 @@
+[_effect]
+ action_count = 9
+ flags = 38913
+ max_particles = 3
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 0
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.500000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.300000, 0.300000, 3.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 4
+ v0 = -1.000000, -1.000000, -1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 3.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\fx_moon_full_foggy
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/wish_granter_fog_heavy_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/wish_granter_fog_heavy_00.pe
new file mode 100644
index 00000000..ebbe0381
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/wish_granter_fog_heavy_00.pe
@@ -0,0 +1,97 @@
+[_effect]
+ action_count = 6
+ flags = 8392705
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.000000
+ flt_0003 = 80.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.300000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 0.500000
+ vec_0000 = 0.933333, 0.933333, 0.933333
+ version = 1
+
+[action_0003]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.010000
+ vec_0000 = 5.397745, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 15.000000, 2.000000, 15.000000
+ v1 = -14.000000, 0.000000, -12.000000
+ v2 = 15.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -1.000000, -1.000000, -1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 2.000000, 0.000000, 0.000000
+ v1 = 12.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.200000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\pfx_smoke_g, semitone\anomalies\umbra\pfx_smoke_n
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/wish_granter_smog_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/wish_granter_smog_00.pe
new file mode 100644
index 00000000..3ee74b76
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/effects/wish_granter_smog_00.pe
@@ -0,0 +1,97 @@
+[_effect]
+ action_count = 6
+ flags = 8392705
+ max_particles = 120
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.400000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 0.500000
+ vec_0000 = 0.803922, 0.803922, 0.803922
+ version = 1
+
+[action_0003]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.020000
+ vec_0000 = 5.397745, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 14.000000, 0.300000, 14.000000
+ v1 = -14.000000, 1.000000, -14.000000
+ v2 = 15.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -1.000000, -1.000000, -1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 4.000000, 0.000000, 0.000000
+ v1 = 10.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.200000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\umbra\pfx_smokepuffs2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/umbra_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/umbra_idle.pg
new file mode 100644
index 00000000..a96f411a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/umbra/umbra_idle.pg
@@ -0,0 +1,69 @@
+[_group]
+ effects_count = 7
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\umbra\effects\anomaly_dao_orbiting_leaves_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\umbra\effects\anomaly_dao_bubble_pulse_00
+ flags = 68
+ on_birth_child =
+ on_death_child = semitone\anomalies\umbra\effects\anomaly_dao_darkness_big_puff
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\umbra\effects\anomaly_da_darkness_core
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\umbra\effects\anomaly_dao_darkness_tentacle_x_test
+ flags = 68
+ on_birth_child =
+ on_death_child = semitone\anomalies\umbra\effects\anomaliy_dao_distort_puff_00
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\umbra\effects\teleport_bubble_particle_output_00
+ flags = 70
+ on_birth_child =
+ on_death_child = semitone\anomalies\umbra\effects\anomaly_dao_darkness_big_puff_00
+ on_play_child = semitone\anomalies\umbra\effects\nyah_idle_01
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\umbra\effects\anomaly_dao_darkness_smoke_y-_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\umbra\effects\anomaly_dao_darkness_smoke_y_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/anomaly_wish_granter_leaves.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/anomaly_wish_granter_leaves.pe
new file mode 100644
index 00000000..2d6fc26a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/anomaly_wish_granter_leaves.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.349020, 0.403922, 0.349020
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.337255, 0.392157, 0.329412
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 5.000000, 10.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.025000, 0.025000, 0.000000
+ v1 = 0.150000, 0.150000, 0.150000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.400000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 3.000000, 8.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 64.000000, 64.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\wish_granter\bushtrimmings_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/fog_1_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/fog_1_00.pe
new file mode 100644
index 00000000..d2b822bb
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/fog_1_00.pe
@@ -0,0 +1,119 @@
+[_effect]
+ action_count = 7
+ flags = 138241
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 900.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.000000
+ flt_0003 = 45.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 0
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.600000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -27.658924, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.001000
+ flt_0001 = 7.000000
+ flt_0002 = 30.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ vec_0001 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 4.000000, 0.000000, 4.000000
+ v1 = -5.000000, 20.000000, -5.000000
+ v2 = 0.000000, 25.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 15.000000, 15.000000, 15.000000
+ v1 = 60.000000, 50.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.200000, 0.000000, 0.000000
+
+[domain_action_0002_0000]
+ type = 3
+ v0 = 0.000000, -1.700000, 0.000000
+ v1 = 0.000000, -1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 5
+ frame_count = 25
+ reserved = 0.000000, 0.000000
+ speed = 18.000000
+ tex_size = 0.200000, 0.200000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\wish_granter\dust_loop_02
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/monolith_dist.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/monolith_dist.pe
new file mode 100644
index 00000000..b37b4e3b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/monolith_dist.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 14
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.450000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.023529, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 40.000000, 40.000000, 10.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = 39.866164, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ flt_0001 = 220.000000
+ flt_0002 = 66.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 25.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.047059, 0.086275, 0.098039
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 10.000000, 0.000000
+ v1 = 0.000000, 14.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\wish_granter\cumulus_02
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/monolith_dist00_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/monolith_dist00_00.pe
new file mode 100644
index 00000000..224996c0
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/monolith_dist00_00.pe
@@ -0,0 +1,127 @@
+[_effect]
+ action_count = 9
+ flags = 1
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 5.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.003922, 0.003922
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.700000, 0.700000, 0.000000
+ vec_0001 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = off
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.010000
+ vec_0000 = 39.866164, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ flt_0001 = 220.000000
+ flt_0002 = 66.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 25.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0008]
+ action_name = targetsize_00
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 10.000000, 10.000000, 0.001000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 10.000000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\wish_granter\distort_anomaly_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/monolith_dist_glow_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/monolith_dist_glow_00.pe
new file mode 100644
index 00000000..f421d01b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/monolith_dist_glow_00.pe
@@ -0,0 +1,94 @@
+[_effect]
+ action_count = 6
+ flags = 1
+ max_particles = 33
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.011765, 0.011765
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.700000, 0.700000, 0.000000
+ vec_0001 = 20.000000, 20.000000, 20.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 39.866164, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.023529, 0.050980, 0.058824
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = -1.000000, 6.000000, -1.000000
+ v1 = 1.000000, 14.000000, 1.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 40.000000, 40.000000, 40.000000
+ v1 = 20.000000, 20.000000, 20.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\wish_granter\pfx_gradient
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/monolith_dist_glow_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/monolith_dist_glow_01.pe
new file mode 100644
index 00000000..e251ab7f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/monolith_dist_glow_01.pe
@@ -0,0 +1,106 @@
+[_effect]
+ action_count = 7
+ flags = 3178497
+ max_particles = 33
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.480000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 6.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.015686, 0.015686
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.700000, 0.700000, 0.000000
+ vec_0001 = 40.000000, 40.000000, 40.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.010000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.500000
+ vec_0000 = 0.000000, -14.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.054902, 0.164706, 0.200000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 10.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 20.000000, 20.000000, 20.000000
+ v1 = 20.000000, 20.000000, 20.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 32.000000, 0.000000
+ v1 = 0.000000, 28.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\wish_granter\pfx_anomaly_8
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/monolith_dist_glow_03.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/monolith_dist_glow_03.pe
new file mode 100644
index 00000000..2dca8bcd
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/monolith_dist_glow_03.pe
@@ -0,0 +1,106 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.500000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.023529, 0.023529
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 25.000000, 25.000000, 10.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = 39.866164, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 5.000000
+ flt_0001 = 220.000000
+ flt_0002 = 66.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 25.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.149020, 0.517647, 0.709804
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 0.200000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -137.000000, -1.000000, -1.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 10.000000, 10.000000, 10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\wish_granter\genericpuff
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/monolith_idle_smoke_big_puffs.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/monolith_idle_smoke_big_puffs.pe
new file mode 100644
index 00000000..0b735063
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/monolith_idle_smoke_big_puffs.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 3073
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 7.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.500000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 0.200000
+ vec_0000 = 0.521569, 0.525490, 0.509804
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 0.003922, 0.003922, 0.003922
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.623529, 0.580392, 0.541176
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 12.000000, 3.000000, 12.000000
+ v1 = -12.000000, -2.000000, -12.000000
+ v2 = 0.000000, 1.650000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 137.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.300000, 0.300000, 0.300000
+ v1 = 0.150000, 0.150000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\wish_granter\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_active_smoke_puff.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_active_smoke_puff.pe
new file mode 100644
index 00000000..64064724
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_active_smoke_puff.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 19457
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.250000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 0
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.105882, 0.188235, 0.286275
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.500000, 0.500000, 0.000000
+ vec_0001 = 24.000000, 24.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.000000
+ vec_0000 = 0.000000, 0.000017, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 4.000000, 0.000000, 4.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.772549, 0.752941, 0.741176
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 29.845130, 29.845130, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 7.000000, 0.000000
+ v2 = 1.000000, 45.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 28.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\wish_granter\around
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_core_steam.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_core_steam.pe
new file mode 100644
index 00000000..0685dd92
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_core_steam.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 22
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 14.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.400000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.500000, 2.500000, 0.000000
+ vec_0001 = 10.000000, 10.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.034907, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 5.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.180392, 0.537255, 0.600000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 5.000000, 10.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 5
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 8.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 16.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\wish_granter\cumulus_02
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_darkness_smoke_y.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_darkness_smoke_y.pe
new file mode 100644
index 00000000..d29fa132
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_darkness_smoke_y.pe
@@ -0,0 +1,168 @@
+[_effect]
+ action_count = 12
+ flags = 11265
+ max_particles = 14
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 10.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 22.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.619608, 0.635294, 0.619608
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 3.000000
+ flt_0001 = 150.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 25.000000
+ flt_0001 = 200.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 5.000000, -2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.200000
+ vec_0000 = 0.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 0
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.529412, 0.850980, 0.878431
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.100000, 0.000000
+ v1 = 0.000000, 6.000000, 0.000000
+ v2 = 4.000000, 8.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 5
+ v0 = 0.052360, 0.052360, -0.052360
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 5.000000, 5.000000, 5.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 0.000000, -1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 100.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\wish_granter\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_electric_smoke.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_electric_smoke.pe
new file mode 100644
index 00000000..14fb8259
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_electric_smoke.pe
@@ -0,0 +1,101 @@
+[_effect]
+ action_count = 6
+ flags = 7169
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 21.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 2.500000, 2.500000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 4.000000, 12.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 5.235988, 5.235988, 5.235988
+ v1 = -5.235988, -5.235988, -5.235988
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\wish_granter\electricblast3
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_electric_smoke_puff.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_electric_smoke_puff.pe
new file mode 100644
index 00000000..8536b2cb
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_electric_smoke_puff.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 19457
+ max_particles = 2
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.666667, 0.678431, 0.678431
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 15.000000, 15.000000, 0.100000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.500000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.666667, 0.678431, 0.678431
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 4.000000, 25.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -17.435840, -17.435840, -17.435840
+ v1 = 17.435840, 17.435840, 17.435840
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.400000, 0.400000, 0.500000
+ v1 = 2.000000, 2.000000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\wish_granter\smoke_burst_02
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_leaves_2.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_leaves_2.pe
new file mode 100644
index 00000000..af45018a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_leaves_2.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 6
+ flags = 39937
+ max_particles = 250
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 32.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.215686, 0.274510, 0.215686
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 0.211765, 0.262745, 0.203922
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 5
+ v0 = 0.000000, 15.000000, 0.000000
+ v1 = 2.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.200000, 0.200000, 0.200000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 5.000000, 10.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 16.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\wish_granter\bitsleaves01anim_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_orbiting_particles_v1_x+.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_orbiting_particles_v1_x+.pe
new file mode 100644
index 00000000..839ee109
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_orbiting_particles_v1_x+.pe
@@ -0,0 +1,155 @@
+[_effect]
+ action_count = 11
+ flags = 6145
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 6.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_x
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 10.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_z-
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 35.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 8.000000, -10.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_x-
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 30.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -7.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_z+
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 2.000000, 7.000000
+ version = 1
+
+[action_0006]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0008]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0009]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0010]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.282353, 0.835294, 0.854902
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 7.000000, 2.000000, 0.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.500000, 0.500000, 0.500000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 5
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\wish_granter\flash_particle
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_orbiting_particles_v1_x-.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_orbiting_particles_v1_x-.pe
new file mode 100644
index 00000000..2db73ec3
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_orbiting_particles_v1_x-.pe
@@ -0,0 +1,155 @@
+[_effect]
+ action_count = 11
+ flags = 6145
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 6.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.800000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_x
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 30.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 8.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_z-
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 2.000000, -7.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_x-
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -7.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_z+
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 50.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 8.000000, 10.000000
+ version = 1
+
+[action_0006]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0008]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0009]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0010]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.282353, 0.831373, 0.850980
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = -7.000000, 2.000000, 0.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.500000, 0.500000, 0.500000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 5
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\wish_granter\flash_particle
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_orbiting_particles_v1_z+.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_orbiting_particles_v1_z+.pe
new file mode 100644
index 00000000..f96a9b47
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_orbiting_particles_v1_z+.pe
@@ -0,0 +1,155 @@
+[_effect]
+ action_count = 11
+ flags = 6145
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 6.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_z+
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 2.000000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 2.000000, 7.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_x
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 25.000000
+ flt_0001 = 25.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 7.000000, 8.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_z-
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 2.000000, -7.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_x-
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -7.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0008]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0009]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, 37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0010]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.223529, 0.658824, 0.658824
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 7.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.600000, 0.600000, 0.600000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 5
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\wish_granter\flash_particle
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_orbiting_particles_v1_z-.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_orbiting_particles_v1_z-.pe
new file mode 100644
index 00000000..00e6e422
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_orbiting_particles_v1_z-.pe
@@ -0,0 +1,155 @@
+[_effect]
+ action_count = 11
+ flags = 6145
+ max_particles = 55
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 6.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_z+
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 2.000000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 2.000000, 7.000000
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_x
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 25.000000
+ flt_0001 = 25.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -7.000000, 8.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_z-
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 2.000000, -7.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_x-
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -7.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0007]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0008]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0009]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 0.000000, -37.000000, 0.000000
+ vec_0001 = 0.000000, 3.000000, 0.000000
+ version = 1
+
+[action_0010]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.223529, 0.658824, 0.658824
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 7.000000
+ v1 = 0.500000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.600000, 0.600000, 0.600000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0007_0000]
+ type = 5
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\wish_granter\flash_particle
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_particle_output.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_particle_output.pe
new file mode 100644
index 00000000..6aa3fd96
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_particle_output.pe
@@ -0,0 +1,136 @@
+[_effect]
+ action_count = 9
+ flags = 38913
+ max_particles = 120
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 18.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 20.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 50.000000
+ flt_0001 = 250.000000
+ flt_0002 = 170.000000
+ vec_0000 = 360.000000, 0.000000, 30.000000
+ vec_0001 = 720.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 0.717647, 0.929412, 1.000000
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 4
+ v0 = -8.000000, 0.000000, -8.000000
+ v1 = 8.000000, 12.000000, 8.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.500000, 0.500000, 0.500000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 3.000000, 8.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\wish_granter\flash_particle
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_smoke.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_smoke.pe
new file mode 100644
index 00000000..d24da572
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_smoke.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 80
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.400000
+ vec_0001 = 5.000000, 5.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.005000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.219608, 0.513726, 0.549020
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = -6.000000, 0.000000, -6.000000
+ v1 = 6.000000, 15.000000, 6.000000
+ v2 = 5.000000, 10.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 180.000000, -30.000000, -30.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 5
+ v0 = 0.100000, 0.100000, 0.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 1.000000, 0.000000, 1.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 2.000000, 5.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 12.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\wish_granter\water_river_a
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_smoke_fast.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_smoke_fast.pe
new file mode 100644
index 00000000..ff5379c8
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_smoke_fast.pe
@@ -0,0 +1,171 @@
+[_effect]
+ action_count = 12
+ flags = 27649
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.300000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 10.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.619608, 0.635294, 0.619608
+ version = 1
+
+[action_0003]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 3.000000
+ flt_0001 = 150.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 25.000000
+ flt_0001 = 200.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = orbitpoint_3
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.010000
+ flt_0001 = 44.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 2.000000, 5.000000, -2.000000
+ version = 1
+
+[action_0006]
+ action_name = orbitpoint_4
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 8.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -2.000000, 7.000000, -2.000000
+ version = 1
+
+[action_0007]
+ action_name = orbitpoint_5
+ action_type = 14
+ bool_0000 = on
+ flags = 2
+ flt_0000 = 0.020000
+ flt_0001 = 10.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 0.000000, 10.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 3.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 10.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.200000
+ vec_0000 = 10.000000, 10.000000, 10.000000
+ version = 1
+
+[action_0010]
+ action_name = speedlimit
+ action_type = 22
+ flags = 0
+ flt_0000 = 8.000000
+ flt_0001 = 5.000000
+ version = 1
+
+[action_0011]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.082353, 0.113726, 0.180392
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 6
+ v0 = -12.566371, 0.052360, -0.052360
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 1.000000, 1.000000, 0.001000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 0.300000, -0.300000, 0.300000
+ v1 = -0.500000, 0.300000, -0.500000
+ v2 = 2.900000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 100.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\wish_granter\around
+
+[timelimit]
+ value = 0.300000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_smoke_ground_spread.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_smoke_ground_spread.pe
new file mode 100644
index 00000000..91da9561
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_smoke_ground_spread.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 256
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 28.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.300000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.500000, 0.500000, 0.500000
+ vec_0001 = 2.000000, 1.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 1.000000, 0.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.000000
+ vec_0000 = 0.000000, 0.000017, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.541176, 0.607843, 0.650980
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 16.000000, 24.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\wish_granter\cumulus_02
+
+[timelimit]
+ value = 0.300000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_vacuum_leaves.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_vacuum_leaves.pe
new file mode 100644
index 00000000..c06266a7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/effects/wish_granter_vacuum_leaves.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 6
+ flags = 39937
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint
+ action_type = 14
+ bool_0000 = on
+ flags = 3
+ flt_0000 = 0.100000
+ flt_0001 = 100.000000
+ flt_0002 = 999999998050644.787200
+ vec_0000 = 0.000000, 20.000000, 0.000000
+ version = 1
+
+[action_0002]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0003]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 8.000000
+ flt_0001 = -1.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0002_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 0
+ v0 = 0.396078, 0.427451, 0.368627
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0005_0001]
+ type = 9
+ v0 = 0.000000, 0.200000, 0.000000
+ v1 = 0.000000, 8.000000, 0.000000
+ v2 = 0.000000, 18.000000, 0.000000
+
+[domain_action_0005_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.100000
+ v1 = 0.150000, 0.150000, 0.150000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0004]
+ type = 0
+ v0 = 0.500000, 4.000000, 0.500000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\wish_granter\bitsleaves01anim_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/wish_granter_active.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/wish_granter_active.pg
new file mode 100644
index 00000000..378a9a62
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/wish_granter_active.pg
@@ -0,0 +1,51 @@
+[_group]
+ effects_count = 5
+ flags = 0
+ timelimit = 12.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\wish_granter\effects\monolith_dist_glow_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\wish_granter\effects\monolith_dist_glow_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\wish_granter\effects\monolith_dist_glow_03
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 12.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\wish_granter\effects\wish_granter_smoke_ground_spread
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\wish_granter\effects\wish_granter_active_smoke_puff
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/wish_granter_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/wish_granter_idle.pg
new file mode 100644
index 00000000..96c8b49d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/wish_granter/wish_granter_idle.pg
@@ -0,0 +1,132 @@
+[_group]
+ effects_count = 14
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\wish_granter\effects\monolith_dist
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\wish_granter\effects\monolith_idle_smoke_big_puffs
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\wish_granter\effects\wish_granter_orbiting_particles_v1_x+
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\wish_granter\effects\wish_granter_orbiting_particles_v1_x-
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\wish_granter\effects\wish_granter_electric_smoke
+ flags = 100
+ on_birth_child = semitone\anomalies\wish_granter\effects\wish_granter_smoke_fast
+ on_death_child = semitone\anomalies\wish_granter\effects\wish_granter_electric_smoke_puff
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\wish_granter\effects\wish_granter_smoke
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\wish_granter\effects\wish_granter_core_steam
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0007]
+ effect_name = semitone\anomalies\wish_granter\effects\wish_granter_particle_output
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0008]
+ effect_name = semitone\anomalies\wish_granter\effects\wish_granter_orbiting_particles_v1_z+
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0009]
+ effect_name = semitone\anomalies\wish_granter\effects\wish_granter_orbiting_particles_v1_z-
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0010]
+ effect_name = semitone\anomalies\wish_granter\effects\monolith_dist00_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0011]
+ effect_name = semitone\anomalies\wish_granter\effects\wish_granter_darkness_smoke_y
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0012]
+ effect_name = semitone\anomalies\wish_granter\effects\fog_1_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0013]
+ effect_name = semitone\anomalies\wish_granter\effects\wish_granter_vacuum_leaves
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/buble_distort_0222.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/buble_distort_0222.pe
new file mode 100644
index 00000000..0618b603
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/buble_distort_0222.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 16385
+ max_particles = 24
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, 0.600000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 2
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 65.000000, 12.000000, 1.000000
+ v1 = 8.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 125.000000, 900.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\zharka\pfx_dist2inv
+
+[timelimit]
+ value = 0.100000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/buble_distort_03.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/buble_distort_03.pe
new file mode 100644
index 00000000..307c9e7c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/buble_distort_03.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 7
+ flags = 1
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.500000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, 0.600000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 9.000000, 2.000000, 1.000000
+ v1 = 8.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\zharka\pfx_dist2inv
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/campfire_big_sparks_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/campfire_big_sparks_00.pe
new file mode 100644
index 00000000..fa082b6f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/campfire_big_sparks_00.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 5
+ flags = 316417
+ max_particles = 30
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 30.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.027000, 0.027000, 1.000000
+ v1 = 0.010000, 0.010000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 1.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 1.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 11
+ frame_count = 77
+ reserved = 93.000000, 146.000000
+ speed = 24.000000
+ tex_size = 0.090820, 0.142578
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\zharka\pfx_ani-fire01
+
+[timelimit]
+ value = 17.000000
+
+[velocity_scale]
+ value = 0.000000, 0.020000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/campfire_flame_hd_smoke_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/campfire_flame_hd_smoke_00.pe
new file mode 100644
index 00000000..8a4c8cd9
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/campfire_flame_hd_smoke_00.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 8395777
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.700000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 0.100000
+ vec_0000 = 0.627451, 0.662745, 0.682353
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.611765, 0.658824, 0.686274
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.686274, 0.725490, 0.756863
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 1.800000, 2.400000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 3.141593, 3.141593, 3.141593
+ v1 = -3.141593, -3.141593, -3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.750000, 0.750000, 0.750000
+ v1 = 1.250000, 1.250000, 1.250000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[frame]
+ dim_x = 7
+ frame_count = 64
+ reserved = 93.000000, 146.000000
+ speed = 32.000000
+ tex_size = 0.142857, 0.142857
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\zharka\smoke_burst_06
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/campfire_flame_hd_smoke_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/campfire_flame_hd_smoke_01.pe
new file mode 100644
index 00000000..eaf071e1
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/campfire_flame_hd_smoke_01.pe
@@ -0,0 +1,113 @@
+[_effect]
+ action_count = 7
+ flags = 8399873
+ max_particles = 2
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.000000
+ flt_0003 = 5.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.200000
+ flt_0001 = 5.000000
+ flt_0002 = 0.000000
+ flt_0003 = 0.100000
+ vec_0000 = 0.768628, 0.737255, 0.737255
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.300000
+ flt_0003 = 1.000000
+ vec_0000 = 0.329412, 0.341176, 0.349020
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 1.200000, 1.200000, 1.200000
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.500000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.768628, 0.737255, 0.737255
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.045000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -3.141593, -3.141593, -3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.200000, 0.200000
+ v1 = 1.250000, 2.250000, 1.250000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[frame]
+ dim_x = 6
+ frame_count = 64
+ reserved = 93.000000, 146.000000
+ speed = 28.000000
+ tex_size = 0.142857, 0.142857
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\zharka\smoke_burst_06
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/campfire_flame_hd_smoke_02.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/campfire_flame_hd_smoke_02.pe
new file mode 100644
index 00000000..2c8a53c2
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/campfire_flame_hd_smoke_02.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 6
+ flags = 8393729
+ max_particles = 8
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.400000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 0.100000
+ vec_0000 = 0.627451, 0.662745, 0.682353
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.611765, 0.658824, 0.686274
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.686274, 0.725490, 0.756863
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 1.800000, 2.400000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 3.141593, 3.141593, 3.141593
+ v1 = -3.141593, -3.141593, -3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.750000, 0.750000, 0.750000
+ v1 = 1.250000, 1.250000, 1.250000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 93.000000, 146.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\zharka\smokefillvapor01atlassoft_d
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/campfire_flame_hd_smoke_11.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/campfire_flame_hd_smoke_11.pe
new file mode 100644
index 00000000..a44fd240
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/campfire_flame_hd_smoke_11.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 6
+ flags = 8410113
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.400000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 0.100000
+ vec_0000 = 0.627451, 0.662745, 0.682353
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.611765, 0.658824, 0.686274
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 0
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ vec_0001 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.686274, 0.725490, 0.756863
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 1.800000, 2.400000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 3.141593, 3.141593, 3.141593
+ v1 = -3.141593, -3.141593, -3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.750000, 0.750000, 0.750000
+ v1 = 1.250000, 1.250000, 1.250000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 93.000000, 146.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\zharka\smokefillvapor01atlassoft_d
+
+[timelimit]
+ value = 18.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/campfire_flame_hd_smoke_12.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/campfire_flame_hd_smoke_12.pe
new file mode 100644
index 00000000..c91c58ea
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/campfire_flame_hd_smoke_12.pe
@@ -0,0 +1,107 @@
+[_effect]
+ action_count = 6
+ flags = 12606465
+ max_particles = 125
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.400000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 0.100000
+ vec_0000 = 0.917647, 0.968628, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.937255, 0.980392, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ vec_0001 = 1.600000, 1.600000, 1.600000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.921569, 0.960784, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 1.800000, 2.400000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 3.141593, 3.141593, 3.141593
+ v1 = -3.141593, -3.141593, -3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.750000, 0.750000, 0.750000
+ v1 = 1.250000, 1.250000, 1.250000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 93.000000, 146.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\zharka\smokeburstpuffanim
+
+[timelimit]
+ value = 18.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_blue_bottom.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_blue_bottom.pe
new file mode 100644
index 00000000..e236a75c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_blue_bottom.pe
@@ -0,0 +1,124 @@
+[_effect]
+ action_count = 8
+ flags = 1072129
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 25.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.999488
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 3
+ vec_0000 = 5.000000, 5.000000, 5.000000
+ vec_0001 = 2.500000, 2.500000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.080000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ int_0000 = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 3
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.631373, 0.682353, 1.000000
+ v1 = 1.000000, 0.168627, 0.031373
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.800000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.030000, 0.030000, 0.030000
+ v1 = 0.037000, 0.037000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 5.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\zharka\bonefire3_1
+
+[timelimit]
+ value = 8.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_bottom_varible_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_bottom_varible_00.pe
new file mode 100644
index 00000000..26e4f728
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_bottom_varible_00.pe
@@ -0,0 +1,115 @@
+[_effect]
+ action_count = 7
+ flags = 27649
+ max_particles = 125
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 64.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 3
+ vec_0000 = 3.000000, 3.000000, 3.000000
+ vec_0001 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ int_0000 = 2
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.490196, 0.337255, 1.000000
+ v1 = 0.266667, 0.266667, 0.266667
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = -0.000000, -0.100000, 0.000000
+ v1 = 0.050000, 0.000000, 0.050000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 29.845130, 29.845130, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.030000, 0.030000, 0.000000
+ v1 = 0.037000, 0.037000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 0.000000, 8.000000, 0.000000
+ v1 = 0.000000, 10.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\zharka\grdbasefire_supernova
+
+[timelimit]
+ value = 9.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_dist_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_dist_01.pe
new file mode 100644
index 00000000..c8491bf7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_dist_01.pe
@@ -0,0 +1,116 @@
+[_effect]
+ action_count = 8
+ flags = 1075201
+ max_particles = 32
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 0.700000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 32.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.200000
+ flt_0003 = 1.000000
+ vec_0000 = 0.039216, 0.039216, 0.039216
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 3
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 4.000000, 4.000000, 4.000000
+ version = 1
+
+[action_0004]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.039000
+ flt_0001 = 1.000000
+ flt_0002 = 4.000000
+ int_0000 = 2
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 3
+ vec_0000 = 0.000000, 5.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[action_0007]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.250000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.588235, 0.588235, 0.588235
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 13.962634, 13.962634, 13.962634
+ v1 = -13.962634, -13.962634, -13.962634
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 12.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\zharka\pfx_dist2inv
+
+[timelimit]
+ value = 10.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_side_fire.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_side_fire.pe
new file mode 100644
index 00000000..409e2664
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_side_fire.pe
@@ -0,0 +1,117 @@
+[_effect]
+ action_count = 7
+ flags = 19457
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 3
+ vec_0000 = 0.700000, 0.700000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 2.273134, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.266667, 0.266667, 0.266667
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.500000, 0.000000, 0.050000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000004, -1.000004
+ v1 = 6.000005, 1.000004, 1.000004
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.037000, 0.037000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 125
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.166667
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\zharka\blowingfire_fwd
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_side_fire_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_side_fire_01.pe
new file mode 100644
index 00000000..840f2d35
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_side_fire_01.pe
@@ -0,0 +1,117 @@
+[_effect]
+ action_count = 7
+ flags = 19457
+ max_particles = 155
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 21.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 3
+ vec_0000 = 0.700000, 0.700000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 2.273134, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[domain_action_0001_0000]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.286275, 0.450980, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 2.000000, 1.000000, 2.000000
+ v1 = -2.000000, 0.000000, -2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000004, -1.000004
+ v1 = 6.000005, 1.000004, 1.000004
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.037000, 0.037000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 125
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.166667
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\zharka\blowingfire_fwd
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_side_fire_blue.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_side_fire_blue.pe
new file mode 100644
index 00000000..10f1da39
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_side_fire_blue.pe
@@ -0,0 +1,117 @@
+[_effect]
+ action_count = 7
+ flags = 19457
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 3
+ vec_0000 = 0.700000, 0.700000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 2.273134, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.450980, 0.643137, 1.000000
+ v1 = 0.266667, 0.266667, 0.266667
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.500000, 0.000000, 0.050000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000004, -1.000004
+ v1 = 6.000005, 1.000004, 1.000004
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.037000, 0.037000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 125
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.166667
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\zharka\blowingfire_fwd
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_side_fire_lol.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_side_fire_lol.pe
new file mode 100644
index 00000000..105d8008
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_side_fire_lol.pe
@@ -0,0 +1,117 @@
+[_effect]
+ action_count = 7
+ flags = 19457
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 3
+ vec_0000 = 0.700000, 0.700000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 2.273134, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.266667, 0.266667, 0.266667
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.400000, 0.000000
+ v1 = 0.500000, 0.000000, 0.050000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000004, -1.000004
+ v1 = 6.000005, 1.000004, 1.000004
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.037000, 0.037000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 125
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.166667
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\zharka\blowingfire_fwd
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_side_fire_small.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_side_fire_small.pe
new file mode 100644
index 00000000..9b4db561
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_side_fire_small.pe
@@ -0,0 +1,117 @@
+[_effect]
+ action_count = 7
+ flags = 19457
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.700000, 0.700000, 0.000000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 0
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = 2.273134, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 1
+ v0 = 0.235294, 0.462745, 1.000000
+ v1 = 1.000000, 0.709804, 0.329412
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.500000, 0.000000, 0.050000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000004, -1.000004
+ v1 = 6.000005, 1.000004, 1.000004
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.037000, 0.037000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 125
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.166667
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\zharka\blowingfire_fwd
+
+[timelimit]
+ value = 9.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_up_steam_07.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_up_steam_07.pe
new file mode 100644
index 00000000..73e31c6a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_line_up_steam_07.pe
@@ -0,0 +1,115 @@
+[_effect]
+ action_count = 7
+ flags = 31745
+ max_particles = 42
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 42.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 5.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 3
+ vec_0000 = 3.000000, 3.000000, 5.000000
+ vec_0001 = 3.000000, 3.000000, 2.000000
+ version = 1
+
+[action_0004]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.080000
+ flt_0001 = 1.000000
+ flt_0002 = 4.000000
+ int_0000 = 2
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 3
+ vec_0000 = 0.000000, 5.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.450980, 0.533333, 0.584314
+ v1 = 0.266667, 0.266667, 0.266667
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 0.700000, 5.000000, 0.700000
+ v1 = -0.700000, 0.000000, -0.700000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 29.845130, 29.845130, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 4
+ v0 = 0.030000, 0.030000, 0.000000
+ v1 = 0.037000, 0.037000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 0.000000, 6.000000, 0.000000
+ v1 = 0.000000, 9.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\zharka\anm_smoke_07a
+
+[timelimit]
+ value = 9.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_thermal_idle_dist_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_thermal_idle_dist_00.pe
new file mode 100644
index 00000000..fe68c997
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_thermal_idle_dist_00.pe
@@ -0,0 +1,105 @@
+[_effect]
+ action_count = 7
+ flags = 1058817
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.750000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 1.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.039216, 0.039216, 0.039216
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, 7.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.100000
+ flt_0001 = 1.000000
+ flt_0002 = 0.300000
+ int_0000 = 2
+ vec_0000 = 0.000000, 4.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.588235, 0.588235, 0.588235
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 13.962634, 13.962634, 13.962634
+ v1 = -13.962634, -13.962634, -13.962634
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 0.300000, 0.300000, 0.300000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.600000, 0.000000
+ v1 = 0.000000, 12.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\zharka\pfx_dist2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_thermal_idle_point_emiter.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_thermal_idle_point_emiter.pe
new file mode 100644
index 00000000..f50de443
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_thermal_idle_point_emiter.pe
@@ -0,0 +1,79 @@
+[_effect]
+ action_count = 4
+ flags = 18433
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.900000
+ vec_0000 = 0.000000, 0.600000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.266667, 0.266667, 0.266667
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.050000, 0.000000, 0.050000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.037000, 0.037000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\zharka\pfx_distortion
+
+[timelimit]
+ value = 9.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_thermal_idle_point_emiter1.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_thermal_idle_point_emiter1.pe
new file mode 100644
index 00000000..557c5ac4
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_burst_thermal_idle_point_emiter1.pe
@@ -0,0 +1,76 @@
+[_effect]
+ action_count = 4
+ flags = 2049
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.900000
+ vec_0000 = 0.000000, 0.600000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.266667, 0.266667, 0.266667
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, -1.000000, 0.000000
+ v1 = 0.050000, 3.000000, 0.050000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.037000, 0.037000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\zharka\pfx_distortion
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_line_core1_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_line_core1_00.pe
new file mode 100644
index 00000000..79c8cf73
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_line_core1_00.pe
@@ -0,0 +1,140 @@
+[_effect]
+ action_count = 9
+ flags = 1108993
+ max_particles = 90
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.750000
+ flt_0002 = 0.000000
+ flt_0003 = 64.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 0.600000, 0.270588
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 3
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ vec_0001 = 1.300000, 1.300000, 0.001000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.080000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ int_0000 = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 3
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[action_0008]
+ action_name = turbulence_00
+ action_type = 30
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ int_0000 = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.250980, 0.407843, 1.000000
+ v1 = 0.333333, 0.564706, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 1
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.300000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.030000, 0.030000, 0.000000
+ v1 = 0.080000, 0.037000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\zharka\bonefirethin
+
+[timelimit]
+ value = 9.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_line_core1_bottm_blue.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_line_core1_bottm_blue.pe
new file mode 100644
index 00000000..e29e1ebc
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_line_core1_bottm_blue.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 1108993
+ max_particles = 90
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.750000
+ flt_0002 = 0.000000
+ flt_0003 = 32.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 3
+ vec_0000 = 5.000000, 6.000000, 5.000000
+ vec_0001 = 1.150000, 4.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.080000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ int_0000 = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 3
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 1
+ v0 = 0.439216, 0.454902, 1.000000
+ v1 = 1.000000, 0.662745, 0.278431
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.800000, 0.000000
+ v1 = 0.050000, 0.000000, 0.050000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.030000, 0.030000, 0.000000
+ v1 = 0.080000, 0.037000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\zharka\bonefirethin
+
+[timelimit]
+ value = 10.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_start_ground_spread.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_start_ground_spread.pe
new file mode 100644
index 00000000..667ef57d
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/flame_start_ground_spread.pe
@@ -0,0 +1,117 @@
+[_effect]
+ action_count = 7
+ flags = 19457
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 15.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.800000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 0.000000
+ vec_0001 = 3.000000, 3.000000, 3.000000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 2.273134, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 1
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.239216, 0.525490, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 7
+ v0 = 1.000000, -0.500000, 1.000000
+ v1 = -1.000000, 0.000000, -1.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000004, -1.000004
+ v1 = 6.000005, 1.000004, 1.000004
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.037000, 0.037000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 125
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.166667
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\zharka\blowingfire_fwd
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/graviti_steam_trigger_weak_232_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/graviti_steam_trigger_weak_232_00.pe
new file mode 100644
index 00000000..4a272fd6
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/graviti_steam_trigger_weak_232_00.pe
@@ -0,0 +1,97 @@
+[_effect]
+ action_count = 6
+ flags = 16385
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 52.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ vec_0001 = 3.000000, 3.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = -14.760582, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 4.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 2.000000, 2.000000, 2.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\zharka\pfx_dist2
+
+[timelimit]
+ value = 18.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/monsters_fire_flame_burst_line_04.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/monsters_fire_flame_burst_line_04.pe
new file mode 100644
index 00000000..1604692e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/monsters_fire_flame_burst_line_04.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 6
+ flags = 1104897
+ max_particles = 42
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.039000
+ flt_0001 = 2.000000
+ flt_0002 = 10.000000
+ int_0000 = 2
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 3
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.266667, 0.266667, 0.266667
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.050000, 0.050000, 0.750000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, -1.570796, 0.000000
+ v1 = 0.000000, 1.570796, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.250000, 0.250000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 0.000000, 12.000000, 0.000000
+ v1 = 0.000000, 18.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\zharka\spark_tiled_a
+
+[timelimit]
+ value = 10.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/monsters_fire_flame_burst_line_044.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/monsters_fire_flame_burst_line_044.pe
new file mode 100644
index 00000000..9cd4d052
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/monsters_fire_flame_burst_line_044.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 6
+ flags = 1104897
+ max_particles = 42
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 1.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 24.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.039000
+ flt_0001 = 2.000000
+ flt_0002 = 10.000000
+ int_0000 = 2
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 3
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.266667, 0.266667, 0.266667
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.050000, 0.050000, 0.750000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, -1.570796, 0.000000
+ v1 = 0.000000, 1.570796, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.250000, 0.250000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 0.000000, 12.000000, 0.000000
+ v1 = 0.000000, 18.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\zharka\spark_tiled_a
+
+[timelimit]
+ value = 9.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/monsters_fire_flame_burst_line_06.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/monsters_fire_flame_burst_line_06.pe
new file mode 100644
index 00000000..4fc588bb
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/monsters_fire_flame_burst_line_06.pe
@@ -0,0 +1,115 @@
+[_effect]
+ action_count = 7
+ flags = 1084417
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 2
+ vec_0000 = 5.000000, 5.000000, 5.000000
+ vec_0001 = 0.400000, 0.400000, 0.400000
+ version = 1
+
+[action_0004]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.039000
+ flt_0001 = 4.000000
+ flt_0002 = 10.000000
+ int_0000 = 2
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 3
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.266667, 0.266667, 0.266667
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 2.000000, 4.000000, 0.750000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 0.000000, -1.570796, 0.000000
+ v1 = 0.000000, 1.570796, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.250000, 0.250000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 5.000000, 0.000000
+ v1 = 0.000000, 4.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\zharka\sparks_tiled
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/monsters_fire_flame_burst_line_09.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/monsters_fire_flame_burst_line_09.pe
new file mode 100644
index 00000000..1c5ba1be
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/monsters_fire_flame_burst_line_09.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 1100801
+ max_particles = 35
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 1.000000
+ flt_0001 = 4.000000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 2
+ vec_0000 = 5.000000, 5.000000, 5.000000
+ vec_0001 = 0.400000, 0.400000, 0.400000
+ version = 1
+
+[action_0004]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.039000
+ flt_0001 = 4.000000
+ flt_0002 = 2.000000
+ int_0000 = 2
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 2
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.266667, 0.266667, 0.266667
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.750000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, -1.570796, 0.000000
+ v1 = 0.000000, 1.570796, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.250000, 0.250000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\zharka\sparks_tiled
+
+[timelimit]
+ value = 9.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/monsters_fire_flame_burst_line_aaaaa.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/monsters_fire_flame_burst_line_aaaaa.pe
new file mode 100644
index 00000000..537d9b4c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/monsters_fire_flame_burst_line_aaaaa.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 1104897
+ max_particles = 90
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 0.750000
+ flt_0002 = 0.000000
+ flt_0003 = 20.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 12.000000
+ flt_0002 = 0.400000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 3
+ vec_0000 = 5.000000, 5.000000, 5.000000
+ vec_0001 = 1.500000, 5.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = turbulence
+ action_type = 30
+ flags = 0
+ flt_0000 = 0.039000
+ flt_0001 = 1.000000
+ flt_0002 = 1.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 3
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 1
+ v0 = 0.474510, 0.474510, 1.000000
+ v1 = 0.266667, 0.266667, 0.266667
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.050000, 0.050000, 0.750000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.030000, 0.030000, 0.000000
+ v1 = 0.037000, 0.037000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 4
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\zharka\bonefire3
+
+[timelimit]
+ value = 9.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/nograv_dust_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/nograv_dust_00.pe
new file mode 100644
index 00000000..8f444d5b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/nograv_dust_00.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.000064
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 5.000000, 5.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.000000
+ vec_0000 = 0.000000, 0.000017, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -0.100000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.286275, 0.286275, 0.286275
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -0.610865, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.200000, 0.500000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 15.000000, 45.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\zharka\puff_00
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/nograv_dust_03.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/nograv_dust_03.pe
new file mode 100644
index 00000000..2c8cedfa
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/nograv_dust_03.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 21505
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 8999.000064
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 7.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 5.000000, 5.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.000000
+ vec_0000 = 0.000000, 0.000017, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 0.000000, -0.100000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.286275, 0.286275, 0.286275
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = -12.566371, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 0.500000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 15.000000, 70.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\zharka\cumulus_02
+
+[timelimit]
+ value = 2.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/zharka_big_smoke.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/zharka_big_smoke.pe
new file mode 100644
index 00000000..37215b3e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/zharka_big_smoke.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 7
+ flags = 8457217
+ max_particles = 15
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 3
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.000000
+ flt_0003 = 5.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.125000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 0.100000
+ vec_0000 = 0.654902, 0.682353, 0.705882
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.300000
+ flt_0003 = 1.000000
+ vec_0000 = 0.666667, 0.690196, 0.717647
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.500000, 0.500000, 0.000000
+ vec_0001 = 7.000000, 7.000000, 0.001000
+ version = 1
+
+[action_0006]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.500000
+ vec_0000 = 1.000000, 6.000000, 1.000000
+ version = 1
+
+[collision]
+ collide_resilence = 0.000000
+ collide_sqr_cutoff = 0.000000
+ one_minus_friction = 1.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.694118, 0.709804, 0.721569
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -3.141593, -3.141593, -3.141593
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.750000, 1.750000, 0.750000
+ v1 = 1.250000, 2.250000, 1.250000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 256
+ reserved = 93.000000, 146.000000
+ speed = 24.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\zharka\dust_puff_02
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/zharka_dust.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/zharka_dust.pe
new file mode 100644
index 00000000..ded5ee4f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/zharka_dust.pe
@@ -0,0 +1,112 @@
+[_effect]
+ action_count = 7
+ flags = 29697
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.700000
+ flt_0001 = 0.100000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 5.000000, 5.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.000000
+ vec_0000 = 40.491640, 0.000017, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 0
+ vec_0000 = 0.000000, -0.100000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.250980, 0.243137, 0.231373
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 3.000000, 1.000000, 3.000000
+ v1 = -3.000000, -0.500000, -3.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = -12.566371, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 0.500000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\zharka\cumulus_02
+
+[timelimit]
+ value = 8.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/zharka_ground_smoke_after.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/zharka_ground_smoke_after.pe
new file mode 100644
index 00000000..5fd71e20
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/effects/zharka_ground_smoke_after.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 16385
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 1.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.050000, 0.050000, 0.050000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.700000, 0.700000, 0.000000
+ vec_0001 = 3.000000, 3.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 2.273140, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 1
+ v0 = 0.300000, 0.270000, 0.210000
+ v1 = 0.100000, 0.100000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\zharka\pfx_smoke_b
+
+[timelimit]
+ value = 18.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/zharka_blowout.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/zharka_blowout.pg
new file mode 100644
index 00000000..456319cf
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/zharka_blowout.pg
@@ -0,0 +1,204 @@
+[_group]
+ effects_count = 22
+ flags = 0
+ timelimit = 20.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\zharka\effects\monsters_fire_flame_burst_line_044
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 19.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\zharka\effects\flame_burst_line_up_steam_07
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\zharka\effects\flame_blue_bottom
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 1.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\zharka\effects\flame_burst_thermal_idle_point_emiter1
+ flags = 37
+ on_birth_child = semitone\anomalies\zharka\effects\flame_burst_line_side_fire_lol
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 9.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\zharka\effects\flame_burst_line_side_fire_small
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 9.000000
+
+[effect_0005]
+ effect_name = semitone\anomalies\zharka\effects\flame_line_core1_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.400000
+ time1 = 9.000000
+
+[effect_0006]
+ effect_name = semitone\anomalies\zharka\effects\flame_line_core1_bottm_blue
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 9.000000
+
+[effect_0007]
+ effect_name = semitone\anomalies\zharka\effects\flame_burst_thermal_idle_point_emiter
+ flags = 36
+ on_birth_child = semitone\anomalies\zharka\effects\flame_burst_line_side_fire_blue
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 9.000000
+
+[effect_0008]
+ effect_name = semitone\anomalies\zharka\effects\flame_burst_line_dist_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 9.000000
+
+[effect_0009]
+ effect_name = semitone\anomalies\zharka\effects\monsters_fire_flame_burst_line_09
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0010]
+ effect_name = semitone\anomalies\zharka\effects\flame_start_ground_spread
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0011]
+ effect_name = semitone\anomalies\zharka\effects\flame_burst_line_side_fire_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0012]
+ effect_name = semitone\anomalies\zharka\effects\graviti_steam_trigger_weak_232_00
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0013]
+ effect_name = semitone\anomalies\zharka\effects\flame_bottom_varible_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0014]
+ effect_name = semitone\anomalies\zharka\effects\monsters_fire_flame_burst_line_aaaaa
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0015]
+ effect_name = semitone\anomalies\zharka\effects\campfire_big_sparks_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 1.000000
+ time1 = 0.000000
+
+[effect_0016]
+ effect_name = semitone\anomalies\zharka\effects\zharka_big_smoke
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 18.000000
+
+[effect_0017]
+ effect_name = semitone\anomalies\zharka\effects\zharka_ground_smoke_after
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 9.000000
+
+[effect_0018]
+ effect_name = semitone\anomalies\zharka\effects\buble_distort_0222
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0019]
+ effect_name = semitone\anomalies\zharka\effects\zharka_dust
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0020]
+ effect_name = semitone\anomalies\zharka\effects\nograv_dust_03
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.100000
+ time1 = 0.000000
+
+[effect_0021]
+ effect_name = semitone\anomalies\zharka\effects\nograv_dust_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.100000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/zharka_idle.pg b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/zharka_idle.pg
new file mode 100644
index 00000000..04e6013b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zharka/zharka_idle.pg
@@ -0,0 +1,42 @@
+[_group]
+ effects_count = 4
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\zharka\effects\monsters_fire_flame_burst_line_06
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\zharka\effects\campfire_flame_hd_smoke_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\zharka\effects\buble_distort_03
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\zharka\effects\campfire_flame_hd_smoke_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/anomaly_toxic_particle_test_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/anomaly_toxic_particle_test_01.pe
new file mode 100644
index 00000000..ccb54840
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/anomaly_toxic_particle_test_01.pe
@@ -0,0 +1,147 @@
+[_effect]
+ action_count = 10
+ flags = 2103297
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 3.000000
+ version = 1
+
+[action_0001]
+ action_name = orbitpoint_2
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = 16.000000, 16.000000, 16.000000
+ version = 1
+
+[action_0002]
+ action_name = orbitpoint_1
+ action_type = 14
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.010000
+ flt_0001 = 12.000000
+ flt_0002 = 9999999980506447.872000
+ vec_0000 = -16.000000, -16.000000, -16.000000
+ version = 1
+
+[action_0003]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 25.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.030000
+ vec_0000 = -33.753500, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 50.000000
+ flt_0001 = 70.000000
+ flt_0002 = 170.000000
+ vec_0000 = 360.000000, 0.000000, 30.000000
+ vec_0001 = 720.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0009]
+ action_name = move
+ action_type = 12
+ flags = 3
+ version = 1
+
+[domain_action_0003_0000]
+ type = 0
+ v0 = 0.611765, 0.635294, 0.286275
+ v1 = 0.800000, 0.898039, 1.000000
+ v2 = 0.000000, 1.000000, 0.000000
+
+[domain_action_0003_0001]
+ type = 4
+ v0 = 10.000000, 1.000000, 10.000000
+ v1 = -10.000000, 3.000000, -10.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0003]
+ type = 1
+ v0 = 0.050000, 0.050000, 0.050000
+ v1 = 0.150000, 0.150000, 0.150000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.400000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0005_0000]
+ type = 5
+ v0 = 0.000000, 0.300000, 0.000000
+ v1 = -2.000000, 2.000000, -2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0008_0000]
+ type = 4
+ v0 = 4.000000, 0.000000, 4.000000
+ v1 = -4.000000, -3.000000, -4.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\acidic_mine\fx_moon_full_foggy
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/nograv_dust_03.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/nograv_dust_03.pe
new file mode 100644
index 00000000..1cbd378b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/nograv_dust_03.pe
@@ -0,0 +1,109 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 40
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 12.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.010000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 5.000000, 5.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.003000
+ vec_0000 = 40.491640, 0.000017, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -0.030000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.298039, 0.278431, 0.145098
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 12.000000, 2.000000, 12.000000
+ v1 = -12.000000, -1.000000, -12.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = -12.566371, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 0.500000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\zones\acidic\cumulus_02
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/zone_acidic_idle_trail_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/zone_acidic_idle_trail_01.pe
new file mode 100644
index 00000000..27838e8f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/zone_acidic_idle_trail_01.pe
@@ -0,0 +1,126 @@
+[_effect]
+ action_count = 9
+ flags = 5121
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.250000
+ flt_0002 = 0.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.900000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 20.000000, 20.000000, 0.001000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.100000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0007]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, 2.000000, 0.000000
+ version = 1
+
+[action_0008]
+ action_name = speedlimit
+ action_type = 22
+ flags = 1
+ flt_0000 = 0.300000
+ flt_0001 = -1.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.568628, 0.568628, 0.439216
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 18.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 6.283186, 6.283186, 0.000000
+ v1 = -6.283186, -6.283186, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 64
+ reserved = 0.000000, 0.000000
+ speed = 12.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\zones\acidic\smoke_burst_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/zone_acidic_idle_trail_03.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/zone_acidic_idle_trail_03.pe
new file mode 100644
index 00000000..c4e04545
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/zone_acidic_idle_trail_03.pe
@@ -0,0 +1,121 @@
+[_effect]
+ action_count = 8
+ flags = 5121
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 7.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.900000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 20.000000, 20.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.700000
+ flt_0001 = 0.500000
+ flt_0002 = 0.000000
+ flt_0003 = 0.200000
+ vec_0000 = 0.584314, 0.611765, 0.584314
+ version = 1
+
+[action_0005]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.564706, 0.588235, 0.419608
+ version = 1
+
+[action_0006]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.100000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.439216, 0.407843, 0.074510
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.000000, 16.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -6.283186, -6.283186, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 30.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\zones\acidic\cumulus_02
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/zone_acidic_idle_trail_05.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/zone_acidic_idle_trail_05.pe
new file mode 100644
index 00000000..7a283249
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/zone_acidic_idle_trail_05.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 3073
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.250000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.900000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 20.000000, 10.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.486275, 0.941177, 0.427451
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.100000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.615686, 0.615686, 0.435294
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 18.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -6.283186, -6.283186, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 256
+ reserved = 0.000000, 0.000000
+ speed = 16.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\zones\acidic\around
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/zone_acidic_idle_trail_05_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/zone_acidic_idle_trail_05_00.pe
new file mode 100644
index 00000000..02af9437
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/zone_acidic_idle_trail_05_00.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.250000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.900000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 10.000000, 20.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.450980, 0.435294, 0.223529
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.100000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.450980, 0.423529, 0.239216
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 18.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 1.570796, 1.570796, 0.000000
+ v1 = -6.283186, -6.283186, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 16.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\zones\acidic\cumulus_02
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/zone_acidic_idle_trail_05_01.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/zone_acidic_idle_trail_05_01.pe
new file mode 100644
index 00000000..db04bb24
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/acidic/zone_acidic_idle_trail_05_01.pe
@@ -0,0 +1,110 @@
+[_effect]
+ action_count = 7
+ flags = 5121
+ max_particles = 25
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 8.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.250000
+ flt_0002 = 0.000000
+ flt_0003 = 3.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.900000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 1.000000, 1.000000, 0.000000
+ vec_0001 = 10.000000, 20.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.368627, 0.356863, 0.196078
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 0
+ flt_0000 = 0.100000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.450980, 0.423529, 0.239216
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.100000, 0.000000
+ v2 = 0.000000, 18.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = -1.570796, -1.570796, 0.000000
+ v1 = -6.283186, -6.283186, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 6
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 16.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\zones\acidic\cumulus_02
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zones/psychic/generatory_line.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/psychic/generatory_line.pe
new file mode 100644
index 00000000..5b4c2a1c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/psychic/generatory_line.pe
@@ -0,0 +1,112 @@
+[_effect]
+ action_count = 7
+ flags = 1110017
+ max_particles = 1
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 5.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = off
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.000000
+ flt_0003 = 5.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor_00
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.000000
+ flt_0003 = 0.300000
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.300000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 3.000000
+ vec_0000 = 0.000000, 50.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 10.000000, 10.000000, 0.000000
+ vec_0001 = 8.000000, 150.000000, 0.001000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 1.000000, 1.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 20.000000, 0.000000
+ v2 = 2.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 62.831852, 62.831852, 62.831852
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 8.000000, 8.000000, 0.000000
+ v1 = 333.000000, 220.000000, 12.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 128.000000, 0.000000
+ v2 = 20.000000, 17.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = pfx\pfx_distortion
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zones/psychic/zone_psychic_idle_point_emiter.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/psychic/zone_psychic_idle_point_emiter.pe
new file mode 100644
index 00000000..404ef85a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/psychic/zone_psychic_idle_point_emiter.pe
@@ -0,0 +1,76 @@
+[_effect]
+ action_count = 4
+ flags = 2049
+ max_particles = 2
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 0.900000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 2.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\add
+ texture = pfx\pfx_distortion
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/campfire_hot_sparks_00.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/campfire_hot_sparks_00.pe
new file mode 100644
index 00000000..4abb2241
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/campfire_hot_sparks_00.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 5
+ flags = 295937
+ max_particles = 20
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 1.000000
+ flt_0003 = 21.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.752941, 0.349020, 0.349020
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 0.000000, 3.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.027000, 0.027000, 1.000000
+ v1 = 0.010000, 0.010000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 1.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 1
+ frame_count = 1
+ reserved = 93.000000, 146.000000
+ speed = 24.000000
+ tex_size = 1.000000, 1.000000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\zones\thermal\spark
+
+[velocity_scale]
+ value = 0.000000, 0.020000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/expl_hd_gasbarrel_new_26.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/expl_hd_gasbarrel_new_26.pe
new file mode 100644
index 00000000..dcca1a30
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/expl_hd_gasbarrel_new_26.pe
@@ -0,0 +1,134 @@
+[_effect]
+ action_count = 9
+ flags = 267265
+ max_particles = 40
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 6.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.400000
+ flt_0002 = 0.000000
+ flt_0003 = 4.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.100000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.164706, 0.164706, 0.164706
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.100000, 0.100000, 0.000000
+ vec_0001 = 12.000000, 12.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 0
+ flt_0000 = 2.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.000000
+ vec_0000 = 0.000000, 0.000017, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 0
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0008]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 0
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.247059, 0.247059, 0.247059
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 1.000000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 9
+ v0 = 0.000000, 0.100000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.300000, 1.000000, 0.000000
+
+[domain_action_0008_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 4.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\zones\thermal\cumulus_02
+
+[velocity_scale]
+ value = 0.000000, 0.000000, 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/expl_hd_handgrenade_31.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/expl_hd_handgrenade_31.pe
new file mode 100644
index 00000000..70587a2a
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/expl_hd_handgrenade_31.pe
@@ -0,0 +1,118 @@
+[_effect]
+ action_count = 8
+ flags = 3073
+ max_particles = 5
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.500000
+ flt_0003 = 1.000000
+ vec_0000 = 0.580392, 0.556863, 0.505882
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 4.000000, 4.000000, 0.000000
+ vec_0001 = 3.000000, 3.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 7.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.000000
+ vec_0000 = 0.000000, 0.000017, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = off
+ flags = 1
+ vec_0000 = 4.000000, 4.000000, 4.000000
+ version = 1
+
+[action_0007]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.647059, 0.627451, 0.603922
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.200000, 0.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 29.845130, 29.845130, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.500000, 0.500000, 0.500000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 9
+ v0 = 0.000000, 6.000000, 0.000000
+ v1 = 4.000000, 6.000000, 0.000000
+ v2 = 1.000000, 9.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 128
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\zones\thermal\anm_smoke_desat
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/nograv_dust_03.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/nograv_dust_03.pe
new file mode 100644
index 00000000..48b36dd2
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/nograv_dust_03.pe
@@ -0,0 +1,112 @@
+[_effect]
+ action_count = 7
+ flags = 21505
+ max_particles = 155
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 45.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 0.000000
+ flt_0003 = 1000.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.010000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 5.000000, 5.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.003000
+ vec_0000 = 40.491640, 0.000017, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, -0.030000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.250980, 0.243137, 0.231373
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 20.000000, 1.000000, 20.000000
+ v1 = -20.000000, -1.000000, -20.000000
+ v2 = 1.000000, 2.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = -12.566371, 0.000000, 0.000000
+ v1 = -29.845130, -29.845130, 0.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 1.000000, 0.500000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.100000, 0.000000
+ v1 = 0.000000, 1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 16
+ reserved = 0.000000, 0.000000
+ speed = 24.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\anomalies\no_gravity\cumulus_02
+
+[timelimit]
+ value = 15.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/zone_thermal_idle_distort.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/zone_thermal_idle_distort.pe
new file mode 100644
index 00000000..2f770745
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/zone_thermal_idle_distort.pe
@@ -0,0 +1,105 @@
+[_effect]
+ action_count = 7
+ flags = 4097
+ max_particles = 4
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.750000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 3
+ flt_0000 = 0.000000
+ flt_0001 = 0.500000
+ flt_0002 = 1.000000
+ flt_0003 = 8.800000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.000000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = gravity
+ action_type = 8
+ bool_0000 = on
+ flags = 1
+ vec_0000 = 0.000000, 7.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.100000
+ flt_0001 = 1.000000
+ flt_0002 = 0.300000
+ int_0000 = 2
+ vec_0000 = 0.000000, -4.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 2.000000, 2.000000, 2.000000
+ vec_0001 = 2.000000, 2.000000, 2.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 0
+ v0 = 0.000000, 0.500000, 0.000000
+ v1 = 0.000000, 0.500000, 0.000000
+ v2 = 0.000000, 7.700000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -180.000000, 30.000000, 30.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 2.000000, 2.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 0.600000, 0.000000
+ v1 = 0.000000, 10.000000, 0.000000
+ v2 = 1.000000, 3.000000, 0.000000
+
+[sprite]
+ shader = particles\xdistort
+ texture = semitone\anomalies\zones\thermal\pfx_dist2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/zone_thermal_idle_point_emiter.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/zone_thermal_idle_point_emiter.pe
new file mode 100644
index 00000000..84453552
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/zone_thermal_idle_point_emiter.pe
@@ -0,0 +1,76 @@
+[_effect]
+ action_count = 4
+ flags = 2049
+ max_particles = 3
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 2.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.900000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 9
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.300000, 0.000000
+ v2 = 0.000000, 5.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 2.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 0
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\zones\thermal\pfx_distortion
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/zone_thermal_idle_smoke.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/zone_thermal_idle_smoke.pe
new file mode 100644
index 00000000..2ab9ee7f
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/zone_thermal_idle_smoke.pe
@@ -0,0 +1,117 @@
+[_effect]
+ action_count = 7
+ flags = 27649
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 2.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.200000
+ flt_0002 = 1.000000
+ flt_0003 = 8.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.513726, 0.513726, 0.513726
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.700000, 0.700000, 0.000000
+ vec_0001 = 6.000000, 6.000000, 0.001000
+ version = 1
+
+[action_0004]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.030000
+ vec_0000 = 2.273140, 0.000000, 0.000000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.494118, 0.494118, 0.494118
+ v1 = 0.100000, 0.100000, 0.100000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.100000, 0.000000
+ v1 = 0.500000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 36.000000, -1.000000, -1.000000
+ v1 = 6.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 7
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 3.000000, 0.000000
+ v2 = 0.300000, 0.000000, 0.000000
+
+[domain_action_0004_0000]
+ type = 5
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 1.000000, 3.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 8
+ frame_count = 125
+ reserved = 0.000000, 0.000000
+ speed = 32.000000
+ tex_size = 0.125000, 0.125000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\anomalies\zones\thermal\anm_smoke_desat
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/zone_thermal_idle_sparks.pe b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/zone_thermal_idle_sparks.pe
new file mode 100644
index 00000000..872716b6
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/anomalies/zones/thermal/zone_thermal_idle_sparks.pe
@@ -0,0 +1,104 @@
+[_effect]
+ action_count = 5
+ flags = 56321
+ max_particles = 12
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 0.500000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 1.000000
+ flt_0003 = 50.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 3.000000
+ flt_0002 = 0.100000
+ flt_0003 = 1.000000
+ vec_0000 = 0.752941, 0.349020, 0.349020
+ version = 1
+
+[action_0003]
+ action_name = randomaccel
+ action_type = 15
+ bool_0000 = on
+ flags = 1
+ version = 1
+
+[action_0004]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[align_to_path]
+ default_rotation = -1.570796, 0.000000, 0.000000
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 1.000000, 0.000000
+ v1 = 0.000000, 0.700000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 0
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.027000, 0.027000, 1.000000
+ v1 = 0.100000, 0.100000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 5
+ v0 = 0.000000, 2.000000, 0.000000
+ v1 = 0.000000, 2.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0003_0000]
+ type = 5
+ v0 = 0.000000, 3.000000, 0.000000
+ v1 = 1.000000, 0.500000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 4
+ frame_count = 5
+ reserved = 93.000000, 146.000000
+ speed = 32.000000
+ tex_size = 0.250000, 0.250000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\anomalies\zones\thermal\sparks_tiled
+
+[timelimit]
+ value = 1.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/environmental/effects/dandelion1.pe b/mods/Arrival/gamedata/particles/semitone/environmental/effects/dandelion1.pe
new file mode 100644
index 00000000..1f8858bc
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/environmental/effects/dandelion1.pe
@@ -0,0 +1,103 @@
+[_effect]
+ action_count = 7
+ flags = 8392705
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.020000
+ vec_0000 = 0.000000, 0.000000, -5.397745
+ version = 1
+
+[action_0002]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.600000
+ flt_0002 = 0.000000
+ flt_0003 = 80.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.050000, 0.050000, 0.050000
+ vec_0001 = 0.050000, 0.050000, 0.050000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, -0.200000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0002_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0002_0001]
+ type = 4
+ v0 = 25.000000, 3.000000, 35.000000
+ v1 = -25.000000, -3.000000, -25.000000
+ v2 = 15.000000, 0.000000, 0.000000
+
+[domain_action_0002_0002]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 136.999984, 1.000004, 1.000004
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0002_0003]
+ type = 1
+ v0 = 0.020000, 0.020000, 0.020000
+ v1 = 0.030000, 0.030000, 0.030000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0002_0004]
+ type = 1
+ v0 = 0.300000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.200000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\environmental\dandelion_seed_v1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/environmental/effects/dandelion2.pe b/mods/Arrival/gamedata/particles/semitone/environmental/effects/dandelion2.pe
new file mode 100644
index 00000000..fa4a3206
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/environmental/effects/dandelion2.pe
@@ -0,0 +1,103 @@
+[_effect]
+ action_count = 7
+ flags = 8392705
+ max_particles = 100
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 80.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.050000, 0.050000, 0.050000
+ vec_0001 = 0.050000, 0.050000, 0.050000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, -0.200000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.020000
+ vec_0000 = 0.000000, 0.000000, -5.397745
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 25.000000, 3.000000, 35.000000
+ v1 = -25.000000, -1.000000, -25.000000
+ v2 = 15.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -136.999984, -1.000004, -1.000004
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.005000, 0.050000, 0.005000
+ v1 = 0.010000, 0.010000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.100000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.200000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\alpha_add
+ texture = semitone\environmental\dandelion_seed_v2
+
diff --git a/mods/Arrival/gamedata/particles/semitone/environmental/effects/maple_seeds.pe b/mods/Arrival/gamedata/particles/semitone/environmental/effects/maple_seeds.pe
new file mode 100644
index 00000000..9e897b3b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/environmental/effects/maple_seeds.pe
@@ -0,0 +1,164 @@
+[_effect]
+ action_count = 12
+ flags = 10241
+ max_particles = 50
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 45.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 400.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.100000, 0.100000, 0.100000
+ vec_0001 = 0.050000, 0.050000, 0.050000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = -15.994751, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.001000
+ flt_0001 = 12.000000
+ flt_0002 = 30.000000
+ vec_0000 = 0.000000, 5.000000, 0.000000
+ vec_0001 = 0.000000, 10.000000, 5.000000
+ version = 1
+
+[action_0006]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.001000
+ flt_0001 = -12.000000
+ flt_0002 = 30.000000
+ vec_0000 = 0.000000, 5.000000, 0.000000
+ vec_0001 = 0.000000, 7.000000, 10.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.001000
+ flt_0001 = 9.000000
+ flt_0002 = 30.000000
+ vec_0000 = 0.000000, 1.000000, 1.000000
+ vec_0001 = 0.000000, 5.000000, 15.000000
+ version = 1
+
+[action_0008]
+ action_name = turbulence
+ action_type = 30
+ flags = 1
+ flt_0000 = 0.020000
+ flt_0001 = 2.000000
+ flt_0002 = 10.000000
+ int_0000 = 1
+ vec_0000 = 1.000000, 1.000000, 1.000000
+ version = 1
+
+[action_0009]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[action_0010]
+ action_name = vortex_00
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 4.000000
+ flt_0001 = 1.000000
+ flt_0002 = 1.000000
+ vec_0000 = 0.000000, 1.000000, 0.000000
+ vec_0001 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0011]
+ action_name = targetrotate_00
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.200000
+ vec_0000 = 5613.956096, 0.000000, 0.000000
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 0.478431, 0.478431, 0.478431
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.250000, 35.000000
+ v1 = 0.000000, 50.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -1.000000, -1.000000, -1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.250000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 2.000000, 0.000000, -10.000000
+ v1 = -8.000000, 0.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0002_0000]
+ type = 3
+ v0 = 0.000000, -1.000000, 0.000000
+ v1 = 0.000000, -1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\environmental\maple_seed_v1
+
diff --git a/mods/Arrival/gamedata/particles/semitone/environmental/effects/seed1.pe b/mods/Arrival/gamedata/particles/semitone/environmental/effects/seed1.pe
new file mode 100644
index 00000000..f351a09c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/environmental/effects/seed1.pe
@@ -0,0 +1,103 @@
+[_effect]
+ action_count = 7
+ flags = 8392705
+ max_particles = 200
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.020000
+ vec_0000 = 0.000000, 0.000000, -5.397745
+ version = 1
+
+[action_0002]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 80.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 0.700000
+ flt_0001 = 2.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0004]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.050000, 0.050000, 0.050000
+ vec_0001 = 0.050000, 0.050000, 0.050000
+ version = 1
+
+[action_0005]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, -0.200000
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0002_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0002_0001]
+ type = 4
+ v0 = 25.000000, 3.000000, 35.000000
+ v1 = -25.000000, -3.000000, -25.000000
+ v2 = 15.000000, 0.000000, 0.000000
+
+[domain_action_0002_0002]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = 136.999984, 1.000004, 1.000004
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0002_0003]
+ type = 1
+ v0 = 0.020000, 0.020000, 0.020000
+ v1 = 0.030000, 0.030000, 0.030000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0002_0004]
+ type = 1
+ v0 = 0.300000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.200000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\environmental\seed_a
+
diff --git a/mods/Arrival/gamedata/particles/semitone/environmental/effects/seed2.pe b/mods/Arrival/gamedata/particles/semitone/environmental/effects/seed2.pe
new file mode 100644
index 00000000..c825b33e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/environmental/effects/seed2.pe
@@ -0,0 +1,103 @@
+[_effect]
+ action_count = 7
+ flags = 8392705
+ max_particles = 200
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 4.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 0.700000
+ flt_0002 = 0.000000
+ flt_0003 = 80.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = targetcolor
+ action_type = 23
+ flags = 1
+ flt_0000 = 1.000000
+ flt_0001 = 2.000000
+ flt_0002 = 0.700000
+ flt_0003 = 1.000000
+ vec_0000 = 0.000000, 0.000000, 0.000000
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.050000, 0.050000, 0.050000
+ vec_0001 = 0.050000, 0.050000, 0.050000
+ version = 1
+
+[action_0004]
+ action_name = targetvelocity
+ action_type = 27
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 1.000000
+ vec_0000 = 0.000000, 0.000000, -0.200000
+ version = 1
+
+[action_0005]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.020000
+ vec_0000 = 0.000000, 0.000000, -5.397745
+ version = 1
+
+[action_0006]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 4
+ v0 = 25.000000, 3.000000, 35.000000
+ v1 = -25.000000, -1.000000, -25.000000
+ v2 = 15.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = 0.000000, 0.000000, 0.000000
+ v1 = -136.999984, -1.000004, -1.000004
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 1
+ v0 = 0.005000, 0.050000, 0.005000
+ v1 = 0.010000, 0.010000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 0.100000, 0.000000, 0.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.200000, 0.000000, 0.000000
+
+[sprite]
+ shader = particles\add
+ texture = semitone\environmental\seed_a
+
diff --git a/mods/Arrival/gamedata/particles/semitone/environmental/effects/tree_leaves_stormy_01.pe b/mods/Arrival/gamedata/particles/semitone/environmental/effects/tree_leaves_stormy_01.pe
new file mode 100644
index 00000000..333f9fe6
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/environmental/effects/tree_leaves_stormy_01.pe
@@ -0,0 +1,140 @@
+[_effect]
+ action_count = 9
+ flags = 11265
+ max_particles = 150
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 45.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 400.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.200000, 0.000000, 0.000000
+ vec_0001 = 0.080000, 0.200000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.100000
+ vec_0000 = -15.994751, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.001000
+ flt_0001 = 12.000000
+ flt_0002 = 30.000000
+ vec_0000 = 0.000000, 5.000000, 0.000000
+ vec_0001 = 0.000000, 10.000000, 5.000000
+ version = 1
+
+[action_0006]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.001000
+ flt_0001 = -12.000000
+ flt_0002 = 30.000000
+ vec_0000 = 0.000000, 5.000000, 0.000000
+ vec_0001 = 0.000000, 7.000000, 10.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.001000
+ flt_0001 = 9.000000
+ flt_0002 = 30.000000
+ vec_0000 = 0.000000, 1.000000, 1.000000
+ vec_0001 = 0.000000, 5.000000, 15.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.250000, 35.000000
+ v1 = 0.000000, 50.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -1.000000, -1.000000, -1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.250000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 2.000000, 0.000000, -20.000000
+ v1 = 8.000000, 0.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0002_0000]
+ type = 3
+ v0 = 0.000000, -1.000000, 0.000000
+ v1 = 0.000000, -1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 4.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\environmental\pfx_leaves_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/environmental/effects/tree_leaves_stormy_02.pe b/mods/Arrival/gamedata/particles/semitone/environmental/effects/tree_leaves_stormy_02.pe
new file mode 100644
index 00000000..2a5ffada
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/environmental/effects/tree_leaves_stormy_02.pe
@@ -0,0 +1,140 @@
+[_effect]
+ action_count = 9
+ flags = 11265
+ max_particles = 150
+ version = 1
+
+[action_0000]
+ action_name = killold
+ action_type = 10
+ bool_0000 = off
+ flags = 1
+ flt_0000 = 45.000000
+ version = 1
+
+[action_0001]
+ action_name = source
+ action_type = 21
+ bool_0000 = on
+ bool_0001 = off
+ flags = 1
+ flt_0000 = 0.000000
+ flt_0001 = 1.000000
+ flt_0002 = 0.000000
+ flt_0003 = 400.000000
+ flt_0004 = 0.000000
+ version = 1
+
+[action_0002]
+ action_name = sink
+ action_type = 19
+ bool_0000 = on
+ bool_0001 = on
+ flags = 1
+ version = 1
+
+[action_0003]
+ action_name = targetsize
+ action_type = 24
+ flags = 1
+ vec_0000 = 0.200000, 0.000000, 0.000000
+ vec_0001 = 0.080000, 0.200000, 1.000000
+ version = 1
+
+[action_0004]
+ action_name = targetrotate
+ action_type = 25
+ flags = 1
+ flt_0000 = 0.100000
+ vec_0000 = -15.994751, 0.000000, 0.000000
+ version = 1
+
+[action_0005]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.001000
+ flt_0001 = 12.000000
+ flt_0002 = 30.000000
+ vec_0000 = 0.000000, 5.000000, 0.000000
+ vec_0001 = 0.000000, 10.000000, 5.000000
+ version = 1
+
+[action_0006]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.001000
+ flt_0001 = -12.000000
+ flt_0002 = 30.000000
+ vec_0000 = 0.000000, 5.000000, 0.000000
+ vec_0001 = 0.000000, 7.000000, 10.000000
+ version = 1
+
+[action_0007]
+ action_name = vortex
+ action_type = 29
+ bool_0000 = on
+ flags = 1
+ flt_0000 = 0.001000
+ flt_0001 = 9.000000
+ flt_0002 = 30.000000
+ vec_0000 = 0.000000, 1.000000, 1.000000
+ vec_0001 = 0.000000, 5.000000, 15.000000
+ version = 1
+
+[action_0008]
+ action_name = move
+ action_type = 12
+ flags = 1
+ version = 1
+
+[domain_action_0001_0000]
+ type = 0
+ v0 = 1.000000, 1.000000, 1.000000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0001]
+ type = 5
+ v0 = 0.000000, 0.250000, 35.000000
+ v1 = 0.000000, 50.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0002]
+ type = 1
+ v0 = -1.000000, -1.000000, -1.000000
+ v1 = 1.000000, 1.000000, 1.000000
+ v2 = 1.000000, 0.000000, 0.000000
+
+[domain_action_0001_0003]
+ type = 0
+ v0 = 0.100000, 0.100000, 0.250000
+ v1 = 0.000000, 0.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0001_0004]
+ type = 1
+ v0 = 2.000000, 0.000000, -10.000000
+ v1 = -8.000000, 0.000000, 2.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[domain_action_0002_0000]
+ type = 3
+ v0 = 0.000000, -1.000000, 0.000000
+ v1 = 0.000000, -1.000000, 0.000000
+ v2 = 0.000000, 0.000000, 0.000000
+
+[frame]
+ dim_x = 2
+ frame_count = 4
+ reserved = 0.000000, 0.000000
+ speed = 4.000000
+ tex_size = 0.500000, 0.500000
+
+[sprite]
+ shader = particles\blend
+ texture = semitone\environmental\pfx_leaves_01
+
diff --git a/mods/Arrival/gamedata/particles/semitone/environmental/new.pg b/mods/Arrival/gamedata/particles/semitone/environmental/new.pg
new file mode 100644
index 00000000..3e087e2e
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/environmental/new.pg
@@ -0,0 +1,6 @@
+[_group]
+ effects_count = 0
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
diff --git a/mods/Arrival/gamedata/particles/semitone/environmental/seed1.pg b/mods/Arrival/gamedata/particles/semitone/environmental/seed1.pg
new file mode 100644
index 00000000..ec6c45ac
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/environmental/seed1.pg
@@ -0,0 +1,24 @@
+[_group]
+ effects_count = 2
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\environmental\effects\seed1
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\environmental\effects\dandelion1
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/environmental/seed2.pg b/mods/Arrival/gamedata/particles/semitone/environmental/seed2.pg
new file mode 100644
index 00000000..a97a5b04
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/environmental/seed2.pg
@@ -0,0 +1,24 @@
+[_group]
+ effects_count = 2
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\environmental\effects\seed2
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\environmental\effects\dandelion2
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/semitone/environmental/tree_leaves_stormy.pg b/mods/Arrival/gamedata/particles/semitone/environmental/tree_leaves_stormy.pg
new file mode 100644
index 00000000..ff06ea6b
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/semitone/environmental/tree_leaves_stormy.pg
@@ -0,0 +1,33 @@
+[_group]
+ effects_count = 3
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\environmental\effects\tree_leaves_stormy_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\environmental\effects\tree_leaves_stormy_02
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\environmental\effects\maple_seeds
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/zones/zone_acidic_idle.pg b/mods/Arrival/gamedata/particles/zones/zone_acidic_idle.pg
new file mode 100644
index 00000000..460dbc4c
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/zones/zone_acidic_idle.pg
@@ -0,0 +1,51 @@
+[_group]
+ effects_count = 5
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\zones\acidic\zone_acidic_idle_trail_03
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\zones\acidic\nograv_dust_03
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\zones\acidic\zone_acidic_idle_trail_05_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\zones\acidic\zone_acidic_idle_trail_05_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0004]
+ effect_name = semitone\anomalies\zones\acidic\anomaly_toxic_particle_test_01
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/zones/zone_psychic_idle.pg b/mods/Arrival/gamedata/particles/zones/zone_psychic_idle.pg
new file mode 100644
index 00000000..61523289
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/zones/zone_psychic_idle.pg
@@ -0,0 +1,24 @@
+[_group]
+ effects_count = 2
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\zones\psychic\generatory_line
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\zones\psychic\zone_psychic_idle_point_emiter
+ flags = 36
+ on_birth_child = semitone\anomalies\zones\psychic\generatory_line
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/particles/zones/zone_thermal_idle.pg b/mods/Arrival/gamedata/particles/zones/zone_thermal_idle.pg
new file mode 100644
index 00000000..dad197c7
--- /dev/null
+++ b/mods/Arrival/gamedata/particles/zones/zone_thermal_idle.pg
@@ -0,0 +1,42 @@
+[_group]
+ effects_count = 4
+ flags = 0
+ timelimit = 0.000000
+ version = 3
+
+[effect_0000]
+ effect_name = semitone\anomalies\zones\thermal\zone_thermal_idle_point_emiter
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0001]
+ effect_name = semitone\anomalies\zones\thermal\expl_hd_gasbarrel_new_26
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0002]
+ effect_name = semitone\anomalies\zones\thermal\expl_hd_handgrenade_31
+ flags = 0
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
+[effect_0003]
+ effect_name = semitone\anomalies\zones\thermal\campfire_hot_sparks_00
+ flags = 4
+ on_birth_child =
+ on_death_child =
+ on_play_child =
+ time0 = 0.000000
+ time1 = 0.000000
+
diff --git a/mods/Arrival/gamedata/scripts/arrival_environmental_particles.script b/mods/Arrival/gamedata/scripts/arrival_environmental_particles.script
new file mode 100644
index 00000000..2095bb98
--- /dev/null
+++ b/mods/Arrival/gamedata/scripts/arrival_environmental_particles.script
@@ -0,0 +1,322 @@
+--==============================================================================================
+--Yet Another Winter Mod snowfall script
+--Author: Daedalus-Prime
+-- Edit by demonized:
+-- Refactor of script for easier adding and toggling of particles
+-- Check for playing particles depending on ray collision
+-- Playing particles outside of covers depending on location where actor entered the cover for muh immersion
+-- Saving entered cover position and restoring it on save/load
+-- edit by FabioConte for Anomqly Season's Redux (05.02.2023)
+-- edit by S.e.m.i.t.o.n.e. for 'The Arrival' mod
+--==============================================================================================
+function on_game_start()
+ RegisterScriptCallback("actor_on_update", actor_on_update)
+ RegisterScriptCallback("save_state", save_state)
+ RegisterScriptCallback("load_state", load_state)
+end
+
+local ray = function(pos, dir, args)
+ local pos = pos and vector():set(pos.x or pos[1], pos.y or pos[2], pos.z or pos[3]) or device().cam_pos
+ local dir = dir and vector():set(dir.x or dir[1], dir.y or dir[2], dir.z or dir[3]) or device().cam_dir
+ local args = args or {}
+
+ local pick = ray_pick()
+ pick:set_position(pos)
+ pick:set_direction(dir)
+ pick:set_flags(args.flags or 2)
+ pick:set_range(args.range or 200)
+ if args.ignore_object then
+ pick:set_ignore_object(args.ignore_object)
+ end
+ pick:query()
+
+ return pick
+end
+
+local snow_particle_foggy = particles_object("semitone\\environmental\\seed1") --set particles to variables
+local snow_particle_foggy1 = particles_object("semitone\\environmental\\seed2")
+local snow_particle_foggy2 = particles_object("semitone\\environmental\\tree_leaves_stormy")
+local snow_particle_foggy3 = particles_object("lanforse\\fog_mist")
+
+
+-- These particles wont play inside at all
+dont_play_inside_particles = {
+ [snow_particle_foggy] = true,
+ [snow_particle_foggy1] = true,
+ [snow_particle_foggy2] = true,
+ [snow_particle_foggy3] = false,
+ }
+
+weather_to_particles = {
+ ["default"] = {
+ [snow_particle_foggy] = false,
+ [snow_particle_foggy1] = false,
+ [snow_particle_foggy2] = false,
+ [snow_particle_foggy3] = false,
+
+ },
+ ["w_ccgim_fog"] = {
+ [snow_particle_foggy] = true,
+ [snow_particle_foggy1] = true,
+ [snow_particle_foggy2] = false,
+ [snow_particle_foggy3] = false,
+
+ },
+ ["w_clear_foggy"] = {
+ [snow_particle_foggy] = false,
+ [snow_particle_foggy1] = false,
+ [snow_particle_foggy2] = false,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_clear1"] = {
+ [snow_particle_foggy] = true,
+ [snow_particle_foggy1] = true,
+ [snow_particle_foggy2] = true,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_clear2"] = {
+ [snow_particle_foggy] = true,
+ [snow_particle_foggy1] = true,
+ [snow_particle_foggy2] = true,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_cloudy1"] = {
+ [snow_particle_foggy] = true,
+ [snow_particle_foggy1] = true,
+ [snow_particle_foggy2] = true,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_cloudy2"] = {
+ [snow_particle_foggy] = true,
+ [snow_particle_foggy1] = true,
+ [snow_particle_foggy2] = true,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_cloudy2_dark"] = {
+ [snow_particle_foggy] = true,
+ [snow_particle_foggy1] = true,
+ [snow_particle_foggy2] = true,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_cloudy3"] = {
+ [snow_particle_foggy] = true,
+ [snow_particle_foggy1] = true,
+ [snow_particle_foggy2] = true,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_cloudy4"] = {
+ [snow_particle_foggy] = true,
+ [snow_particle_foggy1] = true,
+ [snow_particle_foggy2] = true,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_deaspir_foggy"] = {
+ [snow_particle_foggy] = false,
+ [snow_particle_foggy1] = false,
+ [snow_particle_foggy2] = true,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_foggy1"] = {
+ [snow_particle_foggy] = true,
+ [snow_particle_foggy1] = true,
+ [snow_particle_foggy2] = false,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_foggy2"] = {
+ [snow_particle_foggy] = true,
+ [snow_particle_foggy1] = true,
+ [snow_particle_foggy2] = false,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_foggy3"] = {
+ [snow_particle_foggy] = true,
+ [snow_particle_foggy1] = true,
+ [snow_particle_foggy2] = false,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_indoor_agr_underground"] = {
+ [snow_particle_foggy] = false,
+ [snow_particle_foggy1] = false,
+ [snow_particle_foggy2] = false,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_indoor_ambient"] = {
+ [snow_particle_foggy] = false,
+ [snow_particle_foggy1] = false,
+ [snow_particle_foggy2] = false,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_indoor_default"] = {
+ [snow_particle_foggy] = false,
+ [snow_particle_foggy1] = false,
+ [snow_particle_foggy2] = false,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_indoor_jupiter_underground"] = {
+ [snow_particle_foggy] = false,
+ [snow_particle_foggy1] = false,
+ [snow_particle_foggy2] = false,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_indoor_sarcofag"] = {
+ [snow_particle_foggy] = false,
+ [snow_particle_foggy1] = false,
+ [snow_particle_foggy2] = false,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_partly1"] = {
+ [snow_particle_foggy] = true,
+ [snow_particle_foggy1] = true,
+ [snow_particle_foggy2] = true,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_partly2"] = {
+ [snow_particle_foggy] = true,
+ [snow_particle_foggy1] = true,
+ [snow_particle_foggy2] = true,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_partly3"] = {
+ [snow_particle_foggy] = true,
+ [snow_particle_foggy1] = true,
+ [snow_particle_foggy2] = true,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_partly4"] = {
+ [snow_particle_foggy] = true,
+ [snow_particle_foggy1] = true,
+ [snow_particle_foggy2] = true,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_rain1"] = {
+ [snow_particle_foggy] = false,
+ [snow_particle_foggy1] = false,
+ [snow_particle_foggy2] = true,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_rain2"] = {
+ [snow_particle_foggy] = false,
+ [snow_particle_foggy1] = false,
+ [snow_particle_foggy2] = true,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_rain3"] = {
+ [snow_particle_foggy] = false,
+ [snow_particle_foggy1] = false,
+ [snow_particle_foggy2] = true,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_storm1"] = {
+ [snow_particle_foggy] = false,
+ [snow_particle_foggy1] = false,
+ [snow_particle_foggy2] = true,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_storm2"] = {
+ [snow_particle_foggy] = false,
+ [snow_particle_foggy1] = false,
+ [snow_particle_foggy2] = true,
+ [snow_particle_foggy3] = false,
+ },
+ ["w_swtc_tuman"] = {
+ [snow_particle_foggy] = false,
+ [snow_particle_foggy1] = false,
+ [snow_particle_foggy2] = true,
+ [snow_particle_foggy3] = false,
+ },
+ [0] = {
+ [snow_particle_foggy] = false,
+ [snow_particle_foggy1] = false,
+ [snow_particle_foggy2] = false,
+ [snow_particle_foggy3] = false,
+ },
+}
+
+function switch_particles(particle_table, pos, is_inside)
+ local pos = pos or device().cam_pos
+ for k, v in pairs(particle_table) do
+ -- Disable particles that are in dont_play_inside_particles table if inside
+ if is_inside and dont_play_inside_particles[k] then
+ if k:playing() then
+ k:stop()
+ end
+ else
+ if v then
+ if k:playing() then
+ k:move_to(pos, VEC_ZERO)
+ else
+ k:play_at_pos(pos)
+ end
+ else
+ if k:playing() then
+ k:stop_deffered()
+ end
+ end
+ end
+ end
+end
+
+local ray_args = {
+ range = 30
+}
+local inside_pos
+function actor_on_update()
+ -- Check current weather
+ local weather = level.get_weather()
+
+ -- Detection of cover by rain collision
+ local cam_pos = device().cam_pos
+ local r1 = ray(cam_pos, VEC_Y, ray_args)
+ local r2 = ray(cam_pos, vector():set(VEC_Y):add(vector():set(1.5, 0, 0)), ray_args)
+ local r3 = ray(cam_pos, vector():set(VEC_Y):add(vector():set(-1.5, 0, 0)), ray_args)
+ local r4 = ray(cam_pos, vector():set(VEC_Y):add(vector():set(0, 0, 1.5)), ray_args)
+ local r5 = ray(cam_pos, vector():set(VEC_Y):add(vector():set(0, 0, -1.5)), ray_args)
+ local r = r1:get_distance() > 0
+ and r2:get_distance() > 0
+ and r3:get_distance() > 0
+ and r4:get_distance() > 0
+ and r5:get_distance() > 0
+
+ -- Set variable for whether the player is in an emission safe zone or not
+ local is_inside = GetEvent("current_safe_cover") or r
+
+ -- Set variable for whether the player is in an underground level or not
+ local is_underground = GetEvent("underground")
+
+ -- If exists saved position where actor entered cover, apply it
+ local pos
+ if is_inside then
+ if inside_pos then
+ pos = vector():set(inside_pos.x, cam_pos.y, inside_pos.z)
+ else
+ inside_pos = cam_pos
+ pos = inside_pos
+ end
+ else
+ inside_pos = nil
+ end
+ snowfall(weather, is_inside, is_underground, pos)
+end
+
+function snowfall(weather, is_inside, is_underground, inside_pos)
+ if is_underground then
+ switch_particles(weather_to_particles[0], inside_pos, is_inside)
+ UnregisterScriptCallback("actor_on_update", actor_on_update)
+ return
+ end
+
+ if (is_inside and not inside_pos) or not weather_to_particles[weather] then
+ switch_particles(weather_to_particles[0], inside_pos, is_inside)
+ return
+ end
+
+ switch_particles(weather_to_particles[weather], inside_pos, is_inside)
+end
+
+function save_state(m_data)
+ m_data.snowfall_inside_pos = inside_pos and utils_data.vector_to_string(inside_pos)
+end
+
+function load_state(m_data)
+ inside_pos = m_data.snowfall_inside_pos and utils_data.string_to_vector(m_data.snowfall_inside_pos)
+end
diff --git a/mods/Arrival/gamedata/scripts/demonized_concurrent_queues.script b/mods/Arrival/gamedata/scripts/demonized_concurrent_queues.script
new file mode 100644
index 00000000..1113feef
--- /dev/null
+++ b/mods/Arrival/gamedata/scripts/demonized_concurrent_queues.script
@@ -0,0 +1,101 @@
+local table_remove = table.remove
+local unpack = unpack
+
+local function table_keys(t, is_array)
+ local a = {}
+ if is_array then
+ for i = 1, #t do
+ a[i] = i
+ end
+ else
+ for k,v in pairs(t) do
+ a[#a+1] = k
+ end
+ end
+ return a
+end
+
+-- Queue to span processing on each game tick
+-- Arguments:
+-- queue_name - name of queue
+-- queue_table - table to process
+-- func - function for processing, must have at least first 3 arguments: key of queue_table, value by that key, the number of key in processing order
+-- returning true will remove element from queue, returning false or nil will leave it in queue for next process cycle
+-- on_end_func - function at the end of queue processing, you can use this for chaining queue processing one after another
+-- step - amount of items in queue to process at a time
+-- ... - additional arguments for "func"
+-- active_queues table contains names of queues that are active.
+
+-- Example usage, get an object by id one at a time per game update
+--[[
+
+local ids = {1, 2, 3, 4, 5, 6, 7, 8}
+process_queue("my_queue", ids, function(k, id, i)
+ local obj = level.object_by_id(id)
+ if obj then
+ printf("object %s, section %s, time_global %s", id, obj:section(), time_global())
+ end
+ return true
+ end, function()
+ printf("queue processed, final time %s", time_global())
+ end
+)
+
+]]
+
+active_queues = {}
+function process_queue(queue_name, queue_table, func, on_end_func, step, ...)
+ -- queue_table must be a table
+ if not queue_table or type(queue_table) ~= "table" then
+ printf("%s is not table, abort", queue_table)
+ return
+ end
+
+ if active_queues[queue_name] then
+ printf("queue %s is already active, abort", queue_name)
+ return
+ end
+
+ -- Collect table keys and initialize the table index
+ local i = 1
+ local keys = table_keys(queue_table)
+ local step = clamp(step or 1, 1, #keys)
+
+ local args = {...}
+ local update_func
+ update_func = function()
+ for s = 1, step do
+ local j = keys[i]
+ if func(j, queue_table[j], i, unpack(args)) == true then
+ queue_table[j] = nil
+ table_remove(keys, i)
+ i = i - 1
+ step = clamp(step, 1, #keys)
+ end
+ if not keys[1] then
+ if on_end_func then on_end_func() end
+ UnregisterScriptCallback("actor_on_update", update_func)
+ active_queues[queue_name] = nil
+ return
+ end
+ i = i == #keys and 1 or i + 1
+ end
+ end
+ active_queues[queue_name] = {
+ queue_table = queue_table,
+ func = update_func,
+ on_end_func = on_end_func,
+ step = step,
+ }
+ RegisterScriptCallback("actor_on_update", update_func)
+end
+
+function remove_queue(queue_name, on_end)
+ if active_queues[queue_name] then
+ if on_end and active_queues[queue_name].on_end_func then
+ active_queues[queue_name].on_end_func()
+ end
+ UnregisterScriptCallback("actor_on_update", active_queues[queue_name].func)
+ active_queues[queue_name] = nil
+ end
+end
diff --git a/mods/Arrival/gamedata/scripts/demonized_time_events.script b/mods/Arrival/gamedata/scripts/demonized_time_events.script
new file mode 100644
index 00000000..b6378a44
--- /dev/null
+++ b/mods/Arrival/gamedata/scripts/demonized_time_events.script
@@ -0,0 +1,265 @@
+-- Optimized time events, using sorted arrays to peek only closest event to come
+-- Designed to fully reimplement existing timed events with all its quirks
+-- Unlike vanilla time events, fires on actor_on_update and doesn't require any checks
+-- Written by demonized
+
+local ev_queue = {}
+local computed_ev_queue = {}
+
+local math_floor = math.floor
+local math_huge = math.huge
+
+local table_insert = table.insert
+local table_remove = table.remove
+
+local has_alife_info = has_alife_info
+local time_global = time_global
+
+local pairs = pairs
+local unpack = unpack
+
+local tg = 0
+local i = 1
+
+local function print_table(table, subs)
+
+ local sub
+ if subs ~= nil then
+ sub = subs
+ else
+ sub = ""
+ end
+ for k,v in pairs(table) do
+ if type(v) == "table" then
+ print_table(v, sub.."["..k.."]----->")
+ elseif type(v) == "function" then
+ printf(sub.."%s = function",k)
+ elseif type(v) == "userdata" then
+ if (v.x) then
+ printf(sub.."%s = %s",k,utils_data.vector_to_string(v))
+ else
+ printf(sub.."%s = userdata", k)
+ end
+ elseif type(v) == "boolean" then
+ if v == true then
+ if(type(k)~="userdata") then
+ printf(sub.."%s = true",k)
+ else
+ printf(sub.."userdata = true")
+ end
+ else
+ if(type(k)~="userdata") then
+ printf(sub.."%s = false", k)
+ else
+ printf(sub.."userdata = false")
+ end
+ end
+ else
+ if v ~= nil then
+ printf(sub.."%s = %s", k,v)
+ else
+ printf(sub.."%s = nil", k,v)
+ end
+ end
+ end
+
+end
+
+local function queue_timer_compare(a, b)
+ return a.timer < b.timer
+end
+
+-- http://lua-users.org/wiki/BinaryInsert
+local function binary_insert(t, value, fcomp)
+ -- Initialise compare function
+ local fcomp = fcomp or function(a, b) return a < b end
+
+ -- print_table(value)
+
+ -- Initialise numbers
+ local iStart, iEnd, iMid, iState = 1, #t, 1, 0
+
+ if iEnd == 0 then
+ t[1] = value
+ -- printf("adding in beginning table empty")
+ return 1
+ end
+
+ if fcomp(value, t[1]) then
+ -- printf("adding in beginning %s of %s", 1, iEnd)
+ table_insert(t, 1, value)
+ return 1
+ end
+
+ if not fcomp(value, t[iEnd]) then
+ -- printf("adding in end %s of %s", iEnd + 1, iEnd)
+ local pos = iEnd + 1
+ t[pos] = value
+ return pos
+ end
+
+ -- Get insert position
+ while iStart <= iEnd do
+
+ -- calculate middle
+ iMid = math_floor((iStart + iEnd) / 2)
+
+ -- compare
+ if fcomp(value, t[iMid]) then
+ iEnd, iState = iMid - 1, 0
+ else
+ iStart, iState = iMid + 1, 1
+ end
+ end
+
+ local pos = iMid + iState
+ -- printf("adding in middle %s of %s", pos, iEnd)
+ table_insert(t, pos, value)
+ return pos
+end
+
+local function refresh_ev_queue()
+ empty_table(computed_ev_queue)
+ -- tg = time_global()
+
+ local t = computed_ev_queue
+ for ev_id,actions in pairs(ev_queue) do
+ for act_id,act in pairs(actions) do
+ if (act_id ~= "__size") then
+ local d = {
+ ev_id = ev_id,
+ act_id = act_id,
+ timer = act.timer,
+ f = act.f,
+ p = act.p
+ }
+ binary_insert(t, d, queue_timer_compare)
+ end
+ end
+ end
+end
+
+local function find_ev_queue(ev_id, act_id)
+ for i = 1, #computed_ev_queue do
+ local t = computed_ev_queue[i]
+ if t.ev_id == ev_id and t.act_id == act_id then
+ return i
+ end
+ end
+end
+
+local function remove_ev_queue(ev_id, act_id)
+ local pos = find_ev_queue(ev_id, act_id)
+ if pos then
+ if pos <= i then
+ i = i - 1
+ end
+ return table_remove(computed_ev_queue, pos)
+ end
+end
+
+function CreateTimeEvent(ev_id,act_id,timer,f,...)
+ if not (ev_queue[ev_id]) then
+ ev_queue[ev_id] = {}
+ ev_queue[ev_id].__size = 0
+ end
+
+ if not (ev_queue[ev_id][act_id]) then
+ local new_timer = time_global() + timer*1000
+ ev_queue[ev_id][act_id] = {}
+ ev_queue[ev_id][act_id].timer = new_timer
+ ev_queue[ev_id][act_id].f = f
+ ev_queue[ev_id][act_id].p = {...}
+ ev_queue[ev_id].__size = ev_queue[ev_id].__size + 1
+
+ local d = {
+ ev_id = ev_id,
+ act_id = act_id,
+ timer = new_timer,
+ f = f,
+ p = {...}
+ }
+ binary_insert(computed_ev_queue, d, queue_timer_compare)
+ end
+end
+
+function RemoveTimeEvent(ev_id,act_id)
+ if (ev_queue[ev_id] and ev_queue[ev_id][act_id]) then
+ ev_queue[ev_id][act_id] = nil
+ ev_queue[ev_id].__size = ev_queue[ev_id].__size - 1
+ remove_ev_queue(ev_id, act_id)
+ end
+end
+
+function ResetTimeEvent(ev_id,act_id,timer)
+ if (ev_queue[ev_id] and ev_queue[ev_id][act_id]) then
+ local new_timer = time_global() + timer*1000
+ ev_queue[ev_id][act_id].timer = new_timer
+
+ local el = remove_ev_queue(ev_id, act_id)
+ el.timer = new_timer
+ binary_insert(computed_ev_queue, el, queue_timer_compare)
+ end
+end
+
+local tg_past = 0
+local to_remove = {}
+function ProcessEventQueue(force)
+ tg = time_global()
+ -- if tg > tg_past then
+ -- printf("tg %s", tg)
+ -- printf("computed")
+ -- print_table(computed_ev_queue)
+ -- tg_past = tg + 100
+ -- end
+
+ local force_refresh
+ i = 1
+ local l = #computed_ev_queue
+ while i <= l do
+ local t = computed_ev_queue[i] or (function()
+ force_refresh = true
+ return { timer = math_huge }
+ end)() -- Failsafe if event does not exist, refresh queue and postpone to next tick
+
+ if tg < t.timer then
+ break
+ end
+
+ if t.f(unpack(t.p)) == true then
+ local t1 = ev_queue[t.ev_id]
+ t1[t.act_id] = nil
+ t1.__size = t1.__size - 1
+ if t1.__size == 0 then
+ ev_queue[t.ev_id] = nil
+ end
+ to_remove[#to_remove + 1] = {
+ ev_id = t.ev_id,
+ act_id = t.act_id
+ }
+ end
+ i = i + 1
+ end
+
+ if force_refresh then
+ refresh_ev_queue()
+ empty_table(to_remove)
+ elseif to_remove[1] then
+ for i = 1, #to_remove do
+ local t = to_remove[i]
+ remove_ev_queue(t.ev_id, t.act_id)
+ to_remove[i] = nil
+ end
+ empty_table(to_remove)
+ end
+
+ return false
+end
+
+local function process_queue()
+ ProcessEventQueue()
+end
+
+function on_game_start()
+ RegisterScriptCallback("actor_on_update", process_queue)
+end
diff --git a/mods/Arrival/gamedata/scripts/drx_da_main.script b/mods/Arrival/gamedata/scripts/drx_da_main.script
new file mode 100644
index 00000000..dbbae473
--- /dev/null
+++ b/mods/Arrival/gamedata/scripts/drx_da_main.script
@@ -0,0 +1,3710 @@
+-- Dynamic Anomaly Generator by DoctorX
+-- Revisited by demonized, 2022
+-- Edited by S.e.m.i.t.o.n.e. for Arrival Mod
+
+-- Creating anomalies at the start of level after emission/psi-storm and removing anomalies after emission/psi-storm instead of just disabling them, allowing for truly dynamic generation
+-- Anomalies behaviour:
+-- enable/disable with randomized periods, duration and cooldowns for every single anomaly
+-- behaviour if actor is near an anomaly
+-- behaviour on hit
+-- Spawning artefacts in new anomaly zones
+
+--=============================================================
+--
+-- Dynamic Anomaly Generator (drx_da_main.script)
+-- CoC 1.5b r4 - DoctorX Dynamic Anomalies 2.1
+--
+-- - Generates randomly placed anomalies on specified smart terrains
+-- - Setting file: configs\drx\drx_da_config.ltx
+--
+-- Created by: DoctorX
+-- Last revised: April 02, 2018
+--
+--=============================================================
+
+-- Imports
+local clamp = clamp
+local time_global = time_global
+
+local get_start_time = level.get_start_time
+local get_game_time = game.get_game_time
+
+local level_vertex_id = level.vertex_id
+local level_vertex_position = level.vertex_position
+
+local abs = math.abs
+local ceil = math.ceil
+local cos = math.cos
+local floor = math.floor
+local max = math.max
+local min = math.min
+local random = math.random
+local sin = math.sin
+local sqrt = math.sqrt
+
+local CreateTimeEvent = demonized_time_events.CreateTimeEvent
+local RemoveTimeEvent = demonized_time_events.RemoveTimeEvent
+local process_queue = demonized_concurrent_queues.process_queue
+local remove_queue = demonized_concurrent_queues.remove_queue
+
+local add_speed = speed.add_speed
+local remove_speed = speed.remove_speed
+
+-- MCM
+-- Load the defaults
+local function load_defaults()
+ local t = {}
+ local op = drx_da_main_mcm.op
+ for i, v in ipairs(op.gr) do
+ if v.def ~= nil then
+ t[v.id] = v.def
+ end
+ end
+ return t
+end
+
+local settings = load_defaults()
+
+local function load_settings()
+ settings = load_defaults()
+ if ui_mcm then
+ for k, v in pairs(settings) do
+ settings[k] = ui_mcm.get("drx_da/" .. k)
+ end
+ end
+end
+
+-- UTILS
+--Recursive print of tables similar to PHP print_r function
+local print_r = print_r or function(t)
+ local print_r_cache={}
+ local function sub_print_r(t,indent)
+ if (print_r_cache[tostring(t)]) then
+ printf(indent.."*"..tostring(t))
+ else
+ print_r_cache[tostring(t)]=true
+ if (type(t)=="table") then
+ for pos,val in pairs(t) do
+ if (type(val)=="table") then
+ printf(indent.."["..pos.."] => "..tostring(t).." {")
+ sub_print_r(val,indent..string.rep(" ",string.len(pos)+8))
+ printf(indent..string.rep(" ",string.len(pos)+6).."}")
+ else
+ printf(indent.."["..pos.."] => "..tostring(val))
+ end
+ end
+ else
+ printf(indent..tostring(t))
+ end
+ end
+ end
+ sub_print_r(t," ")
+end
+
+--Protected function call to prevent crashes to desktop
+--Prints error in console if occured, otherwise proceed normally
+--Use for test only, slower than usual
+local try = try or function(func, ...)
+ local status, error_or_result = pcall(func, ...)
+ if not status then
+ printf(error_or_result)
+ return false, status, error_or_result
+ else
+ return error_or_result, status
+ end
+end
+
+-- Shuffle table, Fisher-Yates shuffle with preserving original table
+local function shuffle(t)
+ local s = {}
+ for i = 1, #t do s[i] = t[i] end
+ for i = #t, 2, -1 do
+ local j = random(i)
+ s[i], s[j] = s[j], s[i]
+ end
+ return s
+end
+
+-- Get time elapsed from the start of the game in IRL seconds
+local time_factor = 6
+local function get_time_elapsed()
+ --trace(time_factor)
+ return floor(get_game_time():diffSec(get_start_time()) / time_factor * 10) * 0.1
+end
+
+local function round(amount)
+ return floor(amount + 0.5)
+end
+
+local og_printf = printf
+local function printf(str, ...)
+ if settings.debug_mode then
+ og_printf("DRX DA: " .. str, ...)
+ end
+end
+
+--EMA smoothing for changing values, frame independent
+local default_smoothing = 11.5
+local smoothed_values = {}
+
+local function ema(key, value, def, steps, delta)
+ local steps = steps or default_smoothing
+ local delta = delta or steps
+ local smoothing_alpha = 2.0 / (steps + 1)
+
+ smoothed_values[key] = smoothed_values[key] and smoothed_values[key] + min(smoothing_alpha * (delta / steps), 1) * (value - smoothed_values[key]) or def or value
+
+ --printf("EMA fired, key %s, target %s, current %s, going %s", key, value, smoothed_values[key], (value > smoothed_values[key] and "up" or "down"))
+ return smoothed_values[key]
+end
+
+local get_safe_sound_object = xr_sound.get_safe_sound_object
+local function play_sound_on_actor(snd, volume, frequency, obj)
+ if not snd then
+ printf("snd is nil")
+ return
+ end
+ local actor = db.actor
+ local snd = get_safe_sound_object(snd)
+ if snd then
+ if obj and obj:id() ~= AC_ID then
+ snd:play_at_pos(obj, obj:position(), 0, sound_object.s3d)
+ else
+ snd:play(actor, 0, sound_object.s2d)
+ end
+ snd.volume = volume or 1
+ snd.frequency = frequency or 1
+ return snd
+ end
+end
+
+-- Table of current active effects, contains tables of these {
+-- timer = time_elapsed + timer in seconds, how long effect will be applied
+-- effect = function(), the function of the effect
+-- effect_function - string, dump of effect function to store in m_data
+-- effect_args - array, args to effect_function
+-- on_end = function(), the function on the expiration of effect
+-- on_end_function - string, dump of on_end function to store in m_data
+-- on_end_args - array, args to on_end_function
+-- key - string, custom key to set in timed_effects table, otherwise will be used first available one
+-- not_save - boolean, do not save in mdata }
+-- this is the complex function intended to have persistence between saves, moving to different maps and so on, use if needed
+-- no upvalues are allowed in the functions, best to reference globals by _G. lookup
+-- The precision for both cooldown and timed effects is 0.1 or 100ms, making more precise timer or timed effect is pointless
+local time_elapsed = 0
+timed_effects = {}
+function add_timed_effect(timer, effect_function, effect_args, on_end_function, on_end_args, key, not_save)
+ printf("current_time %s, adding effect %s", time_elapsed, time_elapsed + (timer or 0))
+
+ local dump = string.dump
+ local load = loadstring
+ local unpack = unpack
+ local table_insert = table.insert
+
+ local effect_args = effect_args or {}
+ local on_end_args = on_end_args or {}
+ local effect = {
+ timer = time_elapsed + (timer or 0),
+ effect = effect_function and function()
+ effect_function(unpack(effect_args))
+ end,
+ effect_function = effect_function and dump(effect_function),
+ effect_args = effect_args,
+ on_end = on_end_function and function()
+ on_end_function(unpack(on_end_args))
+ end,
+ on_end_function = on_end_function and dump(on_end_function),
+ on_end_args = on_end_args,
+ save = not not_save
+ }
+
+ if key then
+ timed_effects[key] = effect
+ else
+ table_insert(timed_effects, effect)
+ end
+end
+
+-- This is the simpler version of the function above if you do not care about persistence and saving states
+function add_simple_timed_effect(timer, effect_function, on_end_function, key, overwrite_mode)
+ -- printf("current_time %s, adding effect %s", time_elapsed, time_elapsed + (timer or 0))
+
+ if key and timed_effects[key] then
+ if overwrite_mode == false or overwrite_mode == 0 then
+ -- printf("can't add effect %s, already exists", k)
+ return
+ elseif overwrite_mode == 1 then
+ timed_effects[key].timer = time_elapsed + (timer or 0)
+ return
+ end
+ end
+
+ local dump = string.dump
+ local load = loadstring
+ local unpack = unpack
+ local table_insert = table.insert
+
+ local effect = {
+ timer = time_elapsed + (timer or 0),
+ effect = effect_function,
+ on_end = on_end_function
+ }
+
+ if effect.on_end then
+ -- printf("effect has on end function %s", effect.on_end)
+ end
+
+ if key then
+ timed_effects[key] = effect
+ else
+ table_insert(timed_effects, effect)
+ end
+end
+
+function remove_timed_effect(key, on_end)
+ if not timed_effects[key] then return end
+
+ printf("removing effect, key %s", key)
+ if on_end and timed_effects[key].on_end then
+ printf("removing effect, firing on end, key %s", key)
+ timed_effects[key].on_end()
+ end
+ timed_effects[key] = nil
+end
+
+-- Processing the effects
+-- Whatever lowest time is set for effect, it will be processed at least once on process cycle
+local function process_timed_effects()
+ local pairs = pairs
+ local printf = printf
+ for key, props in pairs(timed_effects) do
+ if props.effect then
+ props.effect()
+ end
+ -- printf("effect %s, timer %s, current_time %s", key, props.timer, time_elapsed)
+ if props.timer < time_elapsed then
+ printf("removing effect, effect timer %s, current_time %s", props.timer, time_elapsed)
+ if props.on_end then
+ props.on_end()
+ end
+ timed_effects[key] = nil
+ end
+ end
+end
+
+-- Callbacks
+callbacks = {}
+function register_callback(callback, callback_function, on_end_function, key)
+ if key and callbacks[key] then
+ UnregisterScriptCallback(callbacks[key].callback, callbacks[key].func)
+ end
+
+ local t = {
+ callback = callback,
+ func = callback_function,
+ on_end = on_end_function
+ }
+
+ local key = key or (#callbacks + 1)
+ callbacks[key] = t
+ printf("registering callback %s, key %s", callback, key)
+ RegisterScriptCallback(callbacks[key].callback, callbacks[key].func)
+ return key
+end
+
+function unregister_callback(key)
+ if not callbacks[key] then return end
+ printf("unregistering callback %s, %s", key, callbacks[key].callback)
+ UnregisterScriptCallback(callbacks[key].callback, callbacks[key].func)
+ if callbacks[key].on_end then
+ callbacks[key].on_end()
+ end
+ callbacks[key] = nil
+end
+
+function unregister_callbacks()
+ for i, props in pairs(callbacks) do
+ unregister_callback(i)
+ end
+end
+
+-- Get psy table to manipulate psy health values
+local actor_psy_table = {}
+function get_actor_psy_table()
+ if is_not_empty(actor_psy_table) then return end
+
+ local m_data = alife_storage_manager.get_state()
+ arszi_psy.save_state(m_data)
+ actor_psy_table = m_data.psy_table
+end
+
+function set_psy_health(amount)
+ if actor_psy_table.actor_psy_health then
+ actor_psy_table.actor_psy_health = amount <= 1 and amount or 1
+ end
+end
+
+function change_psy_health(amount)
+ if actor_psy_table.actor_psy_health then
+ set_psy_health(actor_psy_table.actor_psy_health + amount)
+ end
+end
+
+-- DRX DA
+
+-- Location of the settings file:
+local ini = ini_file("drx\\drx_da_config.ltx")
+
+-- Table of levels that will have reduced chance to spawn anomalies
+reduced_chance_levels = {
+ k00_marsh = true,
+ l03u_agr_underground = true,
+ l04_darkvalley = true,
+ l04u_labx18 = true,
+ l05_bar = true,
+ l10_radar = true,
+ jupiter_underground = true,
+ jupiter = true,
+ l11_pripyat = true,
+ pripyat = true,
+ zaton = true,
+}
+
+anomaly_radii = {
+ zone_field_radioactive = {min = 5, max = 8},
+ zone_field_radioactive_average = {min = 5, max = 8},
+ zone_field_radioactive_strong = {min = 5, max = 8},
+ zone_field_radioactive_weak = {min = 5, max = 8},
+ zone_radioactive = {min = 4, max = 6},
+ zone_radioactive_average = {min = 4, max = 6},
+ zone_radioactive_strong = {min = 4, max = 6},
+ zone_radioactive_weak = {min = 4, max = 6},
+
+ zone_mine_acid = {min = 2, max = 3},
+ zone_mine_acidic_weak = {min = 2, max = 3},
+ zone_mine_acidic_average = {min = 2, max = 3},
+ zone_mine_acidic_strong = {min = 2, max = 3},
+ zone_mine_blast = {min = 2, max = 3},
+ zone_mine_umbra = {min = 2, max = 3},
+ zone_mine_electra = {min = 2, max = 3},
+ zone_mine_electric_weak = {min = 2, max = 3},
+ zone_mine_electric_average = {min = 2, max = 3},
+ zone_mine_electric_strong = {min = 2, max = 3},
+ zone_mine_flash = {min = 3, max = 3},
+ zone_mine_ghost = {min = 2, max = 3},
+ zone_mine_gold = {min = 2, max = 3},
+ zone_mine_thorn = {min = 2, max = 3},
+ zone_mine_seed = {min = 3, max = 3},
+ zone_mine_shatterpoint = {min = 6, max = 8},
+ zone_mine_gravitational_weak = {min = 2, max = 3},
+ zone_mine_gravitational_average = {min = 3, max = 5},
+ zone_mine_gravitational_strong = {min = 4, max = 6},
+ zone_mine_sloth = {min = 3, max = 4},
+ zone_mine_mefistotel = {min = 3, max = 4},
+ zone_mine_net = {min = 2, max = 3},
+ zone_mine_point = {min = 2, max = 3},
+ zone_mine_cdf = {min = 2, max = 3},
+ zone_mine_sphere = {min = 4, max = 5},
+ zone_mine_springboard = {min = 4, max = 6},
+ zone_mine_thermal_weak = {min = 1, max = 2},
+ zone_mine_thermal_average = {min = 1, max = 2},
+ zone_mine_thermal_strong = {min = 1, max = 2},
+ zone_mine_vapour = {min = 1, max = 2},
+ zone_mine_vortex = {min = 3, max = 5},
+ zone_mine_zharka = {min = 1, max = 2},
+}
+
+updated_anomaly_levels = {}
+last_surge_time = 0
+
+function init_anomaly_table_on_level(level_name)
+ local level_name = level_name or level.name()
+ if not updated_anomaly_levels[level_name] then updated_anomaly_levels[level_name] = {} end
+ if not updated_anomaly_levels[level_name].cleaned_old_anomalies then updated_anomaly_levels[level_name].cleaned_old_anomalies = false end
+ if not updated_anomaly_levels[level_name].anomalies then updated_anomaly_levels[level_name].anomalies = {} end
+ if not updated_anomaly_levels[level_name].anomalies_properties then updated_anomaly_levels[level_name].anomalies_properties = {} end
+ if not updated_anomaly_levels[level_name].anomalies_by_smart then updated_anomaly_levels[level_name].anomalies_by_smart = {} end
+ if not updated_anomaly_levels[level_name].smart_by_anomalies then updated_anomaly_levels[level_name].smart_by_anomalies = {} end
+ if not updated_anomaly_levels[level_name].anomaly_types_by_smart then updated_anomaly_levels[level_name].anomaly_types_by_smart = {} end
+ if not updated_anomaly_levels[level_name].available_smarts_reduced then updated_anomaly_levels[level_name].available_smarts_reduced = {} end
+ if not updated_anomaly_levels[level_name].artefacts then updated_anomaly_levels[level_name].artefacts = {} end
+ if not updated_anomaly_levels[level_name].time then updated_anomaly_levels[level_name].time = -1 end
+ if not updated_anomaly_levels[level_name].disabled then updated_anomaly_levels[level_name].disabled = false end
+end
+
+function init_anomaly_table_global(current_level)
+ init_anomaly_table_on_level(current_level)
+ for k, v in pairs(updated_anomaly_levels) do
+ init_anomaly_table_on_level(k)
+ end
+end
+
+local obj_restrictions = {}
+local in_restrictions = {}
+local smart_restrictions = {}
+
+function clean_restriction_tables()
+ empty_table(obj_restrictions)
+ empty_table(in_restrictions)
+ empty_table(smart_restrictions)
+end
+
+function get_obj_restrictions(clean)
+ if clean then
+ clean_restriction_tables()
+ end
+
+ if is_not_empty(obj_restrictions) then return obj_restrictions end
+
+ local alife = alife()
+ local alife_level_name = alife.level_name
+ local alife_object = alife.object
+ local gg = game_graph()
+ local gg_vertex = gg.vertex
+ local level_name = level.name()
+ local get_monster_data = utils_stpk.get_monster_data
+ local get_stalker_data = utils_stpk.get_stalker_data
+
+ local function get_nearest_smart_id(se_obj)
+ local dist
+ local min_dist
+ local nearest
+ local nearest_name
+
+ for name,smart in pairs( SIMBOARD.smarts_by_names ) do
+ local dist = smart.position:distance_to(se_obj.position)
+ if (not min_dist) then
+ min_dist = dist
+ nearest = smart
+ nearest_name = name
+ elseif (dist < min_dist) then
+ min_dist = dist
+ nearest = smart
+ nearest_name = name
+ end
+ end
+ if (nearest) then
+ if (simulation_objects.is_on_the_same_level(nearest, se_obj)) then
+ return nearest.id, nearest_name
+ end
+ end
+ end
+
+ local restrictions = {
+ ["dynamic_out_restrictions"] = true,
+ ["dynamic_in_restrictions"] = true,
+ ["base_out_restrictors"] = true,
+ ["base_in_restrictors"] = true,
+ }
+
+ for i = 1, 65534 do
+ local se_obj = alife_object(alife, i)
+ if se_obj then
+ local cls = se_obj:clsid()
+ if IsMonster(_, cls) then
+ local se_obj_level = alife_level_name(alife, gg_vertex(gg, se_obj.m_game_vertex_id):level_id())
+ if true or se_obj_level == level_name then
+ local monster_data = get_monster_data(se_obj)
+ if monster_data then
+ -- printf(".")
+ -- printf("monster_data for %s, %s, level %s", se_obj:section_name(), se_obj.id, se_obj_level)
+ for k, v in spairs(restrictions) do
+ -- printf("[%s] => %s", k, v)
+ if monster_data[k] and type(monster_data[k]) == "table" then
+ -- printf("..")
+ for k1, v1 in spairs(monster_data[k]) do
+ if not obj_restrictions[se_obj.id] then obj_restrictions[se_obj.id] = {} end
+ if not obj_restrictions[se_obj.id][k] then obj_restrictions[se_obj.id][k] = {} end
+ obj_restrictions[se_obj.id][k][v1] = true
+ in_restrictions[v1] = true
+ local nearest_smart_id, nearest_smart_name = get_nearest_smart_id(se_obj)
+ if nearest_smart_name then
+ -- printf("%s", nearest_smart_name)
+ smart_restrictions[nearest_smart_name] = v1
+ end
+ -- printf("[%s] => %s", k1, v1)
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ -- print_r(smart_restrictions)
+ -- print_r(obj_restrictions)
+ return obj_restrictions
+end
+
+function remove_all_restrictions(level_name)
+ local alife_release_id = alife_release_id
+ local gg = game_graph()
+ local gg_vertex = gg.vertex
+ local invert_table = invert_table
+ local is_not_empty = is_not_empty
+ local IsMonster = IsMonster
+ local load_var = load_var
+ local pairs = pairs
+ local printf = printf
+ local sim = alife()
+ local sim_level_name = sim.level_name
+ local sim_object = sim.object
+ local sim_release = sim.release
+ local sim_remove_in_restriction = sim.remove_in_restriction
+ local sim_remove_out_restriction = sim.remove_out_restriction
+ local spairs = spairs
+ local strformat = strformat
+ local type = type
+
+ local globally = not level_name
+
+ local get_monster_data = utils_stpk.get_monster_data
+ local get_stalker_data = utils_stpk.get_stalker_data
+
+ local restrictions = {
+ ["dynamic_out_restrictions"] = true,
+ ["dynamic_in_restrictions"] = true,
+ -- ["base_out_restrictors"] = true,
+ -- ["base_in_restrictors"] = true,
+ }
+
+ local anomalies_ids = {}
+
+ for i = 1, 65534 do
+ local se_obj = sim_object(sim, i)
+ if se_obj then
+ local cls = se_obj:clsid()
+ if IsMonster(_, cls) or IsStalker(_, cls) then
+ local se_obj_level = sim_level_name(sim, gg_vertex(gg, se_obj.m_game_vertex_id):level_id())
+ if globally or se_obj_level == level_name then
+ if not anomalies_ids[se_obj_level] then
+ anomalies_ids[se_obj_level] = updated_anomaly_levels[se_obj_level] and invert_table(updated_anomaly_levels[se_obj_level].anomalies) or {}
+ end
+ local monster_data = IsMonster(_, cls) and get_monster_data(se_obj) or get_stalker_data(se_obj)
+ if monster_data then
+ for k, v in pairs(restrictions) do
+ if monster_data[k] and type(monster_data[k]) == "table" then
+ for k1, v1 in pairs(monster_data[k]) do
+ if anomalies_ids[se_obj_level][v1] then
+ printf("removed restriction %s for level %s", se_obj:name(), se_obj_level)
+ sim_remove_in_restriction(sim, se_obj, v1)
+ sim_remove_out_restriction(sim, se_obj, v1)
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+
+ -- for i = 1, 65534 do
+ -- local obj = level.object_by_id(i)
+ -- if obj and obj ~= 0 and IsMonster(obj) then
+ -- printf("removing restrictions for %s, %s", obj:section(), i)
+ -- obj:remove_all_restrictions()
+ -- end
+ -- end
+end
+
+function get_anomaly_obj(id, level_name)
+ local level_name = level_name or level.name()
+ local obj = alife():object(id)
+
+ if not obj or obj == 0 or obj.id == 0 then
+ -- printf("Error, anomaly game object not found by id %s, level %s", id, level_name)
+ return
+ end
+
+ if not IsAnomaly(_, obj:clsid()) then
+ -- printf("Error, object is not an anomaly, %s, %s, on level %s", obj:section_name(), obj.id, level_name)
+ return
+ end
+
+ local sim = alife()
+ local sim_level_name = sim.level_name
+ local gg = game_graph()
+ local gg_vertex = gg.vertex
+ local obj_level = sim_level_name(sim, gg_vertex(gg, obj.m_game_vertex_id):level_id())
+ if obj_level ~= level_name then
+ -- printf("Error, anomaly game object found by id %s but on different level %s, requested level %s", id, obj_level, level_name)
+ return
+ end
+
+ return obj
+end
+
+function get_anomaly_smart(id, level_name)
+ local obj = get_anomaly_obj(id, level_name)
+ if obj then
+ return updated_anomaly_levels[level_name].smart_by_anomalies[id]
+ end
+end
+
+function get_anomalies_by_smart(level_name)
+ local level_name = level_name or level.name()
+ if not updated_anomaly_levels[level_name].anomalies_by_smart or is_empty(updated_anomaly_levels[level_name].anomalies_by_smart) then
+ local sim = alife()
+ local gg = game_graph()
+ for _, id in pairs(updated_anomaly_levels[level_name].anomalies) do
+ local se_obj = alife_object(id)
+ if se_obj then
+ for smart_name, smart in pairs(SIMBOARD.smarts_by_names) do
+ if smart and smart.m_game_vertex_id == se_obj.m_game_vertex_id then
+ printf("adding anomaly %s to smart %s", se_obj:section_name(), smart_name)
+ if not updated_anomaly_levels[level_name].anomalies_by_smart then
+ updated_anomaly_levels[level_name].anomalies_by_smart = {}
+ end
+
+ if not updated_anomaly_levels[level_name].smart_by_anomalies then
+ updated_anomaly_levels[level_name].smart_by_anomalies = {}
+ end
+
+ if not updated_anomaly_levels[level_name].anomalies_by_smart[smart_name] then
+ updated_anomaly_levels[level_name].anomalies_by_smart[smart_name] = {}
+ end
+
+ if not updated_anomaly_levels[level_name].anomaly_types_by_smart[smart_name] then
+ updated_anomaly_levels[level_name].anomaly_types_by_smart[smart_name] = ""
+ end
+
+ updated_anomaly_levels[level_name].anomalies_by_smart[smart_name][id] = true
+ updated_anomaly_levels[level_name].smart_by_anomalies[id] = smart_name
+ end
+ end
+ end
+ end
+ end
+end
+
+function disable_anomaly_obj(id, level_name)
+ local obj = get_anomaly_obj(id, level_name)
+ if obj then
+ local g_obj = level.object_by_id(id)
+ if g_obj and g_obj ~= 0 and g_obj:id() ~= 0 then
+ printf("disabling anomaly %s, %s, level %s", g_obj:section(), g_obj:id(), level_name)
+ g_obj:disable_anomaly()
+ end
+ end
+end
+
+function disable_anomalies_on_level(level_name)
+ local level_name = level_name or level.name()
+ for _, id in pairs(updated_anomaly_levels[level_name].anomalies) do
+ disable_anomaly_obj(id, level_name)
+ end
+end
+
+function enable_anomaly_obj(id, level_name)
+ local obj = get_anomaly_obj(id, level_name)
+ if obj then
+ local g_obj = level.object_by_id(id)
+ if g_obj and g_obj ~= 0 and g_obj:id() ~= 0 then
+ printf("enabling anomaly %s, %s, level %s", g_obj:section(), g_obj:id(), level_name)
+ g_obj:enable_anomaly()
+ end
+ end
+end
+
+function enable_anomalies_on_level(level_name)
+ local level_name = level_name or level.name()
+ for _, id in pairs(updated_anomaly_levels[level_name].anomalies) do
+ enable_anomaly_obj(id, level_name)
+ end
+end
+
+function remove_anomaly_obj(id, level_name)
+ local obj = get_anomaly_obj(id, level_name)
+ if obj then
+ if not IsAnomaly(_, obj:clsid()) then
+ printf("Error, object is not an anomaly, %s, %s, on level %s", obj:section_name(), obj.id, level_name)
+ return
+ end
+
+ printf("removing anomaly object %s, %s, on level %s", obj:section_name(), obj.id, level_name)
+ -- obj:disable_anomaly()
+
+ local db_tables = {
+ db.actor_inside_zones,
+ db.anim_obj_by_name,
+ db.anomaly_by_name,
+ db.bridge_by_name,
+ db.camp_storage,
+ db.campfire_by_name,
+ db.campfire_table_by_smart_names,
+ db.dynamic_ltx,
+ db.heli,
+ db.heli_enemies,
+ db.info_restr,
+ db.level_doors,
+ db.no_weap_zones,
+ db.offline_objects,
+ db.script_ids,
+ db.signal_light,
+ db.smart_terrain_by_id,
+ db.spawned_vertex_by_id,
+ db.storage,
+ db.story_by_id,
+ db.story_object,
+ db.used_level_vertex_ids,
+ db.zone_by_name,
+ }
+
+ for i = 1, #db_tables do
+ if is_not_empty(db_tables[i]) then
+ db_tables[i][obj.id] = nil
+ db_tables[i][obj:name()] = nil
+ end
+ end
+ bind_anomaly_field.fields_by_names[obj:name()] = nil
+
+ local g_obj = level.object_by_id(id)
+ if g_obj and g_obj ~= 0 and g_obj:id() ~= 0 then
+ g_obj:destroy_object()
+ else
+ alife_record(obj, false)
+ alife():release(obj, true)
+ end
+ end
+end
+
+-- Delete old anomalies persisting from old code
+function clean_old_dynamic_anomalies_on_level(level_name)
+ if not updated_anomaly_levels[level_name].cleaned_old_anomalies then
+ local load_var = load_var
+ local pairs = pairs
+ local sim = alife()
+ local sim_level_name = sim.level_name
+ local gg = game_graph()
+ local gg_vertex = gg.vertex
+ local strformat = strformat
+
+ local fully_cleaned = true
+
+ for smart_name, v in pairs(SIMBOARD.smarts_by_names) do
+ local smart_level = sim_level_name(sim, gg_vertex(gg, v.m_game_vertex_id):level_id())
+ if smart_level == level_name then
+ for j = 1, 1000 do
+ local anom_id = load_var(db.actor, strformat("drx_da_anom_id_%s_%s", smart_name, j), nil)
+ if anom_id then
+ if not in_restrictions[anom_id] then
+ remove_anomaly_obj(anom_id, level_name)
+ else
+ printf("Error, can't remove old anomaly %s, level %s, in restriction", anom_id, level_name)
+ fully_cleaned = false
+ end
+ end
+ end
+ end
+ end
+ updated_anomaly_levels[level_name].cleaned_old_anomalies = fully_cleaned
+ else
+ printf("old anomalies already cleaned on level %s", level_name)
+ end
+end
+
+-- Clean dynamic anomalies on level, normally after surge on level change or forcefully
+function clean_dynamic_anomalies_on_level_func(level_name)
+ local t = updated_anomaly_levels[level_name]
+ if not t then
+ printf("Error, updated_anomaly_levels table not found for %s", level_name)
+ return
+ end
+
+ local t = t.anomalies
+ for i, id in pairs(t) do
+ if t[i] and not in_restrictions[t[i]] then
+ remove_anomaly_obj(t[i], level_name)
+
+ for k, v in pairs(updated_anomaly_levels[level_name].anomalies_by_smart) do
+ v[t[i]] = nil
+ updated_anomaly_levels[level_name].anomaly_types_by_smart[k] = nil
+ if is_empty(v) then
+ updated_anomaly_levels[level_name].anomalies_by_smart[k] = nil
+ updated_anomaly_levels[level_name].available_smarts_reduced[k] = nil
+ end
+ end
+
+ updated_anomaly_levels[level_name].smart_by_anomalies[t[i]] = nil
+ updated_anomaly_levels[level_name].anomalies_properties[t[i]] = nil
+ t[i] = nil
+ else
+ printf("Error, can't remove anomaly %s, level %s, in restriction", t[i], level_name)
+ end
+ end
+
+ clean_old_dynamic_anomalies_on_level(level_name)
+ printf("Anomalies cleaned on level %s", level_name)
+end
+
+function clean_dynamic_anomalies_on_level(level_name, dont_clean_restrictions)
+ get_anomalies_by_smart(level_name)
+ remove_all_restrictions(level_name)
+
+ get_obj_restrictions(not dont_clean_restrictions)
+ -- disable_anomalies_on_level(level_name)
+ -- remove_restrictions(level_name)
+
+ clean_dynamic_anomalies_on_level_func(level_name)
+ -- enable_anomalies_on_level(level_name)
+ -- clean_restriction_tables()
+end
+
+function clean_dynamic_anomalies_global()
+ remove_all_restrictions()
+ get_obj_restrictions(true)
+
+ unregister_anomalies_behaviour()
+
+ local alife_release_id = alife_release_id
+ local gg = game_graph()
+ local gg_vertex = gg.vertex
+ local level_name = level.name()
+ local load_var = load_var
+ local pairs = pairs
+ local printf = printf
+ local sim = alife()
+ local sim_level_name = sim.level_name
+ local sim_object = sim.object
+ local sim_release = sim.release
+ local alife_record = alife_record
+ local strformat = strformat
+
+ for k, v in pairs(updated_anomaly_levels) do
+ get_anomalies_by_smart(k)
+ clean_artefacts_on_level(k)
+ if k == level_name then
+ disable_anomalies_on_level(level_name)
+ v.disabled = true
+ -- clean_dynamic_anomalies_on_level_func(level_name)
+ else
+ for k1, v1 in pairs(v.anomalies) do
+ if not in_restrictions[v1] then
+ local se_obj = sim_object(sim, v1)
+ if se_obj then
+ if IsAnomaly(_, se_obj:clsid()) then
+ printf("Deleting anomaly %s, %s globally, level %s", se_obj:section_name(), v1, k)
+ alife_record(se_obj ,false)
+ alife():release(se_obj, true)
+ else
+ printf("Error, object is not an anomaly, %s, %s, on level %s", se_obj:section_name(), v1, k)
+ end
+ end
+
+ for k2, v2 in pairs(v.anomalies_by_smart) do
+ v2[v1] = nil
+ v.anomaly_types_by_smart[k2] = nil
+ if is_empty(v2) then
+ v.anomalies_by_smart[k2] = nil
+ v.available_smarts_reduced[k2] = nil
+ end
+ end
+
+ v.smart_by_anomalies[v1] = nil
+ v.anomalies_properties[v1] = nil
+ v.anomalies[k1] = nil
+ else
+ printf("can't delete anomaly %s globally, level %s, in restriction", v1, k)
+ end
+ end
+
+ -- Old anomalies
+ if not v.cleaned_old_anomalies then
+ local fully_cleaned = true
+
+ for smart_name, v in pairs(SIMBOARD.smarts_by_names) do
+ local smart_level = sim_level_name(sim, gg_vertex(gg, v.m_game_vertex_id):level_id())
+ if smart_level == k then
+ for j = 1, 1000 do
+ local anom_id = load_var(db.actor, strformat("drx_da_anom_id_%s_%s", smart_name, j), nil)
+ if anom_id then
+ if not in_restrictions[anom_id] then
+ local o = alife_object(anom_id)
+ if o then
+ alife_record(o ,false)
+ alife():release(o, true)
+ end
+ else
+ printf("Error, can't remove old anomaly %s, level %s, in restriction", anom_id, k)
+ fully_cleaned = false
+ end
+ end
+ end
+ end
+ end
+ v.cleaned_old_anomalies = fully_cleaned
+ else
+ printf("old anomalies already cleaned on level %s", k)
+ end
+ end
+ end
+ printf("Cleaned dynamic anomalies globally")
+ if settings.save_after_cleanup then
+ CreateTimeEvent("drx_da_save_after_cleanup", 0, 0.1, function()
+ exec_console_cmd("save " .. (user_name() or "") .. " - DAO tempsave")
+ return true
+ end)
+ end
+end
+
+function drx_da_spawn_anomaly_on_smart(level_file, smart_name, anomaly_type, level_name, position_data)
+ -- Get the smart terrain:
+ local smart = SIMBOARD.smarts_by_names[smart_name]
+ if not smart then
+ printf("Error: Unable to create dynamic anomaly field for %s, the specified smart location does not exist", smart_name)
+ return false
+ end
+
+ -- Select a location for the current anomaly:
+ local pos = drx_da_generate_position(smart_name, anomaly_type, position_data)
+ if pos then
+
+ -- Get the new level vertex id for the generated position:
+ local lvid = level_vertex_id(pos)
+
+ -- Spawn the anomaly:
+ local anom_id = drx_da_spawn_anomaly(anomaly_type, pos, lvid, smart.m_game_vertex_id, level_file)
+
+ -- Return the anomaly id:
+ if anom_id then
+ printf("Dynamic anomaly field %s spawned at %s, level %s", anomaly_type, smart_name, level_name)
+ return anom_id
+ end
+ else
+ printf("Error: failed to generate position")
+ end
+end
+
+function get_level_data(level_name)
+ local level_file_name = "hazardous_anomalies\\regions\\" .. level_name .. ".ltx"
+ local level_file = ini_file(level_file_name)
+ if not level_file then
+ printf("ltx file not found: %s", level_file_name)
+ return false
+ end
+
+ -- Get the percent chance for anomalies to spawn:
+ local spawn_percent = level_file:r_float_ex("spawn_properties", "spawn_percent") or 0
+ if not spawn_percent or spawn_percent <= 0 then
+ printf("Dynamic anomalies not spawned, spawn chance is 0")
+ return false
+ end
+
+ -- Determine the maximum amount of anomalies spawned in each anomaly field:
+ local anomaly_max_number = level_file:r_float_ex("spawn_properties", "anomaly_max_number") or 0
+ if not anomaly_max_number or anomaly_max_number < 1 then
+ printf("Dynamic anomalies not spawned, max anomaly count is 0")
+ return false
+ end
+
+ -- Determine the maximum amount of anomalies active in each anomaly field:
+ local anomaly_max_active = level_file:r_float_ex("spawn_properties", "anomaly_max_active") or 0
+ if not anomaly_max_active or anomaly_max_active < 1 then
+ printf("Dynamic anomalies not spawned, max active count is 0")
+ return false
+ end
+
+ return {
+ level_file = level_file,
+ spawn_percent = spawn_percent,
+ anomaly_max_number = anomaly_max_number,
+ anomaly_max_active = anomaly_max_active,
+ }
+end
+
+function generate_random_anomaly_properties()
+ return {
+ time_active = random(6500, 15000),
+ time_cooldown = random(2200, 3800),
+ active = true,
+ }
+end
+
+function drx_da_spawn_anomalies_on_level(level_name)
+ local level_data = get_level_data(level_name)
+ if not level_data then
+ printf("Error, unable to get data for %s", level_name)
+ return
+ end
+
+ local level_file = level_data.level_file
+ local spawn_percent = level_data.spawn_percent
+ local anomaly_max_number = level_data.anomaly_max_number * settings.anomaly_amount_modifier
+ local anomaly_max_active = level_data.anomaly_max_active
+
+ local pairs = pairs
+ local collect_section = utils_data.collect_section
+ local size_table = size_table
+ local invert_table = invert_table
+ local is_not_empty = is_not_empty
+ local is_empty = is_empty
+ local table_remove = table.remove
+
+ -- Build a list of available smart terrains:
+ local smart_list = collect_section(level_file, "available_smarts")
+
+ if is_not_empty(smart_list) then
+ if reduced_chance_levels[level_name] then
+ local t = {}
+ for k, v in pairs(smart_list) do
+ if random(100) <= 50 then
+ t[#t + 1] = v
+ end
+ end
+ smart_list = t
+ end
+ end
+
+ -- Build a list of available smart terrains with reduced amount:
+ local smart_list_reduced = collect_section(level_file, "available_smarts_reduced")
+ if is_not_empty(smart_list_reduced) then
+ smart_list_reduced = invert_table(smart_list_reduced)
+ for k, v in pairs(smart_list_reduced) do
+ smart_list[#smart_list + 1] = k
+ end
+ end
+
+ -- Build a list of available anomalies:
+ local anomaly_list = collect_section(level_file, "anomaly_types")
+ if settings.disable_new_anomalies then
+ local t = {}
+ for _, v in pairs(anomaly_list) do
+ if not drx_da_main_mcm.new_anomalies_sections[v] then
+ t[#t + 1] = v
+ else
+ printf("disable all new anomalies, found section %s", v)
+ end
+ end
+ anomaly_list = t
+ else
+ local t = {}
+ for k, v in pairs(anomaly_list) do
+ if drx_da_main_mcm.new_anomalies_sections[v] then
+ if drx_da_main_mcm.is_enabled_anomaly(v) then
+ t[#t + 1] = v
+ else
+ printf("anomaly %s is not enabled", v)
+ end
+ else
+ t[#t + 1] = v
+ end
+ end
+ anomaly_list = t
+ end
+
+ -- Combine radiation fields to one type
+ -- local rad_fields = {}
+ -- for i = #anomaly_list, 1, -1 do
+ -- if anomalies_radiation_fields[anomaly_list[i]] then
+ -- rad_fields[#rad_fields + 1] = anomaly_list[i]
+ -- table_remove(anomaly_list, i)
+ -- end
+ -- end
+ -- if is_not_empty(rad_fields) then
+ -- anomaly_list[#anomaly_list + 1] = "zone_radiation_field"
+ -- end
+
+ -- Build anomalies table
+ if is_not_empty(smart_list) then
+ local anomalies = updated_anomaly_levels[level_name].anomalies or {}
+ local anomalies_by_smart = updated_anomaly_levels[level_name].anomalies_by_smart or {}
+ local smart_by_anomalies = updated_anomaly_levels[level_name].smart_by_anomalies or {}
+ local anomaly_types_by_smart = updated_anomaly_levels[level_name].anomaly_types_by_smart or {}
+ local anomalies_properties = updated_anomaly_levels[level_name].anomalies_properties or {}
+ local available_smarts_reduced = updated_anomaly_levels[level_name].available_smarts_reduced or {}
+
+ for i, smart_name in pairs(smart_list) do
+ if (true or not smart_restrictions[smart_name]) and random() <= settings.anomaly_zone_spawn_chance then
+ -- Choose an anomaly type to spawn:
+ if anomaly_list and #anomaly_list >= 1 then
+ local anomaly_type = anomaly_list[random(#anomaly_list)]
+
+ -- if anomaly_type == "zone_radiation_field" then
+ -- anomaly_type = rad_fields[math.random(#rad_fields)]
+ -- end
+
+ printf("picked anomaly type %s", anomaly_type)
+
+ if not anomalies_by_smart[smart_name] then anomalies_by_smart[smart_name] = {} end
+ local j = size_table(anomalies_by_smart[smart_name])
+
+ -- Store position data of generated anomalies
+ local position_data = kd_tree.buildTreeVectors()
+
+ if j > 0 then
+ for k, v in pairs(anomalies_by_smart[smart_name]) do
+ local se_obj = get_anomaly_obj(k)
+ if se_obj then
+ local pos = se_obj.position
+ if pos then
+ position_data:insertAndRebuild({x = pos.x, y = pos.y, z = pos.z})
+ end
+ end
+ end
+ end
+
+ while j < (smart_list_reduced[smart_name] and random(3) or anomaly_max_number) do
+ if random() <= (smart_list_reduced[smart_name] and 0.5 or spawn_percent) then
+ local anom_id = drx_da_spawn_anomaly_on_smart(level_file, smart_name, anomaly_type, level_name, position_data)
+ if anom_id then
+ anomalies[#anomalies + 1] = anom_id
+ anomalies_by_smart[smart_name][anom_id] = true
+ smart_by_anomalies[anom_id] = smart_name
+ anomaly_types_by_smart[smart_name] = anomaly_type
+ available_smarts_reduced[smart_name] = smart_list_reduced[smart_name]
+ anomalies_properties[anom_id] = generate_random_anomaly_properties()
+ end
+ end
+ j = j + 1
+ end
+ else
+ printf("No dynamic anomaly types specified for level %s", level_name)
+ end
+ else
+ printf("no anomalies spawn on smart %s, level %s in restriction", smart_name, level_name)
+ end
+ end
+ return #anomalies > 0
+ end
+end
+
+-- \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
+-- ////////////////////////////////////////////////////////////////////////////////////////////////
+--
+-- drx_da_spawn_anomaly function
+--
+-- ------------------------------------------------------------------------------------------------
+--
+-- Description:
+-- - Spawns an anomaly at the specified location
+--
+-- Usage:
+-- drx_da_spawn_anomaly( anom_type, pos, lvid, gvid )
+--
+-- Parameters:
+-- anom_type (type: string, anomaly type name)
+-- - Type of anomaly to spawn
+-- pos (type: vector)
+-- - Positional data for the anomaly
+-- lvid (type: int, level vertex id)
+-- - Level vertex id
+-- gvid (type: int, game vertex id)
+-- - Game vertex id
+--
+-- Return value (type: object id):
+-- Returns the id of the spawned anomaly
+-- Returns nil on failure
+--
+-- ------------------------------------------------------------------------------------------------
+-- Created by DoctorX
+-- for DoctorX Dynamic Anomalies 2.0
+-- Last modified March 02, 2018
+-- ------------------------------------------------------------------------------------------------
+-- Spawn a single anomaly:
+function drx_da_spawn_anomaly(anom_type, pos, lvid, gvid, level_file)
+ local function abort_creation(se_obj_id, anom_type)
+ CreateTimeEvent("drx_da_abort_creation" .. se_obj_id, "drx_da_abort_creation" .. se_obj_id, 0.2, function()
+ local obj = alife():object(se_obj_id)
+ if obj then
+ printf("Error, anomaly %s failed to spawn correctly, releasing", anom_type)
+ alife_record(obj ,false)
+ alife():release(obj, true)
+ end
+ return true
+ end)
+ end
+
+ local min_radius = (level_file:r_float_ex("radius_properties", "min_radius") or 2)
+ local max_radius = (level_file:r_float_ex("radius_properties", "max_radius") or 3)
+
+ -- Spawn the anomaly:
+ local se_obj = alife():create(anom_type, pos, lvid, gvid)
+ if (not se_obj) then
+ printf("Error: Unable to spawn dynamic anomaly")
+ return
+ end
+
+ -- Set anomaly properties:
+ local data = utils_stpk.get_anom_zone_data(se_obj)
+ if (not data) then
+ printf("Error: Unable to set dynamic anomaly properties")
+ abort_creation(se_obj.id, anom_type)
+ return
+ end
+
+ data.shapes[1] = {}
+ data.shapes[1].shtype = 0
+ data.shapes[1].offset = vector():set(0, 0, 0) -- Leave for compatibility with CoC 1.4.22, delete later
+ data.shapes[1].center = vector():set(0, 0, 0)
+ data.shapes[1].radius = anomaly_radii[anom_type] and random(anomaly_radii[anom_type].min, anomaly_radii[anom_type].max) or random(min_radius, max_radius)
+ utils_stpk.set_anom_zone_data(data, se_obj)
+
+ -- Return the anomaly id:
+ return se_obj.id, se_obj
+end
+
+-- \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
+-- ////////////////////////////////////////////////////////////////////////////////////////////////
+--
+-- drx_da_generate_position function
+--
+-- ------------------------------------------------------------------------------------------------
+--
+-- Description:
+-- - Generates a random position vector on the ground within a smart terrain location
+--
+-- Usage:
+-- drx_da_generate_position( smart_name )
+--
+-- Parameters:
+-- smart_name (type: string, smart terrain name)
+-- - Name of the smart terrain
+--
+-- Ini requirements:
+-- drx\drx_da_config.ltx
+-- [location_offset]
+-- max_offset_x (type: float, meters)
+-- - Magnitude of maximum offset from smart terrain center in x (north-south) direction
+-- max_offset_y (type: float, meters)
+-- - Magnitude of maximum offset from smart terrain center in y (up-down) direction
+-- max_offset_z (type: float, meters)
+-- - Magnitude of maximum offset from smart terrain center in z (east-west) direction
+-- max_tries (type: int)
+-- - Maximum number of iterations to try generating a spawn position before aborting
+--
+-- Return value (type: vector):
+-- Returns the generated positional data
+-- Returns nil on failure
+--
+-- ------------------------------------------------------------------------------------------------
+-- Created by DoctorX, (modification of method suggested by Alundaio)
+-- for DoctorX Dynamic Anomalies 2.0
+-- Last modified January 31, 2018
+-- ------------------------------------------------------------------------------------------------
+
+-- Table of small levels to adjust spawn extra to underground levels
+small_levels = {
+ y04_pole = true,
+ l11_hospital = true,
+}
+
+-- Table of anomalies to ignore distance check
+anomalies_distance_check_ignore = {
+ zone_field_radioactive = true,
+ zone_field_radioactive_above_average = true,
+ zone_field_radioactive_average = true,
+ zone_field_radioactive_below_average = true,
+ zone_field_radioactive_lethal = true,
+ zone_field_radioactive_strong = true,
+ zone_field_radioactive_very_weak = true,
+ zone_field_radioactive_weak = true,
+ zone_radioactive = true,
+ zone_radioactive_above_average = true,
+ zone_radioactive_average = true,
+ zone_radioactive_below_average = true,
+ zone_radioactive_lethal = true,
+ zone_radioactive_strong = true,
+ zone_radioactive_very_weak = true,
+ zone_radioactive_weak = true,
+}
+
+-- Table of radiation fields
+anomalies_radiation_fields = {
+ zone_field_radioactive = true,
+ zone_field_radioactive_above_average = true,
+ zone_field_radioactive_average = true,
+ zone_field_radioactive_below_average = true,
+ zone_field_radioactive_lethal = true,
+ zone_field_radioactive_strong = true,
+ zone_field_radioactive_very_weak = true,
+ zone_field_radioactive_weak = true,
+ zone_radioactive = true,
+ zone_radioactive_above_average = true,
+ zone_radioactive_average = true,
+ zone_radioactive_below_average = true,
+ zone_radioactive_lethal = true,
+ zone_radioactive_strong = true,
+ zone_radioactive_very_weak = true,
+ zone_radioactive_weak = true,
+}
+
+-- Generate positional data:
+function drx_da_generate_position(smart_name, anomaly_type, position_data)
+
+ -- Get the smart terrain:
+ local smart = SIMBOARD.smarts_by_names[smart_name]
+ if (not smart) then
+ printf("Error: Unable to generate positional data, specified smart location does not exist")
+ return
+ end
+
+ -- Get maximum offset values:
+ local max_offset_x = settings.anomaly_zone_anomalies_distance_max or ini:r_float_ex("location_offset", "max_offset_x") or 40
+ local max_offset_y = ini:r_float_ex("location_offset", "max_offset_y") or 0
+ local max_offset_z = settings.anomaly_zone_anomalies_distance_max or ini:r_float_ex("location_offset", "max_offset_z") or 40
+ local num_tries = (ini:r_float_ex("location_offset", "max_tries") or 64)
+
+ -- Reduce offset by 2 times for underground
+ if level_weathers.bLevelUnderground or small_levels[level.name()] then
+ max_offset_x = floor(max_offset_x * 0.5)
+ max_offset_y = floor(max_offset_y * 0.5)
+ max_offset_z = floor(max_offset_z * 0.5)
+ end
+
+ -- Try to generate valid positional data on the ground:
+ local pos = vector():set(0, 0, 0)
+ local valid_lvid = false
+ while ((valid_lvid ~= true) and (num_tries > 0)) do
+
+ -- Randomly offset anomaly x-position from center of smart terrain:
+ local offset_x = max_offset_x * random()
+ if (random() <= 0.5) then
+ offset_x = -(offset_x)
+ end
+ local pos_x = (smart.position.x + offset_x)
+
+ -- Randomly offset anomaly y-position from center of smart terrain:
+ local offset_y = (max_offset_y * random())
+ if (random() <= 0.5) then
+ offset_y = -(offset_y)
+ end
+ local pos_y = (smart.position.y + offset_y)
+
+ -- Randomly offset anomaly z-position from center of smart terrain:
+ local offset_z = max_offset_z * random()
+ if (random() <= 0.5) then
+ offset_z = -(offset_z)
+ end
+ local pos_z = (smart.position.z + offset_z)
+
+ -- Set anomaly position at location vertex and check if valid:
+ pos = vector():set(pos_x, pos_y, pos_z)
+ local lvid = level_vertex_id(pos)
+ if (lvid < 4294967295) then
+ pos = level_vertex_position(lvid)
+
+ -- Don't check distance for certain anomalies
+ if anomaly_type and anomalies_distance_check_ignore[anomaly_type] then
+ valid_lvid = true
+ else
+ -- If position data exists and distance of generated position is more than anomaly radius - valid
+ try(function()
+ if anomaly_type and anomaly_radii[anomaly_type] and position_data and position_data.root then
+ local nearest = position_data:nearest(pos)
+ if nearest and nearest[1] and nearest[1][2] then
+ local distance = sqrt(nearest[1][2]) - anomaly_radii[anomaly_type].max * 2
+ if distance >= settings.anomaly_zone_anomalies_distance_min then
+ printf("Anomaly type %s, Position data valid, distance %s, saving %s, %s, %s", anomaly_type, distance, pos_x, pos_y, pos_z)
+ position_data:insertAndRebuild({x = pos_x, y = pos_y, z = pos_z})
+ valid_lvid = true
+ else
+ printf("Anomaly type %s, Position data invalid, too close, distance %s, %s, %s, %s", anomaly_type, distance, pos_x, pos_y, pos_z)
+ valid_lvid = false
+ end
+ else
+ printf("Anomaly type %s, Can't check position data %s, %s, %s", anomaly_type, pos_x, pos_y, pos_z)
+ position_data:insertAndRebuild({x = pos_x, y = pos_y, z = pos_z})
+ valid_lvid = true
+ end
+ else
+ if position_data then
+ printf("Anomaly type %s, Position data provided, saving %s, %s, %s", anomaly_type, pos_x, pos_y, pos_z)
+ position_data:insertAndRebuild({x = pos_x, y = pos_y, z = pos_z})
+ end
+ valid_lvid = true
+ end
+ end)
+ end
+ end
+
+ -- Decrement the number of tries left:
+ num_tries = (num_tries - 1)
+ if ((num_tries <= 0) and (valid_lvid ~= true)) then
+ printf("Error: Unable to generate valid lvid pos, aborting")
+ return
+ end
+ end
+
+ -- Return the position vector:
+ return pos
+end
+
+function clean_artefacts_on_level(level_name)
+ local level_name = level_name or level.name()
+
+ init_anomaly_table_on_level(level_name)
+ local artefacts = updated_anomaly_levels[level_name].artefacts
+ if is_not_empty(artefacts) then
+ for k, v in pairs(artefacts) do
+ local o = alife_object(k)
+ if o then safe_release_manager.release(o) end
+ printf("releasing artefact %s, sec %s, level_name %s", k, v, level_name)
+ artefacts[k] = nil
+ end
+ end
+end
+
+-- Spawn single artefact on smart
+function spawn_artefact_on_smart(level_file, smart_name, picked_artefact, level_name)
+ local level_name = level_name or level.name()
+
+ if not picked_artefact then
+ printf("Error: Unable to create artefact %s, is nil", picked_artefact)
+ return false
+ end
+
+ -- Get the smart terrain:
+ local smart = SIMBOARD.smarts_by_names[smart_name]
+ if not smart then
+ printf("Error: Unable to create artefact for %s, the specified smart location does not exist", smart_name)
+ return false
+ end
+
+ -- Select a location for the current artefact:
+ local pos = drx_da_generate_position(smart_name)
+ if pos then
+
+ -- Correct y position so the artefact wouldnt fall OOB
+ pos = vector():set(pos.x, (level_weathers.bLevelUnderground or small_levels[level.name()]) and pos.y + 1 or pos.y + 7, pos.z)
+
+ -- Get the new level vertex id for the generated position:
+ local lvid = level_vertex_id(pos)
+
+ -- Spawn the artefact:
+ local artefact = alife_create(picked_artefact, pos, lvid, smart.m_game_vertex_id)
+
+ -- Return the anomaly id:
+ if artefact then
+ printf("Artefact %s, id %s spawned at %s, level %s", picked_artefact, artefact.id, smart_name, level_name)
+ return artefact.id
+ end
+ else
+ printf("Error: failed to generate position")
+ end
+end
+
+-- Spawn artefacts on level
+function spawn_artefacts_on_level(level_name)
+ local level_name = level_name or level.name()
+
+ local level_data = get_level_data(level_name)
+ if not level_data then
+ printf("Error, unable to get data for %s", level_name)
+ return
+ end
+
+ local level_file = level_data.level_file
+
+ -- Build a list of available smart terrains:
+ local smart_list = {}
+ for k, v in pairs(updated_anomaly_levels[level_name].anomaly_types_by_smart) do
+ if not updated_anomaly_levels[level_name].available_smarts_reduced[k] then
+ smart_list[#smart_list + 1] = k
+ end
+ end
+ smart_list = invert_table(smart_list)
+
+ local pairs = pairs
+ local collect_section = utils_data.collect_section
+ local size_table = size_table
+
+ local allowed_artefacts = drx_da_main_artefacts.allowed_artefacts
+ local allowed_artefacts_flipped = invert_table(allowed_artefacts)
+ local anomaly_type_to_artefacts = drx_da_main_artefacts.anomaly_type_to_artefacts
+ local artefacts_map_tiers = drx_da_main_artefacts.artefacts_map_tiers[level_name] and shuffle(drx_da_main_artefacts.artefacts_map_tiers[level_name])
+ local artefacts_map_chances = drx_da_main_artefacts.artefacts_map_chances and drx_da_main_artefacts.artefacts_map_chances[level_name]
+
+ -- Build anomalies table
+ if is_not_empty(smart_list) then
+ printf("%s has smarts with anomalies, try to spawn artefacts", level_name)
+ local artefacts = updated_anomaly_levels[level_name].artefacts or {}
+ local anomalies_by_smart = updated_anomaly_levels[level_name].anomalies_by_smart
+ for smart_name, _ in pairs(anomalies_by_smart) do
+ printf("checking smart %s for spawning artefacts", smart_name)
+ if is_not_empty(anomalies_by_smart[smart_name]) and smart_list[smart_name] then
+ printf("try to spawn artefacts on smart %s", smart_name)
+ for i = 1, settings.max_artefacts_per_zone do
+
+ -- Increased chance by 2 times for underground levels
+ local dice_roll = random(100)
+ local chance = artefacts_map_chances or ceil(settings.artefacts_spawn_chance * ((level_weathers.bLevelUnderground or small_levels[level_name]) and 2 or 1))
+ printf("artefacts dice roll %s, chance %s, spawn %s", dice_roll, chance, dice_roll <= chance)
+
+ if dice_roll <= chance then
+ -- Choose an artefact to spawn:
+ local anomaly_type = updated_anomaly_levels[level_name].anomaly_types_by_smart[smart_name]
+ local picked_artefact = (function()
+
+ local res
+ if artefacts_map_tiers and random(100) > settings.random_artefact_spawn_chance then
+ local tries = 40
+ while tries > 0 and (not res or not allowed_artefacts_flipped[res]) do
+ if anomaly_type_to_artefacts[anomaly_type] then
+ local t = {}
+ for k, v in pairs(artefacts_map_tiers) do
+ if anomaly_type_to_artefacts[anomaly_type][v] then
+ t[#t + 1] = v
+ end
+ end
+ printf("picking artefact by level %s, anomaly zone %s has defined arty list", level_name, anomaly_type)
+ res = t[random(#t)]
+ else
+ printf("picking artefact by level %s", level_name)
+ res = artefacts_map_tiers[random(#artefacts_map_tiers)]
+ end
+
+ if not allowed_artefacts_flipped[res] then
+ printf("artefact is not allowed to spawn, repicking")
+ end
+
+ tries = tries - 1
+ end
+ else
+ printf("picking random artefacts")
+ res = allowed_artefacts[random(#allowed_artefacts)]
+ end
+
+ if not res then
+ printf("failed to pick artefact by level, pick random from allowed, level_name %s, anomaly_type %s, has artefacts_map_tiers %s, has anomaly_type_to_artefacts %s", level_name, anomaly_type, artefacts_map_tiers ~= nil, anomaly_type_to_artefacts[anomaly_type] ~= nil)
+ res = allowed_artefacts[random(#allowed_artefacts)]
+ end
+
+ return res
+ end)()
+
+ -- Artefact Variationizer compatibility
+ if artefact_variationizer then
+ local av = artefact_variationizer
+ picked_artefact = av.get_artefact_base(picked_artefact)
+ if av.valid_artys[picked_artefact] then
+ local variationizer_tier = av.artefact_chances[random(#av.artefact_chances)]
+ local arty = av.artefact_by_variationizer_tier[picked_artefact][variationizer_tier]
+ picked_artefact = arty[random(#arty)]
+ end
+ end
+
+ printf("picked artefact to spawn %s, anomaly_type %s, smart %s level %s", picked_artefact, anomaly_type, smart_name, level_name)
+ local artefact_id = spawn_artefact_on_smart(level_file, smart_name, picked_artefact, level_name)
+ if artefact_id then
+ artefacts[artefact_id] = picked_artefact
+ else
+ printf("error, unabled to spawn artefact %s, anomaly_type %s, smart %s level %s", picked_artefact, anomaly_type, smart_name, level_name)
+ end
+ end
+ end
+ end
+ end
+ return size_table(artefacts) > 0
+ else
+ printf("%s has no smarts with anomalies, dont spawn artefacts", level_name)
+ end
+end
+
+-- Update dynamic anomalies:
+function drx_da_update_dynamic_anomalies(force)
+
+ -- Verify db.actor is available:
+ if not db.actor then
+ printf("Error: Cannot update anomalies, db.actor not available")
+ return false
+ end
+
+ -- Get surge manager:
+ local surgeman = surge_manager.get_surge_manager()
+ if not surgeman then
+ printf("Error: Cannot update anomalies, surge manager not available")
+ return false
+ end
+
+ local level_name = level.name()
+ init_anomaly_table_on_level(level_name)
+
+ if last_surge_time > updated_anomaly_levels[level_name].time or force then
+ clean_dynamic_anomalies_on_level(level_name)
+ clean_artefacts_on_level(level_name)
+ CreateTimeEvent("drx_da_spawn_anomalies_on_level", "drx_da_spawn_anomalies_on_level", 0.3, function()
+ local anomalies = drx_da_spawn_anomalies_on_level(level_name)
+ if not anomalies then
+ printf("Error, failed to spawn anomalies")
+ build_anomalies_pos_tree()
+ return true
+ end
+
+ printf("updated anomalies on level %s", level_name)
+ updated_anomaly_levels[level_name].time = last_surge_time
+ updated_anomaly_levels[level_name].disabled = false
+ build_anomalies_pos_tree()
+ if settings.enable_anomalies_behaviour or level_weathers.bLevelUnderground then register_anomalies_behaviour() end
+ spawn_artefacts_on_level(level_name)
+ return true
+ end)
+ else
+ printf("anomalies not updated on level %s, no emission happened, last_surge_time %s, level update time %s", level_name, last_surge_time, updated_anomaly_levels[level_name].time)
+ if settings.enable_anomalies_behaviour or level_weathers.bLevelUnderground then register_anomalies_behaviour() end
+ end
+
+ return true
+end
+
+-- Scripts to run when the game loads:
+local tg = 0
+local tg_interval = 5000
+
+function drx_da_actor_on_update_callback()
+ local t = time_global()
+ if t < tg then return end
+ tg = t + tg_interval
+
+ load_settings()
+ get_actor_psy_table()
+ init_anomaly_table_global(level.name())
+
+ printf("saved level %s, current level %s", alife_storage_manager.get_state().drx_da_previous_level, level.name())
+ if level.name() == alife_storage_manager.get_state().drx_da_previous_level then
+ local level_name = level.name()
+ if level_name and updated_anomaly_levels[level_name] and updated_anomaly_levels[level_name].disabled then
+ if last_surge_time > updated_anomaly_levels[level_name].time then
+ clean_dynamic_anomalies_on_level(level_name)
+ updated_anomaly_levels[level_name].disabled = false
+ end
+ end
+
+ printf("on the same level, only register behaviour")
+ if settings.enable_anomalies_behaviour or level_weathers.bLevelUnderground then register_anomalies_behaviour() end
+ unregister_drx_da()
+ build_anomalies_pos_tree()
+ RegisterScriptCallback("actor_on_update", actor_on_update)
+ return
+ else
+ local level_name = alife_storage_manager.get_state().drx_da_previous_level
+ if level_name and updated_anomaly_levels[level_name] and updated_anomaly_levels[level_name].disabled then
+ if last_surge_time > updated_anomaly_levels[level_name].time then
+ clean_dynamic_anomalies_on_level(level_name)
+ updated_anomaly_levels[level_name].disabled = false
+ end
+ end
+ end
+
+ get_anomalies_by_smart(level.name())
+
+ -- Update dynamic anomalies:
+ local updated = drx_da_update_dynamic_anomalies()
+ unregister_drx_da()
+ build_anomalies_pos_tree()
+ RegisterScriptCallback("actor_on_update", actor_on_update)
+end
+
+function unregister_drx_da()
+ printf("anomalies updated, unregistering")
+ UnregisterScriptCallback("actor_on_update", drx_da_actor_on_update_callback)
+end
+
+function unregister_anomalies_behaviour()
+ remove_queue("drx_da_anomalies_behaviour")
+end
+
+-- Sections to ignore on/off switch behaviour
+anomalies_do_not_register_behaviour = {
+ zone_mine_ghost = true
+}
+
+function register_anomalies_behaviour()
+ local level_name = level.name()
+ if is_empty(updated_anomaly_levels[level_name]) or is_empty(updated_anomaly_levels[level_name].anomalies) then
+ printf("anomalies behaviour, anomalies not found for level %s", level_name)
+ return
+ end
+
+ if is_empty(updated_anomaly_levels[level_name].anomalies_properties) or
+ size_table(updated_anomaly_levels[level_name].anomalies_properties) ~= size_table(updated_anomaly_levels[level_name].anomalies)
+ then
+ for k, v in pairs(updated_anomaly_levels[level_name].anomalies) do
+ updated_anomaly_levels[level_name].anomalies_properties[v] = generate_random_anomaly_properties()
+ end
+ end
+
+ printf("anomalies behaviour, turning on behaviour for level %s", level_name)
+
+ for k, v in pairs(updated_anomaly_levels[level_name].anomalies_properties) do
+ v.update_time = time_global()
+ end
+
+ local get_object = level.object_by_id
+ local time_global = time_global
+
+ process_queue("drx_da_anomalies_behaviour", updated_anomaly_levels[level_name].anomalies_properties, function(id, props, i)
+ local t = time_global()
+
+ -- if is_empty(props) then
+ -- printf("Error, anomaly behaviour not found for %s, level %s", id, level_name)
+ -- return true
+ -- end
+
+ local obj = get_object(id)
+ if not obj then return end
+
+ -- Remove from queue if its in do_not_register_behaviour table
+ if anomalies_do_not_register_behaviour[obj:section()] then return true end
+
+ if props.active then
+ if t - props.update_time > props.time_active then
+ -- printf("anomaly disabled, id %s, i %s, t %s, u %s", id, i, t, props.update_time)
+ props.update_time = t
+ props.active = false
+ obj:disable_anomaly()
+ end
+ else
+ if t - props.update_time > props.time_cooldown then
+ -- printf("anomaly enabled, id %s, i %s, t %s, u %s", id, i, t, props.update_time)
+ props.update_time = t
+ props.active = true
+ obj:enable_anomaly()
+ end
+ end
+ end, nil, 5)
+end
+
+anomalies_pos_tree = nil
+detectable_anomalies_pos_tree = nil
+detectable_anomalies_ids = {}
+anomalies_obj_to_pos = {}
+anomalies_sec_to_obj = {}
+
+common_sec = {
+ zone_mine_electric = "zone_mine_electric",
+ zone_mine_electric_weak = "zone_mine_electric",
+ zone_mine_electric_average = "zone_mine_electric",
+ zone_mine_electric_strong = "zone_mine_electric",
+ zone_mine_static = "zone_mine_electric",
+ zone_mine_static_weak = "zone_mine_electric",
+ zone_mine_static_average = "zone_mine_electric",
+ zone_mine_static_strong = "zone_mine_electric",
+ zone_witches_galantine = "zone_mine_electric",
+ zone_witches_galantine_weak = "zone_mine_electric",
+ zone_witches_galantine_average = "zone_mine_electric",
+ zone_witches_galantine_strong = "zone_mine_electric",
+}
+
+function build_anomalies_pos_tree()
+ local alife_release_id = alife_release_id
+ local gg = game_graph()
+ local gg_vertex = gg.vertex
+ local level_name = level.name()
+ local load_var = load_var
+ local pairs = pairs
+ local printf = printf
+ local sim = alife()
+ local sim_level_name = sim.level_name
+ local sim_object = sim.object
+ local sim_release = sim.release
+ local alife_record = alife_record
+ local strformat = strformat
+
+ local level_name = level.name()
+
+ local objects = {}
+ local obj_to_pos = {}
+ local sec_to_obj = {}
+
+
+
+ for i = 1, 65534 do
+ local obj = get_anomaly_obj(i, level_name)
+ if obj then
+ table.insert(objects, obj)
+ obj_to_pos[i] = {
+ id = i,
+ section = obj:section_name(),
+ position = obj.position
+ }
+ local sec = obj:section_name()
+ sec = common_sec[sec] or sec
+ if not sec_to_obj[sec] then sec_to_obj[sec] = {} end
+ table.insert(sec_to_obj[sec], {
+ id = i,
+ section = obj:section_name(),
+ position = obj.position
+ })
+ end
+ end
+
+ -- try(function()
+ -- anomalies_pos_tree = kd_tree.buildTreeSeObjects(objects)
+ -- anomalies_obj_to_pos = anomalies_pos_tree and obj_to_pos
+ -- end)
+
+ empty_table(detectable_anomalies_ids)
+ local t = {}
+ for k, v in pairs(sec_to_obj) do
+ if sec_to_obj[k] then
+ local ids = {}
+ for k1, v1 in pairs(sec_to_obj[k]) do
+ ids[#ids + 1] = v1.id
+ if not anomaly_detector_ignore[v1.section] then
+ detectable_anomalies_ids[v1.id] = v1.position
+ t[#t + 1] = v1.id
+ end
+ end
+ anomalies_sec_to_obj[k] = kd_tree.buildTreeSeObjectIds(ids)
+ end
+ end
+ detectable_anomalies_pos_tree = kd_tree.buildTreeSeObjectIds(t)
+end
+
+-- Rays
+local function ray_main(pos1, pos2, args)
+ local pos1 = vector():set(pos1.x or pos1[1], pos1.y or pos1[2], pos1.z or pos1[3])
+ local pos2 = vector():set(pos2.x or pos2[1], pos2.y or pos2[2], pos2.z or pos2[3])
+ local args = args or {}
+
+ local pick = ray_pick()
+ pick:set_position(pos1)
+ pick:set_direction(pos2:sub(pos1):normalize())
+ pick:set_flags(args.flags or 2)
+ pick:set_range(args.range or 200)
+ if args.ignore_object then
+ pick:set_ignore_object(args.ignore_object)
+ end
+ pick:query()
+
+ return pick
+end
+
+anomalies_vars = {
+ -- Quick lookup of sine values by degrees
+ sin_lut = (function()
+ local t = {}
+ for i = 0, 360 do
+ t[i] = sin(i * 0.0174533)
+ end
+ return t
+ end)(),
+
+ -- Quick lookup of cosine values by degrees
+ cos_lut = (function()
+ local t = {}
+ for i = 0, 360 do
+ t[i] = cos(i * 0.0174533)
+ end
+ return t
+ end)(),
+
+ -- Current anomaly factors
+ factors = {},
+ add_factor = function(self, anomaly, actor, distance_to_sqr, radius_sqr, section, factor)
+ self.factors[anomaly.object:name()] = {
+ section = section or anomaly.object:section(),
+ factor = factor or 1 - distance_to_sqr / radius_sqr
+ }
+ end,
+ remove_factor = function(self, anomaly, actor, distance_to_sqr, radius_sqr)
+ self.factors[anomaly.object:name()] = nil
+ end,
+ find_max_factor = function(self, anomaly, actor, distance_to_sqr, radius_sqr, condition)
+ if is_empty(self.factors) then
+ return 1 - distance_to_sqr / radius_sqr
+ end
+
+ local factor = 0
+ if condition == nil or condition == true then
+ condition = function() return true end
+ elseif condition == false then
+ condition = function() return false end
+ end
+
+ for k, v in pairs(self.factors) do
+ if v.factor > factor and condition(v) then
+ factor = v.factor
+ end
+ end
+ return factor
+ end,
+ find_factor_sum = function(self, anomaly, actor, distance_to_sqr, radius_sqr, condition)
+ if is_empty(self.factors) then
+ return 1 - distance_to_sqr / radius_sqr
+ end
+
+ local factor = 0
+ if condition == nil or condition == true then
+ condition = function() return true end
+ elseif condition == false then
+ condition = function() return false end
+ end
+
+ for k, v in pairs(self.factors) do
+ if condition(v) then
+ factor = factor + v.factor
+ end
+ end
+ return factor
+ end,
+
+ zone_mine_gravitational_weak_tg = 0,
+ zone_mine_electric_tg = 0,
+ zone_mine_electric_pp_effectors = {
+ {code = 98324, file = "electra_mine.ppe", factor = 0.5},
+ {code = 98325, file = "electra.ppe", factor = 1},
+ },
+ zone_mine_electric_factor_function = function(factors)
+ return factors.section == "zone_mine_electric"
+ end
+}
+
+-- Defined radius of anomalies behaviour
+anomalies_near_actor_radii = {
+ zone_mine_umbra = anomaly_radii.zone_mine_umbra.max * 3.5,
+ zone_mine_gold = anomaly_radii.zone_mine_gold.max * 3,
+ zone_mine_thorn = anomaly_radii.zone_mine_thorn.max * 3,
+ zone_mine_shatterpoint = anomaly_radii.zone_mine_shatterpoint.max * 6,
+ zone_mine_seed = anomaly_radii.zone_mine_seed.max * 5,
+ zone_mine_sphere = anomaly_radii.zone_mine_sphere.max * 2,
+ zone_mine_sloth = anomaly_radii.zone_mine_sloth.max * 2,
+ zone_mine_ghost = anomaly_radii.zone_mine_ghost.max * 5,
+}
+
+-- Special anomalies behaviour if the actor is near an anomaly
+anomalies_near_actor_functions = {
+
+ -- Umbral Cluster, spawns poltergeist behind the actor
+ zone_mine_umbra = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ if not anomaly.spawn_time then anomaly.spawn_time = 0 end
+ if time_elapsed < anomaly.spawn_time then return end
+
+ local spawn_cooldown = 300
+ local spawn_max_amount = 2
+ local spawn_table = {
+ "m_poltergeist_normal_tele",
+ "m_poltergeist_normal_flame",
+ }
+
+ printf("trying to spawn poltergeist")
+
+ if random() * 100 <= 1.5 then
+ anomaly.spawn_time = time_elapsed + spawn_cooldown
+ for i = 1, ceil(random() ^ 2 * spawn_max_amount) do
+ local actor_position = actor:position()
+ local spawn_position = vector():set(actor_position.x - random_float(5, 7), actor_position.y, actor_position.z - random_float(5, 7))
+ local spawn_section = spawn_table[random(#spawn_table)]
+
+ alife_create(spawn_section, spawn_position, level_vertex_id(spawn_position), alife():actor().m_game_vertex_id)
+ end
+ end
+ end,
+
+ -- Seed, multiplies if standing near
+ zone_mine_seed = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ if not anomaly.spawn_time then anomaly.spawn_time = 0 end
+ if time_elapsed < anomaly.spawn_time then return end
+
+ local spawn_cooldown = 300
+ local spawn_max_amount = 1
+ local spawn_table = {
+ "zone_mine_seed",
+ }
+
+ printf("trying to multiply seed anomaly")
+
+ if random() * 100 <= 0.5 then
+ anomaly.spawn_time = time_elapsed + spawn_cooldown
+ for i = 1, ceil(random() ^ 2 * spawn_max_amount) do
+ local actor_position = actor:position()
+ local spawn_position = vector():set(actor_position.x - random_float(5, 7), actor_position.y, actor_position.z - random_float(5, 7))
+ local spawn_section = spawn_table[random(#spawn_table)]
+
+ local se_obj = alife_create(spawn_section, spawn_position, level_vertex_id(spawn_position), alife():actor().m_game_vertex_id)
+ local data = utils_stpk.get_object_data(se_obj)
+ if (data) then
+ data.object_flags = 31
+ data.restrictor_type = 0
+ data.shapes = {}
+ data.shapes[1] = {}
+ data.shapes[1].shtype = 0
+ data.shapes[1].offset = VEC_ZERO
+ data.shapes[1].center = VEC_ZERO
+ data.shapes[1].radius = 3
+ utils_stpk.set_object_data(data,se_obj)
+ end
+ end
+ end
+ end,
+
+ -- Sloth, lower speed by 80% near it
+ zone_mine_sloth = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ local key ="zone_mine_sloth_speed"
+ local steps_in = 70
+ local steps_out = 22
+
+ add_simple_timed_effect(1, function()
+ add_speed(key, ema(key, 0.2, 1, steps_in), false, true)
+ RemoveTimeEvent(key, key)
+ end, function()
+ CreateTimeEvent(key, key, 0, function()
+ add_speed(key, ema(key, 1, 1, steps_out, device().time_delta * 0.1), false, true)
+ if smoothed_values[key] >= 0.98 then
+ remove_speed(key)
+ return true
+ end
+ end)
+ end, key, 1)
+ end,
+
+ -- No Gravity, lower speed by 50% near it
+ zone_no_gravity = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ local key ="zone_no_gravity"
+ local steps_in = 70
+ local steps_out = 22
+
+ add_simple_timed_effect(1, function()
+ add_speed(key, ema(key, 0.6, 1, steps_in), false, true)
+ RemoveTimeEvent(key, key)
+ end, function()
+ CreateTimeEvent(key, key, 0, function()
+ add_speed(key, ema(key, 1, 1, steps_out, device().time_delta * 0.1), false, true)
+ if smoothed_values[key] >= 0.98 then
+ remove_speed(key)
+ return true
+ end
+ end)
+ end, key, 1)
+ end,
+
+ -- Ghost, spawns phantoms when close
+ zone_mine_ghost = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomaly.spawn_time = anomaly.spawn_time or 0
+
+ if time_elapsed < anomaly.spawn_time then return end
+
+ local spawn_cooldown = 300
+ local spawn_max_amount = 2
+ local spawn_table = {
+ "m_phantom_zombi",
+ "m_phantom_bloodsucker",
+ }
+
+ printf("trying to spawn phantom")
+
+ if random() * 100 <= 15 then
+ anomaly.spawn_time = time_elapsed + spawn_cooldown
+ for i = 1, ceil(random() ^ 2 * spawn_max_amount) do
+ local actor_position = actor:position()
+ local spawn_position = vector():set(actor_position.x - random_float(5, 7), actor_position.y, actor_position.z - random_float(5, 7))
+
+ phantom_manager.spawn_phantom(spawn_position)
+ end
+ end
+ end,
+
+ -- Net, lower speed by 50% near it
+ zone_mine_net = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ local key ="zone_mine_net_speed"
+ local steps_in = 70
+ local steps_out = 22
+
+ add_simple_timed_effect(1, function()
+ add_speed(key, ema(key, 0.5, 1, steps_in), false, true)
+ RemoveTimeEvent(key, key)
+ end, function()
+ CreateTimeEvent(key, key, 0, function()
+ add_speed(key, ema(key, 1, 1, steps_out, device().time_delta * 0.1), false, true)
+ if smoothed_values[key] >= 0.98 then
+ remove_speed(key)
+ return true
+ end
+ end)
+ end, key, 1)
+ end,
+
+ -- Cognitive Dissonance Field, negative psy aura
+ zone_mine_cdf = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ local h = hit()
+ h.power = level_environment.is_actor_immune() and 0 or (1 - distance_to_sqr / radius_sqr) * 0.004
+ if h.power > 0 then
+ h.type = hit.telepatic
+ h.impulse = 0
+ h.direction = VEC_Z
+ h.draftsman = actor
+
+ actor:hit(h)
+
+ -- Artefacts protection
+ local hit_additional = 0
+ actor:iterate_belt( function(owner, obj)
+ local sec = obj:section()
+ local cond = obj:condition()
+ local immunities_sec = SYS_GetParam(0, sec, "hit_absorbation_sect", sec)
+ local prot = SYS_GetParam(2, immunities_sec, "telepatic_immunity", 0) * cond
+
+ -- Optional modifier for viability
+ prot = prot * 10
+ hit_additional = hit_additional + prot
+ end)
+
+ -- Final modifier
+ local hit_modifier = hit_additional >= 0 and 1 + hit_additional or 1 / (1 - hit_additional)
+ local actor_hit_power = h.power / hit_modifier * 0.375
+ change_psy_health(-actor_hit_power)
+ end
+ end,
+
+ -- Sphere, add 50-100% bullet damage resist
+ zone_mine_sphere = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ local key = "zone_mine_sphere"
+
+ if not callbacks[key] then
+ register_callback("actor_on_before_hit", function(s_hit, bone_id, flags)
+ if s_hit.type == hit.fire_wound then
+ s_hit.power = s_hit.power * random_float(0, 0.5)
+ play_sound_on_actor("eugenium_anomaly\\sphere\\sphere_blowout", 0.9, random_float(0.95, 1.05))
+ local gibs = particles_object("artefact\\artefact_gravi")
+ if gibs and not gibs:playing() then
+ gibs:play_at_pos(actor:position())
+ end
+ end
+ end, nil, key)
+ end
+
+ add_simple_timed_effect(1, nil, function()
+ unregister_callback(key)
+ end, key, 1)
+ end,
+
+ -- Springboard, camera effect dependant on distance
+ zone_mine_gravitational_weak = function(anomaly, actor, distance_to_sqr, radius_sqr, power_modifier)
+ local key = "zone_mine_gravitational_weak"
+ local tg = time_global()
+
+ if tg < anomalies_vars.zone_mine_gravitational_weak_tg and timed_effects[key] then return end
+ anomalies_vars.zone_mine_gravitational_weak_tg = tg + 1000
+
+ local power_modifier = (power_modifier or 2) * settings.gravitational_shake_modifier
+ local earthquake_cam_eff = 98323
+ if power_modifier > 0 then
+ local power = (1.03 - distance_to_sqr / radius_sqr) * power_modifier
+ level.add_cam_effector("camera_effects\\earthquake_40.anm", earthquake_cam_eff, false, "", 0, false, power)
+ end
+
+ add_simple_timed_effect(1, nil, function()
+ level.remove_cam_effector(earthquake_cam_eff)
+ end, key, 1)
+ end,
+
+ zone_mine_gravitational_average = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_gravitational_weak(anomaly, actor, distance_to_sqr, radius_sqr, 1)
+ end,
+
+ zone_mine_gravitational_strong = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_gravitational_weak(anomaly, actor, distance_to_sqr, radius_sqr, 1)
+ end,
+
+ zone_mine_vortex = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_gravitational_weak(anomaly, actor, distance_to_sqr, radius_sqr, 1)
+ end,
+
+ zone_mine_springboard = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_gravitational_weak(anomaly, actor, distance_to_sqr, radius_sqr, 1)
+ end,
+
+ zone_mine_blast = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_gravitational_weak(anomaly, actor, distance_to_sqr, radius_sqr)
+ end,
+
+ zone_gravi_zone = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_gravitational_weak(anomaly, actor, distance_to_sqr, radius_sqr)
+ end,
+
+ zone_mosquito_bald = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_gravitational_weak(anomaly, actor, distance_to_sqr, radius_sqr)
+ end,
+
+ zone_mosquito_bald_weak = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_gravitational_weak(anomaly, actor, distance_to_sqr, radius_sqr)
+ end,
+
+ zone_mosquito_bald_weak_noart = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_gravitational_weak(anomaly, actor, distance_to_sqr, radius_sqr)
+ end,
+
+ zone_mosquito_bald_average = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_gravitational_weak(anomaly, actor, distance_to_sqr, radius_sqr)
+ end,
+
+ zone_mosquito_bald_strong = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_gravitational_weak(anomaly, actor, distance_to_sqr, radius_sqr)
+ end,
+
+ zone_mosquito_bald_strong_noart = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_gravitational_weak(anomaly, actor, distance_to_sqr, radius_sqr)
+ end,
+
+ -- Electra, static field
+ zone_mine_electric = function(anomaly, actor, distance_to_sqr, radius_sqr, effector_modifier)
+ local hit_type_shock = HitTypeID["Shock"]
+ local hit_power = level_environment.is_actor_immune() and 0 or (1 - distance_to_sqr / radius_sqr) ^ 2 * settings.electric_field_modifier
+ local distance_to = distance_to_sqr ^ 0.5
+ local reduction_coeff = 1
+
+ local anom_pos = anomaly.object:position()
+ -- anom_pos = level_vertex_id(anom_pos)
+ -- anom_pos = level_vertex_position(anom_pos)
+ local anom_pos_adjusted = vector():set(anom_pos.x, anom_pos.y + 0.3, anom_pos.z)
+ local actor_pos = utils_obj.safe_bone_pos(actor, "bip01_spine")
+ -- local actor_pos = actor:position()
+ -- actor_pos = vector():set(actor_pos.x, actor_pos.y + 0.5, actor_pos.z)
+ local anom_to_actor_ray = ray_main(anom_pos_adjusted, actor_pos, {range = distance_to})
+ local actor_to_anom_ray = ray_main(actor_pos, anom_pos, {range = distance_to})
+
+ if anom_to_actor_ray and actor_to_anom_ray then
+ local anom_to_actor_distance = anom_to_actor_ray:get_distance()
+ local actor_to_anom_distance = actor_to_anom_ray:get_distance()
+
+ local obstacle_distance = 0
+
+ if anom_to_actor_distance > 0 then
+ obstacle_distance = distance_to - anom_to_actor_distance - actor_to_anom_distance
+ reduction_coeff = clamp((1 - obstacle_distance / radius_sqr ^ 0.5) ^ 3.5, 0, 1)
+ end
+
+ -- _G.printf("reduction coeff due to obstacle - %s", reduction_coeff)
+ -- _G.printf("anom_to_actor_distance - %s", anom_to_actor_distance)
+ -- _G.printf("actor_to_anom_distance - %s", actor_to_anom_distance)
+ -- _G.printf("obstacle_distance - %s", obstacle_distance)
+ -- _G.printf("combined distance - %s", anom_to_actor_distance + obstacle_distance + actor_to_anom_distance)
+ -- _G.printf("input distance - %s", distance_to)
+ end
+
+ hit_power = hit_power * reduction_coeff
+
+ if hit_power > 0 then
+ local hit_additional = 0
+
+ -- Outfit protection
+ local outfit = actor:item_in_slot(7)
+ if outfit then
+ local c_obj = outfit:cast_CustomOutfit()
+ local prot = c_obj and c_obj:GetDefHitTypeProtection(hit_type_shock) or 0
+
+ -- Optional modifier for less viability
+ prot = prot * 1
+ hit_additional = hit_additional + prot
+ end
+
+ -- Helmet protection
+ local helm = actor:item_in_slot(12)
+ if helm then
+ local c_obj = helm:cast_Helmet()
+ local prot = c_obj and c_obj:GetDefHitTypeProtection(hit_type_shock) or 0
+
+ -- Optional modifier for less viability
+ prot = prot * 1
+ hit_additional = hit_additional + prot
+ end
+
+ -- Artefacts protection
+ local artefacts_protection = 0
+ actor:iterate_belt( function(owner, obj)
+ local sec = obj:section()
+ local cond = obj:condition()
+ local immunities_sec = SYS_GetParam(0, sec, "hit_absorbation_sect", sec)
+ local prot = SYS_GetParam(2, immunities_sec, "shock_immunity", 0) * cond
+
+ -- Optional modifier for viability
+ prot = prot * 5
+ artefacts_protection = artefacts_protection + prot
+ hit_additional = hit_additional + prot
+ end)
+
+ -- Final modifier
+ local hit_modifier = hit_additional >= 0 and 1 + hit_additional or 1 / (1 - hit_additional)
+ local actor_hit_power = hit_power / hit_modifier * 0.0015
+ -- printf("hit %s", actor_hit_power)
+ actor:change_health(-actor_hit_power)
+
+ -- Affect condition of items
+ if outfit then
+ local obj = outfit
+ local sec = obj:section()
+ local cond = obj:condition()
+ if cond > 0.01 then
+ local immunities_sec = SYS_GetParam(0, sec, "immunities_sect", sec)
+ local shock_immunity = SYS_GetParam(2, immunities_sec, "shock_immunity", 0) * cond
+ shock_immunity = shock_immunity + artefacts_protection
+
+ local hit_modifier = shock_immunity >= 0 and 1 + shock_immunity or 1 / (1 - shock_immunity)
+ obj:set_condition(cond - hit_power / hit_modifier * 0.00015)
+ end
+ end
+
+ if helm then
+ local obj = helm
+ local sec = obj:section()
+ local cond = obj:condition()
+ if cond > 0.01 then
+ local immunities_sec = SYS_GetParam(0, sec, "immunities_sect", sec)
+ local shock_immunity = SYS_GetParam(2, immunities_sec, "shock_immunity", 0) * cond
+ shock_immunity = shock_immunity + artefacts_protection
+
+ local hit_modifier = shock_immunity >= 0 and 1 + shock_immunity or 1 / (1 - shock_immunity)
+ obj:set_condition(cond - hit_power / hit_modifier * 0.00015)
+ end
+ end
+ end
+
+ anomalies_vars:add_factor(anomaly, actor, distance_to_sqr, radius_sqr, "zone_mine_electric", (1 - distance_to_sqr / radius_sqr) ^ 2 * reduction_coeff)
+ local mine_factor = clamp(anomalies_vars:find_factor_sum(anomaly, actor, distance_to_sqr, radius_sqr, anomalies_vars.zone_mine_electric_factor_function), 0, 1)
+
+ -- PPE effector
+ local effector_modifier = effector_modifier or 0.66
+ local effector_power = (mine_factor + 0.05) * effector_modifier
+ local pps = anomalies_vars.zone_mine_electric_pp_effectors
+ for i = 1, #pps do
+ local key = "zone_mine_electric" .. pps[i].code
+
+ if not timed_effects[key] then
+ level.add_pp_effector(pps[i].file, pps[i].code, true)
+ end
+ level.set_pp_effector_factor(pps[i].code, effector_power * pps[i].factor)
+
+ add_simple_timed_effect(0.2, nil, function()
+ level.remove_pp_effector(pps[i].code)
+ end, key, 1)
+ end
+
+ -- PDA glitching, set value for binder, patch binder, see below
+ pda_glitch_value = clamp(mine_factor ^ 0.5, 0, 1)
+ add_simple_timed_effect(0.2, nil, function()
+ pda_glitch_value = nil
+ end, "zone_mine_electric_pda_glitch", 1)
+ end,
+
+ zone_mine_electric_weak = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_electric(anomaly, actor, distance_to_sqr, radius_sqr)
+ end,
+
+ zone_mine_electric_average = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_electric(anomaly, actor, distance_to_sqr, radius_sqr)
+ end,
+
+ zone_mine_electric_strong = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_electric(anomaly, actor, distance_to_sqr, radius_sqr)
+ end,
+
+ zone_mine_static = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_electric(anomaly, actor, distance_to_sqr, radius_sqr)
+ end,
+
+ zone_mine_static_weak = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_electric(anomaly, actor, distance_to_sqr, radius_sqr)
+ end,
+
+ zone_mine_static_average = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_electric(anomaly, actor, distance_to_sqr, radius_sqr)
+ end,
+
+ zone_mine_static_strong = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_electric(anomaly, actor, distance_to_sqr, radius_sqr)
+ end,
+
+ zone_witches_galantine = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_electric(anomaly, actor, distance_to_sqr, radius_sqr)
+ end,
+
+ zone_witches_galantine_weak = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_electric(anomaly, actor, distance_to_sqr, radius_sqr)
+ end,
+
+ zone_witches_galantine_average = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_electric(anomaly, actor, distance_to_sqr, radius_sqr)
+ end,
+
+ zone_witches_galantine_strong = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ anomalies_near_actor_functions.zone_mine_electric(anomaly, actor, distance_to_sqr, radius_sqr)
+ end,
+
+
+ -- Ball Lightning, charges batteries
+ zone_mine_point = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ for i = 8, 10 do
+ local item = actor:item_in_slot(i)
+ if item then
+ local cond = item:condition()
+ if cond > 0.01 then
+ item:set_condition(cond + 0.0006 * (1 - distance_to_sqr / radius_sqr) ^ 2)
+ end
+ end
+ end
+
+ anomalies_vars:add_factor(anomaly, actor, distance_to_sqr, radius_sqr, "zone_mine_electric", (1 - distance_to_sqr / radius_sqr) ^ 2)
+ local mine_factor = clamp(anomalies_vars:find_factor_sum(anomaly, actor, distance_to_sqr, radius_sqr, anomalies_vars.zone_mine_electric_factor_function), 0, 1)
+
+ -- PDA glitching, set value for binder, patch binder, see below
+ pda_glitch_value = clamp(mine_factor ^ 0.5, 0, 1)
+ add_simple_timed_effect(0.2, nil, function()
+ pda_glitch_value = nil
+ end, "zone_mine_electric_pda_glitch", 1)
+ end,
+
+ -- Liquid Gold, drains stamina and thirst
+ zone_mine_gold = function(anomaly, actor, distance_to_sqr, radius_sqr)
+ local change_modifier = 1 - distance_to_sqr / radius_sqr
+ if not anomaly.trigger_threshold then anomaly.trigger_threshold = 0 end
+
+ anomaly.trigger_threshold = anomaly.trigger_threshold + change_modifier * 0.5
+ if anomaly.trigger_threshold >= 1 then
+ thirst_sleep_changer.change_thirst_small(0.01)
+ anomaly.trigger_threshold = 0
+ end
+
+ actor:change_power(-change_modifier * 0.002)
+ end,
+
+}
+-- Special behaviour for anomalies after spawn
+anomalies_spawn_functions = {
+
+ -- Ghost, wandering path along its start position
+ zone_mine_ghost = function(anomaly)
+ if anomaly.spawn_position then
+ local spawn_position = anomaly.spawn_position
+ local obj = anomaly.object
+ local obj_set_anomaly_position = obj.set_anomaly_position
+ local vector = vector()
+ local vector_set = vector.set
+ local key = obj:name()
+
+ local sin_lut = anomalies_vars.sin_lut
+ local cos_lut = anomalies_vars.cos_lut
+
+ local i = random_choice(0, 45, 90, 135, 180)
+ local i_step = random_choice(1, 2, 3)
+ local j = 0
+ local j_step = 1
+ if i_step == 1 then
+ j_step = random_choice(2, 3)
+ elseif i_step == 2 then
+ j_step = random_choice(1, 3)
+ elseif i_step == 3 then
+ j_step = random_choice(2, 4)
+ end
+
+ local full_circle = 360
+
+ local function generate_distance()
+ return random() * 5.5 + 1.5
+ end
+
+ local x_modifier = generate_distance() * random_choice(1, -1)
+ local z_modifier = generate_distance() * random_choice(1, -1)
+
+ local function wrap(i)
+ return i >= full_circle and i % full_circle or i
+ end
+
+ local max_offset_y = 0.5
+ local max_offset_y_low = spawn_position.y - max_offset_y
+ local max_offset_y_high = spawn_position.y + max_offset_y
+
+ local prev_pos_x = spawn_position.x
+ local prev_pos_y = spawn_position.y
+ local prev_pos_z = spawn_position.z
+ register_callback("actor_on_update", function()
+ if i >= full_circle then
+ i = i % full_circle
+ end
+
+ if j >= full_circle then
+ j = j % full_circle
+ end
+
+ local offset_x = spawn_position.x + sin_lut[i] * x_modifier
+ local offset_z = spawn_position.z + sin_lut[j] * z_modifier
+ local offset_y = spawn_position.y
+
+ -- Adjust to height by checking lvid
+ local lvid = level_vertex_id(vector_set(vector, offset_x, offset_y, offset_z))
+ if (lvid < 4294967295) then
+ local pos_y = level_vertex_position(lvid).y
+ if abs(pos_y - prev_pos_y) < max_offset_y then
+ offset_y = pos_y
+ end
+ -- offset_y = clamp(pos_y, max_offset_y_low, max_offset_y_high)
+ end
+
+ obj_set_anomaly_position(obj, vector_set(vector, offset_x, offset_y, offset_z))
+ prev_pos_x = offset_x
+ prev_pos_y = offset_y
+ prev_pos_z = offset_z
+
+ local delta = min(50, device().time_delta) / 22 -- Frame independent movement, less than 20 fps will be slower due to prevent sudden pops
+ i = floor(i + i_step * delta)
+ j = floor(j + j_step * delta)
+ end, nil, key)
+ end
+ end,
+
+ -- Sphere, wandering path along its start position
+ zone_mine_sphere = function(anomaly)
+ if anomaly.spawn_position then
+ local spawn_position = anomaly.spawn_position
+ local obj = anomaly.object
+ local obj_set_anomaly_position = obj.set_anomaly_position
+ local vector = vector()
+ local vector_set = vector.set
+ local key = obj:name()
+
+ local sin_lut = anomalies_vars.sin_lut
+ local cos_lut = anomalies_vars.cos_lut
+
+ local i = random_choice(0, 45, 90, 135, 180)
+ local i_step = random_choice(1, 2, 3)
+ local j = 0
+ local j_step = 1
+ if i_step == 1 then
+ j_step = random_choice(2, 3)
+ elseif i_step == 2 then
+ j_step = random_choice(1, 3)
+ elseif i_step == 3 then
+ j_step = random_choice(2, 4)
+ end
+
+ local full_circle = 360
+
+ local function generate_distance()
+ return random() * 0.5 + 1.0
+ end
+
+ local x_modifier = generate_distance() * random_choice(1, -1)
+ local z_modifier = generate_distance() * random_choice(1, -1)
+
+ local function wrap(i)
+ return i >= full_circle and i % full_circle or i
+ end
+
+ local max_offset_y = 0.5
+ local max_offset_y_low = spawn_position.y - max_offset_y
+ local max_offset_y_high = spawn_position.y + max_offset_y
+
+ local prev_pos_x = spawn_position.x
+ local prev_pos_y = spawn_position.y
+ local prev_pos_z = spawn_position.z
+ register_callback("actor_on_update", function()
+ if i >= full_circle then
+ i = i % full_circle
+ end
+
+ if j >= full_circle then
+ j = j % full_circle
+ end
+
+ local offset_x = spawn_position.x + sin_lut[i] * x_modifier
+ local offset_z = spawn_position.z + sin_lut[j] * z_modifier
+ local offset_y = spawn_position.y
+
+ -- Adjust to height by checking lvid
+ local lvid = level_vertex_id(vector_set(vector, offset_x, offset_y, offset_z))
+ if (lvid < 4294967295) then
+ local pos_y = level_vertex_position(lvid).y
+ if abs(pos_y - prev_pos_y) < max_offset_y then
+ offset_y = pos_y
+ end
+ -- offset_y = clamp(pos_y, max_offset_y_low, max_offset_y_high)
+ end
+
+ obj_set_anomaly_position(obj, vector_set(vector, offset_x, offset_y, offset_z))
+ prev_pos_x = offset_x
+ prev_pos_y = offset_y
+ prev_pos_z = offset_z
+
+ local delta = min(50, device().time_delta) / 22 -- Frame independent movement, less than 20 fps will be slower due to prevent sudden pops
+ i = floor(i + i_step * delta)
+ j = floor(j + j_step * delta)
+ end, nil, key)
+ end
+ end,
+
+ -- Point, wandering path along its start position
+ zone_mine_point = function(anomaly)
+ if anomaly.spawn_position then
+ local spawn_position = anomaly.spawn_position
+ local obj = anomaly.object
+ local obj_set_anomaly_position = obj.set_anomaly_position
+ local vector = vector()
+ local vector_set = vector.set
+ local key = obj:name()
+
+ local sin_lut = anomalies_vars.sin_lut
+ local cos_lut = anomalies_vars.cos_lut
+
+ local i = random_choice(0, 45, 90, 135, 180)
+ local i_step = random_choice(1, 2, 3)
+ local j = 0
+ local j_step = 1
+ if i_step == 1 then
+ j_step = random_choice(2, 3)
+ elseif i_step == 2 then
+ j_step = random_choice(1, 3)
+ elseif i_step == 3 then
+ j_step = random_choice(2, 4)
+ end
+
+ local full_circle = 360
+
+ local function generate_distance()
+ return random() * 2.5 + 4.5
+ end
+
+ local x_modifier = generate_distance() * random_choice(1, -1)
+ local z_modifier = generate_distance() * random_choice(1, -1)
+
+ local function wrap(i)
+ return i >= full_circle and i % full_circle or i
+ end
+
+ local max_offset_y = 0.5
+ local max_offset_y_low = spawn_position.y - max_offset_y
+ local max_offset_y_high = spawn_position.y + max_offset_y
+
+ local prev_pos_x = spawn_position.x
+ local prev_pos_y = spawn_position.y
+ local prev_pos_z = spawn_position.z
+ register_callback("actor_on_update", function()
+ if i >= full_circle then
+ i = i % full_circle
+ end
+
+ if j >= full_circle then
+ j = j % full_circle
+ end
+
+ local offset_x = spawn_position.x + sin_lut[i] * x_modifier
+ local offset_z = spawn_position.z + sin_lut[j] * z_modifier
+ local offset_y = spawn_position.y
+
+ -- Adjust to height by checking lvid
+ local lvid = level_vertex_id(vector_set(vector, offset_x, offset_y, offset_z))
+ if (lvid < 4294967295) then
+ local pos_y = level_vertex_position(lvid).y
+ if abs(pos_y - prev_pos_y) < max_offset_y then
+ offset_y = pos_y
+ end
+ -- offset_y = clamp(pos_y, max_offset_y_low, max_offset_y_high)
+ end
+
+ obj_set_anomaly_position(obj, vector_set(vector, offset_x, offset_y, offset_z))
+ prev_pos_x = offset_x
+ prev_pos_y = offset_y
+ prev_pos_z = offset_z
+
+ local delta = min(50, device().time_delta) / 22 -- Frame independent movement, less than 20 fps will be slower due to prevent sudden pops
+ i = floor(i + i_step * delta)
+ j = floor(j + j_step * delta)
+ end, nil, key)
+ end
+ end,
+
+ -- Umbral Cluster, wandering path along its start position
+ zone_mine_umbra = function(anomaly)
+ if anomaly.spawn_position then
+ local spawn_position = anomaly.spawn_position
+ local obj = anomaly.object
+ local obj_set_anomaly_position = obj.set_anomaly_position
+ local vector = vector()
+ local vector_set = vector.set
+ local key = obj:name()
+
+ local sin_lut = anomalies_vars.sin_lut
+ local cos_lut = anomalies_vars.cos_lut
+
+ local i = random_choice(0, 45, 90, 135, 180)
+ local i_step = random_choice(1, 2, 3)
+ local j = 0
+ local j_step = 1
+ if i_step == 1 then
+ j_step = random_choice(2, 3)
+ elseif i_step == 2 then
+ j_step = random_choice(1, 3)
+ elseif i_step == 3 then
+ j_step = random_choice(2, 4)
+ end
+
+ local full_circle = 360
+
+ local function generate_distance()
+ return random() * 0.3 + 0.5
+ end
+
+ local x_modifier = generate_distance() * random_choice(1, -1)
+ local z_modifier = generate_distance() * random_choice(1, -1)
+
+ local function wrap(i)
+ return i >= full_circle and i % full_circle or i
+ end
+
+ local max_offset_y = 0.5
+ local max_offset_y_low = spawn_position.y - max_offset_y
+ local max_offset_y_high = spawn_position.y + max_offset_y
+
+ local prev_pos_x = spawn_position.x
+ local prev_pos_y = spawn_position.y
+ local prev_pos_z = spawn_position.z
+ register_callback("actor_on_update", function()
+ if i >= full_circle then
+ i = i % full_circle
+ end
+
+ if j >= full_circle then
+ j = j % full_circle
+ end
+
+ local offset_x = spawn_position.x + sin_lut[i] * x_modifier
+ local offset_z = spawn_position.z + sin_lut[j] * z_modifier
+ local offset_y = spawn_position.y
+
+ -- Adjust to height by checking lvid
+ local lvid = level_vertex_id(vector_set(vector, offset_x, offset_y, offset_z))
+ if (lvid < 4294967295) then
+ local pos_y = level_vertex_position(lvid).y
+ if abs(pos_y - prev_pos_y) < max_offset_y then
+ offset_y = pos_y
+ end
+ -- offset_y = clamp(pos_y, max_offset_y_low, max_offset_y_high)
+ end
+
+ obj_set_anomaly_position(obj, vector_set(vector, offset_x, offset_y, offset_z))
+ prev_pos_x = offset_x
+ prev_pos_y = offset_y
+ prev_pos_z = offset_z
+
+ local delta = min(50, device().time_delta) / 22 -- Frame independent movement, less than 20 fps will be slower due to prevent sudden pops
+ i = floor(i + i_step * delta)
+ j = floor(j + j_step * delta)
+ end, nil, key)
+ end
+ end,
+}
+
+-- Special behaviour for anomalies after destroy
+anomalies_destroy_functions = {
+
+ -- Ghost, destroy callback for wandering
+ zone_mine_ghost = function(anomaly)
+ local key = anomaly.object:name()
+ unregister_callback(key)
+ end,
+
+}
+
+anomaly_detector_ignore = {
+ zone_field_radioactive = true,
+ zone_field_radioactive_above_average = true,
+ zone_field_radioactive_average = true,
+ zone_field_radioactive_below_average = true,
+ zone_field_radioactive_lethal = true,
+ zone_field_radioactive_strong = true,
+ zone_field_radioactive_very_weak = true,
+ zone_field_radioactive_weak = true,
+ zone_radioactive = true,
+ zone_radioactive_above_average = true,
+ zone_radioactive_average = true,
+ zone_radioactive_below_average = true,
+ zone_radioactive_lethal = true,
+ zone_radioactive_strong = true,
+ zone_radioactive_very_weak = true,
+ zone_radioactive_weak = true,
+ zone_field_acidic = true,
+ zone_field_acidic_average = true,
+ zone_field_acidic_strong = true,
+ zone_field_acidic_weak = true,
+ zone_field_psychic = true,
+ zone_field_psychic_average = true,
+ zone_field_psychic_strong = true,
+ zone_field_psychic_weak = true,
+ zone_field_thermal = true,
+ zone_field_thermal_average = true,
+ zone_field_thermal_strong = true,
+ zone_field_thermal_weak = true,
+ zone_mine_field = true,
+ zone_mine_field_soc = true,
+ campfire = true,
+ campfire_base = true,
+ campfire_base_noshadow = true,
+ zone_base = true,
+ zone_base_noshadow = true,
+ zone_burning_fuzz = true,
+ zone_burning_fuzz1 = true,
+ zone_burning_fuzz_weak = true,
+ zone_burning_fuzz_average = true,
+ zone_burning_fuzz_strong = true,
+ zone_buzz = true,
+ zone_buzz_weak = true,
+ zone_buzz_average = true,
+ zone_buzz_strong = true,
+ zone_emi = true,
+ zone_liana = true,
+ zone_student = true,
+ zone_teleport = true,
+ zone_zhar = true,
+
+ -- MP items
+ mp_af_electra_flash = true,
+ mp_zone_witches_galantine = true,
+ mp_af_cta_green = true,
+ mp_af_cta_blue = true,
+ mp_medkit = true,
+ mp_medkit_scientic = true,
+ mp_medkit_army = true,
+ mp_energy_drink = true,
+ mp_bandage = true,
+ mp_antirad = true,
+ mp_drug_coagulant = true,
+ mp_drug_radioprotector = true,
+ mp_medkit_old = true,
+ mp_antirad_old = true,
+ mp_detector_advanced = true,
+ mp_device_torch = true,
+ mp_players_rukzak = true,
+ mp_wood_stolb_fixed = true,
+ mp_wood_stolb_fixed_immunities = true,
+ mp_explosive_fuelcan = true,
+ mp_explosive_tank = true,
+ mp_explosive_barrel = true,
+
+}
+
+function find_nearest_anomaly(force_enabled)
+ local actor = db.actor
+ local actor_pos = actor:position()
+ local actor_pos_distance = actor_pos.distance_to_sqr
+ local distance = math.huge
+ local anom_id
+ local anom_pos
+ local anom_sec
+
+ local pairs = pairs
+ local level_object_by_id = level.object_by_id
+ local level_name = level.name()
+
+ for id, _ in pairs(detectable_anomalies_ids) do
+ local obj = level_object_by_id(id)
+ if obj then
+ local enabled = true
+
+ if not force_enabled then
+ local props = updated_anomaly_levels[level_name].anomalies_properties[id]
+ if props and props.active ~= nil then
+ enabled = props.active
+ end
+ end
+
+ if enabled then
+ local pos = obj:position()
+ local d = actor_pos_distance(actor_pos, pos)
+ if d < distance then
+ distance = d
+ anom_id = id
+ anom_pos = pos
+ anom_sec = obj:section()
+ end
+ end
+ end
+ end
+
+ return distance, anom_id, anom_sec, anom_pos
+end
+
+detector_functions = {
+ -- Play sound
+ play_anomaly_sound = function(self, anomaly, actor, distance_to_sqr, radius_sqr)
+ if not anomaly.sound_threshold then anomaly.sound_threshold = 0 end
+ anomaly.sound_threshold = anomaly.sound_threshold + (1 - distance_to_sqr / radius_sqr) ^ 2
+ if anomaly.sound_threshold > 1 then
+ play_sound_on_actor("detectors\\da-2_beep1")
+ anomaly.sound_threshold = 0
+ end
+ end,
+
+ -- Store anomaly factors to find biggest one for correct display of anomaly_detector bars
+ detector_anomaly_factors = {},
+ detector_anomaly_add_factor = function(self, anomaly, actor, distance_to_sqr, radius_sqr, custom_callback)
+ self.detector_anomaly_factors[anomaly.object:name()] = 1 - distance_to_sqr / radius_sqr
+ end,
+ detector_anomaly_remove_factor = function(self, anomaly, actor, distance_to_sqr, radius_sqr, custom_callback)
+ self.detector_anomaly_factors[anomaly.object:name()] = nil
+ end,
+ detector_anomaly_find_max_factor = function(self, anomaly, actor, distance_to_sqr, radius_sqr, custom_callback)
+ if is_empty(self.detector_anomaly_factors) then
+ return 1 - distance_to_sqr / radius_sqr
+ end
+
+ local factor = 0
+ for k, v in pairs(self.detector_anomaly_factors) do
+ if v > factor then
+ factor = v
+ end
+ end
+ return factor
+ end,
+
+ detector_anomaly = function(self, anomaly, actor, distance_to_sqr, radius_sqr, custom_callback)
+ if not custom_callback then return end
+ if actor:active_detector() then
+ local sec = anomaly.section
+
+ self:detector_anomaly_add_factor(anomaly, actor, distance_to_sqr, radius_sqr, custom_callback)
+ local factor = self:detector_anomaly_find_max_factor(anomaly, actor, distance_to_sqr, radius_sqr, custom_callback)
+
+ local ui = tasks_measure.get_UI()
+ if ui and ui.step <= 0 then
+ for i = 1, ui.step_tot do
+ ui.m_seg[i]:InitTextureEx(i <= min(ui.step_tot, ceil(factor * 10)) and "green_seg_ano" or "green_black_ano", "hud\\p3d")
+ end
+ end
+
+ -- Play sound when detector is active
+ if game_difficulties.get_game_factor("notify_anomaly")
+ and (drx_da_main_mcm.new_anomalies_sections[sec] or drx_da_main_mcm.variations_anomalies_sections[sec])
+ or (not game_difficulties.get_game_factor("notify_anomaly") and actor:active_detector())
+ then
+ self:play_anomaly_sound(anomaly, actor, distance_to_sqr, radius_sqr)
+ end
+ else
+ local ui = tasks_measure.get_UI()
+ if ui and ui.step <= 0 then
+ for i = 1, ui.step_tot do
+ ui.m_seg[i]:InitTextureEx("green_black_ano", "hud\\p3d")
+ end
+ end
+ end
+ end,
+
+ detector_scientific = function(self, anomaly, actor, distance_to_sqr, radius_sqr, custom_callback)
+ if custom_callback then return end
+ local sec = anomaly.section
+ if drx_da_main_mcm.new_anomalies_sections[sec] or drx_da_main_mcm.variations_anomalies_sections[sec] then
+ self:play_anomaly_sound(anomaly, actor, distance_to_sqr, radius_sqr)
+ end
+ end
+}
+
+function notify_anomaly(anomaly, actor, distance_to_sqr, radius_sqr, custom_callback)
+ local detector = actor:item_in_slot(9)
+ local sec = detector and detector:section()
+ if sec and detector_functions[sec] then
+ detector_functions[sec](detector_functions, anomaly, actor, distance_to_sqr, radius_sqr, custom_callback)
+ elseif game_difficulties.get_game_factor("notify_anomaly") and (drx_da_main_mcm.new_anomalies_sections[anomaly.section] or drx_da_main_mcm.variations_anomalies_sections[anomaly.section]) and not custom_callback then
+ detector_functions:play_anomaly_sound(anomaly, actor, distance_to_sqr, radius_sqr)
+ end
+end
+
+bind_anomaly_field_spawn = bind_anomaly_field.anomaly_field_binder.net_spawn
+bind_anomaly_field.anomaly_field_binder.net_spawn = function(self, se_abstract)
+ if not bind_anomaly_field_spawn(self, se_abstract) then
+ return false
+ end
+
+ self.spawn_position = self.object:position()
+ self.section = self.object:section()
+
+ if not anomaly_detector_ignore[self.section] then
+ detectable_anomalies_ids[self.object:id()] = self.spawn_position
+ end
+
+ local section = self.section
+ if anomalies_spawn_functions[section] then
+ anomalies_spawn_functions[section](self)
+ end
+
+ -- Update callback similar to binder update, but works even if anomaly is disabled
+ self.on_update_timer_default = 100
+ self.on_update_timer_max = 7500
+ self.on_update_timer = self.on_update_timer_default
+ self.on_update_time = time_global() + random(self.on_update_timer_default, self.on_update_timer_default * 10)
+
+ self.update_key = self.object:name() .. "_update"
+
+ local anom_zone_data = utils_stpk.get_anom_zone_data(alife_object(self.object:id()))
+ if anom_zone_data and anom_zone_data.shapes[1] and anom_zone_data.shapes[1].radius then
+ self.radius_sqr = anomalies_near_actor_radii[section] or ((anom_zone_data.shapes[1].radius + 1) * 2)
+ self.radius_sqr = self.radius_sqr * self.radius_sqr
+ -- printf("getting anom radius from net packet, %s", self.radius_sqr)
+ else
+ self.radius_sqr = get_anomaly_behaviour_radius(section)
+ end
+ self.radius = sqrt(self.radius_sqr)
+ self.behaviour_radius_sqr = get_anomaly_behaviour_radius(section)
+ local level_name = level.name()
+
+ register_callback("actor_on_update", function()
+ local tg = time_global()
+ if tg < self.on_update_time then return end
+
+ -- Get behaviour radius and check if actor inside it, then apply effect
+ local actor = db.actor
+ local radius_sqr = self.radius_sqr
+ local distance_to_sqr = self.object:position():distance_to_sqr(actor:position())
+ if distance_to_sqr <= radius_sqr then
+
+ -- Beep near anoms even if disabled for anomaly_detector
+ if not (
+ anomaly_detector_ignore[self.section]
+ or (
+ level_name
+ and updated_anomaly_levels[level_name]
+ and updated_anomaly_levels[level_name].disabled
+ and updated_anomaly_levels[level_name].anomalies_properties
+ and updated_anomaly_levels[level_name].anomalies_properties[self.object:id()]
+ )
+ ) then
+ local og_dyn_anomalies = bind_anomaly_field.dyn_anomalies
+ if not og_dyn_anomalies then
+ notify_anomaly(self, actor, distance_to_sqr, radius_sqr, true)
+ else
+ local level_name = level.name()
+ if og_dyn_anomalies[level_name] and og_dyn_anomalies[level_name][self.object:id()] ~= nil then
+ if og_dyn_anomalies[level_name][self.object:id()] then
+ notify_anomaly(self, actor, distance_to_sqr, radius_sqr, true)
+ end
+ else
+ notify_anomaly(self, actor, distance_to_sqr, radius_sqr, true)
+ end
+ end
+ end
+ self.on_update_timer = self.on_update_timer_default
+ else
+ detector_functions.detector_anomaly_remove_factor(detector_functions, self, actor, distance_to_sqr, radius_sqr, true)
+ self.on_update_timer = clamp(self.on_update_timer_default * (distance_to_sqr / radius_sqr * 0.5), self.on_update_timer_default, self.on_update_timer_max)
+
+ -- _G.printf("%s, on_update_timer %s", self.object:name(), self.on_update_timer)
+ end
+
+ self.on_update_time = tg + self.on_update_timer
+ end, nil, self.update_key)
+
+ return true
+end
+
+bind_anomaly_field_destroy = bind_anomaly_field.anomaly_field_binder.net_destroy
+bind_anomaly_field.anomaly_field_binder.net_destroy = function(self)
+ local section = self.section
+
+ detectable_anomalies_ids[self.object:id()] = nil
+ anomalies_vars.remove_factor(anomalies_vars, self, actor, distance_to_sqr, radius_sqr)
+ detector_functions.detector_anomaly_remove_factor(detector_functions, self, actor, distance_to_sqr, radius_sqr, true)
+
+ if anomalies_destroy_functions[section] then
+ anomalies_destroy_functions[section](self)
+ end
+
+ unregister_callback(self.update_key)
+
+ bind_anomaly_field_destroy(self)
+end
+
+-- Behaviour radius in priorities
+-- 1. anomalies_near_actor_radii[section] -- specially defined behaviour radius
+-- 2. anomaly_radii[section].max -- defined hit radius of anomaly
+-- 3. max_radius -- max hit radius defined in level config
+-- 4. 3 -- default radius
+-- 5. p.2,3,4 or 5 is then added 1 and multiplied by 2
+function get_anomaly_behaviour_radius(section)
+ local radius = anomalies_near_actor_radii[section] or (((anomaly_radii[section] and anomaly_radii[section].max or max_radius or 3) + 1) * 2)
+ local radius_sqr = radius * radius
+ return radius_sqr
+end
+
+-- Special behaviour is actor near an anomaly
+bind_anomaly_field_update = bind_anomaly_field.anomaly_field_binder.update
+bind_anomaly_field.anomaly_field_binder.update = function(self, delta)
+ bind_anomaly_field_update(self, delta)
+ if not self.object then return end
+
+ local section = self.section
+ if anomalies_near_actor_functions[section] or (additional_articles_to_category.encyclopedia_anomalies[section] and not opened_articles.encyclopedia_anomalies[additional_articles_to_category.encyclopedia_anomalies[section]]) then
+
+ -- Get behaviour radius and check if actor inside it, then apply effect
+ local actor = db.actor
+ local radius_sqr = self.radius_sqr
+ local distance_to_sqr = self.object:position():distance_to_sqr(actor:position())
+ if distance_to_sqr <= radius_sqr then
+ -- Open anomaly article
+ open_anomaly_article(section)
+
+ -- Beep near anoms if option enabled or have Svarog or Anomaly Detector
+ if not anomaly_detector_ignore[section] then
+ notify_anomaly(self, actor, distance_to_sqr, radius_sqr, false)
+ end
+
+ -- Behaviour near actor
+ if anomalies_near_actor_functions[section] then
+ anomalies_near_actor_functions[section](self, actor, distance_to_sqr, radius_sqr)
+ end
+
+ -- printf("actor near anomaly %s, firing effect, delta %s", section, delta)
+ else
+ anomalies_vars.remove_factor(anomalies_vars, self, actor, distance_to_sqr, radius_sqr)
+ end
+ end
+ if npc_on_near_anomalies_functions[section] then
+ if not self.iterate_nearest_func then
+ self.iterate_nearest_func = function(obj)
+ if obj
+ and (IsStalker(obj) or IsMonster(obj))
+ and (obj.alive and obj:alive())
+ and obj:id() ~= AC_ID
+ and obj:position():distance_to_sqr(self.object:position()) <= self.radius_sqr
+ then
+ npc_on_near_anomalies_functions[section](self, obj, db.actor)
+ end
+ end
+ end
+ level.iterate_nearest(self.object:position(), self.radius, self.iterate_nearest_func)
+ end
+end
+
+-- Apply glitches and flickers to active items near electrical anomalies
+-- See above how value is set
+pda_glitch_value = nil
+process_glitch = item_device.device_binder.process_glitch
+item_device.device_binder.process_glitch = function(self, id, section, condition)
+ process_glitch(self, id, section, condition)
+ if pda_glitch_value then
+ self.object:set_psy_factor(pda_glitch_value)
+ end
+end
+
+process_flicker = item_device.device_binder.process_flicker
+item_device.device_binder.process_flicker = function(self, force)
+ process_flicker(self, pda_glitch_value and pda_glitch_value > 0.4 or force)
+end
+
+process_torch = item_device.device_binder.process_torch
+item_device.device_binder.process_torch = function(self, id, section, condition)
+ process_torch(self, id, section, condition)
+
+ -- Beef's NVG integration
+ if z_beefs_nvgs then
+ if self.N_V then
+ z_beefs_nvgs.nvg_glitch(clamp(pda_glitch_value or 0, 0, 0.9))
+ else
+ z_beefs_nvgs.nvg_glitch(0)
+ end
+ end
+end
+
+local actor_on_update_time = 0
+local actor_on_update_timer = 100
+function actor_on_update()
+ local tg = time_global()
+ if tg < actor_on_update_time then return end
+ actor_on_update_time = tg + actor_on_update_timer
+
+ time_elapsed = get_time_elapsed()
+ process_timed_effects()
+end
+
+function actor_on_interaction(typ, obj, name)
+ -- check if emission happened globally
+ if typ == "anomalies" and (name == "emission_end" or name == "psi_storm_end") then
+
+ local level_name = level.name()
+ init_anomaly_table_on_level(level_name)
+
+ -- 50/50 chance to remove anomalies globally or just update artefacts
+ if random(100) <= 50 then
+ CreateTimeEvent("clean_dynamic_anomalies_global", "clean_dynamic_anomalies_global", 0.5, function()
+ last_surge_time = get_time_elapsed()
+
+ printf("surge happened globally at %s", last_surge_time)
+ printf("update on level %s after emission", level.name())
+
+ clean_dynamic_anomalies_global()
+ build_anomalies_pos_tree()
+ return true
+ end)
+ else
+ printf("surge happened globally at %s", get_time_elapsed())
+ printf("update artefacts on level %s after emission", level.name())
+ clean_artefacts_on_level(level.name())
+ spawn_artefacts_on_level(level.name())
+ build_anomalies_pos_tree()
+ end
+ end
+end
+
+function actor_on_item_take(obj)
+ local level_name = level.name()
+ local id = obj:id()
+ if updated_anomaly_levels[level_name] and updated_anomaly_levels[level_name].artefacts and updated_anomaly_levels[level_name].artefacts[id] then
+ printf("taken created artefact %s, id %s, level_name %s", updated_anomaly_levels[level_name].artefacts[id], id, level_name)
+ updated_anomaly_levels[level_name].artefacts[id] = nil
+ end
+end
+
+function npc_on_item_take(npc, obj)
+ actor_on_item_take(obj)
+end
+
+-- Anomalies special hit behaviour
+anomalies_hit_functions = {
+
+ -- Flash special hit behaviour - Time travel
+ zone_mine_flash = function(s_hit, bone_id, flags, actor)
+ printf("change_time")
+ local health = actor.health
+ local change_hours = random(2, 5)
+ local change_minutes = random(1, 59)
+
+ level.change_game_time(0, change_hours, change_minutes)
+ level_weathers.get_weather_manager():select_weather(true)
+ surge_manager.get_surge_manager().time_forwarded = true
+ psi_storm_manager.get_psi_storm_manager().time_forwarded = true
+
+ s_hit.power = 0.001
+ CreateTimeEvent("zone_mine_flash", "zone_mine_flash", 0.05, function()
+ local new_health = actor.health
+ actor:set_health_ex(health)
+ actor:change_health(-random_float(0.01, 0.04))
+
+ -- Change thirst and sleep, params are from vanilla actor_status_sleep/thirst scripts
+ local sleep_params = {
+ step = 27,
+ check_after_sec = 300,
+ }
+
+ local thirst_params = {
+ step = 30,
+ check_after_sec = 300
+ }
+
+ local change_sleep_amount = (change_hours * 3600 + change_minutes * 60) / sleep_params.check_after_sec * sleep_params.step * 0.01
+ local change_thirst_amount = (change_hours * 3600 + change_minutes * 60) / thirst_params.check_after_sec * thirst_params.step * 0.01
+
+ thirst_sleep_changer.change_sleep(round(change_sleep_amount))
+ thirst_sleep_changer.change_thirst(round(change_thirst_amount))
+ return true
+ end)
+ end,
+
+ -- Radiation field: drain batteries of active items
+ -- zone_field_radioactive = function(s_hit, bone_id, flags, actor)
+ -- if s_hit.power <= 0 then return end
+ -- for i = 8, 10 do
+ -- local item = actor:item_in_slot(i)
+ -- if item then
+ -- local cond = item:condition()
+ -- if cond > 0.01 then
+ -- item:set_condition(cond - 0.03 * s_hit.power)
+ -- end
+ -- end
+ -- end
+ -- end,
+ -- zone_field_radioactive_weak = function(s_hit, bone_id, flags, actor)
+ -- anomalies_hit_functions.zone_field_radioactive(s_hit, bone_id, flags, actor)
+ -- end,
+ -- zone_field_radioactive_average = function(s_hit, bone_id, flags, actor)
+ -- anomalies_hit_functions.zone_field_radioactive(s_hit, bone_id, flags, actor)
+ -- end,
+ -- zone_field_radioactive_strong = function(s_hit, bone_id, flags, actor)
+ -- anomalies_hit_functions.zone_field_radioactive(s_hit, bone_id, flags, actor)
+ -- end,
+ -- zone_radioactive = function(s_hit, bone_id, flags, actor)
+ -- anomalies_hit_functions.zone_field_radioactive(s_hit, bone_id, flags, actor)
+ -- end,
+ -- zone_radioactive_weak = function(s_hit, bone_id, flags, actor)
+ -- anomalies_hit_functions.zone_field_radioactive(s_hit, bone_id, flags, actor)
+ -- end,
+ -- zone_radioactive_average = function(s_hit, bone_id, flags, actor)
+ -- anomalies_hit_functions.zone_field_radioactive(s_hit, bone_id, flags, actor)
+ -- end,
+ -- zone_radioactive_strong = function(s_hit, bone_id, flags, actor)
+ -- anomalies_hit_functions.zone_field_radioactive(s_hit, bone_id, flags, actor)
+ -- end,
+
+}
+
+-- Anomalies special hit behaviour on monster
+anomalies_monster_hit_functions = {
+
+ -- Flash special hit behaviour - Time travel
+ zone_mine_flash = function(monster, s_hit, bone_id, flags, actor)
+ printf("flash got hit %s", monster:section())
+ s_hit.power = 0
+ flags.ret_value = false
+ safe_release_manager.release(alife_object(monster:id()))
+ end,
+
+ -- Reduce power for Rebounder
+ -- zone_mine_sphere = function(monster, s_hit, bone_id, flags, actor)
+ -- local sec = monster:section()
+ -- printf("rebounder got hit %s", sec)
+ -- s_hit.power = 0
+ -- flags.ret_value = false
+
+ -- local immunities_sec = SYS_GetParam(0, sec, "protections_sect", sec)
+ -- local hit_power = SYS_GetParam(2, "zone_mine_sphere", "max_start_power", 1) * SYS_GetParam(2, immunities_sec, "hit_fraction_monster", 1)
+
+ -- monster:change_health(-hit_power)
+ -- end,
+
+}
+
+-- Also used for monsters, filter for npcs or monsters specifically in functions bodies
+npc_on_near_anomalies_functions = {
+
+ -- Rebounder effect for NPCs
+ zone_mine_sphere = function(anomaly, npc, actor)
+ local key = "zone_mine_sphere_" .. npc:name()
+ if not callbacks[key] then
+ register_callback(IsStalker(npc) and "npc_on_before_hit" or "monster_on_before_hit", function(npc_hit, s_hit, bone_id, flags)
+ if s_hit.type == hit.fire_wound and npc_hit:name() == npc:name() then
+ s_hit.power = s_hit.power * random_float(0, 0.5)
+ play_sound_on_actor("eugenium_anomaly\\sphere\\sphere_blowout", 1, random_float(0.95, 1.05), anomaly.object)
+ local gibs = particles_object("artefact\\artefact_gravi")
+ if gibs and not gibs:playing() then
+ gibs:play_at_pos(npc_hit:position())
+ end
+ end
+ end, nil, key)
+ end
+
+ add_simple_timed_effect(0.7, nil, function()
+ unregister_callback(key)
+ end, key, 1)
+ end,
+
+}
+
+function actor_on_before_hit(s_hit, bone_id, flags)
+ if not s_hit.draftsman then return end
+
+ local sec = s_hit.draftsman:section()
+ if anomalies_hit_functions[sec] then
+ anomalies_hit_functions[sec](s_hit, bone_id, flags, db.actor)
+ end
+end
+
+function monster_on_before_hit(monster, s_hit, bone_id, flags)
+ if not s_hit.draftsman then return end
+
+ local sec = s_hit.draftsman:section()
+ if anomalies_monster_hit_functions[sec] then
+ anomalies_monster_hit_functions[sec](monster, s_hit, bone_id, flags, db.actor)
+ end
+end
+
+function load_state(m_data)
+ local dump = string.dump
+ local load = loadstring
+ local unpack = unpack
+
+ local t = m_data.drx_da_effects or {}
+ for key, effect in pairs(t) do
+ if t[key].effect_function then
+ local effect = load(t[key].effect_function)
+ t[key].effect = function()
+ effect(unpack(t[key].effect_args))
+ end
+ end
+ if t[key].on_end_function then
+ local on_end = load(t[key].on_end_function)
+ t[key].on_end = function()
+ on_end(unpack(t[key].on_end_args))
+ end
+ end
+ end
+ timed_effects = t
+
+ last_surge_time = m_data.drx_da_last_surge_time or 0
+ updated_anomaly_levels = m_data.drx_da_updated_anomaly_levels or {}
+ if m_data.drx_da_opened_articles then opened_articles = m_data.drx_da_opened_articles end
+ RegisterScriptCallback("actor_on_update", drx_da_actor_on_update_callback)
+end
+
+function actor_on_first_update()
+ load_state(alife_storage_manager.get_state())
+end
+
+function save_anomalies(m_data)
+ local t = {}
+ for key, effect in pairs(timed_effects) do
+ if effect.save then
+ t[key] = {}
+ copy_table(t[key], effect)
+ t[key].effect = nil
+ t[key].on_end = nil
+ end
+ end
+ m_data.drx_da_effects = t
+
+ m_data.drx_da_updated_anomaly_levels = updated_anomaly_levels
+ m_data.drx_da_last_surge_time = last_surge_time
+ m_data.drx_da_opened_articles = opened_articles
+end
+
+function save_level(m_data)
+ m_data.drx_da_previous_level = level.name()
+end
+
+function on_before_level_changing()
+ printf("saving previous_level")
+ alife_storage_manager.get_state().drx_da_previous_level = level.name()
+ UnregisterScriptCallback("save_state", save_level)
+end
+
+local function on_option_change()
+ load_settings()
+ if settings.delete_dynamic_anomalies then
+ unregister_anomalies_behaviour()
+ clean_dynamic_anomalies_global()
+ build_anomalies_pos_tree()
+ if ui_mcm then
+ ui_mcm.set("drx_da/delete_dynamic_anomalies", false)
+ end
+ return
+ end
+
+ unregister_anomalies_behaviour()
+ if updated_anomaly_levels[level.name()] and not updated_anomaly_levels[level.name()].disabled then
+ if settings.enable_anomalies_behaviour or level_weathers.bLevelUnderground then
+ register_anomalies_behaviour()
+ else
+ enable_anomalies_on_level()
+ end
+ end
+end
+
+-- Register callback scripts:
+function on_game_start()
+ RegisterScriptCallback("actor_on_before_hit", actor_on_before_hit)
+ RegisterScriptCallback("monster_on_before_hit", monster_on_before_hit)
+ RegisterScriptCallback("actor_on_item_take", actor_on_item_take)
+ RegisterScriptCallback("npc_on_item_take", npc_on_item_take)
+ RegisterScriptCallback("actor_on_interaction", actor_on_interaction)
+ RegisterScriptCallback("on_before_level_changing", on_before_level_changing)
+ RegisterScriptCallback("save_state", save_anomalies)
+ RegisterScriptCallback("save_state", save_level)
+ -- RegisterScriptCallback("load_state", load_state)
+ RegisterScriptCallback("actor_on_first_update", actor_on_first_update)
+ RegisterScriptCallback("on_game_load", load_settings)
+ RegisterScriptCallback("on_option_change", on_option_change)
+end
+
+-- Patches
+-- Encyclopedia articles about new anomalies
+
+-- Table contains category and entries in game section => article string id format
+additional_articles_to_category = {
+ encyclopedia_anomalies = {
+ zone_mine_cdf = "encyclopedia_anomalies_cdf",
+ zone_mine_umbra = "encyclopedia_anomalies_umbra",
+ zone_mine_flash = "encyclopedia_anomalies_flash",
+ zone_mine_ghost = "encyclopedia_anomalies_ghost",
+ zone_mine_gold = "encyclopedia_anomalies_gold",
+ zone_mine_thorn = "encyclopedia_anomalies_thorn",
+ zone_mine_seed = "encyclopedia_anomalies_seed",
+ zone_mine_shatterpoint = "encyclopedia_anomalies_shatterpoint",
+ zone_mine_sloth = "encyclopedia_anomalies_sloth",
+ zone_mine_mefistotel = "encyclopedia_anomalies_mefistotel",
+ zone_mine_net = "encyclopedia_anomalies_net",
+ zone_mine_point = "encyclopedia_anomalies_point",
+ zone_mine_sphere = "encyclopedia_anomalies_sphere",
+ }
+}
+
+-- Table contains opened articles after interacting with anomalies
+opened_articles = {
+ encyclopedia_anomalies = {}
+}
+
+-- Open anomaly article
+function open_anomaly_article(section)
+ -- If there is no article to begin with - return
+ if not additional_articles_to_category.encyclopedia_anomalies[section] then
+ printf("article not found for %s", section)
+ return
+ end
+
+ -- If already opened - return
+ if opened_articles.encyclopedia_anomalies[additional_articles_to_category.encyclopedia_anomalies[section]] then
+ printf("article already opened for %s", section)
+ return
+ end
+
+ -- Return if the player didn't spend 3 hours in the zone
+ if not (has_alife_info("actor_spent_2_hrs_in_zone") or utils_obj.is_time_spent_in_zone(0,0,2)) then
+ printf("youre too stupid for article boy")
+ return
+ end
+
+ -- Add statistics and notify
+ game_statistics.increment_statistic("articles")
+ actor_menu.set_notification(nil, "ui_inGame2_notify_article", 20, "device\\pda\\pda_guide_2")
+
+ -- Add to already opened articles
+ opened_articles.encyclopedia_anomalies[additional_articles_to_category.encyclopedia_anomalies[section]] = true
+
+ -- Instance of the pda_ui object.
+ local pda_ui = ui_pda_encyclopedia_tab.get_ui()
+ pda_ui:InitCategories()
+ pda_ui:SelectCategory("encyclopedia_anomalies")
+ pda_ui:SelectArticle(additional_articles_to_category.encyclopedia_anomalies[section])
+ if pda_ui.article_list and pda_ui.article_list.GetSelectedIndex then
+ pda_ui.article_list:SetSelectedIndex(pda_ui.article_list:GetSelectedIndex() + 1)
+ end
+
+ if zz_Encyclopedia_messages_restored or zz_encyclopedia_messages_restored or encyclopedia_messages_restored then
+ -- Article and category texts.
+ local message = game.translate_string("pda_encyclopedia_notify")
+ --printf("Monkeyzz " .. categories[index_c].section)
+ local text_c = game.translate_string("encyclopedia_anomalies")
+ local text_a = game.translate_string(additional_articles_to_category.encyclopedia_anomalies[section])
+ -- Other information.
+ local header = game.translate_string("st_tip")
+ local texture = news_manager.tips_icons["guide_unlock"] or "ui_inGame2_Poslednie_razrabotki"
+ db.actor:give_game_news(header, strformat(message, text_c, text_a), texture, 0, 5000, 0)
+ end
+end
+
+-- Patch article list
+InitArticles = ui_pda_encyclopedia_tab.pda_encyclopedia_tab.InitArticles
+ui_pda_encyclopedia_tab.pda_encyclopedia_tab.InitArticles = function(self, section_c)
+ InitArticles(self, section_c)
+
+ -- If not existing list - return
+ if is_empty(opened_articles[section_c]) then return end
+
+ local n = self.article_list:GetSize()
+ for article, _ in pairs(opened_articles[section_c]) do
+ local clr = ui_pda_encyclopedia_tab.UpdateColor(article)
+ local item = ui_pda_encyclopedia_tab.pda_encyclopedia_entry(article, n, clr)
+ self.article_list:AddExistingItem(item)
+ n = n + 1
+ end
+end
+
+-- Extra Utils
+function reset_timers()
+ last_surge_time = 0
+ for k, v in pairs(updated_anomaly_levels) do
+ v.time = -1
+ printf("time resetted for %s", k)
+ end
+ printf("last_surge_time is 0")
+end
+
+function print_anomalies()
+ return print_r(updated_anomaly_levels)
+end
+
+function debug_spawn_anomaly(sec)
+ local gvid = db.actor:game_vertex_id()
+ local r = level.get_target_dist and level.get_target_dist() or 3
+ local pos = vector():set(db.actor:position())
+ pos:add(device().cam_dir:mul(r))
+ pos = vector():set(pos.x,db.actor:position().y,pos.z)
+ local lvid = level.vertex_id(pos)
+
+ local level_name = level.name()
+ local level_data = get_level_data(level_name)
+ if not level_data then
+ printf("Error, unable to get data for %s", level_name)
+ return
+ end
+
+ local level_file = level_data.level_file
+
+ drx_da_spawn_anomaly(sec, pos, lvid, gvid, level_file)
+ build_anomalies_pos_tree()
+end
+
+-- Buggy consecutive update leading to softlocks and crashes
+-- Refresh anomalies on level after surge, in concurrent fashion
+function update_dynamic_anomalies_on_level_after_surge(level_name)
+ local level_name = level_name or level.name()
+
+ -- Clean all anomalies in one action first
+ clean_dynamic_anomalies_global()
+
+ local function generate_anomalies()
+ local level_data = get_level_data(level_name)
+ if not level_data then
+ printf("Error, unable to get data for %s", level_name)
+ return
+ end
+
+ local level_file = level_data.level_file
+ local spawn_percent = level_data.spawn_percent
+ local anomaly_max_number = level_data.anomaly_max_number
+ local anomaly_max_active = level_data.anomaly_max_active
+
+ -- Build a list of available smart terrains:
+ local smart_list = utils_data.collect_section(level_file, "available_smarts")
+
+ local pairs = pairs
+ local collect_section = utils_data.collect_section
+ local size_table = size_table
+
+ local to_generate = {}
+
+ -- Build anomalies table
+ if is_not_empty(smart_list) then
+ local anomalies = updated_anomaly_levels[level_name].anomalies or {}
+ local anomalies_by_smart = updated_anomaly_levels[level_name].anomalies_by_smart or {}
+ local smart_by_anomalies = updated_anomaly_levels[level_name].smart_by_anomalies or {}
+
+ for i, smart_name in pairs(smart_list) do
+ if true or not smart_restrictions[smart_name] then
+ -- Choose an anomaly type to spawn:
+ local anomaly_list = collect_section(level_file, "anomaly_types")
+ if anomaly_list and #anomaly_list >= 1 then
+ local anomaly_type = anomaly_list[random(#anomaly_list)]
+ printf("picked anomaly type %s", anomaly_type)
+
+ if not anomalies_by_smart[smart_name] then anomalies_by_smart[smart_name] = {} end
+ local j = size_table(anomalies_by_smart[smart_name])
+ while j < anomaly_max_number do
+ if random() <= spawn_percent then
+ to_generate[#to_generate + 1] = {
+ anomaly_type = anomaly_type,
+ level_file = level_file,
+ smart_name = smart_name,
+ level_name = level_name
+ }
+ end
+ j = j + 1
+ end
+ else
+ printf("No dynamic anomaly types specified for level %s", level_name)
+ end
+ else
+ printf("no anomalies spawn on smart %s, level %s in restriction", smart_name, level_name)
+ end
+ end
+ end
+ return to_generate
+ end
+
+ local anomalies = generate_anomalies()
+ if is_not_empty(anomalies) then
+ local tg_interval = 100
+ local tg = time_global() + 500
+
+ local anomalies_ids = {}
+ process_queue("drx_da_spawn_anomalies_on_level", anomalies, function(k, anomaly)
+ local t = time_global()
+ if t < tg then return end
+ tg = t + tg_interval
+
+ local anom_id = drx_da_spawn_anomaly_on_smart(anomaly.level_file, anomaly.smart_name, anomaly.anomaly_type, level_name)
+ if anom_id then
+ updated_anomaly_levels[level_name].anomalies[#updated_anomaly_levels[level_name].anomalies + 1] = anom_id
+ updated_anomaly_levels[level_name].anomalies_by_smart[anomaly.smart_name][anom_id] = true
+ updated_anomaly_levels[level_name].anomaly_types_by_smart[anomaly.smart_name] = anomaly.anomaly_type
+ updated_anomaly_levels[level_name].smart_by_anomalies[anom_id] = anomaly.smart_name
+ end
+ return true
+ end, function()
+ printf("anomalies updated after surge on level %s", level_name)
+ end)
+ end
+end
diff --git a/mods/Arrival/gamedata/scripts/drx_da_main_artefacts.script b/mods/Arrival/gamedata/scripts/drx_da_main_artefacts.script
new file mode 100644
index 00000000..8975770d
--- /dev/null
+++ b/mods/Arrival/gamedata/scripts/drx_da_main_artefacts.script
@@ -0,0 +1,1879 @@
+-- Artefacts spawn for DAO
+-- Artefacts spawn by this procedure
+-- 1. Get current level
+-- 2. Get available artefacts for current level
+-- 2. Iterate through anomaly zones
+-- 3. If anomaly zone has entry in anomaly_type_to_artefacts table, filter artefacts for this zone
+-- 4. Pick either random artefact from artefacts for current level or all allowed artefacts. This allows to have some variety in spawns and support for extra artefacts mods
+-- 5. Spawn artefact somewhere in the zone
+
+-- Build a table of allowed artefacts
+allowed_artefacts = (function() -- Allowed artefacts to spawn
+ local allow_artefacts = (function()
+ local t = {}
+ ini_sys:section_for_each(function(sec)
+ if SYS_GetParam(0, sec, "kind", "") == "i_arty" then -- Allow artefacts
+ t[sec] = true
+ elseif SYS_GetParam(0, sec, "kind", "") == "i_arty_junk" then -- Allow junk artefacts
+ t[sec] = true
+ end
+ end)
+ return t
+ end)()
+
+ local ignore_artefacts = (function()
+ local t = {}
+ t["af_lucifer"] = true -- PBA
+
+ -- Unique artefacts
+ t["af_ameba_mica"] = true
+ t["af_ameba_slime"] = true
+ t["af_ameba_slug"] = true
+ t["af_base_mlr"] = true
+ t["af_black"] = true
+ t["af_control"] = true
+ t["af_drops"] = true
+ t["af_dummy_pellicle"] = true
+ t["af_dummy_spring"] = true
+ t["af_geliy"] = true
+ t["af_gimlet"] = true
+ t["af_monolith"] = true
+ t["af_oasis_heart"] = true
+ t["af_quest_b14_twisted"] = true
+ t["af_rusty_kristall"] = true
+ t["af_rusty_sea"] = true
+ t["af_rusty_thorn"] = true
+ t["af_vaselisk"] = true
+ t["jup_b1_half_artifact"] = true
+ t["marker"] = true
+ t["monolith_shard"] = true
+
+ -- Multiplayer items
+ t["mp_af_electra_flash"] = true
+ t["mp_zone_witches_galantine"] = true
+ t["mp_af_cta_green"] = true
+ t["mp_af_cta_blue"] = true
+ t["mp_medkit"] = true
+ t["mp_medkit_scientic"] = true
+ t["mp_medkit_army"] = true
+ t["mp_energy_drink"] = true
+ t["mp_bandage"] = true
+ t["mp_antirad"] = true
+ t["mp_drug_coagulant"] = true
+ t["mp_drug_radioprotector"] = true
+ t["mp_medkit_old"] = true
+ t["mp_antirad_old"] = true
+ t["mp_detector_advanced"] = true
+ t["mp_device_torch"] = true
+ t["mp_players_rukzak"] = true
+ t["mp_wood_stolb_fixed"] = true
+ t["mp_wood_stolb_fixed_immunities"] = true
+ t["mp_explosive_fuelcan"] = true
+ t["mp_explosive_tank"] = true
+ t["mp_explosive_barrel"] = true
+
+ -- Storylines Artefacts
+ t["af_ah_e1"] = true
+ t["af_ah_e2"] = true
+ t["af_ah_f1"] = true
+ t["af_ah_g1"] = true
+ t["af_ah_g2"] = true
+ t["af_ah_h1"] = true
+ t["af_ah_h2"] = true
+ t["af_ah_o1"] = true
+ t["af_ah_o2"] = true
+ t["af_ah_r1"] = true
+ t["af_ah_r2"] = true
+ t["af_ah_r3"] = true
+ t["af_ah_r4"] = true
+ t["af_ah_r5"] = true
+ t["af_ah_s1"] = true
+
+ ini_sys:section_for_each(function(sec)
+ if SYS_GetParam(0, sec, "kind", "") == "i_arty_cont" then -- Exclude artefacts in containers
+ t[sec] = true
+ elseif SYS_GetParam(0, sec, "kind", "") == "i_attach" then -- Exclude attachments
+ t[sec] = true
+ elseif SYS_GetParam(0, sec, "kind", "") == "i_quest" then -- Exclude quest items
+ t[sec] = true
+ elseif SYS_GetParam(0, sec, "kind", "") == "i_mutant_belt" then -- Exclude mutant hides
+ t[sec] = true
+ elseif SYS_GetParam(1, sec, "quest_item", false) then -- Exclude quest items
+ t[sec] = true
+ end
+ end)
+ return t
+ end)()
+
+ local t = {}
+ for k, v in pairs(allow_artefacts) do
+ if not ignore_artefacts[k] then
+ t[#t + 1] = k
+ end
+ end
+ return t
+end)()
+
+-- Table of artefacts chances per level
+-- If defined, the chances from table will be used instead of default ones or from MCM
+
+artefacts_map_chances = {
+ ["k01_darkscape"] = 35,
+ ["l03u_agr_underground"] = 50,
+ ["l04u_labx18"] = 60,
+ ["l08u_brainlab"] = 60,
+ ["l10_radar"] = 30,
+ ["l10u_bunker"] = 80,
+ ["l11_hospital"] = 80,
+ ["l12_stancia"] = 35,
+ ["l12_stancia_2"] = 35,
+ ["l12u_control_monolith"] = 80,
+ ["l12u_sarcofag"] = 80,
+ ["l13_generators"] = 40,
+ ["l13u_warlab"] = 80,
+ ["labx8"] = 80,
+}
+
+-- Table of artefacts per level
+artefacts_map_tiers = {
+ ["k00_marsh"] = {
+ "af_misery_bread",
+ -- Junkies
+ "af_atom",
+ "af_ball",
+ "af_bat",
+ "af_black_angel",
+ "af_cell",
+ "af_cocoon",
+ "af_ear",
+ "af_fire_loop",
+ "af_fonar",
+ "af_fountain",
+ "af_generator",
+ "af_grapes",
+ "af_grapes",
+ "af_grapes",
+ "af_kislushka",
+ "af_kislushka",
+ "af_kogot",
+ "af_medallion",
+ "af_moh",
+ "af_peas",
+ "af_serofim",
+ "af_signet",
+ "af_spaika",
+ "af_sun",
+ "af_tapeworm",
+ "af_zhelch",
+
+ "af_death_lamp",
+
+ -- Usuals
+ "af_medusa",
+ "af_lobster_eyes",
+ "af_itcher",
+ "af_pin",
+ "af_dummy_glassbeads",
+ "af_mincer_meat",
+ "af_dummy_battery",
+ "af_electra_sparkler",
+ "af_sponge",
+ "af_blood",
+ "af_cristall_flower",
+ "af_soul"
+
+ },
+
+
+ ["l01_escape"] = {
+ "af_misery_bread",
+ "af_atom",
+ "af_ball",
+ "af_cocoon",
+ "af_ear",
+ "af_fire_loop",
+ "af_fonar",
+ "af_grapes",
+ "af_grapes",
+ "af_kislushka",
+ "af_kislushka",
+ "af_medallion",
+ "af_moh",
+ "af_peas",
+ "af_serofim",
+ "af_signet",
+ "af_spaika",
+ "af_sun",
+ "af_tapeworm",
+ "af_zhelch",
+ "af_death_lamp",
+
+ "af_medusa",
+ "af_itcher",
+ "af_pin",
+ "af_dummy_glassbeads",
+ "af_night_star",
+ "af_mincer_meat",
+ "af_dummy_battery",
+ "af_electra_sparkler",
+ "af_blood",
+ "af_cristall_flower",
+ "af_soul"
+ },
+
+
+ ["l05_bar"] = {
+ "af_misery_bread",
+ "af_atom",
+ "af_ball",
+ "af_cocoon",
+ "af_ear",
+ "af_fire_loop",
+ "af_fonar",
+ "af_grapes",
+ "af_grapes",
+ "af_kislushka",
+ "af_kislushka",
+ "af_medallion",
+ "af_moh",
+ "af_peas",
+ "af_serofim",
+ "af_signet",
+ "af_spaika",
+ "af_sun",
+ "af_tapeworm",
+ "af_zhelch",
+
+ "af_medusa",
+ "af_itcher",
+ "af_pin",
+ "af_dummy_glassbeads",
+ "af_night_star",
+ "af_mincer_meat",
+ "af_dummy_battery",
+ "af_electra_sparkler",
+ "af_blood",
+ "af_cristall_flower",
+ "af_soul"
+ },
+
+
+ ["l02_garbage"] = {
+ "af_misery_bread",
+ "af_atom",
+ "af_ball",
+ "af_bat",
+ "af_black_angel",
+ "af_cell",
+ "af_cocoon",
+ "af_ear",
+ "af_fire_loop",
+ "af_fonar",
+ "af_generator",
+ "af_grapes",
+ "af_grapes",
+ "af_kislushka",
+ "af_kislushka",
+ "af_kogot",
+ "af_medallion",
+ "af_moh",
+ "af_sandstone",
+ "af_serofim",
+ "af_signet",
+ "af_spaika",
+ "af_sun",
+ "af_tapeworm",
+ "af_zhelch",
+ "af_death_lamp",
+
+
+ "af_medusa",
+ "af_lobster_eyes",
+ "af_itcher",
+ "af_pin",
+ "af_dummy_glassbeads",
+ "af_mincer_meat",
+ "af_dummy_battery",
+ "af_electra_sparkler",
+ "af_sponge",
+ "af_blood",
+ "af_cristall_flower",
+ "af_soul"
+ },
+
+
+ ["k01_darkscape"] = {
+ "af_misery_bread",
+ "af_atom",
+ "af_bat",
+ "af_black_angel",
+ "af_cell",
+ "af_cocoon",
+ "af_dragon_eye",
+ "af_elektron",
+ "af_fire_loop",
+ "af_fountain",
+ "af_generator",
+ "af_generator",
+ "af_lighthouse",
+ "af_lighthouse",
+ "af_peas",
+ "af_repei",
+ "af_sandstone",
+ "af_serofim",
+ "af_skull_miser",
+ "af_spaika",
+ "af_star_phantom",
+ "af_sun",
+ "af_zhelch",
+ "af_death_lamp",
+
+
+ "af_pin",
+ "af_cristall",
+
+ "af_mincer_meat",
+ "af_bracelet",
+
+ "af_sponge",
+ "af_ring",
+
+ "af_lobster_eyes",
+ "af_electra_moonlight",
+
+ "af_medusa",
+ "af_vyvert",
+
+ "af_night_star",
+ "af_gravi",
+
+ "af_dummy_glassbeads",
+ "af_eye",
+
+ "af_dummy_battery",
+ "af_dummy_dummy",
+
+ "af_soul",
+ "af_fuzz_kolobok",
+ },
+
+ ["l04_darkvalley"] = {
+ "af_misery_bread",
+ "af_atom",
+ "af_ball",
+ "af_bat",
+ "af_black_angel",
+ "af_cell",
+ "af_cocoon",
+ "af_dragon_eye",
+ "af_ear",
+ "af_elektron",
+ "af_fire_loop",
+ "af_fonar",
+ "af_fountain",
+ "af_kogot",
+ "af_medallion",
+ "af_moh",
+ "af_repei",
+ "af_sandstone",
+ "af_serofim",
+ "af_signet",
+ "af_spaika",
+ "af_tapeworm",
+ "af_zhelch",
+ "af_death_lamp",
+
+ "af_itcher",
+ "af_pin",
+
+ "af_blood",
+ "af_mincer_meat",
+
+ "af_electra_sparkler",
+ "af_sponge",
+
+ "af_cristall_flower",
+ "af_lobster_eyes",
+
+ "af_medusa",
+ "af_vyvert",
+
+ "af_night_star",
+
+ "af_dummy_glassbeads",
+ "af_eye",
+
+ "af_dummy_battery",
+ "af_dummy_dummy",
+
+ "af_soul",
+ "af_fuzz_kolobok",
+ },
+
+
+ ["k02_trucks_cemetery"] = {
+ "af_atom",
+ "af_ball",
+ "af_bat",
+ "af_black_angel",
+ "af_cell",
+ "af_chelust",
+ "af_cocoon",
+ "af_dragon_eye",
+ "af_ear",
+ "af_elektron",
+ "af_fire_loop",
+ "af_fonar",
+ "af_fountain",
+ "af_generator",
+ "af_grapes",
+ "af_kislushka",
+ "af_kogot",
+ "af_lighthouse",
+ "af_medallion",
+ "af_moh",
+ "af_peas",
+ "af_repei",
+ "af_sandstone",
+ "af_serofim",
+ "af_signet",
+ "af_skull_miser",
+ "af_spaika",
+ "af_star_phantom",
+ "af_sun",
+ "af_tapeworm",
+ "af_zhelch",
+ "af_death_lamp",
+
+ "af_pin",
+ "af_cristall",
+
+ "af_mincer_meat",
+ "af_bracelet",
+
+ "af_sponge",
+ "af_ring",
+
+ "af_lobster_eyes",
+ "af_electra_moonlight",
+
+ "af_medusa",
+ "af_vyvert",
+
+ "af_night_star",
+ "af_gravi",
+
+ "af_dummy_glassbeads",
+ "af_eye",
+
+ "af_dummy_battery",
+ "af_dummy_dummy",
+
+ "af_soul",
+ "af_fuzz_kolobok",
+ },
+
+
+ ["l09_deadcity"] = {
+ "af_atom",
+ "af_ball",
+ "af_bat",
+ "af_black_angel",
+ "af_cell",
+ "af_chelust",
+ "af_cocoon",
+ "af_dragon_eye",
+ "af_ear",
+ "af_elektron",
+ "af_fire_loop",
+ "af_fonar",
+ "af_fountain",
+ "af_generator",
+ "af_grapes",
+ "af_kislushka",
+ "af_kogot",
+ "af_lighthouse",
+ "af_medallion",
+ "af_moh",
+ "af_peas",
+ "af_repei",
+ "af_sandstone",
+ "af_serofim",
+ "af_signet",
+ "af_skull_miser",
+ "af_spaika",
+ "af_star_phantom",
+ "af_sun",
+ "af_tapeworm",
+ "af_zhelch",
+ "af_death_lamp",
+
+ "af_pin",
+ "af_cristall",
+
+ "af_mincer_meat",
+ "af_bracelet",
+
+ "af_sponge",
+ "af_ring",
+
+ "af_lobster_eyes",
+ "af_electra_moonlight",
+
+ "af_medusa",
+ "af_vyvert",
+
+ "af_night_star",
+ "af_gravi",
+
+ "af_dummy_glassbeads",
+ "af_eye",
+
+ "af_dummy_battery",
+ "af_dummy_dummy",
+
+ "af_soul",
+ "af_fuzz_kolobok",
+ },
+
+
+ ["l03_agroprom"] = {
+ "af_misery_bread",
+ "af_atom",
+ "af_ball",
+ "af_bat",
+ "af_black_angel",
+ "af_cell",
+ "af_cocoon",
+ "af_dragon_eye",
+ "af_ear",
+ "af_elektron",
+ "af_fire_loop",
+ "af_fonar",
+ "af_fountain",
+ "af_kogot",
+ "af_medallion",
+ "af_moh",
+ "af_repei",
+ "af_sandstone",
+ "af_serofim",
+ "af_signet",
+ "af_spaika",
+ "af_tapeworm",
+ "af_zhelch",
+ "af_death_lamp",
+
+ "af_itcher",
+ "af_pin",
+
+ "af_blood",
+ "af_mincer_meat",
+
+ "af_electra_sparkler",
+ "af_sponge",
+
+ "af_cristall_flower",
+ "af_lobster_eyes",
+
+ "af_medusa",
+ "af_vyvert",
+
+ "af_night_star",
+
+ "af_dummy_glassbeads",
+ "af_eye",
+
+ "af_dummy_battery",
+ "af_dummy_dummy",
+
+ "af_soul",
+ "af_fuzz_kolobok",
+ },
+
+
+ ["l06_rostok"] = {
+ "af_atom",
+ "af_ball",
+ "af_bat",
+ "af_black_angel",
+ "af_cell",
+ "af_chelust",
+ "af_cocoon",
+ "af_dragon_eye",
+ "af_ear",
+ "af_elektron",
+ "af_fire_loop",
+ "af_fountain",
+ "af_kogot",
+ "af_repei",
+ "af_sandstone",
+ "af_serofim",
+ "af_skull_miser",
+ "af_spaika",
+ "af_star_phantom",
+ "af_tapeworm",
+ "af_zhelch",
+ "af_death_lamp",
+
+ "af_pin",
+ "af_cristall",
+ "af_fireball",
+
+ "af_mincer_meat",
+ "af_bracelet",
+ "af_baloon",
+
+ "af_sponge",
+ "af_ring",
+ "af_electra_flash",
+
+ "af_lobster_eyes",
+ "af_electra_moonlight",
+ "af_black_spray",
+
+ "af_vyvert",
+ "af_vyvert",
+ "af_empty",
+
+ "af_night_star",
+ "af_gravi",
+
+ "af_eye",
+ "af_fire",
+
+ "af_dummy_dummy",
+ "af_ice",
+
+ "af_fuzz_kolobok",
+ "af_glass",
+ },
+
+
+ ["l07_military"] = {
+ "af_atom",
+ "af_bat",
+ "af_black_angel",
+ "af_cell",
+ "af_chelust",
+ "af_cocoon",
+ "af_dragon_eye",
+ "af_ear",
+ "af_elektron",
+ "af_fire_loop",
+ "af_fonar",
+ "af_fountain",
+ "af_generator",
+ "af_kogot",
+ "af_lighthouse",
+ "af_medallion",
+ "af_moh",
+ "af_repei",
+ "af_sandstone",
+ "af_serofim",
+ "af_signet",
+ "af_skull_miser",
+ "af_spaika",
+ "af_star_phantom",
+ "af_tapeworm",
+ "af_zhelch",
+ "af_death_lamp",
+
+ "af_pin",
+ "af_cristall",
+
+ "af_mincer_meat",
+ "af_bracelet",
+
+ "af_sponge",
+ "af_ring",
+
+ "af_lobster_eyes",
+ "af_electra_moonlight",
+
+ "af_medusa",
+ "af_vyvert",
+ "af_empty",
+
+ "af_night_star",
+ "af_gravi",
+
+ "af_dummy_glassbeads",
+ "af_eye",
+ "af_fire",
+
+ "af_dummy_battery",
+ "af_dummy_dummy",
+ "af_ice",
+
+ "af_soul",
+ "af_fuzz_kolobok",
+ },
+
+
+ ["l08_yantar"] = {
+ "af_ball",
+ "af_bat",
+ "af_black_angel",
+ "af_cell",
+ "af_cocoon",
+ "af_dragon_eye",
+ "af_ear",
+ "af_elektron",
+ "af_fire_loop",
+ "af_fonar",
+ "af_fountain",
+ "af_grapes",
+ "af_kislushka",
+ "af_kogot",
+ "af_moh",
+ "af_peas",
+ "af_serofim",
+ "af_signet",
+ "af_skull_miser",
+ "af_spaika",
+ "af_sun",
+ "af_tapeworm",
+ "af_zhelch",
+ "af_zhelch",
+ "af_death_lamp",
+
+ "af_itcher",
+ "af_pin",
+ "af_cristall",
+
+ "af_blood",
+ "af_mincer_meat",
+ "af_bracelet",
+
+ "af_electra_sparkler",
+ "af_sponge",
+ "af_ring",
+
+ "af_lobster_eyes",
+ "af_lobster_eyes",
+ "af_lobster_eyes",
+ "af_electra_moonlight",
+ "af_electra_moonlight",
+ "af_electra_moonlight",
+ "af_black_spray",
+ "af_black_spray",
+
+ "af_medusa",
+ "af_vyvert",
+
+ "af_night_star",
+ "af_gravi",
+
+ "af_dummy_glassbeads",
+ "af_eye",
+
+ "af_dummy_battery",
+ "af_dummy_dummy",
+
+ "af_soul",
+ "af_fuzz_kolobok",
+ },
+
+
+ ["jupiter"] = {
+ "af_bat",
+ "af_black_angel",
+ "af_cell",
+ "af_chelust",
+ "af_cocoon",
+ "af_dragon_eye",
+ "af_ear",
+ "af_elektron",
+ "af_fire_loop",
+ "af_fonar",
+ "af_fountain",
+ "af_generator",
+ "af_kislushka",
+ "af_kogot",
+ "af_lighthouse",
+ "af_medallion",
+ "af_moh",
+ "af_repei",
+ "af_sandstone",
+ "af_serofim",
+ "af_signet",
+ "af_skull_miser",
+ "af_spaika",
+ "af_star_phantom",
+ "af_tapeworm",
+ "af_zhelch",
+ "af_death_lamp",
+
+ "af_itcher",
+ "af_pin",
+ "af_cristall",
+ "af_fireball",
+
+ "af_blood",
+ "af_mincer_meat",
+ "af_bracelet",
+ "af_baloon",
+
+ "af_electra_sparkler",
+ "af_sponge",
+ "af_ring",
+ "af_electra_flash",
+
+ "af_cristall_flower",
+ "af_lobster_eyes",
+ "af_electra_moonlight",
+ "af_black_spray",
+
+ "af_medusa",
+ "af_vyvert",
+ "af_empty",
+
+ "af_night_star",
+ "af_gravi",
+ "af_gold_fish",
+
+ "af_dummy_glassbeads",
+ "af_eye",
+ "af_fire",
+
+ "af_dummy_battery",
+ "af_dummy_dummy",
+ "af_ice",
+
+ "af_soul",
+ "af_fuzz_kolobok",
+ "af_glass",
+ },
+
+
+ ["l03u_agr_underground"] = {
+ "af_death_lamp",
+
+ "af_pin",
+ "af_cristall",
+ "af_fireball",
+
+ "af_mincer_meat",
+ "af_bracelet",
+ "af_baloon",
+
+ "af_sponge",
+ "af_ring",
+ "af_electra_flash",
+
+ "af_lobster_eyes",
+ "af_electra_moonlight",
+ "af_black_spray",
+
+ "af_vyvert",
+ "af_empty",
+ "af_full_empty",
+
+ "af_gravi",
+ "af_gravi",
+
+ "af_eye",
+ "af_fire",
+
+ "af_dummy_dummy",
+ "af_ice",
+
+ "af_fuzz_kolobok",
+ "af_glass",
+ },
+
+
+ ["l10_limansk"] = {
+ "af_misery_bread",
+ "af_bat",
+ "af_black_angel",
+ "af_cell",
+ "af_chelust",
+ "af_cocoon",
+ "af_dragon_eye",
+ "af_ear",
+ "af_elektron",
+ "af_fire_loop",
+ "af_fonar",
+ "af_fountain",
+ "af_generator",
+ "af_kogot",
+ "af_lighthouse",
+ "af_medallion",
+ "af_repei",
+ "af_sandstone",
+ "af_serofim",
+ "af_skull_miser",
+ "af_spaika",
+ "af_star_phantom",
+ "af_zhelch",
+ "af_death_lamp",
+
+
+ "af_cristall",
+ "af_cristall",
+ "af_fireball",
+
+ "af_bracelet",
+ "af_bracelet",
+ "af_baloon",
+
+ "af_ring",
+ "af_ring",
+ "af_electra_flash",
+
+ "af_electra_moonlight",
+ "af_electra_moonlight",
+ "af_black_spray",
+
+ "af_vyvert",
+ "af_empty",
+ "af_full_empty",
+
+ "af_night_star",
+ "af_gravi",
+ "af_gold_fish",
+
+ "af_eye",
+ "af_eye",
+ "af_fire",
+
+ "af_dummy_dummy",
+ "af_dummy_dummy",
+ "af_ice",
+
+ "af_fuzz_kolobok",
+ "af_fuzz_kolobok",
+ "af_glass",
+
+ },
+
+
+ ["l08u_brainlab"] = {
+ "af_death_lamp",
+
+ "af_cristall",
+ "af_fireball",
+ "af_fireball",
+
+ "af_bracelet",
+ "af_baloon",
+ "af_baloon",
+
+ "af_ring",
+ "af_electra_flash",
+ "af_electra_flash",
+
+ "af_electra_moonlight",
+ "af_black_spray",
+ "af_black_spray",
+
+ "af_empty",
+ "af_full_empty",
+
+ "af_gravi",
+ "af_gravi",
+ "af_gold_fish",
+
+ "af_eye",
+ "af_fire",
+ "af_fire",
+
+ "af_dummy_dummy",
+ "af_ice",
+ "af_ice",
+
+ "af_fuzz_kolobok",
+ "af_glass",
+ "af_glass",
+ },
+
+
+ ["l10_red_forest"] = {
+ "af_atom",
+ "af_black_angel",
+ "af_chelust",
+ "af_chelust",
+ "af_cocoon",
+ "af_dragon_eye",
+ "af_ear",
+ "af_elektron",
+ "af_fire_loop",
+ "af_fonar",
+ "af_fountain",
+ "af_kislushka",
+ "af_kogot",
+ "af_medallion",
+ "af_medallion",
+ "af_moh",
+ "af_repei",
+ "af_sandstone",
+ "af_sandstone",
+ "af_serofim",
+ "af_spaika",
+ "af_death_lamp",
+
+ "af_cristall",
+ "af_fireball",
+
+ "af_bracelet",
+ "af_baloon",
+
+ "af_ring",
+ "af_electra_flash",
+
+ "af_electra_moonlight",
+ "af_black_spray",
+
+ "af_vyvert",
+ "af_vyvert",
+ "af_empty",
+ "af_full_empty",
+
+ "af_gravi",
+ "af_gravi",
+ "af_gold_fish",
+
+ "af_eye",
+ "af_fire",
+
+ "af_dummy_dummy",
+ "af_ice",
+
+ "af_fuzz_kolobok",
+ "af_glass",
+
+ "af_compass",
+ "af_death_lamp",
+ },
+
+
+ ["labx8"] = {
+ "af_death_lamp",
+
+ "af_cristall",
+ "af_fireball",
+ "af_fireball",
+
+ "af_bracelet",
+ "af_baloon",
+ "af_baloon",
+
+ "af_ring",
+ "af_electra_flash",
+ "af_electra_flash",
+
+ "af_electra_moonlight",
+ "af_black_spray",
+ "af_black_spray",
+
+ "af_empty",
+ "af_full_empty",
+ "af_full_empty",
+
+ "af_gravi",
+ "af_gold_fish",
+ "af_gold_fish",
+
+ "af_eye",
+ "af_fire",
+ "af_fire",
+
+ "af_dummy_dummy",
+ "af_ice",
+ "af_ice",
+
+ "af_fuzz_kolobok",
+ "af_glass",
+ "af_glass",
+ "af_compass",
+ "af_death_lamp",
+ },
+
+
+ ["l12_stancia"] = {
+ "af_bat",
+ "af_black_angel",
+ "af_cell",
+ "af_chelust",
+ "af_cocoon",
+ "af_dragon_eye",
+ "af_fire_loop",
+ "af_kogot",
+ "af_repei",
+ "af_serofim",
+ "af_star_phantom",
+ "af_zhelch",
+
+ "af_cristall",
+ "af_fireball",
+ "af_fireball",
+
+ "af_bracelet",
+ "af_baloon",
+ "af_baloon",
+
+ "af_ring",
+ "af_electra_flash",
+ "af_electra_flash",
+
+ "af_electra_moonlight",
+ "af_black_spray",
+ "af_black_spray",
+
+ "af_empty",
+ "af_full_empty",
+ "af_full_empty",
+
+ "af_gravi",
+ "af_gold_fish",
+ "af_gold_fish",
+
+ "af_eye",
+ "af_fire",
+ "af_fire",
+
+ "af_dummy_dummy",
+ "af_ice",
+ "af_ice",
+
+ "af_fuzz_kolobok",
+ "af_glass",
+ "af_glass",
+
+ "af_compass",
+ "af_death_lamp",
+ },
+
+
+ ["zaton"] = {
+ "af_atom",
+ "af_bat",
+ "af_black_angel",
+ "af_cell",
+ "af_chelust",
+ "af_cocoon",
+ "af_dragon_eye",
+ "af_ear",
+ "af_elektron",
+ "af_fire_loop",
+ "af_fonar",
+ "af_fountain",
+ "af_generator",
+ "af_kogot",
+ "af_lighthouse",
+ "af_medallion",
+ "af_moh",
+ "af_repei",
+ "af_sandstone",
+ "af_serofim",
+ "af_signet",
+ "af_skull_miser",
+ "af_spaika",
+ "af_star_phantom",
+ "af_tapeworm",
+ "af_zhelch",
+ "af_death_lamp",
+
+ "af_pin",
+ "af_cristall",
+
+ "af_mincer_meat",
+ "af_bracelet",
+
+ "af_sponge",
+ "af_ring",
+
+ "af_lobster_eyes",
+ "af_electra_moonlight",
+
+ "af_medusa",
+ "af_vyvert",
+ "af_empty",
+
+ "af_night_star",
+ "af_gravi",
+
+ "af_dummy_glassbeads",
+ "af_eye",
+ "af_fire",
+
+ "af_dummy_battery",
+ "af_dummy_dummy",
+ "af_ice",
+
+ "af_soul",
+ "af_fuzz_kolobok",
+ },
+
+
+ ["l12_stancia_2"] = {
+ "af_bat",
+ "af_black_angel",
+ "af_cell",
+ "af_chelust",
+ "af_cocoon",
+ "af_dragon_eye",
+ "af_fire_loop",
+ "af_kogot",
+ "af_repei",
+ "af_serofim",
+ "af_star_phantom",
+ "af_zhelch",
+
+ "af_cristall",
+ "af_fireball",
+ "af_fireball",
+
+ "af_bracelet",
+ "af_baloon",
+ "af_baloon",
+
+ "af_ring",
+ "af_electra_flash",
+ "af_electra_flash",
+
+ "af_electra_moonlight",
+ "af_black_spray",
+ "af_black_spray",
+
+ "af_empty",
+ "af_full_empty",
+ "af_full_empty",
+
+ "af_gravi",
+ "af_gold_fish",
+ "af_gold_fish",
+
+ "af_eye",
+ "af_fire",
+ "af_fire",
+
+ "af_dummy_dummy",
+ "af_ice",
+ "af_ice",
+
+ "af_fuzz_kolobok",
+ "af_glass",
+ "af_glass",
+
+ "af_compass",
+ "af_death_lamp",
+ },
+
+
+ ["l11_hospital"] = {
+ "af_misery_bread",
+ "af_bat",
+ "af_black_angel",
+ "af_cell",
+ "af_chelust",
+ "af_cocoon",
+ "af_dragon_eye",
+ "af_fire_loop",
+ "af_kogot",
+ "af_repei",
+ "af_serofim",
+ "af_star_phantom",
+ "af_zhelch",
+
+ "af_cristall",
+ "af_fireball",
+ "af_fireball",
+
+ "af_bracelet",
+ "af_baloon",
+ "af_baloon",
+
+ "af_ring",
+ "af_electra_flash",
+ "af_electra_flash",
+
+ "af_electra_moonlight",
+ "af_black_spray",
+ "af_black_spray",
+
+ "af_empty",
+ "af_full_empty",
+ "af_full_empty",
+
+ "af_gravi",
+ "af_gold_fish",
+ "af_gold_fish",
+
+ "af_eye",
+ "af_fire",
+ "af_fire",
+
+ "af_dummy_dummy",
+ "af_ice",
+ "af_ice",
+
+ "af_fuzz_kolobok",
+ "af_glass",
+ "af_glass",
+
+ "af_compass",
+ "af_death_lamp",
+ },
+
+
+ ["jupiter_underground"] = {
+
+ "af_cristall",
+ "af_fireball",
+ "af_fireball",
+
+ "af_bracelet",
+ "af_baloon",
+ "af_baloon",
+
+ "af_ring",
+ "af_electra_flash",
+ "af_electra_flash",
+
+ "af_electra_moonlight",
+ "af_black_spray",
+ "af_black_spray",
+
+ "af_empty",
+ "af_full_empty",
+
+ "af_gravi",
+ "af_gravi",
+ "af_gold_fish",
+
+ "af_eye",
+ "af_fire",
+ "af_fire",
+
+ "af_dummy_dummy",
+ "af_ice",
+ "af_ice",
+
+ "af_fuzz_kolobok",
+ "af_glass",
+ "af_glass",
+ },
+
+
+
+ ["l10u_bunker"] = {
+
+ "af_cristall",
+ "af_fireball",
+ "af_fireball",
+
+ "af_bracelet",
+ "af_baloon",
+ "af_baloon",
+
+ "af_ring",
+ "af_electra_flash",
+ "af_electra_flash",
+
+ "af_electra_moonlight",
+ "af_black_spray",
+ "af_black_spray",
+
+ "af_empty",
+ "af_full_empty",
+ "af_full_empty",
+
+ "af_gravi",
+ "af_gold_fish",
+ "af_gold_fish",
+
+ "af_eye",
+ "af_fire",
+ "af_fire",
+
+ "af_dummy_dummy",
+ "af_ice",
+ "af_ice",
+
+ "af_fuzz_kolobok",
+ "af_glass",
+ "af_glass",
+
+ "af_compass",
+ "af_death_lamp",
+ },
+
+
+ ["l10_radar"] = {
+ "af_atom",
+ "af_black_angel",
+ "af_chelust",
+ "af_chelust",
+ "af_cocoon",
+ "af_dragon_eye",
+ "af_ear",
+ "af_elektron",
+ "af_fire_loop",
+ "af_fonar",
+ "af_fountain",
+ "af_kislushka",
+ "af_kogot",
+ "af_medallion",
+ "af_medallion",
+ "af_moh",
+ "af_repei",
+ "af_sandstone",
+ "af_sandstone",
+ "af_serofim",
+ "af_spaika",
+
+ "af_cristall",
+ "af_fireball",
+
+ "af_bracelet",
+ "af_baloon",
+
+ "af_ring",
+ "af_electra_flash",
+
+ "af_electra_moonlight",
+ "af_black_spray",
+
+ "af_empty",
+ "af_full_empty",
+
+ "af_gravi",
+ "af_gold_fish",
+
+ "af_eye",
+ "af_fire",
+
+ "af_dummy_dummy",
+ "af_ice",
+
+ "af_fuzz_kolobok",
+ "af_glass",
+
+ "af_compass",
+ "af_death_lamp",
+ },
+
+
+ ["l04u_labx18"] = {
+ "af_death_lamp",
+
+ "af_cristall",
+ "af_cristall",
+ "af_fireball",
+
+ "af_bracelet",
+ "af_bracelet",
+ "af_baloon",
+
+ "af_ring",
+ "af_ring",
+ "af_electra_flash",
+
+ "af_electra_moonlight",
+ "af_electra_moonlight",
+ "af_black_spray",
+
+ "af_vyvert",
+ "af_empty",
+ "af_full_empty",
+
+ "af_gravi",
+ "af_gravi",
+ "af_gold_fish",
+
+ "af_eye",
+ "af_eye",
+ "af_fire",
+
+ "af_dummy_dummy",
+ "af_dummy_dummy",
+ "af_ice",
+
+ "af_fuzz_kolobok",
+ "af_fuzz_kolobok",
+ "af_glass",
+ },
+
+
+ ["l11_pripyat"] = {
+ "af_misery_bread",
+ "af_bat",
+ "af_black_angel",
+ "af_cell",
+ "af_chelust",
+ "af_cocoon",
+ "af_dragon_eye",
+ "af_ear",
+ "af_elektron",
+ "af_fire_loop",
+ "af_fonar",
+ "af_fountain",
+ "af_generator",
+ "af_kogot",
+ "af_lighthouse",
+ "af_medallion",
+ "af_repei",
+ "af_sandstone",
+ "af_serofim",
+ "af_skull_miser",
+ "af_spaika",
+ "af_star_phantom",
+ "af_zhelch",
+
+
+ "af_cristall",
+ "af_cristall",
+ "af_fireball",
+
+ "af_bracelet",
+ "af_bracelet",
+ "af_baloon",
+
+ "af_ring",
+ "af_ring",
+ "af_electra_flash",
+
+ "af_electra_moonlight",
+ "af_electra_moonlight",
+ "af_black_spray",
+
+ "af_vyvert",
+ "af_empty",
+ "af_full_empty",
+
+ "af_night_star",
+ "af_gravi",
+ "af_gold_fish",
+
+ "af_eye",
+ "af_eye",
+ "af_fire",
+
+ "af_dummy_dummy",
+ "af_dummy_dummy",
+ "af_ice",
+
+ "af_fuzz_kolobok",
+ "af_fuzz_kolobok",
+ "af_glass",
+
+ "af_compass",
+ "af_death_lamp",
+
+ },
+
+
+ ["l12u_sarcofag"] = {
+
+ "af_cristall",
+ "af_fireball",
+ "af_fireball",
+
+ "af_bracelet",
+ "af_baloon",
+ "af_baloon",
+
+ "af_ring",
+ "af_electra_flash",
+ "af_electra_flash",
+
+ "af_electra_moonlight",
+ "af_black_spray",
+ "af_black_spray",
+
+ "af_empty",
+ "af_full_empty",
+ "af_full_empty",
+
+ "af_gravi",
+ "af_gold_fish",
+ "af_gold_fish",
+
+ "af_eye",
+ "af_fire",
+ "af_fire",
+
+ "af_dummy_dummy",
+ "af_ice",
+ "af_ice",
+
+ "af_fuzz_kolobok",
+ "af_glass",
+ "af_glass",
+
+ "af_compass",
+ "af_death_lamp",
+ },
+
+
+ ["l12u_control_monolith"] = {
+
+ "af_cristall",
+ "af_fireball",
+ "af_fireball",
+
+ "af_bracelet",
+ "af_baloon",
+ "af_baloon",
+
+ "af_ring",
+ "af_electra_flash",
+ "af_electra_flash",
+
+ "af_electra_moonlight",
+ "af_black_spray",
+ "af_black_spray",
+
+ "af_empty",
+ "af_full_empty",
+ "af_full_empty",
+
+ "af_gravi",
+ "af_gold_fish",
+ "af_gold_fish",
+
+ "af_eye",
+ "af_fire",
+ "af_fire",
+
+ "af_dummy_dummy",
+ "af_ice",
+ "af_ice",
+
+ "af_fuzz_kolobok",
+ "af_glass",
+ "af_glass",
+
+ "af_compass",
+ "af_death_lamp",
+ },
+
+
+ ["l13_generators"] = {
+ "af_bat",
+ "af_black_angel",
+ "af_cell",
+ "af_chelust",
+ "af_cocoon",
+ "af_dragon_eye",
+ "af_fire_loop",
+ "af_kogot",
+ "af_repei",
+ "af_serofim",
+ "af_star_phantom",
+ "af_zhelch",
+
+ "af_cristall",
+ "af_fireball",
+ "af_fireball",
+
+ "af_bracelet",
+ "af_baloon",
+ "af_baloon",
+
+ "af_ring",
+ "af_electra_flash",
+ "af_electra_flash",
+
+ "af_electra_moonlight",
+ "af_black_spray",
+ "af_black_spray",
+
+ "af_empty",
+ "af_full_empty",
+ "af_full_empty",
+
+ "af_gravi",
+ "af_gold_fish",
+ "af_gold_fish",
+
+ "af_eye",
+ "af_fire",
+ "af_fire",
+
+ "af_dummy_dummy",
+ "af_ice",
+ "af_ice",
+
+ "af_fuzz_kolobok",
+ "af_glass",
+ "af_glass",
+
+ "af_compass",
+ "af_death_lamp",
+ },
+
+
+ ["l13u_warlab"] = {
+
+ "af_cristall",
+ "af_fireball",
+ "af_fireball",
+
+ "af_bracelet",
+ "af_baloon",
+ "af_baloon",
+
+ "af_ring",
+ "af_electra_flash",
+ "af_electra_flash",
+
+ "af_electra_moonlight",
+ "af_black_spray",
+ "af_black_spray",
+
+ "af_empty",
+ "af_full_empty",
+ "af_full_empty",
+
+ "af_gravi",
+ "af_gold_fish",
+ "af_gold_fish",
+
+ "af_eye",
+ "af_fire",
+ "af_fire",
+
+ "af_dummy_dummy",
+ "af_ice",
+ "af_ice",
+
+ "af_fuzz_kolobok",
+ "af_glass",
+ "af_glass",
+
+ "af_compass",
+ "af_death_lamp",
+ },
+
+
+ ["pripyat"] = {
+ "af_misery_bread",
+ "af_bat",
+ "af_black_angel",
+ "af_cell",
+ "af_chelust",
+ "af_cocoon",
+ "af_dragon_eye",
+ "af_ear",
+ "af_elektron",
+ "af_fire_loop",
+ "af_fonar",
+ "af_fountain",
+ "af_generator",
+ "af_kogot",
+ "af_lighthouse",
+ "af_medallion",
+ "af_repei",
+ "af_sandstone",
+ "af_serofim",
+ "af_skull_miser",
+ "af_spaika",
+ "af_star_phantom",
+ "af_zhelch",
+
+
+ "af_cristall",
+ "af_cristall",
+ "af_fireball",
+
+ "af_bracelet",
+ "af_bracelet",
+ "af_baloon",
+
+ "af_ring",
+ "af_ring",
+ "af_electra_flash",
+
+ "af_electra_moonlight",
+ "af_electra_moonlight",
+ "af_black_spray",
+
+ "af_vyvert",
+ "af_empty",
+ "af_full_empty",
+
+ "af_night_star",
+ "af_gravi",
+ "af_gold_fish",
+
+ "af_eye",
+ "af_eye",
+ "af_fire",
+
+ "af_dummy_dummy",
+ "af_dummy_dummy",
+ "af_ice",
+
+ "af_fuzz_kolobok",
+ "af_fuzz_kolobok",
+ "af_glass",
+
+ "af_compass",
+ "af_death_lamp",
+ },
+
+
+ ["y04_pole"] = {
+ "af_atom",
+ "af_ball",
+ "af_bat",
+ "af_black_angel",
+ "af_cell",
+ "af_cocoon",
+ "af_dragon_eye",
+ "af_ear",
+ "af_elektron",
+ "af_fire_loop",
+ "af_fonar",
+ "af_fountain",
+ "af_kogot",
+ "af_medallion",
+ "af_moh",
+ "af_repei",
+ "af_sandstone",
+ "af_serofim",
+ "af_signet",
+ "af_spaika",
+ "af_tapeworm",
+ "af_zhelch",
+ "af_death_lamp",
+
+ "af_itcher",
+ "af_pin",
+
+ "af_blood",
+ "af_mincer_meat",
+
+ "af_electra_sparkler",
+ "af_sponge",
+
+ "af_cristall_flower",
+ "af_lobster_eyes",
+
+ "af_medusa",
+ "af_vyvert",
+
+ "af_night_star",
+
+ "af_dummy_glassbeads",
+ "af_eye",
+
+ "af_dummy_battery",
+ "af_dummy_dummy",
+
+ "af_soul",
+ "af_fuzz_kolobok",
+ "af_death_lamp",
+ "af_misery_bread",
+ },
+
+}
+
+-- Table of artefacts belonging to anomaly types
+-- Its optional, if anomaly type isn't found, picked artefact will be random from current level spawns
+anomaly_type_to_artefacts = {
+
+}
diff --git a/mods/Arrival/gamedata/scripts/drx_da_main_loadout_mcm.script b/mods/Arrival/gamedata/scripts/drx_da_main_loadout_mcm.script
new file mode 100644
index 00000000..6884ce5f
--- /dev/null
+++ b/mods/Arrival/gamedata/scripts/drx_da_main_loadout_mcm.script
@@ -0,0 +1,30 @@
+-- Add anomaly detector to loadouts
+local loadouts = new_game_loadout_injector_mcm
+
+loadouts.add_item({
+ section = "detector_anomaly",
+ points = 10,
+ faction = {
+ "stalker",
+ "dolg",
+ "freedom",
+ "csky",
+ -- "ecolog",
+ "killer",
+ "army",
+ "bandit",
+ "monolith",
+ "renegade",
+ "greh",
+ "isg",
+ },
+})
+
+loadouts.add_item({
+ section = "detector_anomaly",
+ points = 10,
+ faction = {
+ "ecolog",
+ },
+ add_to_inventory = true,
+})
diff --git a/mods/Arrival/gamedata/scripts/drx_da_main_mcm.script b/mods/Arrival/gamedata/scripts/drx_da_main_mcm.script
new file mode 100644
index 00000000..03e92c34
--- /dev/null
+++ b/mods/Arrival/gamedata/scripts/drx_da_main_mcm.script
@@ -0,0 +1,209 @@
+-- Table of new anomalies sections
+new_anomalies_sections = {
+ zone_mine_cdf = true,
+ zone_mine_umbra = true,
+ zone_mine_flash = true,
+ zone_mine_ghost = true,
+ zone_mine_gold = true,
+ zone_mine_thorn = true,
+ zone_mine_seed = true,
+ zone_mine_shatterpoint = true,
+ zone_mine_sloth = true,
+ zone_mine_mefistotel = true,
+ zone_mine_net = true,
+ zone_mine_point = true,
+ zone_mine_sphere = true,
+}
+
+-- Table of variations of old anomalies
+variations_anomalies_sections = {
+ zone_unknown = true,
+ zone_mine_acid = true,
+ zone_mine_electra = true,
+ zone_mine_springboard = true,
+ zone_mine_vortex = true,
+ zone_mine_blast = true,
+ zone_mine_zharka = true,
+ zone_mine_vapour = true,
+}
+
+presets = {
+ [0] = {
+ anomaly_zone_spawn_chance = 0.5,
+ anomaly_zone_anomalies_distance_max = 35,
+ anomaly_zone_anomalies_distance_min = 2,
+ anomaly_amount_modifier = 0.5,
+ max_artefacts_per_zone = 2,
+ artefacts_spawn_chance = 15,
+ random_artefact_spawn_chance = 25,
+ gravitational_shake_modifier = 0.5,
+ electric_field_modifier = 0.5,
+ enable_anomalies_behaviour = "true", -- Pass as string, thats important
+ },
+ [1] = {
+ anomaly_zone_spawn_chance = 1,
+ anomaly_zone_anomalies_distance_max = 25,
+ anomaly_zone_anomalies_distance_min = 1,
+ anomaly_amount_modifier = 1,
+ max_artefacts_per_zone = 2,
+ artefacts_spawn_chance = 15,
+ random_artefact_spawn_chance = 25,
+ gravitational_shake_modifier = 1,
+ electric_field_modifier = 1,
+ enable_anomalies_behaviour = "true", -- Pass as string, thats important
+ },
+ [2] = {
+ anomaly_zone_spawn_chance = 1,
+ anomaly_zone_anomalies_distance_max = 25,
+ anomaly_zone_anomalies_distance_min = 0.5,
+ anomaly_amount_modifier = 1.5,
+ max_artefacts_per_zone = 2,
+ artefacts_spawn_chance = 25,
+ random_artefact_spawn_chance = 25,
+ gravitational_shake_modifier = 1,
+ electric_field_modifier = 1.5,
+ enable_anomalies_behaviour = "true", -- Pass as string, thats important
+ },
+}
+
+op_id = "drx_da"
+op_preset_id = "presets"
+
+op = {
+ id = op_id, sh = true, gr = {
+ {id = "banner", type = "slide", text = "ui_mcm_drx_da_title", size = {512, 50}, spacing = 20},
+
+ {id=op_preset_id, type="list", val=2, def=1, content={
+ {0, "drx_da_preset_easy"},
+ {1, "drx_da_preset_normal"},
+ {2, "drx_da_preset_hard"},
+ }},
+
+ {id = "anomaly_zone_spawn_chance", type = "track", val = 2, min = 0, max = 1, step = 0.1, def = presets[1].anomaly_zone_spawn_chance or 1},
+ {id = "anomaly_zone_anomalies_distance_max", type = "track", val = 2, min = 90, max = 160, step = 1, def = presets[1].anomaly_zone_anomalies_distance_max or 130},
+ {id = "anomaly_zone_anomalies_distance_min", type = "track", val = 2, min = 15, max = 25, step = 0.1, def = presets[1].anomaly_zone_anomalies_distance_min or 25},
+ {id = "anomaly_amount_modifier", type = "track", val = 2, min = 0, max = 3, step = 0.1, def = presets[1].anomaly_amount_modifier or 1},
+ {id = "max_artefacts_per_zone", type = "track", val = 2, min = 0, max = 3, step = 1, def = presets[1].max_artefacts_per_zone or 2},
+ {id = "artefacts_spawn_chance", type = "track", val = 2, min = 0, max = 25, step = 1, def = presets[1].artefacts_spawn_chance or 15},
+ {id = "random_artefact_spawn_chance", type = "track", val = 2, min = 0, max = 100, step = 1, def = presets[1].random_artefact_spawn_chance or 25},
+
+ {id = "divider", type = "line"},
+ {id = "gravitational_shake_modifier", type = "track", val = 2, min = 0, max = 2, step = 0.1, def = presets[1].gravitational_shake_modifier or 1},
+ {id = "electric_field_modifier", type = "track", val = 2, min = 0, max = 3, step = 0.1, def = presets[1].electric_field_modifier or 1},
+ {id = "enable_anomalies_behaviour", type = "check", val = 1, def = presets[1].enable_anomalies_behaviour ~= nil and presets[1].enable_anomalies_behaviour == "true" or presets[1].enable_anomalies_behaviour == nil and true},
+ {id = "save_after_cleanup", type = "check", val = 1, def = false},
+ {id = "disable_new_anomalies", type = "check", val = 1, def = false},
+
+ {id = "divider", type = "line"},
+ {id = "drx_da_choose_help", type = "desc", clr = {200, 200, 255, 200}, text = "ui_mcm_drx_da_choose_help"},
+
+ {id = "drx_da_choose_divider_begin", type = "line"},
+ -- Here will be anomalies choose to disable (see on_mcm_load)
+ {id = "drx_da_choose_divider_end", type = "line"},
+
+ {id = "delete_dynamic_anomalies", type = "check", val = 1, def = false},
+ {id = "debug_mode", type = "check", val = 1, def = false},
+ }
+}
+
+function add_drx_da_choose_options()
+ for i = #op.gr, 1, -1 do
+ if op.gr[i].id == "drx_da_choose_divider_end" then
+ -- Build list of new anomalies from drx_da_main.script
+ for k, _ in spairs(new_anomalies_sections, function(t, a, b) return a > b end) do
+ table.insert(op.gr, i, {id = k .. "_enable", type = "check", val = 1, def = true})
+ table.insert(op.gr, i, {id = k .. "_banner", type = "slide", link = "banner_" .. k .. ".dds", text = k .. "_section_name", size = {512, 50}, spacing = 20})
+ end
+ break
+ end
+ end
+end
+
+function remove_drx_da_choose_options()
+ for i = 1, #op.gr do
+ if op.gr[i].id == "drx_da_choose_divider_begin" then
+ i = i + 1
+ while op.gr[i].id ~= "drx_da_choose_divider_end" do
+ table.remove(op.gr, i)
+ end
+ break
+ end
+ end
+end
+
+function is_enabled_anomaly(section)
+ if ui_mcm then
+ return ui_mcm.get("drx_da/" .. section .. "_enable")
+ end
+ return true
+end
+
+function set_preset(self, p)
+ if not presets[p] then
+ printf("DRX DA preset %s not found", p)
+ return
+ end
+
+ -- Pre-build available MCM values
+ local t = {}
+ for _, v in ipairs(op.gr) do
+ if v.def ~= nil then
+ t[v.id] = v.def
+ end
+ end
+
+ for k, value in pairs(presets[p]) do
+ if t[k] then
+
+ -- Validate option
+ local v = ui_mcm.get_opt_table(op_id .. "/" .. k)
+ if v and v.type then
+
+ -- Get proper value
+ if v.val == 0 then
+ -- Pass input value as is
+ elseif v.val == 1 then
+ value = (value == "true") and true or false
+ elseif v.val == 2 then
+ value = clamp(tonumber(value), v.min or 0, v.max or 100)
+ end
+
+ -- Extract path and opt
+ local t = ui_mcm.str_opt_explode(op_id .. "/" .. k)
+ local opt = t[#t]
+ local path = t[1]
+ for i=2,#t-1 do
+ path = ui_mcm.cc(path , t[i])
+ end
+
+ -- Cache changes
+ self:CacheValue(path, opt, value, v)
+ end
+ end
+ end
+
+ -- Update XML elements
+ self:Reset_opt(self.last_curr_tree, self.last_path)
+
+ -- Update state
+ self:UpdatePending()
+end
+
+if ui_mcm and ui_mcm.UIMCM and ui_mcm.UIMCM.Callback_List then
+ MCM_Callback_List = ui_mcm.UIMCM.Callback_List
+ ui_mcm.UIMCM.Callback_List = function(self, ctrl, path, opt, v)
+ MCM_Callback_List(self, ctrl, path, opt, v)
+ if path ~= op_id then return end
+ if opt == op_preset_id then
+ local value = self:GetValue(path, opt, v)
+ set_preset(self, value)
+ end
+ end
+end
+
+function on_mcm_load()
+ remove_drx_da_choose_options()
+ add_drx_da_choose_options()
+ return op
+end
+
diff --git a/mods/Arrival/gamedata/scripts/drx_da_main_traders.script b/mods/Arrival/gamedata/scripts/drx_da_main_traders.script
new file mode 100644
index 00000000..08675c55
--- /dev/null
+++ b/mods/Arrival/gamedata/scripts/drx_da_main_traders.script
@@ -0,0 +1,78 @@
+get_param = utils_item.SYS_GetParam
+utils_item.SYS_GetParam = function(typ, sec, param, def)
+ if sec == "detector_anomaly" and param == "can_trade" then
+ return true
+ else
+ return get_param and get_param(typ, sec, param, def) or SYS_GetParam(typ, sec, param, def)
+ end
+end
+
+-------------------------- trader artiinject -------------------------
+trade_table = {
+
+ ["ecolog"] = {
+ [1] = {
+ ["detector_anomaly"] = 1,
+ },
+ },
+
+ ["csky"] = {
+ [1] = {
+ ["detector_anomaly"] = 1,
+ },
+ },
+
+ ["isg"] = {
+ [1] = {
+ ["detector_anomaly"] = 1,
+ },
+ },
+}
+
+trade_table.yan_stalker_sakharov = trade_table.ecolog
+trade_table.jup_b6_scientist_nuclear_physicist = trade_table.ecolog
+trade_table.jup_b6_scientist_biochemist = trade_table.ecolog
+trade_table.mar_base_owl_stalker_trader = trade_table.csky
+trade_table.baraholka_trader_night = trade_table.csky
+trade_table.jup_depo_isg_tech = trade_table.ecolog
+trade_table.ds_domik_isg_leader = trade_table.ecolog
+
+spawn_chance = 1
+
+function trade_add(npc)
+
+ local is_trader = trader_autoinject.get_trader_type(npc) == trader_autoinject.SUPPLIER
+ if not is_trader then return end
+
+ local community = npc:character_community() or "stalker"
+ local sec = npc:section()
+ local trader_table = trade_table[community] or trade_table[sec]
+
+ if not trader_table then return end
+
+ local supply_level = clamp(trader_autoinject.supply_level(npc, true) or 1, 1, 5)
+ for i = supply_level, 1, -1 do
+ if trader_table[i] then
+ local t = dup_table(trader_table[i])
+ for k, v in pairs(t) do
+ local s = 0
+ for i = 1, v do
+ if math.random() <= spawn_chance then
+ s = s + 1
+ end
+ end
+ t[k] = s
+ end
+ trader_autoinject.spawn_items(npc, t, true)
+ break
+ end
+ end
+
+end
+
+TraderAuto = trader_autoinject.update
+
+function trader_autoinject.update(npc)
+ TraderAuto(npc)
+ trade_add(npc)
+end
diff --git a/mods/Arrival/gamedata/scripts/gamma_dynamic_radiation_areas_from_arzsi.script b/mods/Arrival/gamedata/scripts/gamma_dynamic_radiation_areas_from_arzsi.script
new file mode 100644
index 00000000..092a8ab2
--- /dev/null
+++ b/mods/Arrival/gamedata/scripts/gamma_dynamic_radiation_areas_from_arzsi.script
@@ -0,0 +1,468 @@
+
+ENABLE_DYNAMIC_RADIATION_ZONES = true
+ENABLE_DYNAMIC_RADIATION_ZONES_NPP = true
+
+local blacklisted_smarts = {
+ l01_escape = {
+ esc_smart_terrain_3_16 = true,
+ esc_smart_terrain_2_12 = true,
+ esc_smart_terrain_5_7 = true,
+ esc_smart_terrain_4_9 = true
+ },
+ y04_pole = {
+ },
+ k00_marsh = {
+ mar_smart_terrain_base = true,
+ mar_smart_terrain_5_8 = true,
+ mar_smart_terrain_doc_2 = true
+ },
+ k01_darkscape = {
+ ds2_domik_st = true
+ },
+ l02_garbage = {
+ gar_smart_terrain_3_5 = true,
+ gar_smart_terrain_6_3 = true
+ },
+ l04_darkvalley = {
+ val_smart_terrain_7_3 = true,
+ val_smart_terrain_7_4 = true,
+ val_smart_terrain_7_5 = true,
+ val_smart_terrain_8_6 = true,
+ val_smart_terrain_7_8 = true, --Smart Z position is too low
+ val_smart_terrain_8_9 = true --Smart Z position is too low
+ },
+ l03_agroprom = {
+ agr_smart_terrain_1_6 = true,
+ agr_smart_terrain_1_6_near_1 = true,
+ agr_smart_terrain_1_6_near_2 = true
+ },
+ l08_yantar = {
+ yan_smart_terrain_3_6 = true,
+ yan_smart_terrain_6_4 = true,
+ },
+ l06_rostok = {
+ },
+ l05_bar = {
+ bar_dolg_bunker = true,
+ bar_dolg_general = true,
+ bar_visitors = true,
+ bar_zastava = true,
+ bar_zastava_2 = true,
+ },
+ k02_trucks_cemetery = {
+ trc_sim_20 = true
+ },
+ l09_deadcity = {
+ cit_killers = true,
+ },
+ l07_military = {
+ mil_smart_terrain_7_10 = true,
+ mil_smart_terrain_7_8 = true,
+ mil_smart_terrain_7_7 = true,
+ mil_smart_terrain_7_12 = true
+ },
+ l10_red_forest = {
+ red_smart_terrain_3_2 = true
+ },
+ l10_radar = {
+ },
+ l10_limansk = {
+ },
+ jupiter = {
+ jup_a6 = true,
+ jup_b41 = true
+ },
+ l11_pripyat = {
+ mlr_terrain = true,
+ pri_monolith = true,
+ },
+ pripyat = {
+ pri_a18_smart_terrain = true,
+ kbo_terrain = true,
+ pri_b306 = true,
+ pri_a16 = true,
+ pri_a16_mlr_copy = true,
+ pri_a28_base = true,
+ pri_b36_smart_terrain = true
+ },
+ l11_hospital = {
+ },
+ zaton = {
+ zat_b40_smart_terrain = true,
+ zat_b18 = true,
+ zat_stalker_base_smart = true,
+ zat_sim_27 = true
+ },
+ l12_stancia = {
+ },
+ l12_stancia_2 = {
+ },
+ l13_generators = {
+ },
+ l12u_sarcofag = {
+ sar_monolith_general = true
+ }
+}
+
+local radiation_field_level_settings = {
+ l01_escape = {
+ Name = "l01_escape",
+ Radiation_field = "zone_radioactive_very_weak",
+ Chance_to_spawn = 25,
+ Radius = 15
+ },
+ y04_pole = {
+ Name = "y04_pole",
+ Radiation_field = "zone_radioactive_very_weak",
+ Chance_to_spawn = 25,
+ Radius = 15
+ },
+ k00_marsh = {
+ Name = "k00_marsh",
+ Radiation_field = "zone_radioactive_very_weak",
+ Chance_to_spawn = 25,
+ Radius = 15
+ },
+ k01_darkscape = {
+ Name = "k01_darkscape",
+ Radiation_field = "zone_radioactive_very_weak",
+ Chance_to_spawn = 25,
+ Radius = 15
+ },
+ l02_garbage = {
+ Name = "l02_garbage",
+ Radiation_field = "zone_radioactive_weak",
+ Chance_to_spawn = 30,
+ Radius = 16
+ },
+ l04_darkvalley = {
+ Name = "l04_darkvalley",
+ Radiation_field = "zone_radioactive_weak",
+ Chance_to_spawn = 30,
+ Radius = 16
+ },
+ l03_agroprom = {
+ Name = "l03_agroprom",
+ Radiation_field = "zone_radioactive_weak",
+ Chance_to_spawn = 30,
+ Radius = 16
+ },
+ l08_yantar = {
+ Name = "l08_yantar",
+ Radiation_field = "zone_radioactive_below_average",
+ Chance_to_spawn = 35,
+ Radius = 16
+ },
+ l06_rostok = {
+ Name = "l06_rostok",
+ Radiation_field = "zone_radioactive_below_average",
+ Chance_to_spawn = 35,
+ Radius = 16
+ },
+ l05_bar = {
+ Name = "l05_bar",
+ Radiation_field = "zone_radioactive_below_average",
+ Chance_to_spawn = 35,
+ Radius = 10
+ },
+ k02_trucks_cemetery = {
+ Name = "k02_trucks_cemetery",
+ Radiation_field = "zone_radioactive_below_average",
+ Chance_to_spawn = 35,
+ Radius = 18
+ },
+ l09_deadcity = {
+ Name = "l09_deadcity",
+ Radiation_field = "zone_radioactive_below_average",
+ Chance_to_spawn = 35,
+ Radius = 15
+ },
+ l07_military = {
+ Name = "l07_military",
+ Radiation_field = "zone_radioactive_below_average",
+ Chance_to_spawn = 35,
+ Radius = 18
+ },
+ l10_red_forest = {
+ Name = "l10_red_forest",
+ Radiation_field = "zone_radioactive_average",
+ Chance_to_spawn = 40,
+ Radius = 12
+ },
+ l10_radar = {
+ Name = "l10_radar",
+ Radiation_field = "zone_radioactive_average",
+ Chance_to_spawn = 40,
+ Radius = 24
+ },
+ l10_limansk = {
+ Name = "l10_limansk",
+ Radiation_field = "zone_radioactive_average",
+ Chance_to_spawn = 40,
+ Radius = 24
+ },
+ jupiter = {
+ Name = "jupiter",
+ Radiation_field = "zone_radioactive_above_average",
+ Chance_to_spawn = 45,
+ Radius = 22
+ },
+ l11_pripyat = {
+ Name = "l11_pripyat",
+ Radiation_field = "zone_radioactive_above_average",
+ Chance_to_spawn = 0,
+ Radius = 24
+ },
+ pripyat = {
+ Name = "pripyat",
+ Radiation_field = "zone_radioactive_above_average",
+ Chance_to_spawn = 45,
+ Radius = 24
+ },
+ l11_hospital = {
+ Name = "l11_hospital",
+ Radiation_field = "zone_radioactive_above_average",
+ Chance_to_spawn = 45,
+ Radius = 24
+ },
+ zaton = {
+ Name = "zaton",
+ Radiation_field = "zone_radioactive_above_average",
+ Chance_to_spawn = 45,
+ Radius = 22
+ },
+ l12_stancia = {
+ Name = "l12_stancia",
+ Radiation_field = "zone_radioactive_strong",
+ Chance_to_spawn = 50,
+ Radius = 28
+ },
+ l12_stancia_2 = {
+ Name = "l12_stancia_2",
+ Radiation_field = "zone_radioactive_strong",
+ Chance_to_spawn = 50,
+ Radius = 28
+ },
+ l13_generators = {
+ Name = "l13_generators",
+ Radiation_field = "zone_radioactive_strong",
+ Chance_to_spawn = 50,
+ Radius = 28
+ }
+}
+
+--Some anomlies will affect new game start point, like scientist bunker in Yantar. They should be capped.
+local blacklisted_static_radiation_anomalies = {
+ -- l01_escape
+ esc_zone_field_radioactive_weak_0000 = 80,
+ esc_zone_field_radioactive_weak_0011 = 75,
+ esc_zone_field_radioactive_weak_0012 = 75,
+ esc_zone_field_radioactive_weak_0013 = 75,
+
+ --k00_marsh
+ mar_zone_field_radioactive_weak_0007 = 80,
+
+ --pripyat
+ pripyat_zone_field_radioactive_weak_0001 = 5,
+
+ --l04_darkvalley
+ val_zone_field_radioactive_weak_baza_freedom_0016 = 3,
+ val_zone_field_radioactive_weak_baza_freedom_0018 = 3,
+ val_zone_field_radioactive_weak_baza_freedom_0019 = 3,
+
+ --l03_agroprom
+ agr_zone_field_radioactive_average_000 = 20,
+
+ --l07_military
+ mil_zone_field_radioactive_strong = 25,
+ mil_zone_field_radioactive_strong_3 = 50,
+
+ --zaton
+ zaton_zone_field_radioactive_average_0007 = 20,
+ zaton_zone_field_radioactive_average_0008 = 20,
+ zaton_zone_field_radioactive_average_0013 = 20,
+
+ --Name of level: l02_garbage
+ gar_zone_field_radioactive_weak_0001 = 50,
+ gar_zone_field_radioactive_weak_0002 = 40
+}
+
+--Underground maps should not be affected by dynamic radiations and wind behaviour
+local underground_maps = {
+ l03u_agr_underground = true,
+ l08u_brainlab = true,
+ l10u_bunker = true,
+ jupiter_underground = true,
+ l04u_labx18 = true,
+ labx8 = true,
+ l12u_sarcofag = true,
+ l12u_control_monolith = true,
+ l13u_warlab = true
+}
+
+
+--Radiation zones the player is in
+local radiation_zones = {}
+
+--Table for state management
+local radiation_table = {}
+
+--Hack for a wonderful bug in the LUA interpreter itself possibly. IT IS CURSED!
+environmental_radiation = 0
+
+--Hack for icon removal
+local ico_n_removed = false
+local ico_p_removed = false
+
+function spawn_radiation_fields_at_new_game()
+ printf("spawn_radiation_fields_at_new_game()")
+
+ for k, v in pairs (radiation_field_level_settings) do
+ run_script = 1
+ spawn_radiation_fields_for_level(v)
+ end
+
+ run_script = 0
+end
+
+--Creates new radiation fields for the current level
+function spawn_radiation_fields_for_level(current_level_settings)
+ if run_script ~= 1 then
+ return
+ end
+ --printf("spawn_radiation_fields_for_level: "..current_level_settings.Name.." ************************************************")
+
+ --printf("get_smart_terrains_of_level: "..current_level_settings.Name)
+ local smarts_of_level = get_smart_terrains_of_level(current_level_settings.Name)
+
+ printf("get blacklisted smarts")
+ local blacklisted_smarts_for_level = blacklisted_smarts[current_level_settings.Name]
+
+ printf("Iterate through smarts")
+ for ksmart, smart in pairs (smarts_of_level) do
+
+ local name_of_smart = smart:name()
+ if (not blacklisted_smarts_for_level[name_of_smart]) then
+
+ if (math.random(1, 100) <= current_level_settings.Chance_to_spawn) then
+ printf("Spawn default radiation zone for smart: "..name_of_smart)
+
+ create_radiation_field(
+ current_level_settings.Radiation_field,
+ smart.position,
+ smart.m_game_vertex_id,
+ level.vertex_id(smart.position),
+ current_level_settings.Radius)
+ end
+
+ else
+ printf("Smart: "..name_of_smart.." is black listed, skip")
+ end
+
+ end
+end
+
+--Creates a new radiation field
+function create_radiation_field(anomaly_type, position, game_vertex_id, level_vertex_id, radius)
+ printf("create_radiation_field: "..anomaly_type.." Radius: "..radius.. " *****************")
+
+ printf("spawn anomaly")
+ local se_obj = alife( ):create(anomaly_type, position, level_vertex_id, game_vertex_id)
+
+ if (not se_obj) then
+ printf("NO ANOMALY WERE SPAWNED")
+ return
+ end
+
+ local data = utils_stpk.get_anom_zone_data( se_obj )
+ if (not data) then
+ printf( "Error: Unable to set dynamic anomaly properties" )
+ return
+ end
+
+ data.shapes[1] = {}
+ data.shapes[1].shtype = 0
+ data.shapes[1].offset = vector( ):set( 0, 0, 0 ) -- Leave for compatibility with CoC 1.4.22, delete later
+ data.shapes[1].center = vector( ):set( 0, 0, 0 )
+ data.shapes[1].radius = radius
+ utils_stpk.set_anom_zone_data(data, se_obj)
+
+ printf(se_obj.id)
+ printf("Radiation field was spawned succesfully")
+end
+
+--Get smart terrains if the level
+function get_smart_terrains_of_level(level_name)
+ printf("get_smart_terrains_of_level("..level_name..")")
+ smarts_of_level = {}
+
+ for id,smart in pairs(db.smart_terrain_by_id) do
+ cvertex = smart and game_graph():vertex(smart.m_game_vertex_id)
+
+ if (cvertex and alife():level_name(cvertex:level_id()) == level_name) then
+ table.insert(smarts_of_level, smart)
+ end
+ end
+
+ return smarts_of_level
+end
+
+
+function initialize_radiation_table()
+ if (not radiation_table.dosimeter_volume) then
+ radiation_table.dosimeter_volume = 1
+ printf("INITIALIZE - dosimeter_volume")
+ end
+
+ if (not radiation_table.wind_alert_state) then
+ --radiation_table.wind_alert_state = WIND_ALERT_STATES.NoAlert
+ --printf("INITIALIZE - wind_alert_state")
+ end
+end
+
+function on_game_load()
+ --Initialize radiation_table of not initialized
+ initialize_radiation_table()
+
+ if (ENABLE_DYNAMIC_RADIATION_ZONES) then
+ if (not radiation_table.dynamic_radiation_zones_generated) then
+ --spawn dynamic radiation fields
+ spawn_radiation_fields_at_new_game()
+ radiation_table.dynamic_radiation_zones_generated = true
+ end
+ end
+
+ if (not radiation_table.static_radiation_fields_resized) then
+ --Resize both original and new radiation fields
+ --resize_radiation_fields()
+ radiation_table.static_radiation_fields_resized = true
+ end
+
+ if (ENABLE_DYNAMIC_RADIATION_ZONES_NPP) then
+ if (not radiation_table.dynamic_radiation_zones_generated_npp) then
+ --Spawn special radiation fields for NPP interrior
+ spawn_radiation_fields_for_level(special_spawn_l12u_sarcofag)
+ radiation_table.dynamic_radiation_zones_generated_npp = true
+ end
+ end
+
+ --Reset icon removal flags
+ ico_n_removed = false
+ ico_p_removed = false
+end
+
+
+function save_state(m_data)
+ m_data.radiation_table = radiation_table
+end
+
+function load_state(m_data)
+ radiation_table = m_data.radiation_table or {}
+end
+
+
+function on_game_start()
+ RegisterScriptCallback("on_game_load", on_game_load)
+ RegisterScriptCallback("save_state", save_state)
+ RegisterScriptCallback("load_state", load_state)
+end
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/scripts/kd_tree.script b/mods/Arrival/gamedata/scripts/kd_tree.script
new file mode 100644
index 00000000..72e6429c
--- /dev/null
+++ b/mods/Arrival/gamedata/scripts/kd_tree.script
@@ -0,0 +1,571 @@
+-- https://github.com/ubilabs/kd-tree-javascript
+-- k-d Tree Implementation for Lua for quick search in multidimensional tables
+-- k-d trees are a useful data structure for several applications, such as searches involving a multidimensional search key (e.g. range searches and nearest neighbor searches). k-d trees are a special case of binary space partitioning trees.
+-- Rewritten to pure Lua and adapted for usage in Anomaly by demonized
+
+local math_floor = math.floor
+local math_log = math.log
+local math_max = math.max
+local math_min = math.min
+
+local table_insert = table.insert
+local table_remove = table.remove
+local table_sort = table.sort
+
+local empty_table = empty_table
+
+local pairs = pairs
+
+local function table_slice(t, first, last)
+ local res = {}
+ for i = first or 1, last and last - 1 or #t do
+ res[#res + 1] = t[i]
+ end
+ return res
+end
+
+-- http://lua-users.org/wiki/BinaryInsert
+local function binary_insert(t, value, fcomp)
+ -- Initialise compare function
+ local fcomp = fcomp or function(a, b) return a < b end
+
+ -- print_table(value)
+
+ -- Initialise numbers
+ local iStart, iEnd, iMid, iState = 1, #t, 1, 0
+
+ if iEnd == 0 then
+ t[1] = value
+ -- printf("adding in beginning table empty")
+ return 1
+ end
+
+ if fcomp(value, t[1]) then
+ -- printf("adding in beginning %s of %s", 1, iEnd)
+ table_insert(t, 1, value)
+ return 1
+ end
+
+ if not fcomp(value, t[iEnd]) then
+ -- printf("adding in end %s of %s", iEnd + 1, iEnd)
+ local pos = iEnd + 1
+ t[pos] = value
+ return pos
+ end
+
+ -- Get insert position
+ while iStart <= iEnd do
+
+ -- calculate middle
+ iMid = math_floor((iStart + iEnd) / 2)
+
+ -- compare
+ if fcomp(value, t[iMid]) then
+ iEnd, iState = iMid - 1, 0
+ else
+ iStart, iState = iMid + 1, 1
+ end
+ end
+
+ local pos = iMid + iState
+ -- printf("adding in middle %s of %s", pos, iEnd)
+ table_insert(t, pos, value)
+ return pos
+end
+
+function Node(obj, dimension, parent)
+ local node = {}
+
+ node.obj = obj
+ node.left = nil
+ node.right = nil
+ node.parent = parent
+ node.dimension = dimension
+
+ return node
+end
+
+function kdTree(points, metric, dimensions)
+ local kd_tree = {}
+
+ kd_tree.points = points or {}
+ kd_tree.metric = metric
+ kd_tree.dimensions = dimensions
+
+ local function buildTree(new_points, depth, parent)
+ local dim = (depth % #dimensions) + 1
+ local median
+ local node
+
+ if not new_points then
+ return
+ end
+
+ if #new_points == 0 then
+ -- printf("buildTree #new_points == 0")
+ return
+ end
+
+ if #new_points == 1 then
+ -- printf("buildTree #new_points == 1")
+ return Node(new_points[1], dim, parent)
+ end
+
+ table_sort(new_points, function(a, b)
+ return a[dimensions[dim]] < b[dimensions[dim]]
+ end)
+
+ median = math_floor(#new_points / 2) + 1
+ node = Node(new_points[median], dim, parent)
+ node.left = buildTree(table_slice(new_points, 1, median), depth + 1, node)
+ node.right = buildTree(table_slice(new_points, median + 1), depth + 1, node)
+
+ return node
+ end
+
+ kd_tree.root = buildTree(points, 0, nil)
+
+ kd_tree.insertAndRebuild = function(self, point)
+ self.points[#self.points + 1] = point
+ self.root = buildTree(self.points, 0, nil)
+ return self
+ end
+
+ kd_tree.insert = function(self, point)
+ local function innerSearch(node, parent)
+
+ if node == nil then
+ return parent
+ end
+
+ local dimension = self.dimensions[node.dimension]
+ if point[dimension] < node.obj[dimension] then
+ return innerSearch(node.left, node)
+ else
+ return innerSearch(node.right, node)
+ end
+ end
+
+ local insertPosition = innerSearch(self.root, nil)
+ local newNode
+ local dimension
+
+ if insertPosition == nil then
+ self.points[#self.points + 1] = point
+ self.root = buildTree(self.points, 0, nil)
+ return self
+ end
+
+ newNode = Node(point, (insertPosition.dimension + 1) % #self.dimensions, insertPosition)
+ dimension = self.dimensions[insertPosition.dimension]
+
+ if point[dimension] < insertPosition.obj[dimension] then
+ insertPosition.left = newNode
+ else
+ insertPosition.right = newNode
+ end
+
+ self.points[#self.points + 1] = point
+
+ return self
+ end
+
+ kd_tree.remove = function(self, point)
+ local node
+
+ local function nodeSearch(node)
+ if node == nil then
+ return
+ end
+
+ if node.obj == point then
+ return node
+ end
+
+ local dimension = self.dimensions[node.dimension]
+
+ if point[dimension] < node.obj[dimension] then
+ return nodeSearch(node.left, node)
+ else
+ return nodeSearch(node.right, node)
+ end
+ end
+
+ local function removeNode(node)
+ local nextNode
+ local nextObj
+ local pDimension
+
+ local function findMin(node, dim)
+ local dimension
+ local own
+ local left
+ local right
+ local min
+
+ if node == nil then
+ return
+ end
+
+ dimension = self.dimensions[dim]
+
+ if node.dimension == dim then
+ if node.left ~= nil then
+ return findMin(node.left, dim)
+ end
+ return node
+ end
+
+ own = node.obj[dimension]
+ left = findMin(node.left, dim)
+ right = findMin(node.right, dim)
+ min = node
+
+ if left ~= nil and left.obj[dimension] < own then
+ min = left
+ end
+
+ if right ~= nil and right.obj[dimension] < min.obj[dimension] then
+ min = right
+ end
+
+ return min
+ end
+
+ if node.left == nil and node.right == nil then
+ if node.parent == nil then
+ self.root = nil
+ return
+ end
+
+ pDimension = self.dimensions[node.parent.dimension]
+
+ if node.obj[pDimension] < node.parent.obj[pDimension] then
+ node.parent.left = nil
+ else
+ node.parent.right = nil
+ end
+ return
+ end
+
+ -- If the right subtree is not empty, swap with the minimum element on the
+ -- node's dimension. If it is empty, we swap the left and right subtrees and
+ -- do the same.
+ if node.right ~= nil then
+ nextNode = findMin(node.right, node.dimension)
+ nextObj = nextNode.obj
+ removeNode(nextNode)
+ node.obj = nextObj
+ else
+ nextNode = findMin(node.left, node.dimension)
+ nextObj = nextNode.obj
+ removeNode(nextNode)
+ node.right = node.left
+ node.left = nil
+ node.obj = nextObj
+ end
+ end
+
+ node = nodeSearch(self.root)
+
+ if node == nil then
+ return
+ end
+
+ removeNode(node)
+
+ return self
+ end
+
+ kd_tree.clearRoot = function(self)
+ empty_table(self.root)
+ return self
+ end
+
+ -- Update positions of objects
+ -- Points input must be same structure as existing in k-d Tree
+
+ kd_tree.updatePositions = function(self, points)
+ self.points = points
+ self:clearRoot()
+ self.root = buildTree(points, 0, nil)
+ return self
+ end
+
+ -- get all points sorted by nearest
+ kd_tree.nearestAll = function(self, point)
+ local point = {
+ x = point.x or point[1],
+ y = point.y or point[2],
+ z = point.z or point[3]
+ }
+
+ local function comp_function(a, b)
+ return a[2] < b[2]
+ end
+
+ local res = {}
+ for i = 1, #self.points do
+ local v = self.points[i]
+ res[i] = {
+ [1] = {
+ x = v.x,
+ y = v.y,
+ z = v.z,
+ data = v.data
+ },
+ [2] = math.huge
+ }
+ res[i][2] = self.metric(res[i][1], point)
+ end
+ table_sort(res, comp_function)
+
+ return res
+ end
+
+ -- Query the nearest *count* neighbours to a point, with an optional
+ -- maximal search distance.
+ -- Result is an array with *count* elements.
+ -- Each element is an array with two components: the searched point and
+ -- the distance to it.
+
+ kd_tree.nearest = function(self, point, maxNodes, maxDistance)
+ local i
+ local result
+ local bestNodes
+
+ bestNodes = {}
+ local passedNodes = {}
+
+ local maxNodes = maxNodes or 1
+
+ local function comp_function(a, b)
+ return a[2] < b[2]
+ end
+
+ local function saveNode(node, distance)
+ binary_insert(bestNodes, {node, distance}, comp_function)
+ if #bestNodes > maxNodes then
+ table_remove(bestNodes)
+ end
+ end
+
+ local function nearestSearch(node)
+ if passedNodes[node] then return end
+
+ local bestChild
+ local dimension = self.dimensions[node.dimension]
+ local ownDistance = self.metric(point, node.obj)
+ local linearPoint = {}
+ local linearDistance
+ local otherChild
+ local i
+
+ for i = 1, #self.dimensions do
+ linearPoint[self.dimensions[i]] = i == node.dimension and point[self.dimensions[i]] or node.obj[self.dimensions[i]]
+ end
+
+ linearDistance = self.metric(linearPoint, node.obj)
+
+ if node.right == nil and node.left == nil then
+ if #bestNodes < maxNodes or ownDistance < bestNodes[#bestNodes][2] then
+ saveNode(node, ownDistance)
+ end
+ passedNodes[node] = true
+ return
+ end
+
+ if node.right == nil then
+ bestChild = node.left
+ elseif node.left == nil then
+ bestChild = node.right
+ else
+ bestChild = point[dimension] < node.obj[dimension] and node.left or node.right
+ end
+
+ nearestSearch(bestChild)
+
+ if #bestNodes < maxNodes or ownDistance < bestNodes[#bestNodes][2] then
+ saveNode(node, ownDistance)
+ passedNodes[node] = true
+ end
+
+ if #bestNodes < maxNodes or math.abs(linearDistance) < bestNodes[1][2] then
+ otherChild = bestChild == node.left and node.right or node.left
+ if (otherChild ~= nil) then
+ nearestSearch(otherChild)
+ end
+ end
+ end
+
+ if maxDistance then
+ for i = 1, maxNodes do
+ bestNodes[i] = {nil, maxDistance}
+ end
+ end
+
+ if self.root then
+ nearestSearch(self.root)
+ end
+
+ result = {}
+ for i = 1, math_min(maxNodes, #bestNodes) do
+ if bestNodes[i][1] then
+ result[#result + 1] = {
+ bestNodes[i][1].obj,
+ bestNodes[i][2]
+ }
+ end
+ end
+
+ return result
+ end
+
+ -- Get an approximation of how unbalanced the tree is.
+ -- The higher this number, the worse query performance will be.
+ -- It indicates how many times worse it is than the optimal tree.
+ -- Minimum is 1. Unreliable for small trees.
+
+ kd_tree.balanceFactor = function(self)
+ local function height(node)
+ if node == nil then
+ return 0
+ end
+ return math_max(height(node.left), height(node.right)) + 1
+ end
+
+ local function count(node)
+ if node == nil then
+ return 0
+ end
+ return count(node.left) + count(node.right) + 1
+ end
+
+ return height(self.root) / (math_log(count(self.root)) / math_log(2))
+ end
+
+ return kd_tree
+end
+
+local function distance_to(a, b)
+ -- printf("distance_to fired")
+
+ local dist_x = a.x - b.x
+ local dist_y = a.y - b.y
+ local dist_z = a.z - b.z
+
+ return dist_x * dist_x + dist_y * dist_y + dist_z * dist_z
+end
+
+-- Actual usage starts here
+--[[
+
+When you build position tree, you can find nearest objects in relation to other objects
+Example, find nearest position to actor:
+ local pos_tree = kd_tree.buildTreeObjectIds({45, 65, 23, 5353, 232})
+ print_table(pos_tree:nearest(db.actor:position()))
+
+will print position, distance and id of nearest object from given ids
+
+--]]
+
+-- Build k-d Tree by several inputs
+-- Input - Array of vectors (vector():set(x, y, z) or table with x, y, z keys or 1, 2, 3 keys)
+-- Data is an optional table where you can bind your data to your object, must have same amount of fields as vectors (#vectors == #data)
+function buildTreeVectors(vectors, data)
+ local v = {}
+ local data = data or {}
+ local vectors = vectors or {}
+ for k, t in pairs(vectors) do
+ table_insert(v, {
+ x = t.x or t[1],
+ y = t.y or t[2],
+ z = t.z or t[3],
+ data = data[k]
+ })
+ end
+ -- printf("vectors num %s", #v)
+ return kdTree(v, distance_to, {"x", "y", "z"})
+end
+
+-- Input - Array of game objects
+-- Vectors are binded to object ids automatically
+function buildTreeObjects(objects)
+ local vectors = {}
+ local data = {}
+ for k, v in pairs(objects) do
+ table_insert(vectors, v:position())
+ table_insert(data, v:id())
+ end
+ return buildTreeVectors(vectors, data)
+end
+
+-- Input - Array of server objects
+-- Vectors are binded to object ids automatically
+function buildTreeSeObjects(objects)
+ local vectors = {}
+ local data = {}
+ for k, v in pairs(objects) do
+ table_insert(vectors, v.position)
+ table_insert(data, v.id)
+ end
+ return buildTreeVectors(vectors, data)
+end
+
+-- Input - Array of game object ids
+-- Vectors are binded to object ids automatically
+function buildTreeObjectIds(ids)
+ local vectors = {}
+ local data = {}
+ local level_object_by_id = level.object_by_id
+ for k, v in pairs(ids) do
+ local obj = level_object_by_id(v)
+ if obj and obj ~= 0 and obj:id() ~= 0 then
+ table_insert(vectors, obj:position())
+ table_insert(data, v)
+ end
+ end
+ return buildTreeVectors(vectors, data)
+end
+
+-- Input - Array of server object ids
+-- Vectors are binded to object ids automatically
+function buildTreeSeObjectIds(ids)
+ local vectors = {}
+ local data = {}
+ local sim = alife()
+ local sim_object = sim.object
+ for k, v in pairs(ids) do
+ local obj = sim_object(sim, v)
+ if obj and obj ~= 0 and obj.id ~= 0 then
+ table_insert(vectors, obj.position)
+ table_insert(data, v)
+ end
+ end
+ return buildTreeVectors(vectors, data)
+end
+
+-- If you build a tree using functions above
+-- You can use this function to update positions and rebuild the tree
+function updateObjPositions(kd_tree)
+ local points = kd_tree.points
+ local new_points = {}
+
+ local sim = alife()
+ local sim_object = sim.object
+ for i = 1, #points do
+ local obj = sim_object(sim, points[i].data)
+ if obj then
+ local pos = obj.position
+ table_insert(new_points, {
+ x = pos.x,
+ y = pos.y,
+ z = pos.z,
+ data = points[i].data
+ })
+ end
+ end
+
+ kd_tree:updatePositions(new_points)
+ return kd_tree
+end
diff --git a/mods/Arrival/gamedata/scripts/new_game_loadout_injector_mcm.script b/mods/Arrival/gamedata/scripts/new_game_loadout_injector_mcm.script
new file mode 100644
index 00000000..84ff0f16
--- /dev/null
+++ b/mods/Arrival/gamedata/scripts/new_game_loadout_injector_mcm.script
@@ -0,0 +1,288 @@
+-- New Game Loadout Items Injector
+-- Based on Lucy's Glowsticks mod code for injecting glowsticks
+-- Written by demonized
+-- MCM IS REQUIRED TO WORK
+
+--[[
+
+For usage in your mod you have to create a script file with _mcm on the end
+for example, "my_best_mod_mcm.script"
+Then to add an item to loadout do something like this.
+Example below adds anomaly detector to loadouts
+All factions except ecologists should buy detector, ecologists have them for free on all difficulties
+In first or second economy difficulty, detector costs 150
+In third difficulty, detector costs 200
+
+-- Add anomaly detector to loadouts
+local loadouts = new_game_loadout_injector_mcm
+
+loadouts.add_item({
+ section = "detector_anomaly",
+ points = 150,
+ faction = {
+ "stalker",
+ "dolg",
+ "freedom",
+ "csky",
+ "killer",
+ "army",
+ "bandit",
+ "monolith",
+ "renegade",
+ "greh",
+ "isg",
+ },
+ economy = {
+ "st_econ_1",
+ "st_econ_2",
+ }
+})
+
+loadouts.add_item({
+ section = "detector_anomaly",
+ points = 200,
+ faction = {
+ "stalker",
+ "dolg",
+ "freedom",
+ "csky",
+ "killer",
+ "army",
+ "bandit",
+ "monolith",
+ "renegade",
+ "greh",
+ "isg",
+ },
+ economy = {
+ "st_econ_3"
+ }
+})
+
+loadouts.add_item({
+ section = "detector_anomaly",
+ points = 150,
+ faction = {
+ "ecolog",
+ },
+ add_to_inventory = true,
+})
+
+For all options see add_item function below in the script
+
+--]]
+
+--UTILS
+
+local function li_printf(str, ...)
+ printf("Loadout Injector: " .. str, ...)
+end
+
+local function li_printerr(str, ...)
+ printf("!Loadout Injector: ERROR, " .. str, ...)
+end
+
+local function table_to_dict(t)
+ local res = {}
+ local t = t or {}
+ for k, v in pairs(t) do
+ if type(v) == "string" then
+ res[v] = true
+ elseif v ~= false or v ~= nil then
+ res[k] = true
+ end
+ end
+ return res
+end
+
+local function dict_keys(t)
+ local res = {}
+ local t = t or {}
+ for k, v in pairs(t) do
+ res[#res + 1] = k
+ end
+
+ return res
+end
+
+-- Table of loadout items to inject
+loadout_items = {}
+
+-- Table of loadout items to remove
+loadout_removed_items = {}
+
+--[[
+
+Function to add item to loadout
+Accepts table, where you define the properties of item to add
+The table can have these fields (mandatory or optional):
+ section: string, mandatory, defines item section to add,
+ points: int, optional, defines price of item in loadout, default is 0
+ amount: int, optional, defines amount of items to add, default is 1
+ faction: table of string, optional, defines which factions can have this item. Empty table or nil will allow everyone to have this item. Possible values in table:
+ "stalker", (Loners)
+ "dolg", (Duty)
+ "freedom", (Freedom)
+ "csky", (Clear Sky)
+ "ecolog", (Ecologists)
+ "killer", (Mercenaries)
+ "army", (Military)
+ "bandit", (Bandits)
+ "monolith", (Monolith)
+ "renegade", (Renegades)
+ "greh", (Sin)
+ "isg", (UNISG)
+
+ economy: table of string, optional, defines which difficuly allows this item to appear. Empty table or nil will allow every economy to have this item. Possible values in table:
+ "st_econ_1", (Easy)
+ "st_econ_2", (Medium)
+ "st_econ_3" (Hard)
+
+ add_to_inventory: boolean, optional, defines if item has to be added in inventory directly, immediately and for free, default is false
+
+--]]
+
+function add_item(item_table)
+ if not item_table or type(item_table) ~= "table" then
+ li_printerr("no item table provided")
+ return
+ end
+
+ if not item_table.section or not ini_sys:section_exist(tostring(item_table.section)) then
+ li_printerr("no section exists by name %s", item_table.section)
+ return
+ end
+
+ item_table.points = item_table.points and tonumber(item_table.points) or 0
+ item_table.amount = item_table.amount and tonumber(item_table.amount) or 1
+
+ if item_table.faction and type(item_table.faction) == "string" then
+ local s = item_table.faction
+ item_table.faction = {
+ [s] = true
+ }
+ else
+ item_table.faction = table_to_dict(item_table.faction)
+ end
+
+ if item_table.economy and type(item_table.economy) == "string" then
+ local s = item_table.economy
+ item_table.economy = {
+ [s] = true
+ }
+ else
+ item_table.economy = table_to_dict(item_table.economy)
+ end
+
+ li_printf(
+ "adding item %s, points %s, amount %s, faction %s, economy %s, to inventory %s",
+ item_table.section,
+ item_table.points,
+ item_table.amount,
+ is_empty(item_table.faction) and "all" or table.concat(dict_keys(item_table.faction), ";"),
+ is_empty(item_table.economy) and "all" or table.concat(dict_keys(item_table.economy), ";"),
+ item_table.add_to_inventory == true
+ )
+
+ loadout_items[item_table.section] = loadout_items[item_table.section] or {}
+ table.insert(loadout_items[item_table.section], item_table)
+end
+
+-- Removes added items from loadout by section
+function remove_item(section)
+ local section = section or ""
+ if not ini_sys:section_exist(tostring(section)) then
+ li_printerr("can't remove %s, no section exists", section)
+ end
+ loadout_items[section] = nil
+end
+
+-- Removes existing items loaded from ltx from loadout by section
+function remove_existing_item(section)
+ local section = section or ""
+ if not ini_sys:section_exist(tostring(section)) then
+ li_printerr("can't remove %s, no section exists", section)
+ end
+ loadout_removed_items[section] = true
+end
+
+_LoadLoadout = ui_mm_faction_select.UINewGame.LoadLoadout
+
+function ui_mm_faction_select.UINewGame.LoadLoadout(self, rand)
+ _LoadLoadout(self, rand)
+
+ -- Copy existing loadout
+ local inv_sect_list = {}
+ local inv_point_list = {}
+ local i_size = 0
+ for idx,ci in pairs(self.CC["inventory"].cell) do
+ if not loadout_removed_items[ci.section] then
+ i_size = i_size + 1
+ inv_sect_list[i_size] = ci.section
+ inv_point_list[i_size] = 0
+ end
+ end
+
+ -- Add items which are marked "add_to_inventory"
+ for k, v in pairs(loadout_items) do
+ for i, item_table in ipairs(v) do
+ if item_table.add_to_inventory
+ and (is_empty(item_table.faction) or item_table.faction[self.selected_faction])
+ and (is_empty(item_table.economy) or item_table.economy[self.selected_economy])
+ then
+ for j = 1, item_table.amount do
+ i_size = i_size + 1
+ inv_sect_list[i_size] = item_table.section
+ inv_point_list[i_size] = 0
+ end
+ end
+ end
+ end
+
+ -- Load the existing faction "shop"
+ i_size = 0
+ local load_sect_list = {}
+ local load_point_list = {}
+ for idx,ci in pairs(self.CC["loadout"].cell) do
+ if not loadout_removed_items[ci.section] then
+ i_size = i_size + 1
+ load_sect_list[i_size] = ci.section
+ load_point_list[i_size] = ci.flags.info or 0
+ end
+ end
+
+ -- Add items to loadout shop
+ for k, v in pairs(loadout_items) do
+ for i, item_table in ipairs(v) do
+ if not item_table.add_to_inventory
+ and (is_empty(item_table.faction) or item_table.faction[self.selected_faction])
+ and (is_empty(item_table.economy) or item_table.economy[self.selected_economy])
+ then
+ for j = 1, item_table.amount do
+ i_size = i_size + 1
+ load_sect_list[i_size] = item_table.section
+ load_point_list[i_size] = item_table.points
+ end
+ end
+ end
+ end
+
+ -- Reinit inventories to apply the changes
+ self.CC["inventory"]:Reinit(inv_sect_list, inv_point_list)
+ for idx,ci in pairs(self.CC["inventory"].cell) do
+ if ci:IsShown() then
+ local val = ci.flags.info or 0
+ ci.flags.value = val
+ ci.flags.value_str = game.translate_string("st_mm_new_game_points") .. ": " .. val
+ end
+ end
+
+ self.CC["loadout"]:Reinit(load_sect_list, load_point_list)
+ for idx,ci in pairs(self.CC["loadout"].cell) do
+ if ci:IsShown() then
+ local val = ci.flags.info or 0
+ ci.flags.value = val
+ ci.flags.value_str = game.translate_string("st_mm_new_game_points") .. ": " .. val
+ end
+ end
+end
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/scripts/speed.script b/mods/Arrival/gamedata/scripts/speed.script
similarity index 90%
rename from mods/[DEV] Groks Body Health System Redux/gamedata/scripts/speed.script
rename to mods/Arrival/gamedata/scripts/speed.script
index bbbbca9e..8288b551 100644
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/scripts/speed.script
+++ b/mods/Arrival/gamedata/scripts/speed.script
@@ -20,15 +20,12 @@ local function update_speeds()
end
local run_coef = 1
for k,v in pairs(run_modifiers) do
- --printf("run " .. k .. " " .. v)
run_coef = run_coef * v
end
local sprint_coef = 1
for k,v in pairs(sprint_modifiers) do
- --printf("sprint " .. k .. " " .. v)
sprint_coef = sprint_coef * v
end
- -- printf("base speed: "..speeds[0])
db.actor:set_actor_run_coef(clamp(speeds[0] * run_coef, 1, 10))
db.actor:set_actor_runback_coef(clamp(speeds[1] * run_coef, 1, 10))
db.actor:set_actor_sprint_koef(clamp(speeds[2] * sprint_coef, 1, 10))
@@ -46,7 +43,7 @@ end
function add_speed(speed_key, speed_mult, is_sprint, force)
if (is_sprint) then
if force or not sprint_modifiers[speed_key] then
- --printf("sprint: " .. speed_key .. " " .. speed_mult)
+ -- printf("sprint: " .. speed_key .. " " .. speed_mult)
sprint_modifiers[speed_key] = speed_mult
update_speeds()
return true
@@ -55,7 +52,6 @@ function add_speed(speed_key, speed_mult, is_sprint, force)
end
else
if force or not run_modifiers[speed_key] then
- --printf("run: " .. speed_key .. " " .. speed_mult)
run_modifiers[speed_key] = speed_mult
update_speeds()
return true
diff --git a/mods/Arrival/gamedata/scripts/thirst_sleep_changer.script b/mods/Arrival/gamedata/scripts/thirst_sleep_changer.script
new file mode 100644
index 00000000..86736b7d
--- /dev/null
+++ b/mods/Arrival/gamedata/scripts/thirst_sleep_changer.script
@@ -0,0 +1,130 @@
+local enable_debug = false
+local function trace(str, ...)
+ if enable_debug then
+ printf(str, ...)
+ end
+end
+
+local dbg_increase_thirst_sleep = {
+ sec = "dbg_increase_thirst_sleep",
+ section = function(self)
+ return self.sec
+ end
+}
+
+local dbg_decrease_thirst_sleep = {
+ sec = "dbg_decrease_thirst_sleep",
+ section = function(self)
+ return self.sec
+ end
+}
+
+local dbg_increase_thirst_sleep_small = {
+ sec = "dbg_increase_thirst_sleep_small",
+ section = function(self)
+ return self.sec
+ end
+}
+
+local dbg_decrease_thirst_sleep_small = {
+ sec = "dbg_decrease_thirst_sleep_small",
+ section = function(self)
+ return self.sec
+ end
+}
+
+function change_thirst(perc)
+ if not game_difficulties.get_game_factor("thirst") then
+ trace("thirst not enabled, nothing changed")
+ return
+ end
+
+ local inc = perc >= 0
+ local perc = math.abs(perc)
+
+ if perc <= 1 then
+ perc = round(perc * 100)
+ end
+
+ for i = 1, perc do
+ if inc then
+ actor_status_thirst.actor_on_item_use(dbg_increase_thirst_sleep)
+ else
+ actor_status_thirst.actor_on_item_use(dbg_decrease_thirst_sleep)
+ end
+ end
+
+ trace("thirst changed by %s%", perc)
+end
+
+function change_sleep(perc)
+ if not game_difficulties.get_game_factor("sleep") then
+ trace("sleep not enabled, nothing changed")
+ return
+ end
+
+ local inc = perc >= 0
+ local perc = math.abs(perc)
+
+ if perc <= 1 then
+ perc = round(perc * 100)
+ end
+
+ for i = 1, perc do
+ if inc then
+ actor_status_sleep.actor_on_item_use(dbg_increase_thirst_sleep)
+ else
+ actor_status_sleep.actor_on_item_use(dbg_decrease_thirst_sleep)
+ end
+ end
+
+ trace("sleep changed by %s%", perc)
+end
+
+function change_thirst_small(perc)
+ if not game_difficulties.get_game_factor("thirst") then
+ trace("thirst not enabled, nothing changed")
+ return
+ end
+
+ local inc = perc >= 0
+ local perc = math.abs(perc)
+
+ if perc <= 1 then
+ perc = round(perc * 100)
+ end
+
+ for i = 1, perc do
+ if inc then
+ actor_status_thirst.actor_on_item_use(dbg_increase_thirst_sleep_small)
+ else
+ actor_status_thirst.actor_on_item_use(dbg_decrease_thirst_sleep_small)
+ end
+ end
+
+ trace("thirst changed by %s%", perc * 0.1)
+end
+
+function change_sleep_small(perc)
+ if not game_difficulties.get_game_factor("sleep") then
+ trace("sleep not enabled, nothing changed")
+ return
+ end
+
+ local inc = perc >= 0
+ local perc = math.abs(perc)
+
+ if perc <= 1 then
+ perc = round(perc * 100)
+ end
+
+ for i = 1, perc do
+ if inc then
+ actor_status_sleep.actor_on_item_use(dbg_increase_thirst_sleep_small)
+ else
+ actor_status_sleep.actor_on_item_use(dbg_decrease_thirst_sleep_small)
+ end
+ end
+
+ trace("sleep changed by %s%", perc * 0.1)
+end
diff --git a/mods/Arrival/gamedata/scripts/trader_autoinject.script b/mods/Arrival/gamedata/scripts/trader_autoinject.script
new file mode 100644
index 00000000..bacb7a6a
--- /dev/null
+++ b/mods/Arrival/gamedata/scripts/trader_autoinject.script
@@ -0,0 +1,201 @@
+--[[
+Wrapper class to let you autoinject things via monkey patch to all traders, respecting the restock time.
+How to use: Monkey patch the update function here in your script.
+ex:
+TraderAuto = trader_autoinject.update
+function trader_autoinject.update(npc)
+ TraderAuto(npc)
+ add_custom_crap(npc) -- you define this function ok
+end
+
+Some functions provided below for convenience.
+Note: If you want to iterate NPC inventory to check for items, fire a time event to allow the items to register on new game.
+--]] --
+
+
+find = string.find
+local function t2c(t)
+ if not t then return nil end
+ local ct = game.CTime()
+ ct:set(t.Y,t.M,t.D,t.h,t.m,t.s,t.ms)
+ return ct
+end
+
+local function c2t(ct)
+ if not ct then return nil end
+ -- printf('%s, %s',ct,type(ct))
+ local Y, M, D, h, m, s, ms = 0, 0, 0, 0, 0, 0, 0
+ Y, M, D, h, m, s, ms = ct:get(Y, M, D, h, m, s, ms)
+ return { Y=Y, M=M, D=D, h=h, m=m, s=s, ms=ms }
+end
+
+TraderUpdate = trade_manager.update
+function trade_manager.update(npc, force_refresh)
+ local id = npc:id()
+
+ if not npc:alive() then
+ return default
+ end
+ local reup_time = trade_manager.get_trade_profile(id, "resupply_time")
+ TraderUpdate(npc, force_refresh)
+ local restock_time = game_difficulties.get_eco_factor("restock") or 24
+ if force_refresh then restock_time = 0 end
+ if reup_time and game.get_game_time():diffSec(t2c(reup_time)) < (restock_time * 3600) then
+ -- print_dbg("Not time to resupply yet!")
+ return
+ end
+ disable_info("sleep_active")
+ CreateTimeEvent("custom_update"..npc:id(), "custom_resupply"..npc:id(), 0.1, timed_update, npc)
+end
+
+-- Add easier to trace callback
+function timed_update(npc)
+ update(npc)
+ SendScriptCallback("trader_on_restock",npc)
+ return true
+end
+
+-- monkeypatch me
+function update(npc)
+end
+
+-- util functions to help with monkey patching
+
+function get_faction_goodwill(faction)
+end
+
+COMPANION = 0 -- companions got special trade logic, this is just to catch errors
+MECHANIC = 1 -- mechanics/techs
+BARMAN = 2 -- exclusive food suppliers like Spirit
+MEDIC = 3 -- medics
+SUPPLIER = 4 -- everyone else that sells crap
+-- return trader type as int, or nil if error
+function get_trader_type(npc)
+ local st = db.storage[npc:id()]
+ if not st then return -1 end
+ local trader = false
+ if npc:character_community() == "trader" or npc:clsid() == clsid.script_trader or npc:clsid() == clsid.trader then
+ trader = true
+ end
+ if find(npc:section(),"trader") then
+ trader = true
+ end
+ local cini = st.ini
+ local logic = st.section_logic
+ if not logic and not trader then return -1 end
+ local trade_logic = cini and cini:r_string_ex(logic, "trade")
+ if not trade_logic then return -1 end
+ if find(trade_logic, "companion") then
+ return COMPANION
+ elseif find(trade_logic, "trade_generic_mechanic") then
+ return MECHANIC
+ elseif find(trade_logic, "trade_generic_barman") then
+ return BARMAN
+ elseif find(trade_logic, "trade_generic_medic") then
+ return MEDIC
+ else
+ return SUPPLIER
+ end
+end
+
+-- return supply level of npc, like suppy_1, supply_2, etc
+-- as_number removes the supply_ prefix and only returns as int
+function supply_level(npc, as_number)
+
+ local profile = trade_manager.get_trade_profile(npc:id(), "cfg_ltx")
+ -- printf("Profile is %s", profile)
+ local config = trade_manager.get_trade_cfg(profile)
+ if not config then return end
+ local str = config:r_string_ex("trader", "buy_supplies")
+ if not (str) then
+ return -- no buy_supplies this is normal
+ end
+
+ local condlist = xr_logic.parse_condlist(npc, "trader", "buy_supplies", str)
+ str = condlist and xr_logic.pick_section_from_condlist(db.actor, npc, condlist)
+ if as_number then
+ local num = str_explode(str, "_")
+ return tonumber(num[2])
+ else
+ return str
+ end
+end
+
+-- collapse several tables into one table, the way sections work in ltx files
+-- tables should be in section -> amount format
+-- precedence goes up to last table, meaning whatever is in the last table will be the last changes applied
+function merge_tables(tables)
+ local final_table = {}
+ if #tables > 0 then
+ copy_table(final_table, tables[1])
+ if #tables > 1 then
+ for i=2, #tables do
+ for k,v in pairs(tables[i]) do
+ final_table[k] = v
+ end
+ end
+ end
+ end
+ return final_table
+end
+
+
+local furniture = {
+ ["esc_m_trader"] = true,
+ ["red_m_lesnik"] = true
+}
+
+local blacklisted_comms = {
+ ["trader"] = true,
+ ["monster"] = true
+}
+
+-- used to get the real community of the NPC by checking spawn id
+-- author: HarukaSai
+function get_real_community(npc, default)
+
+ if furniture[npc:name()] then
+ return "stalker"
+ end
+ local community = character_community(npc)
+ if not blacklisted_comms[community] then
+ return community
+ end
+ local squad_community = get_object_squad(npc):get_squad_community()
+ if not blacklisted_comms[squad_community] then
+ return squad_community
+ else
+ return default
+ end
+end
+
+
+-- to_spawn should be table of sections to amount
+-- if check_existing is true, only spawns up to that amount in trader inventory. else arbitrarily spawns
+
+function spawn_items(npc, to_spawn, check_existing)
+ local npc_name = npc:name()
+ local alive_or_furniture = xr_conditions.is_alive(db.actor, npc) or furniture[npc_name]
+ if not alive_or_furniture then return end
+ local supply_table = {}
+ copy_table(supply_table, to_spawn)
+ if check_existing then
+ local function itr_inv(temp, item)
+ if supply_table[item:section()] and supply_table[item:section()] > 0 then
+ -- printf("Found 1 of %s", item:section())
+ supply_table[item:section()] = supply_table[item:section()] - 1
+ end
+ end
+ npc:iterate_inventory(itr_inv)
+ end
+
+ for k,v in pairs(supply_table) do
+ -- printf("Creating %s of %s", v, k)
+ for i=1, v do
+ -- printf("Created %s", k)
+ alife_create_item(k, npc)
+ end
+ end
+end
+
+AddScriptCallback("trader_on_restock")
\ No newline at end of file
diff --git a/mods/Arrival/gamedata/sounds/anomaly/anomaly_mincer_blowout.ogg b/mods/Arrival/gamedata/sounds/anomaly/anomaly_mincer_blowout.ogg
new file mode 100644
index 00000000..c9d74604
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/anomaly/anomaly_mincer_blowout.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:76c8c5a271e091e5574a985b0c7dd0c3ce8ec3d5c8621c5ae39b9bd5978bcd26
+size 191075
diff --git a/mods/Arrival/gamedata/sounds/anomaly/anomaly_mincer_blowout.ogg.bak b/mods/Arrival/gamedata/sounds/anomaly/anomaly_mincer_blowout.ogg.bak
new file mode 100644
index 00000000..efad179c
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/anomaly/anomaly_mincer_blowout.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/anomaly/gravi_idle01.ogg b/mods/Arrival/gamedata/sounds/anomaly/gravi_idle01.ogg
new file mode 100644
index 00000000..749cde70
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/anomaly/gravi_idle01.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f5ed09446dcd9e0f12e9e40a9d0fe92d6b646b682ff521f187a6a3d3c2159232
+size 205819
diff --git a/mods/Arrival/gamedata/sounds/anomaly/gravi_idle01.ogg.bak b/mods/Arrival/gamedata/sounds/anomaly/gravi_idle01.ogg.bak
new file mode 100644
index 00000000..f1b11827
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/anomaly/gravi_idle01.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_1.ogg b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_1.ogg
new file mode 100644
index 00000000..2c689822
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6cae045ad500f0ada40cd86b215eaf7354e9de11b14ca82d4341150af42f755e
+size 165951
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_1.ogg.bak b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_1.ogg.bak
new file mode 100644
index 00000000..3300c306
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_1.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_10.ogg b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_10.ogg
new file mode 100644
index 00000000..96c57bb2
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_10.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7a6c1d891ade54399ec7868b27ceda6686bd92781e25a70ce6152bce8820a6af
+size 127047
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_10.ogg.bak b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_10.ogg.bak
new file mode 100644
index 00000000..fd4edfe3
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_10.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_11.ogg b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_11.ogg
new file mode 100644
index 00000000..e61ea99a
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_11.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:000dc0d37053314a67240f17a2ad1518c2390d85cffc707dee8a50b22712cbe8
+size 167825
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_11.ogg.bak b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_11.ogg.bak
new file mode 100644
index 00000000..0af3cb61
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_11.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_12.ogg b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_12.ogg
new file mode 100644
index 00000000..d23e17e9
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_12.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d538297130f7cf8edda3b404e4b23c13ce69283bb690b680f37c802e467103bc
+size 150445
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_12.ogg.bak b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_12.ogg.bak
new file mode 100644
index 00000000..454f74de
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_12.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_13.ogg b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_13.ogg
new file mode 100644
index 00000000..97d80e1d
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_13.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:99662f3c2fda7143e7403314468aa42091da7952ced88e7aaa97c78566268583
+size 139720
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_13.ogg.bak b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_13.ogg.bak
new file mode 100644
index 00000000..f699c0ef
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_13.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_14.ogg b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_14.ogg
new file mode 100644
index 00000000..cc6c5629
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_14.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9d70ffc0209e7e6dbfaf0759a30d9653dd047a41f2cbd6eb9ddee6200d53d200
+size 187928
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_14.ogg.bak b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_14.ogg.bak
new file mode 100644
index 00000000..8979a50b
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_14.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_2.ogg b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_2.ogg
new file mode 100644
index 00000000..5d161b23
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eb36bf82805d1f4fd8222860b5c305f60a2619a647f7071104b870142421c3b6
+size 162631
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_2.ogg.bak b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_2.ogg.bak
new file mode 100644
index 00000000..31025260
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_2.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_3.ogg b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_3.ogg
new file mode 100644
index 00000000..abe1ff80
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e5cbcf297e64e4a62de22f2edda159f67c86807d85e577690ed26559e0f78df1
+size 132632
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_3.ogg.bak b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_3.ogg.bak
new file mode 100644
index 00000000..0784fca0
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_3.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_4.ogg b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_4.ogg
new file mode 100644
index 00000000..5e560b05
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:89ef965a4bc7867f431ed46da33330f30bdfd0ac8e1ca9f4c2b43817c4dd2802
+size 170754
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_4.ogg.bak b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_4.ogg.bak
new file mode 100644
index 00000000..d1d03a1d
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_4.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_5.ogg b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_5.ogg
new file mode 100644
index 00000000..9b638749
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_5.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:250fc2a134dd27e70dd108e3c9683272e54238a8f355ee55569e415fddc3c904
+size 148307
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_5.ogg.bak b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_5.ogg.bak
new file mode 100644
index 00000000..aded6418
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_5.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_6.ogg b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_6.ogg
new file mode 100644
index 00000000..181ddc66
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_6.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c8bd73cd0a9d104f7064d887ca6c95d115917952d30d6d1607c13562b3064240
+size 135724
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_6.ogg.bak b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_6.ogg.bak
new file mode 100644
index 00000000..86abeb8e
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_6.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_7.ogg b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_7.ogg
new file mode 100644
index 00000000..0870e94f
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_7.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8c8029d356474aa46f433a19fc207161d0af13dc89086b06838c8271496cca35
+size 187059
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_7.ogg.bak b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_7.ogg.bak
new file mode 100644
index 00000000..33aa4527
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_7.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_8.ogg b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_8.ogg
new file mode 100644
index 00000000..631b57e5
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_8.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:93e26476689b0406c33eed7e3646d06117b9dd8149272a1988fdcae8907f00c3
+size 146440
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_8.ogg.bak b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_8.ogg.bak
new file mode 100644
index 00000000..f823937c
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_8.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_9.ogg b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_9.ogg
new file mode 100644
index 00000000..fbaf4b2a
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_9.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:525bfb00329113351a279b9b54c2af46dcb529991d48169638335fff60b06036
+size 143766
diff --git a/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_9.ogg.bak b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_9.ogg.bak
new file mode 100644
index 00000000..d1051353
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/characters_voice/scenario/sarcofag/monolith_call_9.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/detectors/geiger_1.ogg b/mods/Arrival/gamedata/sounds/detectors/geiger_1.ogg
new file mode 100644
index 00000000..01f080ca
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/detectors/geiger_1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7045b4d00ab9f0bda749d14837446dc189dd8cad0cd9a19155f5a4fb30ba4e2f
+size 7940
diff --git a/mods/Arrival/gamedata/sounds/detectors/geiger_2.ogg b/mods/Arrival/gamedata/sounds/detectors/geiger_2.ogg
new file mode 100644
index 00000000..339b8ac9
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/detectors/geiger_2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8c92bd5624fc1877858e9c0f551579c01d8b9dfb5221f6afd9f06f32d8582d78
+size 13344
diff --git a/mods/Arrival/gamedata/sounds/detectors/geiger_3.ogg b/mods/Arrival/gamedata/sounds/detectors/geiger_3.ogg
new file mode 100644
index 00000000..ecedd7e3
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/detectors/geiger_3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:37999132b9396dbab72541d032883bbc5c56d0c0d5ac9b16c425a82ff0b7d6a5
+size 33862
diff --git a/mods/Arrival/gamedata/sounds/detectors/geiger_4.ogg b/mods/Arrival/gamedata/sounds/detectors/geiger_4.ogg
new file mode 100644
index 00000000..c1b7ef6c
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/detectors/geiger_4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:35ecaac7998c7fe66c3a8426df6d16d0a28dd6fb4fc4a57794b754d9e5f665ef
+size 30937
diff --git a/mods/Arrival/gamedata/sounds/detectors/geiger_5.ogg b/mods/Arrival/gamedata/sounds/detectors/geiger_5.ogg
new file mode 100644
index 00000000..574192f4
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/detectors/geiger_5.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e602aae9e4fde91dfddea14653265a7ffb125ee682734344992d20e3e967f08b
+size 16961
diff --git a/mods/Arrival/gamedata/sounds/detectors/geiger_6.ogg b/mods/Arrival/gamedata/sounds/detectors/geiger_6.ogg
new file mode 100644
index 00000000..ecedd7e3
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/detectors/geiger_6.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:37999132b9396dbab72541d032883bbc5c56d0c0d5ac9b16c425a82ff0b7d6a5
+size 33862
diff --git a/mods/Arrival/gamedata/sounds/detectors/geiger_7.ogg b/mods/Arrival/gamedata/sounds/detectors/geiger_7.ogg
new file mode 100644
index 00000000..574192f4
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/detectors/geiger_7.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e602aae9e4fde91dfddea14653265a7ffb125ee682734344992d20e3e967f08b
+size 16961
diff --git a/mods/Arrival/gamedata/sounds/detectors/geiger_8.ogg b/mods/Arrival/gamedata/sounds/detectors/geiger_8.ogg
new file mode 100644
index 00000000..339b8ac9
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/detectors/geiger_8.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8c92bd5624fc1877858e9c0f551579c01d8b9dfb5221f6afd9f06f32d8582d78
+size 13344
diff --git a/mods/Arrival/gamedata/sounds/drx_da/drx_da_anomaly_gravy_hit.ogg b/mods/Arrival/gamedata/sounds/drx_da/drx_da_anomaly_gravy_hit.ogg
new file mode 100644
index 00000000..6d4eaafa
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/drx_da/drx_da_anomaly_gravy_hit.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cd2d0b650f3144aad08f427fd3d2ddf817183fcce1078dc1bbd82f5af0c3633a
+size 15193
diff --git a/mods/Arrival/gamedata/sounds/drx_da/drx_da_anomaly_gravy_hit1.ogg b/mods/Arrival/gamedata/sounds/drx_da/drx_da_anomaly_gravy_hit1.ogg
new file mode 100644
index 00000000..2ca903ad
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/drx_da/drx_da_anomaly_gravy_hit1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9331024e2133c167a14f5a59857c92ecbe7c8680e8cefe4b54e05dacee31ff11
+size 30509
diff --git a/mods/Arrival/gamedata/sounds/drx_da/drx_da_anomaly_gravy_idle.ogg b/mods/Arrival/gamedata/sounds/drx_da/drx_da_anomaly_gravy_idle.ogg
new file mode 100644
index 00000000..3fb4920d
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/drx_da/drx_da_anomaly_gravy_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:07e028c7e0d377877b2e218cf4475eb4b010786b44a18c5cc81d5cbab0e03872
+size 8520
diff --git a/mods/Arrival/gamedata/sounds/drx_da/drx_da_buzz_hit.ogg b/mods/Arrival/gamedata/sounds/drx_da/drx_da_buzz_hit.ogg
new file mode 100644
index 00000000..d4cbedd1
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/drx_da/drx_da_buzz_hit.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4a6aae704e86119d3b695cee4a7c5ac7765fae902e41e0bf89a5bea766b1dcf2
+size 25722
diff --git a/mods/Arrival/gamedata/sounds/drx_da/drx_da_buzz_idle.ogg b/mods/Arrival/gamedata/sounds/drx_da/drx_da_buzz_idle.ogg
new file mode 100644
index 00000000..c2ea177e
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/drx_da/drx_da_buzz_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e3269f0dc72f371f03444ce39b3f4baa9a974340ce48d365837635892546db0b
+size 79845
diff --git a/mods/Arrival/gamedata/sounds/drx_da/drx_da_electra_hit.ogg b/mods/Arrival/gamedata/sounds/drx_da/drx_da_electra_hit.ogg
new file mode 100644
index 00000000..e19cb4b3
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/drx_da/drx_da_electra_hit.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9b79e004a4f394addad3ae0a393c4d6eb51f82687e666c24a51a692e517e1db1
+size 8583
diff --git a/mods/Arrival/gamedata/sounds/drx_da/drx_da_electra_idle1.ogg b/mods/Arrival/gamedata/sounds/drx_da/drx_da_electra_idle1.ogg
new file mode 100644
index 00000000..c8d95baf
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/drx_da/drx_da_electra_idle1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8363430a076515db75dab101bed943ba703ad8e32f23b5a4752fe32e548d0412
+size 99015
diff --git a/mods/Arrival/gamedata/sounds/drx_da/drx_da_fire_idle.ogg b/mods/Arrival/gamedata/sounds/drx_da/drx_da_fire_idle.ogg
new file mode 100644
index 00000000..8daa78e0
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/drx_da/drx_da_fire_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6664fc9adc07c5eccd0f90c0ad930558d91526f6402f2b1c77e5e7a767b1d21b
+size 83180
diff --git a/mods/Arrival/gamedata/sounds/drx_da/drx_da_gravi_idle00.ogg b/mods/Arrival/gamedata/sounds/drx_da/drx_da_gravi_idle00.ogg
new file mode 100644
index 00000000..ecdc6da0
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/drx_da/drx_da_gravi_idle00.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ea0b7001d3b466eb4b0d29cfa1f50310f6ccaa836430f6a385cbc95f6c0a78c1
+size 44416
diff --git a/mods/Arrival/gamedata/sounds/drx_da/drx_da_gravi_idle01.ogg b/mods/Arrival/gamedata/sounds/drx_da/drx_da_gravi_idle01.ogg
new file mode 100644
index 00000000..3e08ae28
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/drx_da/drx_da_gravi_idle01.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e227841172baedd7300f372585631fe91fab614bc6ee26a68712016b6757068a
+size 110107
diff --git a/mods/Arrival/gamedata/sounds/drx_da/drx_da_gravi_rumble1.ogg b/mods/Arrival/gamedata/sounds/drx_da/drx_da_gravi_rumble1.ogg
new file mode 100644
index 00000000..3e2a3e8b
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/drx_da/drx_da_gravi_rumble1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b98bf5949044311f8c922e5f18c825591a67fef4fe925b4f7c93e8f8f014a045
+size 11727
diff --git a/mods/Arrival/gamedata/sounds/drx_da/drx_da_gravity_entrance.ogg b/mods/Arrival/gamedata/sounds/drx_da/drx_da_gravity_entrance.ogg
new file mode 100644
index 00000000..50389cff
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/drx_da/drx_da_gravity_entrance.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:285680dda2703e0cffadcddc11de622d4d43acfb95758773de1f8a0eb3809acc
+size 32215
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/acidic/acidic_hit.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/acidic/acidic_hit.ogg
new file mode 100644
index 00000000..d4cbedd1
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/acidic/acidic_hit.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4a6aae704e86119d3b695cee4a7c5ac7765fae902e41e0bf89a5bea766b1dcf2
+size 25722
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/acidic/acidic_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/acidic/acidic_idle.ogg
new file mode 100644
index 00000000..f7d977e9
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/acidic/acidic_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:31d06288ea3040ad906302315858acffbdb8c855afc82a8990191b18e024c1fe
+size 674610
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/acidic/acidic_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/acidic/acidic_idle.ogg.bak
new file mode 100644
index 00000000..c1ccaf0c
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/acidic/acidic_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/cdf/cdf_blowout.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/cdf/cdf_blowout.ogg
new file mode 100644
index 00000000..2df4e420
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/cdf/cdf_blowout.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8ef31a05e89139992756e6172bd7f2a10245c0b50e0d7a0378ed0d56aee6c6bf
+size 87917
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/cdf/cdf_blowout.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/cdf/cdf_blowout.ogg.bak
new file mode 100644
index 00000000..769e651e
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/cdf/cdf_blowout.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/cdf/cdf_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/cdf/cdf_idle.ogg
new file mode 100644
index 00000000..48fc5e8d
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/cdf/cdf_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:688adbb4001214fd670f6374c2bedcc622541b9fac4aa1cd4b860f8cbe399992
+size 558467
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/cdf/cdf_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/cdf/cdf_idle.ogg.bak
new file mode 100644
index 00000000..c09b6175
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/cdf/cdf_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/electra/electra_blowout.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/electra/electra_blowout.ogg
new file mode 100644
index 00000000..3b68417e
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/electra/electra_blowout.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:91b7b82a56b3a0f0c7350c378214e30a6850b507b6e8eebfbd7de928ff3dd49e
+size 45645
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/electra/electra_hit.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/electra/electra_hit.ogg
new file mode 100644
index 00000000..238bb9cd
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/electra/electra_hit.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:88346a6c2a8a650908620f2d953c13fdd48755d12bb57a1939bc0595c788cf46
+size 35393
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/electra/electra_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/electra/electra_idle.ogg
new file mode 100644
index 00000000..f1c6f2e0
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/electra/electra_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c464f841c60c9233e5ddb94a1e999edd094837e5158d8ca4dd301163d475e3da
+size 39378
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/flash/flash_blowout.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/flash/flash_blowout.ogg
new file mode 100644
index 00000000..7c3b9378
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/flash/flash_blowout.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:38a4da9183a27058a33d1ffc937843a17768ee41a3e3a89e9371cf6c903ddfeb
+size 37381
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/flash/flash_blowout.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/flash/flash_blowout.ogg.bak
new file mode 100644
index 00000000..1dde6b8f
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/flash/flash_blowout.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/flash/flash_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/flash/flash_idle.ogg
new file mode 100644
index 00000000..40fab6fc
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/flash/flash_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:88e0c7123f5779b0fc0e7130a6dd3b0fa24c1baf309a7b089c8a404aca291a5c
+size 985572
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/flash/flash_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/flash/flash_idle.ogg.bak
new file mode 100644
index 00000000..696cf56e
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/flash/flash_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/flash/flash_shield.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/flash/flash_shield.ogg
new file mode 100644
index 00000000..93bc6968
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/flash/flash_shield.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9ef7c3c59bfbda1297f5da5d00e49145e54a5514df8db78cd1d80998c7725557
+size 28359
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/flash/flash_shield.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/flash/flash_shield.ogg.bak
new file mode 100644
index 00000000..fbdffda2
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/flash/flash_shield.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/generators/generators_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/generators/generators_idle.ogg
new file mode 100644
index 00000000..e2ca5027
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/generators/generators_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d45dda274902eedcfe387a951a185adf53854d06b1fd523e40d7b1fdf2191588
+size 1270868
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/generators/generators_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/generators/generators_idle.ogg.bak
new file mode 100644
index 00000000..f0b1cc15
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/generators/generators_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/generators/noos_tunnel_1.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/generators/noos_tunnel_1.ogg
new file mode 100644
index 00000000..10d560e9
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/generators/noos_tunnel_1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb631fb7a18f73a877e050a1915468e73aecb4d674b97d9a2d73defb5ede2a28
+size 35968
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/generators/old/generators_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/generators/old/generators_idle.ogg
new file mode 100644
index 00000000..cd604c8e
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/generators/old/generators_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:edfb74296170ffec29de0a11839142e742541dfc5cd46b64dd3d728b920ed103
+size 637324
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/generators/old/generators_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/generators/old/generators_idle.ogg.bak
new file mode 100644
index 00000000..ce8cf136
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/generators/old/generators_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/ghost.7z b/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/ghost.7z
new file mode 100644
index 00000000..c75e393d
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/ghost.7z differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/ghost_blowout.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/ghost_blowout.ogg
new file mode 100644
index 00000000..a59f106d
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/ghost_blowout.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a3bd459403cfcf7528a5a261183cbdee54e33011cc75bdd8cdf5a9ad0488ec3a
+size 106771
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/ghost_blowout.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/ghost_blowout.ogg.bak
new file mode 100644
index 00000000..e2cfee3c
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/ghost_blowout.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/ghost_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/ghost_idle.ogg
new file mode 100644
index 00000000..94e41855
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/ghost_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:13a807ce96fa943fdeaf2c253d1839471ce44246059be6de3d80b3dcf3278543
+size 539133
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/ghost_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/ghost_idle.ogg.bak
new file mode 100644
index 00000000..6a7303a5
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/ghost_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/v3/ghost_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/v3/ghost_idle.ogg
new file mode 100644
index 00000000..a4a9150e
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/v3/ghost_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:86efcf86a97fb6c55473a7028b5c36bd76f6ca02767cff1368a40968f6bceb76
+size 537303
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/v3/ghost_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/v3/ghost_idle.ogg.bak
new file mode 100644
index 00000000..3abf91ef
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/v3/ghost_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/v4/ghost_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/v4/ghost_idle.ogg
new file mode 100644
index 00000000..94e41855
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/v4/ghost_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:13a807ce96fa943fdeaf2c253d1839471ce44246059be6de3d80b3dcf3278543
+size 539133
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/v4/ghost_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/v4/ghost_idle.ogg.bak
new file mode 100644
index 00000000..fbae7542
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/ghost/v4/ghost_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/gold/gold_blowout.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/gold/gold_blowout.ogg
new file mode 100644
index 00000000..d25933e7
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/gold/gold_blowout.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1829d477a6d89b31871a013df992f20c33780ed0a22477d37ea702e45606ce56
+size 43902
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/gold/gold_blowout.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/gold/gold_blowout.ogg.bak
new file mode 100644
index 00000000..1dd64e9b
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/gold/gold_blowout.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/gold/gold_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/gold/gold_idle.ogg
new file mode 100644
index 00000000..512611a9
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/gold/gold_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:37d52be827506e9d7a629dbe2f48199f3cbb51ccda55611d454945915ece10da
+size 33439
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational/gravitational_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational/gravitational_idle.ogg
new file mode 100644
index 00000000..6296a4b9
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational/gravitational_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ac5885b6e45ae27ea6b7f484a9611b0f737dd25638e44cc208902ab332cc2bfd
+size 329894
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational/gravitational_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational/gravitational_idle.ogg.bak
new file mode 100644
index 00000000..b4ab5b7e
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational/gravitational_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_average/gravitational_average_blowout.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_average/gravitational_average_blowout.ogg
new file mode 100644
index 00000000..43d3e70c
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_average/gravitational_average_blowout.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:21add36aae03fe1c830f8f932d7487fff9a2dd4b218515d82d67987212532578
+size 83496
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_average/gravitational_average_blowout.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_average/gravitational_average_blowout.ogg.bak
new file mode 100644
index 00000000..862a361e
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_average/gravitational_average_blowout.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_average/gravitational_average_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_average/gravitational_average_idle.ogg
new file mode 100644
index 00000000..6d0f3cec
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_average/gravitational_average_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e822ebb97c959037a7f4406117b9ba339651660c6a540c3e9333faa63c9dec2e
+size 206414
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_average/gravitational_average_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_average/gravitational_average_idle.ogg.bak
new file mode 100644
index 00000000..0849fee4
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_average/gravitational_average_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_strong/gravitational_strong_blowout.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_strong/gravitational_strong_blowout.ogg
new file mode 100644
index 00000000..c9d74604
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_strong/gravitational_strong_blowout.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:76c8c5a271e091e5574a985b0c7dd0c3ce8ec3d5c8621c5ae39b9bd5978bcd26
+size 191075
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_strong/gravitational_strong_blowout.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_strong/gravitational_strong_blowout.ogg.bak
new file mode 100644
index 00000000..efad179c
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_strong/gravitational_strong_blowout.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_strong/gravitational_strong_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_strong/gravitational_strong_idle.ogg
new file mode 100644
index 00000000..749cde70
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_strong/gravitational_strong_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f5ed09446dcd9e0f12e9e40a9d0fe92d6b646b682ff521f187a6a3d3c2159232
+size 205819
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_strong/gravitational_strong_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_strong/gravitational_strong_idle.ogg.bak
new file mode 100644
index 00000000..f1b11827
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_strong/gravitational_strong_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_strong/gravitational_strong_shield.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_strong/gravitational_strong_shield.ogg
new file mode 100644
index 00000000..bb6ed2dc
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_strong/gravitational_strong_shield.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:98992cfec06751601813be5821ef62e99278552cd5b4b69da58b4991c4b7e4c7
+size 26483
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_strong/gravitational_strong_shield.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_strong/gravitational_strong_shield.ogg.bak
new file mode 100644
index 00000000..ef73183b
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/gravitational_strong/gravitational_strong_shield.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/mefistotel/mefistotel_blowout.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/mefistotel/mefistotel_blowout.ogg
new file mode 100644
index 00000000..bf2b62ae
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/mefistotel/mefistotel_blowout.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:da92874d4fc75f2e561dfc11c4382394426149c29751bbeee51ddb6ea4ae3d2e
+size 75897
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/mefistotel/mefistotel_blowout.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/mefistotel/mefistotel_blowout.ogg.bak
new file mode 100644
index 00000000..10faaf41
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/mefistotel/mefistotel_blowout.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/mefistotel/mefistotel_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/mefistotel/mefistotel_idle.ogg
new file mode 100644
index 00000000..9f42e983
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/mefistotel/mefistotel_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2818f7ed9e02647bf058e76c04e32ebfcaec7b1a26e6ea5332b200788a68e847
+size 471007
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/mefistotel/mefistotel_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/mefistotel/mefistotel_idle.ogg.bak
new file mode 100644
index 00000000..6f4247ef
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/mefistotel/mefistotel_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/mefistotel/mefistotel_shield.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/mefistotel/mefistotel_shield.ogg
new file mode 100644
index 00000000..bb6ed2dc
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/mefistotel/mefistotel_shield.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:98992cfec06751601813be5821ef62e99278552cd5b4b69da58b4991c4b7e4c7
+size 26483
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/mefistotel/mefistotel_shield.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/mefistotel/mefistotel_shield.ogg.bak
new file mode 100644
index 00000000..ef73183b
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/mefistotel/mefistotel_shield.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/net/net_blowout.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/net/net_blowout.ogg
new file mode 100644
index 00000000..a2d2504c
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/net/net_blowout.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:53cfbb98ca11f162e85e2ae61fac30ff377ed6373e58cd5bc46bf86cd0f33302
+size 88395
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/net/net_blowout.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/net/net_blowout.ogg.bak
new file mode 100644
index 00000000..e8504db4
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/net/net_blowout.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/net/net_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/net/net_idle.ogg
new file mode 100644
index 00000000..206d6ea5
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/net/net_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:94641017eca0fc578a72fa3779077296048e4ff942cc1c4a8acb49462cef4297
+size 500265
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/net/net_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/net/net_idle.ogg.bak
new file mode 100644
index 00000000..bd40e3d9
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/net/net_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/net/net_shield.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/net/net_shield.ogg
new file mode 100644
index 00000000..09c6e795
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/net/net_shield.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2b12d1255934fdad01d2089e59ee4a4be25543877d4cfbf88417eb47da82f248
+size 60879
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/net/net_shield.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/net/net_shield.ogg.bak
new file mode 100644
index 00000000..5f825b05
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/net/net_shield.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/point/point_blowout.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/point/point_blowout.ogg
new file mode 100644
index 00000000..152176c5
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/point/point_blowout.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d9041038b1d0c5ff57f1b622b30542aed7dd5a6832a2f6e38dbd0206394f761e
+size 39700
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/point/point_blowout.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/point/point_blowout.ogg.bak
new file mode 100644
index 00000000..431715ca
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/point/point_blowout.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/point/point_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/point/point_idle.ogg
new file mode 100644
index 00000000..355b749b
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/point/point_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ac6cb92ff981344bc7cb3b6487bc7b2e59faaff0d8432f0e60906afa9b5f2a42
+size 364025
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/point/point_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/point/point_idle.ogg.bak
new file mode 100644
index 00000000..408ea55a
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/point/point_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/seed/seed_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/seed/seed_idle.ogg
new file mode 100644
index 00000000..a4579189
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/seed/seed_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:10e89794333724f7d0700df9f81466b4b59640cc196b5e0c16480521ec326560
+size 740682
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/seed/seed_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/seed/seed_idle.ogg.bak
new file mode 100644
index 00000000..b0a87a96
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/seed/seed_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/seed/v2/seed_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/seed/v2/seed_idle.ogg
new file mode 100644
index 00000000..4b41aec8
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/seed/v2/seed_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e3b265cf9d2d77d641cc9380ea607afcfba081e88fce0c9e25f704a2f5cb4c1b
+size 742017
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/seed/v2/seed_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/seed/v2/seed_idle.ogg.bak
new file mode 100644
index 00000000..b0a87a96
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/seed/v2/seed_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/shatterpoint/old/shatterpoint_blowout.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/shatterpoint/old/shatterpoint_blowout.ogg
new file mode 100644
index 00000000..b10c4db8
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/shatterpoint/old/shatterpoint_blowout.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:84c4282ae79267520e95b96897b4f7ee1ec48bb41744936bcf344b1e59ec12c1
+size 446898
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/shatterpoint/old/shatterpoint_blowout.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/shatterpoint/old/shatterpoint_blowout.ogg.bak
new file mode 100644
index 00000000..f2277166
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/shatterpoint/old/shatterpoint_blowout.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/shatterpoint/shatterpoint_blowout.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/shatterpoint/shatterpoint_blowout.ogg
new file mode 100644
index 00000000..70c8abff
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/shatterpoint/shatterpoint_blowout.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:123c01197057aad450d02f55129dcde5dd69bd462e8a16e5d41e98fd6917f2d3
+size 463406
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/shatterpoint/shatterpoint_blowout.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/shatterpoint/shatterpoint_blowout.ogg.bak
new file mode 100644
index 00000000..358d6dfd
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/shatterpoint/shatterpoint_blowout.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/shatterpoint/shatterpoint_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/shatterpoint/shatterpoint_idle.ogg
new file mode 100644
index 00000000..b9f1b76f
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/shatterpoint/shatterpoint_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b013a6a3a3cf0ff8b63343f42f68172559d6634e72c8e01af8e1ab459dbcb98b
+size 671522
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/shatterpoint/shatterpoint_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/shatterpoint/shatterpoint_idle.ogg.bak
new file mode 100644
index 00000000..8261d96d
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/shatterpoint/shatterpoint_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/silence.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/silence.ogg
new file mode 100644
index 00000000..25f361eb
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/silence.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8ab853c4ecf69141a3401e895eaa9ecdecd3a8615ae1c62fb29e3c2383269e26
+size 3579
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/sloth/sloth_blowout.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/sloth/sloth_blowout.ogg
new file mode 100644
index 00000000..9374dde2
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/sloth/sloth_blowout.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:05f513b2cb554277c290f3981e8406b5401f8eae30aafa76a4b47ed9786d2de1
+size 33077
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/sloth/sloth_blowout.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/sloth/sloth_blowout.ogg.bak
new file mode 100644
index 00000000..df48ecb4
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/sloth/sloth_blowout.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/sloth/sloth_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/sloth/sloth_idle.ogg
new file mode 100644
index 00000000..6b93f309
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/sloth/sloth_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6dc91ad02ce8338fb9c6451a54efe944da85b8bfb3cc9773d6bc3bfde8f44bd9
+size 540881
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/sloth/sloth_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/sloth/sloth_idle.ogg.bak
new file mode 100644
index 00000000..995b9f6e
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/sloth/sloth_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/sphere/sphere_blowout.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/sphere/sphere_blowout.ogg
new file mode 100644
index 00000000..43a3dab2
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/sphere/sphere_blowout.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2d1e5c732f57a7d828ae40a07cf21a8777669fd01c7802fa7bcde5c0ba6b5feb
+size 23986
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/sphere/sphere_blowout.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/sphere/sphere_blowout.ogg.bak
new file mode 100644
index 00000000..3e9a8821
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/sphere/sphere_blowout.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/sphere/sphere_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/sphere/sphere_idle.ogg
new file mode 100644
index 00000000..d253297e
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/sphere/sphere_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b31bfb7aad13b7d13af051e2c90e8c3ce9c48a1d752f83a125d15c561147ffe7
+size 522641
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/sphere/sphere_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/sphere/sphere_idle.ogg.bak
new file mode 100644
index 00000000..9f9b2846
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/sphere/sphere_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/sphere/sphere_idle_og.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/sphere/sphere_idle_og.ogg
new file mode 100644
index 00000000..5e96b0f0
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/sphere/sphere_idle_og.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e775a45fe4e0e291cd1326af2bce54301805d93bfc40aa0004cdaf99e733485f
+size 522269
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/sphere/sphere_idle_og.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/sphere/sphere_idle_og.ogg.bak
new file mode 100644
index 00000000..cd7ca560
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/sphere/sphere_idle_og.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/springboard/springboard_blowout.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/springboard/springboard_blowout.ogg
new file mode 100644
index 00000000..8d935e82
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/springboard/springboard_blowout.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2c15c6d2ee08cdf619c762d23a550c96d5828bbdf11d599d10dfaee786736945
+size 70060
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/springboard/springboard_blowout.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/springboard/springboard_blowout.ogg.bak
new file mode 100644
index 00000000..bcfed242
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/springboard/springboard_blowout.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/springboard/springboard_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/springboard/springboard_idle.ogg
new file mode 100644
index 00000000..19f85470
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/springboard/springboard_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9663ad6c84e2d797d67bd31d6ed3e2e470e47215f85ce5105bc696bd653630c8
+size 360595
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/springboard/springboard_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/springboard/springboard_idle.ogg.bak
new file mode 100644
index 00000000..cc5c2e2f
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/springboard/springboard_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/springboard/springboard_shield.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/springboard/springboard_shield.ogg
new file mode 100644
index 00000000..bb6ed2dc
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/springboard/springboard_shield.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:98992cfec06751601813be5821ef62e99278552cd5b4b69da58b4991c4b7e4c7
+size 26483
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/springboard/springboard_shield.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/springboard/springboard_shield.ogg.bak
new file mode 100644
index 00000000..ef73183b
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/springboard/springboard_shield.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/thorn/thorn_blowout.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/thorn/thorn_blowout.ogg
new file mode 100644
index 00000000..3d458af4
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/thorn/thorn_blowout.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a6605031c1fc1c83f04797d1bffd9e8563c4824199e27585e9c2903258c2b791
+size 148591
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/thorn/thorn_blowout.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/thorn/thorn_blowout.ogg.bak
new file mode 100644
index 00000000..46366625
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/thorn/thorn_blowout.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/thorn/versions/1/thorn_blowout.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/thorn/versions/1/thorn_blowout.ogg
new file mode 100644
index 00000000..4ce3aaf7
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/thorn/versions/1/thorn_blowout.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ffbb5a2c1f0db4881d699e29e9adab4f600e25ed458e095ca2698ce6ac32b1d4
+size 136184
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/thorn/versions/1/thorn_blowout.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/thorn/versions/1/thorn_blowout.ogg.bak
new file mode 100644
index 00000000..c8e1c0aa
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/thorn/versions/1/thorn_blowout.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/thorn/versions/2/thorn_blowout.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/thorn/versions/2/thorn_blowout.ogg
new file mode 100644
index 00000000..e40273d6
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/thorn/versions/2/thorn_blowout.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2678eccb087cef2a149d1f797446e631b47c574152f48a44b1645b9235186bb7
+size 181195
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/thorn/versions/2/thorn_blowout.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/thorn/versions/2/thorn_blowout.ogg.bak
new file mode 100644
index 00000000..2fe9a2d1
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/thorn/versions/2/thorn_blowout.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/umbra/umbra_idle.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/umbra/umbra_idle.ogg
new file mode 100644
index 00000000..f70eff16
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/umbra/umbra_idle.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fd9c6214ee24fda4588c9b3613fa8cc4ea20b5714721f0913a2e331113547e56
+size 360204
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/umbra/umbra_idle.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/umbra/umbra_idle.ogg.bak
new file mode 100644
index 00000000..13020d48
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/umbra/umbra_idle.ogg.bak differ
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/zharka/zharka_blowout.ogg b/mods/Arrival/gamedata/sounds/semitone/anomalies/zharka/zharka_blowout.ogg
new file mode 100644
index 00000000..59c0ba0b
--- /dev/null
+++ b/mods/Arrival/gamedata/sounds/semitone/anomalies/zharka/zharka_blowout.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6de23620056bd98c96c231c8e5be997a82a255fd1d012c1a45a536bf66277f56
+size 173829
diff --git a/mods/Arrival/gamedata/sounds/semitone/anomalies/zharka/zharka_blowout.ogg.bak b/mods/Arrival/gamedata/sounds/semitone/anomalies/zharka/zharka_blowout.ogg.bak
new file mode 100644
index 00000000..a2e9c74d
Binary files /dev/null and b/mods/Arrival/gamedata/sounds/semitone/anomalies/zharka/zharka_blowout.ogg.bak differ
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_baloon.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_baloon.dds
new file mode 100644
index 00000000..edb0bbda
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_baloon.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:adec83bbba893b1cbd79fb4a536f2fb9ada70abbb7f9c6c826e932f03be34a79
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_baloon.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_baloon.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_baloon.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_beam.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_beam.dds
new file mode 100644
index 00000000..88a22dbb
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_beam.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:57c274238652a06db31ec515f45fe5328e13bb4077ab878aade927ef926a7f92
+size 699216
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_beam.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_beam.thm
new file mode 100644
index 00000000..c1291a52
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_beam.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c35756f6790267687d09c1b1863b43376f7c7ae834f7000b22b821696ae7e475
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_bluefire.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_bluefire.dds
new file mode 100644
index 00000000..b371debb
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_bluefire.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d51734c9ea30822a3b97f0e2f10f8f6ffb21a4f5733ccd768aca28afc95a5d1f
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_bluefire.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_bluefire.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_bluefire.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_crystal.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_crystal.dds
new file mode 100644
index 00000000..16765079
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_crystal.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b76dead58c254baa225df7444f6480c3ea81353ca5257935fe6e361e80b671ba
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_crystal.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_crystal.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_crystal.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_dirt.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_dirt.dds
new file mode 100644
index 00000000..a9821385
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_dirt.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fca98e2c4dcf91aed22d5f905c010d4e13964a7f288c36e84d8aa854e84515fb
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_dirt.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_dirt.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_dirt.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_eye.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_eye.dds
new file mode 100644
index 00000000..a0d07af3
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_eye.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9a8680fb36b97b816e34a33a4076cbc6a6894ab2f0b910364bffe11deb6d07df
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_eye.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_eye.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_eye.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_eye_sopli.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_eye_sopli.dds
new file mode 100644
index 00000000..bee815b9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_eye_sopli.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:00b632149902ddc0fb7cbb6b7f381e229f6c88fd2ac22e15dd2fb1aeac0683b5
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_eye_sopli.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_eye_sopli.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_eye_sopli.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_glow1.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_glow1.dds
new file mode 100644
index 00000000..f846e049
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_glow1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f8d306c2c40ce3c7da6b88a52faa5ec9ed80c2e2ea468f35d7fe8ae8cd4ac573
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_glow1.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_glow1.thm
new file mode 100644
index 00000000..fd1a6008
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_glow1.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1ee16bc401ee05f50920f8d56eb5405503d51090b8d8b69834163ce68b0d624a
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_glow2.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_glow2.dds
new file mode 100644
index 00000000..84734fd9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_glow2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c5635767604341aeaf3a4bfb49dc51e2d5d2ae82d2e74d2617eb7ec4d3c0aeb2
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_glow2.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_glow2.thm
new file mode 100644
index 00000000..fd1a6008
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_glow2.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1ee16bc401ee05f50920f8d56eb5405503d51090b8d8b69834163ce68b0d624a
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_gold.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_gold.dds
new file mode 100644
index 00000000..9cd16951
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_gold.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1618d4cc8bb0bee8f5f640d785f5e83fa48945b91db4349fa2b39994912b5646
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_gold.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_gold.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_gold.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_hell.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_hell.dds
new file mode 100644
index 00000000..fea9eb29
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_hell.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8e630b41ccdedb18ece26d893712be2638fb83326595b7eeb5b9618b951e35f2
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_hell.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_hell.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_hell.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_lava.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_lava.dds
new file mode 100644
index 00000000..0c2bec07
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_lava.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9085012b4b6bedae77b276d1096a8eca58ef26aa6c8927adee2b959d2f983766
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_lava.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_lava.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_lava.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_lavahell.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_lavahell.dds
new file mode 100644
index 00000000..423a7c17
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_lavahell.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:aafdaec6d5b7bc8a7206962a56ebd7412c35132d586c4e2b65dfac12d9ec0844
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_lavahell.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_lavahell.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_lavahell.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_magnit.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_magnit.dds
new file mode 100644
index 00000000..c3adcad6
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_magnit.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:85850e729b5db9570a8b22012864e670bb07e9b64615284e1da546169c834324
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_magnit.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_magnit.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_magnit.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_mincer.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_mincer.dds
new file mode 100644
index 00000000..6fd87671
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_mincer.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e7b3baea5d21ebe03a05b0aabf07acadfcdbfe65a2d7965d9b49b7058897df07
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_mincer.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_mincer.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_mincer.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_moon.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_moon.dds
new file mode 100644
index 00000000..4bde0d64
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_moon.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:897032f008d51a3e7d26d9300ee7cf9d02661e122d697e735f27201d73e05657
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_moon.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_moon.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_moon.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_mount.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_mount.dds
new file mode 100644
index 00000000..64dccce4
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_mount.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:86988312d7eda6303b687b90b8e37923edfc5dbc4329eae82059d20af1a68085
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_mount.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_mount.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_mount.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_nr.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_nr.dds
new file mode 100644
index 00000000..da406775
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_nr.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dc5b981fe0ba967bea9deb2fea744c9c0226b425f962e75209617d2c7eb1185c
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_nr.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_nr.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_nr.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_rock.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_rock.dds
new file mode 100644
index 00000000..0cb018d8
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_rock.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7a5fa6a54ff5d4d4d7e60f67823da7a987d1298ebfc7f0f8430670386541530b
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_rock.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_rock.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_rock.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_rock1.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_rock1.dds
new file mode 100644
index 00000000..e581f708
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_rock1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4a1e5965546c8302a51d8d891dc86936e80a9019a41b53af53d8f3669ce5e538
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_rock1.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_rock1.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_rock1.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_rust.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_rust.dds
new file mode 100644
index 00000000..8816ba32
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_rust.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:93da5728694e785017fd430df64655ed7f9d8bf2c003d86e7218a68c808f8d62
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_rust.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_rust.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_rust.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_sea.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_sea.dds
new file mode 100644
index 00000000..402ccc37
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_sea.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9e30a06cc2f0fd76f62cc39957c0fb85d10f9e00a6667a5a2e6c909936288596
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_sea.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_sea.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_sea.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_skin.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_skin.dds
new file mode 100644
index 00000000..b1a3fd56
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_skin.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:991773a8e995e0cff176c08e497787a440ad1d7d7866965bbf37710d8c9c2f3f
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_skin.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_skin.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_skin.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_snowflake.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_snowflake.dds
new file mode 100644
index 00000000..3c65d74f
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_snowflake.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d51d0c53ceeaf6b5ee9545066d463a68610e03e98010ab742926ad0bdf2c2ae9
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_snowflake.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_snowflake.thm
new file mode 100644
index 00000000..15267f78
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_snowflake.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:808be40cd5ae3e4fd71c9242ce61edbf84a91172f2ef5adbbdec8511b96334d5
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli.dds
new file mode 100644
index 00000000..ce617528
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:33b8f1dcc35fea12f9b452c6554f601c2e538be0c212f592e870c2d237019764
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli.thm
new file mode 100644
index 00000000..1ef0456b
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:39085a148cc413bd80f35222904819ed6ba97ea95f44a8c1ac2d00d477c0e19e
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli2.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli2.dds
new file mode 100644
index 00000000..65d484ce
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:52b0775ec5adf72c2891fa4c6d5b16dc4a34a5eca04ee6af0591418914802a0a
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli2.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli2.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli2.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli3.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli3.dds
new file mode 100644
index 00000000..92819cb9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli3.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:07dbe07112b7fcf1fb05d0353a8c87e804afa60ef1dfec4fff467fa2fb0ee2ee
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli3.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli3.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli3.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli4.dds b/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli4.dds
new file mode 100644
index 00000000..a3f92061
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli4.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:499162c7683e9053cabba08c73089b5885bf084bef0cf7c98617b2334e97f6ed
+size 699192
diff --git a/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli4.thm b/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli4.thm
new file mode 100644
index 00000000..e578b64c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/artifact/artifact_loner_sopli4.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4faf22f5bbfcb2fec053529a974252718f67540ec1c917285904314a84a184
+size 138
diff --git a/mods/Arrival/gamedata/textures/banner_zone_mine_cdf.dds b/mods/Arrival/gamedata/textures/banner_zone_mine_cdf.dds
new file mode 100644
index 00000000..140d0e0a
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/banner_zone_mine_cdf.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7b0c5386a23a71f38bd7d1ef32880dc814301ed27ff3c19408307fe09a586284
+size 377984
diff --git a/mods/Arrival/gamedata/textures/banner_zone_mine_flash.dds b/mods/Arrival/gamedata/textures/banner_zone_mine_flash.dds
new file mode 100644
index 00000000..58e87ea7
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/banner_zone_mine_flash.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d47c0663e3cd8aa15df04b006131532a6010a575161e4c8b260aa34dce06a842
+size 377984
diff --git a/mods/Arrival/gamedata/textures/banner_zone_mine_ghost.dds b/mods/Arrival/gamedata/textures/banner_zone_mine_ghost.dds
new file mode 100644
index 00000000..6f598c8d
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/banner_zone_mine_ghost.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:626ba57dc1e33b7ad1e39f4e52966068348190c93f5c2ce16c3761f9f894d319
+size 377984
diff --git a/mods/Arrival/gamedata/textures/banner_zone_mine_gold.dds b/mods/Arrival/gamedata/textures/banner_zone_mine_gold.dds
new file mode 100644
index 00000000..a5723a0f
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/banner_zone_mine_gold.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5dc091d827254f25ca7d79b65d5847d7adc077e38ec834d1a97c0069fb1ee75b
+size 377984
diff --git a/mods/Arrival/gamedata/textures/banner_zone_mine_mefistotel.dds b/mods/Arrival/gamedata/textures/banner_zone_mine_mefistotel.dds
new file mode 100644
index 00000000..74a86ca4
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/banner_zone_mine_mefistotel.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a63afa66b9503f46354be5ac4d8c18fd49170f1fa44bce759951ede82ca88ee1
+size 377984
diff --git a/mods/Arrival/gamedata/textures/banner_zone_mine_net.dds b/mods/Arrival/gamedata/textures/banner_zone_mine_net.dds
new file mode 100644
index 00000000..a8a046f8
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/banner_zone_mine_net.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:200c580dbd26f095aea247ad4db53fcae4f0f5ee89e02a0b8dc7ef51c8a8fe60
+size 377984
diff --git a/mods/Arrival/gamedata/textures/banner_zone_mine_point.dds b/mods/Arrival/gamedata/textures/banner_zone_mine_point.dds
new file mode 100644
index 00000000..3f3ce245
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/banner_zone_mine_point.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:06d48a38d715766eb5c8fb53d0ffaa910d9a1e07af368712a13d840ef0a31912
+size 377984
diff --git a/mods/Arrival/gamedata/textures/banner_zone_mine_seed.dds b/mods/Arrival/gamedata/textures/banner_zone_mine_seed.dds
new file mode 100644
index 00000000..d64190c2
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/banner_zone_mine_seed.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:557d37b4b6deb4a1ef56cf3b05e2d2948704e73b483a9518e9b82a4d498662af
+size 377984
diff --git a/mods/Arrival/gamedata/textures/banner_zone_mine_shatterpoint.dds b/mods/Arrival/gamedata/textures/banner_zone_mine_shatterpoint.dds
new file mode 100644
index 00000000..92d65c93
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/banner_zone_mine_shatterpoint.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a09ddd110aa7f850ef2cd3e94e87a94dd8d179a1604744cf259111c2887fcb7b
+size 377984
diff --git a/mods/Arrival/gamedata/textures/banner_zone_mine_sloth.dds b/mods/Arrival/gamedata/textures/banner_zone_mine_sloth.dds
new file mode 100644
index 00000000..c9a07bfc
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/banner_zone_mine_sloth.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:746c2307a755773783af0036d4d5f25a543bbf7834c86f6c435fda8fc135bfa2
+size 377984
diff --git a/mods/Arrival/gamedata/textures/banner_zone_mine_sphere.dds b/mods/Arrival/gamedata/textures/banner_zone_mine_sphere.dds
new file mode 100644
index 00000000..41804a15
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/banner_zone_mine_sphere.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bb48bdf8b2828e0743c2f3bc77209dfee75bef105b3ead725232fd49ec5d0eb9
+size 377984
diff --git a/mods/Arrival/gamedata/textures/banner_zone_mine_thorn.dds b/mods/Arrival/gamedata/textures/banner_zone_mine_thorn.dds
new file mode 100644
index 00000000..e86e1f7f
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/banner_zone_mine_thorn.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8779ad0f50a8c43378aa5d0adc9f37eab3f6d183c6383880972f2108f5d42cba
+size 377984
diff --git a/mods/Arrival/gamedata/textures/banner_zone_mine_umbra.dds b/mods/Arrival/gamedata/textures/banner_zone_mine_umbra.dds
new file mode 100644
index 00000000..9f512f86
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/banner_zone_mine_umbra.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0d13a93c442533a8485261b9b4854fbc9dcba1fe9566311a293323a0bc610fed
+size 377984
diff --git a/mods/Arrival/gamedata/textures/grad/grad_mine_orange.dds b/mods/Arrival/gamedata/textures/grad/grad_mine_orange.dds
new file mode 100644
index 00000000..4b0b59aa
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/grad/grad_mine_orange.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6905d203888243ede2f65e2de4886c5ab1a0b32eef13a155fcee1fec48b3c148
+size 1152
diff --git a/mods/Arrival/gamedata/textures/grad/grad_mine_orange.thm b/mods/Arrival/gamedata/textures/grad/grad_mine_orange.thm
new file mode 100644
index 00000000..92031174
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/grad/grad_mine_orange.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:085c2898ee627c7f5b60415939dbd9adccb336491e885be7c2bace8022651cae
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/Acid_Smoke_512.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/Acid_Smoke_512.dds
new file mode 100644
index 00000000..294d0232
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/Acid_Smoke_512.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cc8f511835064e9b9e998a40352f105833bd1d40882c4d8e2e6b10bb0465357f
+size 481408
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/PuffColorSplash.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/PuffColorSplash.dds
new file mode 100644
index 00000000..66277297
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/PuffColorSplash.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:df7b5bebc9df4e1f2872e4dce0c734a142e862830b1bc6e9b99235c93cc923cc
+size 262272
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/SmallSplashAtlas.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/SmallSplashAtlas.dds
new file mode 100644
index 00000000..bb671980
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/SmallSplashAtlas.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4487d25800add5304b6e6e4b9f093382d14d9c638bffc1c0d67437763979e790
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/SmokeBurstPuffAnim.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/SmokeBurstPuffAnim.DDS
new file mode 100644
index 00000000..1da1d4bd
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/SmokeBurstPuffAnim.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:37f3707fdd73f4611597b9f441e697d3536161b8f02a131d6d3cbdaa71924912
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/around.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/around.dds
new file mode 100644
index 00000000..195c0229
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/around.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:317059340692b4620508dcd863d7eb81a7e56a51f5891f76e92835754b478297
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/cumulus_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/cumulus_02.dds
new file mode 100644
index 00000000..f3072213
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/cumulus_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18306458279c1e6e63f41d43c0aec563fdb6d6593abf3cd801a15a40ec3f2bd3
+size 1398352
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/distort_anomaly_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/distort_anomaly_01.dds
new file mode 100644
index 00000000..d14e52f9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/distort_anomaly_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f80c50173d7824ae47a50ead5b5ea6bcf6050c2d3fccced7b689e96b2d8d569
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/fx_moon_full_foggy.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/fx_moon_full_foggy.dds
new file mode 100644
index 00000000..02802d92
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/fx_moon_full_foggy.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ec56b388d42a3238c0885fd46bdef05ff915067edc7b5886825dd03da3edfe1
+size 5616
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/pfx_dist2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/pfx_dist2.dds
new file mode 100644
index 00000000..4e2247ca
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/pfx_dist2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cdf089393eace20a038017da52f86ca27693c4bdb5b8f1a532f5112b70cd8a35
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/pfx_dist2.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/pfx_dist2.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/pfx_dist2.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/pfx_distortion.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/pfx_distortion.dds
new file mode 100644
index 00000000..7f47202e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/pfx_distortion.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af6c530ef0f678ccd1767144753f9b1903cfbdc248264e76271a23b7c7da5247
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/pfx_distortion.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/pfx_distortion.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/pfx_distortion.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/pfx_smoke_b.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/pfx_smoke_b.dds
new file mode 100644
index 00000000..c3277db4
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/pfx_smoke_b.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c9d9422996615e99935046755d94eecc7ddf8c9f8d3e9ecaa81ddf5b00e8a0f4
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/pfx_smoke_b.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/pfx_smoke_b.thm
new file mode 100644
index 00000000..f1dde392
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/pfx_smoke_b.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e7ed1976f98cd171c5aa41c540f5094d7db04bb60d95a87f3f104ae6e9aee49d
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/rain_drop2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/rain_drop2.dds
new file mode 100644
index 00000000..3334ec6b
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/rain_drop2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c6acaeaea4c58dc648650703e0225235f0b354b5939dd0857f6505362b56ac74
+size 43936
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/slime_anim_a_diff.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/slime_anim_a_diff.dds
new file mode 100644
index 00000000..a847adb3
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/slime_anim_a_diff.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:80fee330071d158c1a7f97a55df7c7bc055ef42bf6671c7de96e9c495ea1505c
+size 349776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/slime_anim_a_spec.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/slime_anim_a_spec.dds
new file mode 100644
index 00000000..06c3a79d
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/slime_anim_a_spec.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3b09ddac7c0e3aee8663399a5a71e3816b3f87875d2866313715517a43d6a23b
+size 175016
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/slime_anim_b.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/slime_anim_b.dds
new file mode 100644
index 00000000..79fca15a
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/slime_anim_b.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2b9e1df751c70c8a54b71c2ed069403b8eb889c6e066c42be95cc08ca7fe0560
+size 349776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/smoke_tiled_b.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/smoke_tiled_b.dds
new file mode 100644
index 00000000..497358ba
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/smoke_tiled_b.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3a429059d797ce97ad75278c3a4c2764a219efa6ed0a27dfebb31e5fe488df85
+size 349776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/smoke_tiled_d.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/smoke_tiled_d.dds
new file mode 100644
index 00000000..068aea92
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/smoke_tiled_d.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d6ef944033f25ac6a86b0af1021161b88a7c1241f499212241e96a9208ee9b89
+size 349776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/spore_white.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/spore_white.dds
new file mode 100644
index 00000000..a54fe540
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/spore_white.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:83ed4992149b7d88a9e198877902d695ba46852177a952ceb9bd33dfee2092cd
+size 65664
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/water_river_a.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/water_river_a.dds
new file mode 100644
index 00000000..7bd82a35
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/acidic_mine/water_river_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2cfb896d252874ffd33f2ff711cf48bf0456c9e714d5eb3c2510655bc0ef6cb7
+size 87632
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/BitsLeaves01Anim_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/BitsLeaves01Anim_d.DDS
new file mode 100644
index 00000000..19afba37
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/BitsLeaves01Anim_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:69c41f40b74a8209c78e4d265b4ff74966a9e9c597f8955959d76ba823b235dc
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/BushTrimmings_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/BushTrimmings_d.DDS
new file mode 100644
index 00000000..afdacba3
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/BushTrimmings_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a5b4ff5f8fd3564ae01472af3dd8da0a17226149fd70a0b7ff862fab922315d4
+size 22000
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/ElectricBlast3.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/ElectricBlast3.dds
new file mode 100644
index 00000000..aa27c538
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/ElectricBlast3.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:44db32133a49387e2a3c2df0b451a031088662eafd7444d6031f86345be4b613
+size 5592560
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/around.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/around.dds
new file mode 100644
index 00000000..9b380250
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/around.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0f1b395503f6795cc6416eb603e1925fea8fefcf7366ae122b0b427873483017
+size 5592656
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/cumulus_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/cumulus_02.dds
new file mode 100644
index 00000000..f3072213
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/cumulus_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18306458279c1e6e63f41d43c0aec563fdb6d6593abf3cd801a15a40ec3f2bd3
+size 1398352
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/distort_anomaly_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/distort_anomaly_01.dds
new file mode 100644
index 00000000..d14e52f9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/distort_anomaly_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f80c50173d7824ae47a50ead5b5ea6bcf6050c2d3fccced7b689e96b2d8d569
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/pfx_dist2inv.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/pfx_dist2inv.dds
new file mode 100644
index 00000000..8e014951
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/pfx_dist2inv.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ba26409664cb8b5ab7ea6ef8017cdd1dd98d31d3503755440280352fc4a0a8f
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/pfx_dist2inv.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/pfx_dist2inv.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/pfx_dist2inv.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/pfx_dist3.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/pfx_dist3.dds
new file mode 100644
index 00000000..e8f20226
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/pfx_dist3.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2c6df99a4367877f32f14c9b719b548a03028fc6eee129a95b6f0edd54142e8d
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/pfx_dist3.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/pfx_dist3.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/pfx_dist3.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/puffcolorsplashflicker2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/puffcolorsplashflicker2.dds
new file mode 100644
index 00000000..1a9fb2ce
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/puffcolorsplashflicker2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b03079355d9dbfe3069d3c6f9a68896a4279b49121b402d395f0240dbd52e161
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/smoke_burst_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/smoke_burst_02.dds
new file mode 100644
index 00000000..f5d25dad
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/smoke_burst_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c718d0f97c627b935b0eea3aae5bf6d0bad947c150e77a2356b76abb92c2e34a
+size 2796368
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/smokecloud4.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/smokecloud4.dds
new file mode 100644
index 00000000..3813efe1
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/smokecloud4.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fddb1e20fcf4bec8835a55f9973afa5c6c4450e270eb28d4cb566e94e86e977c
+size 1048704
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/white_flare.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/white_flare.dds
new file mode 100644
index 00000000..aad22c38
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/cdf/white_flare.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:61ff08f803ed2d063003f632885bec1b73a8d79edc81708addab4357240f80a6
+size 524416
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/darkness/BitsLeaves01Anim_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/darkness/BitsLeaves01Anim_d.DDS
new file mode 100644
index 00000000..9a962747
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/darkness/BitsLeaves01Anim_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0fd684df0466e51b40e3f1991b66adcd57bdbd71320b9a1f20b6bbd52cbd5f71
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/darkness/Darkness_Core_4k_v1.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/darkness/Darkness_Core_4k_v1.dds
new file mode 100644
index 00000000..d1a19573
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/darkness/Darkness_Core_4k_v1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1ec1f4c448984c22a5335884ee7ccd4fb66bbaaf9252343028ca12177c62d346
+size 22369776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/electra/Acid_Smoke_512.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/Acid_Smoke_512.dds
new file mode 100644
index 00000000..294d0232
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/Acid_Smoke_512.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cc8f511835064e9b9e998a40352f105833bd1d40882c4d8e2e6b10bb0465357f
+size 481408
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/electra/ElectricBlast1.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/ElectricBlast1.dds
new file mode 100644
index 00000000..15bd9bc8
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/ElectricBlast1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:41a0c232bc9d4afdeec07e26450b0313dbed92779bfbd13580cffbd465f1a68f
+size 16777344
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/electra/ElectricBlast2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/ElectricBlast2.dds
new file mode 100644
index 00000000..b460d15e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/ElectricBlast2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b10c665cd015c8db12effab7a88e1acdd74031b9337cfb36371677112cf1567c
+size 16777344
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/electra/ElectricBlast3.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/ElectricBlast3.dds
new file mode 100644
index 00000000..a4e08d2c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/ElectricBlast3.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0c8afe95b3e5a8e748f35df1eb403afda494d96a57a50c601fd71e90f2813df2
+size 16777344
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/electra/ElectricBlast3_2k.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/ElectricBlast3_2k.dds
new file mode 100644
index 00000000..aa27c538
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/ElectricBlast3_2k.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:44db32133a49387e2a3c2df0b451a031088662eafd7444d6031f86345be4b613
+size 5592560
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/electra/Gauss1.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/Gauss1.dds
new file mode 100644
index 00000000..5310bfaf
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/Gauss1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3dc31c6f10b7590050caf6fc6d75ac6ce63390485da6b46b64a367b81dce700f
+size 16777344
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/electra/GenericPuff.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/GenericPuff.dds
new file mode 100644
index 00000000..696c1605
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/GenericPuff.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:722467b2718ce209576676e78ab60597487188b8f61392f170ea5d11fb98b0df
+size 174904
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/electra/SmokeBasic01Atlas.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/SmokeBasic01Atlas.DDS
new file mode 100644
index 00000000..3f67034f
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/SmokeBasic01Atlas.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:078161f61ffb590c75a3aafce1304547b6afb7e2afd025ea05d480d05f3dab48
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/electra/SmokeFillVapor01AtlasSoft_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/SmokeFillVapor01AtlasSoft_d.DDS
new file mode 100644
index 00000000..a4ff5b3a
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/SmokeFillVapor01AtlasSoft_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ae0b8e31c88ad8458ddd5b4d3b5a15651f7c763f46fbc742b6df086e96f18ab
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/electra/cumulus_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/cumulus_02.dds
new file mode 100644
index 00000000..f3072213
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/cumulus_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18306458279c1e6e63f41d43c0aec563fdb6d6593abf3cd801a15a40ec3f2bd3
+size 1398352
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/electra/distort_anomaly_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/distort_anomaly_01.dds
new file mode 100644
index 00000000..d14e52f9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/distort_anomaly_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f80c50173d7824ae47a50ead5b5ea6bcf6050c2d3fccced7b689e96b2d8d569
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/electra/electricblast2_blue.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/electricblast2_blue.dds
new file mode 100644
index 00000000..0dee0575
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/electricblast2_blue.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:080329dce4efe8cde0c29fa4272c173e5f4cfe9a037ce4c19d18bbf71ac0ed37
+size 5592560
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/electra/puffcolorsplashflicker.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/puffcolorsplashflicker.dds
new file mode 100644
index 00000000..25f7ac7f
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/electra/puffcolorsplashflicker.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:05ccd8fe3fd8229abd0c1c1e63980a6b32c006bb4b9b41d57eff89a725606b96
+size 65664
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/flash/Flash_particle.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/Flash_particle.dds
new file mode 100644
index 00000000..83851c0d
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/Flash_particle.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:333c9d161a74716ab0e47a7a8a309e8a6a277d91389a5c968ddc29797859ac9b
+size 5616
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/flash/SmokeFillVapor01AtlasSoft_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/SmokeFillVapor01AtlasSoft_d.DDS
new file mode 100644
index 00000000..a4ff5b3a
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/SmokeFillVapor01AtlasSoft_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ae0b8e31c88ad8458ddd5b4d3b5a15651f7c763f46fbc742b6df086e96f18ab
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/flash/SmokeFillVapor01AtlasSoft_d_small.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/SmokeFillVapor01AtlasSoft_d_small.dds
new file mode 100644
index 00000000..30902b5e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/SmokeFillVapor01AtlasSoft_d_small.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:919cb864d8b86a3c88eba4f8f5671a9051f3b88c519cf4fa9696fc89d02c7276
+size 65664
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/flash/around.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/around.dds
new file mode 100644
index 00000000..9b380250
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/around.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0f1b395503f6795cc6416eb603e1925fea8fefcf7366ae122b0b427873483017
+size 5592656
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/flash/cumulus_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/cumulus_02.dds
new file mode 100644
index 00000000..f3072213
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/cumulus_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18306458279c1e6e63f41d43c0aec563fdb6d6593abf3cd801a15a40ec3f2bd3
+size 1398352
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_dist2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_dist2.dds
new file mode 100644
index 00000000..4e2247ca
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_dist2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cdf089393eace20a038017da52f86ca27693c4bdb5b8f1a532f5112b70cd8a35
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_dist2.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_dist2.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_dist2.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_dist2a.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_dist2a.dds
new file mode 100644
index 00000000..c475a608
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_dist2a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f536caa2a73ae6f99ee12496a4e5ef89bafe43c23d4ee980251469746767fcf3
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_dist2a.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_dist2a.thm
new file mode 100644
index 00000000..d7931f95
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_dist2a.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:48175c7ef553e0cabf0153a1eba164cdea698b01193ba5616f89b2c4081e6971
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_flash_03.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_flash_03.dds
new file mode 100644
index 00000000..a67994a4
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_flash_03.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:393b6ba4b9ce789eb3c6051f5a3f71fe155a69c58145cd2ff320873fb14204ad
+size 87536
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_2_segment.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_flash_03.thm
similarity index 100%
rename from mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_2_segment.thm
rename to mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_flash_03.thm
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_gradient.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_gradient.dds
new file mode 100644
index 00000000..56395636
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_gradient.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0a3135c6403550fcb18d61ef1d4acd8f690d55c289f5e2617ff57e4ec9344017
+size 22000
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_gradient.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_gradient.thm
new file mode 100644
index 00000000..74028e13
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/pfx_gradient.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4be852846eb4502c8b4e098a7cc4503dc37648778680a16b2cba42653771a146
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/flash/smoke_tiled_b.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/smoke_tiled_b.dds
new file mode 100644
index 00000000..497358ba
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/smoke_tiled_b.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3a429059d797ce97ad75278c3a4c2764a219efa6ed0a27dfebb31e5fe488df85
+size 349776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/flash/spore_a.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/spore_a.dds
new file mode 100644
index 00000000..187a5de1
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/spore_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e7bed99ebfd320f89aff016f4a29be680bc5d09b5291cdff79a719d6bcc04625
+size 349776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/flash/water_river_a.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/water_river_a.dds
new file mode 100644
index 00000000..7bd82a35
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/water_river_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2cfb896d252874ffd33f2ff711cf48bf0456c9e714d5eb3c2510655bc0ef6cb7
+size 87632
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/flash/water_river_b.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/water_river_b.dds
new file mode 100644
index 00000000..5578e61d
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/flash/water_river_b.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f55e52cc0a21447f295a8f75356aa7638245ef130974be3f7e47cce3b32e3bdd
+size 87632
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/BitsSmallRocky_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/BitsSmallRocky_d.DDS
new file mode 100644
index 00000000..902a0784
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/BitsSmallRocky_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4cf37372b3ab38f2fa6ebfb3ffc3d022760d074ae210b1e802f30a5a659a13f4
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/BushTrimmings_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/BushTrimmings_d.DDS
new file mode 100644
index 00000000..afdacba3
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/BushTrimmings_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a5b4ff5f8fd3564ae01472af3dd8da0a17226149fd70a0b7ff862fab922315d4
+size 22000
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/ElectricBlast2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/ElectricBlast2.dds
new file mode 100644
index 00000000..b460d15e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/ElectricBlast2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b10c665cd015c8db12effab7a88e1acdd74031b9337cfb36371677112cf1567c
+size 16777344
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/ElectricBlast3.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/ElectricBlast3.dds
new file mode 100644
index 00000000..a4e08d2c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/ElectricBlast3.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0c8afe95b3e5a8e748f35df1eb403afda494d96a57a50c601fd71e90f2813df2
+size 16777344
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/ElectricBlast3_2k.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/ElectricBlast3_2k.dds
new file mode 100644
index 00000000..aa27c538
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/ElectricBlast3_2k.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:44db32133a49387e2a3c2df0b451a031088662eafd7444d6031f86345be4b613
+size 5592560
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/Flash_particle.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/Flash_particle.dds
new file mode 100644
index 00000000..c077004b
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/Flash_particle.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ef698d52d98c197cbc40d6e058f2a9bfa64655ae203f60ab79d1d60f7257c94b
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/GenericPuff.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/GenericPuff.dds
new file mode 100644
index 00000000..40ded8a9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/GenericPuff.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c964f2670114b6d5eb84e040976593f483a44b9862266e8139e24c9a3dc3725b
+size 262272
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/PuffColorSplash.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/PuffColorSplash.dds
new file mode 100644
index 00000000..66277297
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/PuffColorSplash.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:df7b5bebc9df4e1f2872e4dce0c734a142e862830b1bc6e9b99235c93cc923cc
+size 262272
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/SmokHighContrast.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/SmokHighContrast.DDS
new file mode 100644
index 00000000..85809008
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/SmokHighContrast.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:57766161730946689d756efbbcaf050f62b1a75c4bc0923398354f56eadbccc1
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/SmokeBurstPuffAnim.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/SmokeBurstPuffAnim.DDS
new file mode 100644
index 00000000..1da1d4bd
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/SmokeBurstPuffAnim.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:37f3707fdd73f4611597b9f441e697d3536161b8f02a131d6d3cbdaa71924912
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/cumulus_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/cumulus_02.dds
new file mode 100644
index 00000000..f3072213
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/cumulus_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18306458279c1e6e63f41d43c0aec563fdb6d6593abf3cd801a15a40ec3f2bd3
+size 1398352
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/distort_anomaly_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/distort_anomaly_01.dds
new file mode 100644
index 00000000..d14e52f9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/distort_anomaly_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f80c50173d7824ae47a50ead5b5ea6bcf6050c2d3fccced7b689e96b2d8d569
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/electricblast2_blue.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/electricblast2_blue.dds
new file mode 100644
index 00000000..3819c7a8
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/electricblast2_blue.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ca89b08c04d2693f25e42fd3b136c97596970f3bfae96baf616d4d8f0af7cd41
+size 16777344
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/pfx_dist2inv.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/pfx_dist2inv.dds
new file mode 100644
index 00000000..8e014951
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/pfx_dist2inv.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ba26409664cb8b5ab7ea6ef8017cdd1dd98d31d3503755440280352fc4a0a8f
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/pfx_dist2inv.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/pfx_dist2inv.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/pfx_dist2inv.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/pfx_dist3_005.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/pfx_dist3_005.dds
new file mode 100644
index 00000000..dd7b2f79
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/pfx_dist3_005.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:32512c119d37f961a4e2bc33b3faa45a9724453fb379a2d9dd33e1af7b2ac1e2
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/pfx_dist_glass.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/pfx_dist_glass.dds
new file mode 100644
index 00000000..2d205e81
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/pfx_dist_glass.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8a4376b29edcba246c2637abc124949d752663471d5f9251e20343b86ec1c003
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/pfx_dist_glass.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/pfx_dist_glass.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/pfx_dist_glass.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/semi/BitsSmallRocky_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/semi/BitsSmallRocky_d.DDS
new file mode 100644
index 00000000..2b723036
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/semi/BitsSmallRocky_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8342bf3e51a68702ecba29193b09f6fe99a9349186e6fd5201bd1ab0686bc5c6
+size 43832
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/semi/Flash_particle.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/semi/Flash_particle.dds
new file mode 100644
index 00000000..61935987
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/semi/Flash_particle.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0d27cfe48d0604f7c1c3229d72854f3fab8bfed9449050559a6b27451018dd09
+size 43832
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/semi/GenericPuff.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/semi/GenericPuff.dds
new file mode 100644
index 00000000..696c1605
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/semi/GenericPuff.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:722467b2718ce209576676e78ab60597487188b8f61392f170ea5d11fb98b0df
+size 174904
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/semi/PuffColorSplash.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/semi/PuffColorSplash.dds
new file mode 100644
index 00000000..351b3281
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/semi/PuffColorSplash.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cbe6dbbe94a0d2fa21898a8e5171c151cbd53a761f410fdcc58edf21b935e404
+size 174904
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/semi/SmokeBurstPuffAnim.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/semi/SmokeBurstPuffAnim.DDS
new file mode 100644
index 00000000..c6bf7e3b
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/semi/SmokeBurstPuffAnim.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5d1ce6a2d35670ec6eee99559d63884756438bad76c964ba4a13d736c58ac444
+size 699192
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/generators/semi/rocks_generators.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/semi/rocks_generators.dds
new file mode 100644
index 00000000..903843bb
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/generators/semi/rocks_generators.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5d5544685bdcc7335fd5e132a19e1ea63de9c5c8dd8f388768f379e96074aff8
+size 43832
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/cumulus_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/cumulus_01.dds
new file mode 100644
index 00000000..f01011cb
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/cumulus_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:157cef194ef072f963532d27df838517f0b3655192bd793d1127fd9d43b67d76
+size 1048704
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/energyball2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/energyball2.dds
new file mode 100644
index 00000000..997e8ed3
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/energyball2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:190eca689ea5dc3dd53d27d566a409387bb262f4bea39375a949c560678b727a
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/glow_white.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/glow_white.dds
new file mode 100644
index 00000000..c9dc1eae
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/glow_white.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4afe0f0b95a09c72e9f32e605dabdee7cddba8c4a18b0a5a0f53f334b225c2bb
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/glow_white.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/glow_white.thm
new file mode 100644
index 00000000..8029185a
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/glow_white.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b3a21c36687efeb1a2f2550fe674b2aa14568021a9a42d2bb439884cefb5a695
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/pfx_dist3.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/pfx_dist3.dds
new file mode 100644
index 00000000..e8f20226
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/pfx_dist3.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2c6df99a4367877f32f14c9b719b548a03028fc6eee129a95b6f0edd54142e8d
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/pfx_dist3.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/pfx_dist3.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/pfx_dist3.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/pfx_dist7.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/pfx_dist7.dds
new file mode 100644
index 00000000..1088d4ab
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/pfx_dist7.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fc1d197ed1e20ef08d3ed169ad21c7c6be41fb1fdf3c89dbc055783da89b671c
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/pfx_dist7.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/pfx_dist7.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/pfx_dist7.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/pfx_flash_07.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/pfx_flash_07.dds
new file mode 100644
index 00000000..ac98a9ea
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/pfx_flash_07.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d256bedeb40cc3df363970c50be9bd50a7455cb6fa25cf409acffa2cf5e8fdea
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/pfx_flash_07.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/pfx_flash_07.thm
new file mode 100644
index 00000000..74028e13
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/ghost/pfx_flash_07.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4be852846eb4502c8b4e098a7cc4503dc37648778680a16b2cba42653771a146
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gold/Acid_Smoke_512.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/Acid_Smoke_512.dds
new file mode 100644
index 00000000..294d0232
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/Acid_Smoke_512.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cc8f511835064e9b9e998a40352f105833bd1d40882c4d8e2e6b10bb0465357f
+size 481408
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gold/SmallSplashAtlas.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/SmallSplashAtlas.dds
new file mode 100644
index 00000000..bb671980
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/SmallSplashAtlas.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4487d25800add5304b6e6e4b9f093382d14d9c638bffc1c0d67437763979e790
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gold/SmokeBurstPuffAnim.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/SmokeBurstPuffAnim.DDS
new file mode 100644
index 00000000..1da1d4bd
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/SmokeBurstPuffAnim.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:37f3707fdd73f4611597b9f441e697d3536161b8f02a131d6d3cbdaa71924912
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gold/around.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/around.dds
new file mode 100644
index 00000000..9b380250
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/around.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0f1b395503f6795cc6416eb603e1925fea8fefcf7366ae122b0b427873483017
+size 5592656
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gold/cumulus_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/cumulus_02.dds
new file mode 100644
index 00000000..f3072213
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/cumulus_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18306458279c1e6e63f41d43c0aec563fdb6d6593abf3cd801a15a40ec3f2bd3
+size 1398352
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gold/distort_anomaly_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/distort_anomaly_01.dds
new file mode 100644
index 00000000..d14e52f9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/distort_anomaly_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f80c50173d7824ae47a50ead5b5ea6bcf6050c2d3fccced7b689e96b2d8d569
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gold/pfx_dist2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/pfx_dist2.dds
new file mode 100644
index 00000000..4e2247ca
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/pfx_dist2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cdf089393eace20a038017da52f86ca27693c4bdb5b8f1a532f5112b70cd8a35
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gold/pfx_dist2.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/pfx_dist2.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/pfx_dist2.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gold/pfx_dist2inv.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/pfx_dist2inv.dds
new file mode 100644
index 00000000..8e014951
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/pfx_dist2inv.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ba26409664cb8b5ab7ea6ef8017cdd1dd98d31d3503755440280352fc4a0a8f
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gold/pfx_dist2inv.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/pfx_dist2inv.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/pfx_dist2inv.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gold/pfx_distortion.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/pfx_distortion.dds
new file mode 100644
index 00000000..7f47202e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/pfx_distortion.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af6c530ef0f678ccd1767144753f9b1903cfbdc248264e76271a23b7c7da5247
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gold/pfx_distortion.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/pfx_distortion.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/pfx_distortion.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gold/slime_anim_a_diff.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/slime_anim_a_diff.dds
new file mode 100644
index 00000000..a847adb3
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/slime_anim_a_diff.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:80fee330071d158c1a7f97a55df7c7bc055ef42bf6671c7de96e9c495ea1505c
+size 349776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gold/slime_anim_b.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/slime_anim_b.dds
new file mode 100644
index 00000000..79fca15a
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/slime_anim_b.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2b9e1df751c70c8a54b71c2ed069403b8eb889c6e066c42be95cc08ca7fe0560
+size 349776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gold/smoke_tiled_b.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/smoke_tiled_b.dds
new file mode 100644
index 00000000..497358ba
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gold/smoke_tiled_b.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3a429059d797ce97ad75278c3a4c2764a219efa6ed0a27dfebb31e5fe488df85
+size 349776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/BitsLeavesSprite.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/BitsLeavesSprite.dds
new file mode 100644
index 00000000..9b05241e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/BitsLeavesSprite.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c6d16811327c9fb3bcb07b3e9a272c0ddd6c05b66fc2e35facf0a383cfb4d4a5
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/BitsSmallRocky_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/BitsSmallRocky_d.DDS
new file mode 100644
index 00000000..902a0784
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/BitsSmallRocky_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4cf37372b3ab38f2fa6ebfb3ffc3d022760d074ae210b1e802f30a5a659a13f4
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/BushTrimmings_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/BushTrimmings_d.DDS
new file mode 100644
index 00000000..afdacba3
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/BushTrimmings_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a5b4ff5f8fd3564ae01472af3dd8da0a17226149fd70a0b7ff862fab922315d4
+size 22000
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/ClothBitAnim.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/ClothBitAnim.DDS
new file mode 100644
index 00000000..714a0ceb
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/ClothBitAnim.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:365ae78f883ff937169e1579673fdfa1716621c7a4ba769b945e440064b63067
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/branch_03.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/branch_03.dds
new file mode 100644
index 00000000..0b22e5b7
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/branch_03.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6b703e7d4dcf107aecb94960137be8cab14a89e0de07cc634886c85e21816c75
+size 44160
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/cumulus_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/cumulus_01.dds
new file mode 100644
index 00000000..f01011cb
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/cumulus_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:157cef194ef072f963532d27df838517f0b3655192bd793d1127fd9d43b67d76
+size 1048704
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/cumulus_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/cumulus_02.dds
new file mode 100644
index 00000000..f3072213
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/cumulus_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18306458279c1e6e63f41d43c0aec563fdb6d6593abf3cd801a15a40ec3f2bd3
+size 1398352
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/distort_anomaly_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/distort_anomaly_01.dds
new file mode 100644
index 00000000..d14e52f9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/distort_anomaly_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f80c50173d7824ae47a50ead5b5ea6bcf6050c2d3fccced7b689e96b2d8d569
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/leaf_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/leaf_01.dds
new file mode 100644
index 00000000..624a1f7a
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/leaf_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:00862547a92314250d3851405c4ae923f7849ab472ba5592b763caa3f330a570
+size 11392
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/leaf_04.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/leaf_04.dds
new file mode 100644
index 00000000..b71299d8
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/leaf_04.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:65d0cb315e45e1f7f9b025be02096571c0bf1e3bb07663538d2103e4c72678c1
+size 11392
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/leaf_06.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/leaf_06.dds
new file mode 100644
index 00000000..e21681fa
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/leaf_06.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4dcd80c8d7f8ff72f173542ffe9eddd7d5806559ce0bc48e3634dcbf200056be
+size 24704
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/leaf_10.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/leaf_10.dds
new file mode 100644
index 00000000..3b903de9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/leaf_10.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1776938716c61a41cf86ada144ce3e77cb5cbe9705cf925fc47c255f737977f4
+size 11392
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/pfx_distortion.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/pfx_distortion.dds
new file mode 100644
index 00000000..7f47202e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/pfx_distortion.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af6c530ef0f678ccd1767144753f9b1903cfbdc248264e76271a23b7c7da5247
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/pfx_distortion.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/pfx_distortion.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational/pfx_distortion.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BitsLeaves01Anim_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BitsLeaves01Anim_d.DDS
new file mode 100644
index 00000000..9a962747
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BitsLeaves01Anim_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0fd684df0466e51b40e3f1991b66adcd57bdbd71320b9a1f20b6bbd52cbd5f71
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BitsLeavesSprite.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BitsLeavesSprite.dds
new file mode 100644
index 00000000..9b05241e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BitsLeavesSprite.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c6d16811327c9fb3bcb07b3e9a272c0ddd6c05b66fc2e35facf0a383cfb4d4a5
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BitsSmallRocky_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BitsSmallRocky_d.DDS
new file mode 100644
index 00000000..902a0784
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BitsSmallRocky_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4cf37372b3ab38f2fa6ebfb3ffc3d022760d074ae210b1e802f30a5a659a13f4
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BitsWoodSplintersAtlas.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BitsWoodSplintersAtlas.DDS
new file mode 100644
index 00000000..30e60355
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BitsWoodSplintersAtlas.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2a8beba0019db53163c091351bf1256a40e518fac93b585e769d55b8bcfd753d
+size 43856
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BloodBurst03_var5.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BloodBurst03_var5.dds
new file mode 100644
index 00000000..c8158bee
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BloodBurst03_var5.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a1e52b3800841f21cc1321eb214b45dc12b764fc8866874e6baf109aeaf5f91d
+size 16777344
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BloodBurst07_var4.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BloodBurst07_var4.dds
new file mode 100644
index 00000000..9158df5e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BloodBurst07_var4.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:aca43de6c642e61e150656de49fdde28584a0056edb92245106a33b80e31ba1d
+size 4194432
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BloodSquirt2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BloodSquirt2.dds
new file mode 100644
index 00000000..d7ced845
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BloodSquirt2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1ad9772bf4b9536a363f1c5f3eec0b1cf434dfe6d0ed30c433b8d01cb0e547aa
+size 262272
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BushTrimmings_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BushTrimmings_d.DDS
new file mode 100644
index 00000000..afdacba3
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/BushTrimmings_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a5b4ff5f8fd3564ae01472af3dd8da0a17226149fd70a0b7ff862fab922315d4
+size 22000
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/ClothBitAnim.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/ClothBitAnim.DDS
new file mode 100644
index 00000000..714a0ceb
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/ClothBitAnim.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:365ae78f883ff937169e1579673fdfa1716621c7a4ba769b945e440064b63067
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/Leaf.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/Leaf.dds
new file mode 100644
index 00000000..3dafd172
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/Leaf.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f530c48dfac13b37aeb202fe865107c6bd22c27f8956bc724cc97f0a28a84029
+size 13120
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/SmokePuffsContrastAtlas.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/SmokePuffsContrastAtlas.DDS
new file mode 100644
index 00000000..31fe27e0
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/SmokePuffsContrastAtlas.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:70b9598bd897ad6830726e82b11f2a644fcd7cd6ca406b54cf4beff0d526a3b1
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/cumulus_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/cumulus_02.dds
new file mode 100644
index 00000000..f3072213
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/cumulus_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18306458279c1e6e63f41d43c0aec563fdb6d6593abf3cd801a15a40ec3f2bd3
+size 1398352
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/distort_anomaly_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/distort_anomaly_01.dds
new file mode 100644
index 00000000..d14e52f9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/distort_anomaly_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f80c50173d7824ae47a50ead5b5ea6bcf6050c2d3fccced7b689e96b2d8d569
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_dist2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_dist2.dds
new file mode 100644
index 00000000..4e2247ca
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_dist2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cdf089393eace20a038017da52f86ca27693c4bdb5b8f1a532f5112b70cd8a35
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_dist2.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_dist2.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_dist2.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_dist2inv.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_dist2inv.dds
new file mode 100644
index 00000000..8e014951
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_dist2inv.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ba26409664cb8b5ab7ea6ef8017cdd1dd98d31d3503755440280352fc4a0a8f
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_dist2inv.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_dist2inv.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_dist2inv.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_dist9.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_dist9.dds
new file mode 100644
index 00000000..435d8240
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_dist9.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2a8ef88ebee5972a9cf3ef6b8d350ad85826e8a2a4c757aa93e4b77ba2fc361c
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_dist9.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_dist9.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_dist9.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_distortion.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_distortion.dds
new file mode 100644
index 00000000..7f47202e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_distortion.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af6c530ef0f678ccd1767144753f9b1903cfbdc248264e76271a23b7c7da5247
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_distortion.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_distortion.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/pfx_distortion.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/puff_00.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/puff_00.dds
new file mode 100644
index 00000000..cd6c1281
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/puff_00.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ff0571325ef05d769607025520bd108d5190052c77491214f367f3f097bc0e8
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/smoke_tiled_b.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/smoke_tiled_b.dds
new file mode 100644
index 00000000..497358ba
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/smoke_tiled_b.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3a429059d797ce97ad75278c3a4c2764a219efa6ed0a27dfebb31e5fe488df85
+size 349776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/spore_a.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/spore_a.dds
new file mode 100644
index 00000000..187a5de1
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_average/spore_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e7bed99ebfd320f89aff016f4a29be680bc5d09b5291cdff79a719d6bcc04625
+size 349776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/AlbedoShaderSingleFrame - Copy.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/AlbedoShaderSingleFrame - Copy.dds
new file mode 100644
index 00000000..ec667489
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/AlbedoShaderSingleFrame - Copy.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7c3baee82cb81477c3225d92113f980b0415fdcfd05e89b534b242b314552751
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/AlbedoShaderSingleFrame.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/AlbedoShaderSingleFrame.dds
new file mode 100644
index 00000000..ec667489
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/AlbedoShaderSingleFrame.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7c3baee82cb81477c3225d92113f980b0415fdcfd05e89b534b242b314552751
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BitsLeaves01Anim_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BitsLeaves01Anim_d.DDS
new file mode 100644
index 00000000..9a962747
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BitsLeaves01Anim_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0fd684df0466e51b40e3f1991b66adcd57bdbd71320b9a1f20b6bbd52cbd5f71
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BitsLeavesSprite.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BitsLeavesSprite.dds
new file mode 100644
index 00000000..9b05241e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BitsLeavesSprite.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c6d16811327c9fb3bcb07b3e9a272c0ddd6c05b66fc2e35facf0a383cfb4d4a5
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BitsSmallRocky_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BitsSmallRocky_d.DDS
new file mode 100644
index 00000000..902a0784
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BitsSmallRocky_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4cf37372b3ab38f2fa6ebfb3ffc3d022760d074ae210b1e802f30a5a659a13f4
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BitsWoodSplintersAtlas.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BitsWoodSplintersAtlas.DDS
new file mode 100644
index 00000000..30e60355
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BitsWoodSplintersAtlas.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2a8beba0019db53163c091351bf1256a40e518fac93b585e769d55b8bcfd753d
+size 43856
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BloodBurst03_var5.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BloodBurst03_var5.dds
new file mode 100644
index 00000000..c8158bee
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BloodBurst03_var5.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a1e52b3800841f21cc1321eb214b45dc12b764fc8866874e6baf109aeaf5f91d
+size 16777344
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BloodBurst07_var4.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BloodBurst07_var4.dds
new file mode 100644
index 00000000..9158df5e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BloodBurst07_var4.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:aca43de6c642e61e150656de49fdde28584a0056edb92245106a33b80e31ba1d
+size 4194432
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BloodSquirt2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BloodSquirt2.dds
new file mode 100644
index 00000000..d7ced845
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BloodSquirt2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1ad9772bf4b9536a363f1c5f3eec0b1cf434dfe6d0ed30c433b8d01cb0e547aa
+size 262272
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BrokenGlass.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BrokenGlass.dds
new file mode 100644
index 00000000..a239d04e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BrokenGlass.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a789ef6fd15208eb79809c057abcf85344beac06fc581eebbd983b0c122222e4
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BushTrimmings_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BushTrimmings_d.DDS
new file mode 100644
index 00000000..afdacba3
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/BushTrimmings_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a5b4ff5f8fd3564ae01472af3dd8da0a17226149fd70a0b7ff862fab922315d4
+size 22000
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/ClothBitAnim.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/ClothBitAnim.DDS
new file mode 100644
index 00000000..714a0ceb
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/ClothBitAnim.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:365ae78f883ff937169e1579673fdfa1716621c7a4ba769b945e440064b63067
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/cumulus_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/cumulus_02.dds
new file mode 100644
index 00000000..f3072213
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/cumulus_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18306458279c1e6e63f41d43c0aec563fdb6d6593abf3cd801a15a40ec3f2bd3
+size 1398352
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/distort_anomaly_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/distort_anomaly_01.dds
new file mode 100644
index 00000000..d14e52f9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/distort_anomaly_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f80c50173d7824ae47a50ead5b5ea6bcf6050c2d3fccced7b689e96b2d8d569
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/leaf_10.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/leaf_10.dds
new file mode 100644
index 00000000..3b903de9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/leaf_10.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1776938716c61a41cf86ada144ce3e77cb5cbe9705cf925fc47c255f737977f4
+size 11392
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_dist2inv.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_dist2inv.dds
new file mode 100644
index 00000000..8e014951
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_dist2inv.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ba26409664cb8b5ab7ea6ef8017cdd1dd98d31d3503755440280352fc4a0a8f
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_dist2inv.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_dist2inv.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_dist2inv.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_dist3.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_dist3.dds
new file mode 100644
index 00000000..e8f20226
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_dist3.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2c6df99a4367877f32f14c9b719b548a03028fc6eee129a95b6f0edd54142e8d
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_dist3.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_dist3.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_dist3.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_distortion.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_distortion.dds
new file mode 100644
index 00000000..7f47202e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_distortion.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af6c530ef0f678ccd1767144753f9b1903cfbdc248264e76271a23b7c7da5247
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_distortion.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_distortion.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_distortion.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_leaves_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_leaves_01.dds
new file mode 100644
index 00000000..86fe436b
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_leaves_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0ca5db5b1015a01ade8478b711b8d6b2db8f811d8241a8b0b0849cee4346f0be
+size 21972
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_leaves_01.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_leaves_01.thm
new file mode 100644
index 00000000..f40ae750
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_leaves_01.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d9e06b777da1031cea7e8adbe6e90c65ed4cbc86c96a32385fd6c81a5e6540d4
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_teleport.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_teleport.dds
new file mode 100644
index 00000000..e7ddd35c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_teleport.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ae52b93b0b6dac2aca8db4e4d10fcef00ac35f30ee7e591886a20fd3eb70027
+size 349652
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_teleport.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_teleport.thm
new file mode 100644
index 00000000..a6289dc9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/pfx_teleport.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0c7f15e29b5c3dc8633e80d3261f169cffe15e2165d918dd08f9da4b7d46b08c
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/puff_00.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/puff_00.dds
new file mode 100644
index 00000000..914ca2f3
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/puff_00.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4b55647a6759f4d0a5159f1266bbf364a62846b5b882eeb600f1c52551f18961
+size 1048704
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/shockwave_c.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/shockwave_c.dds
new file mode 100644
index 00000000..05a1c33b
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/shockwave_c.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3de81c3dbfa0b3839a874049206c30dbc546acc0e7f1836881c332072d624b00
+size 43944
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/spore_a.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/spore_a.dds
new file mode 100644
index 00000000..187a5de1
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/gravitational_strong/spore_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e7bed99ebfd320f89aff016f4a29be680bc5d09b5291cdff79a719d6bcc04625
+size 349776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/BitsLeaves01Anim_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/BitsLeaves01Anim_d.DDS
new file mode 100644
index 00000000..9a962747
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/BitsLeaves01Anim_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0fd684df0466e51b40e3f1991b66adcd57bdbd71320b9a1f20b6bbd52cbd5f71
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/BushTrimmings_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/BushTrimmings_d.DDS
new file mode 100644
index 00000000..afdacba3
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/BushTrimmings_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a5b4ff5f8fd3564ae01472af3dd8da0a17226149fd70a0b7ff862fab922315d4
+size 22000
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/ClothBitAnim.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/ClothBitAnim.DDS
new file mode 100644
index 00000000..714a0ceb
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/ClothBitAnim.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:365ae78f883ff937169e1579673fdfa1716621c7a4ba769b945e440064b63067
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/Darkness_Core_Distort_4k_v2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/Darkness_Core_Distort_4k_v2.dds
new file mode 100644
index 00000000..1898308f
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/Darkness_Core_Distort_4k_v2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d8aa3b408520b71e0c8f607d5975491c9351eafcf686490e5413bf4c5bbcea67
+size 5592560
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/Shockwave_1.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/Shockwave_1.dds
new file mode 100644
index 00000000..0c71816b
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/Shockwave_1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:97f2bab9e4d9111aa66962e1d05fbaf4123bf563f0210a0bda56edde792b2a76
+size 5592560
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/Shockwave_2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/Shockwave_2.dds
new file mode 100644
index 00000000..e3a1206d
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/Shockwave_2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fc0da7ce9096be98853e111c522fedd4d1dbcab63cf3b82126fdffec6f14d6bc
+size 5592560
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/Sphere_Something_4096_v1.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/Sphere_Something_4096_v1.dds
new file mode 100644
index 00000000..421c57f0
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/Sphere_Something_4096_v1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d67218c0d0fbaed8402d44ab747af53e80b237bf0cf013e20b0d9d7580f008e3
+size 22369776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/around.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/around.dds
new file mode 100644
index 00000000..9b380250
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/around.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0f1b395503f6795cc6416eb603e1925fea8fefcf7366ae122b0b427873483017
+size 5592656
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/blue_flare.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/blue_flare.dds
new file mode 100644
index 00000000..3b213290
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/blue_flare.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:60dad425eb4e2590b78d8bab9223681ea9655322833128a5a5030f2e8719f050
+size 32896
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/cumulus_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/cumulus_02.dds
new file mode 100644
index 00000000..f3072213
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/cumulus_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18306458279c1e6e63f41d43c0aec563fdb6d6593abf3cd801a15a40ec3f2bd3
+size 1398352
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/distort_anomaly_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/distort_anomaly_01.dds
new file mode 100644
index 00000000..d14e52f9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/distort_anomaly_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f80c50173d7824ae47a50ead5b5ea6bcf6050c2d3fccced7b689e96b2d8d569
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/glow_fire1.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/glow_fire1.dds
new file mode 100644
index 00000000..7f532c3a
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/glow_fire1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9a322dc307ecd81dc74389bf61f85676fff01972756f4025e4e1f36f610f71a0
+size 22000
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/decal/decal_monolith_sign.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/glow_fire1.thm
similarity index 100%
rename from mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/decal/decal_monolith_sign.thm
rename to mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/glow_fire1.thm
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/pfx_dist2inv.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/pfx_dist2inv.dds
new file mode 100644
index 00000000..8e014951
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/pfx_dist2inv.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ba26409664cb8b5ab7ea6ef8017cdd1dd98d31d3503755440280352fc4a0a8f
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/pfx_dist2inv.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/pfx_dist2inv.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/pfx_dist2inv.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/pfx_dist4.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/pfx_dist4.dds
new file mode 100644
index 00000000..40520825
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/pfx_dist4.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6e071580293de8d222555c2cd9a1fc67eeb8300206ff4424b9fe6881f34471f7
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/pfx_dist4.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/pfx_dist4.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/pfx_dist4.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/puffcolorsplashflicker.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/puffcolorsplashflicker.dds
new file mode 100644
index 00000000..25f7ac7f
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/puffcolorsplashflicker.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:05ccd8fe3fd8229abd0c1c1e63980a6b32c006bb4b9b41d57eff89a725606b96
+size 65664
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/shockwave_c.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/shockwave_c.dds
new file mode 100644
index 00000000..05a1c33b
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/shockwave_c.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3de81c3dbfa0b3839a874049206c30dbc546acc0e7f1836881c332072d624b00
+size 43944
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/spore_white.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/spore_white.dds
new file mode 100644
index 00000000..a54fe540
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/spore_white.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:83ed4992149b7d88a9e198877902d695ba46852177a952ceb9bd33dfee2092cd
+size 65664
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/water_river_b.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/water_river_b.dds
new file mode 100644
index 00000000..5578e61d
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/mefistotel/water_river_b.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f55e52cc0a21447f295a8f75356aa7638245ef130974be3f7e47cce3b32e3bdd
+size 87632
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/net/distort_anomaly_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/net/distort_anomaly_01.dds
new file mode 100644
index 00000000..d14e52f9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/net/distort_anomaly_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f80c50173d7824ae47a50ead5b5ea6bcf6050c2d3fccced7b689e96b2d8d569
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/net/glow_white.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/net/glow_white.dds
new file mode 100644
index 00000000..c9dc1eae
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/net/glow_white.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4afe0f0b95a09c72e9f32e605dabdee7cddba8c4a18b0a5a0f53f334b225c2bb
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/net/glow_white.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/net/glow_white.thm
new file mode 100644
index 00000000..8029185a
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/net/glow_white.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b3a21c36687efeb1a2f2550fe674b2aa14568021a9a42d2bb439884cefb5a695
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/net/pfx_sparks.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/net/pfx_sparks.dds
new file mode 100644
index 00000000..ceb042b9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/net/pfx_sparks.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:123500bbe36abc6f266824a00a7763df52ae9433b3d85060498018a6d76801ff
+size 174892
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/net/pfx_sparks.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/net/pfx_sparks.thm
new file mode 100644
index 00000000..e4961616
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/net/pfx_sparks.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fc76dd28c6f8c04da168c86bb0d29ce1d186e0e4bd055524ec664d977a625b37
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/net/pfx_sparks2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/net/pfx_sparks2.dds
new file mode 100644
index 00000000..59f35065
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/net/pfx_sparks2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9e28460e6d98cd952784b6fcdd3d81b0bfa15c6f515baf280a2180273ea9f050
+size 43856
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/net/pfx_sparks2.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/net/pfx_sparks2.thm
new file mode 100644
index 00000000..fc99beda
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/net/pfx_sparks2.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ff0602d31083dba867a5acd1f425524b2724bd11fcc807fa990032f66faf86a4
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/net/smoke_cannon.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/net/smoke_cannon.dds
new file mode 100644
index 00000000..3ee8819b
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/net/smoke_cannon.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bf3ae1317fa390941725a72756f4bf84689eeddbd1189c868f455b63036a6d2c
+size 174928
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/BitsLeaves01Anim_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/BitsLeaves01Anim_d.DDS
new file mode 100644
index 00000000..9a962747
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/BitsLeaves01Anim_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0fd684df0466e51b40e3f1991b66adcd57bdbd71320b9a1f20b6bbd52cbd5f71
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/BitsSmallRocky_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/BitsSmallRocky_d.DDS
new file mode 100644
index 00000000..902a0784
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/BitsSmallRocky_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4cf37372b3ab38f2fa6ebfb3ffc3d022760d074ae210b1e802f30a5a659a13f4
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/BushTrimmings_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/BushTrimmings_d.DDS
new file mode 100644
index 00000000..afdacba3
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/BushTrimmings_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a5b4ff5f8fd3564ae01472af3dd8da0a17226149fd70a0b7ff862fab922315d4
+size 22000
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/branch_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/branch_02.dds
new file mode 100644
index 00000000..1d811197
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/branch_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f02abb77d891954b91cdcb1f57164eacf6a5ab97d92d2ea531dc7bd318a2b4d5
+size 2944
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/cumulus_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/cumulus_02.dds
new file mode 100644
index 00000000..f3072213
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/cumulus_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18306458279c1e6e63f41d43c0aec563fdb6d6593abf3cd801a15a40ec3f2bd3
+size 1398352
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/distort_anomaly_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/distort_anomaly_01.dds
new file mode 100644
index 00000000..d14e52f9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/distort_anomaly_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f80c50173d7824ae47a50ead5b5ea6bcf6050c2d3fccced7b689e96b2d8d569
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/distort_anomaly_small.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/distort_anomaly_small.dds
new file mode 100644
index 00000000..031f2440
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/distort_anomaly_small.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0897ff205c059d897eeb7ed8a078d72828e45151781b270ac77de37d42c6d30f
+size 5616
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/ffff.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/ffff.dds
new file mode 100644
index 00000000..ab00ce55
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/ffff.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f5c66972ed5241f9de2679833d89ca00f96e514827c10eedcfa8f65f7d4651f1
+size 264320
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/leaf_10.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/leaf_10.dds
new file mode 100644
index 00000000..5d7493cf
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/leaf_10.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:22af043b00db6b90d64144e8a5854896d90bb6532bcce8b30a18fe34b4128172
+size 2944
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/pfx_distortion.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/pfx_distortion.dds
new file mode 100644
index 00000000..7f47202e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/pfx_distortion.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af6c530ef0f678ccd1767144753f9b1903cfbdc248264e76271a23b7c7da5247
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/pfx_distortion.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/pfx_distortion.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/pfx_distortion.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/smoke128_3w.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/smoke128_3w.dds
new file mode 100644
index 00000000..60563523
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/no_gravity/smoke128_3w.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:621eddd80ed2c89fdb274c4086b4dcea7e84a1a177de90e04a37d96282b87ff4
+size 21976
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/BitsGlowyBits01Atlas.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/point/BitsGlowyBits01Atlas.DDS
new file mode 100644
index 00000000..33745e5d
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/BitsGlowyBits01Atlas.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0a3aa7ad6ae315bd90a0e04a8e464eece7b704c6b140f29b82b97770ab212046
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/ElectricBlast1.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/point/ElectricBlast1.dds
new file mode 100644
index 00000000..a636f630
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/ElectricBlast1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bee568f85f1fad2cf34ba51dd0ed8c3b0339e0f25e555b3fdf295e79697977b0
+size 5592560
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/ElectricBlast2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/point/ElectricBlast2.dds
new file mode 100644
index 00000000..0d618bcb
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/ElectricBlast2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:34e8fb65ed378ddc473078b451bc2351de55f03648320ac7b3d6a01206095e61
+size 5592560
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/SmokeBasic01Atlas.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/point/SmokeBasic01Atlas.DDS
new file mode 100644
index 00000000..3f67034f
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/SmokeBasic01Atlas.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:078161f61ffb590c75a3aafce1304547b6afb7e2afd025ea05d480d05f3dab48
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/Sphere_Something_4096_v2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/point/Sphere_Something_4096_v2.dds
new file mode 100644
index 00000000..45b6e3f2
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/Sphere_Something_4096_v2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:05bdedd44a326b8309dd334adb6a305658175da0162cc065ee55b2e9028a1847
+size 22369776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/Vacum_v1.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/point/Vacum_v1.dds
new file mode 100644
index 00000000..395ca4cb
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/Vacum_v1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0ed84e8081fc6d04807e31203d640499037b9b0629bb41af6ed2f218263b9361
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/around.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/point/around.dds
new file mode 100644
index 00000000..9b380250
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/around.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0f1b395503f6795cc6416eb603e1925fea8fefcf7366ae122b0b427873483017
+size 5592656
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/blue_flare.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/point/blue_flare.dds
new file mode 100644
index 00000000..3b213290
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/blue_flare.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:60dad425eb4e2590b78d8bab9223681ea9655322833128a5a5030f2e8719f050
+size 32896
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/distort_anomaly_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/point/distort_anomaly_01.dds
new file mode 100644
index 00000000..d14e52f9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/distort_anomaly_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f80c50173d7824ae47a50ead5b5ea6bcf6050c2d3fccced7b689e96b2d8d569
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/glow_white.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/point/glow_white.dds
new file mode 100644
index 00000000..c9dc1eae
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/glow_white.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4afe0f0b95a09c72e9f32e605dabdee7cddba8c4a18b0a5a0f53f334b225c2bb
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/glow_white.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/point/glow_white.thm
new file mode 100644
index 00000000..8029185a
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/glow_white.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b3a21c36687efeb1a2f2550fe674b2aa14568021a9a42d2bb439884cefb5a695
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist2a.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist2a.dds
new file mode 100644
index 00000000..c475a608
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist2a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f536caa2a73ae6f99ee12496a4e5ef89bafe43c23d4ee980251469746767fcf3
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist2a.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist2a.thm
new file mode 100644
index 00000000..d7931f95
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist2a.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:48175c7ef553e0cabf0153a1eba164cdea698b01193ba5616f89b2c4081e6971
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist2inv.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist2inv.dds
new file mode 100644
index 00000000..8e014951
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist2inv.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ba26409664cb8b5ab7ea6ef8017cdd1dd98d31d3503755440280352fc4a0a8f
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist2inv.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist2inv.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist2inv.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist3.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist3.dds
new file mode 100644
index 00000000..e8f20226
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist3.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2c6df99a4367877f32f14c9b719b548a03028fc6eee129a95b6f0edd54142e8d
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist3.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist3.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist3.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist8.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist8.dds
new file mode 100644
index 00000000..fbeeca4a
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist8.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5851e3d1af14a4e7acbab32e4ca8fcab7f92b5c8253acb26c67c66d191da500e
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist_glass.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist_glass.dds
new file mode 100644
index 00000000..2d205e81
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist_glass.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8a4376b29edcba246c2637abc124949d752663471d5f9251e20343b86ec1c003
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist_glass.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist_glass.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_dist_glass.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_distortion.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_distortion.dds
new file mode 100644
index 00000000..7f47202e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_distortion.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af6c530ef0f678ccd1767144753f9b1903cfbdc248264e76271a23b7c7da5247
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_distortion.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_distortion.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/point/pfx_distortion.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/radar/BitsLeaves01Anim_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/radar/BitsLeaves01Anim_d.DDS
new file mode 100644
index 00000000..9a962747
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/radar/BitsLeaves01Anim_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0fd684df0466e51b40e3f1991b66adcd57bdbd71320b9a1f20b6bbd52cbd5f71
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/seed/Spray_v1.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/seed/Spray_v1.dds
new file mode 100644
index 00000000..92ca5e26
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/seed/Spray_v1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:232206c94eac4a840a0aaa2376406c58e20235799a4a15ef66cfeff8dca5ec75
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/seed/dirtburst_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/seed/dirtburst_01.dds
new file mode 100644
index 00000000..ec938934
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/seed/dirtburst_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b6f1d75352aad8889f8287e091d4e16196da500f7f002af3d79d6b517a96f3d4
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/seed/fx_moon_full_foggy.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/seed/fx_moon_full_foggy.dds
new file mode 100644
index 00000000..83851c0d
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/seed/fx_moon_full_foggy.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:333c9d161a74716ab0e47a7a8a309e8a6a277d91389a5c968ddc29797859ac9b
+size 5616
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/seed/pfx_dist2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/seed/pfx_dist2.dds
new file mode 100644
index 00000000..4e2247ca
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/seed/pfx_dist2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cdf089393eace20a038017da52f86ca27693c4bdb5b8f1a532f5112b70cd8a35
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/seed/pfx_dist2.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/seed/pfx_dist2.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/seed/pfx_dist2.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/seed/pfx_dist3_005.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/seed/pfx_dist3_005.dds
new file mode 100644
index 00000000..dd7b2f79
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/seed/pfx_dist3_005.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:32512c119d37f961a4e2bc33b3faa45a9724453fb379a2d9dd33e1af7b2ac1e2
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/seed/smoke_streched_tiled_a.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/seed/smoke_streched_tiled_a.dds
new file mode 100644
index 00000000..a17a668c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/seed/smoke_streched_tiled_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bf4d5b5cd040935d1043f654ac8e4fd0445a5ab26f0ac86131156f1cb0923f94
+size 87632
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/BitsLeaves01Anim_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/BitsLeaves01Anim_d.DDS
new file mode 100644
index 00000000..ff4329fd
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/BitsLeaves01Anim_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:907180a8b848af75f2e1ec3d21be03902654f44121079facbd5fb946805d34aa
+size 5616
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/Triangles.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/Triangles.dds
new file mode 100644
index 00000000..ee252363
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/Triangles.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:126997204b103108740b66472f6f16c34b528e0f3498fd2975ee8da5604e7b13
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/broken_glass.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/broken_glass.dds
new file mode 100644
index 00000000..2f85d580
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/broken_glass.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:96d501bd0b356ed5f1f26c2dd29fed07c492955cc195b4ae289c385716668f7f
+size 147584
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/cumulus_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/cumulus_02.dds
new file mode 100644
index 00000000..f3072213
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/cumulus_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18306458279c1e6e63f41d43c0aec563fdb6d6593abf3cd801a15a40ec3f2bd3
+size 1398352
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/distort_anomaly_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/distort_anomaly_01.dds
new file mode 100644
index 00000000..d14e52f9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/distort_anomaly_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f80c50173d7824ae47a50ead5b5ea6bcf6050c2d3fccced7b689e96b2d8d569
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_dist2inv.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_dist2inv.dds
new file mode 100644
index 00000000..8e014951
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_dist2inv.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ba26409664cb8b5ab7ea6ef8017cdd1dd98d31d3503755440280352fc4a0a8f
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_dist2inv.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_dist2inv.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_dist2inv.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_dist3.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_dist3.dds
new file mode 100644
index 00000000..e8f20226
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_dist3.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2c6df99a4367877f32f14c9b719b548a03028fc6eee129a95b6f0edd54142e8d
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_dist3.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_dist3.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_dist3.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_dist7.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_dist7.dds
new file mode 100644
index 00000000..1088d4ab
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_dist7.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fc1d197ed1e20ef08d3ed169ad21c7c6be41fb1fdf3c89dbc055783da89b671c
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_dist7.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_dist7.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_dist7.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_distortion.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_distortion.dds
new file mode 100644
index 00000000..5de8e32d
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_distortion.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8404cc31e7f6517a41bc352701083ed8dc2579483ad4a38348233fea731348ad
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_distortion.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_distortion.thm
new file mode 100644
index 00000000..dd5f4eb5
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_distortion.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:36ea7f730fd4fc45b814b30c54a9a5cf263b33e3a7901ed28202b39df2ff4349
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_flash_07.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_flash_07.dds
new file mode 100644
index 00000000..ac98a9ea
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_flash_07.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d256bedeb40cc3df363970c50be9bd50a7455cb6fa25cf409acffa2cf5e8fdea
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_flash_07.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_flash_07.thm
new file mode 100644
index 00000000..74028e13
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_flash_07.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4be852846eb4502c8b4e098a7cc4503dc37648778680a16b2cba42653771a146
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_glass_shards1.2048.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_glass_shards1.2048.dds
new file mode 100644
index 00000000..cd014597
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_glass_shards1.2048.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bb45de4c6695e4bb7b4a9d07fc7f6d6b3e7c8529bba93f924c97491cb251438c
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_glass_shards2.1024.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_glass_shards2.1024.dds
new file mode 100644
index 00000000..1452881c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_glass_shards2.1024.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:35adeb7cdd614d1cf33e253c1571458a8b131bf65b9fc62bb4e1e60fc7031356
+size 524416
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_glass_shards2.2048.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_glass_shards2.2048.dds
new file mode 100644
index 00000000..78eba0b8
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_glass_shards2.2048.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cd779dc8a9bd9b9e32d9bd66ae53e4c72fc0a1d3392170119f3c544e56bdb691
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_glass_shards2.512.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_glass_shards2.512.dds
new file mode 100644
index 00000000..df6648ce
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_glass_shards2.512.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb08daf3e07cce92d49de51f0af59a8a7d286c4984320cb736a3d5f5db315b5c
+size 174904
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_glass_shards_blend.2048.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_glass_shards_blend.2048.dds
new file mode 100644
index 00000000..82102333
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_glass_shards_blend.2048.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f364cbfbe0d40c001b4e0b0314ff98c8e1b0e6a25e1db69dcd4219a1c5ffe1be
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_spark_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_spark_01.dds
new file mode 100644
index 00000000..06b2183f
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_spark_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a2d3f4755e80c994f6c04880ab9902c9ad3129ec0b157829ac4b519a9d988441
+size 5588
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_spark_01.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_spark_01.thm
new file mode 100644
index 00000000..c921c322
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/pfx_spark_01.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:19d80270dd9c1fdd950c9e08f4e2746810516ece64fe92d0d4ed61c8f1815831
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/puff_00.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/puff_00.dds
new file mode 100644
index 00000000..914ca2f3
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/puff_00.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4b55647a6759f4d0a5159f1266bbf364a62846b5b882eeb600f1c52551f18961
+size 1048704
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/puffcolorsplashflicker.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/puffcolorsplashflicker.dds
new file mode 100644
index 00000000..25f7ac7f
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/puffcolorsplashflicker.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:05ccd8fe3fd8229abd0c1c1e63980a6b32c006bb4b9b41d57eff89a725606b96
+size 65664
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/spark_tiled_a.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/spark_tiled_a.dds
new file mode 100644
index 00000000..bb805408
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/spark_tiled_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2d0b946ee1cea58ec776e80e7ec8e7c0e44c2f2259e171e59cdb82d3a0e1577d
+size 43944
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/sparkwires_b_flicker.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/sparkwires_b_flicker.dds
new file mode 100644
index 00000000..a887925c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/shatterpoint/sparkwires_b_flicker.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ec7a20bd680b26f61825bd175e4445105ca368dada0701a4a7e3f5be8c9d7080
+size 65664
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/BitsGlowyBits01Atlas.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/BitsGlowyBits01Atlas.DDS
new file mode 100644
index 00000000..33745e5d
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/BitsGlowyBits01Atlas.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0a3aa7ad6ae315bd90a0e04a8e464eece7b704c6b140f29b82b97770ab212046
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/distort_anomaly_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/distort_anomaly_01.dds
new file mode 100644
index 00000000..d14e52f9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/distort_anomaly_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f80c50173d7824ae47a50ead5b5ea6bcf6050c2d3fccced7b689e96b2d8d569
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/glow_fire1.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/glow_fire1.dds
new file mode 100644
index 00000000..7f532c3a
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/glow_fire1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9a322dc307ecd81dc74389bf61f85676fff01972756f4025e4e1f36f610f71a0
+size 22000
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/glow_fire1.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/glow_fire1.thm
new file mode 100644
index 00000000..c73fa3ee
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/glow_fire1.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f37945f20ea793b5d00996e14b31dc9e11551dcf7089411e6a1055d4f3cb09d
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/light.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/light.dds
new file mode 100644
index 00000000..5522c9f5
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/light.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c2e563fac9f0952a6022f309342aaec1ddd70a6311e52fcc9ada8690cbf848af
+size 2872
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/light.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/light.thm
new file mode 100644
index 00000000..4aa3b410
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/light.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ad62b43cdd9f8527bc595de305811df496d9788bdcc0f99be52c6754e34d0684
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/pfx_sparks.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/pfx_sparks.dds
new file mode 100644
index 00000000..ceb042b9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/pfx_sparks.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:123500bbe36abc6f266824a00a7763df52ae9433b3d85060498018a6d76801ff
+size 174892
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/pfx_sparks.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/pfx_sparks.thm
new file mode 100644
index 00000000..e4961616
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/pfx_sparks.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fc76dd28c6f8c04da168c86bb0d29ce1d186e0e4bd055524ec664d977a625b37
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/puffcolorsplashflicker.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/puffcolorsplashflicker.dds
new file mode 100644
index 00000000..25f7ac7f
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/puffcolorsplashflicker.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:05ccd8fe3fd8229abd0c1c1e63980a6b32c006bb4b9b41d57eff89a725606b96
+size 65664
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/smoke_burst_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/smoke_burst_02.dds
new file mode 100644
index 00000000..f5d25dad
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/smoke_burst_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c718d0f97c627b935b0eea3aae5bf6d0bad947c150e77a2356b76abb92c2e34a
+size 2796368
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/smokefillvapor01atlassoft_d_small_a.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/smokefillvapor01atlassoft_d_small_a.dds
new file mode 100644
index 00000000..16e51654
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sloth/smokefillvapor01atlassoft_d_small_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9dbee75109c5c795e103e3cd5ee80e7237f061c4595cdb181805f05dfd76eb56
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/BushTrimmings_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/BushTrimmings_d.DDS
new file mode 100644
index 00000000..afdacba3
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/BushTrimmings_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a5b4ff5f8fd3564ae01472af3dd8da0a17226149fd70a0b7ff862fab922315d4
+size 22000
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/ElectricBlast1.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/ElectricBlast1.dds
new file mode 100644
index 00000000..15bd9bc8
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/ElectricBlast1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:41a0c232bc9d4afdeec07e26450b0313dbed92779bfbd13580cffbd465f1a68f
+size 16777344
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/ElectricBlast2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/ElectricBlast2.dds
new file mode 100644
index 00000000..b460d15e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/ElectricBlast2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b10c665cd015c8db12effab7a88e1acdd74031b9337cfb36371677112cf1567c
+size 16777344
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/ElectricBlast3.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/ElectricBlast3.dds
new file mode 100644
index 00000000..a4e08d2c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/ElectricBlast3.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0c8afe95b3e5a8e748f35df1eb403afda494d96a57a50c601fd71e90f2813df2
+size 16777344
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/Flare_Blue_v1.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/Flare_Blue_v1.dds
new file mode 100644
index 00000000..2cb5fa2d
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/Flare_Blue_v1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:da11e26c2d852ee05b597719a402d159bf656c38a83dcc79e28e6c823545704f
+size 22369776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/Gauss1.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/Gauss1.dds
new file mode 100644
index 00000000..5310bfaf
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/Gauss1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3dc31c6f10b7590050caf6fc6d75ac6ce63390485da6b46b64a367b81dce700f
+size 16777344
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/Gauss2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/Gauss2.dds
new file mode 100644
index 00000000..f89c6f31
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/Gauss2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3e04aeb065a5e48524472d87b6f0521e7139592f47ab47379d61a90d71d05c15
+size 16777344
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/GraviBlast1OrangeCut.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/GraviBlast1OrangeCut.dds
new file mode 100644
index 00000000..a0ce4033
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/GraviBlast1OrangeCut.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cd6d8c6ea77bd756a4a77f6b32bc37fd14309480b24e2f78cd8d3d4eb64a9cbc
+size 3145856
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/Portal_8x8_v1.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/Portal_8x8_v1.dds
new file mode 100644
index 00000000..ff2c37b1
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/Portal_8x8_v1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a6f26335b5c3a77577c562df6308604603fcac48e960078da066a58a4145db5b
+size 5592560
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/Portal_8x8_v1_4096.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/Portal_8x8_v1_4096.dds
new file mode 100644
index 00000000..55c82902
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/Portal_8x8_v1_4096.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:656a5d2767729a953a9f40dc97b219b3335db720c2531f221e227b94340c6852
+size 22369776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/cumulus_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/cumulus_02.dds
new file mode 100644
index 00000000..f3072213
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/cumulus_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18306458279c1e6e63f41d43c0aec563fdb6d6593abf3cd801a15a40ec3f2bd3
+size 1398352
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/distort_anomaly_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/distort_anomaly_01.dds
new file mode 100644
index 00000000..d14e52f9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/distort_anomaly_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f80c50173d7824ae47a50ead5b5ea6bcf6050c2d3fccced7b689e96b2d8d569
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/fx_moon_full_foggy.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/fx_moon_full_foggy.dds
new file mode 100644
index 00000000..83851c0d
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/fx_moon_full_foggy.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:333c9d161a74716ab0e47a7a8a309e8a6a277d91389a5c968ddc29797859ac9b
+size 5616
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/lensflarered.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/lensflarered.dds
new file mode 100644
index 00000000..16eee8a2
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/lensflarered.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3a29607e84437338b1df839de862435be049758348dacc71056b2d9ea94e9a9b
+size 524416
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_anomaly_2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_anomaly_2.dds
new file mode 100644
index 00000000..4f185989
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_anomaly_2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:45520886066a116d41b910aa6005c22010865db049b47b1c267767419480ea13
+size 699180
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_anomaly_2.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_anomaly_2.thm
new file mode 100644
index 00000000..edaf17ec
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_anomaly_2.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2719f815e5f0c89729c7289194c8093580a3053de0e2b6dc4b04bbb9e8031918
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_anomaly_flash.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_anomaly_flash.dds
new file mode 100644
index 00000000..a67f556c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_anomaly_flash.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9989ba7630ada6653fe3d5777c7741b7e6aba5cbb1a9412a011194c929a9202c
+size 22000
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_anomaly_flash.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_anomaly_flash.thm
new file mode 100644
index 00000000..be6bee39
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_anomaly_flash.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b678bf73d4e9dc8b8c6909f9da26483315cb417c096237d275453f371b412856
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_dist2inv.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_dist2inv.dds
new file mode 100644
index 00000000..8e014951
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_dist2inv.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ba26409664cb8b5ab7ea6ef8017cdd1dd98d31d3503755440280352fc4a0a8f
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_dist2inv.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_dist2inv.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_dist2inv.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_dist3.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_dist3.dds
new file mode 100644
index 00000000..e8f20226
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_dist3.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2c6df99a4367877f32f14c9b719b548a03028fc6eee129a95b6f0edd54142e8d
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_dist3.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_dist3.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_dist3.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_dist_glass.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_dist_glass.dds
new file mode 100644
index 00000000..2d205e81
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_dist_glass.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8a4376b29edcba246c2637abc124949d752663471d5f9251e20343b86ec1c003
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_dist_glass.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_dist_glass.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_dist_glass.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_teleport.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_teleport.dds
new file mode 100644
index 00000000..e7ddd35c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_teleport.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ae52b93b0b6dac2aca8db4e4d10fcef00ac35f30ee7e591886a20fd3eb70027
+size 349652
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_teleport.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_teleport.thm
new file mode 100644
index 00000000..a6289dc9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/pfx_teleport.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0c7f15e29b5c3dc8633e80d3261f169cffe15e2165d918dd08f9da4b7d46b08c
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/puffcolorsplashflicker.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/puffcolorsplashflicker.dds
new file mode 100644
index 00000000..25f7ac7f
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/puffcolorsplashflicker.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:05ccd8fe3fd8229abd0c1c1e63980a6b32c006bb4b9b41d57eff89a725606b96
+size 65664
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/smoke_burst_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/smoke_burst_02.dds
new file mode 100644
index 00000000..f5d25dad
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/spatial_bubble/smoke_burst_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c718d0f97c627b935b0eea3aae5bf6d0bad947c150e77a2356b76abb92c2e34a
+size 2796368
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/AlbedoShaderSingleFrame.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/AlbedoShaderSingleFrame.dds
new file mode 100644
index 00000000..ec667489
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/AlbedoShaderSingleFrame.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7c3baee82cb81477c3225d92113f980b0415fdcfd05e89b534b242b314552751
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/BushTrimmings_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/BushTrimmings_d.DDS
new file mode 100644
index 00000000..afdacba3
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/BushTrimmings_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a5b4ff5f8fd3564ae01472af3dd8da0a17226149fd70a0b7ff862fab922315d4
+size 22000
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist2.dds
new file mode 100644
index 00000000..4e2247ca
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cdf089393eace20a038017da52f86ca27693c4bdb5b8f1a532f5112b70cd8a35
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist2.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist2.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist2.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist2a.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist2a.dds
new file mode 100644
index 00000000..c475a608
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist2a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f536caa2a73ae6f99ee12496a4e5ef89bafe43c23d4ee980251469746767fcf3
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist2a.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist2a.thm
new file mode 100644
index 00000000..d7931f95
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist2a.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:48175c7ef553e0cabf0153a1eba164cdea698b01193ba5616f89b2c4081e6971
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist3.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist3.dds
new file mode 100644
index 00000000..e8f20226
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist3.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2c6df99a4367877f32f14c9b719b548a03028fc6eee129a95b6f0edd54142e8d
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist3.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist3.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist3.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist4.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist4.dds
new file mode 100644
index 00000000..0da81f03
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist4.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c83231097768e86ecd34d1622edc8bf43bd9ce6b1421f3b73c580803af06c320
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist4.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist4.thm
new file mode 100644
index 00000000..dd5f4eb5
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist4.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:36ea7f730fd4fc45b814b30c54a9a5cf263b33e3a7901ed28202b39df2ff4349
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist7.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist7.dds
new file mode 100644
index 00000000..1088d4ab
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist7.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fc1d197ed1e20ef08d3ed169ad21c7c6be41fb1fdf3c89dbc055783da89b671c
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist7.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist7.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_dist7.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_distortion.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_distortion.dds
new file mode 100644
index 00000000..7f47202e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_distortion.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af6c530ef0f678ccd1767144753f9b1903cfbdc248264e76271a23b7c7da5247
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_distortion.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_distortion.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_distortion.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_flash_04.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_flash_04.dds
new file mode 100644
index 00000000..f780f1d4
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_flash_04.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d24cce3a59ffe31c02b62bd42bf69e1c1d340322965d277d5c70cddc9465b11f
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_flash_04.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_flash_04.thm
new file mode 100644
index 00000000..74028e13
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_flash_04.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4be852846eb4502c8b4e098a7cc4503dc37648778680a16b2cba42653771a146
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_flash_05.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_flash_05.dds
new file mode 100644
index 00000000..413027c8
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_flash_05.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:147f12eb0f3879bc8b16294bbc9d1c67c37a415ba5201f694c9ed8d197e10422
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_flash_05.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_flash_05.thm
new file mode 100644
index 00000000..74028e13
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_flash_05.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4be852846eb4502c8b4e098a7cc4503dc37648778680a16b2cba42653771a146
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_flash_07.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_flash_07.dds
new file mode 100644
index 00000000..ac98a9ea
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_flash_07.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d256bedeb40cc3df363970c50be9bd50a7455cb6fa25cf409acffa2cf5e8fdea
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_flash_07.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_flash_07.thm
new file mode 100644
index 00000000..74028e13
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/pfx_flash_07.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4be852846eb4502c8b4e098a7cc4503dc37648778680a16b2cba42653771a146
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/puffcolorsplashflicker.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/puffcolorsplashflicker.dds
new file mode 100644
index 00000000..25f7ac7f
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/puffcolorsplashflicker.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:05ccd8fe3fd8229abd0c1c1e63980a6b32c006bb4b9b41d57eff89a725606b96
+size 65664
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/smoke_burst_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/smoke_burst_02.dds
new file mode 100644
index 00000000..77198c8f
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/smoke_burst_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b201be0c2c82a2b6301e08253aa1412a7e6ac66256f124b7631e3849c3398a9f
+size 699216
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/smoke_tiled_b.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/smoke_tiled_b.dds
new file mode 100644
index 00000000..497358ba
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/smoke_tiled_b.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3a429059d797ce97ad75278c3a4c2764a219efa6ed0a27dfebb31e5fe488df85
+size 349776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/white_flare.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/white_flare.dds
new file mode 100644
index 00000000..aad22c38
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/sphere/white_flare.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:61ff08f803ed2d063003f632885bec1b73a8d79edc81708addab4357240f80a6
+size 524416
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/BitsLeaves01Anim_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/BitsLeaves01Anim_d.DDS
new file mode 100644
index 00000000..9a962747
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/BitsLeaves01Anim_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0fd684df0466e51b40e3f1991b66adcd57bdbd71320b9a1f20b6bbd52cbd5f71
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/BitsLeavesSprite.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/BitsLeavesSprite.dds
new file mode 100644
index 00000000..9b05241e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/BitsLeavesSprite.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c6d16811327c9fb3bcb07b3e9a272c0ddd6c05b66fc2e35facf0a383cfb4d4a5
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/BitsSmallRocky_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/BitsSmallRocky_d.DDS
new file mode 100644
index 00000000..902a0784
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/BitsSmallRocky_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4cf37372b3ab38f2fa6ebfb3ffc3d022760d074ae210b1e802f30a5a659a13f4
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/BitsWoodSplintersAtlas.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/BitsWoodSplintersAtlas.DDS
new file mode 100644
index 00000000..30e60355
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/BitsWoodSplintersAtlas.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2a8beba0019db53163c091351bf1256a40e518fac93b585e769d55b8bcfd753d
+size 43856
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/BushTrimmings_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/BushTrimmings_d.DDS
new file mode 100644
index 00000000..afdacba3
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/BushTrimmings_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a5b4ff5f8fd3564ae01472af3dd8da0a17226149fd70a0b7ff862fab922315d4
+size 22000
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/ClothBitAnim.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/ClothBitAnim.DDS
new file mode 100644
index 00000000..714a0ceb
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/ClothBitAnim.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:365ae78f883ff937169e1579673fdfa1716621c7a4ba769b945e440064b63067
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/Leaf.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/Leaf.dds
new file mode 100644
index 00000000..3dafd172
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/Leaf.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f530c48dfac13b37aeb202fe865107c6bd22c27f8956bc724cc97f0a28a84029
+size 13120
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/Spray_v1.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/Spray_v1.dds
new file mode 100644
index 00000000..8543b5f1
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/Spray_v1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a0a0f52d49c3711d52c5da24a43c042fac94c8bfdeebf05b5a00135c037a1a00
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/Spray_v1_512.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/Spray_v1_512.dds
new file mode 100644
index 00000000..92ca5e26
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/Spray_v1_512.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:232206c94eac4a840a0aaa2376406c58e20235799a4a15ef66cfeff8dca5ec75
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/pfx_ani-smoke-01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/pfx_ani-smoke-01.dds
new file mode 100644
index 00000000..c741937d
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/pfx_ani-smoke-01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bdff6a339eeb5a186c23d33f1c778b9fba66bdc92c2756a683137bec73a8de13
+size 349652
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/pfx_ani-smoke-01.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/pfx_ani-smoke-01.thm
new file mode 100644
index 00000000..5e6eb0d4
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/pfx_ani-smoke-01.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5a2c0cfb2cb87d0d561e822f5a040cdc525369807f66eb5b283eb1aa9698e1ef
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/pfx_dist2inv.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/pfx_dist2inv.dds
new file mode 100644
index 00000000..8e014951
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/pfx_dist2inv.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ba26409664cb8b5ab7ea6ef8017cdd1dd98d31d3503755440280352fc4a0a8f
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/pfx_dist2inv.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/pfx_dist2inv.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/pfx_dist2inv.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/pfx_dist3.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/pfx_dist3.dds
new file mode 100644
index 00000000..e8f20226
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/pfx_dist3.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2c6df99a4367877f32f14c9b719b548a03028fc6eee129a95b6f0edd54142e8d
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/pfx_dist3.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/pfx_dist3.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/pfx_dist3.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/sparks_tiled.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/sparks_tiled.dds
new file mode 100644
index 00000000..34d04684
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/springboard/sparks_tiled.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:96c4bd95bda08e9cdaa076ef6a1842518a779c25bcfdf3bf04c8eb08fab4519d
+size 22096
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/AlbedoShaderSingleFrame.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/AlbedoShaderSingleFrame.dds
new file mode 100644
index 00000000..ec667489
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/AlbedoShaderSingleFrame.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7c3baee82cb81477c3225d92113f980b0415fdcfd05e89b534b242b314552751
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/ClothBitAnim.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/ClothBitAnim.DDS
new file mode 100644
index 00000000..714a0ceb
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/ClothBitAnim.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:365ae78f883ff937169e1579673fdfa1716621c7a4ba769b945e440064b63067
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/Flare_Blue_v1.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/Flare_Blue_v1.dds
new file mode 100644
index 00000000..c828aff0
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/Flare_Blue_v1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2c77e6495da9ef9eeef4fed4873d46bb0b850624cd7649eb5985a4142ec8f79b
+size 5592560
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/Flare_Gray_v1.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/Flare_Gray_v1.dds
new file mode 100644
index 00000000..a55d176b
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/Flare_Gray_v1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a09c750b27a28f3d9ab2bb907aa157cc6394049113549d47922cba45a4fd547f
+size 5592560
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/SmokeFillVapor01AtlasSoft_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/SmokeFillVapor01AtlasSoft_d.DDS
new file mode 100644
index 00000000..a4ff5b3a
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/SmokeFillVapor01AtlasSoft_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ae0b8e31c88ad8458ddd5b4d3b5a15651f7c763f46fbc742b6df086e96f18ab
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/around.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/around.dds
new file mode 100644
index 00000000..9b380250
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/around.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0f1b395503f6795cc6416eb603e1925fea8fefcf7366ae122b0b427873483017
+size 5592656
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/broken_glass.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/broken_glass.dds
new file mode 100644
index 00000000..2f85d580
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/broken_glass.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:96d501bd0b356ed5f1f26c2dd29fed07c492955cc195b4ae289c385716668f7f
+size 147584
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/cumulus_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/cumulus_02.dds
new file mode 100644
index 00000000..f3072213
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/cumulus_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18306458279c1e6e63f41d43c0aec563fdb6d6593abf3cd801a15a40ec3f2bd3
+size 1398352
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/dirtburst_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/dirtburst_01.dds
new file mode 100644
index 00000000..c66fa862
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/dirtburst_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d272621b9f5a79e2741169f87aa57ed9b740035f9a74e7a03f808af316b31556
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/distort_anomaly_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/distort_anomaly_01.dds
new file mode 100644
index 00000000..d14e52f9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/distort_anomaly_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f80c50173d7824ae47a50ead5b5ea6bcf6050c2d3fccced7b689e96b2d8d569
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_dist2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_dist2.dds
new file mode 100644
index 00000000..4e2247ca
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_dist2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cdf089393eace20a038017da52f86ca27693c4bdb5b8f1a532f5112b70cd8a35
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_dist2.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_dist2.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_dist2.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_dist3_005.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_dist3_005.dds
new file mode 100644
index 00000000..dd7b2f79
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_dist3_005.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:32512c119d37f961a4e2bc33b3faa45a9724453fb379a2d9dd33e1af7b2ac1e2
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_dist3_006.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_dist3_006.dds
new file mode 100644
index 00000000..9927fe84
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_dist3_006.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5de06cce11b57f697e7ed09ea0c7f7e1ed0de71913d9145e55e17899c5f7f3c0
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_glass_shards1.2048.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_glass_shards1.2048.dds
new file mode 100644
index 00000000..cd014597
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_glass_shards1.2048.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bb45de4c6695e4bb7b4a9d07fc7f6d6b3e7c8529bba93f924c97491cb251438c
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_glass_shards2.1024.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_glass_shards2.1024.dds
new file mode 100644
index 00000000..1452881c
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_glass_shards2.1024.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:35adeb7cdd614d1cf33e253c1571458a8b131bf65b9fc62bb4e1e60fc7031356
+size 524416
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_glass_shards2.2048.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_glass_shards2.2048.dds
new file mode 100644
index 00000000..b7b21d12
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_glass_shards2.2048.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e84e048520362f8bd2bad9a60dd605dc8361e3e248d2db3c411927ca8fdc092a
+size 1048704
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_glass_shards2.512.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_glass_shards2.512.dds
new file mode 100644
index 00000000..df6648ce
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_glass_shards2.512.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb08daf3e07cce92d49de51f0af59a8a7d286c4984320cb736a3d5f5db315b5c
+size 174904
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_glass_shards_blend.2048.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_glass_shards_blend.2048.dds
new file mode 100644
index 00000000..82102333
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_glass_shards_blend.2048.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f364cbfbe0d40c001b4e0b0314ff98c8e1b0e6a25e1db69dcd4219a1c5ffe1be
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_spark_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_spark_01.dds
new file mode 100644
index 00000000..06b2183f
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_spark_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a2d3f4755e80c994f6c04880ab9902c9ad3129ec0b157829ac4b519a9d988441
+size 5588
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_spark_01.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_spark_01.thm
new file mode 100644
index 00000000..c921c322
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/pfx_spark_01.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:19d80270dd9c1fdd950c9e08f4e2746810516ece64fe92d0d4ed61c8f1815831
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/spark_tiled_a_1.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/spark_tiled_a_1.dds
new file mode 100644
index 00000000..862f52e7
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/spark_tiled_a_1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:977ded532b160a7742af2ffde7ae48e923499922d2d7d5c54319148cadf80fc3
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/spore_a.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/spore_a.dds
new file mode 100644
index 00000000..187a5de1
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/thorn/spore_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e7bed99ebfd320f89aff016f4a29be680bc5d09b5291cdff79a719d6bcc04625
+size 349776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/BitsLeaves01Anim_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/BitsLeaves01Anim_d.DDS
new file mode 100644
index 00000000..19afba37
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/BitsLeaves01Anim_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:69c41f40b74a8209c78e4d265b4ff74966a9e9c597f8955959d76ba823b235dc
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/BushTrimmings_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/BushTrimmings_d.DDS
new file mode 100644
index 00000000..afdacba3
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/BushTrimmings_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a5b4ff5f8fd3564ae01472af3dd8da0a17226149fd70a0b7ff862fab922315d4
+size 22000
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/Darkness_Core_4k_v1.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/Darkness_Core_4k_v1.dds
new file mode 100644
index 00000000..8a07f5d2
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/Darkness_Core_4k_v1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:23c840f3320bf28d96b81b48c0e2f3577d3b3e5b64639e29fb7161b644922c77
+size 5592560
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/Leaf.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/Leaf.dds
new file mode 100644
index 00000000..3dafd172
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/Leaf.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f530c48dfac13b37aeb202fe865107c6bd22c27f8956bc724cc97f0a28a84029
+size 13120
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/anm_smoke_desat.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/anm_smoke_desat.dds
new file mode 100644
index 00000000..f37249ea
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/anm_smoke_desat.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b417ff875e765b8c8ff4f1820cd8fedc1e08c8194cd3310ab9d9f000936e6738
+size 1398352
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/around.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/around.dds
new file mode 100644
index 00000000..9b380250
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/around.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0f1b395503f6795cc6416eb603e1925fea8fefcf7366ae122b0b427873483017
+size 5592656
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/distort_anomaly_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/distort_anomaly_01.dds
new file mode 100644
index 00000000..d14e52f9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/distort_anomaly_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f80c50173d7824ae47a50ead5b5ea6bcf6050c2d3fccced7b689e96b2d8d569
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/dust_loop_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/dust_loop_02.dds
new file mode 100644
index 00000000..5b1b712e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/dust_loop_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e9149bdeed4395c05d4a07bfb8af7adedcaae45f2772507606ccbd202bb2b3e4
+size 1048704
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/fx_moon_full_foggy.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/fx_moon_full_foggy.dds
new file mode 100644
index 00000000..c077004b
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/fx_moon_full_foggy.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ef698d52d98c197cbc40d6e058f2a9bfa64655ae203f60ab79d1d60f7257c94b
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_dist2a.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_dist2a.dds
new file mode 100644
index 00000000..c475a608
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_dist2a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f536caa2a73ae6f99ee12496a4e5ef89bafe43c23d4ee980251469746767fcf3
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_dist2a.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_dist2a.thm
new file mode 100644
index 00000000..d7931f95
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_dist2a.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:48175c7ef553e0cabf0153a1eba164cdea698b01193ba5616f89b2c4081e6971
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_distortion.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_distortion.dds
new file mode 100644
index 00000000..7f47202e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_distortion.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af6c530ef0f678ccd1767144753f9b1903cfbdc248264e76271a23b7c7da5247
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_distortion.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_distortion.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_distortion.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_smoke_g.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_smoke_g.dds
new file mode 100644
index 00000000..2d0cbaaf
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_smoke_g.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:72bc3912fcd941efe373772f86c938e1b8c3d2be5d6174094380b37ddccc0451
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_smoke_n.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_smoke_n.dds
new file mode 100644
index 00000000..b2a510b9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_smoke_n.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5bb6b139fa6cd1ea61b05dcfc5eaeecc19f280796f8e1d80365cb495a20581cf
+size 65664
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_smokepuffs2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_smokepuffs2.dds
new file mode 100644
index 00000000..5c07aeb6
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_smokepuffs2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4645b88dc4138754b18e3fce9a1c12e852766561413bd99b66e8fcd48daba9e7
+size 43856
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_smokepuffs2.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_smokepuffs2.thm
new file mode 100644
index 00000000..12402139
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/pfx_smokepuffs2.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d42f3c30a50d183be48f0fd03246d670a0d992a31ec5166e950285d0bc30a574
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/puffcolorsplashflicker2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/puffcolorsplashflicker2.dds
new file mode 100644
index 00000000..1a9fb2ce
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/puffcolorsplashflicker2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b03079355d9dbfe3069d3c6f9a68896a4279b49121b402d395f0240dbd52e161
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/smoke_tiled_b.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/smoke_tiled_b.dds
new file mode 100644
index 00000000..497358ba
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/umbra/smoke_tiled_b.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3a429059d797ce97ad75278c3a4c2764a219efa6ed0a27dfebb31e5fe488df85
+size 349776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/BitsLeaves01Anim_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/BitsLeaves01Anim_d.DDS
new file mode 100644
index 00000000..9a962747
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/BitsLeaves01Anim_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0fd684df0466e51b40e3f1991b66adcd57bdbd71320b9a1f20b6bbd52cbd5f71
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/BushTrimmings_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/BushTrimmings_d.DDS
new file mode 100644
index 00000000..afdacba3
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/BushTrimmings_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a5b4ff5f8fd3564ae01472af3dd8da0a17226149fd70a0b7ff862fab922315d4
+size 22000
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/ElectricBlast3.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/ElectricBlast3.dds
new file mode 100644
index 00000000..aa27c538
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/ElectricBlast3.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:44db32133a49387e2a3c2df0b451a031088662eafd7444d6031f86345be4b613
+size 5592560
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/Flash_particle.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/Flash_particle.dds
new file mode 100644
index 00000000..c077004b
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/Flash_particle.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ef698d52d98c197cbc40d6e058f2a9bfa64655ae203f60ab79d1d60f7257c94b
+size 87536
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/GenericPuff.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/GenericPuff.dds
new file mode 100644
index 00000000..40ded8a9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/GenericPuff.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c964f2670114b6d5eb84e040976593f483a44b9862266e8139e24c9a3dc3725b
+size 262272
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/around.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/around.dds
new file mode 100644
index 00000000..9b380250
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/around.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0f1b395503f6795cc6416eb603e1925fea8fefcf7366ae122b0b427873483017
+size 5592656
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/cumulus_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/cumulus_02.dds
new file mode 100644
index 00000000..f3072213
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/cumulus_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18306458279c1e6e63f41d43c0aec563fdb6d6593abf3cd801a15a40ec3f2bd3
+size 1398352
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/distort_anomaly_01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/distort_anomaly_01.dds
new file mode 100644
index 00000000..d14e52f9
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/distort_anomaly_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f80c50173d7824ae47a50ead5b5ea6bcf6050c2d3fccced7b689e96b2d8d569
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/dust_loop_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/dust_loop_02.dds
new file mode 100644
index 00000000..5b1b712e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/dust_loop_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e9149bdeed4395c05d4a07bfb8af7adedcaae45f2772507606ccbd202bb2b3e4
+size 1048704
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/pfx_anomaly_8.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/pfx_anomaly_8.dds
new file mode 100644
index 00000000..82a0b8b8
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/pfx_anomaly_8.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:697a1ef66dd2536225808755233c73c20cecfd096d554e7413408b96bfa1fe2a
+size 349652
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/pfx_anomaly_8.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/pfx_anomaly_8.thm
new file mode 100644
index 00000000..8e6d59fa
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/pfx_anomaly_8.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1811671497ba14b1e449313cdc75b7d9826ce3f9b6b918c1a121fd9fe6b1e8ad
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/pfx_gradient.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/pfx_gradient.dds
new file mode 100644
index 00000000..56395636
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/pfx_gradient.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0a3135c6403550fcb18d61ef1d4acd8f690d55c289f5e2617ff57e4ec9344017
+size 22000
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/pfx_gradient.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/pfx_gradient.thm
new file mode 100644
index 00000000..74028e13
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/pfx_gradient.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4be852846eb4502c8b4e098a7cc4503dc37648778680a16b2cba42653771a146
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/smoke_burst_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/smoke_burst_02.dds
new file mode 100644
index 00000000..f5d25dad
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/smoke_burst_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c718d0f97c627b935b0eea3aae5bf6d0bad947c150e77a2356b76abb92c2e34a
+size 2796368
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/water_river_a.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/water_river_a.dds
new file mode 100644
index 00000000..7bd82a35
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/wish_granter/water_river_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2cfb896d252874ffd33f2ff711cf48bf0456c9e714d5eb3c2510655bc0ef6cb7
+size 87632
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/SmokeBurstPuffAnim.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/SmokeBurstPuffAnim.DDS
new file mode 100644
index 00000000..1da1d4bd
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/SmokeBurstPuffAnim.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:37f3707fdd73f4611597b9f441e697d3536161b8f02a131d6d3cbdaa71924912
+size 1398256
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/SmokeFillVapor01AtlasSoft_d.DDS b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/SmokeFillVapor01AtlasSoft_d.DDS
new file mode 100644
index 00000000..a4ff5b3a
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/SmokeFillVapor01AtlasSoft_d.DDS
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ae0b8e31c88ad8458ddd5b4d3b5a15651f7c763f46fbc742b6df086e96f18ab
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/anm_smoke_07a.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/anm_smoke_07a.dds
new file mode 100644
index 00000000..548ae950
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/anm_smoke_07a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e5cbd3549a292be35bb08690a69d47c11b60a72dca2e0485b15acf9d3be891d1
+size 1398352
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/blowingfire_fwd.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/blowingfire_fwd.dds
new file mode 100644
index 00000000..8055c679
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/blowingfire_fwd.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:62f7d21c9e2f39b7f5969a5d34364dc47bf095a459c4fce1a823247572a799ef
+size 2097280
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/bonefire3.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/bonefire3.dds
new file mode 100644
index 00000000..10fcf406
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/bonefire3.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e6bb61b0843dfd895722f8fbe1787fae7ef4bc1d9c03f021168c62cf1264909c
+size 4194432
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/bonefire3_1.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/bonefire3_1.dds
new file mode 100644
index 00000000..ff260dad
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/bonefire3_1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a0e86ba06e45735215a52b67f8ba56e153fcc3290ebea424358219e2a9d5867e
+size 5592560
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/bonefirethin.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/bonefirethin.dds
new file mode 100644
index 00000000..bf4d24c1
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/bonefirethin.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:98a75af56b6c978798bece2d61e53183a795b4e0f6702a270448c9704a256d85
+size 4194432
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/cumulus_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/cumulus_02.dds
new file mode 100644
index 00000000..f3072213
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/cumulus_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18306458279c1e6e63f41d43c0aec563fdb6d6593abf3cd801a15a40ec3f2bd3
+size 1398352
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/dust_puff_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/dust_puff_02.dds
new file mode 100644
index 00000000..45507099
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/dust_puff_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:946f1e3f9037bfe7f57821380d3b29bea881dc436864a4ddc722d751bb47828b
+size 1048704
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/grdbasefire_supernova.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/grdbasefire_supernova.dds
new file mode 100644
index 00000000..2a27f188
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/grdbasefire_supernova.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1fb694cba604ab5955cb570a72aad118f7d14f617d587e113b55f0d0c226ecae
+size 4194432
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_ani-fire01.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_ani-fire01.dds
new file mode 100644
index 00000000..ceff85d0
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_ani-fire01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a653fa21d52b22920c2f9fde2327e975ce9d7f053bcbdaed09afdd4496e473c4
+size 5592532
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_ani-fire01.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_ani-fire01.thm
new file mode 100644
index 00000000..0e335204
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_ani-fire01.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8b0fefd9ac9b9e077147049722daa0f81ac300a54cd63a4b7a47e1bf949a5127
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_dist2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_dist2.dds
new file mode 100644
index 00000000..4e2247ca
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_dist2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cdf089393eace20a038017da52f86ca27693c4bdb5b8f1a532f5112b70cd8a35
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_dist2.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_dist2.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_dist2.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_dist2inv.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_dist2inv.dds
new file mode 100644
index 00000000..8e014951
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_dist2inv.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ba26409664cb8b5ab7ea6ef8017cdd1dd98d31d3503755440280352fc4a0a8f
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_dist2inv.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_dist2inv.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_dist2inv.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_distortion.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_distortion.dds
new file mode 100644
index 00000000..7f47202e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_distortion.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af6c530ef0f678ccd1767144753f9b1903cfbdc248264e76271a23b7c7da5247
+size 87508
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_distortion.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_distortion.thm
new file mode 100644
index 00000000..e0221a23
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_distortion.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a700df415135047090328ac61086e3fcc78e8f5f206fbdae185655358f59436a
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_smoke_b.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_smoke_b.dds
new file mode 100644
index 00000000..aa458753
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_smoke_b.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:74be3baec69cc02e8d97dc4a34ece7de31d6e7e98cec6b8bdc20b5d0a54bd80e
+size 349652
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_smoke_b.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_smoke_b.thm
new file mode 100644
index 00000000..6b1c1811
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/pfx_smoke_b.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:167d27b8739f02b7a26b90cc944290f3198051be9763bd99b0008e44639e8c05
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/puff_00.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/puff_00.dds
new file mode 100644
index 00000000..914ca2f3
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/puff_00.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4b55647a6759f4d0a5159f1266bbf364a62846b5b882eeb600f1c52551f18961
+size 1048704
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/smoke_burst_06.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/smoke_burst_06.dds
new file mode 100644
index 00000000..ff705c1f
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/smoke_burst_06.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9b33fdecdbe78a8cb7c5c7d6274e6a5708e3656306cda9ca00ca03bed11d175b
+size 1048704
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/spark.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/spark.dds
new file mode 100644
index 00000000..28c6e103
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/spark.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:42f1281a0456b21e22a4ea949eb0966ff2853dbbacf5ce93dcd35c0129fd2da9
+size 15584
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/spark_tiled_a.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/spark_tiled_a.dds
new file mode 100644
index 00000000..bb805408
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/spark_tiled_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2d0b946ee1cea58ec776e80e7ec8e7c0e44c2f2259e171e59cdb82d3a0e1577d
+size 43944
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/sparks_tiled.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/sparks_tiled.dds
new file mode 100644
index 00000000..34d04684
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zharka/sparks_tiled.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:96c4bd95bda08e9cdaa076ef6a1842518a779c25bcfdf3bf04c8eb08fab4519d
+size 22096
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zones/acidic/cumulus_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zones/acidic/cumulus_02.dds
new file mode 100644
index 00000000..cf1e920a
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zones/acidic/cumulus_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ac98f8df0f1b6cf976a7cd57d349430c9e689feaf007103b6cdfe9baa414c6b3
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zones/psychic/pfx_distortion.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zones/psychic/pfx_distortion.dds
new file mode 100644
index 00000000..5de8e32d
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zones/psychic/pfx_distortion.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8404cc31e7f6517a41bc352701083ed8dc2579483ad4a38348233fea731348ad
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/anm_smoke_05a.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/anm_smoke_05a.dds
new file mode 100644
index 00000000..60f4c2f8
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/anm_smoke_05a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5edd9659c28562b2726aa403102eb2e4ab82d9f3a1a89452bfce9b7babc5dc63
+size 349776
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/anm_smoke_desat.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/anm_smoke_desat.dds
new file mode 100644
index 00000000..f37249ea
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/anm_smoke_desat.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b417ff875e765b8c8ff4f1820cd8fedc1e08c8194cd3310ab9d9f000936e6738
+size 1398352
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/cumulus_02.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/cumulus_02.dds
new file mode 100644
index 00000000..cf1e920a
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/cumulus_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ac98f8df0f1b6cf976a7cd57d349430c9e689feaf007103b6cdfe9baa414c6b3
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/pfx_dist2.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/pfx_dist2.dds
new file mode 100644
index 00000000..08705ffe
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/pfx_dist2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ed88109c65997c1ebc7cd7269e6f974c12548eb01fdc4804f3426381cb676036
+size 22000
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/pfx_dist2.thm b/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/pfx_dist2.thm
new file mode 100644
index 00000000..8b4e7781
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/pfx_dist2.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fdf15331005c0557febbf41eea1aa7d546ddbcd4cbc2be4eeebe800bd89393a2
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/pfx_distortion.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/pfx_distortion.dds
new file mode 100644
index 00000000..5de8e32d
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/pfx_distortion.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8404cc31e7f6517a41bc352701083ed8dc2579483ad4a38348233fea731348ad
+size 349680
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/spark.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/spark.dds
new file mode 100644
index 00000000..28c6e103
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/spark.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:42f1281a0456b21e22a4ea949eb0966ff2853dbbacf5ce93dcd35c0129fd2da9
+size 15584
diff --git a/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/sparks_tiled.dds b/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/sparks_tiled.dds
new file mode 100644
index 00000000..34d04684
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/anomalies/zones/thermal/sparks_tiled.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:96c4bd95bda08e9cdaa076ef6a1842518a779c25bcfdf3bf04c8eb08fab4519d
+size 22096
diff --git a/mods/Arrival/gamedata/textures/semitone/environmental/Dandelion_Seed_v1.dds b/mods/Arrival/gamedata/textures/semitone/environmental/Dandelion_Seed_v1.dds
new file mode 100644
index 00000000..e4df8ace
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/environmental/Dandelion_Seed_v1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e36e6b09121dfb5ff1ca6b5eb486193af9703126cc11c27a3896ec4ce5b0d5c2
+size 1520
diff --git a/mods/Arrival/gamedata/textures/semitone/environmental/Dandelion_Seed_v2.dds b/mods/Arrival/gamedata/textures/semitone/environmental/Dandelion_Seed_v2.dds
new file mode 100644
index 00000000..ab4c43de
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/environmental/Dandelion_Seed_v2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2a0f5ecdeabc4fbefbbeeb4a5cf163e4d69832e832ada9eb2db15a8d55fdcd7f
+size 1520
diff --git a/mods/Arrival/gamedata/textures/semitone/environmental/Maple_Seed_v1.dds b/mods/Arrival/gamedata/textures/semitone/environmental/Maple_Seed_v1.dds
new file mode 100644
index 00000000..62a175b2
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/environmental/Maple_Seed_v1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:93012c56f88edaf714af3c8eda47b21678901065ab6bca65cccff5d16c7fb0d3
+size 1520
diff --git a/mods/Arrival/gamedata/textures/semitone/environmental/Maple_Seed_v2.dds b/mods/Arrival/gamedata/textures/semitone/environmental/Maple_Seed_v2.dds
new file mode 100644
index 00000000..35757c1e
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/environmental/Maple_Seed_v2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2e9620c941c7b6524675e8b499018b377444009ecfd4bbf219339b84d0ffeaae
+size 1520
diff --git a/mods/Arrival/gamedata/textures/semitone/environmental/pfx_leaves_01.dds b/mods/Arrival/gamedata/textures/semitone/environmental/pfx_leaves_01.dds
new file mode 100644
index 00000000..86fe436b
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/environmental/pfx_leaves_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0ca5db5b1015a01ade8478b711b8d6b2db8f811d8241a8b0b0849cee4346f0be
+size 21972
diff --git a/mods/Arrival/gamedata/textures/semitone/environmental/pfx_leaves_01.thm b/mods/Arrival/gamedata/textures/semitone/environmental/pfx_leaves_01.thm
new file mode 100644
index 00000000..f40ae750
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/environmental/pfx_leaves_01.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d9e06b777da1031cea7e8adbe6e90c65ed4cbc86c96a32385fd6c81a5e6540d4
+size 138
diff --git a/mods/Arrival/gamedata/textures/semitone/environmental/seed_a.dds b/mods/Arrival/gamedata/textures/semitone/environmental/seed_a.dds
new file mode 100644
index 00000000..8eb15b9d
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/semitone/environmental/seed_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:980d722837e6debdc0143314fa5e3e49e162e2f605509b03162e9b5cc51c7858
+size 2984
diff --git a/mods/Arrival/gamedata/textures/ui/guide/encyclopedia_anomalies_drx_da.dds b/mods/Arrival/gamedata/textures/ui/guide/encyclopedia_anomalies_drx_da.dds
new file mode 100644
index 00000000..f966c6be
--- /dev/null
+++ b/mods/Arrival/gamedata/textures/ui/guide/encyclopedia_anomalies_drx_da.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:094e61f83ba48bb32bc7acadb907c29ab1cd25ac3bebe7fdc1afc1233c30b818
+size 2796432
diff --git a/mods/Arrival/meta.ini b/mods/Arrival/meta.ini
new file mode 100644
index 00000000..cd58acda
--- /dev/null
+++ b/mods/Arrival/meta.ini
@@ -0,0 +1,28 @@
+[General]
+gameName=stalkeranomaly
+modid=0
+version=1.0.0.0
+newestVersion=
+category="-1,"
+nexusFileStatus=1
+installationFile=Arrival_13.7z
+repository=Nexus
+ignoredVersion=
+comments=
+notes=
+nexusDescription=
+url=https://www.moddb.com/mods/stalker-anomaly/addons/arrival-anomalies
+hasCustomURL=true
+lastNexusQuery=
+lastNexusUpdate=
+nexusLastModified=2024-03-21T01:42:30Z
+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/Atmospherics/gamedata/configs/environment/suns.ltx b/mods/Atmospherics/gamedata/configs/environment/suns.ltx
index 9a9638c3..6860ce48 100644
--- a/mods/Atmospherics/gamedata/configs/environment/suns.ltx
+++ b/mods/Atmospherics/gamedata/configs/environment/suns.ltx
@@ -708,6 +708,28 @@
sun_shader = effects\sun
sun_texture = anamflares\sun_day.tga ; = fx\fx_sun_rise.tga
+[cloudy_light_day6]
+//DAYTIME TEMPLATE
+ blend_time = 10 ;(сек)
+ blend_rise_time = 30 ;(сек)
+ blend_down_time = 30 ;(сек)
+ flare_opacity = 1, 1, 1 ;
+ flare_position = -3, 5, 7 ;
+ flare_radius = 0.3, 0.3, 0.5 ;
+ flare_shader = effects\flare
+ flare_textures = anamflares\flare_02.tga, anamflares\flare_03.tga, ;anamflares\sun_day_diffuse.tga;
+ flares = off ;
+ gradient = on ;
+ gradient_opacity = 0.58 ;
+ gradient_radius = 1.4 ;
+ gradient_shader = effects\flare
+ gradient_texture = anamflares\flare_01.tga ;
+ sun = on
+ sun_ignore_color = false
+ sun_radius = 0.14
+ sun_shader = effects\sun
+ sun_texture = anamflares\sun_day_01.tga ; = fx\fx_sun_rise.tga
+
[cloudy_light_day_add]
//DAYTIME TEMPLATE
blend_down_time = 30 ;(сек)
@@ -742,12 +764,12 @@
flares = on ; = off
gradient = on ; = on
gradient_opacity = 1 ; = 1.1
- gradient_radius = 2 ; = 0.6
+ gradient_radius = 1 ; = 0.6
gradient_shader = effects\flare
gradient_texture = anamflares\anam_flare01.tga ; = fx\fx_gradient1.tga
sun = on
sun_ignore_color = true
- sun_radius = 0.295
+ sun_radius = 0.195
sun_shader = effects\sun
sun_texture = anamflares\sun_day.tga ; = fx\fx_sun2.tga
@@ -944,7 +966,7 @@
flare_opacity = 0.340, 0.260, 0.500, 0.420, 0.260, 0.260
flare_position = 0 ; = 1.300, 1.000, 0.500, -0.300, -0.600, -1.000
flare_radius = 2, 1 ; = 0.080, 0.120, 0.040, 0.080, 0.120, 0.300
- flare_textures = anamflares\flare_02.tga, anamflares\sun_day_diffuse.tga; = fx\fx_flare1.tga, fx\fx_flare2.tga, fx\fx_flare2.tga, fx\fx_flare2.tga, fx\fx_flare3.tga, fx\fx_flare1.tga
+ flare_textures = anamflares\flare_02.tga, anamflares\sun_day_diffuse2.tga; = fx\fx_flare1.tga, fx\fx_flare2.tga, fx\fx_flare2.tga, fx\fx_flare2.tga, fx\fx_flare3.tga, fx\fx_flare1.tga
flare_shader = effects\flare
flares = on ; = off
gradient = on ; = on
diff --git a/mods/Atmospherics/gamedata/configs/environment/weathers/w_clear1.ltx b/mods/Atmospherics/gamedata/configs/environment/weathers/w_clear1.ltx
index 32a5b144..a83eda6a 100644
--- a/mods/Atmospherics/gamedata/configs/environment/weathers/w_clear1.ltx
+++ b/mods/Atmospherics/gamedata/configs/environment/weathers/w_clear1.ltx
@@ -481,7 +481,7 @@
sky_rotation = 1.2
sky_texture = sky\af3_a_clear\09-00
sun = clear_sunrise
- sun_color = 0.54, 0.505, 0.475
+ sun_color = 0.53, 0.495, 0.465
sun_shafts_intensity = 0.065
thunderbolt_collection =
thunderbolt_duration = 0.03
@@ -507,7 +507,7 @@
sky_rotation = 1.3
sky_texture = sky\af3_a_clear\09-00
sun = clear_sunrise
- sun_color = 0.513, 0.49, 0.462
+ sun_color = 0.503, 0.48, 0.452
sun_shafts_intensity = 0.065
thunderbolt_collection =
thunderbolt_duration = 0.03
@@ -533,7 +533,7 @@
sky_rotation = 1.39
sky_texture = sky\af3_a_clear\09-00
sun = clear_sunrise
- sun_color = 0.515, 0.495, 0.47
+ sun_color = 0.505, 0.485, 0.46
sun_shafts_intensity = 0.065
thunderbolt_collection =
thunderbolt_duration = 0.03
@@ -555,12 +555,12 @@
hemisphere_color = 0.315, 0.295, 0.26, 1
rain_color = 0.68, 0.64, 0.6
rain_density = 0
- sky_color = 0.8, 0.78, 0.78
+ sky_color = 0.8, 0.77, 0.78
sky_rotation = 1.4
sky_texture = sky\af3_a_clear\13-00
sun = clear_sunrise
- sun_color = 0.52, 0.495, 0.47
- sun_shafts_intensity = 0.055
+ sun_color = 0.51, 0.485, 0.46
+ sun_shafts_intensity = 0.065
thunderbolt_collection =
thunderbolt_duration = 0.06
thunderbolt_period = 0
@@ -581,12 +581,12 @@
hemisphere_color = 0.324, 0.305, 0.27, 1
rain_color = 0.68, 0.64, 0.6
rain_density = 0
- sky_color = 0.8, 0.78, 0.78
+ sky_color = 0.8, 0.77, 0.78
sky_rotation = 1.5
sky_texture = sky\af3_a_clear\13-00
sun = clear_sunrise
- sun_color = 0.51, 0.485, 0.46
- sun_shafts_intensity = 0.055
+ sun_color = 0.48, 0.475, 0.45
+ sun_shafts_intensity = 0.065
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -611,8 +611,8 @@
sky_rotation = 1.8
sky_texture = sky\af3_a_clear\14-00
sun = clear_sunrise
- sun_color = 0.525, 0.48, 0.445
- sun_shafts_intensity = 0.06
+ sun_color = 0.515, 0.47, 0.435
+ sun_shafts_intensity = 0.065
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -633,12 +633,12 @@
hemisphere_color = 0.32, 0.311, 0.267, 1
rain_color = 0.68, 0.64, 0.6
rain_density = 0
- sky_color = 0.8, 0.9, 0.93
+ sky_color = 0.8, 0.88, 0.93
sky_rotation = 2.1
sky_texture = sky\af3_a_clear\15-00
sun = clear_sunrise
- sun_color = 0.525, 0.5, 0.46
- sun_shafts_intensity = 0.055
+ sun_color = 0.515, 0.49, 0.45
+ sun_shafts_intensity = 0.065
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -663,8 +663,8 @@
sky_rotation = 3.1
sky_texture = sky\af3_a_clear\16-00
sun = clear_sunrise
- sun_color = 0.54, 0.515, 0.48
- sun_shafts_intensity = 0.055
+ sun_color = 0.53, 0.505, 0.47
+ sun_shafts_intensity = 0.065
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
diff --git a/mods/Atmospherics/gamedata/configs/environment/weathers/w_clear2.ltx b/mods/Atmospherics/gamedata/configs/environment/weathers/w_clear2.ltx
index 73bf8dfe..68627657 100644
--- a/mods/Atmospherics/gamedata/configs/environment/weathers/w_clear2.ltx
+++ b/mods/Atmospherics/gamedata/configs/environment/weathers/w_clear2.ltx
@@ -426,12 +426,12 @@
hemisphere_color = 0.189, 0.197, 0.203, 1
rain_color = 0.68, 0.64, 0.6
rain_density = 0
- sky_color = 1, 0.8, 0.8
+ sky_color = 0.95, 0.7, 0.75
sky_rotation = 1.2
sky_texture = sky\swtc_clear\12-00
sun = clear_day
- sun_color = 0.54, 0.515, 0.5
- sun_shafts_intensity = 0.07
+ sun_color = 0.53, 0.505, 0.49
+ sun_shafts_intensity = 0.065
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -452,12 +452,12 @@
hemisphere_color = 0.189, 0.197, 0.203, 1
rain_color = 0.68, 0.64, 0.6
rain_density = 0
- sky_color = 1, 0.8, 0.8
+ sky_color = 0.95, 0.7, 0.75
sky_rotation = 1.29
sky_texture = sky\swtc_clear\12-00
sun = clear_day
- sun_color = 0.53, 0.505, 0.49
- sun_shafts_intensity = 0.07
+ sun_color = 0.52, 0.495, 0.48
+ sun_shafts_intensity = 0.065
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -478,12 +478,12 @@
hemisphere_color = 0.189, 0.197, 0.203, 1
rain_color = 0.68, 0.64, 0.6
rain_density = 0
- sky_color = 1, 0.8, 0.8
+ sky_color = 0.95, 0.7, 0.75
sky_rotation = 1.3
sky_texture = sky\swtc_clear\12-00
sun = clear_day
- sun_color = 0.52, 0.495, 0.48
- sun_shafts_intensity = 0.07
+ sun_color = 0.505, 0.48, 0.465
+ sun_shafts_intensity = 0.062
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -504,12 +504,12 @@
hemisphere_color = 0.2, 0.2, 0.21, 1
rain_color = 0.62, 0.64, 0.66
rain_density = 0
- sky_color = 0.8, 0.74, 0.68
+ sky_color = 0.8, 0.7, 0.68
sky_rotation = 1.4
sky_texture = sky\swtc_clear\11-00
sun = clear_sunrise
- sun_color = 0.525, 0.5, 0.48
- sun_shafts_intensity = 0.065
+ sun_color = 0.51, 0.485, 0.465
+ sun_shafts_intensity = 0.062
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -530,12 +530,12 @@
hemisphere_color = 0.2, 0.2, 0.21, 1
rain_color = 0.62, 0.64, 0.66
rain_density = 0
- sky_color = 0.8, 0.74, 0.68
+ sky_color = 0.8, 0.7, 0.68
sky_rotation = 1.5
sky_texture = sky\swtc_clear\11-00
sun = clear_sunrise
- sun_color = 0.52, 0.49, 0.47
- sun_shafts_intensity = 0.07
+ sun_color = 0.5, 0.47, 0.45
+ sun_shafts_intensity = 0.062
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -556,12 +556,12 @@
hemisphere_color = 0.215, 0.215, 0.235, 1
rain_color = 0.62, 0.64, 0.66
rain_density = 0
- sky_color = 0.84, 0.77, 0.71
+ sky_color = 0.84, 0.74, 0.71
sky_rotation = 1.9
sky_texture = sky\swtc_clear_alt\14-00
sun = clear_sunrise
- sun_color = 0.51, 0.495, 0.47
- sun_shafts_intensity = 0.07
+ sun_color = 0.5, 0.485, 0.46
+ sun_shafts_intensity = 0.062
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -582,12 +582,12 @@
hemisphere_color = 0.215, 0.215, 0.235, 1
rain_color = 0.62, 0.64, 0.66
rain_density = 0
- sky_color = 0.84, 0.77, 0.71
+ sky_color = 0.84, 0.74, 0.71
sky_rotation = 2.29
sky_texture = sky\swtc_clear_alt\14-00
sun = clear_sunrise
- sun_color = 0.52, 0.505, 0.48
- sun_shafts_intensity = 0.07
+ sun_color = 0.505, 0.49, 0.465
+ sun_shafts_intensity = 0.062
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -612,8 +612,8 @@
sky_rotation = 2.3
sky_texture = sky\swtc_clear_alt\15-00
sun = clear_sunrise
- sun_color = 0.52, 0.505, 0.48
- sun_shafts_intensity = 0.07
+ sun_color = 0.505, 0.49, 0.465
+ sun_shafts_intensity = 0.062
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -638,7 +638,7 @@
sky_rotation = 3.3
sky_texture = sky\swtc_clear_alt\15-00
sun = cloudy_light_day3
- sun_color = 0.545, 0.525, 0.51
+ sun_color = 0.525, 0.505, 0.49
sun_shafts_intensity = 0.065
thunderbolt_collection =
thunderbolt_duration = 0
@@ -664,7 +664,7 @@
sky_rotation = 3.3
sky_texture = sky\swtc_clear\16-00
sun = cloudy_light_day3
- sun_color = 0.545, 0.525, 0.51
+ sun_color = 0.535, 0.515, 0.5
sun_shafts_intensity = 0.065
thunderbolt_collection =
thunderbolt_duration = 0
diff --git a/mods/Atmospherics/gamedata/configs/environment/weathers/w_foggy3.ltx b/mods/Atmospherics/gamedata/configs/environment/weathers/w_foggy3.ltx
index cdb57c73..9b443678 100644
--- a/mods/Atmospherics/gamedata/configs/environment/weathers/w_foggy3.ltx
+++ b/mods/Atmospherics/gamedata/configs/environment/weathers/w_foggy3.ltx
@@ -376,7 +376,7 @@
sky_color = 0.37, 0.42, 0.43
sky_rotation = 1
sky_texture = sky\af1_foggy\17-00
- sun = cloudy_light_day
+ sun = storm_sunrise
sun_altitude = 87.593720
sun_color = 0.2, 0.23, 0.255
sun_longitude = -20.160000
@@ -404,7 +404,7 @@
sky_color = 0.37, 0.42, 0.43
sky_rotation = 1.1
sky_texture = sky\af1_foggy\17-00
- sun = cloudy_light_day
+ sun = storm_sunrise
sun_altitude = 75.338200
sun_color = 0.2, 0.23, 0.255
sun_longitude = -29.570000
@@ -433,7 +433,7 @@
sky_color = 0.37, 0.42, 0.43
sky_rotation = 1.1
sky_texture = sky\af1_foggy\17-00
- sun = cloudy_light_day
+ sun = storm_sunrise
sun_altitude = 75.338200
sun_color = 0.2, 0.23, 0.255
sun_longitude = -29.570000
@@ -460,7 +460,7 @@
sky_color = 0.37, 0.42, 0.43
sky_rotation = 1.2
sky_texture = sky\af1_foggy\17-00
- sun = cloudy_light_day
+ sun = storm_sunrise
sun_altitude = 61.361200
sun_color = 0.2, 0.23, 0.255
sun_longitude = -38.430000
@@ -488,7 +488,7 @@
sky_color = 0.38, 0.43, 0.44
sky_rotation = 1.3
sky_texture = sky\af1_foggy\17-00
- sun = cloudy_light_day
+ sun = storm_sunrise
sun_altitude = 44.532400
sun_color = 0.21, 0.24, 0.265
sun_longitude = -46.040000
@@ -516,7 +516,7 @@
sky_color = 0.38, 0.43, 0.44
sky_rotation = 1.4
sky_texture = sky\af1_foggy\17-00
- sun = cloudy_light_day
+ sun = storm_sunrise
sun_altitude = 23.920400
sun_color = 0.22, 0.25, 0.275
sun_longitude = -51.420000
@@ -544,7 +544,7 @@
sky_color = 0.38, 0.43, 0.44
sky_rotation = 1.5
sky_texture = sky\af1_foggy\17-00
- sun = cloudy_light_day
+ sun = storm_sunrise
sun_altitude = 0.158500
sun_color = 0.22, 0.25, 0.275
sun_longitude = -53.410000
@@ -572,7 +572,7 @@
sky_color = 0.38, 0.43, 0.44
sky_rotation = 1.8
sky_texture = sky\af1_foggy\17-00
- sun = cloudy_light_day
+ sun = storm_sunrise
sun_altitude = -23.617000
sun_color = 0.22, 0.25, 0.275
sun_longitude = -51.440000
@@ -600,7 +600,7 @@
sky_color = 0.38, 0.43, 0.44
sky_rotation = 2.1
sky_texture = sky\af1_foggy\17-00
- sun = cloudy_light_day
+ sun = storm_sunrise
sun_altitude = -44.255800
sun_color = 0.22, 0.25, 0.275
sun_longitude = -46.080000
@@ -628,7 +628,7 @@
sky_color = 0.38, 0.43, 0.44
sky_rotation = 3.1
sky_texture = sky\af1_foggy\17-00
- sun = cloudy_light_day
+ sun = storm_sunrise
sun_altitude = -61.106100
sun_color = 0.22, 0.25, 0.275
sun_longitude = -38.470000
@@ -656,7 +656,7 @@
sky_color = 0.37, 0.42, 0.43
sky_rotation = 4.1
sky_texture = sky\af1_foggy\17-00
- sun = cloudy_light_day
+ sun = storm_sunrise
sun_altitude = -75.093800
sun_color = 0.21, 0.24, 0.27
sun_longitude = -29.610000
diff --git a/mods/Atmospherics/gamedata/configs/environment/weathers/w_partly1.ltx b/mods/Atmospherics/gamedata/configs/environment/weathers/w_partly1.ltx
index 09cb9b57..eb38e5bd 100644
--- a/mods/Atmospherics/gamedata/configs/environment/weathers/w_partly1.ltx
+++ b/mods/Atmospherics/gamedata/configs/environment/weathers/w_partly1.ltx
@@ -430,8 +430,8 @@
sky_rotation = 1.2
sky_texture = sky\swtc_clear\16-00
sun = clear_sunrise
- sun_color = 0.42, 0.42, 0.42
- sun_shafts_intensity = 0.08
+ sun_color = 0.415, 0.415, 0.415
+ sun_shafts_intensity = 0.075
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -456,8 +456,8 @@
sky_rotation = 1.3
sky_texture = sky\swtc_clear\16-00
sun = clear_sunrise
- sun_color = 0.42, 0.42, 0.42
- sun_shafts_intensity = 0.075
+ sun_color = 0.415, 0.415, 0.415
+ sun_shafts_intensity = 0.07
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -482,8 +482,8 @@
sky_rotation = 1.4
sky_texture = sky\swtc_clear\16-00
sun = clear_sunrise
- sun_color = 0.42, 0.42, 0.42
- sun_shafts_intensity = 0.075
+ sun_color = 0.415, 0.415, 0.415
+ sun_shafts_intensity = 0.07
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -508,8 +508,8 @@
sky_rotation = 1.49
sky_texture = sky\swtc_clear\16-00
sun = clear_sunrise
- sun_color = 0.42, 0.42, 0.42
- sun_shafts_intensity = 0.075
+ sun_color = 0.415, 0.415, 0.415
+ sun_shafts_intensity = 0.07
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -534,8 +534,8 @@
sky_rotation = 1.5
sky_texture = sky\swtc_clear_alt\13-00
sun = clear_sunrise
- sun_color = 0.42, 0.42, 0.42
- sun_shafts_intensity = 0.075
+ sun_color = 0.415, 0.415, 0.415
+ sun_shafts_intensity = 0.07
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -560,8 +560,8 @@
sky_rotation = 1.6
sky_texture = sky\swtc_clear_alt\13-00
sun = clear_sunrise
- sun_color = 0.42, 0.42, 0.42
- sun_shafts_intensity = 0.075
+ sun_color = 0.415, 0.415, 0.415
+ sun_shafts_intensity = 0.07
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -586,8 +586,8 @@
sky_rotation = 2.7
sky_texture = sky\swtc_clear_alt\13-00
sun = clear_sunrise
- sun_color = 0.42, 0.42, 0.42
- sun_shafts_intensity = 0.075
+ sun_color = 0.415, 0.415, 0.415
+ sun_shafts_intensity = 0.07
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -612,8 +612,8 @@
sky_rotation = 3.8
sky_texture = sky\swtc_clear_alt\13-00
sun = clear_sunrise
- sun_color = 0.42, 0.42, 0.42
- sun_shafts_intensity = 0.075
+ sun_color = 0.415, 0.415, 0.415
+ sun_shafts_intensity = 0.07
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
diff --git a/mods/Atmospherics/gamedata/configs/environment/weathers/w_partly2.ltx b/mods/Atmospherics/gamedata/configs/environment/weathers/w_partly2.ltx
index 211fde77..49a3439a 100644
--- a/mods/Atmospherics/gamedata/configs/environment/weathers/w_partly2.ltx
+++ b/mods/Atmospherics/gamedata/configs/environment/weathers/w_partly2.ltx
@@ -404,8 +404,8 @@
sky_rotation = 1.2
sky_texture = sky\swtc_clear_alt\09-00
sun = clear_sunrise
- sun_color = 0.43, 0.42, 0.41
- sun_shafts_intensity = 0.085
+ sun_color = 0.425, 0.415, 0.405
+ sun_shafts_intensity = 0.08
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -430,8 +430,8 @@
sky_rotation = 1.3
sky_texture = sky\swtc_clear_alt\09-00
sun = clear_sunrise
- sun_color = 0.43, 0.42, 0.41
- sun_shafts_intensity = 0.085
+ sun_color = 0.425, 0.415, 0.405
+ sun_shafts_intensity = 0.08
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -456,8 +456,8 @@
sky_rotation = 1.4
sky_texture = sky\swtc_clear_alt\09-00
sun = clear_sunrise
- sun_color = 0.43, 0.42, 0.41
- sun_shafts_intensity = 0.085
+ sun_color = 0.425, 0.415, 0.405
+ sun_shafts_intensity = 0.08
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -482,8 +482,8 @@
sky_rotation = 1.5
sky_texture = sky\swtc_clear_alt\09-00
sun = clear_sunrise
- sun_color = 0.43, 0.42, 0.41
- sun_shafts_intensity = 0.085
+ sun_color = 0.425, 0.415, 0.405
+ sun_shafts_intensity = 0.08
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -508,8 +508,8 @@
sky_rotation = 1.6
sky_texture = sky\swtc_clear_alt\09-00
sun = clear_sunrise
- sun_color = 0.43, 0.42, 0.41
- sun_shafts_intensity = 0.085
+ sun_color = 0.425, 0.415, 0.405
+ sun_shafts_intensity = 0.08
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -534,8 +534,8 @@
sky_rotation = 2.1
sky_texture = sky\swtc_clear_alt\09-00
sun = clear_sunrise
- sun_color = 0.43, 0.42, 0.41
- sun_shafts_intensity = 0.085
+ sun_color = 0.425, 0.415, 0.405
+ sun_shafts_intensity = 0.08
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
@@ -560,8 +560,8 @@
sky_rotation = 3.1
sky_texture = sky\swtc_clear_alt\09-00
sun = clear_sunrise
- sun_color = 0.43, 0.42, 0.41
- sun_shafts_intensity = 0.085
+ sun_color = 0.425, 0.415, 0.405
+ sun_shafts_intensity = 0.08
thunderbolt_collection =
thunderbolt_duration = 0
thunderbolt_period = 0
diff --git a/mods/Atmospherics/gamedata/configs/environment/weathers/w_rain2.ltx b/mods/Atmospherics/gamedata/configs/environment/weathers/w_rain2.ltx
index e1b28191..725ccd89 100644
--- a/mods/Atmospherics/gamedata/configs/environment/weathers/w_rain2.ltx
+++ b/mods/Atmospherics/gamedata/configs/environment/weathers/w_rain2.ltx
@@ -238,10 +238,10 @@
clouds_color = 0, 0, 0, 0
clouds_texture =
far_plane = 440
- fog_color = 0.09, 0.09, 0.1
+ fog_color = 0.0925, 0.0925, 0.095
fog_density = 1
fog_distance = 430
- hemisphere_color = 0.17, 0.18, 0.205, 1
+ hemisphere_color = 0.14, 0.15, 0.175, 1
rain_color = 0.35, 0.35, 0.35
rain_density = 0.8
sky_color = 0.54, 0.53, 0.53
@@ -258,49 +258,23 @@
wind_direction = 250
wind_velocity = 522
-[06:59:00]
+[07:00:00]
ambient = rain_day
- ambient_color = 0.025, 0.025, 0.026
+ ambient_color = 0.0245, 0.0245, 0.0255
clouds_color = 0, 0, 0, 0
clouds_texture =
far_plane = 410
- fog_color = 0.1, 0.1, 0.107
+ fog_color = 0.101, 0.101, 0.102
fog_density = 1
fog_distance = 400
- hemisphere_color = 0.182, 0.192, 0.217, 1
+ hemisphere_color = 0.158, 0.17, 0.192, 1
rain_color = 0.41, 0.41, 0.41
rain_density = 0.8
sky_color = 0.62, 0.61, 0.61
sky_rotation = 0.75
sky_texture = sky\cloudy4\06-00
sun = cloudy_light_rain_day_gradient
- sun_color = 0.15, 0.157, 0.167
- sun_shafts_intensity = 0.06
- thunderbolt_collection =
- thunderbolt_duration = 0
- thunderbolt_period = 0
- tree_amplitude_intensity = 0.025
- water_intensity = 1
- wind_direction = 250
- wind_velocity = 522
-
-[07:00:00]
- ambient = rain_day
- ambient_color = 0.025, 0.025, 0.026
- clouds_color = 0, 0, 0, 0
- clouds_texture =
- far_plane = 410
- fog_color = 0.095, 0.105, 0.12
- fog_density = 1
- fog_distance = 400
- hemisphere_color = 0.17, 0.18, 0.185, 1
- rain_color = 0.8, 0.8, 0.8
- rain_density = 0.8
- sky_color = 0.5, 0.52, 0.52
- sky_rotation = 0.8
- sky_texture = sky\clouds\clouds_07-00
- sun = cloudy_light_day
- sun_color = 0.15, 0.157, 0.167
+ sun_color = 0.165, 0.17, 0.185
sun_shafts_intensity = 0.06
thunderbolt_collection =
thunderbolt_duration = 0
@@ -309,6 +283,7 @@
water_intensity = 1
wind_direction = 250
wind_velocity = 522
+
[08:00:00]
ambient = rain_day
@@ -319,14 +294,14 @@
fog_color = 0.1, 0.11, 0.117
fog_density = 1
fog_distance = 400
- hemisphere_color = 0.172, 0.192, 0.207, 1
+ hemisphere_color = 0.162, 0.182, 0.197, 1
rain_color = 0.8, 0.8, 0.8
rain_density = 0.8
sky_color = 0.58, 0.6, 0.59
sky_rotation = 0.9
sky_texture = sky\clouds\clouds_08-00
sun = cloudy_light_day
- sun_color = 0.125, 0.115, 0.125
+ sun_color = 0.15, 0.14, 0.15
sun_shafts_intensity = 0.06
thunderbolt_collection =
thunderbolt_duration = 0
@@ -352,7 +327,7 @@
sky_rotation = 1.0
sky_texture = sky\clouds\clouds_09-00
sun = cloudy_light_day
- sun_color = 0.115, 0.105, 0.115
+ sun_color = 0.13, 0.12, 0.13
sun_shafts_intensity = 0.06
thunderbolt_collection =
thunderbolt_duration = 0
@@ -378,7 +353,7 @@
sky_rotation = 1.1
sky_texture = sky\clouds\clouds_10-00
sun = cloudy_light_day
- sun_color = 0.11, 0.1, 0.11
+ sun_color = 0.125, 0.115, 0.125
sun_shafts_intensity = 0.06
thunderbolt_collection =
thunderbolt_duration = 0
@@ -404,7 +379,7 @@
sky_rotation = 1.2
sky_texture = sky\clouds\clouds_11-00
sun = cloudy_light_day
- sun_color = 0.105, 0.095, 0.105
+ sun_color = 0.115, 0.105, 0.115
sun_shafts_intensity = 0.06
thunderbolt_collection =
thunderbolt_duration = 0
diff --git a/mods/Atmospherics/gamedata/configs/environment/weathers/w_storm1.ltx b/mods/Atmospherics/gamedata/configs/environment/weathers/w_storm1.ltx
index 4d9c8b58..73cd12c9 100644
--- a/mods/Atmospherics/gamedata/configs/environment/weathers/w_storm1.ltx
+++ b/mods/Atmospherics/gamedata/configs/environment/weathers/w_storm1.ltx
@@ -293,14 +293,14 @@
fog_color = 0.056, 0.056, 0.058
fog_density = 1
fog_distance = 300
- hemisphere_color = 0.1, 0.115, 0.125, 1
+ hemisphere_color = 0.105, 0.12, 0.13, 1
rain_color = 0.74, 0.74, 0.74
rain_density = 1
- sky_color = 0.33, 0.34, 0.34
+ sky_color = 0.35, 0.36, 0.36
sky_rotation = 2.5
sky_texture = sky\af3_a_cloudy\08-00
sun =
- sun_color = 0.055, 0.045, 0.055
+ sun_color = 0.07, 0.06, 0.07
sun_shafts_intensity = 0.0
thunderbolt_collection = collection_far
thunderbolt_duration = 0.2
@@ -319,14 +319,14 @@
fog_color = 0.06, 0.06, 0.062
fog_density = 1
fog_distance = 300
- hemisphere_color = 0.125, 0.145, 0.155, 1
+ hemisphere_color = 0.13, 0.15, 0.16, 1
rain_color = 0.76, 0.76, 0.71
rain_density = 1
- sky_color = 0.41, 0.42, 0.42
+ sky_color = 0.42, 0.43, 0.43
sky_rotation = 2.8
sky_texture = sky\af3_a_cloudy\08-00
sun =
- sun_color = 0.055, 0.045, 0.055
+ sun_color = 0.07, 0.06, 0.07
sun_shafts_intensity = 0.0
thunderbolt_collection = collection_far
thunderbolt_duration = 0.2
@@ -348,11 +348,11 @@
hemisphere_color = 0.145, 0.165, 0.175, 1
rain_color = 0.71, 0.71, 0.76
rain_density = 1
- sky_color = 0.44, 0.45, 0.45
+ sky_color = 0.46, 0.47, 0.47
sky_rotation = 3.1
sky_texture = sky\af3_a_cloudy\08-00
sun =
- sun_color = 0.055, 0.045, 0.055
+ sun_color = 0.07, 0.06, 0.07
sun_shafts_intensity = 0.0
thunderbolt_collection = collection_far
thunderbolt_duration = 0.2
@@ -374,11 +374,11 @@
hemisphere_color = 0.15, 0.17, 0.18, 1
rain_color = 0.7, 0.7, 0.7
rain_density = 1
- sky_color = 0.46, 0.46, 0.46
+ sky_color = 0.48, 0.48, 0.48
sky_rotation = 3.4
sky_texture = sky\af3_a_cloudy\08-00
sun =
- sun_color = 0.055, 0.045, 0.055
+ sun_color = 0.07, 0.06, 0.07
sun_shafts_intensity = 0.0
thunderbolt_collection = collection_far
thunderbolt_duration = 0.2
@@ -400,11 +400,11 @@
hemisphere_color = 0.15, 0.17, 0.18, 1
rain_color = 0.7, 0.7, 0.7
rain_density = 1
- sky_color = 0.46, 0.46, 0.46
+ sky_color = 0.48, 0.48, 0.48
sky_rotation = 3.6
sky_texture = sky\af3_a_cloudy\08-00
sun =
- sun_color = 0.055, 0.045, 0.055
+ sun_color = 0.07, 0.06, 0.07
sun_shafts_intensity = 0.0
thunderbolt_collection = collection_far
thunderbolt_duration = 0.2
@@ -423,14 +423,14 @@
fog_color = 0.06, 0.06, 0.062
fog_density = 1
fog_distance = 300
- hemisphere_color = 0.153, 0.173, 0.183, 1
+ hemisphere_color = 0.158, 0.178, 0.188, 1
rain_color = 0.7, 0.7, 0.7
rain_density = 1
- sky_color = 0.48, 0.49, 0.49
+ sky_color = 0.49, 0.49, 0.49
sky_rotation = 3.9
sky_texture = sky\af3_a_cloudy\08-00
sun =
- sun_color = 0.055, 0.045, 0.055
+ sun_color = 0.072, 0.062, 0.072
sun_shafts_intensity = 0.0
thunderbolt_collection = collection_far
thunderbolt_duration = 0.2
@@ -456,7 +456,7 @@
sky_rotation = 4.1
sky_texture = sky\af3_a_cloudy\08-00
sun =
- sun_color = 0.055, 0.045, 0.055
+ sun_color = 0.073, 0.063, 0.073
sun_shafts_intensity = 0.0
thunderbolt_collection = collection_far
thunderbolt_duration = 0.2
@@ -482,7 +482,7 @@
sky_rotation = 4.4
sky_texture = sky\af3_a_cloudy\08-00
sun =
- sun_color = 0.055, 0.045, 0.055
+ sun_color = 0.074, 0.064, 0.074
sun_shafts_intensity = 0.0
thunderbolt_collection = collection_far
thunderbolt_duration = 0.2
@@ -508,7 +508,7 @@
sky_rotation = 4.7
sky_texture = sky\af3_a_cloudy\08-00
sun =
- sun_color = 0.055, 0.045, 0.055
+ sun_color = 0.075, 0.065, 0.075
sun_shafts_intensity = 0.0
thunderbolt_collection = collection_far
thunderbolt_duration = 0.2
@@ -534,7 +534,7 @@
sky_rotation = 5.0
sky_texture = sky\af3_a_cloudy\08-00
sun =
- sun_color = 0.055, 0.045, 0.055
+ sun_color = 0.074, 0.064, 0.074
sun_shafts_intensity = 0.0
thunderbolt_collection = collection_far
thunderbolt_duration = 0.2
@@ -560,7 +560,7 @@
sky_rotation = 5.4
sky_texture = sky\af3_a_cloudy\08-00
sun =
- sun_color = 0.055, 0.045, 0.055
+ sun_color = 0.073, 0.063, 0.073
sun_shafts_intensity = 0.0
thunderbolt_collection = collection_far
thunderbolt_duration = 0.2
@@ -586,7 +586,7 @@
sky_rotation = 5.7
sky_texture = sky\af3_a_cloudy\08-00
sun =
- sun_color = 0.055, 0.045, 0.055
+ sun_color = 0.072, 0.062, 0.072
sun_shafts_intensity = 0.0
thunderbolt_collection = collection_far
thunderbolt_duration = 0.2
@@ -612,7 +612,7 @@
sky_rotation = 6.0
sky_texture = sky\af3_a_cloudy\08-00
sun =
- sun_color = 0.055, 0.045, 0.055
+ sun_color = 0.071, 0.061, 0.071
sun_shafts_intensity = 0.0
thunderbolt_collection = collection_far
thunderbolt_duration = 0.2
@@ -638,7 +638,7 @@
sky_rotation = 6.39
sky_texture = sky\af3_a_cloudy\08-00
sun =
- sun_color = 0.055, 0.045, 0.055
+ sun_color = 0.256, 0.246, 0.196
sun_shafts_intensity = 0.0
thunderbolt_collection = collection_far
thunderbolt_duration = 0.2
diff --git a/mods/Atmospherics/gamedata/configs/environment/weathers/w_storm2.ltx b/mods/Atmospherics/gamedata/configs/environment/weathers/w_storm2.ltx
index 3ed38d02..b4337f0a 100644
--- a/mods/Atmospherics/gamedata/configs/environment/weathers/w_storm2.ltx
+++ b/mods/Atmospherics/gamedata/configs/environment/weathers/w_storm2.ltx
@@ -270,7 +270,7 @@
hemisphere_color = 0.09, 0.106, 0.106, 1
rain_color = 0.6, 0.6, 0.6
rain_density = 0.9
- sky_color = 0.23, 0.25, 0.26
+ sky_color = 0.26, 0.28, 0.28
sky_rotation = 0.6
sky_texture = sky\af3_a_cloudy\18-00
sun = moon
@@ -290,13 +290,13 @@
clouds_color = 0, 0, 0, 0
clouds_texture = sky\sky_oblaka
far_plane = 360
- fog_color = 0.03, 0.03, 0.033
+ fog_color = 0.035, 0.035, 0.038
fog_density = 1
fog_distance = 350
hemisphere_color = 0.14, 0.145, 0.155, 1
rain_color = 0.74, 0.74, 0.74
rain_density = 0.9
- sky_color = 0.405, 0.425, 0.45
+ sky_color = 0.425, 0.445, 0.47
sky_rotation = 0.7
sky_texture = sky\af3_a_cloudy\18-00
sun =
@@ -322,7 +322,7 @@
hemisphere_color = 0.155, 0.16, 0.17, 1
rain_color = 0.76, 0.76, 0.71
rain_density = 0.9
- sky_color = 0.455, 0.48, 0.5
+ sky_color = 0.465, 0.49, 0.51
sky_rotation = 0.8
sky_texture = sky\af3_a_cloudy\18-00
sun =
@@ -348,7 +348,7 @@
hemisphere_color = 0.16, 0.165, 0.175, 1
rain_color = 0.81, 0.71, 0.76
rain_density = 0.9
- sky_color = 0.455, 0.48, 0.5
+ sky_color = 0.465, 0.49, 0.51
sky_rotation = 0.9
sky_texture = sky\af3_a_cloudy\18-00
sun =
@@ -374,7 +374,7 @@
hemisphere_color = 0.155, 0.16, 0.17, 1
rain_color = 0.75, 0.75, 0.75
rain_density = 0.9
- sky_color = 0.455, 0.48, 0.5
+ sky_color = 0.465, 0.49, 0.51
sky_rotation = 1
sky_texture = sky\af3_a_cloudy\18-00
sun =
@@ -400,7 +400,7 @@
hemisphere_color = 0.155, 0.16, 0.17, 1
rain_color = 0.75, 0.75, 0.75
rain_density = 0.9
- sky_color = 0.455, 0.48, 0.5
+ sky_color = 0.465, 0.49, 0.51
sky_rotation = 1
sky_texture = sky\af3_a_cloudy\18-00
sun =
@@ -426,7 +426,7 @@
hemisphere_color = 0.15, 0.155, 0.165, 1
rain_color = 0.75, 0.75, 0.75
rain_density = 0.9
- sky_color = 0.455, 0.48, 0.5
+ sky_color = 0.465, 0.49, 0.51
sky_rotation = 1.1
sky_texture = sky\af3_a_cloudy\18-00
sun =
@@ -452,7 +452,7 @@
hemisphere_color = 0.15, 0.155, 0.165, 1
rain_color = 0.8, 0.8, 0.8
rain_density = 0.9
- sky_color = 0.455, 0.48, 0.5
+ sky_color = 0.465, 0.49, 0.51
sky_rotation = 1.2
sky_texture = sky\af3_a_cloudy\18-00
sun =
@@ -478,7 +478,7 @@
hemisphere_color = 0.15, 0.155, 0.165, 1
rain_color = 0.7, 0.7, 0.7
rain_density = 0.9
- sky_color = 0.455, 0.48, 0.5
+ sky_color = 0.465, 0.49, 0.51
sky_rotation = 1.3
sky_texture = sky\af3_a_cloudy\18-00
sun =
@@ -504,7 +504,7 @@
hemisphere_color = 0.15, 0.155, 0.165, 1
rain_color = 1, 1, 1
rain_density = 0.9
- sky_color = 0.455, 0.48, 0.5
+ sky_color = 0.465, 0.49, 0.51
sky_rotation = 1.4
sky_texture = sky\af3_a_cloudy\18-00
sun =
@@ -530,7 +530,7 @@
hemisphere_color = 0.15, 0.155, 0.165, 1
rain_color = 1, 1, 1
rain_density = 0.9
- sky_color = 0.455, 0.48, 0.5
+ sky_color = 0.465, 0.49, 0.51
sky_rotation = 1.5
sky_texture = sky\af3_a_cloudy\18-00
sun =
@@ -556,7 +556,7 @@
hemisphere_color = 0.15, 0.155, 0.165, 1
rain_color = 1, 1, 1
rain_density = 0.9
- sky_color = 0.455, 0.48, 0.5
+ sky_color = 0.465, 0.49, 0.51
sky_rotation = 1.6
sky_texture = sky\af3_a_cloudy\18-00
sun =
@@ -582,7 +582,7 @@
hemisphere_color = 0.15, 0.155, 0.165, 1
rain_color = 0.85, 0.85, 0.85
rain_density = 0.9
- sky_color = 0.455, 0.48, 0.5
+ sky_color = 0.465, 0.49, 0.51
sky_rotation = 1.7
sky_texture = sky\af3_a_cloudy\18-00
sun =
@@ -608,7 +608,7 @@
hemisphere_color = 0.135, 0.14, 0.15, 1
rain_color = 0.8, 0.8, 0.8
rain_density = 0.9
- sky_color = 0.445, 0.47, 0.49
+ sky_color = 0.455, 0.48, 0.5
sky_rotation = 1.8
sky_texture = sky\af3_a_cloudy\18-00
sun =
diff --git a/mods/Atmospherics/gamedata/scripts/ssfx_lut.script b/mods/Atmospherics/gamedata/scripts/ssfx_lut.script
index 86c74e4d..0d8ceb9e 100644
--- a/mods/Atmospherics/gamedata/scripts/ssfx_lut.script
+++ b/mods/Atmospherics/gamedata/scripts/ssfx_lut.script
@@ -25,7 +25,7 @@ local ssfx_maps = {
["k01_darkscape"] = { group = 21, intensity = 1.0 },
["k02_trucks_cemetery"] = { group = 29, intensity = 1.0 },
["l01_escape"] = { group = 21, intensity = 1.0 },
- ["l02_garbage"] = { group = 28, intensity = 1.0 },
+ ["l02_garbage"] = { group = 27, intensity = 1.0 },
["l03_agroprom"] = { group = 24, intensity = 1.0 },
["l03u_agr_underground"] = { group = 32, intensity = 1.0 },
["l04_darkvalley"] = { group = 27, intensity = 1.0 },
diff --git a/mods/Atmospherics/gamedata/textures/anamflares/sun_day_01.dds b/mods/Atmospherics/gamedata/textures/anamflares/sun_day_01.dds
new file mode 100644
index 00000000..7c08aa5a
--- /dev/null
+++ b/mods/Atmospherics/gamedata/textures/anamflares/sun_day_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:57a68c723e5ee753d96bf0d9125f4b01a8a7fd5285003edd3bbb746bc346c2ba
+size 349680
diff --git a/mods/Atmospherics/gamedata/textures/anamflares/sun_day_diffuse2.dds b/mods/Atmospherics/gamedata/textures/anamflares/sun_day_diffuse2.dds
new file mode 100644
index 00000000..50045929
--- /dev/null
+++ b/mods/Atmospherics/gamedata/textures/anamflares/sun_day_diffuse2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:91d216e74527d79b432491d3084399c70020db9eb8c11c36fa77e5f078d1e9d0
+size 349680
diff --git a/mods/Atmospherics/meta.ini b/mods/Atmospherics/meta.ini
index df2d7c22..67e44d78 100644
--- a/mods/Atmospherics/meta.ini
+++ b/mods/Atmospherics/meta.ini
@@ -1,12 +1,12 @@
[General]
gameName=stalkeranomaly
modid=0
-version=d2024.3.5.0
+version=d2024.3.21.0
newestVersion=
category="16,"
nexusFileStatus=1
-installationFile=Atmospherics Anomaly 2.45.7z
-repository=
+installationFile=Atmospherics Anomaly 2.48.7z
+repository=Nexus
ignoredVersion=
comments=
notes=
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
index a27a0869..09a03804 100644
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/jupiter/build_details.dds
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/jupiter/build_details.dds
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:10a55fcff42533d468933498299f959d8ad96cf5d62a70b64c2b5b89301bbd91
+oid sha256:66b5c5da35b75a4c7615f7a058f4cac022c55e3e4620d233dcc64b57c675eb5a
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
deleted file mode 100644
index 84051b33..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/jupiter/terrain/terrain_jupiter.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index 0135335e..93e326db 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:dc9b0c4460fc47810e59e84b4d637b4869de7a60af835ed705ed87a441b4cfc2
+oid sha256:09d070985f0d86a6efefe871de3b875e77a5bcd6b8c9de83b4eeb59353780fa4
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
index d452018e..ddafb958 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:38e98a2f9ac9e47bb765db205482c126b00815310b3abafe48790ec97bdbe84d
+oid sha256:b5431fce6938ed07547c9d52c43526b23aeafbf7412cb90c69717351f5b99388
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
deleted file mode 100644
index f7bf05a8..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/k00_marsh/terrain/terrain_marsh.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index a2b5048f..cdf072f8 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b98f80301ddd8e06810bb2dab5f4a88ed010909228e8d62892751b4e103eb314
+oid sha256:a14c548d494550f9643d129a5bcaed791aba2e333325d9001b52be4dcb28b950
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
deleted file mode 100644
index 9a2bb0fb..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/k01_darkscape/terrain/terrain_darkcape.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index 9214a079..d75385d5 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6b4dfef56b386fa0d9ee503e7bc3014c145dcf40c5e1373929a2f1a3e27232b8
+oid sha256:7c59ddd7c97bdeb4d39737fce50f5acf13faf82489517d1695d8f03fc297da31
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
deleted file mode 100644
index 01d02dca..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/k02_trucks_cemetery/terrain/terrain_poligon2.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index 12ab0131..ddafb958 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e1b88f3a49e13f0f4a600a30bec40d7d473caece5ee72803f51829d470eac8a5
+oid sha256:b5431fce6938ed07547c9d52c43526b23aeafbf7412cb90c69717351f5b99388
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
deleted file mode 100644
index d8e89f00..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/l01_escape/terrain/terrain_escape.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index 9c72ad3f..7d937ab0 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:7b2f108570f86afd0b86acddb6b08b3b1f9e9fbcf0b54c213f653414edeac421
+oid sha256:3a4d97ba7330e3b33a8a4093f488eb266e56e45470399f666871e0aa713936a9
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
deleted file mode 100644
index 25c06f01..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/l02_garbage/terrain/terrain_garbage_new.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644
index 665b5ad6..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/l02_garbage/terrain/terrain_garbage_new_lm.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index 4f9b8711..e3fcca9e 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b229e7dbd4c858d2abef3dc0277e707b75c3c58a2e9c231ee4389b4d1dea3aff
+oid sha256:3db6ed01d8c05d4077e7bc3c984619bb4dde16a5c5e3b61608407e23db400f26
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
deleted file mode 100644
index aada1530..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/l03_agroprom/terrain/terrain_agroprom.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index 12ab0131..ddafb958 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e1b88f3a49e13f0f4a600a30bec40d7d473caece5ee72803f51829d470eac8a5
+oid sha256:b5431fce6938ed07547c9d52c43526b23aeafbf7412cb90c69717351f5b99388
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
deleted file mode 100644
index c66eb9ac..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/l04_darkvalley/terrain/terrain_darkvalley.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index a27a0869..f92dbfcb 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:10a55fcff42533d468933498299f959d8ad96cf5d62a70b64c2b5b89301bbd91
+oid sha256:55c8854c5b25fe81fd30d90b66e687de3ba5ae1ab5b3415512a96cc4d0c48548
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
deleted file mode 100644
index d9a8e6cf..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/l05_bar/terrain/terrain_bar.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index a27a0869..f92dbfcb 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:10a55fcff42533d468933498299f959d8ad96cf5d62a70b64c2b5b89301bbd91
+oid sha256:55c8854c5b25fe81fd30d90b66e687de3ba5ae1ab5b3415512a96cc4d0c48548
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
deleted file mode 100644
index 122751ed..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/l06_rostok/terrain/terrain_bar.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index 7a3e05bb..91ad1f7a 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:7159838496edae347583d36563d0bc6fea4b4269926d6170ae73e25e71f86ca3
+oid sha256:fe467278b783d85b4461cec0ea1532c592e64055160f3b8b3ea06f46819c1e69
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
deleted file mode 100644
index 62092804..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/l07_military/terrain/terrain_military_1.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index 5df2ac35..ddafb958 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f735155cf40d9a7e2981318648b52cc72cd4eafb3a77eb4fa3d17d06499691da
+oid sha256:b5431fce6938ed07547c9d52c43526b23aeafbf7412cb90c69717351f5b99388
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
deleted file mode 100644
index 1715fe5f..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/l08_yantar/terrain/terrain_yantar.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644
index b5f644a5..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/l08_yantar/terrain/terrain_yantar_lm.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index 74e377e6..34983690 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9d0f84608d4c1b0b219a6f3caad64326a78ad120c955792877fe32a5260f8347
+oid sha256:6adb93a76590d389a31bc1086906d4ac4b149dc30fabc493ead72cfe9ab69e42
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
deleted file mode 100644
index bf626d12..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/l09_deadcity/terrain/terrain_gr.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index 4a011329..3070aba5 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:adcaf57d7ab378d4fef9062c62b8a76567c7ed282bbb1d4df8f856cc31805dd5
+oid sha256:a2bcf10b27cf08ef40ea5253032d8157880b872f23f91a11cc6aab1897c40f12
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
deleted file mode 100644
index bb7243bf..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/l10_limansk/terrain/terrain_limansk.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index a27a0869..91ad1f7a 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:10a55fcff42533d468933498299f959d8ad96cf5d62a70b64c2b5b89301bbd91
+oid sha256:fe467278b783d85b4461cec0ea1532c592e64055160f3b8b3ea06f46819c1e69
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
deleted file mode 100644
index 39820e0e..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/l10_radar/terrain/terrain_radar_2.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index af082df3..ed6f95ca 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ce13be216f7f8645d0239d6efdcd748cd515b90a1a3045d0e1519f132d3df081
+oid sha256:3745f5ee4d0921248de52d6f34650d28fcbd243c4efa5bb10bd63bb8316f54e4
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
deleted file mode 100644
index ea94c1b6..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/l10_red_forest/terrain/terrain_red_forest.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index 4650730f..603abe77 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:bb864e1ce71e0a0417ce0013fceace959fad34f8b0edd36502d16cc47583a642
+oid sha256:e575246ea0063e9b1272417c561b8517fd3d205e4800c42739747668e64dfdae
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
deleted file mode 100644
index 4a373583..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/l11_hospital/terrain/terrain_dry_gully_1.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index 78f48af1..09a03804 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d5eb54ab2c6552e25b756527f92c407f6893291221a02aca8e10d833259f4995
+oid sha256:66b5c5da35b75a4c7615f7a058f4cac022c55e3e4620d233dcc64b57c675eb5a
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
deleted file mode 100644
index 487244e6..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/l11_pripyat/terrain/terrain_prypiat.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index e5f0d8b3..1333880b 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:13e1a00d72037f524aa21d155c6ea5dcd774812c01d5335ea13622f2fd6109da
+oid sha256:3e32c8c21aa14bc4d5636965ad173ccf8cd60aabbd92b64f7861f4f7fdecb6d4
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
deleted file mode 100644
index d868e7de..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/l12_stancia/terrain/terrain_stancia_land.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index e5f0d8b3..1333880b 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:13e1a00d72037f524aa21d155c6ea5dcd774812c01d5335ea13622f2fd6109da
+oid sha256:3e32c8c21aa14bc4d5636965ad173ccf8cd60aabbd92b64f7861f4f7fdecb6d4
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
deleted file mode 100644
index 3584d505..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/l12_stancia_2/terrain/terrain_stancia_land.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index 4dea233b..34983690 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c3cb0f0237a4d60fc458411d1d807031275bc74c49a8c282785cd4e30d934b1b
+oid sha256:6adb93a76590d389a31bc1086906d4ac4b149dc30fabc493ead72cfe9ab69e42
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
deleted file mode 100644
index 92c40f66..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/l13_generators/terrain/terrain_frodo_gen.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index 78f48af1..09a03804 100644
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/pripyat/build_details.dds
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/pripyat/build_details.dds
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d5eb54ab2c6552e25b756527f92c407f6893291221a02aca8e10d833259f4995
+oid sha256:66b5c5da35b75a4c7615f7a058f4cac022c55e3e4620d233dcc64b57c675eb5a
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
deleted file mode 100644
index 268c4be4..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/pripyat/terrain/terrain_pripyat.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index 290c27fd..7e447726 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d1cc7a3e5f8bfd73b4bd5d73087ec7082dd01839024826d96cca6a3aea4329ed
-size 2796344
+oid sha256:8deb23a20e7bb828d2dff3b0f3ceed2b2cb966079f6f21b0e4bcba7299958c6a
+size 5592560
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
deleted file mode 100644
index 51def263..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/y04_pole/terrain/terrain_pole.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644
index ac3b7d22..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/y04_pole/terrain/terrain_pole_lm.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index 6e2b23d9..f59306f0 100644
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/zaton/build_details.dds
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/zaton/build_details.dds
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:569688497dac53b3dcaf3aee98bfdd2a9a610617c66f2efd2f0378d83b6b882c
+oid sha256:63917b2972f0b17d32a941db06d210d13409147ea3b3c782df3e372fbfe324c9
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
deleted file mode 100644
index 78f3b83e..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/levels/zaton/terrain/terrain_zaton.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index 53f93945..48ad1f7b 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5c736dc3049b5e3773d6a563253caf38e9378168af4ed561957a2c8aa1d218b3
+oid sha256:675e1c65077263599282539373f7243074a02d7e2ed714e59bd2b37499085467
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
index 04e92a18..8b2db6c4 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3e6f78f4476c5c52fa6be87a3204655752e5da36029345fd2c75fd0fac022c5e
+oid sha256:f24e1777ba9969d1a9a40020fd76c70ed3f97879e854bdd6b440eabb5132c029
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
index ce2119ca..e5aee81e 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:2ee5b424a72c605078bd3a0f336d9fa0ce6c0ebf52eca60df7b0c963a576bba0
+oid sha256:d6e4b0b737a702cd4d0ff9369eb64e01d677cda7a4e3193313d0a1692ce9090d
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
index 651194da..18a9ac95 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:33674433fab8a339bac5f73554557ed3f384921753990c57a8e1a36413b74177
+oid sha256:b8387757a0300b0e76f799ee9d801718bad4cca5f8ab26ebd160655360dbab23
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
index 18c85dc0..efcd829f 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1b14f2622a9bfc1db259c40351a4def2121303e1c3ff7cefcc0caffd9d995a1a
+oid sha256:a7d87ecc18e4cfb5e1ea36ce06383017b4682e08c7c61d80d79187a63d05430a
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
index 73a92c8a..674cb036 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0411edcc048b59168c27ee98fb14ad72c1bb211e70a955beec1eb2b33d6b501a
+oid sha256:f9c00a00754fd87db7853e2b6ffe992bb75a6ad0d40ffbce4d143fc05cb2db6a
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
index aef0fc02..4810333b 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:814d62af3e586c5ba27c381d82fd02fa7aa6e86956904ac0d664e1d32abcf474
+oid sha256:cb8841b1a44e6b38d9ae90a24e77996c66b216c377115c38a593821b43cba4f1
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
index 55274452..e9fe3147 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:48706c8d1c91876365e05ca191436741cb090a12c53b83bb3e6c074944b4abf0
+oid sha256:7d1d132e417d787a6dc34f9f7f40135904ce8687eee21443e83a6edfb300a689
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
index 639aa41e..2f2680e0 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f4a165edcc6345dc92402eeabfba90956b398ed40bd90935106b65f319258faa
+oid sha256:0871bb0b764cbdbf4ec54a2bdbcbbbc2532ea3c61310c0100aa84e00e99b960e
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
index 082118e8..328eeb11 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:2959e16ac73ade6c7a3f26b284a297e820290bb01c0291f11f573bcbad039c2f
+oid sha256:9f03a8f322a7d839bfcdfd454b7bc443762e2c77a2cef191e72a27a7f037bc2d
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
index b9f88bbf..617aceae 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:45e6384a7009bdbfa96048141783c16b287711c13e2a4dcd9ee74138ea12816e
+oid sha256:f73945ebe38532f28b511adaf1fac6244b9fb53d3a108cd48aae6a335b5937b0
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
index a0145bed..157b4061 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:17cebd04fae50efb002362d666424332629e84f0b8ead7a43773e59f42ef3ac2
+oid sha256:b6a64d81708576132550d88061552358b052c81ceafd9edd0804d814ae094fd4
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
index ff9c20a9..97803dcd 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c363912db42519dbbfd23d0f87c50822153179fa42dfc0cd60ee43dbab80134e
+oid sha256:5753f142f640552d7065052a990dd2f5acb190afd5fdc830bac9e85d2a248f9a
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
index 209e7718..35af0c68 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:48f39d6b781db51ae5e8c192a5dd07c80439f9abf56ffbd8d4e67abf7cec88ae
+oid sha256:5cc89fcc67e55628d5ba29ed0374e7144608644ef1284f41afe082f9d6eed277
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
index 229d49b1..6fff28b4 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:31d9edf946ff30e5e3f381c6de443648c110ddc6480b3871a7b4e1670201591c
+oid sha256:b2621330478ffdd3820c917128f0538a7ef480c2dab825bd8b1dca65b2986532
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
index ab2137e1..b2c3b1af 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5abce875e4f1d30b628420871e0fbca57ac688cf0fc23aea5973598b37aa3371
+oid sha256:43e388849b1d08ad050209d1af5327687161376f7a4081b598a235a724e71c6b
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
index a17082e6..8881e324 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:2510a9a762552b100c9ffae4068e98de11ca180dd49cc3449189f9dba7c6c0fc
+oid sha256:105cd0da127f99ccdeba4598a527a1f1d7ab6269d015e0c1763848042bcd1da0
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
deleted file mode 100644
index eae1dad2..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_dead.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644
index a3612450..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_dead_a.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644
index 0b90249d..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_red_forest_a.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644
index ffc10555..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_red_forest_b.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644
index e36dc3c0..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_vetka_dead.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index 45ffa713..b784d72b 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1018033adbd1970d2d1d7785dc44cf0041ed2e8551097fbe08c23e848269cb0f
+oid sha256:f5a358c6342e8cec3a54654a2c90a166af3a8b686657775a2726e76b4e59bda5
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
index 2d847420..dd8c43d2 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6395f3cbf97dcc770743c2515f6f8710ab8591225fcbbbe460c7a1ae2f56f354
+oid sha256:5f8afddca362878be9a2a9cb462bef044f59a49474b2528ad6a6b39d1a023846
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
index 07a38aa1..472778a4 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:39ed5c3955542ca144e46202b9b63f780cbe57eccccd3150835ac69ca67f3b07
+oid sha256:d472166ea781ebcf4524f70a1e8ff0bf60fbfc1c70492fc3443504a29a49f230
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
index 0729aca6..f4859ccd 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:81bae630c369d72973578a12ac65ccde02e3174e44b4c8f4929013633da810f0
+oid sha256:9a1d569768043cd887ba4333e3ebf2b91abc692ab26a33fdf11c0fb48653bcc9
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
index 3a33f68c..d378159c 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:62dfb44373dc5e223f555dca2e62345872e63710cb492eb9954996ea3e0c6bc7
+oid sha256:be8b065af7a7ac44869e34ebc3f4783c5dc19479174a28fd786af76d96d66167
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
index fafd2902..433db77a 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:7e8574d9b3cfd7b8736124995a595d1f2049946035e6de1d1de791854a2c0f5e
+oid sha256:1b388f32472cc053c5032afea4911997561aff1f6631f92d6a38bd053430ffdf
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
index 6d6201f1..b1372c6c 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:dcd165db718bde4447dfcdc3685b05a92fffa482809a80fc10dd1783b0b1a6d3
+oid sha256:5f41a4891c85d50b9c28fffd255144497279b0a72b992f888cc459fc2eeddb33
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
index 6119da1e..7e223db1 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:09d40af563f81a5764abae77cb53fc86ef0362d3c97bceaf619792a6f556f806
+oid sha256:ba35a5faa6b5ee43b595e50f08a62a2af419976ca431236b9133766edf6c455d
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
index 9ea7bdd8..0965da2f 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:de09df076d5b3ef63d7d17e2590951b6dc22209ffb274a3f489f9b2f8282435d
+oid sha256:2692e3d11b460de9b63771e37e8d0d3ed421c6d40b21a0ccf01045e6d7c366fd
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
index 65f80519..1e36f160 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:fa9eb3ccd085e83894aa3d4fcf8e6b13b26e05a212e61be1fd0795bbd2f69802
+oid sha256:8d48c921c7bf59a09224cb11d3374865e87b96390ceb4a9a8acdb9c87645822e
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
index cccb64b1..2fc22220 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a6a47b5c3c48db563277566e8f5b564df9586402f41f195345f9efb25f62b161
+oid sha256:455ae6357055c2ecb4ac978db40ab56db24baef0aa4c3dd7748241c2529aca57
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
index 17005a9b..b4f8bc4f 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:91b6346c29befbc8db48edb09b179d9392a0f0cc39d58bfa7f73dd07e613feb2
+oid sha256:b239e733f44c66e9be52db91bd85f14132a73988500d18c1f5bde3949748484b
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
index 6e7df7d8..3344e4ad 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6dc34dcb2189cdfd81d59169b70ec080f3c9a772e1abc87faa00aed13765e8fb
+oid sha256:5c505b69cb9883a2e3f27fcee1d938dd1b5a84258237ff87584cd999d3ace46c
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
index dddc7056..c59f21d2 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:dc93ab662c980690412a0f780a2cbf35c42e11ca5356bf4436fe47e8c38189f4
+oid sha256:591f4c193e265608ca5b6dd08bc61fc572140adc3f0c35b8d81fb375edfb9d41
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
index a6662a01..0953b7b2 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:82b8fa6f3cf32b717b04d96761d067aa7dc88abe6cd7f1fda075674dbda7a072
+oid sha256:fdc07cd72eff80907a33ef9e436e7ea06f0c4c0f53105491bead340aa640b295
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
index e4dadfce..b92333df 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:35fb24a5da0773c04c4b4dc809f10eca6f5e854619f920b4d325545d2105c20c
+oid sha256:e8baea6f5c6660e012645ac07db878a89f0b17a85570ddce82414e7686660a22
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
index 6be6dcfe..e77b16fc 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0d8460b09457eee7eb1b5305c0ab8c0e67361c97cb6dee72d2833063d1aecf83
+oid sha256:6013185883945b54f938e4ff4e5f74b4de6f5a0355700c8e5687288e8f662795
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
index 7035f9c0..bf147214 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1a5ae3fddb08482f19105d86f35a7a2d02320bcd736a837d54366c1763632075
+oid sha256:051e1db4eee004f84f1e6415c395dfbbe4f064d468d5cc198386684ccf8b76ca
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
deleted file mode 100644
index 2865bded..00000000
--- a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/spruce/trees_atp_spruce_dead.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-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
index 0caca081..c8e386bf 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6acc9d6e0959d97b9e6ff17981a8605bf0b133fe769e656137c488f3612c29c5
+oid sha256:0591921f6a44dc68df8097f49eac6a09496163a24df52333fa131e0b0e166e23
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
index 3b2d58af..1270ad6f 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a5944931e9ec6c963fd28e961b3c788c92e857e10696fee9ec1d855c2fdd9d43
+oid sha256:4769c4cb2922c077f8e270f6b013318eb57fb9a807637d0da07e1e6ebfa69db6
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
index c10b6695..a8f8211c 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e5743bdf86d65c98c156816352a41019c9995dbb24d70d9982f32329c22c0c68
+oid sha256:9095137ac18ee992150b310fefd8b1baa39feecde98f61a1fc1fd11c6058c0e5
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
index 51520c18..264b2467 100644
--- a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_forestwall1.dds
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_forestwall1.dds
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3e7e7aad8671c6a81d3130d3849ef06a40f07617aedb2c57dcfb258c2b6aae6b
+oid sha256:5c391e2058c1fde27234eabf1a0358e81783addfbf6c10e39e32ef4894899f7c
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
index 9027f685..264b2467 100644
--- a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_forestwall2.dds
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_forestwall2.dds
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6746311aea2651405ae575aa44fae4098d12c912562e8111c2b360bc300de0f6
+oid sha256:5c391e2058c1fde27234eabf1a0358e81783addfbf6c10e39e32ef4894899f7c
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
index 8c66fe26..c3c95de3 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:bcabc48a81ae389f3024cf08bc8fa9fb10648cb0ae2b344e198bb8b5c5ceb8e3
-size 1398256
+oid sha256:0a3aa67d8fe86a7a79154475a24fb092474b20f1271a8b368648fe0f701c3fc6
+size 699192
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
index 5b0841b1..7afd54fe 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b7fd1d4443e494541ae9adb7e1c212f973ecc1f18f6fbed9c345b80dd37b52b3
-size 1398256
+oid sha256:b37288162d5652f3f380e5c24bb3baaba4b175685a0ef7225a51ffa7da25996e
+size 699192
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
index 402a4860..18c0d5e3 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9ff8e1cf966fe6686956289b3b86a8d51c6658027357f978d020a99e2d89d4f5
-size 1398256
+oid sha256:0a7b52618c0b049c35f455f2cdd6dc2276e4f599573337082ecfa8fbe9699a0f
+size 699192
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
index fa3cb247..1ab7b691 100644
--- a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_kamysh.dds
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_kamysh.dds
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:cc2f9fd20dde66b955415213e5bad0b252cb292aece06fd996a44682cc9c026b
-size 2796368
+oid sha256:29f4af4c812329aa2bc95be9665b776e018ed98160679ac06cd1775ef81df7f9
+size 1398248
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
index 89c2fdef..b594cb2c 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f19326d6e5fd8112e5f29974a6d5b2d94cfe66f20b870d8f7bda1ee59951cd4f
+oid sha256:0ae68bbf0bbe08d787a08f60f599c0a2e512e94794052fb40f6e6f82d3bfc984
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
index 09202a77..1860759a 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:60a4eb59622526002341ae7285ff9f9df5748f78434e6f3f5c9d1c3c7fb2ce51
-size 5592560
+oid sha256:0560aabe4bd5664708e54871415e3ef7dfd0270a9e3f4ab6c21028215cb7feb1
+size 2796344
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
index cf0a8223..bf0f5bed 100644
--- a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_vetka.dds
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_vetka.dds
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:bbe3305506873e864152763c85ad69cf3c66df373aae723c5cb0418178eae555
+oid sha256:6cb1fbc7a97ab675ab0ecb68547babde15b0ed813e84a9cb546b155c5b40125b
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
index 053b87ce..be58f705 100644
--- 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
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:8a9c1ec3e23924324cbac32d96d815092517fba722026e7af8024e00dc2d4ebc
+oid sha256:d6de1def10001236edfa910dab45eab84573e6a77ffbc7c0adf333fb058afca2
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
index 5539fca3..c05c5b7b 100644
--- a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_vetkagreen1.dds
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_vetkagreen1.dds
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d32c8db2e3376dd5eb313734a3b5d0116c3436700ec7365f65dc25398c0374a1
+oid sha256:f81eb36f39a391f96ea0b40fcf56475b9e8359c274a36e3c260c696108bd5f49
size 5592560
diff --git a/mods/Aydin's Grass Tweaks/meta.ini b/mods/Aydin's Grass Tweaks/meta.ini
index 42d7e44b..af7aae6d 100644
--- a/mods/Aydin's Grass Tweaks/meta.ini
+++ b/mods/Aydin's Grass Tweaks/meta.ini
@@ -6,7 +6,7 @@ newestVersion=
category="16,"
nexusFileStatus=1
installationFile=Aydins_Grass_Tweaks_4.0.7z
-repository=Nexus
+repository=
ignoredVersion=
comments=
notes=
diff --git a/mods/Bolt Reanimation/meta.ini b/mods/Bolt Reanimation/meta.ini
deleted file mode 100644
index fc04c3dc..00000000
--- a/mods/Bolt Reanimation/meta.ini
+++ /dev/null
@@ -1,28 +0,0 @@
-[General]
-gameName=stalkeranomaly
-modid=0
-version=d2024.3.4.0
-newestVersion=
-category="5,"
-nexusFileStatus=1
-installationFile=Hax_Bolt_Reanimation.rar
-repository=Nexus
-ignoredVersion=
-comments=
-notes=
-nexusDescription=
-url=
-hasCustomURL=true
-lastNexusQuery=
-lastNexusUpdate=
-nexusLastModified=2024-03-04T09:16:30Z
-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/Boomsticks and Sharpsticks/gamedata/configs/items/weapons/m_bolt.ltx b/mods/Boomsticks and Sharpsticks/gamedata/configs/items/weapons/m_bolt.ltx.mohidden
similarity index 100%
rename from mods/Boomsticks and Sharpsticks/gamedata/configs/items/weapons/m_bolt.ltx
rename to mods/Boomsticks and Sharpsticks/gamedata/configs/items/weapons/m_bolt.ltx.mohidden
diff --git a/mods/Dialog Dynamic UI/gamedata/configs/text/eng/ui_st_dialog_fov_mcm.xml b/mods/Dialog Dynamic UI/gamedata/configs/text/eng/ui_st_dialog_fov_mcm.xml
deleted file mode 100644
index 9641f414..00000000
--- a/mods/Dialog Dynamic UI/gamedata/configs/text/eng/ui_st_dialog_fov_mcm.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
-
- Dialogs Dynamic UI
-
-
-
-
- Enable
-
-
- Enable zoom
-
-
- Zoom modifier
-
-
- Minimum zoom
-
-
- With zoom enabled, the FOV will change to at least this value
-
-
- Distance based zoom
-
-
- This changes the FOV so that the character is the same size no matter how far away they are from the player
-
-
- Zoom smoothness
-
-
- Camera focus on NPC
-
-
- Camera rotation factor
-
-
- Camera rotation factor for adjusting the position of the character, 0 means no rotation, negative values will rotate the camera in the other direction
-
-
- Smoothness of the camera focus
-
-
-
diff --git a/mods/Dialog Dynamic UI/gamedata/configs/text/rus/ui_st_dialog_fov_mcm.xml b/mods/Dialog Dynamic UI/gamedata/configs/text/rus/ui_st_dialog_fov_mcm.xml
deleted file mode 100644
index 7c22f16d..00000000
--- a/mods/Dialog Dynamic UI/gamedata/configs/text/rus/ui_st_dialog_fov_mcm.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
-
- Динамический UI диалогов
-
-
-
-
- Включить
-
-
- Включить зум
-
-
- Модификатор зума
-
-
- Минимальный зум
-
-
- При включенной опции зума FOV изменится как минимум до этого значения
-
-
- Зум в зависимости от дистанции
-
-
- При данной опции FOV будет меняться таким образом, чтобы персонаж был одинакового размера независимо от расстояния до игрока
-
-
- Плавность смены зума
-
-
- Фокус камеры на NPC
-
-
- Коэффициент поворота камеры
-
-
- Коэффициент поворота камеры для настройки положения персонажа, 0 - отключение поворота, отрицательные значения повернут камеру в другую сторону
-
-
- Плавность фокуса камеры
-
-
-
diff --git a/mods/Dialog Dynamic UI/gamedata/configs/ui/talk.xml b/mods/Dialog Dynamic UI/gamedata/configs/ui/talk.xml
deleted file mode 100644
index 8ce0105a..00000000
--- a/mods/Dialog Dynamic UI/gamedata/configs/ui/talk.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-
-
-
-
- ui_inGame2_dialog_main_window
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/mods/Dialog Dynamic UI/gamedata/configs/ui/talk_16.xml b/mods/Dialog Dynamic UI/gamedata/configs/ui/talk_16.xml
deleted file mode 100644
index 73cfeac2..00000000
--- a/mods/Dialog Dynamic UI/gamedata/configs/ui/talk_16.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-
-
-
- ui_inGame2_dialog_main_window
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/mods/Dialog Dynamic UI/gamedata/scripts/dialog_fov.script b/mods/Dialog Dynamic UI/gamedata/scripts/dialog_fov.script
deleted file mode 100644
index 0e12bee3..00000000
--- a/mods/Dialog Dynamic UI/gamedata/scripts/dialog_fov.script
+++ /dev/null
@@ -1,382 +0,0 @@
--- UTILS
--- Similar floats
-local function similar(f1, f2, e)
- return math.abs(f1 - f2) <= (e or 0.001)
-end
-
--- Truncate to a decimal
-local function trunc(float, decimal)
- local d = 10 ^ (decimal or 1)
- return math.floor(float * d) / d
-end
-
--- Linear inter/extrapolation
-local function lerp(a, b, f)
- if a and b and f then
- return a + f * (b - a)
- else
- return a or b or 0
- end
-end
-
--- Time delta
-local function time_delta()
- return math.min(50, device().time_delta)
-end
-
--- LUT Lookup
-local function array_keys(t, sorted, sort_func)
- local res = {}
- local res_count = 1
- for k, v in pairs(t) do
- res[res_count] = k
- res_count = res_count + 1
- end
- if sorted then
- if sort_func then
- table.sort(res, sort_func)
- else
- table.sort(res)
- end
- end
- return res
-end
-
-local function bisect_left(a, x, lo, hi)
- local lo = lo or 1
- local hi = hi or #a
-
- if lo < 0 then
- printf('bisect, lo must be non-negative')
- return
- end
-
- while lo < hi do
- local mid = math.floor((lo + hi) * 0.5)
- if a[mid] < x then
- lo = mid+1
- else
- hi = mid
- end
- end
-
- return lo
-end
-
-local function lookup(t, key, tkeys)
- if is_empty(t) then return 0 end
-
- if t[key] then return t[key] end
-
- if not tkeys then
- tkeys = array_keys(t, true)
- end
-
- local tkeys_len = #tkeys
- if key <= tkeys[1] then
- if key == tkeys[1] then
- return t[tkeys[1]]
- elseif not tkeys[2] then
- return t[tkeys[1]]
- else
- local hi = tkeys[2]
- local lo = tkeys[1]
- local k = (key - lo) / (hi - lo)
- return lerp(t[lo], t[hi], k)
- end
- end
- if key >= tkeys[tkeys_len] then
- if key == tkeys[tkeys_len] then
- return t[tkeys[tkeys_len]]
- elseif not tkeys[tkeys_len - 1] then
- return t[tkeys[tkeys_len]]
- else
- local hi = tkeys[tkeys_len]
- local lo = tkeys[tkeys_len - 1]
- local k = (key - lo) / (hi - lo)
- return lerp(t[lo], t[hi], k)
- end
- end
-
- local where = bisect_left(tkeys, key)
- local lo = tkeys[where-1] or tkeys[where]
- local hi = tkeys[where]
- if lo == hi then return t[lo] end
-
- local delta = (key - lo) / (hi - lo)
- local res = delta * t[hi] + (1 - delta) * t[lo]
-
- --printf(res)
- return res
-end
-
--- EMA smoothing for changing values, frame independent
-local default_smoothing = 11.5
-local smoothed_values = {}
-
-local function ema(key, value, def, steps, delta)
- local steps = steps or default_smoothing
- local delta = delta or steps
- local smoothing_alpha = 2.0 / (steps + 1)
-
- smoothed_values[key] = smoothed_values[key] and smoothed_values[key] + math.min(smoothing_alpha * (delta / steps), 1) * (value - smoothed_values[key]) or def or value
-
- --printf("EMA fired, key %s, target %s, current %s, going %s", key, value, smoothed_values[key], (value > smoothed_values[key] and "up" or "down"))
- return smoothed_values[key]
-end
-
-special_characters = {
- ["m_trader"] = "esc_2_12_stalker_trader",
- ["m_lesnik"] = "red_forester_tech",
- ["zat_a2_stalker_nimble"] = "esc_2_12_stalker_nimble",
-}
-
--- LUT for rotating camera to the angle depending on aspect ratio of display (device().width / device().height)
-local ratio_to_rotate = {
- [1.333] = -11,
- [1.600] = -13.5,
- [1.777] = -15.5,
- [2.370] = -21.5,
- [3.555] = -31,
-}
-local ratio_to_rotate_keys = array_keys(ratio_to_rotate, true)
-
--- Vars
-local saved_fov
-local zoom_fov_from
-local zoom_fov_to
-local zoom_fov_active = false
-local zoom_fov_active_always = false
-local saved_hud_fov
-local zoom_hud_fov_from
-local zoom_hud_fov_to
-
-local saved_npc
-local saved_dist
-local saved_rotate
-
--- Get NPC actor talks to
-function valid_npc(npc)
- return npc and (special_characters[npc:section()] or IsStalker(npc) and npc:alive() and npc:is_talking() and npc:id() ~= AC_ID)
-end
-
-function GetTalkingNpc()
- local npc = get_speaker()
- if valid_npc(npc) then
- return npc
- end
-
- -- for i=1, #db.OnlineStalkers do
- -- local st = db.storage[db.OnlineStalkers[i]]
- -- local npc = st and st.object or level.object_by_id(db.OnlineStalkers[i])
- -- if valid_npc(npc) then
- -- return npc
- -- end
- -- end
-end
-
--- Move camera so the npc is in the left
-function move_camera()
- if not saved_npc then
- return stop_move_camera()
- end
-
- -- Get look position and direction
- local look_pos = utils_obj.safe_bone_pos(saved_npc, "bip01_head")
- local look_dir = look_pos:sub(device().cam_pos):normalize()
-
- -- Turn look direction depending on aspect ratio of display
- local rotate_deg
- if saved_rotate then
- rotate_deg = saved_rotate
- else
- local ratio = trunc(device().width / device().height, 3)
- rotate_deg = lookup(ratio_to_rotate, ratio, ratio_to_rotate_keys)
- saved_rotate = rotate_deg
- end
- if saved_dist and settings.zoom_fov_enabled and settings.distance_fov then
- rotate_deg = rotate_deg / saved_dist
- end
- rotate_deg = rotate_deg * settings.turn_modifier
- local new_look_dir = vector_rotate_y(look_dir, rotate_deg)
-
- -- Smooth the turning for better effect
- local steps = settings.smoothing
- local delta = time_delta()
- local smoothed_look_dir = vector():set(
- ema("look_dir_x", new_look_dir.x, look_dir.x, steps, delta),
- ema("look_dir_y", new_look_dir.y, look_dir.y, steps, delta),
- ema("look_dir_z", new_look_dir.z, look_dir.z, steps, delta)
- )
-
- -- Apply the turning
- local new_look_pos = vector():mad(device().cam_pos, smoothed_look_dir, 10)
- db.actor:actor_look_at_point(new_look_pos)
-end
-
-function start_move_camera()
- RegisterScriptCallback("actor_on_update", move_camera)
-end
-
-function stop_move_camera()
- UnregisterScriptCallback("actor_on_update", move_camera)
- if db.actor then
- if db.actor.actor_stop_look_at_point then
- db.actor:actor_stop_look_at_point()
- end
- end
- smoothed_values.look_dir_x = nil
- smoothed_values.look_dir_y = nil
- smoothed_values.look_dir_z = nil
- saved_rotate = nil
- saved_npc = nil
- saved_dist = nil
-end
-
-function GUI_on_show(name)
- if name == "Dialog" then
- saved_npc = GetTalkingNpc()
- saved_dist = saved_npc and math.max(1, device().cam_pos:distance_to(utils_obj.safe_bone_pos(saved_npc, "bip01_head")) - 0.2)
- if settings.zoom_fov_enabled then
- saved_fov = zoom_fov_active and saved_fov or get_console_cmd(2, "fov")
- local new_fov = math.min(settings.min_zoom_fov, saved_fov / settings.zoom_fov_modifier)
- if saved_dist and settings.distance_fov then
- new_fov = math.atan(math.tan(new_fov * (0.5 * math.pi / 180)) / saved_dist) / (0.5 * math.pi / 180)
- end
- saved_hud_fov = zoom_fov_active and saved_hud_fov or get_console_cmd(2, "hud_fov")
- local new_hud_fov = saved_hud_fov / (saved_fov / new_fov)
- start_fov(saved_fov, new_fov, saved_hud_fov, new_hud_fov, true)
- end
- if settings.track_npc then
- start_move_camera()
- end
- end
-end
-
-function GUI_on_hide(name)
- if name == "Dialog" then
- reset(true)
- end
-end
-
--- Smooth changing of FOV
--- start_fov(fov_from, fov_to, fov_hud_from, fov_hud_to, active_always) initiate the changing procedure
-function change_fov()
- local steps = settings.fov_smoothing
- local delta = time_delta()
- local smoothed_fov = ema("fov", zoom_fov_to, zoom_fov_from, steps, delta)
- exec_console_cmd("fov " .. smoothed_fov)
- local smoothed_hud_fov = ema("hud_fov", zoom_hud_fov_to, zoom_hud_fov_from, steps, delta)
- exec_console_cmd("hud_fov " .. smoothed_hud_fov)
- if not zoom_fov_active_always and similar(smoothed_fov, zoom_fov_to, 0.02) then
- exec_console_cmd("fov " .. zoom_fov_to)
- exec_console_cmd("hud_fov " .. zoom_hud_fov_to)
- stop_fov()
- end
-end
-
-function start_fov(fov_from, fov_to, fov_hud_from, fov_hud_to, active_always)
- zoom_fov_from = fov_from or get_console_cmd(2, "fov")
- zoom_fov_to = fov_to
- zoom_hud_fov_from = fov_hud_from or get_console_cmd(2, "hud_fov")
- zoom_hud_fov_to = fov_hud_to
- zoom_fov_active = true
- zoom_fov_active_always = active_always
- RegisterScriptCallback("actor_on_update", change_fov)
-end
-
-function stop_fov()
- smoothed_values.fov = nil
- smoothed_values.hud_fov = nil
- zoom_fov_active = false
- zoom_fov_active_always = false
- UnregisterScriptCallback("actor_on_update", change_fov)
-end
-
-function reset_fov()
- stop_fov()
- if not saved_fov then return end
-
- exec_console_cmd("fov " .. saved_fov)
- exec_console_cmd("hud_fov " .. saved_hud_fov)
- saved_fov = nil
- saved_hud_fov = nil
-end
-
-function reset(soft_fov)
- if soft_fov then
- if saved_fov then
- start_fov(zoom_fov_to, saved_fov, zoom_hud_fov_to, saved_hud_fov)
- end
- else
- reset_fov()
- end
- stop_move_camera()
-end
-
-function hard_reset()
- reset()
-end
-
--- MCM
-function load_defaults()
- local t = {}
- local op = dialog_fov_mcm.op
- for i, v in ipairs(op.gr) do
- if v.def ~= nil then
- t[v.id] = v.def
- end
- end
- return t
-end
-
-settings = load_defaults()
-
-function load_settings()
- settings = load_defaults()
- if ui_mcm then
- for k, v in pairs(settings) do
- settings[k] = ui_mcm.get(dialog_fov_mcm.op_id .. "/" .. k)
- end
- end
- return settings
-end
-
-function on_option_change()
- load_settings()
- switch_mod(settings.enabled)
-end
-
-function switch_mod(enable)
- local funcs = {
- {"GUI_on_show", GUI_on_show},
- {"GUI_on_hide", GUI_on_hide},
- {"actor_on_net_destroy", hard_reset},
- {"actor_on_before_death", hard_reset},
- }
- if enable then
- for i, v in ipairs(funcs) do
- RegisterScriptCallback(v[1], v[2])
- end
- else
- for i, v in ipairs(funcs) do
- UnregisterScriptCallback(v[1], v[2])
- end
- reset()
- return
- end
-
- if not settings.zoom_fov_enabled then
- reset_fov()
- end
-
- if not settings.track_npc then
- stop_move_camera()
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_first_update", on_option_change)
- RegisterScriptCallback("on_option_change", on_option_change)
- switch_mod(true)
-end
diff --git a/mods/Dialog Dynamic UI/gamedata/scripts/dialog_fov_mcm.script b/mods/Dialog Dynamic UI/gamedata/scripts/dialog_fov_mcm.script
deleted file mode 100644
index 6f783e7d..00000000
--- a/mods/Dialog Dynamic UI/gamedata/scripts/dialog_fov_mcm.script
+++ /dev/null
@@ -1,24 +0,0 @@
-op_id = "demonized_dialog_fov"
-op_preset_id = "presets"
-
-op = {
- id = op_id, sh = true, gr = {
- {id = "banner", type = "slide", text = "ui_mcm_" .. op_id .. "_title", size = {512, 50}, spacing = 20},
-
- {id = "enabled", type = "check", val = 1, def = true},
- {id = "divider", type = "line"},
- {id = "zoom_fov_enabled", type = "check", val = 1, def = true},
- {id = "zoom_fov_modifier", type = "track", val = 2, min = 1, max = 3, step = 0.1, def = 1.3},
- {id = "min_zoom_fov", type = "track", val = 2, min = 15, max = 90, step = 1, def = 55},
- {id = "distance_fov", type = "check", val = 1, def = true},
- {id = "fov_smoothing", type = "track", val = 2, min = 1, max = 50, step = 1, def = 20},
- {id = "divider", type = "line"},
- {id = "track_npc", type = "check", val = 1, def = true},
- {id = "turn_modifier", type = "track", val = 2, min = -3, max = 3, step = 0.05, def = 1},
- {id = "smoothing", type = "track", val = 2, min = 1, max = 50, step = 1, def = 30},
- }
-}
-
-function on_mcm_load()
- return op
-end
\ No newline at end of file
diff --git a/mods/Dialog Dynamic UI/meta.ini b/mods/Dialog Dynamic UI/meta.ini
deleted file mode 100644
index bc7d8e55..00000000
--- a/mods/Dialog Dynamic UI/meta.ini
+++ /dev/null
@@ -1,28 +0,0 @@
-[General]
-gameName=stalkeranomaly
-modid=0
-version=d2024.2.27.0
-newestVersion=
-category="3,"
-nexusFileStatus=1
-installationFile=Dialog_Dynamic_UI.4.zip
-repository=Nexus
-ignoredVersion=
-comments=
-notes=
-nexusDescription=
-url=
-hasCustomURL=false
-lastNexusQuery=
-lastNexusUpdate=
-nexusLastModified=2024-02-28T00:26:12Z
-nexusCategory=0
-converted=false
-validated=false
-color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
-tracked=0
-
-[installedFiles]
-1\modid=0
-1\fileid=0
-size=1
diff --git a/mods/Bolt Reanimation/gamedata/configs/items/weapons/m_bolt.ltx b/mods/Haxs Bolt Reanimation/gamedata/configs/items/weapons/m_bolt.ltx
similarity index 100%
rename from mods/Bolt Reanimation/gamedata/configs/items/weapons/m_bolt.ltx
rename to mods/Haxs Bolt Reanimation/gamedata/configs/items/weapons/m_bolt.ltx
diff --git a/mods/Bolt Reanimation/gamedata/meshes/anomaly_weapons/hud_hands_animation/bolt_sh.omf b/mods/Haxs Bolt Reanimation/gamedata/meshes/anomaly_weapons/hud_hands_animation/bolt_sh.omf
similarity index 100%
rename from mods/Bolt Reanimation/gamedata/meshes/anomaly_weapons/hud_hands_animation/bolt_sh.omf
rename to mods/Haxs Bolt Reanimation/gamedata/meshes/anomaly_weapons/hud_hands_animation/bolt_sh.omf
diff --git a/mods/Bolt Reanimation/gamedata/meshes/dynamics/devices/dev_bolt/dev_bolt_hud.ogf b/mods/Haxs Bolt Reanimation/gamedata/meshes/dynamics/devices/dev_bolt/dev_bolt_hud.ogf
similarity index 100%
rename from mods/Bolt Reanimation/gamedata/meshes/dynamics/devices/dev_bolt/dev_bolt_hud.ogf
rename to mods/Haxs Bolt Reanimation/gamedata/meshes/dynamics/devices/dev_bolt/dev_bolt_hud.ogf
diff --git a/mods/Bolt Reanimation/gamedata/meshes/dynamics/devices/dev_bolt/dev_hand_bolt_hud_animation.omf b/mods/Haxs Bolt Reanimation/gamedata/meshes/dynamics/devices/dev_bolt/dev_hand_bolt_hud_animation.omf
similarity index 100%
rename from mods/Bolt Reanimation/gamedata/meshes/dynamics/devices/dev_bolt/dev_hand_bolt_hud_animation.omf
rename to mods/Haxs Bolt Reanimation/gamedata/meshes/dynamics/devices/dev_bolt/dev_hand_bolt_hud_animation.omf
diff --git a/mods/Haxs Bolt Reanimation/meta.ini b/mods/Haxs Bolt Reanimation/meta.ini
new file mode 100644
index 00000000..8153dd87
--- /dev/null
+++ b/mods/Haxs Bolt Reanimation/meta.ini
@@ -0,0 +1,28 @@
+[General]
+gameName=stalkeranomaly
+modid=0
+version=d2024.3.4.0
+newestVersion=
+category="5,"
+nexusFileStatus=1
+installationFile=Hax_Bolt_Reanimation.rar
+repository=
+ignoredVersion=
+comments=
+notes=
+nexusDescription=
+url=
+hasCustomURL=false
+lastNexusQuery=
+lastNexusUpdate=
+nexusLastModified=2024-03-21T11:06:54Z
+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/Headlamp Reanimated/gamedata/anims/camera_effects/headlamp/headlamp.anm b/mods/Headlamp Reanimated/gamedata/anims/camera_effects/headlamp/headlamp.anm
new file mode 100644
index 00000000..05a680e3
Binary files /dev/null and b/mods/Headlamp Reanimated/gamedata/anims/camera_effects/headlamp/headlamp.anm differ
diff --git a/mods/Headlamp Reanimated/gamedata/anims/camera_effects/headlamp/rifle_headlamp.anm b/mods/Headlamp Reanimated/gamedata/anims/camera_effects/headlamp/rifle_headlamp.anm
new file mode 100644
index 00000000..05a680e3
Binary files /dev/null and b/mods/Headlamp Reanimated/gamedata/anims/camera_effects/headlamp/rifle_headlamp.anm differ
diff --git a/mods/Headlamp Reanimated/gamedata/configs/items/items/items_animations.ltx b/mods/Headlamp Reanimated/gamedata/configs/items/items/items_animations.ltx
new file mode 100644
index 00000000..aeb04a20
--- /dev/null
+++ b/mods/Headlamp Reanimated/gamedata/configs/items/items/items_animations.ltx
@@ -0,0 +1,19 @@
+;--==================< Gasmask >=================--
+[anim_mask_clean]
+hands_position = 0.021,-0.16,-0.1025
+hands_orientation = -0.5,1,1.15
+hands_position_16x9 = 0.053,-0.1805,-0.1
+hands_orientation_16x9 = 2.35,2.75,2.85
+
+anm_wipe = _gasmask_swipe2
+anm_hide_hand = _l_hand_hide_generic
+
+;--=================< Headlamp >=================--
+[anim_headlamp]
+hands_position = 0,-0.03,0.12
+hands_orientation = 0,0,0
+hands_position_16x9 = 0,-0.03,0.12
+hands_orientation_16x9 = 0,0,0
+
+anm_switch = _unarmed_headlamp
+anm_hide_hand = salo
\ No newline at end of file
diff --git a/mods/Headlamp Reanimated/gamedata/meshes/anomaly_weapons/hud_hands_animation/wpn_hand_pda_hud_animation.omf b/mods/Headlamp Reanimated/gamedata/meshes/anomaly_weapons/hud_hands_animation/wpn_hand_pda_hud_animation.omf
new file mode 100644
index 00000000..b78e5199
Binary files /dev/null and b/mods/Headlamp Reanimated/gamedata/meshes/anomaly_weapons/hud_hands_animation/wpn_hand_pda_hud_animation.omf differ
diff --git a/mods/Headlamp Reanimated/meta.ini b/mods/Headlamp Reanimated/meta.ini
new file mode 100644
index 00000000..6d8ee6e7
--- /dev/null
+++ b/mods/Headlamp Reanimated/meta.ini
@@ -0,0 +1,28 @@
+[General]
+gameName=stalkeranomaly
+modid=0
+version=d2024.3.21.0
+newestVersion=
+category="5,"
+nexusFileStatus=1
+installationFile=anomaly-headlamp.7z
+repository=Nexus
+ignoredVersion=
+comments=
+notes=
+nexusDescription=
+url=
+hasCustomURL=false
+lastNexusQuery=
+lastNexusUpdate=
+nexusLastModified=2024-03-21T11:09:29Z
+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/Headlamp Reanimated/readme.txt b/mods/Headlamp Reanimated/readme.txt
new file mode 100644
index 00000000..417820c1
--- /dev/null
+++ b/mods/Headlamp Reanimated/readme.txt
@@ -0,0 +1,7 @@
+Hey, this little addon is reanimation to headlamp in S.T.A.L.K.E.R. - Anomaly 1.5.2
+Developer: Celestrilia
+Contact me: Celestrilia#5365
+
+Хей, этот небольшой аддон нацелен на реанимацию налобного фонаря в S.T.A.L.K.E.R. - Anomaly 1.5.2
+Разработчик: Celestrilia
+РЎРІСЏР·СЊ СЃРѕ РјРЅРѕР№: Celestrilia#5365
\ No newline at end of file
diff --git a/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Exo/exo1.ogg b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Exo/exo1.ogg
new file mode 100644
index 00000000..04d01378
--- /dev/null
+++ b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Exo/exo1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:395992daafad0c78f62d4fc2abdcdd3c2902f210e6cfcd4984679b2b7b6b5f5b
+size 45586
diff --git a/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Exo/exo2.ogg b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Exo/exo2.ogg
new file mode 100644
index 00000000..5d47ef38
--- /dev/null
+++ b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Exo/exo2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a906692ebaaf0e70ae3ff1ce33b3f9d2d003e16d0d5af20fbdc9efc213cd78f9
+size 46804
diff --git a/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Exo/exo3.ogg b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Exo/exo3.ogg
new file mode 100644
index 00000000..1abf54bb
--- /dev/null
+++ b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Exo/exo3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8e7987f43bd57eaa4dc7de75923dad058e4c9f232bac1d0d6f30fecdbfbda51a
+size 43954
diff --git a/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Heavy/heavy1.ogg b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Heavy/heavy1.ogg
new file mode 100644
index 00000000..2191f949
--- /dev/null
+++ b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Heavy/heavy1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4b068f0339489f5d04b5511d0b31c6e8c8ab939c2cb38dee1b14c562d0e6dfa5
+size 35366
diff --git a/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Heavy/heavy2.ogg b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Heavy/heavy2.ogg
new file mode 100644
index 00000000..54d8fbca
--- /dev/null
+++ b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Heavy/heavy2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8d9a6977aa8beb6eb4bb351d539f8f7263943bf6e3985f2ea8f93d03fed6b489
+size 40945
diff --git a/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Heavy/heavy3.ogg b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Heavy/heavy3.ogg
new file mode 100644
index 00000000..395d6eeb
--- /dev/null
+++ b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Heavy/heavy3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2332428ce8ee6dfd91909436a57a69d020093a348ad27909c269b14f749f8ec0
+size 43040
diff --git a/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Light/light1.ogg b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Light/light1.ogg
new file mode 100644
index 00000000..49708875
--- /dev/null
+++ b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Light/light1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6ee63bd57b432e73bc943033ed28e51a863592625806f11fb8e268b8ded8b930
+size 23769
diff --git a/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Light/light2.ogg b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Light/light2.ogg
new file mode 100644
index 00000000..e57dd45f
--- /dev/null
+++ b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Light/light2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:00cd58a0d6eefd54ec49bb960f72f59f2204eadd5cf66d30f5d0ae0a97b31c3b
+size 25132
diff --git a/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Light/light3.ogg b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Light/light3.ogg
new file mode 100644
index 00000000..8f5432a8
--- /dev/null
+++ b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Light/light3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0c13d8fbb58db034fcedd228bcf1b091e2812f7367677f2428b1d4407d6263b4
+size 23961
diff --git a/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Medium/medium1.ogg b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Medium/medium1.ogg
new file mode 100644
index 00000000..c263312d
--- /dev/null
+++ b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Medium/medium1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4fa7912302f9cd8a3613bf3f76084bba896d0fd2a6053a696d5f5a846bb2621d
+size 29885
diff --git a/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Medium/medium2.ogg b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Medium/medium2.ogg
new file mode 100644
index 00000000..530e874f
--- /dev/null
+++ b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Medium/medium2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fbc51d8866c9a6cc573277590416063e44dc47c072a913aef9bbfa386b18db10
+size 36420
diff --git a/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Medium/medium3.ogg b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Medium/medium3.ogg
new file mode 100644
index 00000000..c1937330
--- /dev/null
+++ b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Medium/medium3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fccfa45ccb779d437931314dcd0a61cf9e008e77c21d0386fa00a8d4cc9c9bcd
+size 45366
diff --git a/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Naked/naked1.ogg b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Naked/naked1.ogg
new file mode 100644
index 00000000..404aebb1
--- /dev/null
+++ b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Naked/naked1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:16dee834b3e4a0ca6ed4007ce4f713aaf4dcde00988a3d1c60a89c9d5446b106
+size 18797
diff --git a/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Naked/naked2.ogg b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Naked/naked2.ogg
new file mode 100644
index 00000000..f14fdca6
--- /dev/null
+++ b/mods/Ledge Climbing Sounds Redone/gamedata/sounds/ledge_grabbing/Vaulting/Naked/naked2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bcd335b3b234fd83d76f9b8b62288f77a75af6b065ae6d5ddcd37dd0b2089dc5
+size 19997
diff --git a/mods/Ledge Climbing Sounds Redone/meta.ini b/mods/Ledge Climbing Sounds Redone/meta.ini
new file mode 100644
index 00000000..e73e6765
--- /dev/null
+++ b/mods/Ledge Climbing Sounds Redone/meta.ini
@@ -0,0 +1,28 @@
+[General]
+gameName=stalkeranomaly
+modid=0
+version=d2024.3.20.0
+newestVersion=
+category="-1,"
+nexusFileStatus=1
+installationFile=Ledge_Climbing_Sounds_Redone.rar
+repository=Nexus
+ignoredVersion=
+comments=
+notes=
+nexusDescription=
+url=
+hasCustomURL=true
+lastNexusQuery=
+lastNexusUpdate=
+nexusLastModified=2024-03-20T11:08:13Z
+nexusCategory=0
+converted=false
+validated=false
+color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
+tracked=0
+
+[installedFiles]
+1\modid=0
+1\fileid=0
+size=1
diff --git a/mods/New Levels - Arrival Patch/gamedata/configs/hazardous_anomalies/regions/bunker_a1.ltx b/mods/New Levels - Arrival Patch/gamedata/configs/hazardous_anomalies/regions/bunker_a1.ltx
new file mode 100644
index 00000000..51b00530
--- /dev/null
+++ b/mods/New Levels - Arrival Patch/gamedata/configs/hazardous_anomalies/regions/bunker_a1.ltx
@@ -0,0 +1,46 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 3
+anomaly_max_active = 38 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_zharka
+zone_mine_ghost
+zone_mine_thorn
+zone_mine_umbra
+;;----------------------------
+;zone_field_radioactive_weak
+zone_field_radioactive_average
+;zone_field_radioactive_strong
+;;----------------------------
+zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+;;----------------------------
+;zone_mine_acidic_weak
+zone_mine_acidic_average
+;zone_mine_acidic_strong
+;;----------------------------
+;zone_mine_electric_weak
+zone_mine_electric_average
+;zone_mine_electric_strong
+;;----------------------------
+;zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+;;----------------------------
+;zone_mine_gravitational_weak
+;zone_mine_gravitational_average
+;zone_mine_gravitational_strong
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+bunker_1
+bunker_2
\ No newline at end of file
diff --git a/mods/New Levels - Arrival Patch/gamedata/configs/hazardous_anomalies/regions/collaider.ltx b/mods/New Levels - Arrival Patch/gamedata/configs/hazardous_anomalies/regions/collaider.ltx
new file mode 100644
index 00000000..45f0dd7a
--- /dev/null
+++ b/mods/New Levels - Arrival Patch/gamedata/configs/hazardous_anomalies/regions/collaider.ltx
@@ -0,0 +1,52 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.5
+anomaly_max_number = 6
+anomaly_max_active = 30 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_zharka
+zone_mine_blast
+zone_mine_ghost
+zone_mine_point
+zone_mine_thorn
+zone_mine_umbra
+;;----------------------------
+zone_field_radioactive_weak
+zone_field_radioactive_average
+;zone_field_radioactive_strong
+;;----------------------------
+zone_radioactive_weak
+zone_radioactive_average
+;zone_radioactive_strong
+;;----------------------------
+zone_mine_acidic_weak
+zone_mine_acidic_average
+;zone_mine_acidic_strong
+;;----------------------------
+zone_mine_electric_weak
+zone_mine_electric_average
+;zone_mine_electric_strong
+;;----------------------------
+zone_mine_thermal_weak
+zone_mine_thermal_average
+;zone_mine_thermal_strong
+;;----------------------------
+zone_mine_gravitational_weak
+;zone_mine_gravitational_average
+;zone_mine_gravitational_strong
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+collaider_1
+collaider_2
+collaider_3
+collaider_4
+collaider_5
+collaider_6
\ No newline at end of file
diff --git a/mods/New Levels - Arrival Patch/gamedata/configs/hazardous_anomalies/regions/grimwood.ltx b/mods/New Levels - Arrival Patch/gamedata/configs/hazardous_anomalies/regions/grimwood.ltx
new file mode 100644
index 00000000..b2dd303e
--- /dev/null
+++ b/mods/New Levels - Arrival Patch/gamedata/configs/hazardous_anomalies/regions/grimwood.ltx
@@ -0,0 +1,66 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.30
+anomaly_max_number = 25
+anomaly_max_active = 20
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_flash
+zone_mine_ghost
+zone_mine_mefistotel
+zone_mine_cdf
+zone_mine_point
+zone_mine_umbra
+zone_mine_sphere
+zone_no_gravity
+zone_mine_thorn
+;;----------------------------
+zone_field_radioactive_weak
+zone_field_radioactive_average
+;zone_field_radioactive_strong
+;;----------------------------
+;zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+;;----------------------------
+zone_mine_acidic_weak
+zone_mine_acidic_average
+;zone_mine_acidic_strong
+;;----------------------------
+zone_mine_electric_weak
+zone_mine_electric_average
+zone_mine_electric_strong
+;;----------------------------
+zone_mine_thermal_weak
+zone_mine_thermal_average
+zone_mine_thermal_strong
+;;----------------------------
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+;zone_mine_gravitational_strong
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+grim_10
+
+;Determines the smarts around which anomalies will be created, with reduced amount (see script for how much)
+[available_smarts_reduced]
+grim_1
+grim_2
+grim_3
+grim_4
+grim_7
+grim_8
+grim_9
+grim_11
+grim_13
+grim_14
\ No newline at end of file
diff --git a/mods/New Levels - Arrival Patch/gamedata/configs/hazardous_anomalies/regions/poselok_ug.ltx b/mods/New Levels - Arrival Patch/gamedata/configs/hazardous_anomalies/regions/poselok_ug.ltx
new file mode 100644
index 00000000..3223fe3e
--- /dev/null
+++ b/mods/New Levels - Arrival Patch/gamedata/configs/hazardous_anomalies/regions/poselok_ug.ltx
@@ -0,0 +1,77 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.25
+anomaly_max_number = 40
+anomaly_max_active = 30 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_blast
zone_mine_cdf
+zone_mine_flash
+zone_mine_ghost
+zone_mine_gold
+zone_mine_mefistotel
+zone_mine_net
+zone_mine_point
+zone_mine_seed
+zone_mine_shatterpoint
+zone_mine_sloth
+zone_mine_sphere
+zone_mine_springboard
+zone_mine_thorn
+zone_mine_vapour
+zone_mine_vortex
+;;----------------------------
+zone_field_radioactive_weak
+zone_field_radioactive_average
+;zone_field_radioactive_strong
+;;----------------------------
+;zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+;;----------------------------
+zone_mine_acidic_weak
+zone_mine_acidic_average
+;zone_mine_acidic_strong
+;;----------------------------
+zone_mine_electric_weak
+zone_mine_electric_average
+;zone_mine_electric_strong
+;;----------------------------
+zone_mine_thermal_weak
+zone_mine_thermal_average
+;zone_mine_thermal_strong
+;;----------------------------
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+;zone_mine_gravitational_strong
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+
+;Determines the smarts around which anomalies will be created, with reduced amount (see script for how much)
+[available_smarts_reduced]
+posug_3
+posug_5
+posug_9
+posug_11
+posug_13
+posug_15
+posug_18
+posug_19
+posug_21
+posug_23
+posug_24
+posug_29
+posug_31
+posug_34
+posug_35
+posug_36
\ No newline at end of file
diff --git a/mods/New Levels - Arrival Patch/gamedata/configs/hazardous_anomalies/regions/promzona.ltx b/mods/New Levels - Arrival Patch/gamedata/configs/hazardous_anomalies/regions/promzona.ltx
new file mode 100644
index 00000000..2aa332c4
--- /dev/null
+++ b/mods/New Levels - Arrival Patch/gamedata/configs/hazardous_anomalies/regions/promzona.ltx
@@ -0,0 +1,63 @@
+;Determines the spawn percentage per each anomaly and max number of them
+[spawn_properties]
+spawn_percent = 0.25
+anomaly_max_number = 20
+anomaly_max_active = 30 ; Unused
+
+;Determines the range of anomaly radius
+[radius_properties]
+min_radius = 2
+max_radius = 3
+
+;Determines the list of anomalies that can be spawned
+[anomaly_types]
+;zone_mine_acid
+;zone_mine_electra
+;zone_mine_zharka
+zone_mine_flash
+zone_mine_ghost
+zone_mine_mefistotel
+zone_mine_cdf
+zone_mine_point
+zone_mine_umbra
+zone_mine_sphere
+zone_no_gravity
+zone_mine_thorn
+;;----------------------------
+zone_field_radioactive_weak
+zone_field_radioactive_average
+;zone_field_radioactive_strong
+;;----------------------------
+;zone_radioactive_weak
+;zone_radioactive_average
+;zone_radioactive_strong
+;;----------------------------
+zone_mine_acidic_weak
+;zone_mine_acidic_average
+;zone_mine_acidic_strong
+;;----------------------------
+zone_mine_electric_weak
+;zone_mine_electric_average
+;zone_mine_electric_strong
+;;----------------------------
+zone_mine_thermal_weak
+;zone_mine_thermal_average
+;zone_mine_thermal_strong
+;;----------------------------
+zone_mine_gravitational_weak
+zone_mine_gravitational_average
+;zone_mine_gravitational_strong
+
+;Determines the smarts around which anomalies will be created
+[available_smarts]
+prom_15
+
+;Determines the smarts around which anomalies will be created, with reduced amount (see script for how much)
+[available_smarts_reduced]
+prom_1
+prom_2
+prom_5
+prom_9
+prom_12
+prom_14
+prom_13
\ No newline at end of file
diff --git a/mods/New Levels - Arrival Patch/meta.ini b/mods/New Levels - Arrival Patch/meta.ini
new file mode 100644
index 00000000..0e76f985
--- /dev/null
+++ b/mods/New Levels - Arrival Patch/meta.ini
@@ -0,0 +1,28 @@
+[General]
+gameName=stalkeranomaly
+modid=0
+version=d2024.3.20.0
+newestVersion=
+category="-1,"
+nexusFileStatus=1
+installationFile=Arrival_New_Levels_v0.51_compatibility_patch_v1.1.1.zip
+repository=Nexus
+ignoredVersion=
+comments=
+notes=
+nexusDescription=
+url=
+hasCustomURL=false
+lastNexusQuery=
+lastNexusUpdate=
+nexusLastModified=2024-03-21T01:46:26Z
+nexusCategory=0
+converted=false
+validated=false
+color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
+tracked=0
+
+[installedFiles]
+1\modid=0
+1\fileid=0
+size=1
diff --git a/mods/New Levels/gamedata/textures/map/map_grimwood.dds b/mods/New Levels/gamedata/textures/map/map_grimwood.dds
deleted file mode 100644
index ed7e3357..00000000
--- a/mods/New Levels/gamedata/textures/map/map_grimwood.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9ec477affcd1842aa67735084747989ec71c751aa8910f3fae01b495ebac219d
-size 4194432
diff --git a/mods/New Levels/gamedata/textures/map/map_grimwood.dds.mohidden b/mods/New Levels/gamedata/textures/map/map_grimwood.dds.mohidden
new file mode 100644
index 00000000..c0a4b07b
Binary files /dev/null and b/mods/New Levels/gamedata/textures/map/map_grimwood.dds.mohidden differ
diff --git a/mods/New Levels/gamedata/textures/map/map_poselok_ug.dds b/mods/New Levels/gamedata/textures/map/map_poselok_ug.dds
deleted file mode 100644
index fb533250..00000000
--- a/mods/New Levels/gamedata/textures/map/map_poselok_ug.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6f4947fa1c73c53db10f16e45aad6ee7c4089686847003a42070a48f23651d19
-size 5592560
diff --git a/mods/New Levels/gamedata/textures/map/map_poselok_ug.dds.mohidden b/mods/New Levels/gamedata/textures/map/map_poselok_ug.dds.mohidden
new file mode 100644
index 00000000..6e6ec0d5
Binary files /dev/null and b/mods/New Levels/gamedata/textures/map/map_poselok_ug.dds.mohidden differ
diff --git a/mods/New Levels/gamedata/textures/map/map_promzona.dds b/mods/New Levels/gamedata/textures/map/map_promzona.dds
deleted file mode 100644
index 1ba2d71d..00000000
--- a/mods/New Levels/gamedata/textures/map/map_promzona.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e60bb256de4425b16a26a14a4e5ac3843f3028e046303a95338d9035fef9e69b
-size 4194432
diff --git a/mods/New Levels/gamedata/textures/map/map_promzona.dds.mohidden b/mods/New Levels/gamedata/textures/map/map_promzona.dds.mohidden
new file mode 100644
index 00000000..44e1f99e
Binary files /dev/null and b/mods/New Levels/gamedata/textures/map/map_promzona.dds.mohidden differ
diff --git a/mods/Patches and Compatibility_separator/meta.ini b/mods/Patches and Compatibility_separator/meta.ini
new file mode 100644
index 00000000..55a1c1d9
--- /dev/null
+++ b/mods/Patches and Compatibility_separator/meta.ini
@@ -0,0 +1,9 @@
+[General]
+modid=0
+version=
+newestVersion=
+category=0
+installationFile=
+
+[installedFiles]
+size=0
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/misc/task/tm_placeable_waypoints.ltx b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/misc/task/tm_placeable_waypoints.ltx
deleted file mode 100644
index 3da1d37e..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/misc/task/tm_placeable_waypoints.ltx
+++ /dev/null
@@ -1,19 +0,0 @@
-; Personal Adjustable Waypoint
-; https://www.moddb.com/mods/stalker-anomaly/addons/personal-adjustable-waypoint-for-anomaly-151-152-and-gamma
-; Changing things in this file will only bring you sadness
-
-[task_placeable_waypoint]
-
-icon = ui_inGame2_Mesta_evakuatsii
-storyline = false
-prior = 100
-dont_send_update_news = true
-;title = st_paw_placed_waypoint
-title_functor = waypoint_task_text_functor
-;descr = st_paw_proceed
-descr_functor = waypoint_task_text_functor
-
-condlist_0 = {+drx_sl_dummy_info} complete
-
-stage_complete = 2
-target_functor = waypoint_task_target_functor
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_bodies.ltx b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_bodies.ltx
deleted file mode 100644
index eecf4f7d..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_bodies.ltx
+++ /dev/null
@@ -1,24 +0,0 @@
-; This set is intended to contain body
-; markers for integration with the Milspec
-; PDA addon's Kill Tracker. Feel free to
-; customize the icon list.
-;
-; If you are never going to use PAW with
-; MilPDA, you can safely delete this file.
-
-[iconset_bodies]
-name = ui_mcm_lst_pawsys_pg_bodies
-default = death_small
-
-[bodies_icons]
-death_small
-blue_circle
-crosshair_white
-crosshair_red
-crosshair_green
-mpda_white_x
-mpda_skull
-mpda_bluedot_sm
-mpda_bluedot_md
-mpda_bluedot_lg
-redskull
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_bwhr.ltx b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_bwhr.ltx
deleted file mode 100644
index 00f71d46..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_bwhr.ltx
+++ /dev/null
@@ -1,29 +0,0 @@
-[iconset_bwhr]
-name = ui_mcm_lst_pawsys_pg_bwhr
-default = bwhr_magn
-
-[bwhr_icons]
-; It's best to leave the default groups
-; alone, although you can delete this file
-; if you never want to see this set again.
-;
-; You can customize this if you like, or
-; even create your own--but it's better
-; to edit the Favorites group, which can be
-; customized in icon_set_faves.ltx and will
-; always be displayed at the top of MCM.
-;
-; You'll lose any changes to default sets
-; when updating/reinstalling PAW. Be sure
-; to back up any sets you customize.
-
-bwhr_loot
-bwhr_ak
-bwhr_ammo
-bwhr_signal
-bwhr_death
-bwhr_warn
-bwhr_rad
-bwhr_bio
-bwhr_info
-bwhr_magn
\ No newline at end of file
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_faves.ltx b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_faves.ltx
deleted file mode 100644
index d14d4f98..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_faves.ltx
+++ /dev/null
@@ -1,30 +0,0 @@
-; This icon set MUST exist or bad things
-; will probably happen.
-;
-; This is YOUR personal icon set! It will
-; always be displayed at the top of PAW's
-; MCM menu so that you can access it quickly.
-;
-; Be sure to back it up before updating PAW
-; if you have customized it--Favorites are
-; not currently saved anywhere else.
-;
-[iconset_faves]
-; Leave this part alone
-name = ui_mcm_lst_pawsys_pg_faves
-default = redround32
-
-[faves_icons]
-; Put any icons here that you want to mark as
-; a Favorite.
-;
-; Valid icons are listed in icons.ltx.
-;
-; The icons below are just examples. Feel
-; free to add or remove any as you see fit.
-
-bwhr_magn
-diamond_friendly
-redround32
-stalker
-stash_green
\ No newline at end of file
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_npcs.ltx b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_npcs.ltx
deleted file mode 100644
index b2d90e60..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_npcs.ltx
+++ /dev/null
@@ -1,36 +0,0 @@
-[iconset_npcs]
-name = ui_mcm_lst_pawsys_pg_npcs
-default = diamond_friendly
-
-[npcs_icons]
-; It's best to leave the default groups
-; alone, although you can delete this file
-; if you never want to see this set again.
-;
-; You can customize this if you like, or
-; even create your own--but it's better
-; to edit the Favorites group, which can be
-; customized in icon_set_faves.ltx and will
-; always be displayed at the top of MCM.
-;
-; You'll lose any changes to default sets
-; when updating/reinstalling PAW. Be sure
-; to back up any sets you customize.
-
-diamond_friendly
-diamond_neutral
-diamond_enemy
-chevron_friendly
-chevron_neutral
-chevron_enemy
-flag_friendly
-flag_neutral
-flag_enemy
-npc_mechanic
-npc_trader
-npc_guide
-npc_food_trader
-npc_medic
-sleep_zone
-obj_briefcase
-obj_lock
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_patches.ltx b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_patches.ltx
deleted file mode 100644
index d4174b60..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_patches.ltx
+++ /dev/null
@@ -1,23 +0,0 @@
-[iconset_patches]
-name = ui_mcm_lst_pawsys_pg_patches
-default = stalker
-
-[patches_icons]
-; You can add icons to this file if you like,
-; but don't remove the vanilla faction patch
-; names that are here by default. They're used
-; by the system in multiple ways.
-army
-bandit
-csky
-dolg
-ecolog
-freedom
-killer
-monolith
-stalker
-greh
-isg
-renegade
-; Add anything you like below this line
-
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_pins.ltx b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_pins.ltx
deleted file mode 100644
index 245f6b22..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_pins.ltx
+++ /dev/null
@@ -1,25 +0,0 @@
-[iconset_pins]
-name = ui_mcm_lst_pawsys_pg_pins
-default = redpush32
-
-[pins_icons]
-; It's best to leave the default groups
-; alone, although you can delete this file
-; if you never want to see this set again.
-;
-; You can customize this if you like, or
-; even create your own--but it's better
-; to edit the Favorites group, which can be
-; customized in icon_set_faves.ltx and will
-; always be displayed at the top of MCM.
-;
-; You'll lose any changes to default sets
-; when updating/reinstalling PAW. Be sure
-; to back up any sets you customize.
-
-stalker32
-redround32
-redmodern32
-redpush32
-yelpush32
-whtsimple32
\ No newline at end of file
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_smartpins.ltx b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_smartpins.ltx
deleted file mode 100644
index 505e4228..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_set_smartpins.ltx
+++ /dev/null
@@ -1,29 +0,0 @@
-[iconset_smartpins]
-name = ui_mcm_lst_pawsys_pg_smartpins
-default = chevron_enemy
-
-[smartpins_icons]
-; This icon set MUST exist or bad things
-; will probably happen if you try to use
-; the autotag/smart pin feature.
-;
-; You can customize this if you like, or
-; even create your own--but it's better
-; to edit the Favorites group, which can be
-; customized in icon_set_faves.ltx and will
-; always be displayed at the top of MCM.
-;
-; You'll lose any changes to default sets
-; when updating/reinstalling PAW. Be sure
-; to back up any sets you customize.
-
-chevron_friendly
-chevron_neutral
-chevron_enemy
-redskull
-crosshair_red
-crosshair_gradient
-bwhr_loot
-bwhr_ak
-stash_green
-stash_white
\ No newline at end of file
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_sets.ltx b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_sets.ltx
deleted file mode 100644
index 916b3f86..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icon_sets.ltx
+++ /dev/null
@@ -1,9 +0,0 @@
-; DO NOT MODIFY THIS FILE
-; To customize icon sets, create a file named
-; "icon_set_.ltx" and place it in
-; this folder. PAW will attempt to load any
-; file named in that pattern. It is up to you
-; to ensure that you are specifying valid
-; mapspot information.
-;
-#include "icon_set_*.ltx"
\ No newline at end of file
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icons.ltx b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icons.ltx
deleted file mode 100644
index 86bc42e1..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/icons.ltx
+++ /dev/null
@@ -1,129 +0,0 @@
-[icons]
-; To make an icon available to PAW, add
-; it here like so:
-;
-; paw_icon_name = valid_mapspot_icon
-;
-; paw_icon_name must be lua-conformant name
-; of your choice with no spaces, one which
-; doesn't already exist in the game.
-;
-; valid_mapspot_icon must be exactly that:
-; the name of a valid "mapspot" found in
-; ui\map_spots.xml or any of the files it
-; includes (such as map_spots_relations.xml).
-;
-; If you specify something invalid here,
-; you will crash your game and it will suck.
-;
-; If you know the name of any internal
-; Stalker mapspot ID, you can make use
-; of it, but be aware that some mapspot IDs
-; are used by the game to trigger events or
-; flags, and can have unexpected effects. I
-; CANNOT provide any support for issues that
-; happen only while using custom mapspots.
-
-; Default Pins
-stalker32 = paw_pin_stalker32
-redround32 = paw_pin_redround32
-redmodern32 = paw_pin_redmodern32
-redpush32 = paw_pin_redpush32
-yelpush32 = paw_pin_yelpush32
-whtsimple32 = paw_pin_whtsimple32
-magnifier32 = paw_pin_magnifier32
-
-; Default faction patches (vanilla inv icon, low-res)
-army = paw_badge_army
-bandit = paw_badge_bandit
-csky = paw_badge_csky
-dolg = paw_badge_dolg
-ecolog = paw_badge_ecolog
-freedom = paw_badge_freedom
-killer = paw_badge_killer
-monolith = paw_badge_monolith
-stalker = paw_badge_stalker
-greh = paw_badge_greh
-isg = paw_badge_isg
-renegade = paw_badge_renegade
-
-; BW Hi-res POIs
-bwhr_loot = paw_bwhr_loot
-bwhr_ak = paw_bwhr_ak
-bwhr_ammo = paw_bwhr_ammo
-bwhr_signal = paw_bwhr_signal
-bwhr_death = paw_bwhr_death
-bwhr_warn = paw_bwhr_warn
-bwhr_rad = paw_bwhr_rad
-bwhr_bio = paw_bwhr_bio
-bwhr_info = paw_bwhr_info
-bwhr_magn = paw_bwhr_magn
-
-; Hi-res (64x64 texture) faction patches
-hr_army = paw_badge_hr_army
-hr_bandit = paw_badge_hr_bandit
-hr_csky = paw_badge_hr_csky
-hr_dolg = paw_badge_hr_dolg
-hr_ecolog = paw_badge_hr_ecolog
-hr_freedom = paw_badge_hr_freedom
-hr_killer = paw_badge_hr_killer
-hr_monolith = paw_badge_hr_monolith
-hr_stalker = paw_badge_hr_stalker
-hr_greh = paw_badge_hr_greh
-hr_isg = paw_badge_hr_isg
-hr_renegade = paw_badge_hr_renegade
-
-; Ultra hi-res (128x128 texture) faction patches
-; These may incur a performance hit on some machines
-; when a large number of icons are displayed at once
-uhr_army = paw_badge_uhr_army
-uhr_bandit = paw_badge_uhr_bandit
-uhr_csky = paw_badge_uhr_csky
-uhr_dolg = paw_badge_uhr_dolg
-uhr_ecolog = paw_badge_uhr_ecolog
-uhr_freedom = paw_badge_uhr_freedom
-uhr_killer = paw_badge_uhr_killer
-uhr_monolith = paw_badge_uhr_monolith
-uhr_stalker = paw_badge_uhr_stalker
-uhr_greh = paw_badge_uhr_greh
-uhr_isg = paw_badge_uhr_isg
-uhr_renegade = paw_badge_uhr_renegade
-
-; Vanilla stash icons
-stash_green = paw_stash_green
-stash_red = paw_stash_red
-stash_purple = paw_stash_purple
-stash_white = paw_stash_white
-
-; Body markers
-death_small = paw_death_small
-blue_circle = paw_blue_circle
-crosshair_white = paw_crosshair_white
-crosshair_red = paw_crosshair_red
-crosshair_green = paw_crosshair_green
-crosshair_gradient = paw_crosshair_gradient
-mpda_white_x = deadbody_location_whtx
-mpda_skull = deadbody_location_skul
-mpda_bluedot_sm = deadbody_location_sdot
-mpda_bluedot_md = deadbody_location_mdot
-mpda_bluedot_lg = deadbody_location_ldot
-redskull = paw_pin_redskull
-
-; Relation and service indicators
-diamond_friendly = paw_diamond_friendly
-diamond_neutral = paw_diamond_neutral
-diamond_enemy = paw_diamond_enemy
-chevron_friendly = paw_chevron_friendly
-chevron_neutral = paw_chevron_neutral
-chevron_enemy = paw_chevron_enemy
-flag_friendly = paw_flag_friendly
-flag_neutral = paw_flag_neutral
-flag_enemy = paw_flag_enemy
-npc_mechanic = paw_npc_mechanic
-npc_trader = paw_npc_trader
-npc_guide = paw_npc_guide
-npc_food_trader = paw_npc_food_trader
-npc_medic = paw_npc_medic
-sleep_zone = paw_sleep_zone
-obj_briefcase = paw_obj_briefcase
-obj_lock = paw_obj_lock
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/menu_actions.ltx b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/menu_actions.ltx
deleted file mode 100644
index 11e8a016..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/menu_actions.ltx
+++ /dev/null
@@ -1,180 +0,0 @@
-; This file allows you to customize the context menu options available
-; when right-clicking on mapspots when PAW is active.
-;
-; enable: setting this to false will hard-killswitch an option to off
-; order : not currently implemented
-; mode : controls when the option is shown, see below
-; text : translation string to display in the menu option
-; act : the action executed by the option - currently only pn_add
-; has any use beyond the existing option for that action
-; icon : forces use of this icon - only for action pn_add
-
-; Modes:
-; -1: only when debug mode is enabled
-; 0: disabled completely
-; 1: enabled in normal view only
-; 2: enabled in cartography mode only
-; 4: enabled in both
-
-; ==================================================
-
-[my_stash_icon]
-
-; This is an example of how you can add a
-; new menu option that drops a pin with a
-; specific icon. It is disabled by default.
-;
-; To make your own:
-; 1. Make a copy of everything between the ==
-; lines, including the [my_stash_icon]
-; section name at the top.
-; 2. Rename the section to something unique
-; (different from any other in this file).
-; 3. Change enable to true.
-; 4. Choose any valid icon from icons.ltx and
-; replace stash_green with that.
-; 5. Change the mode number, if desired.
-; 6. Edit the text as desired - this can be
-; either a string literal as in the example,
-; or the ID of a valid translation string as
-; in most of the default functions.
-mode = 4
-enable = false
-text = "Place stash icon"
-act = pn_add
-icon = stash_green
-; Your new quick pin option should now appear
-; in the context menu when you right-click on
-; any mapspot. You can make more than one as
-; long as each has a unique section name.
-; ==================================================
-
-[mping]
-; Ping the map
-mode = 4
-enable = true
-text = ui_mcm_pawsys_pawmenu_mping
-act = mping
-
-[wp_set]
-; Set a new waypoint here when one does not exist yet
-mode = 4
-enable = true
-text = ui_mcm_pawsys_pawmenu_wp_set
-act = wp_set
-
-[waypoint_rename]
-mode = 2
-enable = true
-text = ui_mcm_pawsys_pawmenu_waypoint_rename
-act = waypoint_rename
-field = name
-
-[waypoint_redesc]
-mode = 2
-enable = true
-text = ui_mcm_pawsys_pawmenu_waypoint_redesc
-act = waypoint_redesc
-field = desc
-
-[wp_mov]
-; Move an existing waypoint to here
-mode = 4
-enable = true
-text = ui_mcm_pawsys_pawmenu_wp_mov
-act = wp_mov
-
-[wp_del]
-; Remove the existing waypoint
-mode = 4
-enable = true
-text = ui_mcm_pawsys_pawmenu_wp_del
-act = wp_del
-
-[pn_add]
-; Add a new map pin
-mode = 4
-enable = true
-text = ui_mcm_pawsys_pawmenu_pn_add
-act = pn_add
-
-[pn_del]
-; Delete a map pin
-mode = 4
-enable = true
-text = ui_mcm_pawsys_pawmenu_pn_del
-act = pn_del
-
-[pn_ren]
-; Rename a map pin
-mode = 4
-enable = true
-text = ui_mcm_pawsys_pawmenu_pn_ren
-act = pn_ren
-
-[hud_vis_on]
-; Shows a pin on the HUD
-mode = 4
-enable = true
-text = ui_mcm_pawsys_pawmenu_hud_vis_on
-act = hud_vis_on
-
-[hud_vis_off]
-; Hides a pin from the HUD
-mode = 4
-enable = true
-text = ui_mcm_pawsys_pawmenu_hud_vis_off
-act = hud_vis_off
-
-[show_all_pins]
-; Show pins if hidden
-mode = 2
-enable = true
-text = ui_mcm_pawsys_pawmenu_show_all_pins
-act = show_pins
-
-[hide_all_pins]
-; Hides pins if shown
-mode = 2
-enable = true
-text = ui_mcm_pawsys_pawmenu_hide_all_pins
-act = hide_pins
-
-[lock_pin]
-; Lock pin to prevent changes
-mode = 2
-enable = true
-text = ui_mcm_pawsys_pawmenu_lock_pin
-act = lock_pin
-
-[unlock_pin]
-; Unlock pin
-mode = 4
-enable = true
-text = ui_mcm_pawsys_pawmenu_unlock_pin
-act = unlock_pin
-
-[pn_clr]
-; Clear all map pins - no confirmation!
-; Disabled by default
-mode = 0
-enable = true
-text = ui_mcm_pawsys_pawmenu_pn_clr
-act = pn_clr
-
-;[pn_spt]
-; Clear all map pins at this spot - no confirmation
-; Not currently working, don't enable
-;order = 7
-;mode = 2
-;enable = false
-;text = ui_mcm_pawsys_pawmenu_pn_spt
-;act = pn_spt
-
-[cm_dbg]
-; Debug menu
-mode = -1
-enable = false
-text = ui_mcm_pawsys_pawmenu_cm_dbg
-act = cm_dbg
-
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/task_config.ltx b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/task_config.ltx
deleted file mode 100644
index 7c01254a..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/task_config.ltx
+++ /dev/null
@@ -1,12 +0,0 @@
-; You can customize your waypoint task in this file.
-; If either name or description are present, PAW will
-; use what is here instead of its default text. The
-; examples below will work, but are commented out by
-; default.
-;
-; NOTE: you must place your text within quotes, or
-; Anomaly will strip all spaces from it.
-
-[task_config]
-;name = "Personal Waypoint"
-;desc = "Proceed to your chosen destination"
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/valid_clsids.ltx b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/valid_clsids.ltx
deleted file mode 100644
index 8d1cb5f7..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/scripts/paw/valid_clsids.ltx
+++ /dev/null
@@ -1,7 +0,0 @@
-[valid_clsids]
-smart_terrain = string
-inventory_box_s = string
-online_offline_group = string
-online_offline_group_s = string
-112 = number
-140 = number
\ No newline at end of file
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/text/eng/catsy_waypoints.xml b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/text/eng/catsy_waypoints.xml
deleted file mode 100644
index 6b74b03d..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/text/eng/catsy_waypoints.xml
+++ /dev/null
@@ -1,1501 +0,0 @@
-
-
-
-
- Set waypoint here
-
-
-
- Move waypoint here
-
-
-
- Remove current waypoint
-
-
-
- Placed Waypoint
-
-
-
- Proceed to your chosen waypoint
-
-
-
-
- Placed waypoint was missing from current save, so the task was cancelled to avoid a crash. This is a safety catch and shouldn't happen again after your next save.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Enable Personal Adjustable Waypoint System
-
-
-
- Enabling this option will clear all current waypoint data, remove all waypoint map markers, and cancel any active waypoint task.
-
-
-
- Integrate with Milspec PDA addon
-
-
-
- Enables integration/compatibility with the Milspec PDA addon. \n\nhttps://www.moddb.com/mods/stalker-anomaly/addons/milspec-pda-for-anomaly-151-152-and-gamma
-
-
-
- Enable debug logging
-
-
-
- For troubleshooting. If you encounter a crash or other issue with PAW, please:\n1. Enable this option\n2. Reproduce the issue\n3. Upload a copy of the log for me to examine\n\nWithout debug logging it is unlikely that your log will show anything useful.
-
-
-
- Add pin to map here
-
-
-
- Remove this pin
-
-
-
- Rename this pin
-
-
-
- Remove all map icons from this spot
-
-
-
- Clear ALL of your pins - cannot be undone
-
-
-
- Keypress to toggle the current active waypoint
-
-
-
- When pressed, this key will toggle off the current waypoint (if one is active), or reactivate the last waypoint if none is currently active. It has no effect if you haven't set a waypoint.
-
-
-
- Keypress to drop a Quick Pin
-
-
-
- When pressed, this key will place a Quick Pin at the nearest valid smart terrain point to the player's current location. If you have the Fair Fast Travel addon, Quick Pins can optionally be used as fast travel points.
-
-
-
- Key bind for Cartography Mode
-
-
-
- While held, this key will enable Cartography Mode, which displays all valid smart terrain points and other tools allowing the player to set and manage their Pins. The default hold can be changed to a toggle.
-
-
-
- Use a custom mapspot icon for map pins
-
-
-
- If enabled, PAW will attempt to use the specified mapspot ID for pin icons. Valid mapspots are in map_spots.xml or its includes. If you put something invalid here, it will probably crash your game. Use at your own risk.
-
-
-
- Custom mapspot ID to use
-
-
-
- If you know the name of a valid mapspot ID from the mapspots files, enter it here. WARNING: invalid values will very likely crash your game. Reset it to "user_defined" if nothing else works; it's simple and easy to remember.
-
-
-
- Pinned Map Location
-
-
-
- Quick Pin
-
-
-
- Quick pin dropped at current location
-
-
-
- You already have a pin at nearest smart %s
-
-
-
- Enable Waypoint and Pin functionality on PDA 1.0
-
-
-
- If enabled, PDA 1.0 will be allowed to use all Waypoint and Pin functionality. If disabled, existing Pins will be preserved, but cannot be displayed until a compatible device is equipped.
-
-
-
- Enable Waypoint and Pin functionality on PDA 2.0
-
-
-
- If enabled, PDA 2.0 will be allowed to use all Waypoint and Pin functionality.
-
-
-
- Enable Waypoint and Pin functionality on PDA 3.1
-
-
-
- If enabled, PDA 3.1 will be allowed to use all Waypoint and Pin functionality.
-
-
-
- Enable Waypoint and Pin functionality on the Milspec PDA
-
-
-
- If enabled, the Milspec PDA (if installed and available) will be allowed to use all Waypoint and Pin functionality.
-
-
-
- Default icon for Pins
-
-
-
- When the Pins icon set is active, this option determines which icon is assigned to a map pin at the time it is created. Each map pin can have a different icon.
-
-
-
- Default icon for Faction Patches
-
-
-
- When the Faction Patches icon set is active, this option determines which icon is assigned to a map pin at the time it is created. Each map pin can have a different icon.
-
-
-
- Default icon for BW Hi-res POIs
-
-
-
- When the BW Hi-res POIs icon set is active, this option determines which icon is assigned to a map pin at the time it is created. Each map pin can have a different icon.
-
-
-
- Default icon for Favorites
-
-
-
- When the Favorites icon set is active, this option determines which icon is assigned to a map pin at the time it is created. Each map pin can have a different icon.\n\nNote: you can customize the Favorites, or any other icon set, by editing configs\scripts\paw\icon_set_*.ltx
-
-
-
- Favorites
-
-
-
- There is no previous or active waypoint to toggle
-
-
-
- Red Round Pin
-
-
-
- Stalker Cursor-style Pin
-
-
-
- Modern GMaps-style Pin
-
-
-
- Red Push Pin
-
-
-
- Yellow Push Pin
-
-
-
- White Minimalist
-
-
-
- Loner
-
-
- Military
-
-
- Bandit
-
-
- Clear Sky
-
-
- Duty
-
-
- Ecologist
-
-
- Freedom
-
-
- Mercenary
-
-
- Monolith
-
-
- Sin
-
-
- UNISG
-
-
- Renegade
-
-
-
-
-
-
-
- Active Pin icon set
-
-
-
- Each set of icons below (e.g. Pins, Patches) has an icon that is currently selected in their drop-down list. This radio button determines which of those sets' icons will be used when placing any new pin.\n\nThe Favorites set will always be placed at the top of the list, and you can freely edit which icons it contains in:\n configs\scripts\paw\icon_set_faves.ltx.
-
-
-
- Pin-Style Icons
-
-
-
- Faction Patch Icons
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BW Hi-res POIs
-
-
-
- BWHR Info
-
-
-
- BWHR Signal Source
-
-
-
- BWHR Loot/Valuables
-
-
-
- BWHR Danger
-
-
-
- BWHR Weapons
-
-
-
- BWHR Ammo
-
-
-
- BWHR Biohazard
-
-
-
- BWHR Radiation
-
-
-
- BWHR Warning
-
-
-
- BWHR Magnifying Glass
-
-
-
-
-
- HR Loner
-
-
- HR Military
-
-
- HR Bandit
-
-
- HR Clear Sky
-
-
- HR Duty
-
-
- HR Ecologist
-
-
- HR Freedom
-
-
- HR Mercenary
-
-
- HR Monolith
-
-
- HR Sin
-
-
- HR UNISG
-
-
- HR Renegade
-
-
-
- UHR Loner
-
-
- UHR Military
-
-
- UHR Bandit
-
-
- UHR Clear Sky
-
-
- UHR Duty
-
-
- UHR Ecologist
-
-
- UHR Freedom
-
-
- UHR Mercenary
-
-
- UHR Monolith
-
-
- UHR Sin
-
-
- UHR UNISG
-
-
- UHR Renegade
-
-
-
- Map Ping - Right-click to set waypoint or pin
-
-
-
-
-
- Play sound effect when pinging the map
-
-
-
-
-
- Customize body icon used by Milspec PDA
-
-
-
- This optional feature allows you configure the body marker icon used by Milspec PDA's Kill Tracker feature, if you have that addon installed.\n\nDisabled: MilPDA operates normally\n\nVictim Faction Patch: dead stalkers will have a faction patch for their body marker, all others use the default from the Body Markers set\n\nBody Markers set: MilPDA will use the current default icon from the Body Markers set for all bodies
-
-
-
- Requires Milspec PDA 1.7.3 or higher:\nhttps://www.moddb.com/mods/stalker-anomaly/addons/milspec-pda-for-anomaly-151-152-and-gamma
-
-
-
- Body Markers
-
-
-
- Default icon for Body Markers
-
-
-
- Resolution used for faction patches
-
-
-
- This option determines which icon quality is used for faction patches: the low-res vanilla inventory icons, PAW's hi-res 64x64 patches, or 128x128 versions with a white outline. The low-res and hi-res mapspots are the same size; the UHR versions are about 25% bigger.
-
-
-
- Low-Res (vanilla inventory icon)
-
-
-
- Hi-Res (from clean master)
-
-
-
- Ultra Hi-Res (with white outline)
-
-
-
- Customize body icon used by Milspec PDA
-
-
-
- Disabled
-
-
-
- Victim Faction Patch
-
-
-
- Body Markers set
-
-
-
-
-
-
-
- Small BWHR Death
-
-
-
- Blue Circle
-
-
-
- White Crosshairs
-
-
-
- Red Crosshairs
-
-
-
- Green Crosshairs
-
-
-
- Green Crosshairs
-
-
-
- Green Stash Icon
-
-
-
- White Stash Icon
-
-
-
- Purple Stash Icon
-
-
-
- Red Stash Icon
-
-
-
-
-
- Wipe all pin data
-
-
-
- Removes all pins from the map and wipes the pin database. This cannot be undone.
-
-
-
- [MPDA] Small Blue Dot
-
-
-
- [MPDA] Medium Blue Dot
-
-
-
- [MPDA] Large Blue Dot
-
-
-
- [MPDA] White X Mark
-
-
-
- [MPDA] Small Plain Skull
-
-
-
- Behavior of the Cartography Mode keybind
-
-
-
- Toggle
-
-
-
- Hold
-
-
-
-
-
- Mouse wheel support (requires modded binaries)
-
-
-
- When enabled, the mouse wheel can be scrolled up and down to cycle through the active icons or sets.\n
- This feature requires modded binaries version 20230701 or newer. GAMMA also supports this from 0.9.1 onward.
-
-
-
- Display a message when changing mouse wheel mode
-
-
-
- Modded binaries by demonized (required for mouse wheel support):\n https://github.com/themrdemonized/STALKER-Anomaly-modded-exes/
-
-
-
-
- Active Set changed to %s.\n
-
-
-
-
- Active Icon is now
-
-
-
- Cycle to next set
-
-
-
- Optional keybind to cycle to the next set
-
-
-
- Cycle to previous set
-
-
-
- Optional keybind to cycle to the previous set
-
-
-
- Cycle to next icon in active set
-
-
-
- Optional keybind to cycle to the next icon in the active set
-
-
-
- Cycle to previous icon in active set
-
-
-
- Optional keybind to cycle to the previous icon in the active set
-
-
-
- Hold to change sets with mouse wheel
-
-
-
- While this key is held, scrolling the mouse wheel will cycle through the list of sets if mouse scrolling is enabled.
-
-
-
- Hold to change icons with mouse wheel
-
-
-
- While this key is held, scrolling the mouse wheel will cycle through the icons in the active set if the scrolling mode is set to Hold for Both.
-
-
-
- Mouse wheel is now cycling sets
-
-
-
- Mouse wheel is now cycling icons
-
-
-
- Mouse wheel returned to default behavior
-
-
-
-
-
- Enable HUD widget
-
-
-
- Autohide delay in seconds (0 never hides)
-
-
-
- Play sound effect for icon/set changes
-
-
-
- Play sound effect when pinging the map
-
-
-
- Widget visual theme (see below for descriptions)
-
-
-
- Use the custom position below instead of theme default
-
-
-
- The HUD widget displays the current active icon and, depending on the theme, can also display other information.
-
-
-
- Sets the X (horizontal) coordinate of the widget's upper left corner. 0,0 is the upper left corner of the screen, 1024,768 is the lower right. The game converts this to your display resolution.
-
-
-
- Sets the Y (vertical) coordinate of the widget's upper left corner. 0,0 is the upper left corner of the screen, 1024,768 is the lower right. The game converts this to your display resolution.
-
-
-
- X (horizontal, left to right) coordinate
-
-
-
- Y (vertical, top to bottom) coordinate
-
-
-
- You can read a full description of each available theme below.\n
-
-
-
-
- Classic Stalker, Auto-Switch: 138x75 (default pos 890,620)\n
- Icon and Set text, Next/Current/Prev icons\n
- Auto-switches to Classic Vertical Right when PDA is open\n
- Select "Classic" theme if you don't want the auto-switch\n
- Recommended default
-
-
-
-
-
- Classic Stalker, Horizontal: 138x75 (default pos 890,620)\n
- Icon and Set text, Next/Current/Prev icons\n
- Does not auto-switch, but blocked by PDA in its default position
-
-
-
-
-
- Classic Vertical, Right-aligned: 100x154 (default pos 922,440)\n
- Icon text, Next/Current/Prev icons\n
- PDA mode for Classic Stalker Auto-Switch, but can be used on its own
-
-
-
-
-
- Classic Vertical, Left-aligned: 100x154 (default pos 4,570)\n
- Icon text, Next/Current/Prev icons\n
- Can block news messages in its default position\n
- Custom position recommended
-
-
-
-
-
- GAMMA Style, Right-aligned: 136x150 (default pos 888,440)\n
- Icon and Set text, Next/Current/Prev icons\n
- Visible both with and without PDA open
-
-
-
-
-
- GAMMA Style, Left-aligned: 136x150 (default pos 4,440)\n
- Icon and Set text, Next/Current/Prev icons\n
- Can block news messages in its default position\n
- Custom position recommended
-
-
-
-
-
- Minimalist, Horizontal: 94x52 (default pos 924,645)\n
- Icon text, Next/Current/Prev icons on drop shadow\n
- Blocked by PDA in its default position\n
- Custom position recommended
-
-
-
-
-
- Minimalist, Vertical: 92x112 (default pos 924,440)\n
- Icon text, Next/Current/Prev icons on drop shadow\n
- No left-aligned version
-
-
-
-
-
- Minimalist, Compact: 38x38 (default pos 890,440)\n
- Displays current icon only, on drop shadow\n
- blocked by PDA in its default position
-
-
-
-
-
- Compact, No UI Frame: 32x32 (default pos 890,440)\n
- Displays current icon only, no other UI or background\n
- Suitable for positioning nearly anywhere, easy to integrate with custom HUDs
-
-
-
-
- Classic Stalker, H/V Auto Switch
-
-
-
- Classic Stalker, Horizontal (890,620)
-
-
-
- Classic, Vertical, Right-Aligned (922,440)
-
-
-
- Classic, Vertical, Left-Aligned (4,570)
-
-
-
- GAMMA Style, Right-Aligned (888,440)
-
-
-
- GAMMA Style, Left-Aligned (4,574)
-
-
-
- Minimalist, Horizontal (890,650)
-
-
-
- Minimalist, Vertical (890,440)
-
-
-
- Minimalist, Compact (820,725)
-
-
-
- Compact, No UI Frame (820,725)
-
-
-
- Enabled
-
-
-
-
-
- Current waypoint cleared
-
-
-
-
-
- PAW: https://www.moddb.com/mods/stalker-anomaly/addons/personal-adjustable-waypoint-for-anomaly-151-152-and-gamma
-
-
-
-
- Milspec PDA: https://www.moddb.com/mods/stalker-anomaly/addons/milspec-pda-for-anomaly-151-152-and-gamma
-
-
-
-
-
-
- Disable immediate MCM updates
-
-
-
- When you change the current icon/set during gameplay, PAW updates the same setting in MCM. This is so that your changes will be saved even if the game crashes, but it can cause a performance impact on some machines. Enabling this setting will turn off this feature, but the settings will still be stored when you save your game. However, changes will not be reflected in MCM if you enter its menu before saving.
-
-
-
-
-
-
-
-
-
-
-
- Waypoint autoclear distance (in meters)
-
-
-
- Show waypoint marker on HUD
-
-
-
- Don't show PAW welcome message on savegame load
-
-
-
- $clr_prp[ Personal Adjustable Waypoint System initialized ]$clr_wht \n \n
-• Right-click on any visible map icon to set a custom quest marker ($clr_lblwaypoint$clr_wht) or place and label map markers called $clr_lblpins$clr_wht.\n
-• Press $clr_yel%s$clr_wht to toggle the waypoint on or off at any time. If you don't want a visible HUD marker, you can disable it in MCM.\n
-• Press $clr_yel%s$clr_wht to mark the map with a $clr_lblQuick Pin$clr_wht at your current location.\n
-• Hold $clr_yel%s$clr_wht to enter $clr_lblCartography Mode$clr_wht for more map functions, like $clr_lblpinging$clr_wht the map to display temporary markers for precise pin and waypoint placement.\n
-\n
-You'll find all this and more in MCM under $clr_lblAdjustable Waypoint$clr_wht.\n
-\n
-This message won't bother you again. Good hunting, %s.
-
-
-
-
-
-
-
- PAW System is disabled
-
-
-
-
-
-
-
- Active Pin:
-
-
-
-
-
- Cartography Mode is a toggle
-
-
-
- By default, you must hold down the key for Cartography Mode. If this option is enabled, it operates as a toggle instead.
-
-
-
- Cartography Mode shows smart terrains
-
-
-
- By default, Cartography Mode shows an icon (white map with a magnifying glass) to indicate smart terrain spots. If you don't need or want to see these for any reason, you can turn them off with this option.
-
-
-
-
-
- m
-
-
-
- Unknown
-
-
-
- stash
-
-
-
- squad
-
-
-
- You are currently using an NPC's looted PDA, not your own. Equip a player PDA to make use of waypoints, map pins, or other PAW System functionality.
-
-
-
- Show distance on waypoint HUD marker
-
-
-
- Choose when the waypoint HUD marker should show an indicator for distance: never, always, only when Cartography Mode is active, or only when it is not (Normal PDA view). Has no effect when the HUD marker is not enabled.
-
-
-
- Show distance on pin HUD markers
-
-
-
- Choose when markers for pins on the HUD should show an indicator for distance: never, always, only when Cartography Mode is active, or only when it is not (Normal PDA view). Has no effect without pins set visible on the HUD.
-
-
-
- Show label on pin HUD markers
-
-
-
- Choose when markers for pins on the HUD should display their text label above the icon: never, always, only when Cartography Mode is active, or only when it is not (Normal PDA view). Has no effect without pins set visible on the HUD.
-
-
-
-
-
- NPCs and Services
-
-
-
- Default icon for NPCs and Services
-
-
-
- Friendly (diamond style)
-
-
-
- Neutral (diamond style)
-
-
-
- Enemy (diamond style)
-
-
-
- Friendly (chevron style)
-
-
-
- Neutral (chevron style)
-
-
-
- Enemy (chevron style)
-
-
-
- Friendly (flag style)
-
-
-
- Neutral (flag style)
-
-
-
- Enemy (flag style)
-
-
-
- NPC Mechanic
-
-
-
- NPC Trader
-
-
-
- NPC Guide
-
-
-
- NPC Food Trader
-
-
-
- NPC Medic
-
-
-
- Sleeping Area
-
-
-
- Briefcase Object
-
-
-
- Locked Object
-
-
-
- Cartography Mode
-
-
-
- Cartography Mode enables additional mapping functionality without cluttering the HUD or menu during normal play. You can configure what functions appear in this mode (or in normal PDA mode) in the Context Menus MCM submenu.
-
-
-
- Mouse Wheel Support
-
-
-
- Waypointing and Pins - Crosshair Targeting
-
-
-
- Waypointing and Pins - Crosshair Targeting
-
-
-
- The first two keybinds allow you to use waypoints and pins on whatever object is currently under your crosshair. In order for the game to register this, the object must be exactly under the center of the crosshair. For a stalker, this means centered enough for the crosshair identification to activate.
-
-
-
- Waypointing and Pins - General Keybinds
-
-
-
- Keypress to set waypoint on the target object
-
-
-
- When this key is pressed, the waypoint will be set--or moved--to the object under the player's crosshair. If it was already set to the target object, it will be disabled.
-
-
-
- Keypress to set a pin on the target object
-
-
-
- When this key is pressed, a pin will be placed on the object under the player's crosshair if there isn't one already, using the current active icon. If a pin already exists for the target, it will be removed.
-
-
-
- Pins created by targeting default to visible on the HUD
-
-
-
- If a pin was created by targeting an object with the crosshairs, it will automatically be shown on the HUD. You can show or hide pins on the HUD at any time using your PDA.
-
-
-
-
- Pin $clr_yel%s$clr_wht removed from $clr_lbl%s$clr_wht.
-
-
-
- Pin added to $clr_lbl%s$clr_wht using icon: $clr_lbl%s$clr_wht.\n
- You can change the current active icon with $clr_yel%s$clr_wht/$clr_yel%s$clr_wht.
-
-
-
- Pin $clr_yel%s$clr_wht removed from $clr_lbl%s$clr_wht.
-
-
-
- Show news tip when changing icons or sets using keybinds
-
-
-
-
-
- Pin near fade-out distance (in meters)
-
-
-
- When the player comes within this distance of a pin, it will begin to fade out.
-
-
-
- Pin far fade-out distance (in meters)
-
-
-
- When the player gets this far away from a pin, it will begin to fade out.
-
-
-
- Pin far hide distance (in meters)
-
-
-
- If the player is more than this far beyond where the fade-out begins, a pin will disappear completely.
-
-
-
- Pins on the HUD never fade out while in Cartography Mode
-
-
-
- If there are any pins on the HUD, and they are normally set to fade out, they won't do so while Cartography Mode is active.
-
-
-
-
-
-
-
- Show smart reticle when a valid object is targeted
-
-
-
- This setting controls when the smart reticle can appear: always, only when Cartography Mode is active, or never (disabled).
-
-
-
- Reticle transparency
-
-
-
- The reticle's maximum alpha (transparency) value, with 0 being fully transparent and 255 being no transparency.
-
-
-
- Fade-in duration for object reticle
-
-
-
- The time, in milliseconds, that it takes for the reticle to finish fading in when targeting a valid object.
-
-
-
- Fade-out duration for object reticle
-
-
-
- The time, in milliseconds, that it takes for the reticle to finish fading out after the crosshair no longer has a target.
-
-
-
- Aspect ratio for the screen preview below
-
-
-
- 4:3 (Standard Definition)
-
-
-
- 16:10 (1920Ч1200, 2560x1600)
-
-
-
- 16:9 (1080p, 1440p, 2160p)
-
-
-
- 21:9 (Ultrawide)
-
-
-
-
-
- Example resolutions in this aspect ratio:\n
-
-
-
- \n1024x768\n1600x1200
-
-
-
- \n1920x1080\n1280x720\n1600x900\n2560x1440\n3840x2160
-
-
-
- \n1280x800\n1920x1200\n2560x1600\n3840x2400
-
-
-
- \n2560x1080\n3440x1440\n3840x1600
-
-
-
-
-
-
-
- Enable automatic smart tagging on reticle ID
-
-
-
- When this feature is enabled, PAW's HUD reticle will automatically "tag" valid target objects with an appropriate pin once they are identified, as configured below.
-
-
-
- Use pins and waypoints on any valid object under your crosshairs using configurable hotkeys. By default, the reticle fades in and out to indicate when you are targeting a valid object.
-
-
-
- To instead mark targeted objects automatically, see the "Autotag" setting below.
-
-
-
- Autotag will automatically mark certain types of objects with pre-defined pins of your choice once they are positively identified. This allows you to free up keybinds, and focus on the Zone instead of your PDA or menus.
-
-
-
- It functions similarly to the Faction Identification addon, reading its MCM settings so that PAW and FacID can work together. Changes that you make in FacID's MCM menu will be respected by PAW.
-
-
-
- Smart Pins
-
-
-
- Default icon for Smart Pins
-
-
-
-
- Enable Autotagging for friendly stalkers
-
-
-
- Human (friendly) icon
-
-
-
- Autotag will assign this icon to friendly stalkers.
-
-
-
-
- Enable Autotagging for neutral stalkers
-
-
-
- Human (neutral) icon
-
-
-
- Autotag will assign this icon to neutral stalkers.
-
-
-
-
- Enable Autotagging for enemy stalkers
-
-
-
- Human (enemy) icon
-
-
-
- Autotag will assign this icon to enemy stalkers.
-
-
-
-
- Enable Autotagging for monsters
-
-
-
- Monsters
-
-
-
- Autotag will assign this icon to mutants, monsters, and other nonhuman creatures.
-
-
-
-
- Enable Autotagging for stash containers
-
-
-
- Stash container icon
-
-
-
- Autotag will assign this icon to stashes and other inventory boxes.
-
-
-
-
- Only active while using scope/binoculars
-
-
-
- If this option is enabled, the reticle (and its tagging features) will only be enabled while zoomed with binoculars or a scoped weapon. This is recommended so that tags won't be created just from walking up to or talking to an NPC.
-
-
-
- Manually targeted pins are also smart
-
-
-
- If this option is enabled, reticle pins created by manually triggering the associated keybind will also use the Autotag settings below, assigning the selected icon for the targeted object instead of the current active icon.
-
-
-
- Red Beast Skull
-
-
-
- Gradient Crosshairs
-
-
-
-
-
- The $clr_yelPersonal Adjustable Waypoint$clr_wht addon $clr_redfailed to load its texture data$clr_wht, and has disabled itself in order to protect your game from crashes. \n \n
- Check the game log for errors, and ensure that nothing loads after PAW which modifies the file $clr_yelmap_spots_relations.xml$clr_wht. \n \n
- This only requires a change in load order, and is usually easy to resolve. However, if you never intend to use PAW's features, and don't care that something else is breaking it, you can disable this error message under the $clr_yelAdjustable Waypoint$clr_wht menu in MCM.
-
-
-
- WARNING: mapspot texture data missing.
-
-
-
- To avoid crashes, both PAW and many parts of its MCM menus have been disabled until this issue is resolved.
-
-
-
- Personal Adjustable Waypoint could not load texture data from map_spots_relations.xml. This is almost ALWAYS caused by loading another addon after PAW which modifies that file. Examples include (but are not limited to) Kill Tracker or Milspec PDA.
-
-
-
- If you are using Mod Organizer 2 (or a modpack such as GAMMA that uses it), adjust your load order so that PAW loads after (below) any and all addons which modify map_spots_relations.xml. If you are not using MO2, you should do so.
-
-
-
- Disable the in-game warning for this error (NOT recommended)
-
-
-
-
-
- Autotag pins are persistent
-
-
-
- Unless this option is enabled, all pins added by autotagging will be temporary--that is, they will automatically disappear on next map change or savegame load, or when timed out after the below number of seconds.
-
-
-
- Autotag expiration time (in seconds)
-
-
-
- If Autotag persistence is not enabled, tags will be automatically cleared after this many seconds. Setting this to zero will disable the timeout, but temporary tags will still be cleared on the next map change or savegame load.
-
-
-
-
-
-
-
- When the player comes within this distance of the waypoint marker, it will automatically be cleared. Setting this to zero will disable the autoclear setting entirely.
-
-
-
\ No newline at end of file
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/text/rus/catsy_waypoints.xml b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/text/rus/catsy_waypoints.xml
deleted file mode 100644
index 245fd718..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/text/rus/catsy_waypoints.xml
+++ /dev/null
@@ -1,1501 +0,0 @@
-
-
-
-
- Установить точку маршрута здесь
-
-
-
- Переместить точку маршрута сюда
-
-
-
- Удалить текущую точку маршрута
-
-
-
- Размещенная точка маршрута
-
-
-
- Продолжайте движение к выбранной вами точке маршрута
-
-
-
-
- Размещенный маркер точки маршрута отсутствовал в текущем сохранении, поэтому он был удален во избежании сбоя. Это сделано в целях безопастности и не должно повториться после вашего следующего сохранения.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Включите персональную настраиваемую систему точек маршрута
-
-
-
- Включение этой опции приведет к очистке всех текущих данных точек маршрута, удалению всех маркеров точек маршрута на карте и отмене любой активной задачи определения точек маршрута.
-
-
-
- Интеграция с аддоном "КПК Milspec"
-
-
-
- Обеспечивает интеграцию/совместимость с аддоном "КПК Milspec". \n\nhttps://www.moddb.com/mods/stalker-anomaly/addons/milspec-pda-for-anomaly-151-152-and-gamma
-
-
-
- Включить ведение журнала отладки
-
-
-
- Для устранения неполадок. Если вы столкнулись со сбоем или другой проблемой с PAW, пожалуйста:\n1. Включите эту опцию\n2. Воспроизведите проблему\n3. Загрузите копию журнала, чтобы я мог ознакомиться с ней\n\nБез ведения журнала отладки маловероятно, что ваш лог покажет что-либо полезное.
-
-
-
- Добавить маркер на карте здесь
-
-
-
- Удалить этот маркер
-
-
-
- Переименовать этот маркер
-
-
-
- Удалите все иконки на карте с этого места
-
-
-
- Удалите все ваши маркеры - отменить невозможно
-
-
-
- Нажатие клавиши переключает текущую активную точку маршрута
-
-
-
- При нажатии этой клавиши происходит отключение текущей точки маршрута (если она активна) или повторная активация последней точки маршрута, если ни одна из них в данный момент не активна. Это не действует, если точка маршрута не задана.
-
-
-
- Нажмите клавишу, чтобы быстро ввести "Быстрый маркер"
-
-
-
- При нажатии эта клавиша помещает "Быстрый маркер" в ближайшую к текущему местоположению игрока точку умного рельефа. Если у вас есть аддон Fair Fast Travel, то "Быстрые маркеры" можно использовать в качестве точек быстрого перемещения.
-
-
-
- Выбор клавиши для режима картографии
-
-
-
- При нажатии этой клавиши включается режим картографии, в котором отображаются все допустимые точки местности и другие инструменты, позволяющие игроку устанавливать свои маркеры и управлять ими.
-
-
-
- Используйте пользовательскую текстурную иконку для маркеров на карте
-
-
-
- Если включено, PAW попытается использовать указанный идентификатор текстуры для иконок маркера. Если вы добавите сюда что-то недопустимое, это, вероятно, приведет к сбою вашей игры. Я ничем не могу с этим помочь.
-
-
-
- Пользовательский идентификатор текстуры для использования
-
-
-
- Если вы знаете имя действительного идентификатора текстуры из файлов mapspots, введите его здесь. ПРЕДУПРЕЖДЕНИЕ: недопустимые значения, скорее всего, приведут к сбою вашей игры. Сбросьте его на "user_defined", если больше ничего не работает; это просто и легко запоминается.
-
-
-
- Местоположение маркеров на карте
-
-
-
- Быстрый маркер
-
-
-
- "Быстрый маркер" сброшен в текущее местоположение
-
-
-
- У вас уже есть маркер в ближайшем smart %s
-
-
-
- Включить функцию определения точки маршрута и маркера на КПК 1.0
-
-
-
- Если этот параметр включен, КПК 1.0 будет разрешено использовать все функции точек маршрута и маркеров. Если отключено, существующие маркеры будут сохранены, но не смогут отображаться до тех пор, пока не будет установлено совместимое устройство.
-
-
-
- Включить функцию определения точки маршрута и маркера на КПК 2.0
-
-
-
- Если эта функция включена, КПК 2.0 будет разрешено использовать все функции точек маршрута и маркеров.
-
-
-
- Включить функцию определения точки маршрута и маркера на КПК 3.1
-
-
-
- Если эта функция включена, КПК 3.1 будет разрешено использовать все функции точек маршрута и маркеров.
-
-
-
- Включить функцию определения точки маршрута и маркера на КПК Milspec
-
-
-
- Если эта функция включена, в КПК "Milspec" (если он установлен и доступен) будет разрешено использовать все функции точек маршрута и маркеров.
-
-
-
- Иконка по умолчанию для маркеров
-
-
-
- Когда активна группа иконок маркеров, этот параметр определяет, какая иконка будет присвоена маркеру карты во время его создания. Каждый маркер карты может иметь свою иконку.
-
-
-
- Иконка по умолчанию для группировок
-
-
-
- Когда активна группа иконок группировок, этот параметр определяет, какая иконка будет присвоена маркеру карты во время его создания. Каждый маркер карты может иметь свою иконку.
-
-
-
- Иконка по умолчанию для BW Hi-res POIs
-
-
-
- Когда активен набор иконок BW Hi-res POIs (Black and White Hi-res POI icons - Черно-белые иконки POI высокого разрешения), этот параметр определяет, какая иконка будет присвоен маркеру на карте во время его создания. Каждый маркер на карте может иметь свою иконку.
-
-
-
- Иконка по умолчанию для "Избранное"
-
-
-
- Когда набор иконок "Избранное" активен, этот параметр определяет, какая иконка будет присвоен маркеру на карте во время его создания. Каждый маркер на карте может иметь свою иконку. Примечание: вы можете настроить "Избранное" или любой другой набор иконок, отредактировав файл "configs\scripts\paw\icon_set_*.ltx"
-
-
-
- Избранное
-
-
-
- Здесь нет предыдущей или активной точки маршрута для переключения.
-
-
-
- Маркер "Красный круглый шарик с булавкой"
-
-
-
- Маркер в стиле "Сталкер Курсор"
-
-
-
- Маркер в стиле "Современные карты"
-
-
-
- Маркер "Красная канцелярская кнопка с булавкой"
-
-
-
- Маркер "Желтая канцелярская кнопка с булавкой"
-
-
-
- Маркер "Белый маленький круглый шарик с булавкой"
-
-
-
- Сталкер
-
-
- Военный
-
-
- Бандит
-
-
- "Чистое небо"
-
-
- "Долг"
-
-
- Эколог/ученый
-
-
- "Свобода"
-
-
- Наемник
-
-
- "Монолит"
-
-
- "Грех"
-
-
- "ИИГ"
-
-
- Ренегат
-
-
-
-
-
-
-
- Набор иконок "Активный маркер"
-
-
-
- Каждая группа иконок ниже (например, маркеры, патчи) имеют иконку, которая в данный момент выбрана в их выпадающем списке. Этот переключатель определяет, какие из этих наборов иконок будут использоваться при размещении любого нового маркера.\n\nНабор "Избранное" всегда будет располагаться вверху списка, и вы можете свободно редактировать иконки, которые он содержит, в:\n configs\scripts\paw\icon_set_faves.ltx.
-
-
-
- Иконки в стиле "Маркер с булавкой"
-
-
-
- Иконки в виде "Нашивки группировок"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BW Hi-res POIs
-
-
-
- BWHR (иконка "Информация")
-
-
-
- BWHR (иконка "Источник сигнала")
-
-
-
- BWHR (иконка "Лут/вещи")
-
-
-
- BWHR (иконка "Опасность")
-
-
-
- BWHR (иконка "Оружие")
-
-
-
- BWHR (иконка "Патроны")
-
-
-
- BWHR (иконка "Биологическая опасность")
-
-
-
- BWHR (иконка "Радиация")
-
-
-
- BWHR (иконка "Внимание")
-
-
-
- BWHR (иконка "Увеличительное стекло")
-
-
-
-
-
- HR Сталкер
-
-
- HR Военный
-
-
- HR Бандит
-
-
- HR "Чистое небо"
-
-
- HR "Долг"
-
-
- HR Эколог/ученый
-
-
- HR "Свобода"
-
-
- HR Наемник
-
-
- HR "Монолит"
-
-
- HR "Грех"
-
-
- HR "ИИГ"
-
-
- HR "Ренегат"
-
-
-
- UHR Сталкер
-
-
- UHR Военный
-
-
- UHR Бандит
-
-
- UHR "Чистое небо"
-
-
- UHR "Долг"
-
-
- UHR Эколог/ученый
-
-
- UHR "Свобода"
-
-
- UHR Наемник
-
-
- UHR "Монолит"
-
-
- UHR "Грех"
-
-
- UHR "ИИГ"
-
-
- UHR "Ренегат"
-
-
-
- Установка маркера на карте — щелкните ПКМ, чтобы установить точка маршрута или маркер
-
-
-
-
-
- Воспроизвести звуковой эффект при установке маркера на карте
-
-
-
-
-
- Настройка иконки убитых, используемая КПК "Milspec"
-
-
-
- Эта дополнительная функция позволяет вам настроить иконку маркера убитых, используемую функцией отслеживания убийств КПК "Milspec", если у вас установлено это дополнение.\n\nОтключено: КПК "Milspec" работает нормально \n\nНашивка группировок убитых: у мертвых сталкеров будут "Нашивки группировок" для их маркера убитых, все остальные используют значение по умолчанию из "Набора маркеров убитых" \n\n "Набор маркеров убитых": КПК "Milspec" будет использовать текущую иконку по умолчанию из "Набора маркеров убитых" для всех тел
-
-
-
- Требуется КПК "Milspec" 1.7.3 или выше:\nhttps://www.moddb.com/mods/stalker-anomaly/addons/milspec-pda-for-anomaly-151-152-and-gamma
-
-
-
- Маркеры убитых
-
-
-
- Иконка по умолчанию для маркеров убитых
-
-
-
- Разрешение, используемое для нашивок группировок
-
-
-
- Этот параметр определяет, какое качество иконок используется для нашивок группировок: ванильная иконка инвентаря с низким разрешением, патчи PAW с высоким разрешением 64x64 или версия 128x128 с белым контуром. Точки на карте с низким и высоким разрешением имеют одинаковый размер; UHR-версии примерно на 25% больше.
-
-
-
- Low-Res (ванильная иконка инвентаря)
-
-
-
- Hi-Res (аккуратно очищенная)
-
-
-
- Ultra Hi-Res (с белым контуром)
-
-
-
- Настройка иконки убитых, используемая КПК "Milspec"
-
-
-
- Отключено
-
-
-
- Нашивка группировок убитых
-
-
-
- Набор маркеров убитых
-
-
-
-
-
-
-
- BWHR Маленькая смерть
-
-
-
- Синий круг
-
-
-
- Белое перекрестие
-
-
-
- Красное перекрестие
-
-
-
- Зеленое перекрестие
-
-
-
- Зеленое перекрестие
-
-
-
- Зеленая иконка тайника
-
-
-
- Белая иконка тайника
-
-
-
- Фиолетовая иконка тайника
-
-
-
- Красная иконка тайника
-
-
-
-
-
- Стереть все данные маркера
-
-
-
- Удаляет все маркеры с карты и стирает базу данных маркеров. Это нельзя отменить.
-
-
-
- [MPDA] Маленькая синяя точка
-
-
-
- [MPDA] Средняя синяя точка
-
-
-
- [MPDA] Большая синяя точка
-
-
-
- [MPDA] Белый крестик
-
-
-
- [MPDA] Маленький простой череп
-
-
-
- Поведение сочетания клавиш в "режиме Картографии"
-
-
-
- Переключение
-
-
-
- Удерживать
-
-
-
-
-
- Поддержка колесика мыши (требуются модифицированные двоичные файлы)
-
-
-
- При включении колесиком мыши можно прокручивать вверх и вниз для циклического перемещения по активным иконкам или наборам.\n
- Для этой функции требуются модифицированные двоичные файлы версии 20230701 или новее.
-
-
-
- Вывод сообщения при изменении режима работы колеса мыши
-
-
-
- Модифицированные двоичные файлы от demonized (требуется для поддержки колесика мыши):\n https://github.com/themrdemonized/STALKER-Anomaly-modded-exes/
-
-
-
-
- Активный набор изменен на %s.\n
-
-
-
-
- Теперь иконка активна
-
-
-
- Переход к следующему набору
-
-
-
- Опциональная привязка клавиш для перехода к следующему набору
-
-
-
- Вернуться к предыдущему набору
-
-
-
- Опциональная привязка клавиш для возврата к предыдущему набору
-
-
-
- Переход к следующей иконке в активном наборе
-
-
-
- Необязательная привязка клавиш для перехода к следующей иконке в активном наборе
-
-
-
- Переход к предыдущей иконке в активном наборе
-
-
-
- Необязательная привязка клавиш для перехода к предыдущей иконке в активном наборе
-
-
-
- Удерживайте, чтобы изменить наборы с помощью колесика мыши
-
-
-
- При удержании этой клавиши прокрутка выделения колесиком мыши будет циклически перемещаться по списку наборов, если включена прокрутка мыши.
-
-
-
- Удерживайте, чтобы изменить иконки с помощью колесика мыши
-
-
-
- При удержании этой клавиши прокрутка выделения колесиком мыши будет циклически перемещаться по иконкам в активном наборе, если режим прокрутки установлен на удержание для обоих.
-
-
-
- Колесико мыши теперь вращается по кругу
-
-
-
- Колесико мыши теперь вращает иконки
-
-
-
- Колесико мыши вернулось к поведению по умолчанию
-
-
-
-
-
- Включить HUD-виджет
-
-
-
- Задержка автоматического исчезновения в секундах (0 - никогда не исчезает)
-
-
-
- Воспроизведение звукового эффекта при изменении иконки / набора
-
-
-
- Воспроизведение звукового эффекта при установке маркера на карте
-
-
-
- Визуальная тема виджета (описание смотрите ниже)
-
-
-
- Используйте пользовательскую позицию ниже вместо темы по умолчанию
-
-
-
- HUD-виджет отображает текущую активную иконку и, в зависимости от темы, может также отображать другую информацию.
-
-
-
- Задает координату X (по горизонтали) верхнего левого угла виджета. 0,0 - верхний левый угол экрана, 1024,768 - нижний правый. Игра преобразует это в соответствии с разрешением вашего дисплея.
-
-
-
- Задает координату Y (по вертикали) верхнего левого угла виджета. 0,0 - верхний левый угол экрана, 1024,768 - нижний правый. Игра преобразует это в соответствии с разрешением вашего дисплея.
-
-
-
- Координата X (по горизонтали, слева направо)
-
-
-
- Координата Y (по вертикали, сверху вниз)
-
-
-
- Вы можете прочитать полное описание каждой доступной темы ниже.\n
-
-
-
-
- Классический сталкер, автоматическое переключение: 138x75 (позиция по умолчанию 890,620)\n
- Описание иконки и набора, следующие/текущие/предыдущие иконки\n
- Автоматическое переключение в классическое вертикальное положение вправо при открытом КПК\n
- Выберите "Классическую" тему, если вы не хотите автоматического переключения\n
- Рекомендуется по умолчанию
-
-
-
-
-
- Классический сталкер, горизонтальный: 138x75 (позиция по умолчанию 890,620)\n
- Описание иконки и набора, следующие/текущие/предыдущие иконки\n
- Не переключается автоматически, но блокируется КПК в положении по умолчанию
-
-
-
-
-
- Классический вертикальный, выровненный по правому краю: 100x154 (позиция по умолчанию 922,440)\n
- Описание иконки, следующие/текущие/предыдущие иконки\n
- Режим КПК для классического автоматического переключения Stalker, но может использоваться и самостоятельно
-
-
-
-
-
- Классический вертикальный, выровненный по левому краю: 100x154 (позиция по умолчанию 4,570)\n
- Описание иконки, следующие/текущие/предыдущие иконки\n
- Может блокировать новостные сообщения в позиции по умолчанию\n
- Рекомендуемое пользовательское положение
-
-
-
-
-
- Стиль ГАММЫ, выровненный по правому краю: 136x150 (позиция по умолчанию 888,440)\n
- Описание иконки и набора, следующие/текущие/предыдущие иконки\n
- Виден как с открытым КПК, так и без него
-
-
-
-
-
- Стиль ГАММЫ, выровненный по левому краю: 136x150 (позиция по умолчанию 4,440)\n
- Описание иконки и набора, следующие/текущие/предыдущие иконки\n
- Может блокировать новостные сообщения в позиции по умолчанию\n
- Рекомендуемое пользовательское положение
-
-
-
-
-
- Минималистичный, горизонтальный: 94x52 (позиция по умолчанию 924,645)\n
- Описание иконки, следующие/текущие/предыдущие иконки в отбрасываемой тени\n
- Заблокирован КПК в его положении по умолчанию\n
- Рекомендуемое пользовательское положение
-
-
-
-
-
- Минималистичный, вертикальный: 92x112 (позиция по умолчанию 924,440)\n
- Описание иконки, следующие/текущие/предыдущие иконки в отбрасываемой тени\n
- Версия без выравнивания по левому краю
-
-
-
-
-
- Минималистичный, компактный: 38x38 (позиция по умолчанию 890,440)\n
- Отображает только текущий значок в отбрасываемой тени\n
- заблокирован КПК в положении по умолчанию
-
-
-
-
-
- Компактный, без рамки пользовательского интерфейса: 32x32 (позиция по умолчанию 890,440)\n
- Отображает только текущий значок, никакого другого пользовательского интерфейса или фона\n
- Подходит для позиционирования практически в любом месте, легко интегрируется с пользовательскими HUD-ом
-
-
-
-
- Классический Сталкер, автопереключение H/V (гор./верт.)
-
-
-
- Классический сталкер, горизонтальный (890,620)
-
-
-
- Классический, вертикальный, выровненный по правому краю (922,440)
-
-
-
- Классический, вертикальный, выровненный по левому краю (4,570)
-
-
-
- Стиль ГАММА, выровненный по правому краю (888,440)
-
-
-
- Стиль ГАММА, выровненный по левому краю (4,574)
-
-
-
- Минималистичный, горизонтальный (890,650)
-
-
-
- Минималистичный, вертикальный (890,440)
-
-
-
- Минималистичный, компактный (820,725)
-
-
-
- Компактный, без рамки пользовательского интерфейса (820,725)
-
-
-
- Включено
-
-
-
-
-
- Текущая точка маршрута очищена
-
-
-
-
-
- PAW: https://www.moddb.com/mods/stalker-anomaly/addons/personal-adjustable-waypoint-for-anomaly-151-152-and-gamma
-
-
-
-
- Milspec PDA: https://www.moddb.com/mods/stalker-anomaly/addons/milspec-pda-for-anomaly-151-152-and-gamma
-
-
-
-
-
-
- Отключение немедленного обновления MCM
-
-
-
- Когда вы меняете текущую иконку/набор во время игры, PAW обновляет ту же настройку в MCM. Это сделано для того, чтобы ваши изменения сохранялись даже в случае сбоя игры, но это может повлиять на производительность некоторых ПК. Включение этого параметра отключит эту функцию, но настройки все равно сохранятся при сохранении игры. Однако изменения не будут отражены в MCM, если вы войдете в его меню перед сохранением.
-
-
-
-
-
-
-
-
-
-
-
- Расстояние автоматической очистки точки маршрута (в метрах)
-
-
-
- Отображение маркера точки маршрута на HUD
-
-
-
- Не показывать приветственное сообщение PAW при загрузке сохранения в игре
-
-
-
- $clr_prp[ Инициализация Персональной Настраиваемой Системы Точек Маршрута ]$clr_wht \n \n
-• Щелкните ПКМ на любом видимом значке карты для установки пользовательского маркера ($clr_lblточек маршрута$clr_wht) или для размещения и обозначения маркеров карты.\n
-• Нажмите $clr_yel%s$clr_wht, чтобы в любой момент включить или выключить точки маршрута. Если вам не нужен видимый HUD-маркер, вы можете отключить его в MCM.\n
-• Нажмите $clr_yel%s$clr_wht, чтобы отметить на карте $clr_lblБыстрый маркер$clr_wht в текущем местоположении.\n
-• Удерживайте нажатой кнопку $clr_yel%s$clr_wht, чтобы войти в режим $clr_lblКартография$clr_wht для использования дополнительных функций на карте, например $clr_lblпинг$clr_wht для отображения временных маркеров и для точного размещения маркеров и точек маршрута.\n
-\n
-Все это и многое другое вы найдете в MCM в разделе $clr_lblНастройка Точек Маршрута$clr_wht.\n
-\n
-Это сообщение больше не появится. Счастливой охоты, %s.
-
-
-
-
-
-
-
- Система PAW отключена
-
-
-
-
-
-
-
- Активный маркер:
-
-
-
-
-
- Переключатель "Режима Картографии"
-
-
-
- По умолчанию для включения "Режима Картографии" необходимо удерживать нажатой клавишу. Если эта опция включена, то она работает как переключатель.
-
-
-
- В "Режиме Картографии" отображаются "умные" точки местности
-
-
-
- По умолчанию в режиме "Картография" отображается иконка (белая карта с лупой), указывающай на "умные" точки местности. Если по каким-либо причинам их отображение не нужно или нежелательно, их можно отключить с помощью этой опции.
-
-
-
-
-
- м
-
-
-
- Неопознанный
-
-
-
- тайник
-
-
-
- отряд
-
-
-
- В данный момент вы используете добытый КПК НПС, а не свой собственный. Задействуйте КПК игрока, чтобы использовать точки маршрута, маркеры карты или другие функции системы PAW.
-
-
-
- Отображение расстояния на точке маршрута HUD-маркера
-
-
-
- Выберите, когда HUD-маркер точки маршрута должен показывать индикатор расстояния: "никогда", "всегда", только когда активен "режим Картографии" или только когда он не активен (обычный вид КПК). Не имеет эффекта, если HUD-маркер не включен.
-
-
-
- Отображение расстояния на "Маркерах-булавках" на HUD
-
-
-
- Выберите, когда "Маркеры-булавки" на HUD должны показывать индикатор расстояния: "никогда", "всегда", только когда активен "режим Картографии", или только когда он не активен (обычный вид КПК). Не имеет эффекта при отсутствии видимых на HUD маркеров.
-
-
-
- Отображение надписей на маркерах HUD
-
-
-
- Выберите, когда "Маркеры-булавки" на HUD должны отображать свою текстовую метку над пиктограммой: "никогда", "всегда", только когда активен "режим Картографии" или только когда он не активен (обычный вид КПК). Не имеет эффекта при отсутствии видимых на HUD маркеров.
-
-
-
-
-
- НПС и службы
-
-
-
- Значок по умолчанию для НПС и служб
-
-
-
- Друг (стиль "бриллиант")
-
-
-
- Нейтрал (стиль "бриллиант")
-
-
-
- Враг (стиль "бриллиант")
-
-
-
- Друг (стиль "шеврон")
-
-
-
- Нейтрал (стиль "шеврон")
-
-
-
- Враг (стиль "шеврон")
-
-
-
- Друг (стиль "флаг")
-
-
-
- Нейтрал (стиль "флаг")
-
-
-
- Враг (стиль "флаг")
-
-
-
- Механик
-
-
-
- Торговец
-
-
-
- Проводник
-
-
-
- Продавец продуктов питания
-
-
-
- Медик
-
-
-
- Спальная зона
-
-
-
- Контейнерный объект
-
-
-
- Заблокированный объект
-
-
-
- Режим "Картографии"
-
-
-
- Режим "Картографии" позволяет использовать дополнительные картографические функции, не загромождая HUD или меню во время обычной игры. Настроить отображение функций в этом режиме (или в обычном режиме КПК) можно в подменю контекстного меню MCM.
-
-
-
- Поддержка колесика мыши
-
-
-
- "Точки маршрута" и "Маркеры-булавки" - Наведение на цель по перекрестию прицела
-
-
-
- "Точки маршрута" и "Маркеры-булавки" - Наведение на цель по перекрестию прицела
-
-
-
- Эти две комбинации клавиш позволяют использовать "Точки маршрута" и "Маркеры-булавки" на любом объекте, находящемся в данный момент под перекрестием. Для того чтобы игра зарегистрировала это, объект должен находиться точно под центром перекрестия. Для сталкеров это означает, что объект должен быть достаточно центрирован, чтобы активировалась идентификация перекрестия.
-
-
-
- "Точки маршрута" и "Маркеры-булавки" — основные сочетания клавиш
-
-
-
- Нажмите клавишу, чтобы установить "Точку маршрута" на целевом объекте
-
-
-
- При нажатии этой клавиши "Точка маршрута" будет установлена или перемещена на объект под перекрестием игрока. Если он уже был установлен для целевого объекта, он будет отключен.
-
-
-
- Нажмите клавишу, чтобы установить маркер на целевом объекте
-
-
-
- При нажатии этой клавиши "Маркер-булавка" будет помещен на объект под перекрестием игрока, если его еще нет, с использованием текущей активной иконки. Если для цели уже существует "Маркер-булавка", он будет удален.
-
-
-
- Маркеры, созданные таким образом, по умолчанию отображаются в HUD
-
-
-
- Если "Маркер-булавка" был создан путем нацеливания на объект с помощью указанной выше комбинации клавиш, он автоматически отобразится в HUD. Вы можете в любое время показать или скрыть маркеры на HUD с помощью КПК.
-
-
-
-
- Маркер $clr_yel%s$clr_wht удален из $clr_lbl%s$clr_wht.
-
-
-
- Маркер добавлен в $clr_lbl%s$clr_wht используя текущую иконку: $clr_lbl%s$clr_wht.\n
- Вы можете изменить текущую активную иконку с помощью $clr_yel%s$clr_wht/$clr_yel%s$clr_wht.
-
-
-
- Маркер $clr_yel%s$clr_wht удален из $clr_lbl%s$clr_wht.
-
-
-
- Показывать подсказку при смене иконок или наборов с помощью привязки клавиш
-
-
-
-
-
- Расстояние до затухания маркера (в метрах)
-
-
-
- Когда игрок приближается на это расстояние к маркеру, он начнет исчезать.
-
-
-
- Расстояние начала затухания маркера (в метрах)
-
-
-
- Когда игрок окажется на таком расстоянии от маркера, он начнет исчезать.
-
-
-
- Расстояние до исчезновения маркера (в метрах)
-
-
-
- Если игрок находится более чем на таком расстоянии от места начала затухания, то маркер исчезнет полностью.
-
-
-
- Маркеры на HUD не исчезают в режиме картографии
-
-
-
- Если на HUD есть какие-либо маркеры, и они обычно настроены на затухание, то при активном режиме картографии они не будут затухать.
-
-
-
-
-
-
-
- Показывать интеллектуальный прицел при наведении на правильный объект
-
-
-
- Этот параметр определяет, когда может появляться интеллектуальная прицельная сетка: "всегда", только при активном "режиме Картографии" или "никогда" (отключено).
-
-
-
- Прозрачность перекрестия
-
-
-
- Значение прозрачности (альфа) перекрестия, при этом 0 означает полную прозрачность, а 255 - отсутствие прозрачности.
-
-
-
- Длительность появления прицельной сетки для объекта
-
-
-
- Время в миллисекундах, которое требуется прицелу для завершения исчезновения при наведении на действительный объект.
-
-
-
- Длительность исчезновения прицельной сетки для объекта
-
-
-
- Время в миллисекундах, необходимое для того, чтобы прицельная сетка полностью исчезла после того, как перекрестие больше не указывает на цель.
-
-
-
- Соотношение сторон для экрана, показанного ниже
-
-
-
- 4:3 (Стандартное разрешение)
-
-
-
- 16:10 (1920x1200, 2560x1600)
-
-
-
- 16:9 (1080p, 1440p, 2160p)
-
-
-
- 21:9 (Ультраширокий)
-
-
-
-
-
- Примеры разрешений в этом соотношении сторон:\n
-
-
-
- \n1024x768\n1600x1200
-
-
-
- \n1920x1080 (1080p)\n1280x720\n1600x900\n2560x1440\n3840x2160
-
-
-
- \n1280x800\n1920x1200\n2560x1600\n3840x2400
-
-
-
- \n2560x1080\n3440x1440\n3840x1600
-
-
-
-
-
-
-
- Включить автоматическую интеллектуальную маркировку идентификатора прицела
-
-
-
- При включении этой функции HUD-прицел PAW будет автоматически "помечать" действительные объекты цели соответствующим маркером после их идентификации, как показано ниже.
-
-
-
- Использование маркеров и точек маршрута на любом действительном объекте под перекрестием с помощью настраиваемых горячих клавиш. По умолчанию прицел затухает и исчезает, указывая на то, что вы нацелились на действительный объект.
-
-
-
- Чтобы вместо этого автоматически помечать объекты, см. настройку "Автометка" ниже.
-
-
-
- Функция "Автометка" позволяет автоматически помечать определенные типы объектов заранее заданными метками по вашему выбору после их идентификации. Это позволяет освободить клавиши и сосредоточиться на Зоне, а не на КПК или меню.
-
-
-
- Он функционирует аналогично аддону "Faction Identification" (FacID «Идентификация группировок»), считывая его MCM-настройки, чтобы PAW и FacID могли работать вместе. Изменения, внесенные в MCM-меню FacID, будут учтены PAW.
-
-
-
- Умные маркеры
-
-
-
- Иконка по умолчанию для "Умных маркеров"
-
-
-
-
- Включение автометок для дружественных сталкеров
-
-
-
- Иконка человека (друг)
-
-
-
- "Автометка" присвоит эту иконку дружественным сталкерам.
-
-
-
-
- Включить автометку для нейтральных сталкеров
-
-
-
- Иконка человека (нейтральный)
-
-
-
- "Автометка" присвоит эту иконку нейтральным сталкерам.
-
-
-
- Включение автометки для вражеских сталкеров
-
-
-
- Иконка человека (враг)
-
-
-
- "Автометка" присвоит эту иконку вражеским сталкерам.
-
-
-
-
- Включение автометки для монстров
-
-
-
- Монстры
-
-
-
- "Автометка" будет присваивать эту иконку мутантам, монстрам и другим нечеловеческим существам.
-
-
-
-
- Включение автометки для контейнеров-тайников
-
-
-
- Иконка контейнера-тайника
-
-
-
- "Автометка" присвоит этот иконку тайникам и другим ящикам с инвентарем.
-
-
-
-
- Активен только при использовании оптического прицела/бинокля
-
-
-
- Если эта опция включена, то прицел (и его возможности по созданию меток) будет включаться только при увеличении с помощью бинокля или прицела на оружии. Это рекомендуется для того, чтобы метки не создавались просто при приближении или разговоре с НПС.
-
-
-
- Маркеры, размещаемые вручную, также являются «умными»
-
-
-
- Если эта опция включена, то маркеры прицела, созданные путем ручного запуска связанной с ними привязки клавиш, также будут использовать приведенные ниже настройки "Автометки", назначая выбранную иконку для целевого объекта вместо текущей активной иконки.
-
-
-
- Красный звериный череп
-
-
-
- Градиентное перекрестие
-
-
-
-
-
- Аддон $clr_yelPersonal Adjustable Waypoint $clr_redне смог загрузить свои данные текстур$clr_wht, и отключил свои функции во избежание сбоев.\n \n
- Проверьте журнал игры на наличие ошибок и убедитесь, что после PAW не загружается ничего, что изменяет файл $clr_yelmap_spots_relations.xml$clr_red.\n \n
- Если Вы никогда не собираетесь использовать возможности PAW и Вам безразлично, что этот файл заменило что-то другое, Вы можете отключить эту ошибку в меню $clr_yelPAW$clr_wht в MCM.
-
-
-
- ВНИМАНИЕ: отсутствуют данные текстур маркеров карт.
-
-
-
- Во избежание сбоев, как PAW, так и многие части меню MCM были отключены до устранения этой проблемы.
-
-
-
- Personal Adjustable Waypoint не смог загрузить данные текстур из файла map_spots_relations.xml. Практически ВСЕГДА причиной этого является загрузка после PAW другого аддона, который изменяет этот файл. Примерами могут служить (но не ограничиваются ими) Kill Tracker или Milspec PDA.
-
-
-
- Если вы используете GAMMA или Mod Organizer 2, измените порядок загрузки таким образом, чтобы PAW загружался после (ниже) всех аддонов, изменяющих map_spots_relations.xml. Если вы не используете MO2, то вам следует использовать его.
-
-
-
-
- Отключить внутриигровое предупреждение об этой ошибке (НЕ рекомендуется)
-
-
-
-
-
- Автометки являются постоянными
-
-
-
- Если эта опция не включена, то все метки, добавленные с помощью автоматической маркировки, будут временными - то есть они автоматически исчезнут при следующем изменении карты или загрузке сохранения игры.
-
-
-
- Время истечения срока действия автометки (в секундах)
-
-
-
- Если для автометок не включено сохранение, они будут автоматически очищены через это количество секунд. Если установить это значение в ноль, то таймаут будет отключен, но метки все равно будут очищены при следующем изменении карты или загрузке сохранения игры.
-
-
-
-
-
-
-
- Когда игрок приблизится на это расстояние к маркеру точки маршрута, он будет автоматически очищен. Если установить это значение в ноль, то автоочистка будет полностью отключена.
-
-
-
\ No newline at end of file
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/map_spots_milpda.xml b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/map_spots_milpda.xml
deleted file mode 100644
index 5fda1525..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/map_spots_milpda.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_mmap_common_actor
-
-
-
- ui_mmap_common_actor
-
-
-
- ui_mmap_common_actor
-
-
-
- ui_mmap_common_actor
-
-
-
- ui_mmap_common_actor
-
-
-
- ui_mmap_common_actor
-
-
-
- ui_mapspot_skull_large
-
-
-
- ui_mapspot_skull_small
-
-
-
- ui_AlphaLion_XCorpseMarker-small
-
-
-
- ui_AlphaLion_XCorpseMarker-large
-
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/map_spots_paw.xml b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/map_spots_paw.xml
deleted file mode 100644
index 44d032cb..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/map_spots_paw.xml
+++ /dev/null
@@ -1,157 +0,0 @@
-
-#include "ui\map_spots_paw_pins.xml"
-#include "ui\map_spots_paw_patches.xml"
-#include "ui\map_spots_paw_bwhr.xml"
-#include "ui\map_spots_paw_npcs.xml"
-#include "ui\map_spots_milpda.xml"
-
-
-
-
-
-
-
-
- ui_icons_paw_magnifier32
-
-
-
-
-
-
-
-
-
- ui_icons_paw_ping_spot_alpha
-
-
-
-
-
-
-
-
- ui_icons_paw_ping_spot_alpha
-
-
-
-
-
-
-
- ui_pda2_stask_last_01a
-
-
-
-
-
-
-
-
-
-
-
- paw_vanilla_stash_icon_green
-
-
-
-
-
-
-
-
- paw_vanilla_stash_icon_white
-
-
-
-
-
-
-
-
- paw_vanilla_stash_icon_purple
-
-
-
-
-
-
-
-
- paw_vanilla_stash_icon_red
-
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_bwhr_death64
-
-
-
-
-
-
-
-
-
- ui_icons_paw_blue_circle
-
-
-
-
-
-
-
-
-
- ui_icons_paw_crosshair_white
-
-
-
-
-
-
-
-
-
- ui_icons_paw_crosshair_red
-
-
-
-
-
-
-
-
-
- ui_icons_paw_crosshair_green
-
-
-
-
-
-
-
-
- ui_icons_paw_crosshair_gradient
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_redskull
-
-
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/map_spots_paw_bwhr.xml b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/map_spots_paw_bwhr.xml
deleted file mode 100644
index 21e4952b..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/map_spots_paw_bwhr.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-
-
-
-
-
- ui_icons_paw_pin_bwhr_loot64
-
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_bwhr_warn64
-
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_bwhr_ak64
-
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_bwhr_signal64
-
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_bwhr_death64
-
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_bwhr_ammo64
-
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_bwhr_rad64
-
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_bwhr_info64
-
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_bwhr_magn64
-
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_bwhr_bio64
-
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/map_spots_paw_npcs.xml b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/map_spots_paw_npcs.xml
deleted file mode 100644
index da1177a3..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/map_spots_paw_npcs.xml
+++ /dev/null
@@ -1,164 +0,0 @@
-
-
-
-
-
-
-
- ui_icons_paw_pin_cursor_diamond_f
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_cursor_diamond_n
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_cursor_diamond_e
-
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_cursor_chevron_f
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_cursor_chevron_n
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_cursor_chevron_e
-
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_cursor_flag_f
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_cursor_flag_n
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_cursor_flag_e
-
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_impobj_mechanic
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_impobj_trade
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_impobj_person
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_impobj_food
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_impobj_medic
-
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_impobj_bed
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_impobj_briefcase
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_obj_lock
-
-
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/map_spots_paw_patches.xml b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/map_spots_paw_patches.xml
deleted file mode 100644
index f1d7d268..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/map_spots_paw_patches.xml
+++ /dev/null
@@ -1,339 +0,0 @@
-
-
-
-
-
-
-
- ui_icons_paw_badge_army
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_bandit
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_csky
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_dolg
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_ecolog
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_freedom
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_killer
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_monolith
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_stalker
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_greh
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_isg
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_renegade
-
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_hr_army
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_hr_bandit
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_hr_csky
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_hr_dolg
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_hr_ecolog
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_hr_freedom
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_hr_killer
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_hr_monolith
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_hr_stalker
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_hr_greh
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_hr_isg
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_hr_renegade
-
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_uhr_army
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_uhr_bandit
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_uhr_csky
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_uhr_dolg
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_uhr_ecolog
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_uhr_freedom
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_uhr_killer
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_uhr_monolith
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_uhr_stalker
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_uhr_greh
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_uhr_isg
-
-
-
-
-
-
-
-
- ui_icons_paw_badge_uhr_renegade
-
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/map_spots_paw_pins.xml b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/map_spots_paw_pins.xml
deleted file mode 100644
index c0fa271f..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/map_spots_paw_pins.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-
-
-
- ui_icons_paw_pin_redpush32
-
-
-
- ui_icons_paw_pin_redpush32
-
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_redmodern32
-
-
-
- ui_icons_paw_pin_redmodern32
-
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_redround32
-
-
-
- ui_icons_paw_pin_redround32
-
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_stalker64
-
-
-
- ui_icons_paw_pin_stalker64
-
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_yelpush32
-
-
-
- ui_icons_paw_pin_yelpush32
-
-
-
-
-
-
-
-
-
- ui_icons_paw_pin_whtsimple32
-
-
-
- ui_icons_paw_pin_whtsimple32
-
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/paw_hud_indicator.xml b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/paw_hud_indicator.xml
deleted file mode 100644
index 29464ae5..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/paw_hud_indicator.xml
+++ /dev/null
@@ -1,125 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/paw_hud_pin_icon.xml b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/paw_hud_pin_icon.xml
deleted file mode 100644
index 1e7eab71..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/paw_hud_pin_icon.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/paw_hud_wp_icon.xml b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/paw_hud_wp_icon.xml
deleted file mode 100644
index e1481a14..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/paw_hud_wp_icon.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
- ui_icons_paw_hud_waypoint
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/paw_input_window.xml b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/paw_input_window.xml
deleted file mode 100644
index 5a54f84f..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/paw_input_window.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/textures_descr/ui_catsy_paw_texd.xml b/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/textures_descr/ui_catsy_paw_texd.xml
deleted file mode 100644
index b07c2a30..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/configs/ui/textures_descr/ui_catsy_paw_texd.xml
+++ /dev/null
@@ -1,219 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/scripts/catsy_paw_mcm.script b/mods/Personal Adjustable Waypoint_backup/gamedata/scripts/catsy_paw_mcm.script
deleted file mode 100644
index ee9b332d..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/scripts/catsy_paw_mcm.script
+++ /dev/null
@@ -1,1396 +0,0 @@
--- ======================================================================
---[[ Personal Adjustable Waypoint
--- ======================================================================
- MCM initialization script
- Author: Catspaw (CatspawMods @ ModDB)
- Source: https://www.moddb.com/mods/stalker-anomaly/addons/personal-adjustable-waypoint-for-anomaly-151-152-and-gamma
-
- You probably shouldn't mess with this, even if you're familiar with
- MCM's menus. It involves a fair bit of black magic, and updates all
- sorts of things dynamically based on the contents of the ltx files in
- configs\scripts\paw, and touches MCM in some fairly unwholesome ways.
--- ===================================================================--]]
-
-debuglogs = false -- Controls debug logging if you don't have MCM
-verbose = true
-local scriptname = "catsy_paw_mcm"
-local logprefix = " "
-local paw = tasks_placeable_waypoints
-printf(logprefix.."Forcing tasks_placeable_waypoints.script to load first")
-paw.load_me = function() return paw and paw.started end
--- Force tasks_placeable_waypoints to load first using a dummy monkeypatch
-local ts = game.translate_string
-local psk = utils_data.parse_string_keys
-local text_colors = paw.text_colors
-local icon_sets_ini = ini_file_ex("scripts\\paw\\icon_sets.ltx")
-local iconset_ltx = icon_sets_ini:get_sections(true)
-local icon_sets = {}
-local icons_ini = ini_file_ex("scripts\\paw\\icons.ltx")
-local icon_ltx = icons_ini:collect_section("icons")
-local icons = icon_ltx
-local pawmenu_path = "ui_mcm_pawsys_pawmenu_"
-local actions_ini = ini_file_ex("scripts\\paw\\menu_actions.ltx")
-local actions_ltx = actions_ini:get_sections(true)
-local load_failed = false
-local load_error_text1 = {id = "load_error1", type = "desc", text = "st_paw_texture_load_error1"}
-local load_error_text2 = {id = "load_error2", type = "desc", text = "st_paw_texture_load_error2"}
-local load_error_text_block = {load_error_text1,load_error_text2,divider}
-local divider = {id = "divider", type = "line"}
-local action_codes = {}
-local action = {}
-local dynamic_faves = {}
--- =======================================================================
-
-local preview_started = false
-unsquish_ratio = 1
-aspect_ratio = "16_9"
-aspects = {
- ["21_9"] = {
- x = 640,
- y = 270,
- node = "preview_21_9",
- scale_x = 640/1024,
- scale_y = 270/768,
- unratio = round_idp((1080/2560)/0.75,4),
- enabled = true,
- },
- ["16_9"] = {
- x = 480,
- y = 270,
- node = "preview_16_9",
- scale_x = 480/1024,
- scale_y = 270/768,
- unratio = round_idp((1080/1920)/0.75,4),
- enabled = true,
- },
- ["16_10"] = {
- x = 420,
- y = 262,
- node = "preview_16_10",
- scale_x = 420/1024,
- scale_y = 262/768,
- unratio = round_idp((1200/1920)/0.75,4),
- enabled = true,
- },
- ["4_3"] = {
- x = 360,
- y = 270,
- node = "preview_4_3",
- scale_x = 360/1024,
- scale_y = 270/768,
- unratio = 1,
- enabled = true,
- },
-}
-
-local default_widget_state = {
- curr_x = 890,
- curr_y = 620,
- cust_x = 491,
- cust_y = 670,
- themename = "classicauto",
- curr_aspect = "16_9",
- use_custom = false,
-}
-local pws = default_widget_state
-function usr(n) return n * unsquish_ratio end
-
--- =======================================================================
-
-function dl(logtext,...)
- -- Debug logging
- if logtext and debuglogs then
- printf(logprefix..logtext,...)
- end
-end
-
-
-function vl(logtext,...)
- -- Verbose logging
- if logtext and debuglogs and verbose then
- dl("[V] "..logtext,...)
- end
-end
-
-function load_ltx_data()
- for w, _ in pairs(iconset_ltx) do
- local iconset_ltx_prefix = "iconset_"
- local icons_pos = string.find(w,iconset_ltx_prefix)
- if icons_pos == 1 then
- local group = string.sub(w,icons_pos+string.len(iconset_ltx_prefix))
- local set_cfg = icon_sets_ini:collect_section(w)
-
- local name = set_cfg.name
- local def = set_cfg.default
- local sec_list = group.."_icons"
- dl("default icon for icon_sets_ini:collect_section(%s): %s",sec_list,def)
- local iconlist = icon_sets_ini:collect_section(sec_list)
- for k,v in spairs(iconlist) do
- dl("Adding icon to drop-down list: %s",k)
- end
-
-
- dl("Found icon set %s with group %s, section %s",ts(name),group,sec_list)
- icon_sets[group] = {
- name = name,
- group = group,
- default = def,
- active_icon = icons[def],
- icons = iconlist,
- }
- local ig = icon_sets[group].icons
- dl("Final values loaded for icon_set[%s] (%s):\nIcons: ",group,ts(name))
-
-
- for k,v in pairs(ig) do
- dl("%s = %s",k,v)
- end
- end
- end
- dl("Loading menu actions from actions_ini")
- for w, _ in pairs(actions_ltx) do
- action_codes[w] = actions_ini:collect_section(w)
- local ac = action_codes[w]
- local opt_loc = ts(pawmenu_path..ac.text)
- local isnum = ac and ac.mode and (type(ac.mode) == "number")
- if isnum then
- ac.mode = clamp(ac.mode,0,4)
- else
- ac.mode = 0
- end
- ac.enable = (ac.enable == "true")
- action[opt_loc] = w
- if verbose then
- vl("Initializing menu action:\n%s = %s",opt_loc,action[opt_loc])
- for k,v in pairs(ac) do vl("%s = %s",k,v) end
- vl("action[\"%s\"] = %s",opt_loc,action[opt_loc])
- end
- end
- table.sort(icons)
- table.sort(icon_sets)
- table.sort(action_codes)
-end
-load_ltx_data()
-
-
-local function populate_set_list()
- dl("populate_set_list called")
- local ig = icon_sets
- local pg = "pawsys_pg_"
- local ind = 1
- local content = {}
- content[ind] = {"faves",pg.."faves"}
- dl("adding favorites to first index: {%s,%s}",content[1][1],content[1][2])
- for g,_ in pairs (ig) do
- if g ~= "faves" then
- ind = ind +1
- table.insert(content,ind,{g,pg..g})
- dl("adding %s to list at index %s: {%s,%s}",g,ind,content[ind][1],content[ind][2])
- end
- end
- return content
-end
-
-local function populate_icon_list(group)
- dl("populate_icon_list called for group %s",group)
- local ig = icon_sets[group].icons
- local content = {}
- for icon,_ in spairs (ig) do
- local ic = icons[icon]
- if ic then
- local entry = {icon,icons[icon]}
- table.insert(content,entry)
- vl("populate_icon_list adding option for group %s: {%s,%s}",group,entry[1],entry[2])
- else
- dl("WARNING: member %s not found in icons.ltx! Check your customizations.",icon)
- end
- end
-
- return content
-end
-
-function populate_autotag_menus()
- dl("populate_autotag_menus called")
-
- local gr = {
- {id = "reticle_header", type= "image", link = "ui_paw_emptytex", size= {512,170},
- ui_hook_functor = {catsy_paw_mcm.mcm_init_header_text_block},
- },
-
- {id = "reticle_mustzoom", type = "check", val = 1, def = true},
- {id = "pin_auto_visible", type = "check", val = 1, def = true},
- {id = "reticle_mode", type = "list", val = 2, def = 2,
- content = {
- {4,"pawsys_cmenu_all"},
- {2,"pawsys_cmenu_cart"},
- {0,"pawsys_cmenu_off"},
- }
- },
-
- {id = "reticle_alpha", type = "track", val = 2, min = 1, max = 255, step = 1, def = 120},
- {id = "ret_fade_attack_time", type = "input", val = 2, min = 1, max = 5000, def = 150},
- {id = "ret_fade_decay_time", type = "input", val = 2, min = 1, max = 5000, def = 250},
- {id = "autotag_header", type = "image", link = "ui_paw_emptytex", size = {512,50},
- ui_hook_functor = {catsy_paw_mcm.mcm_init_header_text_block},
- },
- {id = "enable_autotag", type = "check", val = 1, def = false},
- {id = "manual_smart_pins", type = "check", val = 1, def = true},
- {id = "autotag_persistence", type = "check", val = 1, def = false},
- {id = "autotag_lifetime", type = "track", val = 2, min = 0, max = 600, step = 1, def = 0},
- }
-
- if load_failed then
- table.insert(gr,divider)
- table.insert(gr,load_error_text1)
- table.insert(gr,load_error_text2)
- table.insert(gr,divider)
- return gr
- end
-
- for tag,defs in spairs(paw.smart_pins) do
- dl("populate_autotag_menus adding entry for %s (default %s)",tag,defs.pin)
- enable_opt = {
- id = tag.."_enable",
- type = "check",
- val = 1,
- def = defs.enabled,
- --on_selection_functor = {catsy_paw_mcm.mcm_on_value_select},
- }
- --local current = axr_main.config:r_value("mcm", "pawsys/pawret/"..tag, {val=0})
- local def = defs.pin or icon_sets["npcs"].default
- menu_opt = {
- id = tag,
- type = "list",
- val = 0,
- def = def,
- ui_hook_functor = {catsy_paw_mcm.init_mcm_set_ind},
- on_selection_functor = {catsy_paw_mcm.mcm_on_value_select},
- content = populate_icon_list("smartpins")
- }
- table.insert(gr,menu_opt)
- table.insert(gr,enable_opt)
- end
- table.insert(gr,divider)
-
- vl("results for populate_autotag_menus:")
- if verbose then
- for k,v in pairs(gr) do
- local st = k..string.format("=%s",v)..":\n{"
- for m,o in pairs(v) do
- st = st..m.."="..tostring(o)..","
- end
- st = st.."}"
- vl(st)
- end
- end
-
- return gr
-end
-
-
-function populate_set_menus()
- dl("populate_set_menus called")
- local poi ="poi_icon_"
-
- local recfaves = {{0,"pawsys_cmenu_off"},}
- for i = 1,10 do table.insert(recfaves,{i,"paw_last_"..tostring(i)}) end
-
- local gr = {
- {id = "header", type= "slide", link= "ui_paw_menuslide_pins", size= {512,50}, spacing= 20},
- {id = "indicator", type= "image", ui_hook_functor={catsy_paw_mcm.init_mcm_header_ind}},
- {id = "pin_icon_group", type= "list", on_selection_functor = {catsy_paw_mcm.mcm_on_value_select}, val = 0, def = "pins", content = populate_set_list()},
- {id = "divider", type= "line"},
- --{id = "fave_recent", type = "list", val = 2, def = 5, content = recfaves},
- }
-
- if load_failed then
- table.insert(gr,divider)
- table.insert(gr,load_error_text1)
- table.insert(gr,load_error_text2)
- table.insert(gr,divider)
- return gr
- end
-
- local newentry = {
- id = poi.."faves",
- type = "list",
- val = 0,
- def = icon_sets["faves"].default,
- ui_hook_functor = {catsy_paw_mcm.init_mcm_set_ind},
- on_selection_functor = {catsy_paw_mcm.mcm_on_value_select},
- content = populate_icon_list("faves")
- }
- table.insert(gr,newentry)
- for g,_ in pairs(icon_sets) do
- if g ~= "faves" then
- dl("populate_set_menus adding entry for icon set %s",g)
- local ig = icon_sets[g]
- newentry = {
- id = poi..g,
- type = "list",
- val = 0,
- def = ig.default,
- ui_hook_functor = {catsy_paw_mcm.init_mcm_set_ind},
- on_selection_functor = {catsy_paw_mcm.mcm_on_value_select},
- content = populate_icon_list(g)
- }
- dl("newentry.id %s | type %s | val %s | def %s | content: %s",newentry.id,newentry.type,newentry.val,newentry.def,newentry.content)
- table.insert(gr,newentry)
- end
- end
- table.insert(gr,{id = "divider", type = "line"})
- table.insert(gr,{id = "header", type= "slide", link= "ui_paw_menuslide_badges", size= {512,50}, spacing= 20})
-
- table.insert(gr,{id = "patch_res", type = "list", val = 0, def = "badge",
- content = {
- {"badge","pawsys_cfg_badge_res"},
- {"badge_hr","pawsys_cfg_badge_hr_res"},
- {"badge_uhr","pawsys_cfg_badge_uhr_res"},
- }
- })
- table.insert(gr,{id = "milpda_body_icon", type = "list", val = 0, def = "bodyoff",
- content = {
- {"off","pawsys_cfg_bodyoff"},
- {"fac","pawsys_cfg_bodyfac"},
- {"set","pawsys_cfg_bodyset"},
- }
- })
- table.insert(gr,{id = "use_custom_pin_icon", type = "check", val = 1, def = false})
- table.insert(gr,{id = "custom_pin_icon", type = "input", val = 0, def = "user_defined"})
- vl("results for populate_set_menus:")
- if verbose then
- for k,v in pairs(gr) do
- local st = "{"
- for m,o in pairs(v) do
- st = st..m.."="..tostring(o)..","
- end
- st = st.."}"
- vl(st)
- end
- end
-
- return gr
-end
-
-function tbl_to_mcm_string(tbl)
- for k,v in pairs(v) do
- st = st..k.."="..tostring(v)..","
- end
- st = st.."}"
- vl("tbl_to_mcm_string returned %s",st)
- return st
-end
-
--- ======================================================================
-
-function on_mcm_load()
- load_failed = not (paw and paw.load_me())
-
- aspect_ratio = get_current_aspect_ratio()
- _ = load_icoset_state()
-
- local pawgen = {
- {id = "header", type= "slide", link= "ui_paw_menuslide_main", size= {512,50}, spacing= 20},
- {id = "wp_hud_icon_enabled", type = "check", val = 1, def = true},
- {id = "show_dist_wp", type = "list", val = 2, def = 4,
- content = {
- {4,"pawsys_cmenu_all"},
- {1,"pawsys_cmenu_norm"},
- {2,"pawsys_cmenu_cart"},
- {0,"pawsys_cmenu_off"},
- }
- },
- {id = "show_dist_pins", type = "list", val = 2, def = 4,
- content = {
- {4,"pawsys_cmenu_all"},
- {1,"pawsys_cmenu_norm"},
- {2,"pawsys_cmenu_cart"},
- {0,"pawsys_cmenu_off"},
- }
- },
- {id = "show_hint_pins", type = "list", val = 2, def = 2,
- content = {
- {4,"pawsys_cmenu_all"},
- {1,"pawsys_cmenu_norm"},
- {2,"pawsys_cmenu_cart"},
- {0,"pawsys_cmenu_off"},
- }
- },
- {id = "wp_clear_dist", type= "track", val = 2, min = 0, max = 50, step = 1, def = 5},
- {id = "pin_near_fade_dist", type= "track", val = 2, min = 0, max = 50, step = 1, def = 5},
- {id = "pin_far_fade_dist", type= "track", val = 2, min = 20, max = 500, step = 1, def = 100},
- {id = "pin_far_hide_dist", type= "track", val = 2, min = 1, max = 250, step = 1, def = 150},
- {id = "tip_on_icoset_change", type= "check", val = 1, def = true},
- {id = "pingsound", type= "check", val = 1, def = true},
- {id = "s_device_pda_1", type= "check", val = 1, def = true},
- {id = "s_device_pda_2", type= "check", val = 1, def = true},
- {id = "s_device_pda_3", type= "check", val = 1, def = true},
- {id = "s_device_pda_milspec", type= "check", val = 1, def = true},
- {id = "disable_mcmups", type= "check", val = 1, def = false},
- {id = "welcome_msg_shown", type= "check", val = 1, def = false},
- {id = "wipe_all", type= "check", val = 1, def = false},
- {id = "debuglogs", type= "check", val = 1, def = false},
- {id = "pawlink", type= "desc", text = "ui_mcm_paw_moddb_link"},
- {id = "milpda", type= "desc", text = "ui_mcm_paw_milpda_link"},
- {id = "modbin", type= "desc", text = "ui_mcm_paw_modded_binaries"},
- }
- if load_failed then
- table.insert(pawgen,2,{id = "load_header1", type = "desc", text = "st_paw_texture_load_error_mcmhead1", clr = {255,255,0,0}, ui_hook_functor = {catsy_paw_mcm.mcm_init_load_error_block}})
- table.insert(pawgen,3,{id = "load_header2", type = "desc", text = "st_paw_texture_load_error_mcmhead2", clr = {255,255,0,0}})
- table.insert(pawgen,4,load_error_text1)
- table.insert(pawgen,5,load_error_text2)
- table.insert(pawgen,6,{id = "fix_load_order", type= "image", link = "ui_paw_mcm_fix_mo2_load_order", size= {575,50}, ui_hook_functor = {catsy_paw_mcm.mcm_init_load_error_block}})
- table.insert(pawgen,7,{id = "disable_load_warning", type = "check", val = 1, def = false})
- table.insert(pawgen,8,divider)
- else
- table.insert(pawgen,2,{id = "pawgen_header", type = "image", link = "ui_paw_emptytex", size = {512,155},
- ui_hook_functor = {catsy_paw_mcm.mcm_init_header_text_block},
- })
-
- table.insert(pawgen,3,{id = "enabled", type = "check", val = 1, def = true})
- end
-
- op = { id = "pawsys", gr={
- -- GENERAL SETTINGS
- { id = "pawgen", sh=true, gr=pawgen},
-
- -- PIN SETTINGS (procedurally generated)
- { id = "pawpins", sh=true, gr=populate_set_menus()},
-
- -- AUTOTAG/SMART PIN SETTINGS
- { id = "pawret", sh=true, gr=populate_autotag_menus()},
-
- -- HUD WIDGET SETTINGS
- { id = "pawhud", sh=true, gr={
- {id = "widget_header", type= "slide", link = "ui_paw_menuslide_widget", size= {512,50}, borderless= true, spacing= 0,
- ui_hook_functor = {catsy_paw_mcm.mcm_init_widget_preview},
- },
- {id = "header", type= "desc", text = "ui_mcm_pawsys_pawhud_widgetinfo",
- ui_hook_functor = {catsy_paw_mcm.mcm_init_widget_preview},
- },
- {id = "widget_enable", type= "check", val = 1, def = true},
- {id = "hudsound", type= "check", val = 1, def = true},
- {id = "autohide", type= "track", val = 2, min = 0, max = 120, step = 1, def = 5},
- {id = "active_theme", type= "list", val = 0, def = "classicauto",
- on_selection_functor = {catsy_paw_mcm.mcm_on_value_select},
- content = {
- {"classicauto","theme_classicauto"},
- {"classic","theme_classic"},
- {"vertright","theme_vertright"},
- {"vertleft","theme_vertleft"},
- {"gamma_right","theme_gamma_right"},
- {"gamma_left","theme_gamma_left"},
- {"minimal_h","theme_minimal_h"},
- {"minimal_v","theme_minimal_v"},
- {"minicom","theme_minicom"},
- {"compact_noui","theme_compact_noui"},
- }
- },
-
- {id = "preview_aspect", type = "list", val = 0, def = aspect_ratio,
- on_selection_functor = {catsy_paw_mcm.mcm_on_value_select},
- content = {
- {"16_9","paw_aspect_16_9"},
- {"16_10","paw_aspect_16_10"},
- {"21_9","paw_aspect_21_9"},
- {"4_3","paw_aspect_4_3"},
- }
- },
-
- -- SCREEN POSITION PREVIEWER
- {id = "pos_preview", type= "image", link = "ui_paw_emptytex", size= {512,270},
- ui_hook_functor = {catsy_paw_mcm.init_mcm_pos_preview},
- },
-
- {id = "custompos", type = "check", val = 1, def = false,
- --ui_hook_functor = {catsy_paw_mcm.mcm_move_custom_pos_elements},
- on_selection_functor = {catsy_paw_mcm.mcm_on_value_select},
- },
- {id = "pos_x", type = "input", val = 2, min = 0, max = 1024, def = 491,
- --ui_hook_functor = {catsy_paw_mcm.mcm_move_custom_pos_elements},
- on_selection_functor = {catsy_paw_mcm.mcm_on_value_select},
- },
- {id = "pos_y", type = "input", val = 2, min = 0, max = 768, def = 670,
- --ui_hook_functor = {catsy_paw_mcm.mcm_move_custom_pos_elements},
- on_selection_functor = {catsy_paw_mcm.mcm_on_value_select},
- },
-
- divider,
-
- {id = "themedesc", type = "desc", text = "ui_mcm_themes_list"},
-
- {id = "themelist", type = "desc", text = "ui_mcm_themes_classicauto"},
- {id = "themelist", type = "desc", text = "ui_mcm_themes_classic"},
- {id = "themelist", type = "desc", text = "ui_mcm_themes_vertright"},
- {id = "themelist", type = "desc", text = "ui_mcm_themes_vertleft"},
- {id = "themelist", type = "desc", text = "ui_mcm_themes_gamma_left"},
- {id = "themelist", type = "desc", text = "ui_mcm_themes_gamma_right"},
- {id = "themelist", type = "desc", text = "ui_mcm_themes_minimal_h"},
- {id = "themelist", type = "desc", text = "ui_mcm_themes_minimal_v"},
- {id = "themelist", type = "desc", text = "ui_mcm_themes_minicom"},
- {id = "themelist", type = "desc", text = "ui_mcm_themes_compact_noui"},
- divider,
- },
- },
-
- -- KEYBIND SETTINGS
- { id = "pawbinds", sh=true, gr={
- {id = "header", type= "slide", link= "ui_paw_menuslide_controls", size= {512,50}, borderless= true, spacing= 20},
- {id = "featurehead", type = "desc", clr = {255,255,255,0}, text = "ui_mcm_paw_cartmode_head"},
- {id = "featuredesc", type = "desc", text = "ui_mcm_paw_cartmode_desc"},
-
- {id = "bind_cartmode", type = "key_bind", val = 2, def = DIK_keys.DIK_SLASH },
- {id = "modk_cartmode", type = ui_mcm.kb_mod_radio, val = 2, def = 0, hint = "mcm_kb_modifier",
- content = {
- {0,"mcm_kb_mod_none"},
- {1,"mcm_kb_mod_shift"},
- {2,"mcm_kb_mod_ctrl"},
- {3,"mcm_kb_mod_alt"}
- }},
- {id = "cartmode_toggle", type = "check", val = 1, def = false},
- {id = "cartmode_unfade", type = "check", val = 1, def = true},
- {id = "cart_shows_smarts", type = "check", val = 1, def = true},
-
- divider,
-
- {id = "featurehead", type = "desc", clr = {255,255,255,0}, text = "ui_mcm_paw_crosshair_target_head"},
- {id = "featuredesc", type = "desc", text = "ui_mcm_paw_crosshair_target_desc"},
-
- {id = "bind_wp_target_obj", type = "key_bind", val = 2, def = DIK_keys.DIK_SEMICOLON },
- {id = "modk_wp_target_obj", type = ui_mcm.kb_mod_radio, val = 2, def = 3, hint = "mcm_kb_modifier",
- content = {
- {0,"mcm_kb_mod_none"},
- {1,"mcm_kb_mod_shift"},
- {2,"mcm_kb_mod_ctrl"},
- {3,"mcm_kb_mod_alt"}
- }},
-
- {id = "bind_pin_target_obj", type = "key_bind", val = 2, def = DIK_keys.DIK_APOSTROPHE },
- {id = "modk_pin_target_obj", type = ui_mcm.kb_mod_radio, val = 2, def = 3, hint = "mcm_kb_modifier",
- content = {
- {0,"mcm_kb_mod_none"},
- {1,"mcm_kb_mod_shift"},
- {2,"mcm_kb_mod_ctrl"},
- {3,"mcm_kb_mod_alt"}
- }},
-
- divider,
-
- {id = "featurehead", type = "desc", clr = {255,255,255,0}, text = "ui_mcm_paw_generalbinds_head"},
-
- {id = "bind_wptoggle", type = "key_bind", val = 2, def = DIK_keys.DIK_SEMICOLON },
- {id = "modk_wptoggle", type = ui_mcm.kb_mod_radio, val = 2, def = 0, hint = "mcm_kb_modifier",
- content = {
- {0,"mcm_kb_mod_none"},
- {1,"mcm_kb_mod_shift"},
- {2,"mcm_kb_mod_ctrl"},
- {3,"mcm_kb_mod_alt"}
- }},
- {id = "bind_quickpin", type = "key_bind", val = 2, def = DIK_keys.DIK_APOSTROPHE },
- {id = "modk_quickpin", type = ui_mcm.kb_mod_radio, val = 2, def = 0, hint = "mcm_kb_modifier",
- content = {
- {0,"mcm_kb_mod_none"},
- {1,"mcm_kb_mod_shift"},
- {2,"mcm_kb_mod_ctrl"},
- {3,"mcm_kb_mod_alt"}
- }},
-
- divider,
-
- {id = "bind_set_next", type = "key_bind", val = 2, def = 52 },
- {id = "modk_set_next", type = ui_mcm.kb_mod_radio, val = 2, def = 3, hint = "mcm_kb_modifier",
- content = {
- {0,"mcm_kb_mod_none"},
- {1,"mcm_kb_mod_shift"},
- {2,"mcm_kb_mod_ctrl"},
- {3,"mcm_kb_mod_alt"}
- }},
-
- {id = "bind_set_prev", type = "key_bind", val = 2, def = 51 },
- {id = "modk_set_prev", type = ui_mcm.kb_mod_radio, val = 2, def = 3, hint = "mcm_kb_modifier",
- content = {
- {0,"mcm_kb_mod_none"},
- {1,"mcm_kb_mod_shift"},
- {2,"mcm_kb_mod_ctrl"},
- {3,"mcm_kb_mod_alt"}
- }},
- {id = "bind_ico_next", type = "key_bind", val = 2, def = 52 },
- {id = "modk_ico_next", type = ui_mcm.kb_mod_radio, val = 2, def = 0, hint = "mcm_kb_modifier",
- content = {
- {0,"mcm_kb_mod_none"},
- {1,"mcm_kb_mod_shift"},
- {2,"mcm_kb_mod_ctrl"},
- {3,"mcm_kb_mod_alt"}
- }},
- {id = "bind_ico_prev", type = "key_bind", val = 2, def = 51 },
- {id = "modk_ico_prev", type = ui_mcm.kb_mod_radio, val = 2, def = 0, hint = "mcm_kb_modifier",
- content = {
- {0,"mcm_kb_mod_none"},
- {1,"mcm_kb_mod_shift"},
- {2,"mcm_kb_mod_ctrl"},
- {3,"mcm_kb_mod_alt"}
- }},
-
- divider,
-
- {id = "featurehead", type = "desc", clr = {255,255,255,0}, text = "ui_mcm_paw_mousewheel_head"},
-
- {id = "mwheel_enabled", type = "check", val = 1, def = true},
- {id = "mwheel_notify", type = "check", val = 1, def = true},
- {id = "bind_set_scroll", type = "key_bind", val = 2, def = DIK_keys.DIK_Z},
- {id = "modk_set_scroll", type = ui_mcm.kb_mod_radio, val = 2, def = 2, hint = "mcm_kb_modifier",
- content = {
- {0,"mcm_kb_mod_none"},
- {1,"mcm_kb_mod_shift"},
- {2,"mcm_kb_mod_ctrl"},
- {3,"mcm_kb_mod_alt"}
- }},
- {id = "bind_ico_scroll", type = "key_bind", val = 2, def = DIK_keys.DIK_Z },
- {id = "modk_ico_scroll", type = ui_mcm.kb_mod_radio, val = 2, def = 3, hint = "mcm_kb_modifier",
- content = {
- {0,"mcm_kb_mod_none"},
- {1,"mcm_kb_mod_shift"},
- {2,"mcm_kb_mod_ctrl"},
- {3,"mcm_kb_mod_alt"}
- }},
-
- divider,
- },
- },
--- CONTEXT MENU SETTINGS
- { id = "pawmenu", sh=true, gr={
- -- Virtualize in ltx like the others at some point
- {id = "header", type= "slide", link= "ui_paw_menuslide_menus", size= {512,50}, borderless= true, spacing= 20},
- {id = "headertxt", type = "desc", text = "ui_mcm_pawsys_pawmenu_headertxt"},
-
- {id = "wp_set", type = "list", val = 2, def = 4,
- content = {
- {4,"pawsys_cmenu_all"},
- {1,"pawsys_cmenu_norm"},
- {2,"pawsys_cmenu_cart"},
- {0,"pawsys_cmenu_off"},
- }
- },
- {id = "wp_mov", type = "list", val = 2, def = 4,
- content = {
- {4,"pawsys_cmenu_all"},
- {1,"pawsys_cmenu_norm"},
- {2,"pawsys_cmenu_cart"},
- {0,"pawsys_cmenu_off"},
- }
- },
-
- {id = "waypoint_rename", type = "list", val = 2, def = 2,
- content = {
- {4,"pawsys_cmenu_all"},
- {1,"pawsys_cmenu_norm"},
- {2,"pawsys_cmenu_cart"},
- {0,"pawsys_cmenu_off"},
- }
- },
-
- {id = "waypoint_redesc", type = "list", val = 2, def = 2,
- content = {
- {4,"pawsys_cmenu_all"},
- {1,"pawsys_cmenu_norm"},
- {2,"pawsys_cmenu_cart"},
- {0,"pawsys_cmenu_off"},
- }
- },
-
- {id = "wp_del", type = "list", val = 2, def = 4,
- content = {
- {4,"pawsys_cmenu_all"},
- {1,"pawsys_cmenu_norm"},
- {2,"pawsys_cmenu_cart"},
- {0,"pawsys_cmenu_off"},
- }
- },
-
- {id = "pn_add", type = "list", val = 2, def = 4,
- content = {
- {4,"pawsys_cmenu_all"},
- {1,"pawsys_cmenu_norm"},
- {2,"pawsys_cmenu_cart"},
- {0,"pawsys_cmenu_off"},
- }
- },
-
- {id = "pn_del", type = "list", val = 2, def = 4,
- content = {
- {4,"pawsys_cmenu_all"},
- {1,"pawsys_cmenu_norm"},
- {2,"pawsys_cmenu_cart"},
- {0,"pawsys_cmenu_off"},
- }
- },
-
- {id = "pn_ren", type = "list", val = 2, def = 4,
- content = {
- {4,"pawsys_cmenu_all"},
- {1,"pawsys_cmenu_norm"},
- {2,"pawsys_cmenu_cart"},
- {0,"pawsys_cmenu_off"},
- }
- },
-
- {id = "show_all_pins", type = "list", val = 2, def = 2,
- content = {
- {4,"pawsys_cmenu_all"},
- {1,"pawsys_cmenu_norm"},
- {2,"pawsys_cmenu_cart"},
- {0,"pawsys_cmenu_off"},
- }
- },
-
- {id = "hide_all_pins", type = "list", val = 2, def = 2,
- content = {
- {4,"pawsys_cmenu_all"},
- {1,"pawsys_cmenu_norm"},
- {2,"pawsys_cmenu_cart"},
- {0,"pawsys_cmenu_off"},
- }
-
- },
- {id = "lock_pin", type = "list", val = 2, def = 2,
- content = {
- {4,"pawsys_cmenu_all"},
- {1,"pawsys_cmenu_norm"},
- {2,"pawsys_cmenu_cart"},
- {0,"pawsys_cmenu_off"},
- }
- },
-
- {id = "unlock_pin", type = "list", val = 2, def = 4,
- content = {
- {4,"pawsys_cmenu_all"},
- {1,"pawsys_cmenu_norm"},
- {2,"pawsys_cmenu_cart"},
- {0,"pawsys_cmenu_off"},
- }
- },
-
- {id = "hud_vis_on", type = "list", val = 2, def = 4,
- content = {
- {4,"pawsys_cmenu_all"},
- {1,"pawsys_cmenu_norm"},
- {2,"pawsys_cmenu_cart"},
- {0,"pawsys_cmenu_off"},
- }
- },
-
- {id = "hud_vis_off", type = "list", val = 2, def = 4,
- content = {
- {4,"pawsys_cmenu_all"},
- {1,"pawsys_cmenu_norm"},
- {2,"pawsys_cmenu_cart"},
- {0,"pawsys_cmenu_off"},
- }
- },
-
-
- {id = "pn_clr", type = "list", val = 2, def = 0,
- content = {
- {4,"pawsys_cmenu_all"},
- {1,"pawsys_cmenu_norm"},
- {2,"pawsys_cmenu_cart"},
- {0,"pawsys_cmenu_off"},
- }
- },
-
- {id = "mping", type = "list", val = 2, def = 2,
- content = {
- {4,"pawsys_cmenu_all"},
- {1,"pawsys_cmenu_norm"},
- {2,"pawsys_cmenu_cart"},
- {0,"pawsys_cmenu_off"},
- }
- },
- },
- },
- }
- }
-
- return op
-end
-
---[[=====================================================================
- Everything after this point is fuckin voodoo magic, man
-
- Dependent on and called only by the custom MCM functors added in:
- zzzzz_monkey_paw_ui_mcm.script
--- ====================================================================]]
-
-icoset = {}
-icoset._changed = {}
-
-local xml = CScriptXmlInit()
-local xmlroot = "paw_mcm_pos_preview"
-local box_pname, ui_img, theme_box, theme_preview, theme_curr_i, theme_next_i, theme_prev_i
-
---[[
-function get_cached_pin_for_set(setname,opid,default)
- if not setname then return end
- opid = opid or "pawsys/pawpins/poi_icon_" .. setname
- local pcur = icoset._changed[opid]
- if pcur == nil then
- pcur = axr_main.config:r_value("mcm", opid, {val=0})
- if pcur == nil then
- local setdata = icon_sets[setname]
- pcur = ui_mcm.UIMCM:GetDefaultValue(path,icoset_id,{def=default or (setdata and setdata.default or "redpush32"),val=0})
- end
- end
- return pcur
-end
---]]
-
-function get_cached_pin_for_set(setname,opid)
- if not setname then return end
- opid = opid or "pawsys/pawpins/poi_icon_" .. setname
- local pcur = icoset._changed[opid]
- if pcur == nil then
- pcur = axr_main.config:r_value("mcm", opid, {val=0})
- if pcur == nil then
- local setdata = icon_sets[setname]
- pcur = ui_mcm.UIMCM:GetDefaultValue(path,icoset_id,{def=(setdata and setdata.default or "redpush32"),val=0})
- end
- end
- return pcur
-end
-
-
-function load_icoset_state()
- dl("Loading icon and set states")
- local path = "pawsys/pawpins"
- icoset.set_curr = axr_main.config:r_value("mcm", path.."/pin_icon_group", {val=0}) or "pins"
- icoset.pin_curr = axr_main.config:r_value("mcm", path.."/poi_icon_"..icoset.set_curr, {val=0})
- if not icoset.pin_curr then
- icoset.setdata = icon_sets[icoset.set_curr]
- local setdata = icoset.setdata
- local icoset_id = "poi_icon_"..icoset.set_curr
- icoset.pin_curr = ui_mcm.UIMCM:GetDefaultValue(path,icoset_id,{def=(setdata and setdata.default or "redpush32"),val=0})
- end
- icoset.ico_curr = icons[icoset.pin_curr]
- icoset.tex_curr = "ui_icons_paw_pin_redpush32"
- local tdata = paw and paw.texture_data
- if tdata and not load_failed then
- icoset.tex_curr = tdata and tdata[icoset.ico_curr] and tdata[icoset.ico_curr].t
- end
- dl("Icoset state: curr set %s | curr pin %s",icoset.set_curr,icoset.pin_curr)
-end
-
-
-local function asp_scale(x,y,aspect)
- if not x and y then return 0,0 end
- local ox,oy=x,y
- local asp = aspect or pws.curr_aspect
- local rat_x = aspects[asp].scale_x
- local rat_y = aspects[asp].scale_y
- x = x * rat_x * unsquish_ratio
- y = y * rat_y
- vl("%s, %s scaled to %s, %s for aspect %s",ox,oy,x,y,pws.curr_aspect)
- return x,y
-end
-
-pws.eff_x = function()
- x = (pws.use_custom and pws.cust_x) or pws.curr_theme.pos.x
- vl("eff_x: %s | custom %s",x,pws.use_custom)
- return x
- end
-pws.eff_y = function()
- y = (pws.use_custom and pws.cust_y) or pws.curr_theme.pos.y
- vl("eff_y: %s | custom %s",y,pws.use_custom)
- return y
- end
-pws.adj_x = function()
- effx = pws.eff_x()
- x, _ = asp_scale(effx, 1)
- vl("adj_x: %s -> %s",effx,x)
- return x
- end
-pws.adj_y = function()
- effy = pws.eff_y()
- _, y = asp_scale(1, effy)
- vl("adj_y: %s -> %s",effy,y)
- return y
- end
-
-
-function populate_mcm_set_ind(path,opt,opid)
- local opid = opid or ui_mcm.cc(path,opt)
- local wnd = icoset and icoset[opid]
- local tdata = paw and paw.texture_data
- if not wnd and tdata then return end
- local pin = (icoset and icoset._changed and icoset._changed[opid]) or axr_main.config:r_value("mcm", opid, {val=0})
- local icon = icons[pin]
- local tex = tdata and tdata[icon] and tdata[icon].t
- dl("Updating texture for %s to %s",opid,tex)
- wnd:InitTexture(tex or "ui_icons_paw_pin_redpush32")
-end
-
-
-function init_mcm_set_ind(anchor, handlers, opts, flags)
- local opt = opts and opts.id
- if not opt then return end
- local path = flags.path
- local opid = ui_mcm.cc(path,opt)
- dl("Initializing icon indicator for MCM menu item %s",opid)
- if handlers and (type(handlers) == "table") then
- -- This is a newer version of the functor with a different container position
- anchor = handlers.ctrl
- end
- local opt_box = xml:InitStatic("paw_mcm_indicator:mini_left",anchor)
- opt_box:InitTexture("ui_paw_mapsquareframe")
- icoset[opid] = xml:InitStatic("paw_mcm_indicator:mini_left:icon",opt_box)
- populate_mcm_set_ind(path,opt,opid)
-end
-
-
-function init_mcm_header_ind(anchor, handlers, opts, flags)
- vl("init_mcm_header_ind called")
- local path = "pawsys/pawpins"
- local icon_text_head1 = ts("ui_mcm_paw_current_active_pin")
- local icon_text_head2 = ts("ui_mcm_lst_"..icoset.ico_curr)
- local icon_text_head3 = ts("ui_mcm_paw_pinmenu_header")
- icoset.txt_curr = icon_text_head2
- vl("Current set: %s (%s) | icon %s | texture %s",icoset.txt_curr,icoset.set_curr,icoset.ico_curr,icoset.tex_curr)
-
- local xmlroot = "paw_mcm_indicator"
-
- xml:ParseFile("paw_hud_indicator.xml")
- box_wnd = xml:InitStatic(xmlroot,anchor)
- box_wnd:SetWndSize(vector2():set(563,40))
- box_img = xml:InitStatic(xmlroot..":curr",box_wnd)
- ui_img = xml:InitStatic(xmlroot..":curr:icon",box_img)
- box_img:InitTexture("ui_paw_mapsquarebg")
- ui_img:InitTexture(icoset.tex_curr or "ui_icons_paw_pin_redpush32")
- box_head = xml:InitTextWnd(xmlroot..":head",box_wnd)
- box_pname = xml:InitTextWnd(xmlroot..":pname",box_wnd)
- box_desc = xml:InitTextWnd(xmlroot..":desc",box_wnd)
- box_head:SetText(icon_text_head1)
- box_pname:SetText(icon_text_head2)
- box_desc:SetText(icon_text_head3)
-end
-
-
-local function get_theme_data(mcm_theme_opt)
- --local thm = string.sub(mcm_theme_opt,7)
- local theme = paw and paw.hud_themes and paw.hud_themes[mcm_theme_opt]
- --printf("get_theme_data(%s) : %s",mcm_theme_opt,theme and theme.name)
- return theme
-end
-
-
-
-local res = {}
-local box = {}
-local wid = {}
-
-
-local function reset_widget_pos()
- if not preview_started then return end
- local asp = aspect or pws.curr_aspect
- local x = pws.adj_x()
- local y = pws.adj_y()
- vl("PosPreviewer: resetting %s widget pos to %s, %s",asp,x,y)
- pws.curr_x = x
- pws.curr_y = y
- wid[asp]:SetWndPos(vector2():set(x,y))
- --wid[asp]:SetWndPos(vector2():set(x * unsquish_ratio,y))
-end
-
-
-local function reset_widget_size(element, theme, aspect, ok_flag, scale, unsquish)
- if not ok_flag then return end
- local asp = aspect or "16_9"
- local w = theme and theme.w or element:GetWidth()
- local h = theme and theme.h or element:GetHeight()
- local rs = 16/9/5
- local ww = w * (scale or 1) * (unsquish or unsquish_ratio)
- local wh = h * (scale or 1)
- vl("Resetting widget size for %s to %sx%s",theme and theme.name,ww,wh)
- element:SetWndSize(vector2():set(ww,wh))
-end
-
-
-function reset_theme(theme, aspect)
- local theme = theme or pws.curr_theme
- local asp = aspect or pws.curr_aspect
- --printf("reset_theme(%s, %s)",theme and theme.name,aspect)
- local a = aspects[asp]
- box[asp]:InitTexture("ui_paw_mcmpre_"..asp)
- box[asp]:SetWndSize(vector2():set(a.x * unsquish_ratio,a.y))
- local tex = theme.pre_tex or theme.tex
- wid[asp]:InitTexture(tex)
- --printf("Initializing texture %s (%sx%s) in preview_%s",tex,a.x,a.y,asp)
- reset_widget_size(wid[asp], pws.curr_theme, pws.curr_aspect, preview_started, 16/9/5)
- reset_widget_pos()
- res[asp]:SetText(ts("ui_mcm_paw_resolutions_"..(pws.curr_aspect or "")))
- res[asp]:Show(true)
- box[asp]:Show(true)
- wid[asp]:Show(true)
-end
-
-
-function reset_aspect(aspect)
- vl("PosPreviewer: switching aspect ratio to %s",aspect)
- for k,v in pairs(aspects) do
- res[k]:Show(false)
- box[k]:Show(false)
- wid[k]:Show(false)
- end
- pws.curr_aspect = aspect
- res[pws.curr_aspect]:Show(false)
- box[pws.curr_aspect]:Show(false)
- wid[pws.curr_aspect]:Show(false)
- reset_theme(pws.curr_theme,pws.curr_aspect)
-end
-
-
-function get_theme_or_override_pos(theme)
- local pos = theme and theme.pos and theme.pos
-
- if custom then
- pos.x = ui_mcm.get("pawsys/pawhud/pos_x")
- pos.y = ui_mcm.get("pawsys/pawhud/pos_y")
- end
- return pos
-end
-
-
-function init_mcm_pos_preview(anchor, handlers, opts, flags)
- vl("init_mcm_pos_preview | unsquish %s",unsquish_ratio)
- pws.themename = ui_mcm.get("pawsys/pawhud/active_theme") or "classicauto"
- pws.curr_theme = get_theme_data(pws.themename)
- pws.curr_aspect = ui_mcm.get("pawsys/pawhud/preview_aspect") or "16_9"
- pws.use_custom = ui_mcm.get("pawsys/pawhud/custompos") or false
- pws.cust_x = ui_mcm.get("pawsys/pawhud/pos_x") or 491
- pws.cust_y = ui_mcm.get("pawsys/pawhud/pos_y") or 690
-
- xml:ParseFile("paw_hud_indicator.xml")
- local theme = pws.curr_theme
- box.wnd = xml:InitStatic(xmlroot,anchor)
- box.wnd:SetWndSize(vector2():set(640 * unsquish_ratio,270))
- box.wnd:SetWndPos(vector2():set(180,0))
- box.txt = xml:InitTextWnd(xmlroot,anchor)
- box.txt:SetWndSize(vector2():set(170,50))
- box.txt:SetWndPos(vector2():set(15,20))
- box.txt:SetText(ts("ui_mcm_paw_resolutions").."\n")
-
-
- for k,v in pairs (aspects) do
- local asp = k
- box[asp] = xml:InitStatic(xmlroot..":preview_"..asp,box.wnd)
- wid[asp] = xml:InitStatic(theme.node,box[asp])
- res[asp] = xml:InitTextWnd(xmlroot,anchor)
- res[asp]:SetWndSize(vector2():set(170,200))
- res[asp]:SetWndPos(vector2():set(15,70))
- box[asp]:Show(false)
- wid[asp]:Show(false)
-
- vl("Finished generating box and wid for aspect ratio %s",asp)
- end
-
- box[pws.curr_aspect]:Show(true)
- wid[pws.curr_aspect]:Show(true)
-
- pws.use_custom = ui_mcm.get("pawsys/pawhud/custompos")
- pws.cust_x = ui_mcm.get("pawsys/pawhud/pos_x")
- pws.cust_y = ui_mcm.get("pawsys/pawhud/pos_y")
-
- dl("Finished init for pos preview module | theme %s | aspect %s",pws.themename,pws.curr_aspect)
- preview_started = true
- reset_theme()
-end
-
-
-
-function get_current_aspect_ratio()
- unsquish_ratio = (device().height / device().width) / (768 / 1024)
- local unratio = round_idp(unsquish_ratio,4)
-
- if unratio == 1 then
- asprat = "4_3" -- please upgrade
- elseif unratio > 0.8 then
- asprat = "16_10" -- some monitors and smartphones
- elseif unratio < 0.7 then
- asprat = "21_9" -- some kind of ultrawide
- else
- asprat = "16_9" -- assume HDTV standard, 1080p
- end
- return asprat
-end
-
-
-function init_theme_sim(theme)
- if load_failed then return end
- dl("init_theme_sim: attempting to initialize %s theme",theme and theme.name)
- xml:ParseFile("paw_hud_indicator.xml")
- if theme_preview then
- if theme_preview.wnd then theme_preview.wnd:Show(false) end
- if theme_preview.empty then theme_preview.empty:Show(false) end
- end
- theme_preview = {}
- local set_curr = icoset.set_curr or paw.active_set() or "faves"
- setdata = paw.icon_sets[set_curr]
-
- local ico_curr = icoset.ico_curr or icoset.setdata and icoset.setdata.active_icon
- local curr_ico_i = setdata.ri[paw.root_patch_name(ico_curr)]
-
- local next_i = paw.roll(curr_ico_i + 1, 1, #setdata.ii)
- local prev_i = paw.roll(curr_ico_i - 1, 1, #setdata.ii)
- local ico_next = setdata.ii[next_i]
- local ico_prev = setdata.ii[prev_i]
- local tex_c = paw.texture_data[ico_curr].t
- local tex_p = paw.texture_data[ico_prev].t
- local tex_n = paw.texture_data[ico_next].t
- --local tex_c = paw.texture_data["paw_pin_redround32"].t
- --local tex_p = paw.texture_data["paw_pin_redmodern32"].t
- --local tex_n = paw.texture_data["paw_pin_redpush32"].t
- local tex = theme.tex
- local offset_x = 25 -- 10 + ((1 - (theme.w / 150)) * 60)
- local offset_y = 10 + ((1 - (theme.h / 160)) * 80)
- local wnd
-
- if tex then
- theme_preview.wnd = xml:InitStatic(theme.node,theme_box)
- theme_preview.wnd:InitTexture(theme.tex)
- paw.unsquish_aspect(theme_preview.wnd)
- wnd = theme_preview.wnd
- else
- theme_preview.empty = xml:InitStatic(theme.node,theme_box)
- wnd = theme_preview.empty
- end
- reset_widget_size(wnd, theme, aspect, true, 1, 1)
- wnd:SetWndPos(vector2():set(offset_x,offset_y))
- wnd:Show(true)
-
- --printf("Showing theme %s | w %s h %s | offsets x %s y %s | tex: %s",theme.name,theme.w,theme.h,offset_x,offset_y)
- theme_preview.curr_i = xml:InitStatic(theme.node..":curr",wnd)
- if tex_c then theme_preview.curr_i:InitTexture(tex_c) end
-
- if theme.style ~= "compact" then
- theme_preview.prev_i = xml:InitStatic(theme.node..":prev",wnd)
- tex = tex_p
- if tex then theme_preview.prev_i:InitTexture(tex) end
-
- theme_preview.next_i = xml:InitStatic(theme.node..":next",wnd)
- tex = tex_n
- if tex then theme_preview.next_i:InitTexture(tex) end
-
- theme_preview.prev_i:SetTextureColor(paw.colors.dimmed)
- theme_preview.next_i:SetTextureColor(paw.colors.dimmed)
- theme_preview.box_head = xml:InitStatic(theme.node..":head",wnd)
- theme_preview.box_text = xml:InitTextWnd(theme.node..":head",theme_preview.box_head)
- end
- if theme.style == "full" then
- theme_preview.box_text:SetText(ts("ui_mcm_lst_pawsys_pg_"..icoset.set_curr))
- theme_preview.box_head2 = xml:InitStatic(theme.node..":head2",wnd)
- theme_preview.box_text2 = xml:InitTextWnd(theme.node..":head2",theme_preview.box_head2)
- theme_preview.box_text2:SetText(ts("ui_mcm_lst_"..icoset.ico_curr))
- elseif theme.style == "minimal" then
- theme_preview.box_text:SetText(ts("ui_mcm_lst_"..icoset.ico_curr))
- end
-end
-
-
-function move_widget_slide(anchor, handlers, opts, flags)
- --printf(" Moving widget slide header")
- _ = handlers and handlers.pic and handlers.pic:SetWndPos(vector2():set(16,16))
-end
-
-function mcm_init_widget_preview(anchor, handlers, opts, flags)
- --printf("mcm_init_widget_preview called with id %s",opts and opts.id)
- if opts and (opts.id == "widget_header") then
- --printf(" mcm_init_widget_preview handing off to move_widget_slide")
- move_widget_slide(anchor, handlers, opts, flags)
- return
- end
-
- local desc = handlers and handlers.desc
- if desc then
- desc:SetWndSize(vector2():set(300, desc:GetHeight()))
- end
- xml:ParseFile("paw_hud_indicator.xml")
- theme_box = xml:InitStatic(xmlroot,anchor)
- theme_box:SetWndPos(vector2():set(330,-70))
- theme_box:SetWndSize(vector2():set(200,200))
- theme_box:InitTexture("ui_paw_mcm_loadframe_bg")
-
- theme_frame = xml:InitStatic(xmlroot,theme_box)
- theme_frame:SetWndPos(vector2():set(0,0))
- theme_frame:SetWndSize(vector2():set(200,200))
- theme_frame:InitTexture("ui_paw_mcm_loadframe")
-
- local curr_theme = ui_mcm.get("pawsys/pawhud/active_theme") or "classicauto"
- local theme = get_theme_data(curr_theme)
- init_theme_sim(theme)
-end
-
-
-function mcm_init_header_text_block(anchor, handlers, opts, flags)
- xml:ParseFile("paw_hud_indicator.xml")
- local head = xml:InitStatic(xmlroot,anchor)
- local tbg1 = xml:InitStatic(xmlroot,anchor)
- local tbox1 = xml:InitTextWnd(xmlroot,tbg1)
-
- if (opts and opts.id) == "pawgen_header" then
- tbg1:SetWndSize(vector2():set(usr(640),155))
- tbg1:SetWndPos(vector2():set(10,0))
- tbg1:InitTexture("ui_paw_mcm_messagebox_transbg")
-
- local text = psk(ts("ui_mcm_pawsys_pawgen_headertxt"),text_colors)
- tbox1:SetWndSize(vector2():set(usr(620),145))
- tbox1:SetText(text)
- tbox1:SetWndPos(vector2():set(10,12))
-
- elseif (opts and opts.id) == "reticle_header" then
- local tbox2 = xml:InitTextWnd(xmlroot,tbg1)
- local ibox = xml:InitStatic(xmlroot,anchor)
- anchor:SetWndSize(vector2():set(usr(640),175))
-
- head:SetWndSize(vector2():set(usr(512),50))
- head:SetWndPos(vector2():set(15,5))
- head:InitTexture("ui_paw_mcm_reticle_header")
-
- tbg1:SetWndSize(vector2():set(usr(430),110))
- tbg1:SetWndPos(vector2():set(10,60))
- tbg1:InitTexture("ui_paw_mcm_messagebox_transbg")
-
- tbox1:SetWndSize(vector2():set(usr(420),100))
- tbox1:SetWndPos(vector2():set(13,10))
- tbox1:SetText(ts("ui_mcm_pawsys_pawhud_reticle_info1"))
- --[[
- line:InitTexture("ui_inGame2_opt_slider_bar_back")
- line:SetWndSize(vector2():set(usr(410),16))
- line:SetWndPos(vector2():set(10,120))
- --]]
- tbox2:SetWndSize(vector2():set(usr(420),50))
- tbox2:SetText(ts("ui_mcm_pawsys_pawhud_reticle_info2"))
- tbox2:SetWndPos(vector2():set(13,70))
-
- ibox:SetWndSize(vector2():set(usr(280),280))
- ibox:SetWndPos(vector2():set(335,-10))
- ibox:InitTexture("ui_paw_mcm_reticlesquare")
-
- elseif (opts and opts.id) == "autotag_header" then
- tbg1:SetWndSize(vector2():set(usr(300),102))
- tbg1:SetWndPos(vector2():set(323,32))
- tbg1:InitTexture("ui_paw_mcm_messagebox_transbg")
-
- line = xml:InitStatic(xmlroot,anchor)
- line:InitTexture("ui_inGame2_opt_slider_bar_back")
- line:SetWndSize(vector2():set(563,16))
- line:SetWndPos(vector2():set(5,0))
-
- head:InitTexture("ui_paw_mcm_autotag_header")
- head:SetWndSize(vector2():set(usr(512),50))
- head:SetWndPos(vector2():set(15,15))
-
- tbox1:SetWndSize(vector2():set(usr(285),95))
- --tbox1:InitTexture("ui_inGame2_message_box")
- tbox1:SetText(ts("ui_mcm_pawsys_pawhud_autotag_info"))
- tbox1:SetWndPos(vector2():set(10,12))
- --tbox1:TextControl():SetTextColor(GetARGB(255,250,218,294))
- end
-end
-
-
-function mcm_init_load_error_block(anchor, handlers, opts, flags)
- local id = opts and opts.id
- if id == "fix_load_order" then
- xml:ParseFile("paw_hud_indicator.xml")
- local pic = handlers and handlers.pic
- if not pic then return end
- pic:InitTexture("ui_paw_emptytex")
- local wnd = xml:InitStatic(xmlroot,anchor)
- wnd:InitTexture("ui_paw_mcm_fix_mo2_load_order")
- wnd:SetWndSize(vector2():set(575*unsquish_ratio,50))
- elseif id == "load_header1" then
- local desc = handlers and handlers.desc
- if not desc then return end
- desc:SetFont(GetFontGraffiti22Russian())
- end
-end
-
-
-function mcm_on_value_select(path,opt,value,v)
- if load_failed then return end
- local opid = ui_mcm.cc(path,opt)
- --printf("Callback received: MCM value select for %s: %s",opid,value)
- if path == "pawsys/pawpins" then
- local icon_change = false
- icoset._changed[opid] = value
- local icoset_id = "poi_icon_"..icoset.set_curr
- if opt == "pin_icon_group" then
- icon_change = true
- icoset.set_curr = value
- if icoset.set_curr == nil then
- icoset.set_curr = ui_mcm.UIMCM:GetDefaultValue(path,"pin_icon_group",{def="pins",val=0})
- end
- icoset_id = "poi_icon_"..icoset.set_curr
- end
-
- icoset.pin_curr = get_cached_pin_for_set(icoset.set_curr)
- icoset.ico_curr = icons[icoset.pin_curr]
- icoset.tex_curr = "ui_icons_paw_pin_redpush32"
- local tdata = paw and paw.texture_data
- if tdata then
- icoset.tex_curr = tdata and tdata[icoset.ico_curr] and tdata[icoset.ico_curr].t
- if icoset[opid] then
- populate_mcm_set_ind(path,opt,opid)
- end
- end
- if icoset.tex_curr then
- ui_img:InitTexture(icoset.tex_curr)
- end
- box_pname:SetText(ts("ui_mcm_lst_"..icoset.ico_curr))
-
- vl("New current set: %s | icon %s | texture %s",icoset.set_curr,icoset.ico_curr,icoset.tex_curr)
- elseif path == "pawsys/pawret" then
- dl("MCM value change for %s/%s = %s",path,opt,value)
- icoset._changed[opid] = value
- --[[
- local pin = get_cached_pin_for_set(icoset.set_curr,opid,paw.smart_pins[opt].pin)
- local ico = icons[pin]
- local tex = "ui_icons_paw_pin_redpush32"
- local tdata = paw and paw.texture_data
- --]]
- --if tdata then
- tex = tdata and tdata[icoset.ico_curr] and tdata[icoset.ico_curr].t
- if icoset[opid] then
- dl("Updating texture for list item %s",opid)
- populate_mcm_set_ind(path,opt,opid)
- end
- --end
- elseif path == "pawsys/pawhud" then
- dl("MCM value change for %s/%s = %s | curr_x %s curr_y %s | pws.themename %s | pws.curr_aspect %s",path,opt,value,pws.curr_x,pws.curr_y,pws.themename,pws.curr_aspect)
- if opt == "active_theme" then
- local theme = get_theme_data(value)
- if theme then
- pws.themename = value
- pws.curr_theme = get_theme_data(value)
- reset_theme(pws.curr_theme,pws.curr_aspect)
- if theme_preview and theme then
- vl("Updating theme preview to %s",theme and theme.name)
- init_theme_sim(theme)
- end
- end
- elseif opt == "preview_aspect" then
- if aspects[value] then
- reset_aspect(value)
- end
- elseif opt == "custompos" then
- pws.use_custom = value
- reset_widget_pos()
- elseif pws.use_custom then
- if (opt == "pos_x") then
- pws.cust_x = value
- elseif (opt == "pos_y") then
- pws.cust_y = value
- end
- reset_widget_pos()
- end
- end
-end
-
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/scripts/modxml_map_spots_paw.script b/mods/Personal Adjustable Waypoint_backup/gamedata/scripts/modxml_map_spots_paw.script
deleted file mode 100644
index 1b9d8482..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/scripts/modxml_map_spots_paw.script
+++ /dev/null
@@ -1,27 +0,0 @@
--- ======================================================================
---[[ Personal Adjustable Waypoint
--- ======================================================================
- Mapspot DXML update script
- Author: Catspaw (CatspawMods @ ModDB)
- Source: https://www.moddb.com/mods/stalker-anomaly/addons/personal-adjustable-waypoint-for-anomaly-151-152-and-gamma
-
- Modifying the contents of this file will only result in sadness.
--- ===================================================================--]]
-
-function on_xml_read()
- RegisterScriptCallback("on_xml_read",
- function(xml_file_name, xml_obj)
- if (xml_file_name == [[ui\map_spots.xml]]) or
- (xml_file_name == [[ui\map_spots_16.xml]]) or
- (xml_file_name == [[ui\map_spots_21.xml]]) then
- printf("DXML is patching mapspots for PAW in %s",xml_file_name)
-
- local paw_mapspots_include =
-[[
-#include "ui\map_spots_paw.xml"
-]]
- xml_obj:insertFromXMLString(paw_mapspots_include)
- end
- end
- )
-end
\ No newline at end of file
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/scripts/tasks_placeable_waypoints.script b/mods/Personal Adjustable Waypoint_backup/gamedata/scripts/tasks_placeable_waypoints.script
deleted file mode 100644
index 3767c6d2..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/scripts/tasks_placeable_waypoints.script
+++ /dev/null
@@ -1,3847 +0,0 @@
--- ======================================================================
---[[ Personal Adjustable Waypoint &
- Pins Recording Intel, Notes, or Terrain
- Yes, I see what I did there, and so do you.
--- ======================================================================
- Author: Catspaw
- I post gameplay video on my Youtube channel, Catspaw Adventures:
- https://www.youtube.com/channel/UCtG8fiWPUZEzWlkUn60btAw
-
- Source: https://www.moddb.com/mods/stalker-anomaly/addons/personal-adjustable-waypoint-for-anomaly-151-152-and-gamma
- Version: 2.0.2
- Updated: 20231204
-
- You may alter any part of this mod and do whatever you like with it,
- just give credit where due.
-
- Right-click on any visible map point to set/move/remove a waypoint
- or map pins. Map pins can be named, renamed, removed, and given
- custom icons. The waypoint is tracked like a task. Semicolon (default)
- toggles the current or most recent waypoint on/off.
-
- To see map points, hold Slash (default, configurable in MCM) to
- enter Cartography Mode. In this mode, all terrain smart points are
- visible. Both the hold and the terrain display are options in MCM.
-
- While in Cartography Mode, you can also Ping the map from the context
- menu, creating a temporary grid of visible mapspots that you can use
- for more precise placement.
-
- Press Apostrophe (default) to drop a Quick Pin at the player's
- current location.
-
- Press Period or Comma (default) to cycle through active pins in the
- current set, or hold Alt while doing this to cycle sets instead.
-
- Credits: HarukaSai, RavenAscendant, Ghen Tuong, demonized, and
- many others who've assisted in ways big and small.
--- ======================================================================
--- SHORTCUTS, FLAGS, AND SYSTEM STUFF
- (Most of which you probably shouldn't muck with)
--- ===================================================================--]]
-script_version = "2.0.2"
-release_date = 20231204
-local scriptname = "tasks_placeable_waypoints"
-local logprefix = " "
-local language = "eng"
-debuglogs = false -- Controls debug logging if you don't have MCM
-verbose = true
--- Verbose being on won't do anything if debuglogs isn't also enabled,
--- but it will ensure that if anyone has to turn on debug logging,
--- their logs will contain the maximum amount of info automatically.
--- It's noisy and you can turn it off here if you have to.
--- ======================================================================
-modxml_map_spots_paw.load_me = function() end
--- ======================================================================
-function dl(logtext,...)
- -- Debug logging - to disable, set debuglogs to false
- if logtext and debuglogs then
- printf (logprefix..logtext,...)
- end
-end
-
-function vl(logtext,...)
- -- Verbose logging - to disable, set either debuglogs or verbose to false
- if logtext and debuglogs and verbose then
- dl("[V] "..logtext,...)
- end
-end
--- ======================================================================
-mcm_killswitch = false
--- Enabling the killswitch will hard-cutoff any attempt
--- to load values from MCM, in case that is causing issues.
-disable_mcm_updates = false
--- This flag will disable the immediate MCM updates that happen
--- when changing icons or sets in-game.
-paw_enabled = true -- setting false will killswitch the entire addon
-local icoset_changed = nil
-started = false -- runtime flag
-waypoint_active = false -- runtime flag
-waypoint_canceling = false -- runtime flag
-disable_load_warning = false
-local load_failed = false -- runtime flag
-local welcome_msg_shown = false
-local get_game_time = game.get_game_time
-local get_start_time = level.get_start_time
-local ts = game.translate_string
-local tm = task_manager.get_task_manager()
-local psk = utils_data.parse_string_keys
-local task_info = tm.task_info
-local floor,ceil = math.floor,math.ceil
-local pow,sqrt = math.pow,math.sqrt
--- ======================================================================
-mousewheel_override = false
---[[ If set to true, mousewheel_override will skip the autodetection of
- mousewheel support and force it to be on. This may have bad results
- if your binaries don't actually support it.
-
- Mousewheel support can also be forced on by setting the following
- MCM config value (not exposed in the menu):
-
- pawsys/pawbinds/mwheel_override = true
---]]
-right_click_override = false
--- Similarly with right_click_override, but for the on_map_right_click callback
-mwheel_enabled = false -- managed at runtime
-mwheel_notify = true -- news tip on state change
-mwheel_poll_interval = 50 -- interval between checks for mouse wheel input
-mwheel_next_poll = time_global()
-local mwheel_exe_ver = 20230701 -- mouse wheel support added to demonized binaries in this version
-local rclick_exe_ver = 20230922 -- right-click map support added to demonized binaries in this version
-local game_version = ts("ui_st_game_version")
-local gamma_modpack = game_version:find("G.A.M.M.A.")
-mwheel_avail = mousewheel_override or (MODDED_EXES_VERSION and (MODDED_EXES_VERSION >= mwheel_exe_ver))
-right_click_avail = right_click_override or gamma_modpack or (MODDED_EXES_VERSION and (MODDED_EXES_VERSION >= rclick_exe_ver))
-last_clicked_id = nil
--- ======================================================================
-unsquish_ratio = 1
-local DIK_name = ui_mcm and ui_mcm.dispaly_key or (function() return "" end)-- typo is in the mcm script
-local default_id = 15797 -- WP defaults to Rookie Village if missing for any reason to avoid crash
-local mcm_update_throttle = 3019 -- minimum time between MCM updates of icon/set data
-local next_mcm_update = time_global()
-local wp_proxcheck_interval = 837 -- Time between checks for waypoint proximity
-local next_wp_proxcheck = time_global()
-local garbcollect_interval = 4984 -- Time between pin/sz garbage collection checks
-local next_gc_check = time_global()
-local wp_clear_dist = 5
-local widget_hide_delay = 5000
-local next_pin = time_global()
-local pin_delay = 1000 -- timeout to prevent dupe actions from registering
-local ping_lifetime = 10000
-local ping_grid_size = 10
-local ping_grid_radius = 10
---local max_dynamic_faves = 5 -- not yet implemented
-local current_active_set = "pins"
-local active_theme = "classicauto"
-local current_set_max = 1
-local current_ico_max = 1
-placed_waypoint = nil
-last_waypoint = nil
--- ======================================================================
-local toggle_bind = DIK_keys.DIK_SEMICOLON
-local toggle_mod = 2
-local quickpin_bind = DIK_keys.DIK_APOSTROPHE
-local quickpin_mod = 0
-local cart_mode_hold = DIK_keys.DIK_SLASH
-local cart_mode_mod = 0
-local mcm_keybinds = ui_mcm and ui_mcm.key_hold
-cart_mode = false
-cartography_must_hold = false
-cart_shows_smarts = true
-cartmode_unfade = true
-tip_on_icoset_change = false
-allow_non_wp_targets = false
-clear_pin_on_death = true -- pin will be cleared if set on a living thing that dies
-pin_near_fade_dist = 5 -- min distance within which pins will begin to fade out, set to 0 to disable
-pin_far_fade_dist = 0 -- distance beyond which pins will begin to fade out, set to 0 to disable
-pin_far_hide_dist = 10 -- max distance after far_fade at which pins will hide, set to 0 to disable
--- ======================================================================
-enable_wp_proxcheck = true
-show_pins = true
-local custom_task_info = false
-local icon_cycle_active = false
-local set_cycle_active = false
-widget_enabled = true
-widget_active = true
-hide_widget = true
-widget_use_custom_pos = false
-widget_custom_pos = {x=491,y=670}
-widget_last_used = time_global()
-wp_hud_icon_enabled = true
-pin_hud_icon_default = true
-manual_smart_pins = false
-mark_on_positive_id = true
-reticle_mustzoom = true
-reticle_mode = 2
-autotag_milpda_feature = false -- not implemented yet
-autotag_persistence = false -- if enabled, autotags are cleared on map change or the below timeout value
-autotag_lifetime = 120 * 6 -- time in ms before autotags are cleared (def 2 minutes)
-autotags_time_out = autotag_lifetime > 0
-ret_fade_attack_time = 400
-ret_fade_decay_time = 600
-
-reticle_color = {
- ["a"] = 150,
- ["r"] = 255,
- ["g"] = 255,
- ["b"] = 255,
-}
-
-show_marker_dist = {
- ["pins"] = 4,
- ["wp"] = 4,
-}
-
-show_marker_hint = {
- ["pins"] = 2,
- ["wp"] = 0, -- not implemented yet
-}
-
--- ======================================================================
--- STRINGS AND LTX DATA
--- ======================================================================
-local cartmode = "cartmode"
-local sep = "_"
-local snd_path = "catspaw\\"
-local snd_ping = snd_path.."paw_ping"
-local snd_cycle_blip = snd_path.."paw_blip"
-local snd_tag_target = snd_path.."paw_blip"
-local use_ping_snd = true
-local use_ui_snd = true
-local add_mapspot_functor = scriptname..".func_add_mapspot"
-local ren_mapspot_functor = scriptname..".func_ren_mapspot"
-local ren_wp_functor = scriptname..".func_ren_waypoint"
-local task_id = "task_placeable_waypoint"
-local pawmenu_path = "ui_mcm_pawsys_pawmenu_"
--- Don't change any of these icon definitions. If you want to
--- override PAW's pin icons with any of yours, use MCM or
--- see below for how to add your own, it's easy.
-current_body_icon = nil
-body_icon_mode = "off"
-patch_res = "badge"
-local custom_pin_icon = false
-local default_mapspot = "paw_pin_redpush32"
-local smart_terrain_icon = "paw_pin_magnifier32"
-local icon_pingspot = "paw_ping_alpha50"
-waypoint_mapspot = "paw_task_default"
-map_pin_icon = default_mapspot
-force_icon_override = nil
--- If force_icon_override is set to anything, PAW will try to use it
--- for pins instead of what it normally would.
--- This is purely a debugging tool. There are better ways to use your own
--- custom icons.
--- ======================================================================
-icons_ini = ini_file_ex("scripts\\paw\\icons.ltx")
-icon_sets_ini = ini_file_ex("scripts\\paw\\icon_sets.ltx")
-actions_ini = ini_file_ex("scripts\\paw\\menu_actions.ltx")
-task_ini = ini_file_ex("scripts\\paw\\task_config.ltx")
-clsids_ini = ini_file_ex("scripts\\paw\\valid_clsids.ltx")
-icon_ltx = icons_ini:collect_section("icons")
-iconset_ltx = icon_sets_ini:get_sections(true)
-actions_ltx = actions_ini:get_sections(true)
-clsids_ltx = clsids_ini:collect_section("valid_clsids")
-task_cfg = task_ini:collect_section("task_config")
-custom_name = (task_cfg and task_cfg.name)
-custom_desc = (task_cfg and task_cfg.desc)
-icons = icon_ltx
-curr_menu_options = {}
-icon_sets = {}
-action_codes = {}
-action = {}
-texture_data = {}
-icon_index = {}
-set_index = {}
-valid_clsids = {}
-local script_zones = {}
-local pings = {}
-local pawdata = {
- pins = {},
- --dynamic_faves = {},
- curr_set_ind = 1,
- curr_ico_ind = 1,
- curr_set_name = "pins",
- curr_ico_name = default_mapspot,
-}
-pawdata.smart_pins = {
- ["human_f"] = {
- pin = "chevron_friendly",
- enabled = false,
- },
- ["human_n"] = {
- pin = "chevron_neutral",
- enabled = false,
- },
- ["human_e"] = {
- pin = "chevron_enemy",
- enabled = true,
- },
- ["monster"] = {
- pin = "chevron_enemy",
- enabled = true,
- },
- ["stash"] = {
- pin = "bwhr_loot",
- enabled = false,
- },
-}
-pawdata.npc_ident = {
- delay_id = true,
- id_bodies = false,
- id_speed = 0.3,
- lenience = 0.99,
- tick_speed = 200,
- progress = {},
-}
-npc_ident = pawdata.npc_ident
-smart_pins = pawdata.smart_pins
-pins = pawdata.pins
-dynamic_faves = pawdata.dynamic_faves
-
--- ======================================================================
-pda_defs = {
--- By default, all PDAs support waypointing
- ["device_pda_1"] = {
- show_w = true,
- },
- ["device_pda_2"] = {
- show_w = true,
- },
- ["device_pda_3"] = {
- show_w = true,
- },
- ["device_pda_milspec"] = {
- show_w = true,
- },
--- If you use an addon with an unsupported PDA section, add it here
--- ["device_pda_added_by_your_mod"] = {
--- show_w = false,
--- },
-}
-
-managed_factions = {
- -- editing this may cause crashes or other unexpected results
- ["army"] = true,
- ["bandit"] = true,
- ["csky"] = true,
- ["dolg"] = true,
- ["ecolog"] = true,
- ["freedom"] = true,
- ["killer"] = true,
- ["monolith"] = true,
- ["stalker"] = true,
- ["greh"] = true,
- ["isg"] = true,
- ["renegade"] = true,
-}
-
-managed_options = {
- -- editing this may cause context menus to behave oddly
- ["mping"] = true,
- ["wp_set"] = true,
- ["wp_mov"] = true,
- ["wp_del"] = true,
--- ["wp_ren"] = true,
- ["waypoint_rename"] = true,
- ["waypoint_redesc"] = true,
- ["hud_vis_on"] = true,
- ["hud_vis_off"] = true,
- ["show_all_pins"] = true,
- ["hide_all_pins"] = true,
- ["pn_add"] = true,
- ["pn_del"] = true,
- ["pn_ren"] = true,
- ["pn_clr"] = true,
- ["lock_pin"] = true,
- ["unlock_pin"] = true,
- ["cm_dbg"] = true,
-}
-
-hud_themes = {
- ["classicauto"] = {
- name = "classicauto",
- node = "pawhudind",
- style = "full",
- tex = "ui_paw_hud_indicator_classic",
- file = "paw_hud_indicator.xml",
- pos = {x=890,y=620},
- w = 136,
- h = 75,
- pda_thm = "vertright",
- },
- ["classic"] = {
- name = "classic",
- node = "pawhudind",
- style = "full",
- tex = "ui_paw_hud_indicator_classic",
- file = "paw_hud_indicator.xml",
- pos = {x=890,y=620},
- w = 136,
- h = 75,
- },
- ["vertright"] = {
- name = "vertright",
- node = "pawhudind_vertright",
- style = "minimal",
- tex = "ui_paw_hud_indicator_vertright",
- file = "paw_hud_indicator.xml",
- pos = {x=922,y=440},
- w = 100,
- h = 154,
- },
- ["vertleft"] = {
- name = "vertleft",
- node = "pawhudind_vertleft",
- style = "minimal",
- tex = "ui_paw_hud_indicator_vertleft",
- file = "paw_hud_indicator.xml",
- pos = {x=4,y=570},
- w = 100,
- h = 154,
- },
- ["gamma_right"] = {
- name = "gamma_right",
- node = "pawhudind_gamma_right",
- style = "full",
- tex = "ui_paw_hud_indicator_gamma_right",
- file = "paw_hud_indicator.xml",
- pos = {x=888,y=440},
- w = 130,
- h = 150,
- },
- ["gamma_left"] = {
- name = "gamma_left",
- node = "pawhudind_gamma_left",
- style = "full",
- tex = "ui_paw_hud_indicator_gamma_left",
- file = "paw_hud_indicator.xml",
- pos = {x=4,y=440},
- w = 130,
- h = 150,
- },
- ["minimal_h"] = {
- name = "minimal_h",
- node = "pawhudind_minimal_h",
- style = "minimal",
- tex = "ui_paw_hud_indicator_minimal_h",
- file = "paw_hud_indicator.xml",
- pos = {x=924,y=645},
- w = 94,
- h = 52,
- },
- ["minimal_v"] = {
- name = "minimal_v",
- node = "pawhudind_minimal_v",
- style = "minimal",
- tex = "ui_paw_hud_indicator_minimal_v",
- file = "paw_hud_indicator.xml",
- pos = {x=924,y=440},
- w = 92,
- h = 112,
- },
- ["minicom"] = {
- name = "minicom",
- node = "pawhudind_minicom",
- style = "compact",
- tex = "ui_paw_hud_indicator_minicom",
- file = "paw_hud_indicator.xml",
- pos = {x=820,y=725},
- w = 38,
- h = 37,
- },
- ["compact_noui"] = {
- name = "compact_noui",
- node = "pawhudind_minicom",
- style = "compact",
- file = "paw_hud_indicator.xml",
- pos = {x=820,y=725},
- w = 32,
- h = 37,
- pre_tex = "ui_paw_hud_indicator_minicom",
- },
-}
-
-
-colors = {
- dimmed = GetARGB(100, 255, 255, 255),
- active = GetARGB(255, 255, 255, 255),
-}
-
-text_colors = {
- ["clr_255"] = "%" .. "%c[255,255,255,255]",
- ["clr_red"] = "%" .. "%c[255,255,0,0]",
- ["clr_grn"] = "%" .. "%c[255,0,255,0]",
- ["clr_blu"] = "%" .. "%c[255,0,0,255]",
- ["clr_lbl"] = "%" .. "%c[255,0,200,220]",
- ["clr_yel"] = "%" .. "%c[255,250,218,94]",
- ["clr_wht"] = "%" .. "%c[255,220,220,220]",
- ["clr_prp"] = "%" .. "%c[255,138,43,226]",
- ["clr_blk"] = "%" .. "%c[255,0,0,0]",
-}
-
-
-local keybinds = {
- ["cartmode"] = {
- enabled = function() return paw_enabled end,
- hold = cartography_must_hold,
- bind = DIK_keys.DIK_SLASH,
- name = "ui_mcm_pawsys_pawbinds_bind_cartmode",
- action = function(tf)
- if tf == nil then
- tf = not cart_mode
- end
- cartography_mode(tf)
- end,
- },
-
- ["wp_target_obj"] = {
- enabled = function() return paw_enabled end,
- bind = DIK_keys.DIK_SEMICOLON,
- mod = 3,
- name = "ui_mcm_pawsys_pawbinds_bind_wp_target",
- action = function() wp_target_obj() end,
- },
- ["pin_target_obj"] = {
- enabled = function() return paw_enabled end,
- bind = DIK_keys.DIK_APOSTROPHE,
- mod = 3,
- name = "ui_mcm_pawsys_pawbinds_bind_pin_target",
- action = function() pin_target_obj(nil,nil,nil,manual_smart_pins) end,
- },
- ["quickpin"] = {
- enabled = function() return paw_enabled end,
- bind = DIK_keys.DIK_APOSTROPHE,
- name = "ui_mcm_pawsys_pawbinds_bind_quickpin",
- action = function() drop_quick_pin() end,
- },
- ["wptoggle"] = {
- enabled = function() return paw_enabled end,
- bind = DIK_keys.DIK_SEMICOLON,
- name = "ui_mcm_pawsys_pawbinds_bind_wptoggle",
- action = function() toggle_waypoint() end,
- },
- ["set_next"] = {
- enabled = function() return paw_enabled end,
- bind = DIK_keys.DIK_PERIOD,
- mod = 3,
- name = "ui_mcm_pawsys_pawbinds_bind_set_next",
- action = function() cycle_items(1,"set",tip_on_icoset_change) end,
- },
- ["set_prev"] = {
- enabled = function() return paw_enabled end,
- bind = DIK_keys.DIK_COMMA,
- mod = 3,
- name = "ui_mcm_pawsys_pawbinds_bind_set_prev",
- action = function() cycle_items(-1,"set",tip_on_icoset_change) end,
- },
- ["ico_next"] = {
- enabled = function() return paw_enabled end,
- bind = DIK_keys.DIK_PERIOD,
- name = "ui_mcm_pawsys_pawbinds_bind_ico_next",
- action = function() cycle_items(1,"icon",tip_on_icoset_change) end,
- },
- ["ico_prev"] = {
- enabled = function() return paw_enabled end,
- bind = DIK_keys.DIK_COMMA,
- name = "ui_mcm_pawsys_pawbinds_bind_ico_prev",
- action = function() cycle_items(-1,"icon",tip_on_icoset_change) end,
- },
- ["ico_scroll"] = {
- enabled = function() return paw_enabled and mwheel_enabled end,
- bind = DIK_keys.DIK_Z,
- name = "ui_mcm_pawsys_pawbinds_bind_ico_scroll",
- mod = 3,
- hold = true,
- action = function(tf) icon_cycle(true,tf) end,
- },
- ["set_scroll"] = {
- enabled = function() return paw_enabled and mwheel_enabled end,
- bind = DIK_keys.DIK_Z,
- name = "ui_mcm_pawsys_pawbinds_bind_set_scroll",
- mod = 2,
- hold = true,
- action = function(tf) set_cycle(true,tf) end,
- },
-}
-
--- ======================================================================
--- GENERAL UTILITY FUNCTIONS
--- ======================================================================
-
-function exec(str,...)
- if str then
- str = str_explode(str,"%.")
- if str[1] and str[2] and _G[ str[1] ] and _G[ str[1] ][ str[2] ] then
- _G[ str[1] ][ str[2] ](...)
- else
- dl("Could not exec function %s", str)
- end
- end
-end
-
-
-function delay_exec_of(func,secs,...)
- if not func then return end
- secs = secs or 0
- CreateTimeEvent("pawdelay","paw"..func..tostring(time_global()),secs,func,...)
-end
-
-
-function dotip(tiptext,dur,src,beep,icon,snd)
- vl("Tip call received: dur %s | src \"%s\" | beep %s\n\"%s\"",dur,src,beep,tiptext)
- if tiptext == nil then return end
- db.actor:give_game_news(src or "PAW System", tiptext, icon or "ui_inGame2_Mesta_evakuatsii", 0, dur or 5000)
-
- if beep then
- xr_sound.set_sound_play(AC_ID, snd or "pda_tips")
- end
-end
-
-function get_time_elapsed()
- return math.floor(get_game_time():diffSec(get_start_time()))
-end
-
-function round2(n)
- return (math.floor(n * 100) / 100)
-end
-
-
-function roll(val,min,max)
- if not (val and min and max) then return end
- if val > max then
- return min
- elseif val < min then
- return max
- else
- return val
- end
-end
-
-function lerp(a, b, f)
- if a and b and f then
- return a + f * (b - a)
- else
- return a or b or 0
- end
-end
-
-function paw_enabled_check()
- if not paw_enabled then
- actor_menu.set_msg(1,game.translate_string("st_paw_system_disabled"),5)
- end
- return paw_enabled
-end
-
-function valid_bind(kb)
- return (kb ~= nil) and (kb ~= "") and (kb ~= "") and (kb ~= -1)
-end
-
-
-function bindtext(kb,km)
- local kbt = ""
- local kmt = ""
- local mt = ""
- local vbkb = valid_bind(kb)
- local vbkm = km and km > 0
- if vbkb then
- kbt = DIK_name(kb)
- end
- if vbkm then
- if km and km < 29 then
- km = ((km == 1) and 42) or ((km == 2) and 29) or ((km == 3) and 56)
- end
- if km then
- kmt = DIK_name(km)
- end
- end
-
- if vbkb and vbkm then
- mt = "+"
- elseif not (vbkb or vbkm) then
- kmt = "[UNBOUND]"
- mt = ""
- kbt = ""
- end
-
- return string.format("%s%s%s",kmt,mt,kbt)
-end
-
-
--- ======================================================================
-function safeid(obj)
- local id = obj and obj.id
- if not id and obj then return end
- if type(id) ~= "number" then id = obj:id() end
- return id
-end
-
-function safename(id)
- if not (id and (id > 0)) then return end
- local text = ts("st_paw_unknown")
- local se_obj = alife_object(id)
- if not se_obj then return text end
- local name = se_obj:name() or text
- local cls = se_obj:clsid()
-
- if pins[id] then
- -- If there's a pin for this ID, use its label above all else
- text = pins[id].text or pins[id].name
- vl("%s (%s) is a pin: %s",name,id,text)
- elseif (cls == clsid.script_zone) then
- text = ts("st_paw_pin_default_name")
- vl("%s (%s) is a script zone: %s",name,id,text)
- elseif (cls == clsid.script_restr) then
- local _,_,hint = txr_routes.get_route_info(name)
- if hint then
- text = hint and ts(hint) or text
- else
- text = ts(name)
- end
- vl("%s (%s) is a level transition: %s",name,id,text)
- elseif (cls == clsid.smart_terrain) then
- text = ts("st_"..name.."_name"):gsub("%."," -")
- vl("%s (%s) is a smart terrain: %s",name,id,text)
- elseif (cls == clsid.online_offline_group_s) then
- local comm = se_obj.player_id
- local sq = ts("st_paw_squad")
- if managed_factions[comm] then
- text = ts(comm)
- end
- text = text.." "..sq
- if debuglogs then
- text = text..": "..name
- end
- vl("%s (%s) is NPC squad with faction %s: %s",name,id,comm,text)
- elseif IsInvbox(nil,cls) then
- local locst = "st_"..name.."_name"
- text = ts(locst)
- if text == locst then
- dl("No localization found for stash %s",locst)
- text = ts("st_paw_unknown").." "..ts("st_paw_stash")
- if debuglogs then
- text = text..": "..name
- end
- end
- vl("%s (%s) is a stash marker: %s",name,id,text)
- elseif IsStalker(nil,cls) then
- text = se_obj:character_name()
- vl("%s (%s) is a stalker: %s",name,id,text)
- elseif IsMonster(nil,cls) then
- local obj = get_object_by_id(id)
- local section = obj and obj:section()
- if not section then
- return text
- end
- --[[
- Hack adapted from ui_enemy_health.script
- This logic acts as a translation layer for
- any monster kind/species that doesn't line
- up with the name of its encyclopedia entry
- --]]
- local special_cases = {
- dog = "blind_dog",
- bird = "crow",
- giant = "pseudogiant",
- SM_KARLIK = "karlik",
- SM_LURKER = "lurker",
- SM_POLTER_G = "poltergeist",
- SM_PYRO_G = "pyrogeist",
- SM_PSEUDO_G = "pseudogeist",
- SM_PSYSUCKER = "psysucker",
- }
- if string.find(section,'rotan') then
- text = "rat"
- elseif string.find(section,'psy_dog') then
- text = "psydog"
- else
- local what = ini_sys:r_string_ex(section,"kind") or ini_sys:r_string_ex(section,"species") or nil
- text = special_cases[what] or what
- end
- --text = string.lower(ts("encyclopedia_mutants_"..text))
- text = ts("encyclopedia_mutants_"..text)
- vl("%s (%s) is a creature: %s",name,id,text)
- else
- text = ts(name)
- if text == name then
- text = ts(name.."_name")
- if text == name.."_name" then
- text = name
- dl("No localization or other name found for object %s (%s)",name,id)
- end
- end
- end
- dl("safename returns %s for %s",text,name)
- return text
-end
-
-
-function valid_pda()
- local dev = db.actor:item_in_slot(8)
- local sec = dev and dev:section()
- if dev and pda_defs[sec] then
- if pda_defs[sec].show_w then return true end
- elseif item_device.device_npc_pda[sec] then
- local text = ts("st_paw_npc_pda_equipped")
- dotip(text)
- else
- dl("WARNING: Equipped PDA %s not found in pda_defs - if this is a valid player PDA, add to that table to enable support",sec)
- end
- return false
-end
-
-
-function blacklisted_object(id)
- if not (id and (id > 0)) then return true end
-
- local se_obj = alife_object(id)
-
- if not se_obj then return true end
-
- local cls = se_obj:clsid()
- if (cls == clsid.poltergeist_s) or
- (cls == clsid.psy_dog_phantom_s) then
- return true end
-
-end
-
-function valid_waypoint_target(se_obj)
- if not se_obj then return end
- if blacklisted_object(se_obj.id) then return end
- -- can add other smart types to this logic later if needed
- local clsid = se_obj:clsid()
- local valid = (valid_clsids[clsid] ~= nil) or
- IsStalker(se_obj) or
- IsMonster(se_obj) or
- isLc(se_obj)
- return valid
-end
-
-function feature_valid_in_mode(mode)
- -- -1: debug mode only
- -- 0: disabled
- -- 1: enabled in normal view only
- -- 2: enabled in cartography mode only
- -- 4: enabled in both
- return ((mode < 0) and debuglogs) or
- ((mode == 1) and not cart_mode) or
- ((mode >= 2) and cart_mode) or
- (mode >= 4)
-end
-
-
-function play_sound_for_actor(effect)
- local snd = xr_sound.get_safe_sound_object(effect)
- snd:play(db.actor, 0, sound_object.s2d)
-end
-
-
-function add_mapspot(text,id,icon)
- if not id then return end
- icon = icon or default_mapspot
- vl("Adding mapspot %s for id %s with icon %s",text,id,icon)
- level.map_add_object_spot(id,icon,text)
-end
-
-
-function remove_mapspot(id,icon)
- if not (id and icon) then return end
- vl("Trying to remove mapspot for id %s with icon %s",id,icon)
- level.map_remove_object_spot(id,icon)
- level.map_remove_object_spot(id,icon)
- return true
-end
-
---[[
--- this isn't working yet, don't enable
-function rotate_dynamic_favorites(icon)
- if not icon then return end
-
- local mdf = tonumber(max_dynamic_faves) or 0
- local faves = 0
- if (mdf and (mdf == 0)) then return end
- vl("rotate_dynamic_favorites called with new mapspot %s",icon)
- if dynamic_faves and (type(dynamic_faves) == "table") then
- faves = #dynamic_faves or 0
- if faves > 1 then
- for i = 1,faves do
- if (faves[i] == icon) then
- vl("%s already in favorites, ignoring")
- return
-
-
- end
- if faves < mdf then
- faves = faves + 1
- elseif (mdf > 1) and (faves >= mdf) then
- for i = 2,faves do
- vl("%s was in position %s, shuffling down to %s",dynamic_faves[i],i,i-1)
- dynamic_faves[i - 1] = dynamic_faves[i]
- end
- end
- else
- dynamic_faves = {}
- end
- dynamic_faves[faves] = icon
- vl("%s added to top of dynamic_faves",icon)
-end
---]]
-
-function func_add_mapspot(text,args)
- local id = args.id
- local icon = args.icon or map_pin_icon
- if text == "" or text == nil then
- set_pin_persistence(id,false)
- set_pingspot_persistence(id,false)
- pins[id] = nil
- vl("Empty text input returned for pin %s, removing",id)
- return end
- vl("func_add_mapspot called for id %s | %s | %s",id,icon,text)
- pins[id].text = text
- add_mapspot(text,id,icon)
-end
-
-function func_ren_mapspot(text,args)
- local id = args.id
- local icon = map_pin_icon
- local old_icon = args.icon
- if text == "" or text == nil then
- vl("Empty text input returned for pin %s, making no change",id)
- text = pins[id].text
- icon = old_icon
- end
- pins[id].text = text
- vl("func_ren_mapspot called for id %s | %s | %s",id,icon,text)
- remove_mapspot(id,old_icon)
- add_mapspot(text,id,old_icon)
-end
-
-function func_ren_waypoint(text,args)
- if text == "" then text = nil end
- local field = args.field
- if field == "name" then
- custom_name = text
- elseif field == "desc" then
- custom_desc = text
- end
-end
-
-
-function pins_exist()
- return not is_empty(pins)
-end
-
-
-function waypoint_task_cleanup()
-end
-
-
-function cancel_task()
- local id = placed_waypoint and placed_waypoint.id
- tm.task_info[task_id] = nil
- remove_mapspot(id, waypoint_mapspot)
- _ = set_pingspot_persistence(id,false)
- waypoint_active = false
- placed_waypoint = nil
- _ = dl("Waypoint task cancellation complete for %s",id)
- waypoint_canceling = false
- return true
-end
-
-
-function end_waypoint_task()
- waypoint_canceling = true
- return cancel_task()
-end
-
-
-function set_current_waypoint(se_obj)
- if not se_obj then return end
- local id = se_obj.id
- set_pingspot_persistence(id)
- if waypoint_active then
- last_waypoint = placed_waypoint
- set_pingspot_persistence(id,false)
- end
- placed_waypoint = {
- id = id,
- name = safename(id),
- }
- waypoint_active = true
- waypoint_canceling = false
-end
-
-function valid_travel_target(id)
- -- To enable interaction with the Fair Fast Travel
- -- system addon, allowing fast travel to pins, but
- -- only those that we know are within the playable
- -- area--ones spawned at a spot where the player was
- -- standing at the time.
- local pin = pins and pins[id]
- local valid = pin and pin.quick
- vl("valid_travel_target | id %s is pin: %s | is quick pin %s",pin,valid)
- return valid
-end
-
-function init_new_pin(id,name,text,icon)
- if id and not pins[id] then
- icon = icon or default_mapspot
- set_pingspot_persistence(id)
- pins[id] = {
- id = id,
- name = name or ts("st_paw_pin_default_name"),
- text = text or name,
- icon = icon,
- hud = false
- }
- --rotate_dynamic_favorites(icon)
- vl("New pin initialized: %s (%s) | %s | %s",pins[id].name,id,icon,text)
- end
-end
-
-
-function register_script_zone(...)
- local se_obj = alife_create("script_zone",...)
- if not se_obj then return end
- local id = se_obj.id
- local now = time_global()
- script_zones[id] = {
- id = se_obj.id,
- pos = se_obj.position,
- created = now,
- cleanup = now + ping_lifetime,
- }
- vl("Script zone %s spawned for ping spot",id)
- return se_obj
-end
-
-
-function deregister_script_zone(id)
- if not id then return end
- local se_obj = alife_object(id)
- if not se_obj then return end
- alife_release(se_obj)
- script_zones[id] = nil
- vl("Script zone %s released",id)
-end
-
-
-function generate_scripted_mapspot_at(pos,lv,gv)
- if not (pos and lv and gv) then return end
- local sz = register_script_zone(pos,gv,lv)
- if not sz then return end
- return sz.id
-end
-
-
-function generate_scripted_mapspot_on(obj)
- if not (obj and obj.id) then return end
- local sz = register_script_zone(obj)
- if not sz then return end
- return sz.id
-end
-
-
-function spawn_pingspot(pid,pos,lv,gv)
- if not (pid and pos and lv and gv) then return end
- local sz = register_script_zone(pos,gv,lv)
- if not sz then return end
-
- local text = ts("st_paw_pingspot")
- local id = sz.id
- pings[id] = script_zones[id]
- pings[id].pid = pid
- add_mapspot(text,id,icon_pingspot)
- -- vl("Spawned temporary pingspot at %s,%s with id %s",pos.x,pos.z,id)
- return id
-end
-
-
-function despawn_pingspot(id)
- -- vl("despawn_pingspot(%s): deregistering script zone and nulling ping record",id)
- deregister_script_zone(id)
- pings[id] = nil
-end
-
-
-function script_zone_cleanup()
- local now = get_time_elapsed()
- for k,v in pairs(script_zones) do
- if v.cleanup and (v.cleanup < now) then
- deregister_script_zone(k)
- end
- end
- dl("script_zone_cleanup completed")
- return true
-end
-
-function temp_pin_cleanup(wipe_all)
- local now = get_time_elapsed()
- for k,v in pairs(pins) do
- if v.cleanup then
- local expired = autotags_time_out and (v.cleanup < now)
- if expired or wipe_all then
- do_waypoint("pn_del",nil,nil,{syscall=true,id=k})
- end
- end
- end
- dl("temp_pin_cleanup completed")
- return true
-end
-
-function set_pin_persistence(id,onoff,lifetime)
- if not (id and (id > 0)) then return end
- if not pins[id] then return end
- if onoff or (onoff == nil) then
- pins[id].cleanup = nil
- dl("Pin %s given persistence, it will not be subject to cleanup",id)
- else
- local now = get_time_elapsed()
- pins[id].cleanup = now + (lifetime or autotag_lifetime or 0)
- dl("Pin %s flagged as temporary, it will be subject to cleanup at %s",id,pins[id].cleanup)
- end
- return true
-end
-
-function set_pingspot_persistence(id,onoff)
- if not (id and script_zones[id]) then return end
- if onoff or (onoff == nil) then
- pings[id] = nil
- script_zones[id].cleanup = nil
- dl("Temporary pingspot %s given persistence, it will not be subject to cleanup",id)
- else
- script_zones[id].cleanup = get_time_elapsed()
- dl("Persistent pingspot %s flagged as unused, it will be subject to cleanup",id)
- end
- return true
-end
-
-function ping_area_around(obj)
- if not obj then return end
- local now = time_global()
- local pid = tostring(now)
- local span = ping_grid_radius or 10 -- radius of grid in squares
- local grid = ping_grid_size or 10 -- dimension of grid squares in game units
- local rad = span * grid -- actual ping radius in game units
- local anch_id = obj.id
- local anch_pos = obj.position
- local ax = anch_pos.x
- local ay = anch_pos.y
- local az = anch_pos.z
- local gv = obj.m_game_vertex_id
- local lv = game_graph():vertex(gv):level_id()
-
- for z = (az-(span*grid)),(az+(span*grid)),grid do
- for x = (ax-(span*grid)),(ax+(span*grid)),grid do
- local pos = vector():set(x,ay,z)
- if distance_2d(pos,anch_pos) <= (rad + 1) then
- spawn_pingspot(pid,pos,gv,lv)
- end
- end
- end
-
- if use_ping_snd and snd_ping then play_sound_for_actor(snd_ping) end
-
- CreateTimeEvent("paw_ping_cleanup","ping_"..pid,11,tasks_placeable_waypoints.ping_cleanup,pid)
-end
-
-
-function do_waypoint(act,se_obj,acode,args)
- args = args or {}
- local syscall = args.syscall and true or false
- if (not syscall) and valid_pda() and not (paw_enabled and act) then return end
- acode = acode or act
- local id,name
- if se_obj then
- id = se_obj.id
- name = safename(id)
- elseif args and args.id then
- id = args.id
- se_obj = alife_object(id) or se_obj
- end
- local ac = action_codes[acode]
-
- dl("Received waypoint call \"%s\" on target %s (id %s)",act,name,id)
-
- if act == "wp_set" then
- if not se_obj then
- dl("do_waypoint called with action %s but no valid se_obj!",act)
- return end
- set_current_waypoint(se_obj)
- tm:give_task("task_placeable_waypoint")
- waypoint_active = true
- elseif act == "wp_mov" then
- if not se_obj then
- dl("do_waypoint called with action %s but no valid se_obj!",act)
- return end
- if tm.task_info[task_id] then
- local id = se_obj.id
- local task = tm.task_info[task_id]
- local atsk = db.actor:get_task(task_id, true)
- task.target = id
- task.current_target = id
- atsk:change_map_location(task.spot, id)
- level.map_add_object_spot(id, waypoint_mapspot, "")
- set_current_waypoint(se_obj)
- xr_sound.set_sound_play(AC_ID, "pda_tips")
- else
- dl("task_info[task_id] is nil!")
- end
- waypoint_active = true
- elseif act == "wp_del" then
- end_waypoint_task()
- last_waypoint = nil
- elseif act == "waypoint_rename" then
- dl("Received call to rename waypoint")
- local func = ren_wp_functor
- local title = ts("ui_mcm_pawsys_pawmenu_waypoint_rename")
- local itex = "ui_inGame2_PDA_icon_Secondary_mission"
- args.field = "name"
- cartography_mode(false)
- get_text(title,itex,name,func,args)
- elseif act == "waypoint_redesc" then
- dl("Received call to redesc waypoint")
- local func = ren_wp_functor
- local title = ts("ui_mcm_pawsys_pawmenu_waypoint_redesc")
- local itex = "ui_inGame2_PDA_icon_Secondary_mission"
- args.field = "desc"
- cartography_mode(false)
- get_text(title,itex,name,func,args)
- elseif act == "pn_add" then
- dl("Received call to add new pin to map for %s (%s)",name,id)
- local func = add_mapspot_functor
- local icon = icons[ac.icon] or map_pin_icon
- local itex = texture_for_icon(icon)
- local title = ts("ui_mcm_pawsys_pawmenu_pn_add")
- init_new_pin(id,name,ts("st_paw_pin_default_name"),icon)
- cartography_mode(false)
- --vl("pin data before input call: %s (%s) % | %",pins[id].name,pins[id].id,pins[id].icon,pins[id].text)
- get_text(title,itex,nil,func,pins[id])
- elseif act == "pn_ren" then
- if not (id and pins[id]) then return end
- dl("Received call to rename map pin %s (%s)",name,id)
- if not pins[id].locked then
- remove_mapspot(id,icon)
- local func = ren_mapspot_functor
- local icon = pins[id] and pins[id].icon
- local itex = texture_for_icon(icon)
- local name = pins[id] and pins[id].name
- local title = ts("ui_mcm_pawsys_pawmenu_pn_ren")
- cartography_mode(false)
- get_text(title,itex,name,func,pins[id])
- end
- elseif act == "pn_del" then
- if not (id and pins[id]) then return end
- if syscall or not pins[id].locked then
- local icon = pins[id] and pins[id].icon
- if hud_pin_objs[id] then
- vl("Removing pin %s from HUD",id)
- get_hud():RemoveDialogToRender(hud_pin_objs[id])
- hud_pin_objs[id] = nil
- end
- vl("Pin %s (%s) deleted",pins[id].text,id)
- pins[id] = nil
- if icon then remove_mapspot(id,icon) end
- end
- elseif act == "lock_pin" then
- if not (id and pins[id]) then return end
- pins[id].locked = true
- elseif act == "unlock_pin" then
- if not (id and pins[id]) then return end
- pins[id].locked = false
- elseif act == "pn_clr" then
- local wipe_all = args and args.wipe_all
- if not is_empty(hud_pin_objs) then
- for k,v in pairs(hud_pin_objs) do
- if wipe_all or not (pins[k] and pins[k].locked) then
- vl("Hiding HUD pin for %s",k)
- get_hud():RemoveDialogToRender(hud_pin_objs[k])
- hud_pin_objs[k] = nil
- end
- end
- end
- for k,v in pairs(pins) do
- if wipe_all or not v.locked then
- local icon = v.icon
- remove_mapspot(k,icon)
- pins[k] = nil
- end
- end
- elseif act == "mping" then
- ping_area_around(se_obj)
- elseif act == "hud_vis_on" then
- if not (id and pins[id]) then return end
- if syscall or not pins[id].locked then
- pins[id].hud = true
- show_hud_pin(id)
- end
- elseif act == "hud_vis_off" then
- if not (id and pins[id]) then return end
- if syscall or not pins[id].locked then
- pins[id].hud = false
- hide_hud_pin(id)
- end
- elseif act == "show_pins" then
- show_all_pins(true)
- elseif act == "hide_pins" then
- show_all_pins(false)
- elseif act == "cm_dbg" then
- local clsid = se_obj and se_obj:clsid() or "empty"
- property_ui:AddItem("[PAW Debug] Mapspot for %s (id %s) has clsid %s)",name,id,clsid)
- else
- dl("invalid action %s passed to do_waypoint",act)
- end
- return true
-end
-
-
-function add_context_option(property_ui,act,maptbl)
- local ac = action_codes[act]
- vl("add_context_option \"%s\" | cart_mode is %s",act,cart_mode)
- if ac and ac.enable then
- --printf("action %s is enabled",act)
- if type(ac.mode) ~= "number" then
- dl("WARNING: mode (%s) for action %s was not a number, resetting to 0",ac.mode,act)
- ac.mode = 0
- end
- -- -1: debug mode only
- -- 0: disabled
- -- 1: enabled in normal view only
- -- 2: enabled in cartography mode only
- -- 4: enabled in both
- --[[
- if ((ac.mode < 0) and debuglogs) or
- (ac.mode == 1 and not cart_mode) or
- ((ac.mode >= 2) and cart_mode) or
- (ac.mode >= 4) then
- -]]
- if feature_valid_in_mode(ac.mode) then
- local text = ts(ac.text)
- vl("add_context_option(%s): Adding context option %s",act,text)
- property_ui:AddItem(text)
- curr_menu_options[text] = maptbl
- end
- else
- vl("Action %s is missing or not enabled, ignoring",act)
- end
-end
-
-function nearest_smart_to_actor()
- vl("nearest_smart_to_actor")
-
- local levelid = alife():level_id()
- local smart_nearest,dist_nearest,name_nearest,result
- for name,smart in pairs(SIMBOARD.smarts_by_names) do
- if levelid == game_graph():vertex(smart.m_game_vertex_id):level_id() then
- -- vl("%s is same map as actor",name)
- local dist = smart.position:distance_to(db.actor:position())
- if (SIMBOARD.smarts[smart.id]) and (not smart_nearest or (dist < dist_nearest)) then
- vl("%s (%s) is nearest so far at %s",name,smart.id,dist)
- smart_nearest = smart
- dist_nearest = dist
- name_nearest = name
- end
- end
- end
-
- if not smart_nearest then
- dl("!ERROR! No nearby smarts found to actor, this shouldn't be possible")
- return {id=0,name="oops"} end
-
- result = {
- smart = smart_nearest,
- id = smart_nearest.id or 0,
- dist = dist_nearest or 0,
- name = name_nearest or "oops",
- pos = smart_nearest.position, -- not used yet
- }
- vl("nearest_smart: %s at %s",name_nearest,dist_nearest)
- return result
-end
-
-
-function show_smarts(onoff)
- vl("show_smarts: %s",onoff)
- local toggle = onoff or false
- local levelid = alife():level_id()
- local smart_nearest,dist_nearest,name_nearest,result
- for name,smart in pairs(SIMBOARD.smarts_by_names) do
- if (SIMBOARD.smarts[smart.id]) then
- local text = name
- local id = smart.id
- local icon = smart_terrain_icon
- if toggle then
- -- vl("Adding temporary smart %s (%s) with icon %s",text,id,icon)
- level.map_add_object_spot(id,icon,text)
- else
- -- vl("Removing temporary smart %s (%s)",text,id)
- level.map_remove_object_spot(id,icon)
- end
- end
- end
-end
-
-
-function wp_target_obj()
- dl("wp_target_obj called")
- local obj = level.get_target_obj()
- local id = obj and obj:id()
- vl("ID returned by level.get_target_obj is %s | obj exists: %s",id,obj ~= nil)
- if id and (id > 0) then
- local se_obj = alife_object(id)
- if not (se_obj and (allow_non_wp_targets or valid_waypoint_target(se_obj))) then return end
-
- if placed_waypoint then
- if id == placed_waypoint.id then
- vl("Waypoint is currently active on %s (%s), disabling",se_obj:name(),id)
- --do_waypoint("wp_del",se_obj)
- toggle_waypoint()
- else
- vl("Waypoint is currently active, moving to %s (%s)",se_obj:name(),id)
- do_waypoint("wp_mov",se_obj)
- end
- else
- vl("No current waypoint, setting to target object %s (%s)",se_obj:name(),id)
- do_waypoint("wp_set",se_obj)
- end
- end
-end
-
-
-function get_smart_target_type(obj)
- --printf("get_smart_target_type(%s)",obj and obj:name())
- local target_type
-
- if obj then
- if IsStalker(obj) then
- local acomm = get_actor_true_community()
- local comm = obj:character_community() or "stalker"
- local is_enemy = game_relations.is_factions_enemies(acomm,comm)
- --printf("Targeted object %s (%s) is stalker | actor comm %s | target comm %s | is_enemy %s",obj:character_name(),obj:id(),acomm,comm,is_enemy)
- if comm == acomm then
- target_type = "human_f"
- elseif is_enemy then
- target_type = "human_e"
- else
- target_type = "human_n"
- end
- elseif IsMonster(obj) then
- target_type = "monster"
- elseif IsInvbox(obj) then
- target_type = "stash"
- end
- end
-
- return target_type
-end
-
-function get_smart_icon_for_obj(obj,mapspot)
- local mapspot = mapspot or map_pin_icon
- local target_type = get_smart_target_type(obj)
- local target = target_type and smart_pins[target_type]
- mapspot = (target and icons[target.pin]) or mapspot
-
- vl("get_smart_icon_for_obj %s: best icon for %s was %s",obj and obj:character_name(),target_type,mapspot)
- return mapspot
-end
-
-
-function pin_target_obj(mapspot,notip,silent,smart)
- vl("pin_target_obj: mapspot %s | notip %s | silent %s | smart %s",mapspot,notip,silent,smart)
- local obj = level.get_target_obj()
- local id = obj and obj:id()
- if id and (id > 0) then
- if blacklisted_object(id) then return end
- if smart then
- mapspot = get_smart_icon_for_obj(obj)
- vl("pin_target_obj: pin %s is smart, assigned mapspot %s",id,mapspot)
- end
- local se_obj = alife_object(id)
- if not (se_obj and (allow_non_wp_targets or valid_waypoint_target(se_obj))) then return end
- local name = safename(id)
- if pins[id] then
- if not pins[id].locked then
- local hint = pins[id].text or pins[id].name or ts("st_paw_pin_default_name")
- local text = string.format(ts("st_paw_pin_removed_from_target"),name,hint)
- text = psk(text,text_colors)
-
- do_waypoint("pn_del",se_obj)
- dotip(text,5,nil,false)
- end
- else
- local hint = name or ts("st_paw_pin_default_name")
- drop_quick_pin(id,hint,mapspot,true,true)
- if pin_hud_icon_default and pins[id] then
- pins[id].hud = true
- show_hud_pin(id)
- end
- if not silent then
- play_sound_for_actor(snd_tag_target)
- end
- if not notip then
- local icon = ts("ui_mcm_lst_"..(mapspot or pawdata.curr_ico_name))
- local nxtb = keybinds["ico_next"].text
- local prvb = keybinds["ico_prev"].text
- local text = string.format(ts("st_paw_pin_added_to_target"),name,icon,nxtb,prvb)
- text = psk(text,text_colors)
- dotip(text,5,nil,false)
- end
- end
- end
- return id
-end
-
-
-function create_smart_pin(notip,silent)
- --local mapspot = get_smart_icon_for_obj(obj)
- return pin_target_obj(nil,notip,silent,true)
-end
-
-function autotag_target(notip,silent)
- local id = create_smart_pin(true)
- set_pingspot_persistence(id,autotag_persistence)
- set_pin_persistence(id,autotag_persistence)
- return id
-end
-
-function drop_quick_pin(id,force_text,force_pin,no_tip,no_fast_travel)
- if not paw_enabled_check() then return end
- if next_pin > time_global() then return end
- next_pin = time_global() + pin_delay
-
- if not id then
- id = generate_scripted_mapspot_on(db.actor)
- end
-
- local se_obj = alife_object(id)
- if not se_obj then return end
-
- local name = se_obj:name() or "none"
- local icon = force_pin or map_pin_icon
- local mapspot_text = force_text or ts("st_paw_pin_quick_name")
- local tip_text = ts("st_paw_pin_dropped")
- init_new_pin(id,name,mapspot_text,icon)
- pins[id].quick = not no_fast_travel
- dl("calling add_mapspot with %s | %s | %s",mapspot_text,id,icon)
- add_mapspot(mapspot_text,id,icon)
- if not no_tip then dotip(tip_text,10000) end
-end
-
-
-function toggle_waypoint(force)
- dl("toggle_waypoint called")
- if (force ~= nil) then
- waypoint_active = not force
- end
- if not waypoint_active then
- if last_waypoint then
- placed_waypoint = last_waypoint
- local se_obj = alife_object(placed_waypoint.id)
- if not se_obj then return end
- do_waypoint("wp_set",se_obj)
- else
- dotip("st_paw_no_last_wp")
- end
- else
- last_waypoint = placed_waypoint
- end_waypoint_task()
- end
-end
-
-
-function cartography_mode(onoff)
- if (onoff == nil) then
- cart_mode = not cart_mode
- else
- cart_mode = onoff or false
- end
- vl ("Setting cart_mode to %s and calling show_smarts to toggle",cart_mode)
- show_smarts(cart_shows_smarts and cart_mode)
-end
-
-
-function get_context_menu_options(property_ui,id,maptbl)
- empty_table(curr_menu_options)
- maptbl = maptbl or {}
- if not id then
- id = maptbl.object_id
- end
- if not paw_enabled then return end
- local se_obj = id and (id > 0) and alife_object(id)
- if not se_obj then return end
-
- local name = se_obj:name() or "undefined"
- local clsid = se_obj:clsid() or "unknown"
- local id = se_obj.id
- local pin = id and pins[id]
- vl("get_context_menu_options: %s (%s) | cls %s",name,id,clsid)
-
- add_context_option(property_ui,"mping",maptbl)
- if id and valid_waypoint_target(se_obj) then
- if pins[id] then
- vl("Pin exists")
-
- if pin.locked then
- add_context_option(property_ui,"unlock_pin",maptbl)
- else
- add_context_option(property_ui,"pn_del",maptbl)
- add_context_option(property_ui,"pn_ren",maptbl)
- if pins[id].hud then
- add_context_option(property_ui,"hud_vis_off",maptbl)
- else
- add_context_option(property_ui,"hud_vis_on",maptbl)
- end
- add_context_option(property_ui,"lock_pin",maptbl)
- end
- else
- vl("No pin")
- add_context_option(property_ui,"pn_add",maptbl)
- end
-
- local name = se_obj:name()
- if placed_waypoint == nil then
- vl("No waypoint")
- add_context_option(property_ui,"wp_set",maptbl)
- else
- local wid = placed_waypoint.id or 0
- local sid = se_obj.id or 0
- if wid ~= sid then
- vl("Waypoint exists")
- add_context_option(property_ui,"wp_mov",maptbl)
- end
- vl("Waypoint exists here")
- add_context_option(property_ui,"wp_del",maptbl)
- add_context_option(property_ui,"waypoint_rename",maptbl)
- add_context_option(property_ui,"waypoint_redesc",maptbl)
- end
- end
-
- if pins_exist() then
- if show_pins then
- add_context_option(property_ui,"hide_all_pins",maptbl)
- else
- add_context_option(property_ui,"show_all_pins",maptbl)
- end
- end
-
- if not (pin and pin.locked) then
- add_context_option(property_ui,"pn_clr",maptbl)
- for k,v in pairs(action_codes) do
- local can_add = true
- if v.act == "pn_add" then
- can_add = (pins[id] == nil)
- end
- local mode = tonumber(v.mode) or 0
- if can_add and v.enable and (mode > 0) and not managed_options[k] then
- add_context_option(property_ui,k,id,maptbl)
- end
- end
- end
-end
-
-
-function execute_context_menu_option(property_ui,id,level_name,prop)
- vl("passed id : %s",id)
- id = last_clicked_id
- last_clicked_id = nil
- vl("execute_context_menu_option called for id %s\n| prop: %s\n| action %s)",id,prop,action[prop])
- if not (paw_enabled and id and valid_pda()) then return end
- if not (id and (id > 0)) then return end
- local se_obj = alife_object(id)
- if not se_obj then return end
- local ac = action[prop]
- if ac then
- local act = action_codes[ac].act
- do_waypoint(act,se_obj,ac)
- end
-end
-
-
-function faction_body_icon(comm)
- vl("faction_body_icon(%s) called",comm)
- local icon = nil
- if comm and managed_factions[comm] then
- local bi = body_icon_mode or "badge"
- icon = "paw_"..patch_res..sep..comm
- vl("faction_body_icon generated from quality %s for faction %s: %s",patch_res,comm,icon)
- else
- vl("not a valid human faction, returning %s from bodies set",current_body_icon)
- end
- return icon or current_body_icon
-end
-
-function local_set_name(setname)
- local name = ts(setname or icon_sets[pawdata.curr_set_name].name)
-end
-
-function local_icon_name(iconame)
- local name = ts(iconame or "ui_mcm_lst_"..pawdata.curr_ico_name)
-end
-
-function icon_for_pin(pin_name)
- if icons and pin_name then return icons[pin_name] end
-end
-
-
-function pin_for_icon(icon)
- if icon and texture_data and texture_data[icon] then return texture_data[icon].id end
-end
-
-
-function texture_for_icon(icon)
- --printf("texture_for_icon(%s) called",icon)
- local tex = texture_data and texture_data[icon] and texture_data[icon].t
- vl("texture_for_icon(%s) returned %s",icon,tex)
- return tex
-end
-
-function texture_for_set(setname)
- if not setname then return end
- local setdata = icon_sets[setname]
- if not (setdata and setdata.active_icon) then
- dl("WARNING: No active icon found for %s",setname)
- return end
- vl("active_icon for %s: %s",setname,setdata.active_icon)
- local td = texture_data[setdata.active_icon]
- vl("texture exists for %s: %s",setdata.active_icon,td ~= nil)
- local tex = td.t
- vl("texture_for_set(%s) returned %s",setname,tex)
- return tex
-end
-
-function get_current_texture(set_changed)
- return set_changed and texture_for_set(pawdata.curr_set_name) or texture_for_icon(pawdata.curr_ico_name)
-end
-
-function set_or_icon(str)
- return str and ((str ~= "set") and (str ~= "icon"))
-end
-
-function set_icon_index(set)
- vl("set_icon_index called for set %s",set)
- local ii = set_index[set].ii
- return ii
-end
-
-function set_icon_index_rev(set)
- vl("set_icon_index_rev called for set %s",set)
- local ri = set_index[set].ri
- return ri
-end
-
-function set2ind(skey)
- local ind = nil
- vl("set2ind called for set %s, %s sets listed",skey,#set_index)
- for i=1,#set_index,1 do
- local k = set_index[i].id
- if k == skey then
- ind = i
- end
- end
- vl("set2ind(%s) returned %s",skey,ind)
- return ind
-end
-
-
-function curr_set_i()
- return pawdata.curr_set_ind
-end
-
-function next_set_i()
- return roll(curr_set_i() + 1, 1, #set_index)
-end
-
-function prev_set_i()
- return roll(curr_set_i() - 1, 1, #set_index)
-end
-
-
-function curr_ico_i()
- --printf("curr_ico_i returns %s",pawdata.curr_ico_ind)
- return pawdata.curr_ico_ind
-end
-
-function next_ico_i()
- local c_ind = curr_ico_i()
- local setdata = icon_sets[pawdata.curr_set_name]
- return roll(c_ind + 1, 1, #setdata.ii)
-end
-
-function prev_ico_i()
- local c_ind = curr_ico_i()
- local setdata = icon_sets[pawdata.curr_set_name]
- return roll(c_ind - 1, 1, #setdata.ii)
-end
-
-function root_patch_name(patch)
- --printf("root_patch_name called with mapspot %s",patch)
- local name = patch
- local pos_paw = string.find(name,"paw_badge_")
- local pos_qlt = string.find(name,"hr_")
- if pos_paw and pos_qlt then
- name = "paw_badge_"..string.sub(patch,pos_qlt+3)
- vl("root_patch_name strips quality string from %s to get %s",patch,name)
- else
- vl("root_patch_name returning %s as-is",patch)
- end
- return name
-end
-
-function active_set(newset)
- vl("active_set(%s) called",newset)
- if newset and type(newset) == "number" then
- pawdata.curr_set_ind = clamp(newset,1,#set_index)
- pawdata.curr_set_name = set_index[pawdata.curr_set_ind].id
- pawdata.curr_set_data = icon_sets[pawdata.curr_set_name]
- current_active_set = pawdata.curr_set_name
- local setdata = pawdata.curr_set_data
- pawdata.curr_ico_name = setdata.active_icon
- pawdata.curr_ico_ind = setdata.ri[root_patch_name(pawdata.curr_ico_name)]
- map_pin_icon = pawdata.curr_ico_name
- vl("active set is now %s (%s), current icon %s (%s)",pawdata.curr_set_name,pawdata.curr_set_ind,pawdata.curr_ico_name,pawdata.curr_ico_ind)
- end
- return pawdata.curr_set_name
-end
-
-function get_next_icon()
- local setdata = pawdata.curr_set_data
- return setdata.ii[next_ico_i()]
-end
-
-function get_prev_icon()
- local setdata = pawdata.curr_set_data
- return setdata.ii[prev_ico_i()]
-end
-
-function get_active_icon(newico)
- if newico and type(newico) == "number" then
- vl("Setting new icon to index %s",newico)
- local setdata = pawdata.curr_set_data
- pawdata.curr_ico_ind = clamp(newico,1,setdata.inum)
- pawdata.curr_ico_name = setdata.ii[pawdata.curr_ico_ind]
- setdata.active_icon = pawdata.curr_ico_name
- map_pin_icon = pawdata.curr_ico_name
- end
- return pawdata.curr_ico_name
-end
-
-function notify_icon_change(newset)
- local setdata = pawdata.curr_set_data
- local icon = setdata.active_icon
- local td = texture_data[icon]
- local tex = td.t
- local tiptext = ts("st_paw_change_icon").." "..ts("ui_mcm_lst_"..icon)
-
- if newset then
- local name = ts(setdata.name)
- local settext = string.format(ts("st_paw_change_set"),name)
- tiptext = settext .. tiptext
- end
- dotip(tiptext,2,nil,false,tex)
-end
-
-
-
-function cycle_icons(cycle_dir,dotip)
- --printf("cycle_icons: curr_set: %s (%s)",pawdata.curr_set_name,pawdata.curr_set_ind)
- if cycle_dir and type(cycle_dir) ~= "number" then return end
- local setdata = pawdata.curr_set_data
- local next_ind = roll(pawdata.curr_ico_ind + cycle_dir,1,setdata.inum)
- get_active_icon(next_ind)
- if use_ui_snd then play_sound_for_actor(snd_cycle_blip) end
- if dotip then notify_icon_change() end
-end
-
-function cycle_sets(cycle_dir,dotip)
- if cycle_dir and type(cycle_dir) ~= "number" then return end
- local next_ind = roll(pawdata.curr_set_ind + cycle_dir,1,#set_index)
- active_set(next_ind)
- if use_ui_snd then play_sound_for_actor(snd_cycle_blip) end
- if dotip then notify_icon_change(true) end
-end
-
-function icon_cycle(change,val)
- if not mwheel_enabled then return end
- if change then
- icon_cycle_active = val
- if not mwheel_notify then return icon_cycle_active end
- if icon_cycle_active then
- dotip(ts("st_paw_cycling_icons"))
- else
- dotip(ts("st_paw_mwheel_normal"))
- end
- end
- return icon_cycle_active
-end
-
-function set_cycle(change,val)
- if not mwheel_enabled then return end
- if change then
- set_cycle_active = val
- if not mwheel_notify then return icon_cycle_active end
- if set_cycle_active then
- dotip(ts("st_paw_cycling_sets"))
- else
- dotip(ts("st_paw_mwheel_normal"))
- end
- end
- return set_cycle_active
-end
-
-function cycle_items(cycle_dir,item_type,dotip)
- if (item_type == nil) then
- if icon_cycle() then
- item_type = "icon"
- elseif set_cycle() then
- item_type = "set"
- end
- end
- if not icoset_changed then icoset_changed = {} end
- if item_type == "icon" then
- icoset_changed.i = true
- vl("cycling icons: %s",cycle_dir)
- cycle_icons(cycle_dir,dotip)
- elseif item_type == "set" then
- icoset_changed.s = true
- vl("cycling sets: %s",cycle_dir)
- cycle_sets(cycle_dir,dotip)
- end
-end
-
-
-function show_all_pins(onoff)
- show_pins = onoff
- if onoff then
- vl("Showing all recorded pins")
- for id,pin in pairs(pins) do
- local icon = pin.icon
- local mapspot_text = pin.text
- vl("calling add_mapspot with %s | %s | %s",mapspot_text,id,icon)
- add_mapspot(mapspot_text,id,icon)
- end
- else
- vl("Hiding stored pins from map")
- for id,pin in pairs(pins) do
- remove_mapspot(id,pin.icon)
- end
- end
-end
-
-
-function load_mcm(pawpath,default)
- local val = ui_mcm and ui_mcm.get("pawsys/"..pawpath)
- if val ~= nil then
- return val
- else
- return default
- end
-end
-
-function marker_hint_shown(wpin)
- local mode = show_marker_hint and tonumber(show_marker_hint[wpin])
- local shown = feature_valid_in_mode(mode)
- return shown
-end
-
-
-function marker_dist_shown(wpin)
- local mode = show_marker_dist and tonumber(show_marker_dist[wpin])
- local shown = feature_valid_in_mode(mode)
- return shown
-end
-
-
-function mcm_reload_general_settings()
- if not ui_mcm then return end
- local old_paw_en = paw_enabled
- paw_enabled = load_mcm("pawgen/enabled",paw_enabled)
-
- if paw_enabled and not old_paw_en then
- on_game_start()
- dl("PAW was disabled and now is not, re-registering actor_on_update")
- elseif not paw_enabled then
- if old_paw_en then
- unregister_all_callbacks()
- end
- printf(logprefix.."Personal Adjustable Waypoint has been disabled, aborting all further action!")
- return false end
-
- disable_load_warning = load_mcm("pawgen/disable_load_warning",disable_load_warning)
- wp_hud_icon_enabled = load_mcm("pawgen/wp_hud_icon_enabled",wp_hud_icon_enabled)
- if wp_hud_icon_enabled then
- show_marker_dist["wp"] = tonumber(load_mcm("pawgen/show_dist_wp",show_marker_dist["wp"]))
- show_hud_waypoint()
- else
- hide_hud_waypoint()
- end
- show_marker_dist["pins"] = tonumber(load_mcm("pawgen/show_dist_pins",show_marker_dist["pins"]))
- show_marker_hint["pins"] = tonumber(load_mcm("pawgen/show_hint_pins",show_marker_hint["pins"]))
- pin_near_fade_dist = tonumber(load_mcm("pawgen/pin_near_fade_dist",pin_near_fade_dist))
- pin_far_fade_dist = tonumber(load_mcm("pawgen/pin_far_fade_dist",pin_far_fade_dist))
- pin_far_hide_dist = tonumber(load_mcm("pawgen/pin_far_hide_dist",pin_far_hide_dist))
- wp_clear_dist = tonumber(load_mcm("pawgen/wp_clear_dist",wp_clear_dist))
- tip_on_icoset_change = load_mcm("pawgen/tip_on_icoset_change",tip_on_icoset_change)
- welcome_msg_shown = load_mcm("pawgen/welcome_msg_shown",welcome_msg_shown)
- enable_wp_proxcheck = wp_clear_dist and wp_clear_dist > 0
- mcm_update_throttle = load_mcm("pawgen/mcm_update_throttle",mcm_update_throttle)
- mwheel_poll_interval = load_mcm("pawgen/mwheel_poll_interval",mwheel_poll_interval)
- -- These last two options are not in the MCM menu, but can be manually set as overrides
- return true
-end
-
-function mcm_reload_keybind_table()
- if not ui_mcm then return end
- for k,v in pairs(keybinds) do
- local kb = load_mcm("pawbinds/bind_"..k)
- local km = load_mcm("pawbinds/modk_"..k)
- local vbkb = valid_bind(kb)
- local vbkm = valid_bind(km)
- if vbkb then
- keybinds[k].bind = kb
- end
- if vbkm then
- keybinds[k].mod = km
- end
- keybinds[k].text = bindtext(kb,km)
- end
-end
-
-function mcm_reload_keybind_settings()
- cartography_must_hold = not load_mcm("pawbinds/cartmode_toggle",cartography_must_hold)
- keybinds[cartmode].hold = cartography_must_hold
- cart_shows_smarts = load_mcm("pawbinds/cart_shows_smarts",cart_shows_smarts)
- mwheel_notify = load_mcm("pawbinds/mwheel_notify")
- cartmode_unfade = load_mcm("pawbinds/cartmode_unfade",cartmode_unfade)
- local tmp = ui_mcm.get("pawsys/pawbinds/mwheel_enabled")
- if tmp and type(tmp) == "number" then
- tmp = (tmp ~= 0)
- end
- mwheel_enabled = tmp and mwheel_avail
-
- tmp = ui_mcm.get("pawsys/pawbinds/mwheel_override")
- if tmp ~= nil then
- dl("MCM override found for mwheel_avail (old = %s | new = %s)",mwheel_avail,tmp)
- mwheel_avail = tmp
- end
-
- tmp = ui_mcm.get("pawsys/pawbinds/right_click_override")
- -- if set to true, will force on_map_right_click support on
- if tmp ~= nil then
- dl("MCM override found for right_click_avail (old = %s | new = %s)",right_click_avail,tmp)
- right_click_override= tmp
- end
-
- tmp = ui_mcm.get("pawsys/pawgen/disable_mcmups")
- if tmp ~= nil then
- dl("MCM override found for disable_mcm_updates (old = %s | new = %s)",disable_mcm_updates,tmp)
- disable_mcm_updates = tmp
- end
-
- tmp = load_mcm("pawgen/pingsound")
- if tmp ~= nil then
- use_ping_snd = tmp
- end
-end
-
-function mcm_reload_pin_settings()
- patch_res = ui_mcm.get("pawsys/pawpins/patch_res") or "badge"
- local bi = ui_mcm.get("pawsys/pawpins/milpda_body_icon")
- local pig = ui_mcm.get("pawsys/pawpins/pin_icon_group")
- --local mp = ui_mcm.get("pawsys/pawpins/poi_icon_"..(pig or ""))
- local cbi = ui_mcm.get("pawsys/pawpins/poi_icon_bodies")
-
- for k,v in pairs(icons) do
- if managed_factions[k] then
- local newbadge = "paw_"..patch_res..sep..k
- vl("MCM: icon for %s was %s, is now %s",k,v,newbadge)
- icons[k] = newbadge
- end
- end
-
- load_active_icoset_data()
- local icon = pig and icon_sets[pig] and icon_sets[pig].active_icon or default_mapspot
- icon_sets["bodies"].active_icon = icons[cbi]
- dl("MCM: body icon mode %s | paw icon %s",bi,cbi)
- map_pin_icon = icon
- current_active_set = pig
-
- dl("MCM: icon %s | icon set: %s",icon,pig)
-
- local cp = ui_mcm.get("pawsys/pawpins/use_custom_pin_icon") or false
- if cp then
- custom_pin_icon = true
- map_pin_icon = ui_mcm.get("pawsys/pawpins/custom_pin_icon") or map_pin_icon
- dl("MCM: Overriding default icon with custom value: %s",map_pin_icon)
- else
- custom_pin_icon = false
- end
- if force_icon_override then
- dl("MCM: Script hardcoded to override map_pin_icon with %s",force_icon_override)
- map_pin_icon = force_icon_override
- default_mapspot = force_icon_override
- end
-
- if (bi and ish_kill_tracker) then
- body_icon_mode = bi
- current_body_icon = icons[cbi] or default_mapspot
- ish_kill_tracker.use_paw_icon = (bi == "set") or (bi == "fac")
- end
- widget_enabled = load_mcm("pawhud/widget_enable",widget_enabled)
- active_theme = load_mcm("pawhud/active_theme",active_theme)
- if not hud_themes[active_theme] then active_theme = "classicauto" end
- widget_custom_pos = {
- x = load_mcm("pawhud/pos_x"),
- y = load_mcm("pawhud/pos_y")
- }
- widget_use_custom_pos = load_mcm("pawhud/custompos")
- widget_hide_delay = (tonumber(load_mcm("pawhud/autohide",widget_hide_delay)) * 1000)
- use_ui_snd = load_mcm("pawhud/hudsound")
-
- --[[
- local mdf = clamp(tonumber(ui_mcm.get("pawsys/pawpins/fave_recent")),0,10)
- if mdf and (mdf ~= max_dynamic_faves) then
- local old_mdf = max_dynamic_faves
- max_dynamic_faves = mdf
- dl("new max_dynamic_faves: %s (was %s)",mdf,old_mdf)
- if dynamic_faves and (not is_empty(dynamic_faves)) and
- (max_dynamic_faves > 0) then
- local df = {}
- for i = 1,max_dynamic_faves do
- if dynamic_faves[i] then
- vl("dynamic_fave[%s]: %s",i,dynamic_faves[i])
- df[i] = dynamic_faves[i]
- end
- end
- dynamic_faves = df
- end
- end
- --]]
-end
-
-function mcm_reload_reticle_settings()
- if ui_mcm then
- mark_on_positive_id = load_mcm("pawret/enable_autotag",mark_on_positive_id)
- autotag_persistence = load_mcm("pawret/autotag_persistence",autotag_persistence)
- autotag_lifetime = load_mcm("pawret/autotag_lifetime",(autotag_lifetime / 6)) * 6
- autotags_time_out = (autotag_lifetime or 0) > 0
- pin_hud_icon_default = load_mcm("pawret/pin_auto_visible",pin_hud_icon_default)
- manual_smart_pins = load_mcm("pawret/manual_smart_pins",manual_smart_pins)
- reticle_mode = load_mcm("pawret/reticle_mode",reticle_mode)
- reticle_mustzoom = load_mcm("pawret/reticle_mustzoom",reticle_mustzoom)
- reticle_color.a = load_mcm("pawret/reticle_alpha",reticle_color.a)
- ret_fade_attack_time = load_mcm("pawret/ret_fade_attack_time",ret_fade_attack_time)
- ret_fade_decay_time = load_mcm("pawret/ret_fade_decay_time",ret_fade_decay_time)
- for k,v in pairs(smart_pins) do
- smart_pins[k].pin = load_mcm("pawret/"..k,v.pin)
- smart_pins[k].enabled = load_mcm("pawret/"..k.."_enable",v.enabled)
- end
- -- Load Crook's facid settings, if present
- local did = ui_mcm.get("targetID/timeID")
- if did ~= nil then
- npc_ident.delay_id = did
- end
- did = ui_mcm.get("targetID/deadID")
- if did ~= nil then
- npc_ident.id_bodies = did
- end
- npc_ident.id_speed = ui_mcm.get("targetID/speedID") or 0.3
- npc_ident.lenience = ui_mcm.get("targetID/targL") or 0.99
- end
-end
-
-
-function on_option_change()
- if load_failed then return end
- -- Sync all MCM values and propagate changes
- language = ui_options.curr_localization()
- if ui_mcm and not mcm_killswitch then
- debuglogs = load_mcm("pawgen/debuglogs",debuglogs)
- catsy_paw_mcm.debuglogs = debuglogs
- dl("Setting for debuglogs loaded from MCM: %s",debuglogs)
-
- if load_mcm("pawgen/wipe_all") then
- ui_mcm.set("pawsys/pawgen/wipe_all",false)
- dl("MCM: Wiping all pin data per player request")
- local args = {wipe_all=true}
- do_waypoint("pn_clr",nil,nil,args)
- end
-
- mcm_reload_general_settings()
- if not paw_enabled then
- return
- end
- mcm_reload_keybind_table()
- mcm_reload_keybind_settings()
- mcm_reload_pin_settings()
- mcm_reload_reticle_settings()
-
- for k,v in pairs(action_codes) do
- local m = load_mcm("pawmenu/"..k)
- if m ~= nil then
- action_codes[k].mode = tonumber(m) or 0
- vl("MCM: Loading action code mode %s for %s",m,k)
- else
- vl("MCM: No value found for %s, leaving unchanged",k)
- end
- end
- ui_mcm.set("pawsys/pawgen/mcm_ver",script_version)
- end
-
- if ish_kill_tracker and item_milpda then ish_kill_tracker.on_option_change() end
- active_set(icon_sets[current_active_set].i)
- if db.actor and get_hud() then
- unsquish_ratio = (device().height / device().width) / (768 / 1024)
- reset_indicator()
- end
-end
-
-
-function load_active_icoset_data()
- if not ui_mcm then return end
- vl("Loading MCM values for sets and icons")
- local path = "pawsys/pawpins/poi_icon_"
- for k,v in pairs(icon_sets) do
- local val = ui_mcm.get(path..k)
- local icon = icons[val]
- --printf("loading "..path..k..": %s | icons %s | icons[%s]: %s",val,icons,val,icons[val])
- vl("Loading active icon for %s: %s = %s",k,val,icon)
- icon_sets[k].default = val
- icon_sets[k].active_icon = icon
- end
- local setname = ui_mcm.get("pawsys/pawpins/pin_icon_group")
- if set_index[setname] then
- active_set(set_index[setname])
- end
-end
-
-function update_mcm_icoset_data()
- if not ui_mcm then return end
- if icoset_changed then
- vl("Updating MCM settings after set/icon change",icoset_changed)
- local curr_set = pawdata.curr_set_name
- if icoset_changed and icoset_changed.s then
- ui_mcm.set("pawsys/pawpins/pin_icon_group",curr_set)
- end
- local path = "pawsys/pawpins/poi_icon_"..curr_set
- local active_pin = pin_for_icon(icon_sets[curr_set].active_icon)
- ui_mcm.set(path,active_pin)
- end
- icoset_changed = nil
-end
-
-function check_waypoint_proximity(id)
- local se_obj = id and alife_object(id)
- if (not se_obj) or not (se_obj and se_obj.online) then return end
- local szpos = se_obj.position
- local dist = szpos:distance_to(db.actor:position()) or 0
- if dist <= wp_clear_dist then
- toggle_waypoint(false)
- end
-end
-
-function tick()
- if not paw_enabled then
- unregister_all_callbacks()
- return
- end
- local now = time_global()
- if enable_wp_proxcheck and waypoint_active and (next_wp_proxcheck <= now) then
- next_wp_proxcheck = now + wp_proxcheck_interval
- check_waypoint_proximity(placed_waypoint and placed_waypoint.id)
- end
- if (next_gc_check <= now) then
- next_gc_check = now + garbcollect_interval
- script_zone_cleanup()
- temp_pin_cleanup()
- end
- if disable_mcm_updates then return end
- if (next_mcm_update > now) or not icoset_changed then return end
- next_mcm_update = now + mcm_update_throttle
- update_mcm_icoset_data()
-end
-
-function paw_welcome_message()
- if welcome_msg_shown then return true end
- vl("Welcome message not shown yet, displaying to player")
- welcome_msg_shown = true
- if ui_mcm then
- ui_mcm.set("pawsys/pawgen/welcome_msg_shown",true)
- end
- local player_name = alife():actor():character_name()
- local kb = keybinds
- toggle_bind = kb["wptoggle"].bind
- toggle_mod = kb["wptoggle"].mod
- quickpin_bind = kb["quickpin"].bind
- quickpin_mod = kb["quickpin"].mod
- cart_mode_hold = kb["cartmode"].bind
- cart_mode_mod = kb["cartmode"].mod
- local toggle_btxt = bindtext(toggle_bind,toggle_mod)
- local quickpin_btxt = bindtext(quickpin_bind,quickpin_mod)
- local cartmode_btxt = bindtext(cart_mode_hold,cart_mode_mod)
- local welcome_msg = string.format(ts("st_pawsys_welcome_msg"),toggle_btxt,quickpin_btxt,cartmode_btxt,player_name)
- welcome_msg = psk(welcome_msg,text_colors)
- dotip(welcome_msg,10000)
- return true
-end
--- ======================================================================
--- UI ELEMENTS
--- ======================================================================
-
--- ======================================================================
---[[ TEXT INPUT WINDOW
- Originally adapted from parts of the vanilla backpack stash script
-
- A more generic, parameterized version used to ship with PAW as its
- own mod (ui_get_input.script)
--- ====================================================================]]
-
-InputGUI = nil
-
-function get_text(title_txt,icon_tex,prepop,func,args)
- dl("get_text called:\nTitle: %s\nIcon: %s\nExisting text: %s",title_txt,icon_tex,prepop)
- tex = texdef or tex_defs
- args = args or {}
-
- if not InputGUI then
- InputGUI = UITextInputWnd(title_txt,icon_tex,prepop,func,args)
- end
-
- if InputGUI and not InputGUI:IsShown() then
- InputGUI:Reset(title_txt,icon_tex,prepop,func,args)
- InputGUI:ShowDialog(true)
- Register_UI("UITextInputWnd","get_text")
- end
-end
-
--- ======================================================================
-
-class "UITextInputWnd" (CUIScriptWnd)
-
-function UITextInputWnd:__init(title_txt,icon_tex,prepop,func,args) super()
- vl("UITextInputWnd:__init:\nTitle: %s\nIcon: %s\nExisting text: %s",title_txt,icon_tex,prepop)
- self.title_txt = title_txt
- self.icon_tex = icon_tex
- self.prepop = prepop
- self.func = func
- self.args = args
- self:InitControls()
- self:InitCallBacks()
-end
-
-function UITextInputWnd:__finalize()
-end
-
-function UITextInputWnd:InitControls()
- self:SetWndRect(Frect():set(0,0,1024,768))
- self:SetAutoDelete(true)
-
- local tex = {
- file = "paw_input_window.xml",
- tbar = "titlebar",
- paw = "paw",
- icon = "icon",
- text = "text",
- root = "dialog",
- bg = "background",
- input = "input",
- ok = "btn_ok",
- cancel = "btn_cancel",
- }
-
- local xml = CScriptXmlInit()
- local tbar = tex.root..":"..tex.tbar
- local paw = tbar..":"..tex.paw
- local icon = tbar..":"..tex.icon
- local text = tbar..":"..tex.text
- local bg = tex.root..":"..tex.bg
- local cancel = tex.root..":"..tex.cancel
- local input = tex.root..":"..tex.input
- local ok = tex.root..":"..tex.ok
-
- xml:ParseFile (tex.file)
-
- self.dialog = xml:InitStatic(tex.root, self)
- xml:InitStatic(bg, self.dialog)
- self.tbar = xml:InitStatic(tbar,self.dialog)
- self.paw = xml:InitTextWnd(paw,self.tbar)
- self.paw:SetText("PAW".." "..script_version)
- self.paw:SetFont(GetFontSmall())
- self.icon = xml:InitStatic(icon, self.tbar)
- if self.icon_tex then
- self.icon:InitTexture(self.icon_tex)
- else
- dl("Empty icon texture passed to input window")
- end
- self.text = xml:InitTextWnd(text, self.tbar)
- self.text:SetText(self.title_txt)
- self.text:SetFont(GetFontGraffiti22Russian())
-
- self.input = xml:InitEditBox(input,self.dialog)
- self:Register(self.input,"fld_input")
- self.input:SetText(self.prepop)
-
- local btn = xml:Init3tButton(cancel, self.dialog)
- self:Register(btn,tex.cancel)
-
- btn = xml:Init3tButton(ok, self.dialog)
- self:Register(btn,tex.ok)
-end
-
-
-function UITextInputWnd:InitCallBacks()
- self:AddCallback("btn_ok", ui_events.BUTTON_CLICKED, self.OnAccept, self)
- self:AddCallback("btn_cancel", ui_events.BUTTON_CLICKED, self.Close, self)
-end
-
-
-function UITextInputWnd:Reset(title_txt,icon_tex,prepop,func,args)
- self.icon_tex = icon_tex
- self.title_txt = title_txt
- self.prepop = prepop
- self.func = func
- self.args = args
- if self.title_txt then
- self.text:SetText(self.title_txt)
- end
- if self.icon_tex then
- self.icon:InitTexture(self.icon_tex)
- end
- self.input:SetText("")
-end
-
-
-function UITextInputWnd:Update()
- CUIScriptWnd.Update(self)
-end
-
-
-function UITextInputWnd:OnAccept()
- local text_input = self.input:GetText()
- if text_input == "" then text_input = nil end
- dl("OnAccept: text_input is %s",text_input)
- if self.func then
- exec(self.func,text_input,self.args)
- end
- self:Close()
-end
-
-
-function UITextInputWnd:OnKeyboard(dik, keyboard_action)
- local res = CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
- if (res == false) then
- local bind = dik_to_bind(dik)
- if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
- if dik == DIK_keys.DIK_ESCAPE then
- self:Close()
- end
- end
- end
- return res
-end
-
-
-function UITextInputWnd:Close()
- self:HideDialog()
- Unregister_UI("UITextInputWnd")
-end
-
--- ======================================================================
---[[ ICON AND SET HUD INDICATOR
- See the hud_themes table and PAW's MCM menu for more info
--- ====================================================================]]
-
-
-GUI = nil
-
-class "UIPAWIndicator" (CUIScriptWnd)
-
-function UIPAWIndicator:__init() super()
- vl("PAW init called, active theme is %s | widget_active %s | widget_enabled %s",active_theme,widget_active,widget_enabled)
- if not widget_enabled then return end
- self.theme = hud_themes[active_theme]
- self:InitControls()
- self:DrawIndicator(self.theme)
- get_hud():AddDialogToRender(self)
- RegisterScriptCallback("actor_on_net_destroy", self)
-end
-
-
-function UIPAWIndicator:__finalize()
-end
-
-
-function UIPAWIndicator:Reset(theme)
- vl("UIPAWIndicator:Reset called with theme %s",theme and theme.name)
- if not theme then theme = self.theme end
- self.dialog:Show(false)
- self.dialog = nil
- self:InitControls()
- self:DrawIndicator(theme)
-end
-
-function UIPAWIndicator:Destroy()
- get_hud():RemoveDialogToRender(self)
-end
-
-
-function UIPAWIndicator:SetTheme(theme_name)
- vl("UIPAWIndicator:SetTheme called with theme_name %s",theme_name)
- local theme = hud_themes and hud_themes[theme_name]
- if theme then
- self.dialog:Show(false)
- active_theme = theme_name or active_theme
- self.theme = hud_themes[active_theme]
- self:Reset(theme)
- end
-end
-
-
-function UIPAWIndicator:actor_on_net_destroy()
- get_hud():RemoveDialogToRender(self)
-end
-
-
-function UIPAWIndicator:DrawIndicator(theme)
- vl("UIPAWIndicator:DrawIndicator called with theme %s | self %s",theme and theme.name,self.theme)
- local pos = theme.pos
- if widget_use_custom_pos then pos = widget_custom_pos end
- local xml = CScriptXmlInit()
- xml:ParseFile(theme.file)
-
- self.dialog = xml:InitStatic(theme.node, self)
- self.dialog:SetWndPos(vector2():set(pos.x,pos.y))
- if theme.tex then
- self.dialog:InitTexture(theme.tex)
- end
- self.box_curr = xml:InitStatic(theme.node..":curr", self.dialog)
- self.box_curr:InitTexture(texture_for_icon(self.icon_curr))
-
- if theme.style ~= "compact" then
- self.box_prev = xml:InitStatic(theme.node..":prev", self.dialog)
- self.box_prev:InitTexture(texture_for_icon(get_prev_icon()))
-
- self.box_next = xml:InitStatic(theme.node..":next", self.dialog)
- self.box_next:InitTexture(texture_for_icon(get_next_icon()))
-
- self.box_head = xml:InitStatic(theme.node..":head",self.dialog)
- self.box_text = xml:InitTextWnd(theme.node..":head",self.box_head)
- self.box_prev:SetTextureColor(colors.dimmed)
- self.box_next:SetTextureColor(colors.dimmed)
- end
- if theme.style == "full" then
- self.box_text:SetText(ts("ui_mcm_lst_pawsys_pg_"..self.set_curr))
- self.box_head2 = xml:InitStatic(theme.node..":head2",self.dialog)
- self.box_text2 = xml:InitTextWnd(theme.node..":head2",self.box_head2)
- self.box_text2:SetText(ts("ui_mcm_lst_"..self.icon_curr))
- elseif theme.style == "minimal" then
- self.box_text:SetText(ts("ui_mcm_lst_"..self.icon_curr))
- end
- vl("UIPAWIndicator:DrawIndicator completed")
-end
-
-
-function UIPAWIndicator:InitControls()
- self.pda_active = item_device.is_pda_active()
- self.icon_curr = get_active_icon()
- self.set_curr = pawdata.curr_set_name
- vl("UIPAWIndicator:InitControls: active icon is %s",self.icon_curr)
-end
-
-
-function UIPAWIndicator:Update(force)
- CUIScriptWnd.Update(self)
- self.dialog:Show(false)
- if not (widget_enabled and main_hud_shown()) then return end
-
- local theme = self.theme
- local pda_changed = false
-
- if self.pda_active ~= item_device.is_pda_active() then
- pda_changed = true
- end
- if item_device.is_pda_active() then
- local thm = theme.pda_thm
- if thm then
-
- theme = hud_themes[thm]
- end
- end
- if pda_changed then
- vl("PDA mode has changed, resetting theme")
- self:Reset(theme)
- end
-
- if theme.tex then self.dialog:InitTexture(theme.tex) end
- local pos = theme.pos
- if widget_use_custom_pos then
- pos = widget_custom_pos
- end
-
- self.dialog:SetWndPos(vector2():set(pos.x,pos.y))
-
- local acticon = pawdata.curr_ico_name
- if (self.icon_curr ~= acticon) or (self.set_curr ~= pawdata.curr_set_name) then
- vl("UIPAWIndicator:Update - icon/set has changed (new curr icon: %s)",acticon)
- self.set_curr = pawdata.curr_set_name
- self.icon_curr = acticon
- self.box_curr:InitTexture(texture_for_icon(self.icon_curr))
- if theme.style ~= "compact" then
- self.box_prev:InitTexture(texture_for_icon(get_prev_icon()))
- self.box_next:InitTexture(texture_for_icon(get_next_icon()))
- end
- if theme.style == "full" then
- self.box_text:SetText(ts("ui_mcm_lst_pawsys_pg_"..self.set_curr))
- self.box_text2:SetText(ts("ui_mcm_lst_"..self.icon_curr))
- elseif theme.style == "minimal" then
- self.box_text:SetText(ts("ui_mcm_lst_"..self.icon_curr))
- end
- widget_last_used = time_global()
- widget_active = true
- end
- if widget_hide_delay > 0 then
- if time_global() > widget_last_used + widget_hide_delay then widget_active = false end
- end
- self.dialog:Show(widget_active)
-end
-
-
-function reset_indicator()
- vl("Resetting PAW indicator")
- if GUI then GUI:Destroy() end
- if not widget_enabled then return end
- vl("Re-initializing PAW indicator")
- GUI = UIPAWIndicator()
-end
-
-
-function show_indicator(tf)
- if not (GUI and widget_enabled) then return end
- if show_indicator == nil then
- widget_active = -widget_active
- else
- widget_active = (tf == true) or false
- end
- GUI:Show(widget_active)
-end
-
-
--- ======================================================================
---[[ WAYPOINT AND PIN HUD ICONS
- Some pieces adapted from GT's "HUD Ubisoft Friendly" addon
--- ====================================================================]]
-
-function unsquish_aspect(element)
- local w = element:GetWidth()
- local h = element:GetHeight()
- element:SetWndSize(vector2():set((w*unsquish_ratio),h))
-end
-
-function dist_from_crosshair(position)
- local toPoint = vector():set(position):sub(device().cam_pos):normalize()
- return toPoint:dotproduct(device().cam_dir)
-end
-
---[[
-animate_texture(
- container,
- 500,
- {512.5,384.5},
- {512.5,384.5},
- {0,0},
- {200, 200},
- 1,
- 0,
- function() printf("anim_finished") end,
- function(x) return x^2 end
-)
---]]
-
-function easing_outquint(x)
- if not x then return end
- return 1 - math.pow(1 - x, 5)
-end
-
-function easing_inquint(x)
- if not x then return end
- return x * x * x * x * x
-end
-
-function abort_fade_in()
- return HUD_RET.fading_out or not HUD_RET.fading_in
-end
-
-function abort_fade_out()
- return HUD_RET.fading_in or not HUD_RET.fading_out
-end
-
-
-function animate_texture(element, duration, start_pos, end_pos, start_size, end_size, alpha_start, alpha_end , on_finish_func, anim_curve_modifier_func, r, g, b)
- r = r or 255
- g = g or 255
- b = b or 255
-
- local anim_state = 0
- local start_time = time_global()
- local end_time = time_global() + duration
- local anim_curve_modifier_func = anim_curve_modifier_func or function(x) return x end
- CreateTimeEvent("animate_texture", time_global(), 0, function()
- local x = anim_curve_modifier_func(anim_state)
- local pos_x = lerp(start_pos.x, end_pos.x, x)
- local pos_y = lerp(start_pos.y, end_pos.y, x)
-
- local size_x = lerp(start_size.x, end_size.x, x)
- local size_y = lerp(start_size.y, end_size.y, x)
-
- local alpha = lerp(alpha_start, alpha_end, x)
-
-
- if anim_state == 1 then
- if on_finish_func then on_finish_func() end
- return true
- end
- anim_state = math.min(1, normalize(time_global(), start_time, end_time))
- end)
-end
-
-local active_anims = {}
-
-function anim_fade(box,alpha_start,alpha_end,duration,event_id,instanced, r, g, b, anim_curve_modifier_func, on_finish_func,abort_func)
- if not box then return end
- local fade_dir = (alpha_start > alpha_end) and "out" or "in"
- dl("anim_fade: start %s end %s dur %s | event_id %s | instanced %s ",alpha_start,alpha_end, duration,event_id,instanced)
- if (event_id == nil) then event_id = "anim_fade" end
- local anim_id = event_id.."_"..tostring(time_global())
- r = r or 255
- g = g or 255
- b = b or 255
-
- if active_anims[event_id] then
- alpha_start = active_anims[event_id].a
- dl("Repeat invocation of non-instanced fade event, aborting fade-%s and starting new at current alpha (%s)",fade_dir,alpha_start)
- active_anims[event_id] = nil
- if on_finish_func then on_finish_func(box,event_id,alpha_end,r,g,b) end
- --anim_fade(box,alpha_start,alpha_end,duration,event_id,instanced, r, g, b, anim_curve_modifier_func, on_finish_func,abort_func)
- --return true
- end
-
- local anim_state = 0
- local start_time= time_global()
- local end_time = time_global() + duration
- local anim_curve_modifier_func = anim_curve_modifier_func or function(x) return x end
- active_anims[event_id] = {
-
- box = box,
- instanced = instanced and true or false,
- anim_id = anim_id,
- start_time = start_time,
- end_time = end_time,
- active = true,
- a_start = alpha_start,
- a_end = alpha_end,
- a = alpha_start,
- r = r,
- g = g,
- b = b,
- }
-
- --vl("Creating fade-%s time event %s | %s",fade_dir,event_id,anim_id)
- CreateTimeEvent("animate_fade"..event_id..anim_id, time_global(), 0, function()
- local abort = abort_func and abort_func()
- if abort then
- vl("Received abort for %s",event_id)
- anim_state = 1
- else
- local anim = active_anims[event_id]
- if anim then
- local x = anim_curve_modifier_func(anim_state)
- local alpha = lerp(alpha_start, alpha_end, x)
- anim.a,anim.r,anim.g,anim.b = alpha,r,g,b
- box:SetTextureColor(GetARGB(alpha,r,g,b))
- --vl("Fade-%s time event: setting transparency for %s to %s at time %s",fade_dir,event_id,alpha,time_global())
- else
- vl("Event data for %s has cleared, aborting",event_id)
- anim_state = 1
- end
- end
-
- if (anim_state == 1) then
- vl("Fade-%s animation %s completed at %s",fade_dir,event_id,time_global())
- if on_finish_func then on_finish_func(box,event_id,alpha_end,r,g,b) end
- return true
- end
- anim_state = math.min(1, normalize(time_global(), start_time, end_time))
- end)
-end
-
-function fade_by_dist(element,dist,min,mid,max,alpha,r,g,b,mode)
- -- 0 : fade Static element
- -- 1 : fade text in Static
- -- 2 : fade text in TextWnd
-
- alpha = alpha or 255
- r = r or 255
- g = g or 255
- b = b or 255
- if not (cart_mode and cartmode_unfade) then
- if (dist <= min) then
- if dist < min then
- alpha = alpha * (dist / min)
- end
- elseif dist > mid then
- if (mid > 0) then
- if (dist > (mid + max)) then
- alpha = 0
- elseif dist > mid then
- alpha = alpha * (1 - ((dist - mid) / max))
- end
- end
- end
- end
- if mode == 1 then
- element:TextControl():SetTextColor(GetARGB(alpha,r,g,b))
- elseif mode == 2 then
- element:SetTextColor(GetARGB(alpha,r,g,b))
- else
- element:SetTextureColor(GetARGB(alpha,r,g,b))
- end
-end
-
-
-function scale_by_dist(element,dist,w,h,min,mid,max,unsquish)
- --printf("scale_by_dist for %sx%s element at dist %s | unsquish %s | %s - %s - %s ",w,h,dist,unsquish,min,mid,max)
- dist = clamp(dist,0,max)
- local nw = w
- local nh = h
- if (dist <= min) then
- nw = w + ((1 - (dist / min)) * (w * 0.5))
- nh = h + ((1 - (dist / min)) * (h * 0.5))
- elseif dist > mid then
- nw = w - (((dist - mid) / (max - mid)) * (w * 0.4)) -- trying 0.4 rather than 0.3 to bring down min size
- nh = h - (((dist - mid) / (max - mid)) * (h * 0.4))
- end
-
- if unsquish then
- nw = nw * unsquish_ratio
- end
- --printf("scale_by_dist for %sx%s element:\nw %s -> nw %s | h %s -> nh %s | ratio: %s",element:GetWidth(),element:GetHeight(),w,nw,h,nh,unsquish_ratio)
-
- return nw,nh
-end
-
-
-local function zoom_delay_over() zoom_delay = false end
-local zoom_delay = false
-local last_zoom_coef = 1
-local last_zoom_state = false
-
-function get_current_zoom_coef()
- if zoom_delay then return last_zoom_coef end
-
- local obj = db.actor:active_item()
- if (obj and IsWeapon(obj)) then
- local wpn = obj:cast_Weapon()
- end
-
- local is_zoomed = axr_main.binoc_is_zoomed or (wpn and wpn:IsZoomed())
- if is_zoomed ~= last_zoom_state then
- last_zoom_state = is_zoomed
- zoom_delay = true
- CreateTimeEvent("zoomdelay","paw_zoom"..tostring(time_global()),0.25,tasks_placeable_waypoints.zoom_delay_over)
- return last_zoom_coef
- end
-
- local fov = device().fov
- local zoom_coef = fov / 85
- last_zoom_coef = zoom_coef
-
- return zoom_coef
-end
-
-
-function get_screen_coords(id)
- local pos = nil
- local is_npc,is_place
- local obj = db.storage[id] and db.storage[id].object or level.object_by_id(id)
- local se_obj = alife_object(id)
- --printf(" get_screen_coords: id %s -> obj %s (%s) | se_obj %s",id,obj and obj:name(),obj and obj:id(),se_obj and se_obj:name())
- if not (obj or se_obj) then
- local is_wp = (id == (placed_waypoint and placed_waypoint.id)) and (not waypoint_canceling) and end_waypoint_task(id)
- local pin = pins[id] and do_waypoint("pn_del",se_obj,nil,{syscall=true,id=id})
- local exit = (is_wp and " canceling waypoint and") or (pin and " clearing pin and") or ""
- dl("get_screen_coords: no valid game or server object could be found for %s,%s exiting",id,exit)
- return
- end
-
- if (obj and IsStalker(obj) or IsMonster(obj)) then
- pos = obj and utils_obj.safe_bone_pos(obj,"bip01_head")
- is_npc = true
- --printf(" Pinned object %s is an npc",id)
- elseif (se_obj:clsid() == clsid.smart_terrain) or (se_obj:clsid() == clsid.script_zone) then
- pos = se_obj.position
- is_place = true
- --printf(" Pinned object %s is a place",id)
- elseif (obj and (type(obj.position) == "function")) then
- local tmp = obj:position()
- pos = tmp and vector():set(tmp.x,tmp.y,tmp.z)
- end
-
- if (pos == nil) then
- if not (se_obj and se_obj.online) then
- return nil
- elseif (se_obj:clsid() == clsid.online_offline_group_s) then
- local i = se_obj:commander_id()
- local npc = i and db.storage[i] and db.storage[i].object or level.object_by_id(i)
- pos = npc and utils_obj.safe_bone_pos(npc,"bip01_head")
- is_npc = true
- --printf(" Pinned object %s is an npc squad",id)
- else
- local tmp = se_obj and se_obj.position
- pos = tmp and vector():set(tmp.x,tmp.y,tmp.z)
- end
- end
- if not ((pos and pos.x) and (pos and pos.x) and (pos and pos.z)) then
- dl("WARNING: unable to get valid pos for %s",id)
- return nil
- end
-
- --printf(" pos found for id %s: %s,%s,%s",id,pos and pos.x,pos and pos.y,pos and pos.z)
-
- local dist = db.actor:position():distance_to(pos)
- local true_dist = dist -- store this
- local min_dist = 0 -- distance floor for proximity adjustment range
- local near_dist = 15 -- max dist where proximity adjustment range begins
- local mid_dist = 15 -- dist at which far adjustments begin
- local max_dist = 60 -- distance ceiling for the far adjustment range
- local near_adj = 0 -- max icon vertical position change from proximity
- local far_adj = 1.75 -- max icon vertical position change from distance
- local vert_adj = 0 -- icon position above object will be adjusted by this
-
- if is_place then
- near_adj = 1.2 -- location spots are usually on or in the ground
- elseif is_npc then
- min_dist = 2 -- to allow for npc bounding box
- near_adj = 0.45 -- max increase in height above npc head from proximity < 12m
- end
- local vert_adj = near_adj
- local dist_prog = 0 -- 0 to 1 progress from beginning to end of adjustment range
- local dist_coef = 1 -- 0 to 1 multiplier based on distance
- dist = clamp(dist,min_dist,max_dist)
-
- if (dist <= near_dist) then
- dist_prog = ((near_dist - min_dist) - (dist - min_dist)) * 0.1
- dist_coef = math.abs(math.sqrt(math.pow(dist_prog, 2)))
- vert_adj = near_adj - (near_adj * dist_coef)
- elseif (dist > mid_dist) then
- local far_range = max_dist - mid_dist
- local far_dist = dist - mid_dist
- if dist >= max_dist then
- dist_prog = 1
- else
- dist_prog = (far_dist / far_range)
- end
- dist_coef = dist_prog -- linear
- --dist_coef = math.cos(((1 - dist_prog) * math.pi) / 2) -- eastInSine - this one works ok
- --dist_coef = math.sin((dist_prog * math.pi) / 2) -- easeOutSine
- --dist_coef = math.abs(math.sqrt(math.pow(dist_prog, 2)))
- vert_adj = near_adj + (dist_coef * far_adj)
- end
- --local zoom_coef = get_current_fov_coef() or 1
- local zoom_coef = (device().fov / 85)
-
- pos.y = pos.y + 0.575 + (vert_adj * zoom_coef)
- --printf("* Actor is %s from %s (near_dist %s | max_dist %s\n* dist_prog %s | dist_coef %s\n| Final vertical adjustment: %s",true_dist,id,near_dist,max_dist,dist_prog,dist_coef,vert_adj)
-
- local vec = pos and game.world2ui(vector():set(pos.x,pos.y,pos.z),false)
- --printf("final vec for %s: %s,%s",id,vec and vec.x,vec and vec.y)
- if (vec and (vec.x ~= -9999) and (vec.y ~= 0)) then
- return vec
- end
-
- return nil
-end
-
--- ======================================================================
-
-HUD_MT = nil
-
-function show_hud_waypoint()
- if not db.actor then return end
- if (HUD_MT == nil) then
- HUD_MT = UIPAWHUDWaypoint()
- get_hud():AddDialogToRender(HUD_MT)
- end
-end
-
-function hide_hud_waypoint()
- if not db.actor then return end
- if (HUD_MT ~= nil) then
- HUD_MT:ShowDialog(false)
- get_hud():RemoveDialogToRender(HUD_MT)
- HUD_MT = nil
- end
-end
-
-function update_hud_waypoint()
- if not db.actor then return end
- if (HUD_MT ~= nil) then
- HUD_MT:Update(true)
- end
-end
-
--- ======================================================================
-
-class "UIPAWHUDWaypoint" (CUIScriptWnd)
-
-function UIPAWHUDWaypoint:__init() super()
- self:InitControls()
- RegisterScriptCallback("actor_on_net_destroy", self)
-end
-
-
-function UIPAWHUDWaypoint:__finalize()
-end
-
-
-function UIPAWHUDWaypoint:InitControls()
- self:SetAutoDelete(true)
- self.xml = CScriptXmlInit()
- self.xml:ParseFile("paw_hud_wp_icon.xml")
- self.marker = self.xml:InitStatic("marker",self)
- self.dist = self.xml:InitStatic("marker:distance_sh:distance",self)
- self.dist:TextControl():SetTextColor( GetARGB(255,230,230,230) )
- self.dist:TextControl():SetFont(GetFontSmall())
- self.dist_sh = self.xml:InitStatic("marker:distance_sh",self.dist)
- self.dist_sh:TextControl():SetTextColor( GetARGB(255,0,0,0) )
- self.dist_sh:TextControl():SetFont(GetFontSmall())
- self.dist_sh:SetWndPos(vector2():set(1,1))
- self.wref = self.xml:InitStatic("marker:distance_sh:distance",self.dist)
- self.wref:TextControl():SetFont(GetFontSmall())
- self.wref:Show(false)
-end
-
-
-function UIPAWHUDWaypoint:Destroy()
- get_hud():RemoveDialogToRender(self)
-end
-
-
-function UIPAWHUDWaypoint:actor_on_net_destroy()
- get_hud():RemoveDialogToRender(self)
-end
-
-
-
-function UIPAWHUDWaypoint:ShowMarker(onoff)
- self.dist:Show(onoff and marker_dist_shown("wp"))
- self.dist_sh:Show(onoff and marker_dist_shown("wp"))
- self.marker:Show(onoff)
-end
-
-function UIPAWHUDWaypoint:Update()
- CUIScriptWnd.Update(self)
- if waypoint_active and (main_hud_shown() or axr_main.binoc_is_zoomed or axr_main.scoped_weapon_is_zoomed) and not waypoint_canceling then
- local vec = placed_waypoint and placed_waypoint.id and get_screen_coords(placed_waypoint.id)
- if (vec) then
- self.marker:SetWndPos(vec)
- local id = placed_waypoint and placed_waypoint.id
- local se_obj = id and alife_object(id)
- if se_obj then
- local dist = db.actor:position():distance_to(se_obj.position)
- local h,v = scale_by_dist(self.marker,dist,20,20,50,100,200,true)
- self.marker:SetWndSize(vector2():set(h,v))
- if marker_dist_shown("wp") then
- local pos = self.marker:GetWndPos()
- --local dist_txt = string.format("%.1f",dist)..ts("st_paw_meters_abbr")
- local dist_txt = string.format("%.1f",dist).."m"
- self.dist:Show(false)
- self.dist_sh:Show(false)
- self.dist:TextControl():SetText(dist_txt)
- self.dist_sh:TextControl():SetText(dist_txt)
- self.wref:TextControl():SetText(dist_txt)
- self.wref:AdjustWidthToText()
- local tw = self.wref:GetWidth()
- self.dist:SetWndPos(vector2():set(pos.x - (tw / 2) - 1, pos.y + v - 8))
- end
- self:ShowMarker(se_obj.online and true)
- end
- return
- end
- self:ShowMarker(false)
- else
- self:ShowMarker(false)
- end
-end
-
--- ======================================================================
-
-hud_pin_objs = {}
-
-function update_hud_pins()
- for k,v in pairs(hud_pin_objs) do
- v:Update(true)
- end
-end
-
-function hide_hud_pin(id)
- if not id then return end
- if hud_pin_objs[id] then
- get_hud():RemoveDialogToRender(hud_pin_objs[id])
- hud_pin_objs[id] = nil
- end
-end
-
-function show_hud_pin(id)
- vl("show_hud_pin called for pin ID %s",id)
- if hud_pin_objs[id] then
- hide_hud_pin(id)
- end
- hud_pin_objs[id] = UIPAWHUDPin(id)
- get_hud():AddDialogToRender(hud_pin_objs[id])
-end
-
-function init_hud_pins()
- for k,v in pairs(pins) do
- local id = v and v.id
- if id and v.hud then
- local se_obj = alife_object(id)
- if se_obj and se_obj.online then
- show_hud_pin(id)
- end
- end
- end
-end
-
--- ======================================================================
-
-class "UIPAWHUDPin" (CUIScriptWnd)
-
-function UIPAWHUDPin:__init(id) super()
- self.pin_id = id
- self.pin_se_obj = alife_object(id)
- self:InitControls(id)
- RegisterScriptCallback("actor_on_net_destroy", self)
- RegisterScriptCallback("on_localization_change", self)
- self.med_hint_font = (language == "rus")
-end
-
-
-function UIPAWHUDPin:__finalize()
-end
-
-
-function UIPAWHUDPin:InitControls(id)
- self:SetAutoDelete(true)
- self.xml = CScriptXmlInit()
- self.xml:ParseFile("paw_hud_pin_icon.xml")
- self.marker = self.xml:InitStatic("marker",self)
- local tex = texture_for_icon(pins[id].icon)
- local name = pins[id].text
- self.marker:InitTexture(tex)
-
- self.label = self.xml:InitStatic("marker:label",self)
- self.label:TextControl():SetTextColor( GetARGB(255,230,230,230) )
-
- self.label_sh = self.xml:InitStatic("marker:label_sh",self.label)
- self.label_sh:TextControl():SetTextColor( GetARGB(255,0,0,0) )
- self.label_sh:SetWndPos(vector2():set(1,1))
- self.lref = self.xml:InitStatic("marker:label",self.label)
- self.label:TextControl():SetText(name)
- self.label_sh:TextControl():SetText(name)
- self.lref:TextControl():SetFont(GetFontSmall())
- self.lref:Show(false)
- self:on_localization_change()
- vl("Adding label %s to pin %s",name,self.pin_id)
-
- self.dist = self.xml:InitStatic("marker:distance",self)
- self.dist:TextControl():SetTextColor( GetARGB(255,230,230,230) )
- self.dist:TextControl():SetFont(GetFontSmall())
- self.dist_sh = self.xml:InitStatic("marker:distance_sh",self.dist)
- self.dist_sh:TextControl():SetTextColor( GetARGB(255,0,0,0) )
- self.dist_sh:TextControl():SetFont(GetFontSmall())
- self.dist_sh:SetWndPos(vector2():set(1,1))
- self.wref = self.xml:InitStatic("marker:distance",self.dist)
- self.wref:TextControl():SetFont(GetFontSmall())
- self.wref:Show(false)
- self.last_dist = nil
-
- --local np,dp = self.label:GetWndPos(),self.dist:GetWndPos()
- --local nx,ny,dx,dy = np.x,np.y,dp.x,dp.y
- --printf("Init: name pos %s,%s | dist pos %s,%s",nx,ny,dx,dy)
-end
-
-
-function UIPAWHUDPin:Destroy()
- hide_hud_pin(self.pin_id)
- get_hud():RemoveDialogToRender(self)
-end
-
-function UIPAWHUDPin:on_localization_change()
- self.med_hint_font = (language == "rus")
- if self.med_hint_font then
- self.label:TextControl():SetFont(GetFontMedium())
- self.label_sh:TextControl():SetFont(GetFontMedium())
- self.lref:TextControl():SetFont(GetFontMedium())
- else
- self.label:TextControl():SetFont(GetFontSmall())
- self.label_sh:TextControl():SetFont(GetFontSmall())
- self.lref:TextControl():SetFont(GetFontSmall())
- end
-end
-
-function UIPAWHUDPin:actor_on_net_destroy()
- get_hud():RemoveDialogToRender(self)
-end
-
-function UIPAWHUDPin:ShowMarker(onoff)
- self.dist:Show(onoff and marker_dist_shown("pins"))
- self.dist_sh:Show(onoff and marker_dist_shown("pins"))
- self.label:Show(onoff and marker_hint_shown("pins"))
- self.label_sh:Show(onoff and marker_hint_shown("pins"))
- self.marker:Show(onoff)
-end
-
-function UIPAWHUDPin:Update()
- --printf("UIPAWHUDPin:Update")
- if not (pins and pins[self.pin_id]) then
- self:Destroy()
- end
- if item_device.is_pda_active() or not (self.pin_se_obj and self.pin_se_obj.online) then
- self.marker:Show(false)
- return
- end
- CUIScriptWnd.Update(self)
- if (main_hud_shown() or axr_main.binoc_is_zoomed or axr_main.scoped_weapon_is_zoomed) then
- local vec = self.pin_id and get_screen_coords(self.pin_id)
-
- if (vec) then
- local pindist = db.actor:position():distance_to(self.pin_se_obj.position)
- local szx,szy = scale_by_dist(self.marker,pindist,24,24,10,20,50,true)
-
- self.marker:SetWndPos(vec)
- self.marker:SetWndSize(vector2():set(szx,szy))
-
- local f_near = pin_near_fade_dist
- local f_far = pin_far_fade_dist
- local f_hide = pin_far_hide_dist
- fade_by_dist(self.marker, pindist,f_near,f_far,f_hide)
- fade_by_dist(self.label, pindist,f_near,f_far,f_hide,255,230,230,230,1)
- fade_by_dist(self.label_sh, pindist,f_near,f_far,f_hide,255,0,0,0,1)
- fade_by_dist(self.dist, pindist,f_near,f_far,f_hide,255,230,230,230,1)
- fade_by_dist(self.dist_sh, pindist,f_near,f_far,f_hide,255,0,0,0,1)
-
- local name = pins[self.pin_id].text
- local maxd = 100
- local disty = pindist
- if pindist >= maxd then
- disty = maxd
- end
- local yadj = (disty / maxd * 6)
- local pos = self.marker:GetWndPos()
- local nx,ny,dx,dy,tw
-
- if marker_hint_shown("pins") then
- self.label:TextControl():SetText(name)
- self.label_sh:TextControl():SetText(name)
- self.lref:TextControl():SetText(name)
- self.lref:AdjustWidthToText()
- tw = self.lref:GetWidth()
- nx = pos.x - (tw * .5)
- ny = pos.y - 22 + yadj
- --printf("Container for pin %s is %sx%s",name,nx,ny)
- self.label:SetWndPos(vector2():set(nx, ny))
- end
-
- if marker_dist_shown("pins") then
- self.last_dist = pindist
- --local dist_txt = string.format("%.1f",pindist)..ts("st_paw_meters_abbr")
- local dist_txt = string.format("%.1f",pindist).."m"
- self.dist:TextControl():SetText(dist_txt)
- self.dist_sh:TextControl():SetText(dist_txt)
- self.wref:TextControl():SetText(dist_txt)
- self.wref:AdjustWidthToText()
- tw = self.wref:GetWidth()
- nx = pos.x - (tw * .5)
- ny = pos.y + szy - 11 + yadj
- self.dist:SetWndPos(vector2():set(nx, ny))
- end
-
- self:ShowMarker(true)
- return
- end
- self:ShowMarker(false)
- else
- self:ShowMarker(false)
- end
-end
-
--- ======================================================================
--- HUD RETICLE (see ui_paw_reticle.script)
--- ======================================================================
-
-HUD_RET = nil
-
-function enable_vo_crosshair()
- if not db.actor then return end
- if (HUD_RET == nil) then
- HUD_RET = ui_paw_reticle and ui_paw_reticle.UIPAWReticle()
- if HUD_RET then
- get_hud():AddDialogToRender(HUD_RET)
- else
- printf(logprefix.."ERROR: Unable to load ui_paw_reticle.script or initialize its HUD class")
- end
- end
-end
-
-function disable_vo_crosshair()
- if not db.actor then return end
- if (HUD_RET ~= nil) then
- HUD_RET:ShowDialog(false)
- get_hud():RemoveDialogToRender(HUD_RET)
- HUD_RET = nil
- end
-end
-
-function update_vo_crosshair()
- if not db.actor then return end
- if (HUD_RET ~= nil) then
- HUD_RET:Update(true)
- end
-end
-
--- ======================================================================
--- CALLBACKS
--- ======================================================================
-
-function npc_on_death_callback(victim,killer)
- vl("npc_on_death_callback: %s (%s) | clear_pin_on_death: %s",victim:name(),victim:id(),clear_pin_on_death)
- if not clear_pin_on_death then return end
- local id = safeid(victim)
- if not (id and (id > 0)) then return end
- if not (id and pins[id]) then return end
- dl("Clearing existing pin for dead body id %s",id)
- local se_obj = alife_object(id)
- do_waypoint("pn_del",se_obj,nil,{syscall=true})
-end
-
-
-function update_hud_on_show_hide()
- update_hud_waypoint()
- update_vo_crosshair()
- update_hud_pins()
-end
-
-local mod_keys = {
- [DIK_keys.DIK_LSHIFT] = {pressed=false,code=1},
- [DIK_keys.DIK_LCONTROL] = {pressed=false,code=2},
- [DIK_keys.DIK_LMENU] = {pressed=false,code=3},
-}
-local mod_key_codes = {
- [1] = DIK_keys.DIK_LSHIFT,
- [2] = DIK_keys.DIK_LCONTROL,
- [3] = DIK_keys.DIK_LMENU,
-}
-local function mod_key_pressed(key)
- if ui_mcm then
- return ui_mcm.get_mod_key(key)
- else
- return mod_keys and mod_keys[key] and mod_keys[key].pressed
- end
-end
-
-local function mod_key_held()
- return
- mod_keys[DIK_keys.DIK_LSHIFT].pressed or
- mod_keys[DIK_keys.DIK_LCONTROL].pressed or
- mod_keys[DIK_keys.DIK_LMENU].pressed
-end
-
-function on_key_press(key)
- --if not active_binds[key] then return end
- --printf("Monitored keybind %s pressed",key)
- local args
- if mod_keys[key] then
- mod_keys[key].pressed = true
- return
- end
- --local keyname = DIK_name(key)
- --vl("on_key_press(%s) : %s\nModifiers held: Shift %s | Ctrl %s | Alt %s",key,keyname,mod_key_pressed(1),mod_key_pressed(2),mod_key_pressed(3))
- for k,v in pairs(keybinds) do
- if v and v.enabled then
- --local bindtxt = bindtext(v.bind,v.mod)
- --vl("** Checking keybind %s (bind %s | mod %s | hold %s)",k,bindtxt,v.bind,v.mod,v.hold)
- if (key == v.bind) and mod_key_pressed(v.mod) then
- --vl("on_key_press(%s): keybind %s matched %s with bind %s and mod %s",key,k,bindtxt,v.bind,mod)
- if v.hold then
- args = true
- end
- v.action(args)
- return
- end
- end
- end
- --vl("on_key_press: no matching keybind for %s",keyname)
-end
-
-
-function on_key_release(key)
- local do_action = false
- if mod_keys[key] then
- mod_keys[key].pressed = false
- end
-
- --local keyname = DIK_name(key)
- --vl("on_key_release(%s) : %s\nModifiers held: Shift %s | Ctrl %s | Alt %s",key,keyname,mod_key_pressed(1),mod_key_pressed(2),mod_key_pressed(3))
- for k,v in pairs(keybinds) do
- if v and v.enabled and v.hold then
- --local bindtxt = bindtext(v.bind,v.mod)
- --vl("** Checking keybind %s: %s (bind %s | mod %s | hold %s)",k,bindtxt,v.bind,v.mod,v.hold)
- if (key == v.bind) and mod_key_pressed(v.mod) then
- --vl("on_key_release(%s): keybind %s matched %s with bind %s and mod %s",key,k,bindtxt,v.bind,mod)
- v.action(false)
- return
- end
- end
- end
-
-end
-
-
-function on_map_right_click(property_ui, map_table)
- if not map_table then return end
- if map_table.object_id ~= 65535 then return end
-
- local pos = map_table.pos
- local se_obj = register_script_zone(pos,map_table.lvid,map_table.gvid)
- map_table.object_id = se_obj and se_obj.id
-
- if not se_obj then
- dl(" Right-click capture failed - unable to find or create valid se_obj")
- return
- else
- if mod_key_pressed(1) then
- -- LSHIFT : unused
- elseif mod_key_pressed(2) then
- -- LCTRL : Set/Move Waypoint
- if waypoint_active then
- do_waypoint("wp_mov",se_obj)
- else
- do_waypoint("wp_set",se_obj)
- end
- return
- elseif mod_key_pressed(3) then
- -- LALT : Add Pin
- do_waypoint("pn_add",se_obj)
- return
- end
- dl(" Passing right-click to get_context_menu_options with id %s and pos %s",se_obj.id,pos)
- last_clicked_id = se_obj.id
- get_context_menu_options(property_ui,se_obj.id,map_table)
- end
-end
-
-function map_spot_menu_add_property(property_ui,id)
- last_clicked_id = id
- get_context_menu_options(property_ui,id)
-end
-
-
-function map_spot_menu_property_clicked(property_ui,id,level_name,prop)
- execute_context_menu_option(property_ui,id,level_name,prop)
-end
-
-
-function load_file_data()
- dl(" Loading file data and populating tables")
- local attr_tex = "texture"
- local minimap = "mini_map"
- local levelmap = "level_map"
- local ind = 0
- xml = CScriptXmlInit()
- xml:ParseFile("map_spots.xml")
- for k,v in pairs(icons) do
- local tex,th,tw
- local spot = v
- xml:NavigateToRoot()
- th = xml:ReadAttribute(spot,0,"height")
- tw = xml:ReadAttribute(spot,0,"width")
- xml:NavigateToNode(spot,0)
- vl("trying to find texture data for %s | %s",k,v)
- if xml:NodeExist(attr_tex,0) then
- tex = xml:ReadValue(attr_tex,0)
- vl("texture node found with value %s",tex)
- else
- local spotnode = ""
- local typ = ""
- if xml:NodeExist(minimap) then
- spotnode = xml:ReadAttribute(minimap,0,"spot")
- typ = minimap
- end
- if xml:NodeExist(levelmap) then
- spotnode = xml:ReadAttribute(levelmap,0,"spot")
- typ = levelmap
- end
- if spotnode ~= "" then
- xml:NavigateToRoot()
- th = xml:ReadAttribute(spotnode,0,"height")
- tw = xml:ReadAttribute(spotnode,0,"width")
- vl("ReadAttribute for %s: h %s w %s",v,th,tw)
- xml:NavigateToNode(spotnode,0)
- tex = xml:ReadValue(attr_tex,0)
- vl("%s node found: %s",typ,spotnode)
- end
- end
-
- if spot == "paw_pin_redpush32" then
- if not tex then return false end
- end
-
- texture_data[spot] = {
- id = k,
- t = tex,
- h = th,
- w = tw,
- }
- ind = ind + 1
- icon_index[ind] = {
- id = k,
- icon = spot,
- data = texture_data[spot],
- }
- vl("Texture for %s: %s (%sx%s)",spot,tex,tw,th)
- end
- current_ico_max = ind
- for k,v in pairs(texture_data) do
- dl("texture_data(%s): tex %s | id %s | %sx%s",k,v.t,v.id,v.w,v.h)
- end
-
- ind = 0
- for w, _ in pairs(iconset_ltx) do
- local iconset_ltx_prefix = "iconset_"
- local icons_pos = string.find(w,iconset_ltx_prefix)
- if icons_pos == 1 then
- local group = string.sub(w,icons_pos+string.len(iconset_ltx_prefix))
- local set_cfg = icon_sets_ini:collect_section(w)
- local name = set_cfg.name
- local def = set_cfg.default
- local sec_list = group.."_icons"
- ind = ind + 1
- icon_sets[group] = {
- name = name,
- group = group,
- default = def,
- active_icon = icons[def],
- i = ind,
- }
- local setdata = icon_sets[group]
- set_index[ind] = {
- id = group,
- data = setdata,
- }
- dl("Found icon set %s with group %s, section %s",setdata.name,group,sec_list)
- set_index[ind].ii = {}
- setdata.ii = {}
- setdata.ri = {}
- local iconlist = {}
- local il = icon_sets_ini:collect_section(sec_list)
- local i = 0
- for k,_ in pairs(il) do
- i = i + 1
- local spot = icons[k]
- vl("set %s iconlist: icons[%s] = %s",group,k,spot)
- iconlist[spot] = texture_data[spot].t
- set_index[ind].ii[i] = spot
- setdata.ii[i] = spot
- setdata.ri[spot] = i
- end
- setdata.inum = i
- setdata.icons = iconlist
- end
- end
- current_set_max = ind
- dl("Loading menu actions from actions_ini")
- for w, _ in pairs(actions_ltx) do
- action_codes[w] = actions_ini:collect_section(w)
- local ac = action_codes[w]
- local opt_loc = ts(ac.text)
- dl(" ac.mode: %s | type: %s | as num: %s | >0: %s",ac and ac.mode,ac and type(ac.mode),ac and tonumber(ac.mode),ac and (tonumber(ac.mode) > 0))
- ac.mode = clamp(tonumber(ac and ac.mode) or 0,0,4)
- ac.enable = (ac.enable == "true")
- action[opt_loc] = w
- if verbose then
- vl("Initializing menu action:\n%s = %s",opt_loc,action[opt_loc])
- for k,v in pairs(ac) do vl("%s = %s",k,v) end
- end
- end
-
- dl("Loading and parsing valid clsids (%s)",size_table(clsids_ltx))
- for k,v in pairs(clsids_ltx) do
- dl("%s = %s",k,v)
- if v == "number" then
- local k1 = tonumber(k)
- if k1 and k1 > 0 then
- vl("Found valid clsid number value: %s",k1)
- valid_clsids[tonumber(k1)] = true
- end
- elseif v == "string" then
- if k and clsid[k] then
- local k1 = tonumber(clsid[k])
- vl("Found valid clsid string value: %s = %s",k,k1)
- valid_clsids[tonumber(k1)] = true
- end
- end
- end
- table.sort(icons)
- table.sort(icon_sets)
- catsy_paw_mcm.icon_sets = icon_sets
- table.sort(action_codes)
- dl(logprefix.."All file data loaded")
- --utils_data.print_table(icon_sets)
- started = true
- local load_set_curr = axr_main.config:r_value("mcm", "pawsys/pawpins/pin_icon_group", {val=0}) or "pins"
- local load_pin_curr = axr_main.config:r_value("mcm", "pawsys/pawpins/poi_icon_"..load_set_curr, {val=0})
-
- printf(logprefix.."Personal Adjustable Waypoint started at %s",time_global())
- return true
-end
-
-
-function load_state(data)
- dl("load_state: Checking for saved PAW data")
-
- local ps = data.pawsys
- local pd = data.pawdata
- if ps then
- vl("load_state: pawsys found, loading")
- placed_waypoint = ps.current_waypoint
- last_waypoint = ps.last_waypoint
- custom_name = ps.custom_name
- custom_desc = ps.custom_desc
- pins = ps.pins
- if placed_waypoint then waypoint_active = true end
- welcome_msg_shown = ps.welcome_msg_shown
-
- end
- if pd and pd.valid then
- dl("load_state: pawdata found, loading")
- pawdata = pd
- pins = pawdata.pins
- else
- dl("load_state: pawdata not found, initializing")
- pawdata.curr_set_name = "pins"
- pawdata.curr_set_data = icon_sets[pawdata.curr_set_name]
- local setdata = pawdata.curr_set_data
- pawdata.curr_set_data = setdata
- pawdata.curr_set_ind = setdata.i
- pawdata.curr_ico_name = setdata.active_icon
- pawdata.curr_ico_ind = setdata.ri[root_patch_name(setdata.active_icon)]
- vl("pawdata: set %s (%s) | icon %s (%s)",pawdata.curr_set_name,pawdata.curr_set_ind,pawdata.curr_ico_name,pawdata.curr_ico_ind)
- end
-end
-
-
-function save_state(data)
- update_mcm_icoset_data()
- dl("save_state: Cleaning up script zones and temp markers")
- _ = script_zone_cleanup()
- dl("save_state: Saving waypoint and config data")
- data.paw_waypoint_info = nil
- data.pawsys = {}
- data.pawsys.current_waypoint = placed_waypoint
- data.pawsys.last_waypoint = last_waypoint
- data.pawsys.custom_name = custom_name
- data.pawsys.custom_desc = custom_desc
- data.pawsys.dynamic_faves = dynamic_faves
- data.pawsys.welcome_msg_shown = welcome_msg_shown
- data.pawsys.pins = {}
- pawdata.valid = true
- data.pawdata = pawdata
- dl("save_state: Saving player's pins")
- data.pawsys.pins = pins
-end
-
-function actor_on_update()
- tick()
-end
-
-function actor_on_first_update()
- on_option_change()
- if not paw_enabled then
- UnregisterScriptCallback("actor_on_update",actor_on_update)
- return
- end
- temp_pin_cleanup(true)
- active_set(icon_sets[current_active_set].i)
- show_all_pins(true)
- if waypoint_active then
- local id = placed_waypoint.id
- local se_obj = alife_object(id)
- if not se_obj then return end
- local savelast = last_waypoint
- do_waypoint("wp_mov",se_obj)
- last_waypoint = savelast
- end
- reset_indicator()
- if wp_hud_icon_enabled then
- show_hud_waypoint()
- else
- hide_hud_waypoint()
- end
- if reticle_mode > 0 then
- enable_vo_crosshair()
- else
- disable_vo_crosshair()
- end
-
- init_hud_pins()
- if not welcome_msg_shown then
- CreateTimeEvent("paw_welcome_message",0,5,paw_welcome_message)
- end
-end
-
-
-function actor_on_net_destroy()
- script_zone_cleanup()
- hide_hud_waypoint()
- empty_table(hud_pin_objs)
-end
-
-function on_mouse_wheel(scroll_dir, flags)
- if not mwheel_enabled then
- UnregisterScriptCallback("on_mouse_wheel",on_mouse_wheel)
- return
- end
- if not (icon_cycle_active or set_cycle_active) then return end
- if actor_menu.inventory_opened() then return end
-
- flags.ret_value = false
- local now = time_global()
- if now < mwheel_next_poll then return end
- mwheel_next_poll = now + mwheel_poll_interval
- -- local cycle_dir = ((scroll_dir == 0) and -1) or scroll_dir
- local cycle_dir = scroll_dir
- if cycle_dir == 0 then cycle_dir = -1 end
- vl("scroll_dir: %s | cycle_dir: %s",scroll_dir,cycle_dir)
- cycle_items(cycle_dir)
-end
-
-
-function unregister_all_callbacks()
- UnregisterScriptCallback("actor_on_update",actor_on_update)
- UnregisterScriptCallback("actor_on_net_destroy",actor_on_net_destroy)
- UnregisterScriptCallback("actor_on_first_update",actor_on_first_update)
- UnregisterScriptCallback("load_state",load_state)
- UnregisterScriptCallback("save_state",save_state)
- UnregisterScriptCallback("map_spot_menu_add_property",map_spot_menu_add_property)
- UnregisterScriptCallback("map_spot_menu_property_clicked",map_spot_menu_property_clicked)
- UnregisterScriptCallback("on_key_press",on_key_press)
- UnregisterScriptCallback("on_key_release",on_key_release)
- UnregisterScriptCallback("GUI_on_show",update_hud_on_show_hide)
- UnregisterScriptCallback("GUI_on_hide",update_hud_on_show_hide)
- UnregisterScriptCallback("monster_on_death_callback",npc_on_death_callback)
- UnregisterScriptCallback("npc_on_death_callback",npc_on_death_callback)
- if mwheel_avail then
- UnregisterScriptCallback("on_mouse_wheel",on_mouse_wheel)
- end
- if right_click_avail then
- UnregisterScriptCallback("on_map_right_click",on_map_right_click)
- end
-end
-
-function register_all_callbacks()
- RegisterScriptCallback("actor_on_update",actor_on_update)
- RegisterScriptCallback("actor_on_net_destroy",actor_on_net_destroy)
- RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
- RegisterScriptCallback("load_state",load_state)
- RegisterScriptCallback("save_state",save_state)
- RegisterScriptCallback("map_spot_menu_add_property",map_spot_menu_add_property)
- RegisterScriptCallback("map_spot_menu_property_clicked",map_spot_menu_property_clicked)
- RegisterScriptCallback("on_key_press",on_key_press)
- RegisterScriptCallback("on_key_release",on_key_release)
- RegisterScriptCallback("GUI_on_show",update_hud_on_show_hide)
- RegisterScriptCallback("GUI_on_hide",update_hud_on_show_hide)
- RegisterScriptCallback("monster_on_death_callback",npc_on_death_callback)
- RegisterScriptCallback("npc_on_death_callback",npc_on_death_callback)
- if mwheel_avail then
- RegisterScriptCallback("on_mouse_wheel",on_mouse_wheel)
- end
- if right_click_avail then
- RegisterScriptCallback("on_map_right_click",on_map_right_click)
- end
-end
-
-function on_game_start()
- if load_failed then return end
- RegisterScriptCallback("on_option_change",on_option_change)
- register_all_callbacks()
- on_option_change()
-end
-
-
--- ======================================================================
--- TASK FUNCTORS
--- ======================================================================
-
-
-task_functor.waypoint_task_target_functor = function (task_id,field,p,tsk)
- if not paw_enabled then return end
- -- vl("waypoint_task_target_functor called with task_id %s | field %s",task_id,field)
-
- if placed_waypoint == nil then
- dl("WARNING: waypoint_task_target_functor called but placed_waypoint is nil, cancelling waypoint task to avoid crash")
- end_waypoint_task()
- return default_id
- end
-
- if (field == "target") then
- tsk.target = placed_waypoint.id
- tsk.current_target = placed_waypoint.id
- return placed_waypoint.id
- end
-end
-
-
-task_functor.waypoint_task_text_functor = function (task_id,field,p,tsk)
- if not (paw_enabled and placed_waypoint) then return end
- -- vl("waypoint_task_text_functor called with task_id %s | field %s",task_id,field)
- if (field == "title") then
- -- vl("custom_name: %s")
- return custom_name or ts("st_paw_placed_waypoint")..(": "..placed_waypoint.name or "")
- elseif (field == "descr") then
- -- vl("custom_desc: %s")
- return custom_desc or ts("st_paw_proceed")
- end
-end
-
--- ======================================================================
--- LOAD FILE DATA - KILLSWITCH AND NOTIFY ON FAILURE
--- ======================================================================
-
-if not load_file_data() then
- disable_mcm_updates = true
- load_failed = true
- paw_enabled = false
- started = false
- _ = unregister_all_callbacks()
-
- if not disable_load_warning then
- local tiperr = psk(game.translate_string("st_paw_texture_load_error_tip"),text_colors)
- RegisterScriptCallback("actor_on_first_update",
- function()
- CreateTimeEvent("pawerror",0,5,(
- function()
- db.actor:give_game_news("PAW System",tiperr,"ui_inGame2_Mesta_evakuatsii",0,15000)
- xr_sound.set_sound_play(AC_ID,"pda_tips")
- return true
- end
- ))
- end
- )
- end
-
- local errstr = game.translate_string("st_paw_texture_load_error1").."\n\n"..game.translate_string("st_paw_texture_load_error2")
- assert(not load_failed, "\n\n"..
- "~ ------------------------------------------------------------------------\n"..
- errstr.."\n"..
- "~ ------------------------------------------------------------------------\n"
- )
-end
-
--- ======================================================================
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/scripts/ui_paw_reticle.script b/mods/Personal Adjustable Waypoint_backup/gamedata/scripts/ui_paw_reticle.script
deleted file mode 100644
index e7a37dfa..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/scripts/ui_paw_reticle.script
+++ /dev/null
@@ -1,371 +0,0 @@
--- ======================================================================
---[[ Personal Adjustable Waypoint
--- ======================================================================
- HUD reticle features script
- Author: Catspaw (CatspawMods @ ModDB)
- Source: https://www.moddb.com/mods/stalker-anomaly/addons/personal-adjustable-waypoint-for-anomaly-151-152-and-gamma
-
- Portions of the target ID code adapted from Crook's Faction ID addon.
-
- The main script actually loads the MCM settings for Crook's addon, if
- it is installed, so that reticle behavior should mirror the NPC ID.
--- ===================================================================--]]
-assert(tasks_placeable_waypoints ~= nil, "\n\n"..
- "~ ------------------------------------------------------------------------\n"..
- "Could not find tasks_placeable_waypoints.script - PAW is not installed".."\n"..
- "~ ------------------------------------------------------------------------\n"
-)
-paw = tasks_placeable_waypoints
-dl = paw.dl
-vl = paw.vl
-
-unsquish_aspect = paw.unsquish_aspect
-easing_outquint = paw.easing_outquint
-npc_ident = paw.npc_ident
-anim_fade = paw.anim_fade
-reticle_color = paw.reticle_color
-autotag_milpda = paw.autotag_milpda_feature
-pda_feature_en = item_milpda and item_milpda.pda_feature_enabled
--- ======================================================================
-
-class "UIPAWReticle" (CUIScriptWnd)
-
-function UIPAWReticle:__init() super()
- --printf("UIPAWReticle:__init(%s)",id)
- self:InitControls()
- RegisterScriptCallback("actor_on_net_destroy", self)
-end
-
-
-function UIPAWReticle:__finalize()
-end
-
-
-function UIPAWReticle:InitControls(id)
- --printf("UIPAWReticle:InitControls(%s)",id)
- self.unknown = game.translate_string("st_paw_unknown")
- self.namecache = {}
- self.newtags = {}
- self.last_tick = 0
- self.last_check_time = 0
- self:SetAutoDelete(true)
- self.xml = CScriptXmlInit()
- self.xml:ParseFile("paw_hud_pin_icon.xml")
- self.reticle = self.xml:InitStatic("marker",self)
- self.objtex = "ui_icons_paw_crosshair_valid"
- self.idtex = "ui_icons_paw_crosshair_targetid"
- self.locktex = "ui_icons_paw_crosshair_targetlock"
- self.tex = self.idtex
- self.reticle:InitTexture(self.tex)
- local clr = reticle_color
- self.reticle:SetTextureColor(GetARGB(clr.a,clr.r,clr.g,clr.b))
- self.reticle:SetWndSize(vector2():set(32,32))
- unsquish_aspect(self.reticle)
- local w = self.reticle:GetWidth()
- local h = self.reticle:GetHeight()
- self.reticle:SetWndPos(vector2():set(512.5,384.5))
- self:ShowMarker(false)
-end
-
-
-function UIPAWReticle:Destroy()
- get_hud():RemoveDialogToRender(self)
-end
-
-function UIPAWReticle:actor_on_net_destroy()
- get_hud():RemoveDialogToRender(self)
-end
-
-function UIPAWReticle:ShowMarker(onoff)
- self.reticle:Show(onoff)
-end
-
-
-function UIPAWReticle:npc_on_death_callback(npc, who)
- if not self.last_target then return end
- if npc:id() == self.last_target:id() then
- self:TargetOut(self.last_target)
- self.last_target = nil
- end
-end
-
-function UIPAWReticle:npc_on_net_destroy(npc)
- if not self.last_target then return end
- if npc:id() == self.last_target:id() then
- self:TargetOut(self.last_target)
- self.last_target = nil
- end
-end
-
-function UIPAWReticle:IsValidTagTarget(obj)
- return obj and (IsStalker(obj) or IsMonster(obj)) and (not paw.blacklisted_object(obj:id())) and (obj:id() ~= 0) and (npc_ident.id_bodies or (obj.health > 0))
-end
-
-
-function UIPAWReticle:GetTargetName(obj)
- if not obj then return end
- if self.namecache[obj] then return self.namecache[obj] end
-
- local name
- if IsStalker(obj) then
- name = obj:character_name()
- else
- --local id = obj:id()
- --name = paw.safename(id)
- --if name == self.unknown then name = name..id end
- name = obj:name()
- end
- self.namecache[obj] = name
- return name
-end
-
-
-function UIPAWReticle:GetIDProgress(obj,name)
- --printf("UIPAWReticle:GetIDProgress: %s (%s)",self:GetTargetName(obj),obj and obj:id())
- name = name or self:GetTargetName(obj)
- local progress = npc_ident.progress
-
- if not progress[name] then
- progress[name] = 0
- end
-
- if progress[name] >= 1 then
- return 1
- end
-
- if not npc_ident.delay_id then
- if progress[name] == 0 then
- self.newtags[name] = true
- end
- progress[name] = 1
- return 1
- end
-
- local distance = db.actor:position():distance_to_sqr(obj:position())
-
- if distance < 2500 then
- if progress[name] == 0 then
- self.newtags[name] = true
- end
- progress[name] = 1
- return 1
- end
-
- local power = (100 / ((distance - 2500) * 0.1) / device().fov) * (npc_ident.tick_speed * 0.1)
-
- progress[name] = progress[name] + (power * npc_ident.id_speed)
-
- if progress[name] >= 1 then
- progress[name] = 1
- self.newtags[name] = true
- return 1
- else
- --printf("GetIDProgress: %s has %s progress towards identification at %s",name,progress[name],time_global())
- end
-
- return progress[name]
-end
-
-function UIPAWReticle:OnTarget(obj)
- if not obj then return end
-
- local progress = self:GetIDProgress(obj,name,id)
- return progress
-end
-
-function UIPAWReticle:TargetOut()
- self:ShowMarker(false)
-end
-
-function UIPAWReticle:UpdateIDProgress(obj,name)
- if not obj then return end
- name = name or self:GetTargetName(obj)
- if (time_global() - self.last_tick) < npc_ident.tick_speed then return end
- self.last_tick = time_global()
-
- if not npc_ident.progress[name] then return end
-
- local progress = self:GetIDProgress(obj,name)
- return progress
-end
-
-function UIPAWReticle:TargetIDTick(obj,name,id)
- name = name or self:GetTargetName(obj)
- id = id or (obj and obj:id())
- progress = 0
-
- if self:IsValidTagTarget(obj) then
- if self.last_target then
- if obj:id() ~= self.last_target:id() then
- self:ShowMarker(false)
- progress = self:OnTarget(obj,name,id)
- else
- progress = self:UpdateIDProgress(obj,name)
- end
- else
- progress = self:OnTarget(obj,name,id)
- end
-
- self.last_target = obj
- return progress
- else
- if self.last_target then
- if npc_ident.lenience >= 1.0 then
- self:ShowMarker(false)
- self.last_target = nil
- return 0
- end
-
- if (time_global() - self.last_check_time) > 100 then
- self.last_check_time = time_global()
-
- local pos = utils_obj.safe_bone_pos(self.last_target, "bip01_spine")
- if pos then
- local dot = paw.dist_from_crosshair(pos)
- if dot < npc_ident.lenience then
-
- self:TargetOut()
-
- self.last_target = nil
- return 0
- end
- end
- end
- end
- end
-
- if self.last_target then
- progress = self:UpdateIDProgress(self.last_target)
- end
- return progress
-end
-
-
-function UIPAWReticle:UpdateAutotagReticle(obj,name,id)
- self:TargetIDTick(obj,name,id)
- local progress = (name and npc_ident.progress[name]) or 0
- if self.playing_anim then
- --printf(" Reticle animation still playing, skipping update cycle")
- self:ShowMarker(true)
- return
- end
- if id and name and progress then
- local tex = self.idtex
- --printf(" TargetID progress for %s (%s): %s",name,id,progress)
-
- if progress <= 0 then
- self:ShowMarker(false)
- return
- elseif progress >= 1 then
- progress = 1
- if paw.pins[id] then tex = self.locktex end
- end
- local alpha = reticle_color.a
- self.reticle:InitTexture(tex)
-
- if self.newtags[name] then
- local smart_pins = paw.smart_pins
- function play_tag_crosshair_anim()
- self.playing_anim = false
- self.reticle:SetTextureColor(GetARGB(alpha,255,255,255))
- self.reticle:SetWndSize(vector2():set(32,32))
- unsquish_aspect(self.reticle)
- self:ShowMarker(true)
- --printf(" End anim timeevent at %s, reticle to 32x32",time_global())
- return true
- end
- --printf(" New positive ID on %s, calling smart pin",name)
- self.reticle:InitTexture(self.locktex)
- self.reticle:SetTextureColor(GetARGB(alpha,255,255,255))
- self.reticle:SetWndSize(vector2():set(24,24))
- unsquish_aspect(self.reticle)
- self.newtags[name] = nil
- self.playing_anim = true
- --printf(" Starting anim timeevent at %s, reticle to 24x24",time_global())
- CreateTimeEvent("paw_crosshair_tag_anim",time_global(),0.125,play_tag_crosshair_anim)
- local target = paw.get_smart_target_type(obj)
- local smartpin = target and smart_pins[target]
- --printf("smart pin type %s: enabled %s | pin %s",target,smartpin and smartpin.enabled,smartpin and smartpin.pin)
- if (not (id and paw.pins[id])) and smartpin and smartpin.enabled and smartpin.pin then
- paw.autotag_target(true)
- end
- return
- end
-
- local w = 80 - (48 * progress)
- local h = 80 - (48 * progress)
- --printf(" Setting reticle to %sx%s at %s",w,h,time_global())
- self.reticle:SetTextureColor(GetARGB(alpha * progress,255,255,255))
- self.reticle:SetWndSize(vector2():set(w,h))
- unsquish_aspect(self.reticle)
- self:ShowMarker(true)
- end
-
-end
-
-
-function UIPAWReticle:UpdateValidObjectReticle(obj,name,id)
- if id and (id > 0) then
- --printf("Reticle has valid id %s",id)
- local se_obj = alife_object(id)
- if not se_obj then return end
- if paw.allow_non_wp_targets or paw.valid_waypoint_target(se_obj) then
- self:ShowMarker(true)
- vl("ID %s is a valid waypoint/pin target",id)
- if not (self.hovered or self.fading_in) then
- anim_fade(self.reticle,0,reticle_color.a,400,"reticle_fade",false,nil,nil,nil,easing_outquint,nil,abort_fade_in)
- self.fading_in = true
- self.fading_out = false
- self.hovered = true
- end
- return
- end
- elseif self.hovered then
- self.hovered = false
- self.fading_out = true
- self.fading_in = false
- anim_fade(self.reticle,reticle_color.a,0,600,"reticle_fade",false,nil,nil,nil,easing_outquint,nil,abort_fade_out)
- return
- end
- if not self.fading_out then
- self:ShowMarker(false)
- end
-end
-
-
-function UIPAWReticle:Update()
- local mode = paw.reticle_mode
- local cart_mode = paw.cart_mode
- local enabled = false
- if autotag_milpda and pda_feature_en then
- local dev = db.actor:item_in_slot(8)
- enabled = dev and pda_feature_en(dev:section(),"autotag")
- if not enabled then mode = 0 end
- end
- if mode and type(mode) == "number" then
- if mode == 0 then
- self:ShowMarker(false)
- get_hud():RemoveDialogToRender(self)
- return
- end
- enabled = (mode > 0) and paw.feature_valid_in_mode(mode)
- --printf("UIPAWReticle: mode %s + cart_mode %s = enabled %s",mode,cart_mode,enabled)
- end
- CUIScriptWnd.Update(self)
- if enabled and ((main_hud_shown() and not paw.reticle_mustzoom) or
- axr_main.binoc_is_zoomed or
- axr_main.scoped_weapon_is_zoomed) then
-
- local obj = level.get_target_obj()
- local id = obj and obj:id()
- local name = self:GetTargetName(obj)
-
- if paw.mark_on_positive_id then
- self:UpdateAutotagReticle(obj,name,id)
- else
- self:UpdateValidObjectReticle(obj,name,id)
- end
- else
- self:ShowMarker(false)
- end
-end
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/scripts/zzzzz_monkey_paw_ui_mcm.script b/mods/Personal Adjustable Waypoint_backup/gamedata/scripts/zzzzz_monkey_paw_ui_mcm.script
deleted file mode 100644
index bb6c1b8d..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/scripts/zzzzz_monkey_paw_ui_mcm.script
+++ /dev/null
@@ -1,260 +0,0 @@
--- ======================================================================
---[[ Monkeypatch to enable dynamic UI elements in MCM
--- ======================================================================
- Author: Catspaw
- Version: 2.3
- Updated: 20231020
- Source: https://www.moddb.com/mods/stalker-anomaly/addons/personal-adjustable-waypoint-for-anomaly-151-152-and-gamma
-
- Included with Personal Adjustable Waypoint, but parameterized so that
- any addon can make use of it.
-
- The code in this script is based on code from RavenAscendant's MCM,
- which is in turn based on the works of Tronex and others.
-
- You may freely include this script in your own addon, unaltered--but
- unless your name is RavenAscendant, please do not release it merged
- with ui_mcm.script or otherwise as an integrated alteration to your
- own (or your modpack's) version of MCM.
-
- 2.3 roll back support for the Track element due to reported issues
- 2.2 adds "borderless" attribute to the slide element and "desc"
- to supported elements
- 2.1 adds support for the Track element.
--- ======================================================================
- USAGE
--- ======================================================================
- Adds a new functor attribute to the Slide and Image element types:
- - [ui_hook_functor]
- - Define: ( table {function, parameters} )
- - Used by: image, slide, list, desc (only in this monkeypatch)
- - Parameters passed: anchor, handlers, attrs, flags
- Execute a function on initial registration of a UI element
- anchor - empty static image container
- handlers- table of UI handlers
- attrs - table of MCM attributes for the menu option
- flags - table of MCM metadata
- The value of the "parameters" option in the table is added to the end of the parameters list.
-
- Adds a new functor attribute that triggers on changes in all input types:
- - [on_selection_functor]
- - Define: ( table {function, parameters} )
- - Used by option elements: ALL (only in this monkeypatch)
- - Parameters passed: path, opt, value, attrs
- Execute a function on any unsaved change to an option value
- path - MCM path to changed option
- opt - name of the changed option
- value - value of uncommitted change
- attrs - table of MCM attributes for the menu option
- The value of the "parameters" option in the table is added to the end of the parameters list.
-
- For most purposes, like simple custom text or image display and/or
- formatting, it is sufficient to just instantiate an "image"-type
- menu element with a ui_hook_functor, and let the called functor do
- whatever work is necessary to build your UI.
--- ======================================================================
- COMPATIBILITY / TROUBLESHOOTING
--- ======================================================================
- This monkeypatch should work with any recent MCM version. If yours
- is old and doesn't work, just upgrade already.
-
- This monkeypatch should NOT alter any functionality of MCM for any
- element that does not explicitly invoke either of the new functors.
-
- However, if you beleve this script is causing problems, you should be
- able to delete or disable it without causing issues. Anyone using
- these functors in their own addon should know to have it gracefully
- fail if this script is missing.
--- ==================================================================--]]
-
-if ui_mcm and not ui_mcm.ui_functors_enabled then
- cache_value = ui_mcm.UIMCM.CacheValue
- -- Storing pointer to the unmodified MCM function
- function init_wrapper_box(xml, anchor, w, h, posx, posy)
- if not (xml and anchor) then return end
- wrapbox = xml:InitStatic("elements:image", anchor)
- if not wrapbox then return end
- w = w or anchor:GetWidth()
- h = h or anchor:GetHeight()
- posx = posx and (type(posx) == "number") and posx or 0
- posy = posy and (type(posy) == "number") and posy or 0
- wrapbox:SetWndSize(vector2():set(w,h))
- pos = wrapbox:GetWndPos()
- wrapbox:SetWndPos(vector2():set(pos.x + posx, pos.y + posy))
- return wrapbox
- end
-
- function ui_mcm.UIMCM:CacheValue(path, opt, value, v)
- cache_value(self,path,opt,value,v)
- -- Use pointer to pass the args through to MCM unaltered
- -- We need to prepend "self" to the args because we're invoking a class method without the colon
- if v and v.on_selection_functor then ui_mcm.exec(unpack(v.on_selection_functor),path,opt,value,v) end
- -- If the on_selection_functor attribute contains a functor, pass a copy of the same args to the functor
- end
-
- function ui_mcm.UIMCM:Register_Image(xml, handler, v)
- local pic = xml:InitStatic("elements:image",handler)
- if v.link then
- if (v.pos) then
- local pos = pic:GetWndPos()
- pic:SetWndPos(vector2():set( pos.x + v.pos[1] , pos.y + v.pos[2] ))
- end
- if (v.size) then
- pic:SetWndSize(vector2():set( v.size[1] , v.size[2] ))
- end
- pic:InitTexture(v.link)
- pic:SetStretchTexture(v.stretch and true or false)
- end
-
- if v.ui_hook_functor then
- local wrapbox = init_wrapper_box(xml,handler,pic:GetWidth(),pic:GetHeight(),-10)
- local handlers = {
- pic = pic, -- Handler for the image element
- }
- local flags = {
- etype = "image",
- }
- ui_mcm.exec(unpack(v.ui_hook_functor),wrapbox,handlers,v,flags)
- end
-
- return pic:GetHeight()
- end
-
- function ui_mcm.UIMCM:Register_Slide(xml, handler, v)
- local frame = xml:InitStatic("elements:slide", handler)
- local _pos = frame:GetWndPos()
- frame:SetWndPos(vector2():set( _pos.x , _pos.y + (v.spacing or 20) ))
-
- local pic = xml:InitStatic("elements:slide:pic", frame)
- if v.link then
- pic:InitTexture(v.link)
- pic:SetStretchTexture(true)
- if (v.pos) then
- local pos = pic:GetWndPos()
- pic:SetWndPos(vector2():set( pos.x + v.pos[1] , pos.y + v.pos[2] ))
- end
- if (v.size) then
- pic:SetWndSize(vector2():set( v.size[1] * (utils_xml.is_widescreen() and 0.8 or 1) , v.size[2] ))
- end
- pic:InitTexture(v.link)
- end
-
- local txt = xml:InitTextWnd("elements:slide:txt", frame)
- if v.text then
- txt:SetText( game.translate_string(v.text) )
- end
-
- if not v.borderless then
- xml:InitStatic("elements:slide:line_1", frame)
- xml:InitStatic("elements:slide:line_2", frame)
- end
-
- if v.ui_hook_functor then
- local wrapbox = init_wrapper_box(xml,handler,pic:GetWidth(),pic:GetHeight() + 20,-10)
- local handlers = {
- pic = pic, -- handler for the image element
- txt = txt, -- handler for the text element
- }
- local flags = {
- etype = "slide",
- }
- ui_mcm.exec(unpack(v.ui_hook_functor),wrapbox,handlers,v,flags)
- end
-
- return (pic:GetHeight() + 20)
- end
-
- function ui_mcm.UIMCM:Register_Desc(xml, handler, v)
- local desc = xml:InitTextWnd("elements:desc", handler)
- desc:SetText( game.translate_string(v.text) )
- desc:AdjustHeightToText()
- desc:SetWndSize(vector2():set(desc:GetWidth(), desc:GetHeight() + 20))
- if v.clr and v.clr[4] then
- desc:SetTextColor( GetARGB(v.clr[1], v.clr[2], v.clr[3], v.clr[4]) )
- end
-
- if v.ui_hook_functor then
- local wrapbox = init_wrapper_box(xml,handler,desc:GetWidth(),desc:GetHeight(),-10)
- local handlers = {
- desc = desc, -- Handler for the text description element
- }
- local flags = {
- etype = "desc",
- }
- ui_mcm.exec(unpack(v.ui_hook_functor),wrapbox,handlers,v,flags)
- end
-
- return desc:GetHeight()
- end
-
- function ui_mcm.UIMCM:Register_List(xml, handler, path, opt, v, flags)
- local id = ui_mcm.cc(path , opt)
-
- -- Caption
- local h = self:Register_Cap(xml, handler, id, v.hint)
-
- -- Apply to all button
- if flags.apply_to_all and flags.group then
- self:Register_BtnAll(xml, handler, path, opt, v, flags)
- end
-
- -- Create control
- local ctrl = xml:InitComboBox("elements:list",handler)
- if (ctrl:GetHeight() > h) then
- --h = ctrl:GetHeight()
- end
-
- -- Get values
- local idx
- local value = self:GetValue(path, opt, v, flags)
- local content = self:GetContent(path, opt, v)
-
- -- Setup
- for i=1,#content do
- local str_2 = content[i][2] or tostring(content[i][1])
- local str = v.no_str and str_2 or game.translate_string("ui_mcm_lst_" .. str_2)
- ctrl:AddItem( game.translate_string(str), i)
-
- if content[i][1] == value then
- idx = i
- end
- end
- idx = idx or 1
- local str_2 = content[idx][2] or tostring(content[idx][1])
- local str = v.no_str and str_2 or game.translate_string("ui_mcm_lst_" .. str_2)
- ctrl:enable_id( idx )
- ctrl:SetText( game.translate_string(str) )
-
- -- Register
- local id_ctrl = self:Stacker(path, opt, v)
-
- self:Register(ctrl, id_ctrl)
- local _wrapper = function(handler) -- we need wrapper in order to pass ctrl to method
- self:Callback_List(ctrl, path, opt, v)
- end
- self:AddCallback(id_ctrl, ui_events.LIST_ITEM_SELECT, _wrapper, self)
-
- if v.ui_hook_functor then
- local id_cap = string.gsub(id, "/", "_")
- local cap = self._Cap[id_cap]
- local wrapbox = init_wrapper_box(xml,handler,handler:GetWidth(),ctrl:GetHeight(),-10)
- local handlers = {
- ctrl = ctrl, -- handler for the list control element
- cap = cap, -- handler for text caption element
- }
- flags.etype = "list"
- flags.path = path -- MCM menu path
- flags.opt = opt -- MCM option ID
- ui_mcm.exec(unpack(v.ui_hook_functor),wrapbox,handlers,v,flags)
- end
-
- return h
- end
-
-
- printf("ui_mcm.script monkeypatched by zzzzz_monkey_paw_ui_mcm.script")
-elseif ui_mcm then
- printf("zzzzz_monkey_paw_ui_mcm.script: installed MCM already supports UI functors, aborting monkeypatch")
-else
- printf("zzzzz_monkey_paw_ui_mcm.script: MCM not found, aborting monkeypatch")
-end
\ No newline at end of file
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/sounds/catspaw/paw_blip.ogg b/mods/Personal Adjustable Waypoint_backup/gamedata/sounds/catspaw/paw_blip.ogg
deleted file mode 100644
index 68b2f08a..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/sounds/catspaw/paw_blip.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8fce1fcfb951753b3a457462e81c2062ea32d4157255d8f8ddbbc1facfff1f3a
-size 8390
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/sounds/catspaw/paw_ping.ogg b/mods/Personal Adjustable Waypoint_backup/gamedata/sounds/catspaw/paw_ping.ogg
deleted file mode 100644
index a5cf39af..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/sounds/catspaw/paw_ping.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:54259263048911be79ececa00565a89ecf2c4ab1d54ea5366985c242dc32e1ef
-size 48387
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/textures/ui/paw/mcm_screenpos_preview.dds b/mods/Personal Adjustable Waypoint_backup/gamedata/textures/ui/paw/mcm_screenpos_preview.dds
deleted file mode 100644
index e7f9b50f..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/textures/ui/paw/mcm_screenpos_preview.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cdcd76c47eb84069bd0b7f243d5efb17b13122714df4c554568dbe40866f7d26
-size 4194432
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/textures/ui/paw/paw_hud_indicators.dds b/mods/Personal Adjustable Waypoint_backup/gamedata/textures/ui/paw/paw_hud_indicators.dds
deleted file mode 100644
index 06ff3b90..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/textures/ui/paw/paw_hud_indicators.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:700199eb2c4c9d08bb5581182639315b5dbc88cf39b8488b3e507c408747a747
-size 1048704
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/textures/ui/paw/paw_mcm_assets.dds b/mods/Personal Adjustable Waypoint_backup/gamedata/textures/ui/paw/paw_mcm_assets.dds
deleted file mode 100644
index 1a0e02bf..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/textures/ui/paw/paw_mcm_assets.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c2ce5273f48aefe59cf5e356c94d3a552ebcc9126d6d8a3295412f0f6d8e0167
-size 4194432
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/textures/ui/paw/ui_icons_paw.dds b/mods/Personal Adjustable Waypoint_backup/gamedata/textures/ui/paw/ui_icons_paw.dds
deleted file mode 100644
index 768ba56f..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/textures/ui/paw/ui_icons_paw.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:63aebdb34365f1b6b6968a1680715b5223507f751bedc0cc4443b25de7694c85
-size 4194432
diff --git a/mods/Personal Adjustable Waypoint_backup/gamedata/textures/ui/paw/ui_icons_paw_body_marks.dds b/mods/Personal Adjustable Waypoint_backup/gamedata/textures/ui/paw/ui_icons_paw_body_marks.dds
deleted file mode 100644
index ee0f0362..00000000
--- a/mods/Personal Adjustable Waypoint_backup/gamedata/textures/ui/paw/ui_icons_paw_body_marks.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a1c4c01959ca1da96a5141ef36b56293a275c2f8031a813ac5df39cc7241b035
-size 4194432
diff --git a/mods/Personal Adjustable Waypoint_backup/meta.ini b/mods/Personal Adjustable Waypoint_backup/meta.ini
deleted file mode 100644
index c20d35e4..00000000
--- a/mods/Personal Adjustable Waypoint_backup/meta.ini
+++ /dev/null
@@ -1,28 +0,0 @@
-[General]
-gameName=stalkeranomaly
-modid=0
-version=2.0.1.0
-newestVersion=
-category="3,"
-nexusFileStatus=1
-installationFile=Catspaw_Personal_Adjustable_Waypoint-2.0.2.zip
-repository=Nexus
-ignoredVersion=
-comments=
-notes=
-nexusDescription=
-url=
-hasCustomURL=true
-lastNexusQuery=
-lastNexusUpdate=
-nexusLastModified=2024-02-28T11:54:47Z
-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/Screen Space Shaders/gamedata/configs/mod_system_SSS_zones.ltx b/mods/Screen Space Shaders/gamedata/configs/mod_system_SSS_zones.ltx.mohidden
similarity index 100%
rename from mods/Screen Space Shaders/gamedata/configs/mod_system_SSS_zones.ltx
rename to mods/Screen Space Shaders/gamedata/configs/mod_system_SSS_zones.ltx.mohidden
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/README.MD b/mods/[DEV] Body Health System Realistic Overhaul/README.MD
deleted file mode 100644
index 2a3fd0e6..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/README.MD
+++ /dev/null
@@ -1,243 +0,0 @@
-I always disliked how BHS worked. Where medkits give temporary hp and most random items heal certain parts.
-
-This mod is my attempt at making BHS fun and immersive instead of just "use a if b, use c if d".
-
-The github link:
-
-Currently in active development to balance the items and the system.
-
-MORE UP-TO-DATE Description on Moddb page
-
-**MOD IS CONSTANTLY BEING DEVELOPED SO EXPECT CHANGES TO HAPPEN FREQUENTLY.**
-
-# NOW INCLUDES AN EXPERIMENTL TARKOV-LIKE HP SYSTEM. READ 0.8 CHANGELOG FOR MORE INFO
-
-**An overview of the mod and plans below.**
-
-# General points:
-
-## The goals of the mod:
-
-- Make healing limbs take considerably longer.
-- Remove temporary HP.
-- Add painkillers and painkilling properties. Think of tarkov.
-- Make medkits the main source of healing, like they should be.
-- Make the system highly configurable.
-
-## **Stuff that this mod already has:**
-
-- No temp hp System. Replaced by painkillers instead. Exactly the same purpose as tarkov basically. Allow you to use the destroyed limbs and remove the nasty effects.
-- To complement painkiller system weapon sway mod is integrated. Painkillers reduce weapon sway like if the limb is healed by that amount.
-- Medkits either heal all parts at once OR they heal set amount of HP, going one HP at a time for the lowest HP limb(potentially more efficient, which makes a lot of sense).
-- Broken limb system. If HP of the limb reaches 0 you need to use a surgical kit, then splint with a splint(all configurable and can turn off).
-- Reworked sleep healing to heal more logically(you heal lowest limbs first). Can disable that.
-- Health multiplier to enable more gradual healing. Limb HP by default is 11 torso, head; 5 for the rest - kinda low. - Experimental. Realistically would do nothing but increase the number of HP steps so it looks smoother but makes it hard to see real HP -- UNSUPPORTED - TOO MANY PROBLEMS
-- Weapon sway depending on arms damage and painkiller effect
-- Slower medkit usage and healing rate.
-- Campfire heal for limbs(adapting script)
-- Artefact healing for limbs(same thing)
-
-## **Stuff i will add:**
-
-- More effects on limb damage. Instead of instadeath increase received damage, stuff like that - need ideas
-- Heal limbs one-by-one only like in EFT(maybe)
-
-All new items are sold by medics. Some new items also added to flea market and butcher's shop.
-As well as a lot of different traders that don't have medics nearby.
-
-Keep in mind that in the more-or-less finished version **everything will be optional modules**. While in development i wont split it into modules so my workload is more sane.
-
-Suggestions and ideas related to BHS are appreciated, as i myself am trying to figure out how to balance things out.
-
-# Balancing for meds:
-
-- All medkits heal twice as slow. Overall they heal exactly the same amount, just slower. New time is 66.8 seconds.
-- Survival kit modified using same logic as medkits, but with radiation and healing boosted to match heal speed of basic medkit. New time is 90 seconds.
-- Rebirth modded to last twice as long. Same idea as medkits. New time is 14 seconds.
-- Bandages apply their effect instantly instead of over time.
-
-## As for limb damage:
-
-Keep in mind these values: Legs and Arms have 10HP per limb. Torso and Head have 22HP per limb.
-That is double of what basic BHS has to make 1HP matter less in the system making balancing easier.
-No, boosting HP does not make limbs survive more damage. Everything is scaled.
-
----
-
-- ### Heal One System(Healing one HP at a time for one limb):
-
- - Basic medkit: 21 HP total over the duration. Can heal two arms/legs to full or torso/head once
- - Army and Cheese: 42 HP total over the duration. Can heal all arms/legs to full or both torso and head to full.
- - Stimpacks: Mirror what medkits heal over their duration, but faster.
- - Survival kit: 63 HP total over 90 seconds.
- - Coagulant(Vinca/Barvinok): Heals 11 HP over 438 seconds. Cant heal over your HP level. (If you are at 50% then it can only heal limbs to 50%)
- - Rebirth: 63 HP total over 17 seconds. Cant heal over your HP level. (If you are at 50% then it can only heal limbs to 50%)
- - Propital: 30 HP total over 180 seconds. Cant heal over your HP level.
-
----
-- ### Heal All System(Healing one HP at a time for all limbs) - LEGACY:
-
- - Basic medkit: Head/Torso - 11 HP, Legs/Arms - 5 HP total over the duration. Can heal two arms/legs to full or torso/head once
- - Army and Cheese: Head/Torso - 16 HP, Legs/Arms - 7 HP total over the duration. Can heal all arms/legs to full or both torso and head to full.
- - Stimpacks: Mirror what medkits heal over their duration, but faster.
- - Rebirth: Head/Torso - 22 HP, Legs/Arms - 10 HP over 17 seconds. Cant heal over your HP level. (If you are at 50% then it can only heal limbs to 50%)
-
----
-- ### Surgery system and kits(In order to restore a limb to 1 HP surgical tools are required):
-
- - Surgical tools: Slow use, restores one limb to be splinted in 10 seconds. One use and needs a bandage. Will cause damage on use.
- - CMS: Slow use, 5 charges. Restores one limb to be splinted in 10 seconds. Can be configured to restore a limb without a splint required. More weight-efficient
-
----
-
-- ### Splints:
-
- - Splint: Slow use, restores a limb to full 1HP in 10 seconds. One charge.
- - Aluminium splint: Slow use, restores a limb to full 1HP in 10 seconds. Three charges. More weight-efficient
-
----
-
-- ### Painkillers(**Keep in mind that painkiller system doubles the painkiller power for torso and head because they have double the HP over legs and arms**)
-
- - Morphine: 9 painkiller power for 305 seconds.
- - Rebirth: 9 painkiller power for 305 seconds.
- - Salicidic acid: 7 painkiller power for 180 seconds.
- - Fentanyl: 4 painkiller power for 202 seconds.
- - Analgetic(Diclofenac Sodium): 5 painkiller power for 305 seconds.
- - SJ6 stimulator: 7 painkiller power for 600 seconds.
- - SJ1 stimulator: 4 painkiller power for 600 seconds.
- - Analgin painkiller: 2 painkiller power for 180 seconds.
- - Ibuprofen: 4 painkiller power for 290 seconds.
- - Yadulin: 4 painkiller power for 505 seconds.
- - Adrenalin(Epinephrine): 2 painkiller power for 2184 seconds.
- - Army Medkit: 4 painkiller power for 128 seconds.
- - Cheese Medkit: 3 painkiller power for 128 seconds.
- - Stimpack: 2 painkiller power for 128 seconds.
- - Army Stimpack: 4 painkiller power for 128 seconds.
- - Sci Stimpack: 3 painkiller power for 128 seconds.
- - Cocaine: 2 painkiller power for 1644 seconds.
- - Joint: 1 painkiller power for 420 seconds.
- - Marijuana: 1 painkiller power for 652 seconds.
- - Bottled vodkas: 1 painkiller power for 300 seconds.
- - Quality vodka: 2 painkiller power for 300 seconds.
- - Zone vodka(bottle_metal): 2 painkiller power for 300 seconds.
-
----
-
-**Credits:**
-
-- bvcx for detailed description mod.
-- ilrathCXV for campfire and artefact healing scripts.
-- DokBrok for BHS Evolution mod that inspired this one.
-- TheParaziT - for base injector animation. Extended them to all injectors.
-- Uknown person who ported all the animations from gunslinger
-
----
-
-# Latest changelog:
-
-## 0.86E Update
-
-- Actor damage balancer update to match gamma 0.91
-
-## 0.86D Update
-
-- Reduced weapon out delay for bandages(Mirror of Enhanced anims - medical)
-
-## 0.86C Update
-
-- Skinning without a knife out is done with a hunting knife, always. Fix for gamma tomahawk.
-
-## 0.86B Update
-
-- Crafting recipes added
-
-## 0.86A Update
-
-- Fomod made to better convey information
-
-## 0.86 Update
-
-- New default BHS hud - thanks to chilichocolate
-- Fix for painkiller effect not being recalculated after healing
-- Dynamic damage threshold adjustement based on damagescale(no visible effect)
-- Small fix for torso surgery display
-- Fomod installer. Yes, it has finally happened, folks.
-
-## 0.85A Hotfix
-
-- Fix for leftover variable (gamma users)
-
-## 0.85 Hotfix
-
-- Rewritten all mechanics on healing, splinting and surgery to match the quality of the latest additions.
-- Removed some hard to maintain features.
-
-## 0.81B(C) Hotfix
-
-- Fix for missing model crash after removing the mod(nowscript will remove akvatabs and other vanilla changed items too)
-- Fix for forgotten sounds
-
-## 0.81 Hotfix
-
-- Included forgotten .ppe file for latest ADB version.
-- Updated included FDDA Enhanced Animations mod
-
-## 0.8 Beta:
-
-### Additions and rebalancing:
-
-- **New Experimental BHS mode. Tarkov-like limb system. Vanilla HP only acts as a wellness indicator and cannot be healed with medkits. Only vinca and the usual ways of resting, artefacts,etc. Enables below feature automatically.**
-- Above can be buggy when the system prevents a death, as a callback fires but is cancelled by the script. Depends on installed mods. An alternative way can be used if this proves too buggy.
-- **Combined with the above change - damage bleedthrugh from destroyed limbs to every other limb. If you take damage in the destroyed limb the damage is split between all the other limbs. Can be turned on/off**
-- Limb damage multiplier added to MCM menu.
-- Small-ish balancing changes to painkillers that are too much to list.
-- Added bone breaking sound effect and feedback to notify the player when their limb(s) reach 0 HP.
-- Update/reworked the damage system. Changes should not be noticeable unless you go into code.
-- Fall damage multiplier added to mcm. Fall damage should be goddamn scary.
-- Explosives are **VERY** scary and do damage to all limbs. You really dont want to experience it.
-- Update hit detection to more accurately tell what limb was hit.
-- Removed legacy features.
-- Grok's Actor Damage Balancer and Progressive Rad Damages compatibility patches.(Gamma requires both)
-- Non-medical enhanced animations separated into a sister mod. FDDA enhanced animations.
-
-### Fixes:
-
-- Fixed FDDA anims crash. Mod is fully DLTX now.
-- Fixed arm/legs minimal hp settings to correctly apply.
-- General bugfixing of everything not touched by changes, which is not much.
-
-## 0.63 Beta:
-
-- Dynamic item spawns,item rewards,new game loadouts DLTX item injection
-- Safe deletion utility to safely delete all new items
-- Loot injection for new items. Now they can be looted from bodies.
-
-## Hotfix 0.6A:
-
-- Fixed mutant harvest animation
-- Added FDDA MCM unlocker for gamma users
-
-## 0.6 Beta:
-
-### Additions and rebalancing:
-
-- Bandages and tourniquets now work instantly instead of over time.
-- Vodka's are now painkillers of different power.
-- To be able to sprint with broken legs you now need painkiller power 3 and above. Vodkas provide up to 2.
-- Psy mechanics for SJ stims. Now they lower your max psy health but increase resistance and regeneration the lower your psy health is. (EXPERIMENTAL)
-- A lot more traders sell new items now, and old ones should be fixed, hopefully.
-- Compatibility patch for Coffee if the zone to use better anims.
-- Damage to limbs increased by 25%. Hopefully losing limbs will be more frequent.
-
-### Fixes:
-
-- Painkillers active time is now tracked a lot better, so level transitions wont extend their duration. Nor saving/loading will extend/decrease it. Deviation will be very small % wise.
-- Detailed description compatibility now has fixed encoding for dot symbols
-- Default detailed description script fixes(included by default, not compat)
-- Artefact healing now wont work if you dont have PBA mod installed. Meaning if you want to use it in base anomaly you need to patch it. I would do that if i had vanilla classnames and values for them - it is not hard at all.
-- General bugfixing for main script
-- DLTX bugfixing to make sure included mods are not overwritten by standalone versions of same mods.
-- Animation files bugfixing to change as little as possible compared to base FDDA + asnen's. Now should be 100% compatible as no old anims are overwritten or deleted.
-- Damage threshold lowered back to 3% like default. Now consumable items are tracked and wont deal damage to limbs
-- Renamed Enchaned UI compat to "Enhanced GUI". Got confused about names
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/adb_psy_feedback.ppe b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/adb_psy_feedback.ppe
deleted file mode 100644
index 2bba8d3c..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/adb_psy_feedback.ppe and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/blur_bhs.ppe b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/blur_bhs.ppe
deleted file mode 100644
index 981205e3..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/blur_bhs.ppe and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/concussion_bhs.ppe b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/concussion_bhs.ppe
deleted file mode 100644
index 24dff03d..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/concussion_bhs.ppe and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/concussion_post_bhs.ppe b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/concussion_post_bhs.ppe
deleted file mode 100644
index 53772056..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/concussion_post_bhs.ppe and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/antirad.anm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/antirad.anm
deleted file mode 100644
index af5ac4bb..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/antirad.anm and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/antirad_use.anm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/antirad_use.anm
deleted file mode 100644
index af5ac4bb..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/antirad_use.anm and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/apteka.anm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/apteka.anm
deleted file mode 100644
index 57e7bfc1..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/apteka.anm and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/bandage.anm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/bandage.anm
deleted file mode 100644
index ebc97ef8..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/bandage.anm and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/medkit_exo.anm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/medkit_exo.anm
deleted file mode 100644
index 2767cd58..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/medkit_exo.anm and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/morphine_cam_anim.anm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/morphine_cam_anim.anm
deleted file mode 100644
index d73940bd..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/morphine_cam_anim.anm and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/rad.anm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/rad.anm
deleted file mode 100644
index 57e2dcc4..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/itemuse_anm_effects/rad.anm and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/weapon_sway/sway_1.anm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/weapon_sway/sway_1.anm
deleted file mode 100644
index 3ae2f580..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/weapon_sway/sway_1.anm and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/weapon_sway/sway_2.anm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/weapon_sway/sway_2.anm
deleted file mode 100644
index 790b105c..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/weapon_sway/sway_2.anm and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/weapon_sway/sway_3.anm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/weapon_sway/sway_3.anm
deleted file mode 100644
index 3ae2f580..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/weapon_sway/sway_3.anm and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/weapon_sway/sway_4.anm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/weapon_sway/sway_4.anm
deleted file mode 100644
index 790b105c..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/weapon_sway/sway_4.anm and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/weapon_sway/sway_5.anm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/weapon_sway/sway_5.anm
deleted file mode 100644
index 3ae2f580..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/anims/weapon_sway/sway_5.anm and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/icon_override/ico_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/icon_override/ico_bhsro.ltx
deleted file mode 100644
index 2ff1fb97..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/icon_override/ico_bhsro.ltx
+++ /dev/null
@@ -1,20 +0,0 @@
-![akvatab]
-icons_texture = ui\ui_maid_meds_eftmo
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 15
-inv_grid_y = 0
-
-![adrenalin]
-icons_texture = ui\ui_maid_meds_eftmo
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 16
-inv_grid_y = 0
-
-![morphine]
-icons_texture = ui\ui_maid_meds_eftmo
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 17
-inv_grid_y = 0
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/items/ea_addon_exo.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/items/ea_addon_exo.ltx
deleted file mode 100644
index c14207eb..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/items/ea_addon_exo.ltx
+++ /dev/null
@@ -1,25 +0,0 @@
-[stimpack_exo]
-snd = interface\item_usage\medkit_exo
-anm = item_ea_medkitexo
-cam = itemuse_anm_effects\medkit_exo.anm
-tm = 2300
-helm = true
-
-[stimpack_army_exo]:stimpack_exo
-anm = item_ea_medkit_armyexo
-
-[medkit_elite_exo]:stimpack_exo
-anm = item_ea_medkit_eliteexo
-
-[stimpack_scientic_exo]:stimpack_exo
-anm = item_ea_medkit_scienticexo
-
-[antirad_exo]:stimpack_exo
-anm = item_ea_antiradexo
-snd = interface\item_usage\medkit_exo_alt
-
-[antirad_cystamine_exo]:antirad_exo
-
-[morphine_exo]:stimpack_army_exo
-
-[salicidic_acid_exo]:stimpack_army_exo
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/items/items_anm_exo.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/items/items_anm_exo.ltx
deleted file mode 100644
index a74d0be2..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/items/items_anm_exo.ltx
+++ /dev/null
@@ -1,20 +0,0 @@
-[item_ea_medkitexo_hud]
-hands_position = 0.0,0.06,0.12
-hands_orientation = 0.0,0.0,0.0
-hands_position_16x9 = 0.0,0.06,0.12
-hands_orientation_16x9 = 0.0,0.0,0.0
-hud_fov = 0.80
-item_visual = dynamics\exo_anims\medkitexoobject
-anm_ea_show = medex, medex
-
-[item_ea_medkit_armyexo_hud]:item_ea_medkitexo_hud
-anm_ea_show = medex_blue, medkit_exo_blue
-
-[item_ea_medkit_scienticexo_hud]:item_ea_medkitexo_hud
-anm_ea_show = medex_yellow, medkit_exo_yellow
-
-[item_ea_medkit_eliteexo_hud]:item_ea_medkitexo_hud
-anm_ea_show = medex_blue, medkit_exo_blue
-
-[item_ea_antiradexo_hud]:item_ea_medkitexo_hud
-anm_ea_show = medex_antirad, medkit_exo_antirad
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/items/mod_animations_settings_othermeds_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/items/mod_animations_settings_othermeds_bhsro.ltx
deleted file mode 100644
index f124510a..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/items/mod_animations_settings_othermeds_bhsro.ltx
+++ /dev/null
@@ -1,88 +0,0 @@
-![drug_coagulant]
-tm = 3200
-
-![akvatab]
-anm = item_ea_drug_yadulin
-
-![antirad]
-snd = interface\item_usage\injector
-anm = item_ga_antirad
-cam = itemuse_anm_effects\rad.anm
-tm = 6500
-helm = true
-
-![antirad_cystamine]:antirad
-
-![adrenalin]
-snd = interface\item_usage\injector
-anm = item_ga_antirad
-cam = itemuse_anm_effects\rad.anm
-tm = 6500
-helm = true
-
-![analgetic]:antirad
-
-![tetanus]:antirad
-
-![rebirth]
-snd = interface\item_usage\injector
-anm = item_ga_antirad
-cam = itemuse_anm_effects\rad.anm
-tm = 6500
-helm = true
-
-![stimpack]
-snd = interface\item_usage\antirad_use
-anm = item_ea_stimpack
-cam = itemuse_anm_effects\antirad_use.anm
-tm = 4600
-helm = true
-
-![stimpack_army]:stimpack
-anm = item_ea_stimpack_army
-
-![stimpack_scientic]:stimpack
-anm = item_ea_stimpack_scientic
-
-![glucose]
-snd = interface\item_usage\injector
-anm = item_ga_antirad
-cam = itemuse_anm_effects\rad.anm
-tm = 6500
-helm = true
-![glucose_s]:glucose
-
-![salicidic_acid]
-snd = interface\item_usage\medkit
-anm = item_ga_medkit
-cam = itemuse_anm_effects\apteka.anm
-tm = 4200
-helm = true
-
-![morphine]
-snd = interface\item_usage\medkit
-anm = item_ga_medkit
-cam = itemuse_anm_effects\apteka.anm
-tm = 4200
-helm = true
-
-![bandage]
-snd = interface\item_usage\bandage
-anm = item_ga_bandage
-cam = itemuse_anm_effects\bandage.anm
-tm = 4600
-helm = true
-
-![bandage_israeli]:bandage
-anm = item_ga_bandage_israeli
-tm = 4600
-
-![bio_bandage]:bandage
-anm = item_ga_bio_bandage
-
-[jgut]
-snd = interface\item_usage\bandage_use
-anm = item_ro_tourniquet
-cam = itemuse_anm_effects\bint_use.anm
-tm = 3400
-helm = true
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/items/mod_animations_settings_slowermeds_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/items/mod_animations_settings_slowermeds_bhsro.ltx
deleted file mode 100644
index 0ecac36c..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/items/mod_animations_settings_slowermeds_bhsro.ltx
+++ /dev/null
@@ -1,35 +0,0 @@
-![medkit]
-snd = interface\item_usage\medkit_use_slow80
-anm = item_ea_medkit
-tm = 10000
-speed = 0.8
-helm = true
-
-![medkit_army]:medkit
-snd = interface\item_usage\medkit_use_slow80
-anm = item_ea_medkit_army
-tm = 10000
-speed = 0.8
-helm = true
-
-![medkit_scientic]:medkit
-snd = interface\item_usage\medkit_use_slow80
-anm = item_ea_medkit_scientic
-tm = 10000
-speed = 0.8
-helm = true
-
-![medkit_elite]:medkit
-snd = interface\item_usage\medkit_use_slow80
-anm = item_ea_medkit_elite
-tm = 10000
-speed = 0.8
-helm = true
-
-[survival_kit]
-snd = interface\item_usage\bandage_surginst
-anm = item_ga_bandage
-cam = itemuse_anm_effects\bandage.anm
-speed = 0.70
-tm = 12000
-helm = true
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/items/mod_animations_settings_z_eftmeds_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/items/mod_animations_settings_z_eftmeds_bhsro.ltx
deleted file mode 100644
index 898436f3..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/items/mod_animations_settings_z_eftmeds_bhsro.ltx
+++ /dev/null
@@ -1,40 +0,0 @@
-[bandage_army]:bandage_israeli
-snd = interface\item_usage\bandage
-anm = item_ga_bandage_israeli
-cam = itemuse_anm_effects\bandage.anm
-tm = 4600
-helm = true
-[surginst]:bandage
-snd = interface\item_usage\bandage_surginst
-anm = item_ga_bandage
-cam = itemuse_anm_effects\bandage.anm
-helm = true
-speed = 0.70
-tm = 10000
-[cms]:surginst
-[splint]:surginst
-[alu_splint]:splint
-![morphine]
-snd = interface\item_usage\morphine_use_v2
-anm = item_ro_injector_morphine
-cam = itemuse_anm_effects\morphine_cam_anim.anm
-tm = 4000
-helm = true
-![adrenalin]
-snd = interface\item_usage\morphine_use_v2
-anm = item_ro_injector_adrenaline
-cam = itemuse_anm_effects\morphine_cam_anim.anm
-tm = 4000
-helm = true
-[propital]:morphine
-anm = item_ro_injector_propital
-[zagustin]:propital
-anm = item_ro_injector_zagustin
-[sj6]:propital
-anm = item_ro_injector_sj6
-[sj1]:sj6
-anm = item_ro_injector_sj1
-[etg]:sj6
-anm = item_ro_injector_etg
-
-[analgin]:drug_sleepingpills
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/settings/mod_craft_eftmeds_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/settings/mod_craft_eftmeds_bhsro.ltx
deleted file mode 100644
index c48a02ab..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/settings/mod_craft_eftmeds_bhsro.ltx
+++ /dev/null
@@ -1,8 +0,0 @@
-![5]
-x_bandage_army = 4, recipe_drug_0, bandage,2,vodka,1,prt_o_fabrics_4,1
-x_alu_splint = 4, recipe_drug_0, splint,2,prt_i_fasteners,2,prt_i_scrap,2
-x_cms = 4, recipe_drug_0, surginst,3,bandage,3,prt_i_plastic,3
-x_splint = 4, recipe_drug_0, prt_i_scrap,1,prt_o_fabrics_2,2
-y_splint = 4, recipe_drug_0, prt_i_wood,1,prt_o_fabrics_2,2
-z_splint = 4, recipe_drug_0, prt_i_scrap,2,ball_hammer,1
-x_surginst = 4, recipe_drug_0, grooming,1,swiss_knife,1,cutlery,1
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/settings/mod_dynamic_item_spawn_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/settings/mod_dynamic_item_spawn_bhsro.ltx
deleted file mode 100644
index c9f7f2b2..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/settings/mod_dynamic_item_spawn_bhsro.ltx
+++ /dev/null
@@ -1,21 +0,0 @@
-![possible_uses]
-alu_splint = 1, 1
-analgin = 1, 3
-bandage_army = 1, 2
-akvatab = 1, 5
-
-![kit]
-surginst = 2
-splint = 3
-alu_splint = 2
-bandage_army = 3
-jgut = 3
-akvatab = 2
-
-![medical]
-alu_splint = 1
-surginst = 1
-splint = 2
-bandage_army = 2
-jgut = 2
-akvatab = 2
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/settings/mod_item_rewards_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/settings/mod_item_rewards_bhsro.ltx
deleted file mode 100644
index a9309de7..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/settings/mod_item_rewards_bhsro.ltx
+++ /dev/null
@@ -1,12 +0,0 @@
-![items_medical]
-alu_splint
-splint
-analgin
-cms
-sj1
-sj6
-etg
-propital
-zagustin
-bandage_army
-surginst
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/settings/mod_new_game_loadouts_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/settings/mod_new_game_loadouts_bhsro.ltx
deleted file mode 100644
index 51eb5b02..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/settings/mod_new_game_loadouts_bhsro.ltx
+++ /dev/null
@@ -1,94 +0,0 @@
-![stalker_loadout]
-akvatab = true, 1, 35
-splint = true, 3, 10
-bandage = true, 3, 15
-analgin = true, 3, 10
-surginst = true, 3, 10
-
-![bandit_loadout]
-akvatab = true, 1, 35
-splint = true, 3, 10
-bandage = true, 3, 15
-analgin = true, 3, 10
-surginst = true, 3, 10
-
-![ecolog_loadout]
-akvatab = true, 1, 35
-splint = true, 3, 10
-bandage = true, 3, 15
-analgin = true, 3, 10
-surginst = true, 3, 10
-
-![dolg_loadout]
-akvatab = true, 1, 35
-splint = true, 3, 10
-bandage = true, 3, 15
-analgin = true, 3, 10
-surginst = true, 3, 10
-
-![freedom_loadout]
-akvatab = true, 1, 35
-splint = true, 3, 10
-bandage = true, 3, 15
-analgin = true, 3, 10
-surginst = true, 3, 10
-
-![killer_loadout]
-akvatab = true, 1, 35
-splint = true, 3, 10
-bandage = true, 3, 15
-analgin = true, 3, 10
-surginst = true, 3, 10
-
-![army_loadout]
-akvatab = true, 1, 35
-splint = true, 3, 10
-bandage = true, 3, 10
-analgin = true, 3, 10
-bandage_army = true, 3, 15
-surginst = true, 3, 10
-
-![monolith_loadout]
-akvatab = true, 1, 35
-splint = true, 3, 10
-bandage = true, 3, 15
-analgin = true, 3, 10
-surginst = true, 3, 10
-bandage_army = true, 3, 15
-cms = true, 1, 60
-
-![csky_loadout]
-akvatab = true, 1, 35
-splint = true, 3, 10
-bandage = true, 3, 15
-analgin = true, 3, 10
-surginst = true, 3, 10
-
-![renegade_loadout]
-akvatab = true, 1, 35
-splint = true, 3, 10
-bandage = true, 3, 15
-analgin = true, 3, 10
-surginst = true, 3, 10
-
-![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, 15
-cms = true, 1, 60
-
-![zombied_loadout]
-akvatab = true, 1, 35
-splint = true, 3, 10
-bandage = true, 3, 15
-analgin = true, 3, 10
-surginst = true, 3, 10
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_bandit_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_bandit_bhsro.ltx
deleted file mode 100644
index 327e51d8..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_bandit_bhsro.ltx
+++ /dev/null
@@ -1,17 +0,0 @@
-![supplies_1]
-surginst = 4, 1
-analgin = 3, 1
-splint = 4, 1
-akvatab = 1, 1
-
-![supplies_3]
-cms = 1, 1
-surginst = 6, 1
-bandage_army = 6, 1
-analgin = 6, 1
-akvatab = 3, 1
-zagustin = 2, 1
-propital = 2, 1
-sj6 = 1, 1
-sj1 = 1, 1
-alu_splint = 2, 1
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_ecolog_hermann_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_ecolog_hermann_bhsro.ltx
deleted file mode 100644
index 518cf416..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_ecolog_hermann_bhsro.ltx
+++ /dev/null
@@ -1,25 +0,0 @@
-![supplies_1]
-surginst = 4, 1
-analgin = 3, 1
-splint = 4, 1
-akvatab = 1, 1
-
-![supplies_2]
-cms = 1, 1
-surginst = 6, 1
-bandage_army = 6, 1
-analgin = 6, 1
-akvatab = 3, 1
-alu_splint = 2, 1
-
-![supplies_3]
-cms = 2, 1
-surginst = 6, 1
-bandage_army = 6, 1
-analgin = 6, 1
-akvatab = 3, 1
-zagustin = 2, 1
-propital = 2, 1
-sj6 = 1, 1
-sj1 = 1, 1
-alu_splint = 2, 1
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_ecolog_sakharov_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_ecolog_sakharov_bhsro.ltx
deleted file mode 100644
index 518cf416..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_ecolog_sakharov_bhsro.ltx
+++ /dev/null
@@ -1,25 +0,0 @@
-![supplies_1]
-surginst = 4, 1
-analgin = 3, 1
-splint = 4, 1
-akvatab = 1, 1
-
-![supplies_2]
-cms = 1, 1
-surginst = 6, 1
-bandage_army = 6, 1
-analgin = 6, 1
-akvatab = 3, 1
-alu_splint = 2, 1
-
-![supplies_3]
-cms = 2, 1
-surginst = 6, 1
-bandage_army = 6, 1
-analgin = 6, 1
-akvatab = 3, 1
-zagustin = 2, 1
-propital = 2, 1
-sj6 = 1, 1
-sj1 = 1, 1
-alu_splint = 2, 1
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_generic_medic_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_generic_medic_bhsro.ltx
deleted file mode 100644
index 04267220..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_generic_medic_bhsro.ltx
+++ /dev/null
@@ -1,17 +0,0 @@
-![supplies_1]
-surginst = 4, 1
-analgin = 3, 1
-splint = 4, 1
-akvatab = 1, 1
-
-![supplies_2]
-cms = 2, 1
-surginst = 6, 1
-bandage_army = 6, 1
-analgin = 6, 1
-akvatab = 3, 1
-zagustin = 2, 1
-propital = 2, 1
-sj6 = 1, 1
-sj1 = 1, 1
-alu_splint = 2, 1
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_greh_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_greh_bhsro.ltx
deleted file mode 100644
index 327e51d8..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_greh_bhsro.ltx
+++ /dev/null
@@ -1,17 +0,0 @@
-![supplies_1]
-surginst = 4, 1
-analgin = 3, 1
-splint = 4, 1
-akvatab = 1, 1
-
-![supplies_3]
-cms = 1, 1
-surginst = 6, 1
-bandage_army = 6, 1
-analgin = 6, 1
-akvatab = 3, 1
-zagustin = 2, 1
-propital = 2, 1
-sj6 = 1, 1
-sj1 = 1, 1
-alu_splint = 2, 1
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_isg_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_isg_bhsro.ltx
deleted file mode 100644
index 518cf416..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_isg_bhsro.ltx
+++ /dev/null
@@ -1,25 +0,0 @@
-![supplies_1]
-surginst = 4, 1
-analgin = 3, 1
-splint = 4, 1
-akvatab = 1, 1
-
-![supplies_2]
-cms = 1, 1
-surginst = 6, 1
-bandage_army = 6, 1
-analgin = 6, 1
-akvatab = 3, 1
-alu_splint = 2, 1
-
-![supplies_3]
-cms = 2, 1
-surginst = 6, 1
-bandage_army = 6, 1
-analgin = 6, 1
-akvatab = 3, 1
-zagustin = 2, 1
-propital = 2, 1
-sj6 = 1, 1
-sj1 = 1, 1
-alu_splint = 2, 1
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_military_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_military_bhsro.ltx
deleted file mode 100644
index 518cf416..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_military_bhsro.ltx
+++ /dev/null
@@ -1,25 +0,0 @@
-![supplies_1]
-surginst = 4, 1
-analgin = 3, 1
-splint = 4, 1
-akvatab = 1, 1
-
-![supplies_2]
-cms = 1, 1
-surginst = 6, 1
-bandage_army = 6, 1
-analgin = 6, 1
-akvatab = 3, 1
-alu_splint = 2, 1
-
-![supplies_3]
-cms = 2, 1
-surginst = 6, 1
-bandage_army = 6, 1
-analgin = 6, 1
-akvatab = 3, 1
-zagustin = 2, 1
-propital = 2, 1
-sj6 = 1, 1
-sj1 = 1, 1
-alu_splint = 2, 1
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_military_esc_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_military_esc_bhsro.ltx
deleted file mode 100644
index 518cf416..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_military_esc_bhsro.ltx
+++ /dev/null
@@ -1,25 +0,0 @@
-![supplies_1]
-surginst = 4, 1
-analgin = 3, 1
-splint = 4, 1
-akvatab = 1, 1
-
-![supplies_2]
-cms = 1, 1
-surginst = 6, 1
-bandage_army = 6, 1
-analgin = 6, 1
-akvatab = 3, 1
-alu_splint = 2, 1
-
-![supplies_3]
-cms = 2, 1
-surginst = 6, 1
-bandage_army = 6, 1
-analgin = 6, 1
-akvatab = 3, 1
-zagustin = 2, 1
-propital = 2, 1
-sj6 = 1, 1
-sj1 = 1, 1
-alu_splint = 2, 1
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_monolith_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_monolith_bhsro.ltx
deleted file mode 100644
index 518cf416..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_monolith_bhsro.ltx
+++ /dev/null
@@ -1,25 +0,0 @@
-![supplies_1]
-surginst = 4, 1
-analgin = 3, 1
-splint = 4, 1
-akvatab = 1, 1
-
-![supplies_2]
-cms = 1, 1
-surginst = 6, 1
-bandage_army = 6, 1
-analgin = 6, 1
-akvatab = 3, 1
-alu_splint = 2, 1
-
-![supplies_3]
-cms = 2, 1
-surginst = 6, 1
-bandage_army = 6, 1
-analgin = 6, 1
-akvatab = 3, 1
-zagustin = 2, 1
-propital = 2, 1
-sj6 = 1, 1
-sj1 = 1, 1
-alu_splint = 2, 1
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_renegade_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_renegade_bhsro.ltx
deleted file mode 100644
index 327e51d8..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_renegade_bhsro.ltx
+++ /dev/null
@@ -1,17 +0,0 @@
-![supplies_1]
-surginst = 4, 1
-analgin = 3, 1
-splint = 4, 1
-akvatab = 1, 1
-
-![supplies_3]
-cms = 1, 1
-surginst = 6, 1
-bandage_army = 6, 1
-analgin = 6, 1
-akvatab = 3, 1
-zagustin = 2, 1
-propital = 2, 1
-sj6 = 1, 1
-sj1 = 1, 1
-alu_splint = 2, 1
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_stalker_basic_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_stalker_basic_bhsro.ltx
deleted file mode 100644
index 327e51d8..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_stalker_basic_bhsro.ltx
+++ /dev/null
@@ -1,17 +0,0 @@
-![supplies_1]
-surginst = 4, 1
-analgin = 3, 1
-splint = 4, 1
-akvatab = 1, 1
-
-![supplies_3]
-cms = 1, 1
-surginst = 6, 1
-bandage_army = 6, 1
-analgin = 6, 1
-akvatab = 3, 1
-zagustin = 2, 1
-propital = 2, 1
-sj6 = 1, 1
-sj1 = 1, 1
-alu_splint = 2, 1
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_stalker_butcher_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_stalker_butcher_bhsro.ltx
deleted file mode 100644
index 865815a1..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_stalker_butcher_bhsro.ltx
+++ /dev/null
@@ -1,5 +0,0 @@
-![supplies_generic]
-surginst = 5, 0.75
-analgin = 3, 0.75
-splint = 4, 0.75
-akvatab = 1, 0.75
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_stalker_cashier_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_stalker_cashier_bhsro.ltx
deleted file mode 100644
index 04267220..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_stalker_cashier_bhsro.ltx
+++ /dev/null
@@ -1,17 +0,0 @@
-![supplies_1]
-surginst = 4, 1
-analgin = 3, 1
-splint = 4, 1
-akvatab = 1, 1
-
-![supplies_2]
-cms = 2, 1
-surginst = 6, 1
-bandage_army = 6, 1
-analgin = 6, 1
-akvatab = 3, 1
-zagustin = 2, 1
-propital = 2, 1
-sj6 = 1, 1
-sj1 = 1, 1
-alu_splint = 2, 1
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_stalker_flea_market_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_stalker_flea_market_bhsro.ltx
deleted file mode 100644
index 43bc182e..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_stalker_flea_market_bhsro.ltx
+++ /dev/null
@@ -1,5 +0,0 @@
-![supplies_generic]
-surginst = 5, 0.75
-analgin = 3, 0.75
-splint = 4, 0.75
-akvatab = 1, 0.75
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_stalker_flea_market_night_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_stalker_flea_market_night_bhsro.ltx
deleted file mode 100644
index 387932e8..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_stalker_flea_market_night_bhsro.ltx
+++ /dev/null
@@ -1,5 +0,0 @@
-![supplies_generic]
-surginst = 5, 0.75
-analgin = 3, 0.75
-splint = 4, 0.75
-!akvatab = 1, 0.75
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_stalker_sidorovich_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_stalker_sidorovich_bhsro.ltx
deleted file mode 100644
index 327e51d8..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/items/trade/mod_trade_stalker_sidorovich_bhsro.ltx
+++ /dev/null
@@ -1,17 +0,0 @@
-![supplies_1]
-surginst = 4, 1
-analgin = 3, 1
-splint = 4, 1
-akvatab = 1, 1
-
-![supplies_3]
-cms = 1, 1
-surginst = 6, 1
-bandage_army = 6, 1
-analgin = 6, 1
-akvatab = 3, 1
-zagustin = 2, 1
-propital = 2, 1
-sj6 = 1, 1
-sj1 = 1, 1
-alu_splint = 2, 1
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/mod_system_anims_bints_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/mod_system_anims_bints_bhsro.ltx
deleted file mode 100644
index eb11603a..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/mod_system_anims_bints_bhsro.ltx
+++ /dev/null
@@ -1,37 +0,0 @@
-;Базовый бинт
-
-[item_ga_bandage_hud]
-hands_position = 0,-0.11,0.17
-hands_orientation = 0,20,0
-hands_position_16x9 = 0,-0.11,0.17
-hands_orientation_16x9 = 0,20,0
-item_visual = dynamics\bints\bandage_hud
-anm_ea_show = bint, bint
-hud_fov = 0.9
-
-
-;Рзраильский Р±РёРЅС‚
-
-[item_ga_bandage_israeli_hud]:item_ga_bandage_hud
-hands_position = 0,-0.11,0.17
-hands_orientation = 0,20,0
-hands_position_16x9 = 0,-0.11,0.17
-hands_orientation_16x9 = 0,20,0
-item_visual = dynamics\bints\bandage_hud
-anm_ea_show = bint, bint
-hud_fov = 0.9
-
-
-;Био бинт
-
-[item_ga_bio_bandage_hud]:item_gwa_bandage_hud
-hands_position = 0,-0.11,0.17
-hands_orientation = 0,20,0
-hands_position_16x9 = 0,-0.11,0.17
-hands_orientation_16x9 = 0,20,0
-item_visual = dynamics\bints\bandage_hud
-anm_ea_show = bint, bint
-hud_fov = 0.9
-
-[item_ro_tourniquet_hud]:item_ea_bandage_hud
-item_visual = dynamics\bints\wpn_bint_arm_hud.ogf
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/mod_system_anims_injectors_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/mod_system_anims_injectors_bhsro.ltx
deleted file mode 100644
index b02652c3..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/mod_system_anims_injectors_bhsro.ltx
+++ /dev/null
@@ -1,52 +0,0 @@
-[item_ga_antirad_hud]
-hands_position = 0.0,-0.025,0.2
-hands_orientation = 0.0,0.0,0.0
-hands_position_16x9 = 0.0,-0.025,0.2
-hands_orientation_16x9 = 0.0,0.0,0.0
-hud_fov = 1.00
-item_visual = dynamics\injectors\antirad.ogf
-
-anm_ea_show = rad, antirad
-
-
-[item_ga_stimpack_hud]
-hands_position = 0.0,-0.025,0.2
-hands_orientation = 0.0,0.0,0.0
-hands_position_16x9 = 0.0,-0.025,0.2
-hands_orientation_16x9 = 0.0,0.0,0.0
-hud_fov = 1.00
-item_visual = dynamics\injectors\antirad.ogf
-
-anm_ea_show = rad, antirad
-
-
-[item_ga_stimpack_army_hud]
-hands_position = 0.0,-0.025,0.2
-hands_orientation = 0.0,0.0,0.0
-hands_position_16x9 = 0.0,-0.025,0.2
-hands_orientation_16x9 = 0.0,0.0,0.0
-hud_fov = 1.00
-item_visual = dynamics\injectors\antirad.ogf
-
-anm_ea_show = rad, antirad
-
-
-[item_ga_stimpack_scientic_hud]
-hands_position = 0.0,-0.025,0.2
-hands_orientation = 0.0,0.0,0.0
-hands_position_16x9 = 0.0,-0.025,0.2
-hands_orientation_16x9 = 0.0,0.0,0.0
-hud_fov = 1.00
-item_visual = dynamics\injectors\antirad.ogf
-
-anm_ea_show = rad, antirad
-
-[item_ga_morphine_hud]
-hands_position = 0.0,-0.025,0.2
-hands_orientation = 0.0,0.0,0.0
-hands_position_16x9 = 0.0,-0.025,0.2
-hands_orientation_16x9 = 0.0,0.0,0.0
-hud_fov = 1.00
-item_visual = dynamics\injectors\antirad.ogf
-
-anm_ea_show = rad, antirad
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/mod_system_anims_injectors_stims_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/mod_system_anims_injectors_stims_bhsro.ltx
deleted file mode 100644
index c2d7074a..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/mod_system_anims_injectors_stims_bhsro.ltx
+++ /dev/null
@@ -1,24 +0,0 @@
-[item_ro_injector_morphine_hud]
-hands_position = -0.0055,0.02, 0.04
-hands_position_16x9 = -0.0055,0.02, 0.04
-item_visual = dynamics\injectors\wpn_morphine_hud.ogf
-
-anm_ea_show = hand_morphine_use, item_morphine_use
-
-[item_ro_injector_adrenaline_hud]:item_ro_injector_morphine_hud
-item_visual = dynamics\injectors\wpn_adrenaline_hud.ogf
-
-[item_ro_injector_propital_hud]:item_ro_injector_morphine_hud
-item_visual = dynamics\injectors\wpn_propital_hud.ogf
-
-[item_ro_injector_zagustin_hud]:item_ro_injector_morphine_hud
-item_visual = dynamics\injectors\wpn_zagustin_hud.ogf
-
-[item_ro_injector_sj6_hud]:item_ro_injector_morphine_hud
-item_visual = dynamics\injectors\wpn_sj6_hud.ogf
-
-[item_ro_injector_sj1_hud]:item_ro_injector_morphine_hud
-item_visual = dynamics\injectors\wpn_sj1_hud.ogf
-
-[item_ro_injector_etg_hud]:item_ro_injector_morphine_hud
-item_visual = dynamics\injectors\wpn_etg_hud.ogf
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/mod_system_anims_medkits_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/mod_system_anims_medkits_bhsro.ltx
deleted file mode 100644
index 34644699..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/mod_system_anims_medkits_bhsro.ltx
+++ /dev/null
@@ -1,26 +0,0 @@
-[item_ga_medkit_hud]
-hands_position = 0.0,-0.025,0.12
-hands_orientation = 0.0,0.0,0.0
-hands_position_16x9 = 0.0,-0.025,0.12
-hands_orientation_16x9 = 0.0,0.0,0.0
-hud_fov = 0.80
-item_visual = dynamics\aptechki\medkit_hud
-anm_ea_show = med, med
-
-[item_ga_medkit_army_hud]:item_ga_medkit_hud
-item_visual = dynamics\aptechki\medkit_hud
-
-[item_ga_medkit_scientic_hud]:item_ga_medkit_hud
-item_visual = dynamics\aptechki\medkit_hud
-
-[item_ga_medkit_elite_hud]:item_ga_medkit_hud
-item_visual = dynamics\aptechki\medkit_hud
-
-[item_ga_syringe_def_hud]:item_ga_medkit_hud
-item_visual = dynamics\aptechki\medkit_hud
-anm_ea_show = med, med
-
-[item_ga_syringer_guns_hud]:item_ga_medkit_hud
-item_visual = dynamics\aptechki\medkit_hud
-anm_ea_show = med, med
-
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/mod_system_eftmeds_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/mod_system_eftmeds_bhsro.ltx
deleted file mode 100644
index 45073667..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/mod_system_eftmeds_bhsro.ltx
+++ /dev/null
@@ -1,260 +0,0 @@
-[alu_splint]:booster_multi, booster
-$spawn = "food and drugs\bandage"
-visual = dynamics\eft_meds\itm_alusplint.ogf
-kind = i_medical
-description = st_alu_splint_descr
-cost = 1500
-inv_name = st_alu_splint
-inv_name_short = st_alu_splint
-inv_weight = 0.4
-use_condition = true
-max_uses = 3
-empty_weight = 0.01
-icons_texture = ui\ui_maid_meds_eftmo
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 4
-inv_grid_y = 0
-use_sound = interface\inv_splint
-tier = 1
-
-[splint]:booster_multi, booster
-$spawn = "food and drugs\bandage"
-visual = dynamics\eft_meds\itm_splint.ogf
-kind = i_medical
-description = st_splint_descr
-cost = 600
-inv_name = st_splint
-inv_name_short = st_splint
-use_condition = false
-max_uses = 1
-inv_weight = 0.2
-icons_texture = ui\ui_maid_meds_eftmo
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 3
-inv_grid_y = 0
-use_sound = interface\inv_splint
-tier = 1
-
-[analgin]:booster_multi
-$spawn = "food and drugs\antibio_sulfad"
-visual = dynamics\equipments\medical\drug_sleeping_pills.ogf
-kind = i_medical
-description = st_analgin_descr
-cost = 1400
-inv_name = st_analgin
-inv_name_short = st_analgin
-use_condition = true
-max_uses = 5
-inv_weight = 0.02
-empty_weight = 0.001
-icons_texture = ui\analgin_icon
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 0
-boost_time = 180
-use_sound = interface\inv_eat_pills_2
-tier = 1
-
-[etg]:booster
-$spawn = "food and drugs\medkit"
-visual = dynamics\eft_meds\itm_stim_etg.ogf
-kind = i_medical
-description = st_etg_descr
-cost = 4500
-inv_name = st_etg
-inv_name_short = st_etg
-inv_weight = 0.01
-icons_texture = ui\ui_maid_meds_eftmo
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 18
-inv_grid_y = 0
-boost_time = 1800
-boost_power_restore = 0.00642
-boost_max_weight = 25.000
-eat_alcohol = -0.250
-eat_satiety = -0.500
-eat_thirstiness = 0.5
-eat_sleepiness = -0.2
-eat_health = -0.04
-use_sound = interface\inv_syringe
-tier = 3
-
-[sj1]:booster
-$spawn = "food and drugs\medkit"
-visual = dynamics\eft_meds\itm_stim_sj6.ogf
-kind = i_medical
-description = st_sj1_descr
-cost = 4000
-inv_name = st_sj1
-inv_name_short = st_sj1
-inv_weight = 0.01
-icons_texture = ui\ui_maid_meds_eftmo
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 6
-inv_grid_y = 1
-boost_time = 1500
-boost_wound_immunity = 0.15
-boost_strike_immunity = 0.15
-boost_fire_wound_immunity = 0.15
-boost_explosion_immunity = 0.15
---boost_telepat_protection = 0.03
-boost_power_restore = 0.00442
-boost_max_weight = 20.000
-eat_alcohol = -0.150
-eat_satiety = -0.300
-eat_thirstiness = 0.3
-eat_sleepiness = -0.05
-eat_health = -0.04
-use_sound = interface\inv_syringe
-tier = 3
-
-[sj6]:booster
-$spawn = "food and drugs\medkit_army"
-visual = dynamics\eft_meds\itm_stim_sj6.ogf
-kind = i_medical
-description = st_sj6_descr
-cost = 5500
-inv_name = st_sj6
-inv_name_short = st_sj6
-inv_weight = 0.01
-icons_texture = ui\ui_maid_meds_eftmo
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 7
-inv_grid_y = 1
-boost_time = 1500
-boost_wound_immunity = 0.2
-boost_strike_immunity = 0.2
-boost_fire_wound_immunity = 0.2
-boost_explosion_immunity = 0.2
---boost_telepat_protection = 0.05
-boost_power_restore = 0.00842
-boost_max_weight = 30.000
-eat_alcohol = -0.250
-eat_satiety = -0.500
-eat_thirstiness = 0.5
-eat_sleepiness = -0.2
-eat_health = -0.08
-use_sound = interface\inv_syringe
-tier = 4
-
-[propital]:booster
-$spawn = "food and drugs\medkit_scientic"
-visual = dynamics\eft_meds\itm_stim_propital.ogf
-kind = i_medical
-description = st_propital_descr
-cost = 4000
-inv_name = st_propital
-inv_name_short = st_propital
-inv_weight = 0.01
-icons_texture = ui\ui_maid_meds_eftmo
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 8
-inv_grid_y = 1
-boost_time = 180
-boost_health_restore = 0.0015
-eat_alcohol = 0.025
-eat_satiety = -0.200
-eat_thirstiness = 0.5
-eat_sleepiness = 0.09
-eat_health = -0.02
-use_sound = interface\inv_syringe
-tier = 5
-
-[zagustin]:booster
-$spawn = "food and drugs\antirad"
-visual = dynamics\eft_meds\itm_stim_zagustin.ogf
-kind = i_medical
-description = st_zagustin_descr
-cost = 3000
-inv_name = st_zagustin
-inv_name_short = st_zagustin
-inv_weight = 0.01
-icons_texture = ui\ui_maid_meds_eftmo
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 9
-inv_grid_y = 1
-boost_time = 600
-boost_bleeding_restore = 0.002
-boost_wound_immunity = 0.005
-eat_alcohol = 0.025
-eat_satiety = -0.350
-eat_thirstiness = 0.5
-eat_sleepiness = 0.09
-eat_health = -0.03
-use_sound = interface\inv_syringe
-tier = 5
-
-[bandage_army]:booster_multi
-$spawn = "food and drugs\bandage"
-kind = i_medical
-visual = dynamics\devices\dev_bandage\dev_bandage.ogf
-description = st_bandage_army_descr
-cost = 1500
-inv_name = st_bandage_army
-inv_name_short = st_bandage_army
-inv_weight = 0.07
-icons_texture = ui\army_bandage_icon
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 0
-boost_time = 1
-boost_bleeding_restore = 0.1
-use_sound = interface\inv_bandage_3p7
-use_condition = true
-script_binding = bind_item.bind
-max_uses = 2
-remove_after_use = true
-tier = 2
-
-[surginst]:booster
-$spawn = "food and drugs\medkit_ai1"
-visual = dynamics\equipments\trade\cutlery.ogf
-kind = i_medical
-description = st_surginst_descr
-inv_name = st_surginst
-inv_name_short = st_surginst
-icons_texture = ui\ui_maid_meds_eftmo
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 3
-inv_grid_y = 2
-cost = 800
-inv_weight = 0.15
-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
-required_tool = bandage
-eat_health = -0.08
-use_sound = actor\pain_6
-tier = 1
-
-[cms]:booster, booster_multi
-$spawn = "food and drugs\medkit_ai1"
-visual = dynamics\eft_meds\itm_surgical_kit.ogf
-kind = i_medical
-description = st_cms_descr
-cost = 8000
-inv_name = st_cms
-inv_name_short = st_cms
-inv_weight = 0.7
-icons_texture = ui\ui_maid_meds_eftmo
-inv_grid_width = 1
-inv_grid_height = 2
-inv_grid_x = 4
-inv_grid_y = 1
-use_sound = interface\inv_medkit
-use_condition = true
-max_uses = 5
-remove_after_use = true
-eat_health = -0.03
-tier = 3
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/mod_system_z_drugs_balance_bhsro.ltx b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/mod_system_z_drugs_balance_bhsro.ltx
deleted file mode 100644
index 283fc80f..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/mod_system_z_drugs_balance_bhsro.ltx
+++ /dev/null
@@ -1,114 +0,0 @@
-![medkit]
-boost_time = 66.8
-boost_health_restore = 0.0015
-boost_radiation_restore = 0.0004
-
-![medkit_army]
-boost_time = 66.8
-boost_health_restore = 0.0025
-boost_bleeding_restore = 0.0025
-boost_power_restore = 0.004
-
-![medkit_scientic]
-boost_time = 66.8
-boost_health_restore = 0.0025
-boost_bleeding_restore = 0.0025
-boost_radiation_restore = 0.001
-
-![survival_kit]
-boost_time = 90
-boost_health_restore = 0.0015
-boost_radiation_restore = 0.0004
-boost_bleeding_restore = 0.05
-
-![stimpack]
-boost_time = 12
-boost_health_restore = 0.007 ;= abouth half health restored.
-
-![stimpack_army]
-boost_time = 15
-boost_health_restore = 0.01
-
-![stimpack_scientic]
-boost_time = 15
-boost_health_restore = 0.01
-boost_radiation_restore = 0.003
-
-![rebirth]
-boost_time = 17
-boost_health_restore = 0.0188
-boost_radiation_restore = 0.0122
-
-![akvatab]:booster_multi
-$spawn = "food and drugs\antirad"
-visual = dynamics\eft_meds\itm_ibuprofen.ogf
-kind = i_medical
-description = st_akvatab_descr
-cost = 2500
-inv_name = st_akvatab
-inv_name_short = st_akvatab
-use_condition = true
-max_uses = 5
-empty_weight = 0.01
-inv_weight = 0.15
-eat_alcohol = 0
-icons_texture = ui\ui_maid_meds_eftmo
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 15
-inv_grid_y = 0
-use_sound = interface\inv_eat_pills
-snd_on_take = pills
-tier = 4
-
-![bandage]
-eat_satiety = 0
-eat_alcohol = 0
-eat_sleepiness = 0
-boost_time = 1 --10
-boost_bleeding_restore = 0.075 --0.01
-
-![jgut]
-eat_satiety = 0
-eat_alcohol = 0
-eat_sleepiness = 0
-boost_time = 1
-boost_bleeding_restore = 0.2
-visual = dynamics\eft_meds\itm_tourniquet.ogf
-
-![adrenalin]
-visual = dynamics\eft_meds\itm_stim_adrenaline.ogf
-icons_texture = ui\ui_maid_meds_eftmo
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 16
-inv_grid_y = 0
-
-![analgetic]
-boost_wound_immunity = 0.05
-boost_fire_wound_immunity = 0.05
-boost_explosion_immunity = 0.05
-boost_strike_immunity = 0.05
-
-![salicidic_acid]
-boost_wound_immunity = 0.075
-boost_fire_wound_immunity = 0.075
-boost_explosion_immunity = 0.075
-boost_strike_immunity = 0.075
-visual = dynamics\eft_meds\itm_stim_morphine.ogf
-
-![morphine]
-boost_wound_immunity = 0.1
-boost_fire_wound_immunity = 0.1
-boost_explosion_immunity = 0.1
-boost_strike_immunity = 0.1
-visual = dynamics\eft_meds\itm_stim_morphine.ogf
-icons_texture = ui\ui_maid_meds_eftmo
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 17
-inv_grid_y = 0
-
-![drug_coagulant]
-cost = 5000
---boost_health_restore = 0.0002 --medkit 0.0015
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/eng/st_bhs_medicine_text.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/eng/st_bhs_medicine_text.xml
deleted file mode 100644
index ba154c45..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/eng/st_bhs_medicine_text.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
-
- •
-
-
-
- H
-
-
-
- T
-
-
-
- A
-
-
-
- L
-
-
-
- Heals
-
-
-
- limb HP
-
-
-
- (EXP)Heals
-
-
-
- main HP
-
-
-
- current HP level
-
-
-
- to
-
-
-
- for
-
-
-
- Painkiller
-
-
-
- level
-
-
-
- Splint kit
-
-
-
- Splints a limb
-
-
-
- Surgical kit
-
-
-
- Restores a limb
-
-
-
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/eng/st_descr_override.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/eng/st_descr_override.xml
deleted file mode 100644
index d96270e8..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/eng/st_descr_override.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
- PROPERTIES:
-
-
-
- TIMED:
-
-
-
- LIMBS:
-
-
-
- health:
-
-
-
- radiation:
-
-
-
- bleeding:
-
-
-
- over
-
-
-
- sec
-
-
-
- sleep:
-
-
-
- thirst:
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/eng/ui_st_body_health_system.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/eng/ui_st_body_health_system.xml
deleted file mode 100644
index 6cf63513..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/eng/ui_st_body_health_system.xml
+++ /dev/null
@@ -1,276 +0,0 @@
-
-
-
-
-
-
-
- Body Health System
-
-
- Body Health System
-
-
-
- Text HUD Replacer
-
-
- (Reloading required) Text version of HUD.
-
-
-
- New voice for penalties
-
-
- Enabling this activates new voice during sprint with damaged legs. \nDisabling returns voice from original mod.
-
-
- Minimum Leg HP for camera sway penalty
-
-
- HP of at least one leg must be below this value to play effects. \nDefault slider value of 10 means that effects will play at 9 or less HP. (Movement speed penalty will still be there, for now)
-
-
- Minimum Leg HP for damage during sprint
-
-
- Sprint with damaged leg has a chance to deal damage. \nThis slider sets the minimum amount of leg HP needed to play this effect, i.e. if slider is 4 and leg HP is 4 then effect will be active. (Value of -1 disables the feature)
-
-
- Legs Camera Effects Power
-
-
- Multiplier of legs penalty for camera effect. Default: 1.0.
-
-
- Minimum Arms HP for penalties
-
-
- Summary Arms HP must be below this value to play effects. \nDefault slider value of 16 means that effects will play if both arms have 9 or less HP.
-
-
- Arms Effects Power
-
-
- Multiplier for arms penalty effect power. Default: 1.0.
-
-
- Minimum Head Damage for penalties
-
-
- Damage needed to play effects. For example, default slider value of 2 means that each headshot damage must be for 2 or more HP.
-
-
- Head Effects Power
-
-
- Multiplier for head penalty effect power. Default: 1.0.
-
-
-
- New options from the BHS Realistic Overhaul. Leave at default for the preferred way to play the game.\nYOU HAVE TO RELOAD THE GAME AFTER CHANGING ANY SETTINGS BELOW. SOME SETTINGS MAY REQUIRE A FULL RESTART
-
-
-
- 2 new options added with BHS Rewrite in v0.8 BETA.
-
-
-
- (EXPERIMENTAL)BHS Alternative mode(EXPERIMENTAL)
-
-
-
- Damage can be dealt to limbs only. Player can only die from head reaching 0 HP.\n
- Vanilla stalker HP is only used as reference for how overall healthy you are.\n
- In this mode damage bleed-through can not be disabled.\n
- Think of this as an attempt to bring a stalker version of tarkov HP system.\n
- EXPERIMENTAL. USE FOR TESTING OR PREVIEW. POSSIBLY UNBALANCED AND NOT STRESS TESTED.
-
-
-
- Limb damage bleed through
-
-
- Any damage done to a limb over its HP will instead bleed through to other limbs\n
- Torso damage scaled(2x) compared to other limbs from bleed-through\n
-
-
-
-
- Limb damage multiplier
-
-
- Multiplies the incoming limb damage by set value. Default: 2.5
-
-
-
- Fall limb damage multiplier
-
-
- Multiplies limb from falling by set value. Default: 2
-
-
-
- Natural healing
-
-
- Damaged body parts will heal VERY slowly on their own.\nCannot heal over % of your main HP. \nDefault is 1 limb HP every 5 minutes
-
-
- Natural healing speed
-
-
- Multiplier for natural regeneration. Higher is faster. \nHealing time is divided by this number.
-
-
-
- Painkiller grain shader
-
-
- When you take a medical item with painkiller effect, the screen becomes grainy (same as when you are in a radiation area).
-
-
-
- Medkit healing logic
-
-
- Medkits heal all limbs at once for one HP at a time (easier) \nOR medkits heal most damaged limb first one HP at a time (Intended default).
-
-
- Medkits heal all limbs at once
-
-
- Medkits heal one HP at a time
-
-
- Rebirth healing logic
-
-
- Rebirth heals all limbs at once for one HP at a time (easier) \nOR rebirth heals most damaged limb first one HP at a time (Intended default).
-
-
- Rebirth heals all limbs at once
-
-
- Rebirth heals one HP at a time
-
-
-
- Surgery mechanic
-
-
- Destroyed limbs(Reached 0 HP) require surgery via surgical tools or surgical kit first to be healed. \nDoes not prevent painkillers from working
-
-
- Surgery tools repair all limbs instead of one
-
-
- Surgery tools repair their set amount of HP on all limbs.
-
-
- Surgery heals by itself (ENABLED IF SPLINTING IS DISABLED BUT SURGERY ENABLED)
-
-
- Surgery tools heal instead of repairing HP, effectively removing splinting mechanic.
-
-
- CMS like tarkov
-
-
- Allows CMS kit to restore limbs to 40% of hp instead of just repairing them to be splinted. \nOnly works for CMS kit.
-
-
-
- Broken limb mechanic
-
-
- Limbs repaired with surgery require a splint first to be healed. \nDoes not prevent painkillers from working.
-
-
- Bandage is splint
-
-
- With this option turned on, the bandage fixes a broken limb.
-
-
- Tourniquet is splint
-
-
- With this option turned on, the tourniquet fixes a broken limb.
-
-
- Medkits also splint broken limbs
-
-
- Medkits ignore broken limb mechanic and heal limbs anyway.\nThink of this like a splint being contained in a medkit (wow, tarkov).
-
-
-
- Medicine psy effects(Voiced actor)
-
-
- Medicine can cause or heal psy damage. Currently only SJ injectors psy effects are implemented.\nSJ injectors decrease maximum psy health causing hallucinations but also increase psy resistance and regeneration.\nWorks by default for GAMMA. Otherwise requires Voiced Actor mod.\nIf script is not found nothing happens. Disable only if you dont like psi damage from meds.
-
-
-
- Sleep healing
-
-
- Sleeping regenerates damage to limbs. Healing speed and mechanic can be adjusted below. \nCannot heal over % of your main HP.
-
-
- New sleeping heal logic
-
-
- In original BHS every limb got healed one HP per hour of sleep. \nThis heals most damaged limb one HP at a time per hour(can be adjusted).
-
-
- Sleeping heal rate
-
-
- Multiplier for sleep healing rate.
-
-
-
- Artefacts can regenerate Limbs
-
-
- (ONLY COMPATIBLE WITH GAMMA BY DEFAULT. LOOK UP MOD PAGE ON HOW TO EDIT THE VALUES)\nIf an artefact posesses healing properties it will also slowly regenerate limbs up to current HP level.
-
-
- Artefact healing speed multiplier (Higher=Faster)
-
-
- Adjusts the regeneration speed for artefacts by this multiplier.
-
-
-
- Campfires can regenerate Limbs
-
-
- Campfires can regenerate Limbs
-
-
- Time between heal (seconds)
-
-
- The amount of time for a limb to heal by one tick (in seconds). \nPress ENTER after typing your desired value.
-
-
-
-
- Loot Chance Coefficient
-
-
- Multiplier for new meds drop chance.\nDefault value - 1.0
-
-
- Delete all addon related items (for safe uninstall)
-
-
- This option makes it possible to safely uninstall the addon.\n1) Enable it\n2) Load a game if you haven't already\n3) Make sure all items were removed\n4) Make a save, exit and disable the addon
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/eng/ui_st_weapon_sway.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/eng/ui_st_weapon_sway.xml
deleted file mode 100644
index ec3bbb8f..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/eng/ui_st_weapon_sway.xml
+++ /dev/null
@@ -1,230 +0,0 @@
-
-
-
-
-
-
-
- Weapon Sway
-
-
-
-
- Enable Weapon Sway
-
-
- Enabling/Disabling the weapon sway feature.
-
-
-
- Body Health System patch (Need reloading)
-
-
- Enable if you have Body Health System addon installed and want to have sway penalties from BHS. This will use Weapon Sway addon when arms are above BHS arm penalties. \n
- \n You can disable patch even when BHS installed, this will overwrite BHS and use only Weapon Sway addon all the time.
-
-
-
- Hold Breath Keybind
-
-
- Changes keybind for the hold breath feature.
-
-
-
- Animation Type
-
-
- Animation type of weapon sway. Currently only have first two, all "custom_" are empty and are there for people to add their own.
-
-
-
- Scope Animation Type
-
-
- Animation type of weapon sway with scope. List same as above.
-
-
-
- Max Effect Power
-
-
- Maximum power that camera effect can reach, combined from all other factors. \n
- \n Default: 3
-
-
-
- Weight Factor
-
-
- Multiplier for weight of the gun (gun_weight * Weight_Factor). \n
- \n Default: 1.0
-
-
-
- Max Weight Power
-
-
- Maximum power that weight multiplier can reach, the heavier gun the more multiplier for camera effect is. \n
- \n Default: 7
-
-
-
- Stand Power
-
-
- Effect multiplier for stand/walk body states. \n
- \n Default: 1.2 \n
- \n (Stand_Power * gun_weight * Weight_Factor * 0.1)
-
-
-
- Crouch Power
-
-
- Effect multiplier for crouch body state. \n
- \n Default: 0.8 \n
- \n (Crouch_Power * gun_weight * Weight_Factor * 0.1)
-
-
-
- Low Crouch Power
-
-
- Effect multiplier for low crouch body state. \n
- \n Default: 0.4 \n
- \n (Low_Crouch_Power * gun_weight * Weight_Factor * 0.1)
-
-
-
- Scope Stand Power
-
-
- Effect multiplier for stand/walk body states if weapon has scope. \n
- \n Default: 1.2 \n
- \n (Scope_Stand_Power * gun_weight * Weight_Factor * 0.02)
-
-
-
- Scope Crouch Power
-
-
- Effect multiplier for crouch body state if weapon has scope. \n
- \n Default: 0.8 \n
- \n (Scope_Crouch_Power * gun_weight * Weight_Factor * 0.02)
-
-
-
- Scope Low Crouch Power
-
-
- Effect multiplier for low crouch body state if weapon has scope. \n
- \n Default: 0.4 \n
- \n (Scope_Low_Crouch_Power * gun_weight * Weight_Factor * 0.02)
-
-
-
- Scope Low Crouch Power
-
-
- Effect multiplier for low crouch body state if weapon has scope. \n
- \n Default: 0.4 \n
- \n (Scope_Low_Crouch_Power * gun_weight * Weight_Factor * 0.02)
-
-
-
- Mounted weapon feature
-
-
- A feature that allows you to put a gun on an obstacle infront of you to reduce weapon sway.
-
-
-
- Mounted weapon reduce power
-
-
- Reduction multiplier of weapon sway when it's mounted. \n
- \n Default: 0.1
-
-
-
- Max height of mounted weapon
-
-
- This one is a bit complicated, just reduce even more if you want a weapon to still considered "mounted" when you raise it higher. \n
- \n Default: -0.35
-
-
-
- Hold breath feature
-
-
- Allows you to hold breath by holding "Use" key while aiming and decrease weapon sway for limited amount of time.
-
-
-
- Hold breath power
-
-
- (constant) Multiplier for weapon sway reduction while holding your breath. \n
- \n Default: 0.1
-
-
-
- Release breath power
-
-
- (1 + this_value * seconds_hold) Penalty multiplier that you get after releasing "Use" key or if hit max timer. \n
- \n Default: 0.04
-
-
-
- Maximum time to hold breath
-
-
- Maximum amount of time that you can hold your breath for (in seconds). \n
- \n Default: 11
-
-
-
- Breath restore power
-
-
- Multiplier for breath restore, a value of "1" means that breath will restore at the same speed as decreasing. \n
- \n Default: 0.5
-
-
-
- Enable hold breath sound
-
-
- Enables breath in/out sounds.
-
-
-
- "Handling" weapon stat factor
-
-
- Range of handling weapon stat multiplier: \n
- \n Increasing this value will result in: bad handlings = bigger penalties; good handlings = bigger bonuses. \n
- \n Decreasing is: bad handlings = less penalties, good handlings = less bonuses, "0" = handlings do not affect sway. \n
- \n Default: 1
-
-
-
-
- Debug
-
-
- Debug allows you to see: \n
- \n 1. Direction and changed y-axis direction (in console) \n
- \n 2. Difference in distance between cursor and raycast with edited "y" (in dynamic news) \n
- \n 3. Power of animation camera effect (actor messages at the bottom)
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/eng/z_st_items_medical.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/eng/z_st_items_medical.xml
deleted file mode 100644
index c95090a1..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/eng/z_st_items_medical.xml
+++ /dev/null
@@ -1,207 +0,0 @@
-
-
-
-
-
-
- Ibuprofen
-
-
- Ibuprofen is a medication in the nonsteroidal anti-inflammatory drug (NSAID) class that is used for treating pain, fever, and inflammation. It is used as a general painkiller.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] painkillers\n
-
-
-
- Bandage
-
-
- A normal elastic bandage used to stop bleeding and prevent infection of wounds. For regular bleeding, carefully apply the bandage to the wound. For arterial bleeding, urgently tie the bandage around the affected area.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] stops bleeding\n
- %c[d_blue] • %c[ui_gray_2] fast usage (adhesive plaster)\n
-
-
-
- Vinca
-
-
- Ukrainian Vikasolum - an artificial equivalent of vitamin K. The main purpose of this drug is to increase blood coagulation speed. In great demand among stalkers who want slow-healing wounds and lacerations inflicted by mutants to close up faster. The effects of the drug are long-lasting. Take two tablets at a time.\n \n
-
-
-
- Anabiotics
-
-
- An experimental drug developed by Professor Ozersky for scientific research teams working in the Zone. At its core, the drug contains tetrodotoxin, known colloquially as "zombie powder," which causes a complete shutdown of the body's central nervous system that may allow people to survive emissions outside cover. After six years worth of field tests, thoughtful stalkers know to keep a few on hand for unexpected blowouts.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_red] • %c[ui_gray_2]causes temporary blackout\n
-
-
-
- Antidote
-
-
- The IP2 antitoxin is a complex drug comprising several antidotes, including metoclopramidum, pyridoxine, thiamine, riboxin and other pharmaceuticals. The drug is used to inject a range of antibiotics to neutralize natural poisons, together with synthetic poison absorbers, into the bloodstream. IP2 is not particularly popular in the Zone as most stalkers rely on a gas mask and a protective suit. However, there are still those who have a few units of this antidote stashed for emergency situations. The effects of the drug are long-lasting. Take one capsule at a time.\n \n
-
-
-
- Tourniquet
-
-
- A haemostatic rubber tourniquet, allowing the user to stop bleeding.\n \n
-
-
-
- Yadulin
-
-
- A semi-drug based on morphine. It allows the user to quickly dull pain and increase production of adrenaline, aiding the user in withstanding even the most intense battles. It is popular among stalkers, often used as a recreation drug among criminal groups, and is allegedly being supplied to the Monolith.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_red] • %c[ui_gray_2]causes severe dizziness\n
-
-
-
- AI-2 Medkit
-
-
- The AI-2 medkit was developed as a standard service first aid kit for various defence and law enforcement agencies and civil defense forces of the USSR. Handy for treating injuries, wounds, chemical and thermal burns and various types of poison.\n \n
-
-
-
- Army Medkit
-
-
- A specialized medical kit for providing first aid to combat casualties. The kit includes blood coagulants based on menadione, painkillers, antibiotics and immunostimulants, as well as a kit for removing bullets and fragments from the body. This medkit is issued primarily to army personnel such as Spetsnaz units venturing deep into the Zone and is popular among Duty forces.\n \n
-
-
-
- Scientific Medkit
-
-
- A medical kit designed specifically for use in the Zone. The kit contains products for handling wounds, as well as preventing the development of radiation poisoning and reducing accumulated radiation in the body. Contains Vikasolum, Batilolum and Naphazoline, unlike other medkits.\n \n
-
-
-
- Improvised Stimpack
-
-
- Improvised stimpacks are popular among novice Zoners as they are easy to obtain and inexpensive. Produced in the Zone from commonly available ingredients, without proper equipment and purification. This is the cause of many side effects which include headache, paraesthesia and considerable increase in nutrition demand. Injected in the thigh.\n \n
-
-
-
- Military Stimpack
-
-
- Military stims constitute a part of standard-issue soldier equipment for field operations in the Zone. Easily available on the market and can be acquired for a moderate price. Popular among experienced Zoners. They are significantly more potent and faster working than their improvised counterparts, which makes them perfect for use in life-threatening situations. Produced from raw agents of high density which can take their toll on the body. Side effects include shock, extreme dizziness and increased hunger.\n \n
-
-
-
- Scientific Stimpack
-
-
- Created by the same defence research institute in Kiev which developed the well-known SEVA suit, this state-of-the-art solution constitutes the most potent health stabiliser available in the Zone. Best quality ingredients and perfected formula enable almost instant recuperation and ensure prompt radiation cleansing. Side effects are minimised. Extremely high cost practically limits the target group of the drug to most skilful and successful stalkers.\n \n
-
-
-
- Cocaine
-
-
- Small aluminium case containing cocaine and the tools facilitating use. Cocaine is a powerful nervous system stimulant. Its effects can last from 15-30 minutes to an hour, depending on the route of administration. Cocaine increases alertness, induces feelings of well-being, competence and sexuality. Anxiety, paranoia and restlessness are common side effects. With excessive dosage, tremors, convulsions and increased body temperature are observed. Bandits are known for sniffing this drug right before launching an assault or ambush.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2]very potent stimulant\n
- %c[d_green] • %c[ui_gray_2]very potent dizziness removal\n
-
-
-
- Epinephrine Shot
-
-
- Epinephrine (also known as adrenalin) is a hormone and a neurotransmitter. Epinephrine has many functions in the body, instantly regulating heart rate, blood vessel and air passage diameters, and metabolic shifts. Epinephrine release is a crucial component of the fight-or-flight response of the sympathetic nervous system. The effects lead to increased blood glucose and fatty acids, providing substrates for instant energy production within cells throughout the body.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2]very potent stimulant\n
- %c[d_green] • %c[ui_gray_2]very potent dizziness removal\n
-
-
-
- Morphine Ampoule
-
-
- An iron ampoule designed as field equipment for military field personnel for instant pain reduction. This ampoule contains a powerful dose of morphine. In clinical medicine, morphine is regarded as the gold standard of opioid analgesics used to relieve severe or agonizing pain and suffering. Like other opioids, such as oxycodone, hydromorphone, and diacetylmorphine (heroin), morphine acts directly on the central nervous system (CNS) to relieve pain. Injected into an arm or a thigh.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_purple] • %c[ui_gray_2]extremely large damage resistance bonus (10%)\n
- %c[d_red] • %c[ui_gray_2]causes slight dizziness\n
-
-
-
- An iron ampoule designed as field equipment for military field personnel for instant pain reduction. It contains a powerful dose of metamizole mixed with an antihemorrhagic drug. Metamizole is one of the strongest Non-Steroidal Anti-Inflammatory Drugs (NSAIDs), especially effective at easing aches and pains as well as reducing fevers. It is also useful as anti-inflammatory drug when used in higher doses. May cause some delayed side effects such as leucopenia or agranulocytosis, so it should be used with moderation. Injected into an arm or a thigh. Its availability in the Zone is limited due to the difficulty of smuggling the medicine across military cordons.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_purple] • %c[pda_white]Large damage resistance bonus (7.5%)\n
-
-
-
- Sulfadimethoxine
-
-
- Sulfanilamide medication, effective against gram-positive and gram-negative bacteria. It acts on pneumococci, streptococci, staphylococcus, E. coli, Klebsiella stick (Friedlander's stick), causative agents of dysentery; is less active with respect to the protein; is active against the trachoma virus (an infectious eye disease that can lead to blindness); It does not act on strains of bacteria resistant to other sulfanilamide preparations. Adverse effects include headaches, digestive disorders, skin rashes, fevers and leukopenia. The effects of the drug are long-lasting.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_red] • %c[ui_gray_2]causes slight dizziness\n
-
-
-
- Diclofenac Sodium
-
-
- Non-steroidal anti-inflammatory drug from the group of phenylacetic acid derivatives. The effect of the drug dulls the user's nervous activity. Because of the huge number of side effects, such as headache, dizziness, drowsiness, and in some cases memory disorders, disorientation, irritability, it is not used for medicinal purposes in most countries. However, in the Zone it has become popular due to a side effect expressed in violation of the sensitivity of the central nervous system, which allows it to withstand severe injuries, such as gunshot and shrapnel wounds.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_purple] • %c[pda_white]Average damage resistance bonus (5%)\n
- %c[d_red] • %c[ui_gray_2]causes slight dizziness\n
-
-
-
- Chlortetracycline
-
-
- An antibiotic. Crystalline powder of golden yellow colour, bitter taste, soluble in water. This is one of the first open antibiotics (after penicillin).\n Chlorotetracycline hydrochloride has a bacteriostatic effect on gram-positive and gram-negative microbes, rickettsia and some large viruses.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_red] • %c[ui_gray_2]causes slight dizziness\n
-
-
-
- Warning! Do not use in combination with any other drug as this may prove lethal. This powerful mixture contained in a small syringe will make you lose consciousness. But when you wake up (if you wake up), you will feel reborn. Inject the syringe into your thigh when sitting down.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_red] • %c[ui_gray_2]causes extreme dizziness\n
-
-
-
- Fentanyl
-
-
- Fentanyl is a powerful opioid used as a pain medication. It is also used as a recreational drug, sometimes mixed with heroin, cocaine, or methamphetamine, and its potentially deadly overdose effects can be neutralized by naloxone. Fentanyl works primarily by activating ?-opioid receptors.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_red] • %c[ui_gray_2]causes slight dizziness\n
-
-
-
- Sleeping Pills
-
-
- A package of small sleeping pills that will almost immediately induce sleepiness, which also helps reducing avalanche-like nerve impulses for a considerable period. Swallow some time before you want to rest and drink a few sips of water afterwards for maximum effect. Take two tablets at a time.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_green] • %c[ui_gray_2]improves morale and mind protection against horrors of the Zone\n
- %c[d_green] • %c[ui_gray_2]induces sleepiness\n
-
-
-
- Psy-block
-
-
- A drug that blocks avalanche-like nerve impulses. Consumption induces short-term loss of all emotion. Used exclusively in the Zone to counteract the effects of anomalous psy-fields. The effects of the drug are long-lasting. Take two tablets at a time.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_green] • %c[ui_gray_2]improves morale and mind protection against horrors of the Zone\n
- %c[d_red] • %c[ui_gray_2]causes extreme dizziness\n
-
-
-
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/eng/zz_st_items_medical.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/eng/zz_st_items_medical.xml
deleted file mode 100644
index 6e4d39f3..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/eng/zz_st_items_medical.xml
+++ /dev/null
@@ -1,152 +0,0 @@
-
-
-
-
-
-
- Surgical Instruments
-
-
- Small variation of surgical instrument which are common in the zone. They are used to craft the CMS kit. Can be directly used, but it will require a bandage and the instruments aren't sterile anymore. So they can be used only one time.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] small kit to recover bodyparts\n
- %c[d_blue] • %c[ui_gray_2] crafting item\n
- %c[d_blue] • %c[ui_gray_2] surgical item\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[ui_gray_2] high quality\n
- %c[d_red] • %c[ui_gray_2] you will have to hurt yourself within the medical intervention\n
-
-
-
- Zagustin
-
-
- Military issue drug. Inhibitis activators of profibinolysin and slows down its transformation in fibrinolysin. Temporarily stops bleeding and increases resistance to bloodloss. Has side effects. Leads to severe dehydration.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] stops bleeding fast\n
- %c[d_blue] • %c[ui_gray_2] fast usage (syringe)\n
-
-
-
- Army Bandage
-
-
- An elastic army bandage used to stop bleeding and prevent infection of wounds. For regular bleeding, carefully apply the bandage to the wound. For arterial bleeding, urgently tie the bandage around the affected area.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] stops bleeding\n
- %c[d_blue] • %c[ui_gray_2] fast usage (adhesive plaster)\n
-
-
-
- Propital
-
-
- Military issue drug. It stimulates regeneration processes by increasing the biosynthesis of purine and pyrimidine bases, RNA, functional and enzymatic cell elements. Increases metabolism, health and vitality. It has long-term side effects. Permitted to use only by medical officers and paramedics.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[ui_gray_2] high quality\n
- %c[d_blue] • %c[ui_gray_2] fast usage (syringe)\n
-
-
-
- SJ6 Labs Combat Stimulant Injector
-
-
- Combat stimulant. Mixed with a small amount of adrenalin it is used to increase the body abilities before combat for about 3 minutes. The stimulant is allowed to use by the special forces units. Develeped by Svarog Test Labs, marked as SJ6. Has side effects. Not recommended for use in psy-active zones\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[ui_gray_2] military item\n
- %c[d_blue] • %c[ui_gray_2] fast usage (syringe)\n
- %c[d_blue] • %c[ui_gray_2] freshens you up\n
- %c[d_purple] • %c[ui_gray_2] very good damage resistance bonus (20%)\n
- %c[d_purple] • %c[ui_gray_2] very good carryweight bonus\n
- %c[d_purple] • %c[ui_gray_2] very good stamina bonus\n
- %c[d_purple] • %c[ui_gray_2] long duration\n
- %c[d_red] • %c[ui_gray_2] causes hallucinations but strenghtens the mind\n
- %c[d_red] • %c[ui_gray_2] greatly increases hunger\n
-
-
-
- SJ1 Labs Combat Stimulant Injector
-
-
- Combat stimulant. Is used for gaining strength and endurance before combat for about 3 minutes. Stimulant is allowed to use by the special forces units. Develeped by Svarog Test Labs, marked as SJ1. Has side effects. Not recommended for use in psy-active zones\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[ui_gray_2] military item\n
- %c[d_blue] • %c[ui_gray_2] fast usage (syringe)\n
- %c[d_blue] • %c[ui_gray_2] freshens you up\n
- %c[d_purple] • %c[ui_gray_2] good damage resistance bonus (15%)\n
- %c[d_purple] • %c[ui_gray_2] good carryweight bonus\n
- %c[d_purple] • %c[ui_gray_2] very good stamina bonus\n
- %c[d_purple] • %c[ui_gray_2] long duration\n
- %c[d_red] • %c[ui_gray_2] causes hallucinations but strenghtens the mind\n
- %c[d_red] • %c[ui_gray_2] increases hunger\n
-
-
-
- CMS surgical kit
-
-
- Compact surgical kit for treatment of bullet wounds and other serious injuries. Unlike surgical tools will also restore some lost HP too after restoring the limb.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] surgical item\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[ui_gray_2] high quality\n
- %c[d_red] • %c[ui_gray_2] slow usage (field kit)\n
-
-
-
- Analgin painkillers
-
-
- The most cheap and widely spread painkillers.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] painkillers\n
-
-
-
- Splint
-
-
- Common splint for fixing the damaged bones in positions as an emergency aid measure.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_blue] • %c[0,255,255,255] heals broken bones \n
- %c[d_blue] • %c[ui_gray_2] fast and permanent\n
-
-
-
- Alu splint
-
-
- Common splint for fixing the damaged bones in positions as an emergency aid measure.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] heals broken bones\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[ui_gray_2] fast and permanent\n
-
-
-
- eTG-Change
-
-
- Pen injector which contains a mix of different steroids and other ingredients. Guess nobody wants to know exactly what is in it. The main point is that it works.\n \n
- %c[0,255,255,255]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[ui_gray_2] military item\n
- %c[d_blue] • %c[ui_gray_2] fast usage (syringe)\n
- %c[d_purple] • %c[ui_gray_2] greatly increased carryweight\n
- %c[d_purple] • %c[ui_gray_2] very good stamina bonus\n
- %c[d_purple] • %c[ui_gray_2] very long duration\n
- %c[d_red] • %c[ui_gray_2] greatly increases hunger\n
-
-
-
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/rus/st_bhs_medicine_text.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/rus/st_bhs_medicine_text.xml
deleted file mode 100644
index 0922461e..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/rus/st_bhs_medicine_text.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
-
- •
-
-
-
- Г
-
-
-
- Т
-
-
-
- Р
-
-
-
- Н
-
-
-
- Лечит
-
-
-
- HP конечностей
-
-
-
- (EXP)Восстанавливает
-
-
-
- главного HP
-
-
-
- текущего уровня HP
-
-
-
- до
-
-
-
- на
-
-
-
- Болеутоляющее
-
-
-
- эффект
-
-
-
- Шина
-
-
-
- Выпрямляет конечность
-
-
-
- Хирургический набор
-
-
-
- Восстанавливает конечность
-
-
-
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/rus/st_descr_override.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/rus/st_descr_override.xml
deleted file mode 100644
index 189263cc..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/rus/st_descr_override.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
- СВОЙСТВА:
-
-
-
- ВРЕМЕННОЕ:
-
-
-
- КОНЕЧНОСТИ:
-
-
-
- здоровье:
-
-
-
- радиация:
-
-
-
- кровотечение:
-
-
-
- за
-
-
-
- сек
-
-
-
- сон:
-
-
-
- жажда:
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/rus/ui_st_body_health_system.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/rus/ui_st_body_health_system.xml
deleted file mode 100644
index 7f1a952a..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/rus/ui_st_body_health_system.xml
+++ /dev/null
@@ -1,279 +0,0 @@
-
-
-
-
-
-
-
- Body Health System
-
-
- Body Health System
-
-
-
- Текстовый HUD
-
-
- (Требуется перезагрузка) Текстовая версия HUD'а.
-
-
-
- Новый голос при эффектах
-
-
- Включение этой опции активирует новые звуки голоса при спринте со сломанными ногами. \nВыключение возвращает голос оригинального мода.
-
-
- Минимальное здоровье ног для активации эффектов камеры
-
-
- Здоровье хотя бы одной ноги должно быть ниже этого значения, чтобы активировать эффекты. \nЗначение ползунка по умолчанию 5 означает, что эффекты будут воспроизводиться при значении здоровья 4 или менее. \n(Штраф скорости передвижения отключить нельзя, пока)
-
-
- Минимальное здоровье ног для активации урона при спринте
-
-
- Спринт с поврежденными ногами имеет шанс нанести урон. Ползунок устанавливает минимальное значение здоровья ног, необходимое для активации эффекта.\nНапример, если ползунок 4 и здоровье хотя бы одной ноги 4, то эффект будет активирован. (Значение -1 выключает функцию)
-
-
- Сила эффектов (Ноги)
-
-
- Множитель для силы эффектов (ноги). По умолчанию: 1.0.
-
-
- Минимальное здоровье рук для активации штрафов
-
-
- Суммарное здоровье обеих рук должно быть ниже этого значения, чтобы активировать эффекты. \nЗначение ползунка по умолчанию 10 означает, что эффекты будут воспроизводиться, если обе руки имеют значение здоровья 9 или менее.
-
-
- Сила эффектов (Руки)
-
-
- Множитель для силы эффектов (руки). По умолчанию: 1.0.
-
-
- Минимальный урон головы для активации штрафов
-
-
- Урон, необходимый для активации эффектов.\nНапример, значение ползунка по умолчанию 2 означает, что урон от каждого выстрела в голову должен будет убавлять значение здоровья на 2 или более.
-
-
- Сила эффектов (Голова)
-
-
- Множитель для силы эффектов (голова). По умолчанию: 1.0.
-
-
-
- Новые настройки из BHS Realistic Overhaul. Оставьте по умолчанию для предпологаемого способа игры. \nВЫ ДОЛЖНЫ ПЕРЕЗАГРУЗИТЬ ИГРУ ПОСЛЕ ИЗМЕНЕНИЯ ЛЮБЫХ НАСТРОЕК НИЖЕ. ДЛЯ НЕКОТОРЫХ НУЖЕН ПОЛНЫЙ ПЕРЕЗАПУСК
-
-
-
- Новые функции, добавленные с переписанной системой BHS в версии 0.8 BETA.
-
-
-
- (ЭКСПЕРИМЕНТАЛЬНО) Альтернативный режим BHS (ЭКСПЕРИМЕНТАЛЬНО)
-
-
-
- Урон может быть нанесен только конечностям. Игрок может умереть только при достижении головы 0 HP.\n
- Оригинальные хитпоинты сталкера используются только как показатель общего состояния здоровья.\n
- В этом режиме нельзя отключить проход урона конечностям.\n
- Представьте себе это как попытку внести систему HP сталкера, подобную тарковской.\n
- ЭКСПЕРИМЕНТАЛЬНО. ИСПОЛЬЗУЙТЕ ДЛЯ ТЕСТИРОВАНИЯ ИЛИ ПРОСМОТРА. ВОЗМОЖНО, НЕ СБАЛАНСИРОВАНО И СТРЕСС-ТЕСТИРОВАНО.
-
-
-
- Проход урона конечностям
-
-
-
- Любой урон, наносимый конечности сверх их HP, будет проходить в другие конечности.
- Урон по торсу увеличен в 2 раза по сравнению с другими конечностями от прохода.
-
-
-
- Множитель урона конечностям
-
-
- Урон конечностям умножается на данное число. По умолчанию: 2.5
-
-
-
- Множитель урона конечностям от падения
-
-
- Умножает урон по конечностям от падения на заданное значение. По умолчанию: 2
-
-
-
- Естественная регенерация
-
-
- Поврежденные части тела будут очень медленно заживать самостоятельно. \nНе может восстановить больше чем % уровень вашего основного здоровья. По умолчанию 1HP конечности каждые 5 минут
-
-
- Скорость естественного восстановления
-
-
- Множитель времени. Чем выше значение, тем быстрее происходит регенерация. \nВремя делится на это число.
-
-
-
- Шейдер зернистости под воздействием обезболивающего
-
-
- Когда вы принимаете лекарственное средство с обезболивающим эффектом, экран становится зернистым (так же, как когда вы находитесь в зоне радиации).
-
-
-
- Логика лечения аптечкой
-
-
- Аптечки одновременно лечат все конечности по одной единице здоровья за раз (проще) \nИЛИ лечат наиболее поврежденную конечность по одной единице здоровья (По умолчанию).
-
-
- Аптечки лечат все конечности одновременно
-
-
- Аптечки лечат по одной единице здоровья
-
-
- Логика лечения "возрождения"
-
-
- Возрождение одновременно лечит все конечности по одной единице здоровья (проще) \nИЛИ лечит наиболее поврежденную конечность по одной единице здоровья (По умолчанию).
-
-
- Возрождение лечит все конечности одновременно
-
-
- Возрождение лечит по одной единице здоровья
-
-
-
- Механика хирургии
-
-
- Уничтоженные конечности (достигшие 0 HP) требуют хирургического вмешательства с использованием хирургических инструментов или хирургического набора. Не мешает работе обезболивающих
-
-
- Хирургические инструменты восстанавливают все конечности сразу
-
-
- Хирургические инструменты ввосстанавливают все конечности сразу.
-
-
- Хирургия излечивает сама по себе (ВКЛЮЧЕНО, ЕСЛИ ВЫКЛЮЧЕНЫ ПЕРЕЛОМЫ, НО ХИРУРГИЯ ВКЛЮЧЕНА)
-
-
- Хирургические инструменты излечивают HP вместо их восстановления, что фактически удаляет механику переломов.
-
-
- CMS, как в Таркове
-
-
- Позволяет CMS восстанавливать 40% HP конечностей вместо простого их восстановления для шинирования. \nРаботает только с CMS набором.
-
-
-
- Механика сломанных конечностей
-
-
- Лечение сломанных конечностей хирургией требует наложения шин. \nНе мешает действию обезболивающих.
-
-
- Бинт - это шина
-
-
- При включенной опции повязка лечит сломанную конечность.
-
-
- Жгут - это шина
-
-
- При включенной опции жгут лечит сломанную конечность.
-
-
- Аптечки также лечат сломанные конечности
-
-
- Аптечки игнорируют механику сломанных конечностей и все равно лечат конечности. \nМожно считать, что в аптечке содержится шина (вау, Тарков).
-
-
-
- Пси эффекты от медикаментов(Voiced actor)
-
-
- Медикаменты могут наносить или исцелять пси-урон. Пока только пси эффект от SJ инжекторов.\nSJ инжекторы уменьшают максимальный уровень пси-здоровья вызывая галлюцинации, но при этом повышают защиту от пси урона и восстановление пси.\nРаботает по умолчанию на GAMMA. Иначе требуется Voiced actor мод.\nЕсли скрипт не найден, то ничего не произойдет. Выключать только если не нравится пси урон от медикаментов.
-
-
-
- Лечение во сне
-
-
- Сон восстанавливает повреждения конечностей. Скорость и механика лечения могут быть настроены ниже. \nНельзя исцелить более чем уровень в % основного здоровья.
-
-
- Новая логика лечения во сне
-
-
-
- В оригинальной системе BHS каждая конечность заживает на одно HP за каждый час сна. \nНовая система заживляет самую поврежденную конечность по одной HP за каждый час (можно настроить).
-
-
- Скорость регенерации во время сна
-
-
- Множитель скорости заживления во время сна.
-
-
-
- Артефакты могут регенерировать конечности
-
-
- (СОВМЕСТИМО ПО УМОЛЧАНИЮ ТОЛЬКО С ГАММОЙ. СМОТРИТЕ КАК ДОБАВИТЬ ДРУГИЕ АРТЕФАКТЫ НА СТРАНИЦЕ МОДА)\nЕсли артефакт обладает свойствами заживления, он также медленно регенерирует конечности до уровня текущего HP.
-
-
- Множитель скорости заживления артефактов
-
-
- Мнодитель скорости (Чем выше, тем быстрее)
-
-
-
- Костры могут регенерировать конечности
-
-
- Костры могут регенерировать конечности
-
-
-
- Интервал между регенерациям конечностей (в секундах)
-
-
- Время восстановления конечности за один такт (в секундах). \nНажмите ENTER после ввода желаемого значения.
-
-
-
-
- Коэффициент шанса выпадения
-
-
- Множитель шанса выпадения новых медикаментов в трупах.\nИсходное значение - 1.0
-
-
- Удалить все предметы, связанные с аддоном(для безопасного удаления)
-
-
- Эта опция позволяет безопасно удалить аддон.\n1) Включите опцию\n2) Загрузите игру, если вы этого еще не сделали\n3) Убедитесь, что все предметы были удалены\n4) Сохранитесь, выйдите и отключите аддон
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/rus/ui_st_weapon_sway.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/rus/ui_st_weapon_sway.xml
deleted file mode 100644
index a0d0a291..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/rus/ui_st_weapon_sway.xml
+++ /dev/null
@@ -1,223 +0,0 @@
-
-
-
-
-
-
-
- Раскачивание оружия
-
-
-
-
- Включить раскачивание оружия
-
-
- Включение/выключение функции раскачивания оружия.
-
-
-
- Body Health System патч (нужна перезагрузка)
-
-
- Включите только если у вас установлен аддон Body Health System и хотите иметь штрафы раскачки из BHS. Будет использоваться раскачка из Weapon Sway аддона когда здоровье рук выше штрафов BHS. \n
- \n Вы можете выключить опцию даже если BHS установлен, это перезапишет штрафы BHS и будет использоваться раскачка только из аддона Weapon Sway всё время.
-
-
-
- Клавиша задержки дыхания
-
-
- Меняет клавишу задержки дыхания.
-
-
-
- Тип анимации оружия
-
-
- Тип анимации раскачивания. В настоящее время есть только первые два, все "custom_" пусты, оставлены чтобы люди могут добавлять свои собственные. \n
- \n (Требуется перезагрузка)
-
-
-
- Тип анимации оружия с прицелом
-
-
- Тип анимации раскачивания оружия с прицелом. Список такой же, как и выше. \n
- \n (Требуется перезагрузка)
-
-
-
- Максимальная сила эффекта
-
-
- Максимальная сила, которой может достичь эффект камеры, в сочетании со всеми другими факторами. \n
- \n По умолчанию: 3
-
-
-
- Коэффициент веса
-
-
- Множитель для веса оружия (вес_оружия * Коэффициент_веса). \n
- \n По умолчанию: 1.0
-
-
-
- Максимальное значение силы веса
-
-
- Максимальная сила, которой может достичь множитель веса, чем тяжелее оружие, тем больше множитель для эффекта камеры. \n
- \n По умолчанию: 7
-
-
-
- Сила для стоячего положения тела
-
-
- Множитель эффекта для положений тела стоя/при ходьбе. \n
- \n По умолчанию: 1.2 \n
- \n (Stand_Power * вес_оружия * Коэффициент_веса * 0.1)
-
-
-
- Сила для положения тела в полуприседе
-
-
- Множитель эффекта для положения тела в полуприседе. \n
- \n По умолчанию: 0.8 \n
- \n (Crouch_Power * вес_оружия * Коэффициент_веса * 0.1)
-
-
-
- Сила для положения тела в приседе
-
-
- Множитель эффекта для положения тела в приседе. \n
- \n По умолчанию: 0.4 \n
- \n (Low_Crouch_Power * вес_оружия * Коэффициент_веса * 0.1)
-
-
-
- Сила для стоячего положения тела с прицелом
-
-
- Множитель эффекта для положений тела стоя/при ходьбе с прицелом. \n
- \n По умолчанию: 1.2 \n
- \n (Scope_Stand_Power * вес_оружия * Коэффициент_веса * 0.02)
-
-
-
- Сила для положения тела в полуприседе с прицелом
-
-
- Множитель эффекта для положения тела в полуприседе с прицелом. \n
- \n По умолчанию: 0.8 \n
- \n (Scope_Crouch_Power * вес_оружия * Коэффициент_веса * 0.02)
-
-
-
- Сила для положения тела в приседе с прицелом
-
-
- Множитель эффекта для положения тела в приседе с прицелом. \n
- \n По умолчанию: 0.4 \n
- \n (Scope_Low_Crouch_Power * вес_оружия * Коэффициент_веса * 0.02)
-
-
-
- Mounted weapon feature
-
-
- Функция, которая позволяет вам поставить оружие на препятствие перед вами, чтобы уменьшить раскачивание оружия.
-
-
-
- Mounted weapon уменьшение силы эффекта
-
-
- Множитель уменьшения раскачивания оружия если оно на препятствии. \n
- \n По умолчанию: 0.1
-
-
-
- Максимальная высота of mounted weapon
-
-
- Уменьшите еще больше, если вы хотите, чтобы оружие по-прежнему считалось "установленным", когда вы поднимаете его выше. \n
- \n По умолчанию: -0.35
-
-
-
- Опция задержки дыхания
-
-
- Позволяет задерживать дыхание, удерживая клавишу "Использовать" во время прицеливания, и уменьшать раскачивание оружия в течение ограниченного времени.
-
-
-
- Сила эффекта задержки дыхания
-
-
- (постоянный) Множитель для уменьшения раскачивания оружия при задержке дыхания. \n
- \n По умолчанию: 0.1
-
-
-
- Сила эффекта при выдохе
-
-
- (1 + множитель * задержано_секунд) Множитель штрафа, который вы получаете после того, как отпустите клавишу "Использовать" или достигнете максимального таймера. \n
- \n По умолчанию: 0.04
-
-
-
- Максимальное время для задержки дыхания
-
-
- Максимальное количество времени, на которое вы можете задержать дыхание (в секундах). \n
- \n По умолчанию: 11
-
-
-
- Сила восстановления дыхания
-
-
- Множитель для восстановления дыхания, значение "1" означает, что дыхание будет восстанавливаться с той же скоростью, что и при его уменьшении. \n
- \n По умолчанию: 0.5
-
-
-
- Включить звук задержки дыхания
-
-
- Включает звуки вдоха/выдоха.
-
-
-
- Коэффициент "Удобности" оружия
-
-
- Диапозон множителя характеристики оружия "Удобность": \n
- \n Увеличение этого значения приведет к: низкая удобность = большим штрафам; высокая удобность = большим бонусам. \n
- \n Уменьшение: низкая удобность = меньше штрафов, высокая удобность = меньше бонусов, "0" = удобность не влияет на раскачку. \n
- \n По умолчанию: 1
-
-
-
-
- Дебаг
-
-
- Дебаг позволяет вам видеть: \n
- \n 1. Направление и измененное направление оси y (в консоли) \n
- \n 2. Разница в расстоянии между курсором и рэйкастом отредактированной оси "y" (в динамических новостях) \n
- \n 3. Сила эффекта анимации камеры (сообщения актера внизу)
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/rus/z_st_items_medical.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/rus/z_st_items_medical.xml
deleted file mode 100644
index cda2582a..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/rus/z_st_items_medical.xml
+++ /dev/null
@@ -1,205 +0,0 @@
-
-
-
-
-
-
- Ибупрофен
-
-
- Ибупрофен — это лекарство из класса нестероидных противовоспалительных препаратов (НПВП), которое используется для лечения боли, лихорадки и воспаления. Используется как общеукрепляющее средство.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_blue] • %c[ui_gray_2] обезболивающее \n
-
-
-
- Бинт
-
-
- Асептический бинт для остановки кровотечения и предотвращения попадания в рану инфекции. При обычном кровотечении позволяет перевязать рану, при артериальном - перетянуть артерию.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_blue] • %c[ui_gray_2] останавливает кровотечение\n
- %c[d_blue] • %c[ui_gray_2] изделие первой помощи\n
- %c[d_blue] • %c[ui_gray_2] быстрое использование (лейкопластырь)\n
-
-
-
- Украинский «Викасол» - синтетический аналог витамина К. Основное действие заключается в повышении свёртываемости крови. Пользуется спросом среди сталкеров, поскольку позволяет организму быстрее рубцевать рваные раны. Обладает продолжительным действием. Принимать по 2 таблетки.\n \n
-
-
-
- Анабиотик
-
-
- Экспериментальный препарат, разработанный для научно-исследовательских групп, действующих в Зоне. Входящий в формулу препарата тетрадотоксин, известный как «порошок зомби», вызывает полный паралич центральной нервной системы; предположительно, это может обеспечить выживание вне укрытия во время выброса. Спустя шесть лет полевых испытаний большинство рассудительных сталкеров теперь держит при себе парочку таких на случай внезапных выбросов.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_red] • %c[d_orange] вызывает временные провалы в памяти\n
-
-
-
- Антидот
-
-
- Препарат «Антитоксикант ИП2» представляет собой комплекс антидотов: метоклопрамида, пиридоксина, тиамина, рибоксина и других. Вводит в кровь вещества, способные разлагать белковые яды, а также абсорбенты синтетических ядов. Особой популярностью не пользуется, поскольку большинство сталкеров больше полагаются на противогаз и комбинезон. Тем не менее есть ещё те сталкеры, которые имеют несколько припрятанных упаковок этого препарата на чрезвычайный случай. Обладает продолжительным действием. Принимать по 1 капсуле.\n \n
-
-
-
- Медицинский жгут
-
-
- Кровоостанавливающий резиновый жгут. При обычном кровотечении позволяет перевязать рану, при артериальном - перетянуть артерию.\n \n
-
-
-
- Йадулин
-
-
- Полунаркотическое средство на основе морфина, позволяющее быстро заглушить боль и усилить выработку адреналина. Пользуется популярностью у некоторых сталкеров, так как действительно помогает выдержать даже самый напряженный бой. Часто используется в качестве наркотика в кругах бандитов. По неточным данным, идут постоянные поставки данного средства группировке «Монолит».\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_red] • %c[d_orange] вызывает сильное головокружение\n
-
-
-
- Аптечка первой помощи
-
-
- Медицинский комплект общего назначения. Удобен для оказания первой помощи при травмах, небольших ранах, химических и термических ожогах, а также различного рода отравлениях.\n \n
-
-
-
- Армейская аптечка
-
-
- Специализированный медицинский набор для оказания первой помощи при ранениях на поле боя. В набор входят средства для ускорения свёртывания крови на основе «Менадиона», обезболивающие, антибиотики и стимуляторы иммунитета; кроме того, здесь имеется простейший хирургический набор для извлечения осколков и пуль. Стандартная армейская аптечка, стоящая на обеспечении спецназа и ряда войск, направленных на исследование Зоны Отчуждения. Пользуется большой популярностью среди бойцов «Долга».\n \n
-
-
-
- Научная аптечка
-
-
- Медицинский набор, разработанный специально для научных сотрудников, которые работают в условиях Зоны. Содержит средства как для заживления механических травм, так и для предотвращения развития лучевой болезни. В отличие от других наборов, в этом можно найти «Викасол», «Батилол» и С-нафтизин.\n \n
-
-
-
- Самопальный стимпак
-
-
- Самопальные стимпаки (стимуляторы) очень популярны среди сталкеров-новичков, поскольку их легко достать, да и стоят они довольно недорого. Производятся из широкодоступных в Зоне ингредиентов без надлежащей очистки и без использования специального оборудования. Это и является основной причиной многих побочных эффектов, которые включают в себя головную боль, парестезию и значительный голод после использования. Вводится в бедро.\n \n
-
-
-
- Военный стимпак
-
-
- Военные стимпаки (стимуляторы) входят в состав штатного военного снаряжения для проведения операций в условиях Зоны Отчуждения. Достаточно часто встречаются на рынке товаров и могут быть куплены за умеренную цену. Популярны среди опытных сталкеров, так как являются значительно более мощными и быстродействующими, чем их доступные самопальные аналоги, что делает их идеальными для использования в опасных передрягах. Изготавливаются из сырья высокой плотности, что может пагубно сказываться на организм. Из побочных эффектов известен шок, головокружение и сильное обострение чувства голода.\n \n
-
-
-
- Научный стимпак
-
-
- Выпускается тем же Химическим департаментом в Киеве, который разработал известный костюм «СЕВА». Данный стимулятор является наиболее мощным стабилизатором здоровья из всех доступных на территории Зоны. Самые лучшие ингредиенты отличного качества и усовершенствованная формула позволяют практически мгновенно восстановить здоровье и вывести излишки радиации. Побочные эффекты сведены к минимуму. Из-за высокой стоимости применяются только весьма везучими и успешными сталкерами.\n \n
-
-
-
- Кокаин
-
-
- Небольшой алюминиевый кейс, содержащий дозы кокаина и инструменты для его инъекций. Кокаин является мощным стимулятором нервной системы. Его действие длится от 15-30 минут до часа, в зависимости от места введения инъекции. Кокаин повышает бдительность, чувство благополучия и эйфории, повышает энергию и длительную активность, ощущение компетентности и сексуальности. Физическая сила может быть увеличена на спортивных состязаниях, где требуются длительное внимание и выносливость. Беспокойство, паранойя и неугомонность также являются частыми симптомами его применения. При чрезмерной дозировке наблюдаются сотрясения, конвульсии и увеличенная температура тела. Бандиты часто нюхают этот препарат непосредственно перед штурмом баз и лагерей.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_cyan] • %c[ui_gray_2] очень мощный стимулятор\n
- %c[d_green] • %c[ui_gray_2] устраняет очень сильное головокружение\n
-
-
-
- Эпинефрин
-
-
- Эпинефрин (также известный, как адреналин) представляет собой гормон совместно с нейромедиатором. Эпинефрин выполняет множество функций в организме: мгновенно регулирует частоту сердечных сокращений, расширяет кровеносные сосуды упрощая прохождение через них воздуха, а также вызывает метаболические сдвиги. Адреналин выделяется при борьбе или бегстве из симпатической нервной системы. Эффекты приводят к увеличению глюкозы в крови и жирных кислот, обеспечивая тем самым организм мгновенным субстратами для производства энергии внутри клеток по всему организму.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_cyan] • %c[ui_gray_2] очень мощный стимулятор\n
- %c[d_green] • %c[ui_gray_2] устраняет очень сильное головокружение\n
-
-
-
- Ампула морфина
-
-
- Металлическая ампула для мгновенного подавления боли, разработанная как полевой технологический предмет для военнослужащих. Эта ампула содержит мощную дозу морфина. В клинической медицине морфин рассматривается как золотой стандарт опиоидных анальгетиков, используемый для облегчения тяжёлой и мучительной боли. Как и в других опиоидах, таких как оксикодон, гидроморфон и диацетилморфин (героин), морфин действует непосредственно на центральную нервную систему для облегчения и снижения чувства боли. Вводить ампулу в руку или бедро.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_purple] • %c[d_purple] сильное повышение сопротивления к урону (на 10%)\n
- %c[d_red] • %c[ui_gray_2] вызывает очень легкое головокружение \n
-
-
-
- Ампула салициловой кислоты
-
-
- Металлическая ампула для мгновенного подавления боли, разработанная как полевой технологический предмет для военнослужащих. Эта ампула содержит сильную дозу салициловой кислоты. Салициловая кислоты известна своей способностью облегчать боли или снижать симптомы лихорадки. Именно эти медицинские показатели делают салициловую кислоту весьма важным медикаментом в качестве противовоспалительного препарата. Некоторые учёные полагают, что салицилат является незаменимым микроэлементом в рационе человека, который может заменить витамины, а именно витамин «С». Вводить ампулу в руку или бедро.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_purple] • %c[pda_white] среднее повышение сопротивления к урону (на 7.5%)\n
-
-
-
- Нестероидный противовоспалительный препарат (НПВП) из группы производных фенилуксусной кислоты. Механизм действия препарата состоит в притуплении нервной деятельности. Из-за огромного количества побочных действий, как, например, головная боль, головокружение, сонливость, в отдельных случаях - расстройства памяти, дезориентация, раздражимость - не используется в лекарственных целях в большинстве стран мира. Однако в Зоне приобрёл популярность из-за побочного действия, выраженного в нарушении чувствительности ЦНС, что позволяет выдержать сильные травмы, такие как пулевые и осколочные ранения.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_purple] • %c[d_orange] небольшое повышение сопротивления к урону (на 5%)\n
- %c[d_red] • %c[d_orange] вызывает очень легкое головокружение\n
-
-
-
- Сульфаниламидный препарат длительного действия. Эффективен в отношении грамположительных и грамотрицательных бактерий: действует на пневмококки, стрептококки, стафилококки, кишечную палочку, палочку клебсиеллы (палочку Фридлендера), возбудителей дизентерии; менее активен в отношении протея; активен в отношении вируса трахомы (инфекционного заболевания глаз, которое может привести к слепоте); не действует на штаммы бактерий, устойчивых к другим сульфаниламидным препаратам. Возможны головная боль, диспепсические расстройства (расстройства пищеварения), кожные высыпания, лекарственная лихорадка (резкое повышение температуры тела при приеме препарата), лейкопения (снижение уровня лейкоцитов в крови).\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_red] • %c[ui_gray_2] вызывает очень легкое головокружение \n
-
-
-
- Хлортетрациклин
-
-
- Aнтибиотик группы тетрациклинов. Кристаллический порошок золотисто-желтого цвета, горького вкуса, растворим в воде. Это один из первых открытых антибиотиков после пенициллина. Хлортетрациклина гидрохлорид обладает бактериостатическим действием на грамположительные и грамотрицательные микробы, риккетсии и некоторые крупные вирусы.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_red] • %c[ui_gray_2] вызывает очень легкое головокружение \n
-
-
-
- Наркотический анальгетик «Возрождение»
-
-
- Внимание! Не используйте данный препарат совместно с другими стимулирующими препаратами, так как это может привести к быстрой смерти. Первый эффект этого мощнейшего вещества - потеря сознания. Однако после прихода в себя (если это вообще произойдёт) приходит ощущения гигантского прироста сил. Применение: ввести иглу шприца в бедро, предварительно выпустив кислород мягким нажатием на поршень.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_red] • %c[d_orange] вызывает сильное головокружение\n
-
-
-
- Фентанил
-
-
- Фентанил — мощный опиоид, используемый в качестве обезболивающего. Он также используется в качестве рекреационного наркотика, иногда в смеси с героином, кокаином или метамфетамином, и его потенциально смертельные эффекты передозировки могут быть нейтрализованы налоксоном. Фентанил действует в первую очередь за счет активации мю-опиоидных рецепторов.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_red] • %c[ui_gray_2] вызывает легкое головокружение\n
-
-
-
- Снотворное
-
-
- Небольшая упаковка снотворного, которое поможет заснуть даже при сильных головных болях и плохом самочувствии. Кроме того, помогает снизить интенсивность нервных импульсов. Не стоит проглатывать сразу всю пачку, выпейте таблетку и сделайте несколько глотков воды для достижения максимального эффекта. Принимать по 2 таблетки.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_green] • %c[ui_gray_2] повышение морального духа и защиты разума от ужасов Зоны\n
- %c[d_green] • %c[ui_gray_2] немедленно вызывает сонливость\n
-
-
-
- Пси-блокада
-
-
- Наркотический препарат, блокирующий лавинообразные нервные импульсы. Интересен побочный эффект: после применения препарата наблюдается кратковременное исчезновение каких-либо эмоций. В Зоне используется для противодействия аномальным полям повышенной пси-активности; за её пределами применения не нашёл. Обладает продолжительным действием. Принимать по 2 таблетки.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_green] • %c[ui_gray_2]повышение морального духа и защиты разума от ужасов Зоны\n
- %c[d_red] • %c[ui_gray_2] вызывает сильное головокружение\n
-
-
-
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/rus/zz_st_items_medical.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/rus/zz_st_items_medical.xml
deleted file mode 100644
index 34387f37..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/rus/zz_st_items_medical.xml
+++ /dev/null
@@ -1,154 +0,0 @@
-
-
-
-
-
-
- Хирургические инструменты
-
-
- Небольшая вариация хирургических инструментов распространенных в зоне. Они используются для создания набора CMS. Можно использовать напрямую, но для этого нужен бинт так как инструменты не стерильны. Таким образом, их можно использовать только один раз.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_blue] • %c[ui_gray_2] маленький набор для постоянного восстановления частей тела\n
- %c[d_blue] • %c[ui_gray_2] предмет для создания\n
- %c[d_blue] • %c[ui_gray_2] хирургический предмет\n
- %c[d_blue] • %c[ui_gray_2] импортные\n
- %c[d_blue] • %c[ui_gray_2] высокого качества\n
- %c[d_red] • %c[ui_gray_2] наносит урон при восстановлении частей тела\n
-
-
-
- Армейский бинт
-
-
- Асептический армейский бинт для остановки кровотечения и предотвращения попадания в рану инфекции. При обычном кровотечении позволяет перевязать рану, при артериальном - перетянуть артерию.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_blue] • %c[ui_gray_2] останавливает кровотечение\n
- %c[d_blue] • %c[ui_gray_2] изделие первой помощи\n
- %c[d_blue] • %c[ui_gray_2] быстрое использование (лейкопластырь)\n
-
-
-
- Пропитал
-
-
- Военный препарат. Стимулирует процессы регенерации, за счет усиления биосинтеза пуриновых и пиримидиновых оснований, РНК, функциональных и ферментативных клеточных элементов. Повышает метаболизм, здоровье и жизнеспособность. Имеет длительные побочные эффекты. Разрешено использовать только военным врачам и фельдшерам.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] импортный\n
- %c[d_blue] • %c[ui_gray_2] высокого качества\n
- %c[d_blue] • %c[ui_gray_2] быстрое использование (шприц)\n
-
-
-
- Боевой стимулятор SJ6
-
-
- Боевой стимулятор. Используется для расширения способностей организма перед боем. Разрешен к применению бойцами спецподразделений. Разработан Svarog Test Labs, с маркировкой SJ6. Имеет побочные эффекты. Не рекомендуется использовать в зонах пси-воздействия.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] импортный\n
- %c[d_blue] • %c[ui_gray_2] военное изделие\n
- %c[d_blue] • %c[ui_gray_2] быстрое использование (шприц)\n
- %c[d_blue] • %c[ui_gray_2] бодрит\n
- %c[d_purple] • %c[ui_gray_2] очень хороший бонус к сопротивлению урону (20%)\n
- %c[d_purple] • %c[ui_gray_2] очень хороший бонус к переносимому весу\n
- %c[d_purple] • %c[ui_gray_2] очень хороший бонус к выносливости\n
- %c[d_purple] • %c[ui_gray_2] длительное действие\n
- %c[d_red] • %c[ui_gray_2] вызывает галлюцинации но усиливает устойчивость к пси-воздействию\n
- %c[d_red] • %c[ui_gray_2] сильно повышает голод\n
-
-
-
- Боевой стимулятор SJ1
-
-
- Боевой стимулятор. Используется для увеличения силы и выносливости перед боем. Уменьшает ощущение боли. Разрешен к применению бойцами спецподразделений. Разработан Svarog Test Labs, с маркировкой SJ1. Имеет побочные эффекты. Не рекомендуется использовать в зонах пси-воздействия.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] мпортный\n
- %c[d_blue] • %c[ui_gray_2] военное изделие\n
- %c[d_blue] • %c[ui_gray_2] быстрое использование (шприц)\n
- %c[d_blue] • %c[ui_gray_2] бодрит\n
- %c[d_purple] • %c[ui_gray_2] хороший бонус к сопротивлению урону (15%)\n
- %c[d_purple] • %c[ui_gray_2] хороший бонус к переносимому весу\n
- %c[d_purple] • %c[ui_gray_2] хороший бонус к выносливости\n
- %c[d_purple] • %c[ui_gray_2] длительное действие\n
- %c[d_red] • %c[ui_gray_2] вызывает галлюцинации но усиливает устойчивость к пси-воздействию\n
- %c[d_red] • %c[ui_gray_2] повышает голод\n
-
-
-
- Хирургический набор CMS
-
-
- Компактный хирургический набор для оказания первой помощи при пулевых ранениях и прочих серьезных травмах и ранах.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_blue] • %c[ui_gray_2] хирургические инструменты\n
- %c[d_blue] • %c[ui_gray_2] импортный\n
- %c[d_blue] • %c[ui_gray_2] высокого качества\n
- %c[d_blue] • %c[ui_gray_2] набор для постоянного восстановления частей тела\n
- %c[d_red] • %c[ui_gray_2] медленное использование (полевой комплект)\n
-
-
-
- Анальгин
-
-
- Простейшее и самое дешёвое из известных обезболивающих.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] обезболивающее \n
-
-
-
- Шина
-
-
- Медицинская шина, для фиксации поражённых костей при оказании первой помощи.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_blue] • %c[ui_gray_2] первая помощь при переломе\n
- %c[d_blue] • %c[ui_gray_2] быстро и надежно \n
-
-
-
- Алюминиевая шина
-
-
- Медицинская шина, для фиксации поражённых костей при оказании первой помощи.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_blue] • %c[ui_gray_2] первая помощь при переломе\n
- %c[d_blue] • %c[ui_gray_2] импортный\n
- %c[d_blue] • %c[ui_gray_2] быстро и надежно\n
-
-
-
- Загустин
-
-
- Военный препарат. Останавливает активаторы профибринолизина и тормозит его превращение в фибринолизин. Временно останавливает кровотечение и повышает устойчивость к новым. Имеет побочные эффекты. Приводит к сильному обезвоживанию.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] быстро останавливает кровотечение\n
- %c[d_blue] • %c[ui_gray_2] быстрое использование (шприц)\n
-
-
-
- eTG-Change
-
-
- Мощный стимулятор процессов регенерации. Применяется для быстрого восстановления бойца после ранения, либо во время транспортировки тяжело раненных. Разрешено использовать только военным врачам и фельдшерам. Имеет сильные побочные эффекты.\n \n
- %c[0,255,255,255]ОСОБЕННОСТИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] импортный\n
- %c[d_blue] • %c[ui_gray_2] военное изделие\n
- %c[d_blue] • %c[ui_gray_2] быстрое использование (шприц)\n
- %c[d_purple] • %c[ui_gray_2] очень хороший бонус к переносимому весу\n
- %c[d_purple] • %c[ui_gray_2] очень хороший бонус к выносливости\n
- %c[d_purple] • %c[ui_gray_2] очень длительное действие\n
- %c[d_red] • %c[ui_gray_2] сильно повышает голод\n
-
-
-
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/spa/st_bhs_medicine_text.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/spa/st_bhs_medicine_text.xml
deleted file mode 100644
index 663e80ba..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/spa/st_bhs_medicine_text.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
-
- •
-
-
-
- Cabeza
-
-
-
- Torso
-
-
-
- Brazo
-
-
-
- Pierna
-
-
-
- Cura
-
-
-
- limb HP
-
-
-
- (EXP)Cura
-
-
-
- Principal HP
-
-
-
- Nivel Actual De HP
-
-
-
- Hasta
-
-
-
- Para
-
-
-
- Adictivo
-
-
-
- Nivel
-
-
-
- Juego De Fйrulas
-
-
-
- Fйrulas Una Extremidad
-
-
-
- Kit Quirъrgico
-
-
-
- Restaura Un Miembro
-
-
-
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/spa/st_descr_override.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/spa/st_descr_override.xml
deleted file mode 100644
index b374c489..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/spa/st_descr_override.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
-
-
-
- PROPIEDADES:
-
-
-
-TEMPORIZADO:
-
-
-
-EXTREMIDADES:
-
-
-
-Salud:
-
-
-
-Radiaciуn:
-
-
-
-Sangrado:
-
-
-
-Sobre
-
-
-
-Segundo
-
-
-
-Dormir:
-
-
-
-Sed:
-
-
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/spa/ui_st_body_health_system.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/spa/ui_st_body_health_system.xml
deleted file mode 100644
index 930a7d02..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/spa/ui_st_body_health_system.xml
+++ /dev/null
@@ -1,274 +0,0 @@
-
-
-
-
-
-
-
- Sistema De Salud Corporal
-
-
- Sistema De Salud Corporal
-
-
-
- Reemplazador De HUD De Texto
-
-
- (Se Requiere Recarga) Versiуn De Texto Del HUD.
-
-
-
- Nueva voz para los penaltis
-
-
- Habilitar esto activa una nueva voz durante el sprint con piernas daсadas. \nAl desactivarlo se devuelve la voz del mod original.
-
-
- HP mнnimo de pierna para la penalizaciуn por balanceo de cбmaraUSE_SURGERY
-
-
- El HP de al menos una pierna debe estar por debajo de este valor para reproducir efectos. El valor predeterminado del control deslizante de 5 significa que los efectos se ejecutarбn con 4 o menos HP. (La penalizaciуn de velocidad de movimiento seguirб ahн, por ahora)
-
-
- HP mнnimo de la pierna para el daсo durante el sprint
-
-
- La pisada con la pierna daсada tiene una probabilidad de infligir daсo. Este deslizador establece la cantidad mнnima de HP de la pierna necesaria para activar este efecto, es decir, si el deslizador es 4 y el HP de la pierna es 4, el efecto se activarб. (Un valor de -1 desactiva la funciуn)
-
-
- Potencia de efectos de cбmara de las piernas
-
-
- Multiplicador de la penalizaciуn de las piernas por efecto de cбmara. Por defecto: 1,0.
-
-
- HP mнnimo de brazos para las penalizaciones
-
-
- Summary Los HP de los brazos deben estar por debajo de este valor para reproducir efectos. El valor predeterminado del control deslizante de 10 significa que los efectos se reproducirбn si ambos brazos tienen 9 o menos HP.
-
-
- Potencia de efectos de los brazos
-
-
- Multiplicador de la potencia de efectos de penalizaciуn de armas. Por defecto: 1,0.
-
-
- Daсo mнnimo en la cabeza para las penalizaciones
-
-
- Daсo necesario para reproducir efectos. Por ejemplo, el valor predeterminado del control deslizante de 2 significa que cada daсo por disparo en la cabeza debe ser de 2 o mбs HP.
-
-
- Potencia de efectos en la cabeza
-
-
- Multiplicador de la potencia del efecto de penalizaciуn de la cabeza. Por defecto: 1,0.
-
-
-
- Nuevas opciones de la revisiуn realista de BHS. Dejar por defecto para la forma preferida de jugar el juego.\n TIENES QUE VOLVER A CARGAR EL JUEGO DESPUЙS DE CAMBIAR CUALQUIER AJUSTE DEBAJO
-
-
-
- 2 nuevas opciones aсadidas con BHS Rewrite en v0.8 BETA.
-
-
-
- (EXPERIMENTAL)BHS Modo alternativo(EXPERIMENTAL)
-
-
-
- Sуlo se puede causar daсo a las extremidades. El jugador sуlo puede morir si la cabeza llega a 0 PV.\n
- Los PV del acechador vainilla sуlo se usan como referencia para saber cуmo estбs de salud en general..\n
- En este modo no se puede desactivar el sangrado de daсo.\n
- Piensa en esto como un intento de traer una versiуn stalker del sistema HP de Tarkov.\n
- EXPERIMENTAL. USO PARA PRUEBAS O VISTA PREVIA. POSIBLEMENTE DESEQUILIBRADO Y NO PROBADO.
-
-
-
- Sangrado por daсo en extremidades
-
-
- Cualquier daсo causado a una extremidad por encima de sus PS se extenderб a otras extremidades.\n
- Daсo en el torso escalado(2x) en comparaciуn con otras extremidades por sangrado\n
-
-
-
-
- Multiplicador de daсo en extremidades
-
-
- Multiplica el daсo recibido por las extremidades por el valor establecido. Por defecto: 2,5
-
-
-
- Multiplicador del daсo por caнda de extremidades
-
-
- Multiplica la extremidad de la caнda por el valor establecido. Predeterminado: 2
-
-
-
- Curaciуn natural
-
-
- Las partes del cuerpo daсadas se curarбn MUY lentamente por sн solas. No se pueden curar por encima del % de tu HP principal. Por defecto es 1 HP de miembro cada 5 minutos
-
-
- Velocidad de curaciуn natural y por artefacto
-
-
- Acelera o ralentiza la curaciуn natural y la curaciуn de artefactos. Mбs alto es mбs rбpido, el tiempo de curaciуn se divide por este nъmero.
-
-
-
- Sombreador de grano de Painkiller
-
-
- Cuando tomas un objeto mйdico con efecto analgйsico, la pantalla se vuelve granulada (igual que cuando estбs en una zona de radiaciуn)
-
-
-
- Lуgica de curaciуn del Medkit
-
-
- Los botiquines curan todos los miembros a la vez por un HP a la vez (mбs fбcil) O los botiquines curan primero el miembro mбs daсado por un HP a la vez (Predeterminado).
-
-
- Los kits mйdicos curan todas las extremidades a la vez
-
-
- Los kits mйdicos curan un HP cada vez, primero el miembro mбs daсado
-
-
- Lуgica de curaciуn de renacimiento
-
-
- Renacimiento cura todas las extremidades a la vez por un HP a la vez (mбs fбcil) O renacimiento cura la extremidad mбs daсada primero un HP a la vez (Predeterminado).
-
-
- Rebirth cura todas las extremidades a la vez
-
-
- Rebirth cura un HP cada vez, la extremidad mбs daсada primero
-
-
-
- Mecбnica de cirugнa
-
-
- Las extremidades destruidas(Alcanzado 0 HP) requieren cirugнa mediante herramientas quirъrgicas o kit quirъrgico primero para ser curadas. No impide que los analgйsicos hagan efecto
-
-
- Las herramientas de cirugнa sуlo reparan una extremidad
-
-
- Las herramientas de cirugнa reparan la cantidad de PS instantбneamente y sуlo en una extremidad. Tienes que activar esto para que CMS pueda curar mбs de un HP en una extremidad
-
-
- La cirugнa se cura por sн sola (HABILITADO SI LA ESPINILLACIУN ESTБ DESHABILITADA PERO LA CIRUGНA HABILITADA)
-
-
- Las herramientas de cirugнa curan en lugar de reparar HP, eliminando efectivamente la mecбnica de entablillado.
-
-
- CMS como tarkov
-
-
- Permite al kit CMS restaurar extremidades al 40% de hp en lugar de solo repararlas para entablillarlas. Sуlo funciona para el kit CMS.
-
-
-
- Mecбnica de extremidades rotas
-
-
- Los miembros reparados con cirugнa requieren una fйrula primero para curarse. No impide el efecto de los analgйsicos.
-
-
- El vendaje es una fйrula
-
-
- Con esta opciуn activada, el vendaje fija una extremidad rota.
-
-
- El torniquete es una fйrula
-
-
- Con esta opciуn activada, el torniquete fija un miembro roto.
-
-
- Los kits mйdicos tambiйn entablillan los miembros rotos
-
-
- Los Medkits ignoran la mecбnica de miembro roto y curan los miembros de todos modos. Piensa en esto como si una fйrula estuviera contenida en un medkit (vaya, tarkov).
-
-
-
- Efectos psicolуgicos de la medicina (actor de voz)
-
-
- La medicina puede causar o curar daсos psнquicos. Actualmente solo se implementan los efectos psнquicos de los inyectores SJ.\nLos inyectores SJ disminuyen la salud psнquica mбxima causando alucinaciones pero tambiйn aumentan la resistencia psнquica y la regeneraciуn.\nFunciona de forma predeterminada para GAMMA. De lo contrario, se requiere el mod Actor con voz.\nSi no se encuentra el script, no sucede nada. Desactнvelo sуlo si no le gusta el daсo psi causado por los medicamentos.
-
-
-
- Curaciуn del sueсo
-
-
- Dormir regenera el daсo de las extremidades. La velocidad de curaciуn y la mecбnica se pueden ajustar a continuaciуn. No puede curar por encima del % de tu HP principal.
-
-
- Nueva lуgica de curaciуn al dormir
-
-
- En el BHS original cada miembro se curaba un HP por hora de sueсo. Esto cura la mayorнa de los miembros daсados un HP a la vez por hora (se puede ajustar).
-
-
- Tasa de curaciуn al dormir
-
-
- Multiplicador de la tasa de curaciуn al dormir.
-
-
-
- Artefactos pueden regenerar extremidades (SOLO COMPATIBLE CON GAMMA POR DEFECTO. CONSULTA LA PБGINA MOD PARA VER CУMO EDITAR LOS VALORES)
-
-
- Si un artefacto posee propiedades curativas, tambiйn regenerarб lentamente los miembros hasta el nivel de HP actual.
-
-
- Multiplicador de velocidad de curaciуn de artefactos (Mayor=Mбs rбpido)
-
-
- Ajusta la velocidad de regeneraciуn de los artefactos con este multiplicador.
-
-
-
- Las hogueras pueden regenerar extremidades
-
-
- Las hogueras pueden regenerar extremidades
-
-
- Tiempo entre curaciones (segundos)
-
-
- La cantidad de tiempo para que una extremidad se cure en un tick (en segundos). Pulsa ENTER despuйs de escribir el valor deseado.
-
-
- Coeficiente de probabilidad de botнn
-
-
- Multiplicador de la posibilidad de que caigan nuevos medicamentos.\nValor por defecto - 1.0
-
-
- Eliminar todos los elementos relacionados con el addon (Desinstalaciуn Segura)
-
-
- Esta opciуn permite desinstalar el addon de forma segura.\n1) Actнvalo\n2) Carga un juego si aъn no lo has hecho\n3) Asegъrate de que todos los elementos han sido eliminados\n4) Guarda, sal y desactiva el addon.
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/spa/ui_st_weapon_sway.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/spa/ui_st_weapon_sway.xml
deleted file mode 100644
index ffe94b0c..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/spa/ui_st_weapon_sway.xml
+++ /dev/null
@@ -1,231 +0,0 @@
-
-
-
-
-
-
-
- Movimiento del arma
-
-
-
-
- Activar balanceo de arma
-
-
- Activaciуn/desactivaciуn de la funciуn de balanceo del arma
-
-
-
- Parche del sistema de salud corporal (Necesita recarga)
-
-
- Activar si tienes instalado el addon Body Health System y quieres tener penalizaciones de balanceo de BHS. Esto usarб el addon Weapon Sway cuando los brazos estйn por encima de las penalizaciones de brazo de BHS. \n
- \n Puedes desactivar el parche incluso cuando BHS estб instalado, esto sobrescribirб BHS y usarб sуlo Weapon Sway addon todo el tiempo.
-
-
-
- Hold Breath Keybind
-
-
- Cambia la combinaciуn de teclas para la funciуn de contener la respiraciуn
-
-
-
- Tipo de animaciуn
-
-
- Tipo de animaciуn del balanceo del arma. Actualmente solo tiene los dos primeros, todos los "custom_" estбn vacнos y estбn ahн para que la gente aсada los suyos.
-
-
-
- Tipo de animaciуn de alcance
-
-
- Tipo de animaciуn del balanceo del arma con alcance. Lista igual que la anterior.
-
-
-
- Potencia mбxima de efecto
-
-
- Potencia mбxima que puede alcanzar el efecto de la cбmara, combinada de todos los demбs factores. \n
- \n Por defecto: 3
-
-
-
- Factor de peso
-
-
- Multiplicador del peso del arma (peso_arma * Factor_peso). \n
- \n Por defecto: 1.0
-
-
-
- Potencia mбxima de peso
-
-
- Potencia mбxima que puede alcanzar el multiplicador de peso, cuanto mбs pesada sea el arma mбs multiplicador para el efecto de cбmara serб. \n
- \n Por defecto: 7
-
-
-
- Potencia de soporte
-
-
- Multiplicador de efecto para estados corporales de pie/caminar. \n
- \nPor defecto: 1.2\n
- \n (Stand_Power * gun_weight * Weight_Factor * 0.1)
-
-
-
- Poder de agacharse
-
-
- Multiplicador de efecto para el estado corporal agachado. \n
- \nPor defecto: 0.8\n
- \n (Crouch_Power * gun_weight * Weight_Factor * 0.1)
-
-
-
- Potencia de agachado baja
-
-
- Multiplicador de efecto para el estado corporal agachado bajo. \n
- \mPor defecto: 0.4\n
- \n (Baja_Crouch_Power * gun_weight * Factor_de_peso * 0.1)
-
-
-
- Potencia de soporte de alcance
-
-
- Multiplicador de efecto para los estados de cuerpo de pie/caminar si el arma tiene alcance. \n
- \nPor defecto: 1.2\n
- \n (Scope_Stand_Power * gun_weight * Weight_Factor * 0.02)
-
-
-
- Potencia de agachado con alcance
-
-
- Multiplicador de efecto para el estado de cuerpo agachado si el arma tiene alcance. \n
- \nPor defecto: 0.8\n
- \n (Scope_Crouch_Power * gun_weight * Weight_Factor * 0.02)
-
-
-
- Potencia de agachado bajo con alcance
-
-
- Multiplicador de efecto para el estado de cuerpo agachado bajo si el arma tiene alcance. \n
- \nPor defecto: 0.4\n
- \n (Scope_Low_Crouch_Power * gun_weight * Weight_Factor * 0.02)
-
-
-
- Potencia de agachado bajo con alcance
-
-
- Multiplicador de efecto para el estado de cuerpo agachado bajo si el arma tiene alcance. \n
- \nPor defecto: 0.4\n
- \n (Scope_Low_Crouch_Power * gun_weight * Weight_Factor * 0.02)
-
-
-
- Caracterнstica de arma montada
-
-
- Caracterнstica que te permite colocar un arma en un obstбculo frente a ti para reducir el balanceo del arma.
-
-
-
- El arma montada reduce la potencia
-
-
- Multiplicador de reducciуn del balanceo del arma cuando estб montada. \n
- \n Por defecto: 0,1
-
-
-
- Altura mбxima del arma montada
-
-
-
- Esta es un poco complicada, reduce aъn mбs si quieres que un arma se siga considerando "montada" cuando la subas mбs. \n
- \n Por defecto: -0.35
-
-
-
- Funciуn de retenciуn de la respiraciуn
-
-
- Te permite contener la respiraciуn manteniendo pulsada la tecla "Usar" mientras apuntas y disminuye el balanceo del arma durante un tiempo limitado.
-
-
-
- Mantiene la potencia de la respiraciуn
-
-
- (constante) Multiplicador para la reducciуn del balanceo del arma mientras mantienes la respiraciуn. \n
- \n Predeterminado: 0.1
-
-
-
- Liberar potencia de respiraciуn
-
-
- (1 + this_value * seconds_hold) Multiplicador de penalizaciуn que obtienes tras soltar la tecla "Usar" o si alcanzas el temporizador mбximo. \n
- \Por defecto: 0.04
-
-
-
- Tiempo mбximo para aguantar la respiraciуn
-
-
- Tiempo mбximo que puedes aguantar la respiraciуn (en segundos). \n
- \n Por defecto: 11
-
-
-
- Potencia de restauraciуn de la respiraciуn
-
-
- Multiplicador para la restauraciуn del aliento, un valor de "1" significa que el aliento se restaurarб a la misma velocidad que disminuye. \n
- \nPor defecto: 0.5
-
-
-
- Habilitar sonido de respiraciуn
-
-
- Habilita los sonidos de inhalaciуn y exhalaciуn.
-
-
-
- "Manipulaciуn" factor de estadнsticas de arma
-
-
- Rango del multiplicador de stat de arma de manejo: \n
- \nIncrementar este valor resultarб en: malos manejos = mayores penalizaciones; buenos manejos = mayores bonificaciones. \n
- \n Disminuyendo es: malas manipulaciones = menos penalizaciones, buenas manipulaciones = menos bonificaciones, "0" = las manipulaciones no afectan al balanceo. \n
- \n Por defecto: 1
-
-
-
-
- Depuraciуn
-
-
- Debug te permite ver: \n
- \n 1. Direcciуn y cambio de direcciуn del eje y (en consola) \n
- \n 2. Diferencia de distancia entre cursor y raycast con "y" editado (en noticias dinбmicas) \n
- \n 3. Potencia del efecto de cбmara de animaciуn (mensajes de actor en la parte inferior)
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/spa/z_st_items_medical.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/spa/z_st_items_medical.xml
deleted file mode 100644
index b4d63f85..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/spa/z_st_items_medical.xml
+++ /dev/null
@@ -1,184 +0,0 @@
-
-
-
-
-
-
- Ibuprofeno
-
-
- El ibuprofeno es un medicamento de la clase de medicamentos antiinflamatorios no esteroideos (AINE) que se usa para tratar el dolor, la fiebre y la inflamaciуn. Se utiliza como analgйsico general.\n \n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_blue] • %c[ui_gray_2] Analgйsicos\n
-
-
-
- Bendage
-
-
- Un vendaje elбstico normal que se usa para detener el sangrado y prevenir la infecciуn de las heridas. Para un sangrado regular, aplique cuidadosamente el vendaje a la herida. Para el sangrado arterial, ate con urgencia el vendaje alrededor del бrea afectada.\n \n
-
-
-
- Vinca
-
-
- Vikasolum ucraniano: un equivalente artificial de la vitamina K. El objetivo principal de este medicamento es aumentar la velocidad de coagulaciуn de la sangre. Tiene una gran demanda entre los acosadores que quieren que las heridas y laceraciones infligidas por mutantes se cicatricen lentamente y se cierren mбs rбpido. Los efectos de la droga son duraderos. Tome dos tabletas a la vez.\n \n
-
-
-
- Anabiуticos
-
-
- Una droga experimental desarrollada por el profesor Ozersky para equipos de investigaciуn cientнfica que trabajan en la Zona. En esencia, la droga contiene tetrodotoxina, conocida coloquialmente como "polvo zombie", que provoca un cierre completo del sistema nervioso central del cuerpo que puede permitir que las personas sobrevivan a las emisiones fuera de la cubierta. Despuйs de seis aсos de pruebas de campo, los acosadores reflexivos saben que deben tener algunos a mano para estallidos inesperados.\n \n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_red] • %c[ui_gray_2]Provoca Un Apagуn Temporal\n
-
-
-
- Antidoto
-
-
- La antitoxina IP2 es un fбrmaco complejo que comprende varios antнdotos, incluidos metoclopramida, piridoxina, tiamina, riboxina y otros fбrmacos. La droga se usa para inyectar una variedad de antibiуticos para neutralizar los venenos naturales, junto con absorbentes de veneno sintйticos, en el torrente sanguнneo. IP2 no es particularmente popular en la Zona ya que la mayorнa de los acosadores usan una mбscara antigбs y un traje protector. Sin embargo, todavнa hay quienes tienen guardadas algunas unidades de este antнdoto para situaciones de emergencia. Los efectos de la droga son duraderos. Tome una cбpsula a la vez.\n \n
-
-
-
- Torniquete
-
-
- Un torniquete de goma hemostбtica, que permite al usuario detener el sangrado.\n \n
-
-
-
- Yadulin
-
-
- Semidroga a base de morfina. Permite al usuario calmar rбpidamente el dolor y aumentar la producciуn de adrenalina, lo que ayuda al usuario a resistir incluso las batallas mбs intensas. Es popular entre los acosadores, a menudo se usa como droga recreativa entre los grupos criminales y supuestamente se suministra al Monolito.\n \n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_red] • %c[ui_gray_2]Causa Mareos Severos\n
-
-
-
- AI-2 Medkit
-
-
- El botiquнn AI-2 fue desarrollado como un botiquнn de primeros auxilios de servicio estбndar para varias agencias de defensa y aplicaciуn de la ley y fuerzas de defensa civil de la URSS. Ъtil para el tratamiento de lesiones, heridas, quemaduras quнmicas y tйrmicas y varios tipos de veneno.\n \n
-
-
-
- Botiquнn Militar
-
-
- Un botiquнn especializado para brindar primeros auxilios a las vнctimas del combate. El botiquнn incluye coagulantes sanguнneos a base de menadiona, analgйsicos, antibiуticos e inmunoestimulantes, asн como un botiquнn para la extracciуn de balas y fragmentos del cuerpo. Este botiquнn se entrega principalmente al personal del ejйrcito, como las unidades Spetsnaz que se aventuran en las profundidades de la Zona, y es popular entre las fuerzas de servicio.\n \n
-
-
-
- Botiquнn Cientнfico
-
-
- Un botiquнn diseсado especнficamente para su uso en la Zona. El kit contiene productos para el manejo de heridas, asн como para prevenir el desarrollo de envenenamiento por radiaciуn y reducir la radiaciуn acumulada en el cuerpo. Contiene Vikasolum, Batilolum y Naphazoline, a diferencia de otros botiquines.\n \n
-
-
-
- Paquete Me Estimulantes Improvisado
-
-
- Los paquetes de estimulantes improvisados son populares entre los Zoners novatos, ya que son fбciles de obtener y econуmicos. Producido en la Zona a partir de ingredientes comъnmente disponibles, sin equipo ni purificaciуn adecuados. Esta es la causa de muchos efectos secundarios que incluyen dolor de cabeza, parestesia y un aumento considerable en la demanda de nutriciуn. Inyectado en el muslo.\n \n
-
-
-
- Paquete De Estнmulo Militar
-
-
- Los estнmulos militares constituyen una parte del equipo estбndar de los soldados para las operaciones de campo en la Zona. Fбcilmente disponible en el mercado y se puede adquirir por un precio moderado. Popular entre los Zoners experimentados. Son significativamente mбs potentes y funcionan mбs rбpido que sus contrapartes improvisadas, lo que los hace perfectos para usar en situaciones que amenazan la vida. Producido a partir de materias primas de alta densidad que pueden pasar factura al organismo. Los efectos secundarios incluyen shock, mareos extremos y aumento del hambre.\n \n
-
-
-
- Paquete De Estнmulo Cientнfico
-
-
- Creada por el mismo instituto de investigaciуn de defensa en Kiev que desarrollу el conocido traje SEVA, esta soluciуn de ъltima generaciуn constituye el estabilizador de salud mбs potente disponible en la Zona. Los ingredientes de la mejor calidad y la fуrmula perfeccionada permiten una recuperaciуn casi instantбnea y garantizan una rбpida limpieza por radiaciуn. Los efectos secundarios se minimizan. El costo extremadamente alto prбcticamente limita el grupo objetivo de la droga a los acosadores mбs hбbiles y exitosos.\n \n
-
-
-
- Cocaina
-
-
- Pequeсo maletнn de aluminio que contiene la cocaнna y las herramientas que facilitan su uso. La cocaнna es un poderoso estimulante del sistema nervioso. Sus efectos pueden durar de 15-30 minutos a una hora, dependiendo de la vнa de administraciуn. La cocaнna aumenta el estado de alerta, induce sentimientos de bienestar, competencia y sexualidad. La ansiedad, la paranoia y la inquietud son efectos secundarios comunes. Con dosis excesivas, se observan temblores, convulsiones y aumento de la temperatura corporal. Los bandidos son conocidos por oler esta droga justo antes de lanzar un asalto o una emboscada.\n \n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_cyan] • %c[ui_gray_2]Estimulante Muy Potente\n
- %c[d_green] • %c[ui_gray_2]Eliminaciуn De Mareos Muy Potente\n
-
-
-
- Inyecciуn De Epinefrina
-
-
- La epinefrina (tambiйn conocida como adrenalina) es una hormona y un neurotransmisor. La epinefrina tiene muchas funciones en el cuerpo, regulando instantбneamente la frecuencia cardнaca, los vasos sanguнneos y los diбmetros de las vнas respiratorias, y los cambios metabуlicos. La liberaciуn de epinefrina es un componente crucial de la respuesta de lucha o huida del sistema nervioso simpбtico. Los efectos conducen a un aumento de la glucosa y los бcidos grasos en la sangre, proporcionando sustratos para la producciуn instantбnea de energнa dentro de las cйlulas de todo el cuerpo.\n \n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_cyan] • %c[ui_gray_2]Estimulante Muy Potente\n
- %c[d_green] • %c[ui_gray_2]Eliminaciуn De Mareos Muy Potente\n
-
-
-
- Ampolla De Morfina
-
-
- Una ampolla de hierro diseсada como equipo de campo para el personal de campo militar para la reducciуn instantбnea del dolor. Esta ampolla contiene una potente dosis de morfina. En la medicina clнnica, la morfina se considera el estбndar de oro de los analgйsicos opioides utilizados para aliviar el dolor y el sufrimiento intensos o agonizantes. Al igual que otros opioides, como la oxicodona, la hidromorfona y la diacetilmorfina (heroнna), la morfina actъa directamente sobre el sistema nervioso central (SNC) para aliviar el dolor. Inyectado en un brazo o un muslo.\n \n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_purple] • %c[ui_gray_2]Bonificaciуn De Resistencia Al Daсo Extremadamente Grande (15%)\n
- %c[d_red] • %c[ui_gray_2]Provoca Un Ligero Mareo\n
-
-
-
- Una ampolla de hierro diseсada como equipo de campo para el personal de campo militar para la reducciуn instantбnea del dolor. Contiene una potente dosis de metamizol mezclado con un fбrmaco antihemorrбgico. El metamizol es uno de los medicamentos antiinflamatorios no esteroideos (AINE) mбs fuertes, especialmente efectivo para aliviar dolores y molestias, asн como para reducir la fiebre. Tambiйn es ъtil como medicamento antiinflamatorio cuando se usa en dosis mбs altas. Puede causar algunos efectos secundarios tardнos como leucopenia o agranulocitosis, por lo que debe usarse con moderaciуn. Inyectado en un brazo o un muslo. Su disponibilidad en la Zona es limitada debido a la dificultad de pasar el medicamento de contrabando a travйs de cordones militares.\n \n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_purple] • %c[pda_white]Gran Bonificaciуn De Resistencia Al Daсo (10%)\n
-
-
-
- Sulfanilamida
-
-
- Medicamento con sulfanilamida, eficaz contra bacterias grampositivas y gramnegativas. Actъa sobre neumococos, estreptococos, estafilococos, E. coli, palo de Klebsiella (palo de Friedlander), agentes causantes de la disenterнa; es menos activo con respecto a la proteнna; es activo contra el virus del tracoma (una enfermedad ocular infecciosa que puede causar ceguera); No actъa sobre cepas de bacterias resistentes a otros preparados de sulfanilamida. Los efectos adversos incluyen dolores de cabeza, trastornos digestivos, erupciones en la piel, fiebre y leucopenia. Los efectos de la droga son duraderos.\n \n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_red] • %c[ui_gray_2]Provoca Un Ligero Mareo\n
-
-
-
- Diclofenaco Sуdico
-
-
- Medicamento antiinflamatorio no esteroideo del grupo de los derivados del бcido fenilacйtico. El efecto de la droga entorpece la actividad nerviosa del usuario. Debido a la gran cantidad de efectos secundarios, como dolor de cabeza, mareos, somnolencia y, en algunos casos, trastornos de la memoria, desorientaciуn, irritabilidad, no se usa con fines medicinales en la mayorнa de los paнses. Sin embargo, en la Zona se ha vuelto popular debido a un efecto secundario expresado en la violaciуn de la sensibilidad del sistema nervioso central, lo que le permite resistir lesiones graves, como heridas de bala y metralla.\n \n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_purple] • %c[pda_white]Average damage resistance bonus (5%)\n
- %c[d_red] • %c[ui_gray_2]Provoca Un Ligero Mareo\n
-
-
-
- Clortetraciclina
-
-
- Un antibiуtico. Polvo cristalino de color amarillo dorado, sabor amargo, soluble en agua. Este es uno de los primeros antibiуticos abiertos (despuйs de la penicilina).\n El clorhidrato de clorotetraciclina tiene un efecto bacteriostбtico sobre los microbios grampositivos y gramnegativos, la rickettsia y algunos virus grandes.\n \n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_red] • %c[ui_gray_2]Provoca Un Ligero Mareo\n
-
-
-
- ЎAdvertencia! No lo use en combinaciуn con ningъn otro fбrmaco, ya que puede resultar letal. Esta poderosa mezcla contenida en una pequeсa jeringa te harб perder el conocimiento. Pero cuando te despiertes (si te despiertas), te sentirбs renacer. Inyecte la jeringa en su muslo cuando estй sentado.\n \n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_red] • %c[ui_gray_2]Causa Mareos Extremos\n
-
-
-
- Fentanyl
-
-
- El fentanilo es un opioide poderoso que se usa como medicamento para el dolor. Tambiйn se usa como droga recreativa, a veces mezclada con heroнna, cocaнna o metanfetamina, y sus efectos de sobredosis potencialmente mortales pueden neutralizarse con naloxona. El fentanilo funciona principalmente activando los receptores opioides.\n \n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_red] • %c[ui_gray_2]Provoca Un Ligero Mareo\n
-
-
-
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/spa/zz_st_items_medical.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/spa/zz_st_items_medical.xml
deleted file mode 100644
index 0c7cc7d1..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/text/spa/zz_st_items_medical.xml
+++ /dev/null
@@ -1,152 +0,0 @@
-
-
-
-
-
-
- Instrumentos Quirъrgicos
-
-
- Pequeсa variaciуn de instrumento quirъrgico que son comunes en la zona. Se utilizan para elaborar el kit CMS. Se puede utilizar directamente, pero requerirб un vendaje y los instrumentos ya no son estйriles. Asн que sуlo se pueden usar una vez.\n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_blue] • %c[ui_gray_2] Pequeсo Kit Para Recuperar Partes Del Cuerpo\n
- %c[d_blue] • %c[ui_gray_2] Objeto De Artesanнa\n
- %c[d_blue] • %c[ui_gray_2] Objeto Quirъrgico\n
- %c[d_blue] • %c[ui_gray_2] Importado\n
- %c[d_blue] • %c[ui_gray_2] Alta Calidad\n
- %c[d_red] • %c[ui_gray_2] Tendrб Que Hacerse Daсo Dentro De La Intervenciуn Mйdica\n
-
-
-
- Zagustin
-
-
- Fбrmaco de uso militar. Inhibe los activadores de la profibinolisina y frena su transformaciуn en fibrinolisina. Detiene temporalmente las hemorragias y aumenta la resistencia a la pйrdida de sangre. Tiene efectos secundarios. Provoca deshidrataciуn grave.\n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_blue] • %c[ui_gray_2] Medicina\n
- %c[d_blue] • %c[ui_gray_2] Detiene La Hemorragia Alta\n
- %c[d_blue] • %c[ui_gray_2] Uso Rбpido (Jeringa)\n
-
-
-
- Vendaje Militar
-
-
- Una venda elбstica del ejйrcito utilizada para detener hemorragias y prevenir la infecciуn de heridas. Para hemorragias regulares, aplicar cuidadosamente la venda sobre la herida. Para las hemorragias arteriales, atar urgentemente la venda alrededor de la zona afectada.\n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_blue] • %c[ui_gray_2] Detiene La Hemorragia\n
- %c[d_blue] • %c[ui_gray_2] Uso Rбpido (Yeso Adhesivo)\n
-
-
-
- Propital
-
-
- Fбrmaco de uso militar. Estimula los procesos de regeneraciуn aumentando la biosнntesis de bases de purina y pirimidina, ARN, elementos celulares funcionales y enzimбticos. Aumenta el metabolismo, la salud y la vitalidad. Tiene efectos secundarios a largo plazo. Permitido su uso sуlo por mйdicos y paramйdicos.\n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_blue] • %c[ui_gray_2] Medicina\n
- %c[d_blue] • %c[ui_gray_2] Importado\n
- %c[d_blue] • %c[ui_gray_2] Alta Calidad\n
- %c[d_blue] • %c[ui_gray_2] Uso Rбpido (Jeringa)\n
-
-
-
- Estimulante De Combate SJ6
-
-
- Estimulante de combate. Mezclado con una pequeсa cantidad de adrenalina se utiliza para aumentar las capacidades corporales antes del combate durante unos 3 minutos. El estimulante es permitido usar por las unidades de fuerzas especiales. Desarrollado por Svarog Test Labs, marcado como SJ6. Tiene efectos secundarios.\n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_blue] • %c[ui_gray_2] Medicina\n
- %c[d_blue] • %c[ui_gray_2] Importado\n
- %c[d_blue] • %c[ui_gray_2] Artнculo Militar\n
- %c[d_blue] • %c[ui_gray_2] Uso Rбpido (Jeringuilla)\n
- %c[d_purple] • %c[ui_gray_2] Bonificaciуn De Resistencia Al Daсo Muy Buena\n
- %c[d_purple] • %c[ui_gray_2] Muy Buena Bonificaciуn De Resistencia\n
- %c[d_purple] • %c[ui_gray_2] Muy Buen Bono De Peso De Transporte\n
- %c[d_purple] • %c[ui_gray_2] Muy Buen Bono De Resistencia\n
- %c[d_purple] • %c[ui_gray_2] Larga duraciуn\n
- %c[d_red] • %c[ui_gray_2] Provoca Alucinaciones Pero Fortalece La Mente.\n
- %c[d_red] • %c[ui_gray_2] Aumenta Mucho El Hambre\n
-
-
-
- Estimulante De Combate SJ1
-
-
- Estimulante de combate. Se utiliza para ganar fuerza y resistencia antes del combate durante unos 3 minutos. Las unidades de fuerzas especiales pueden usar este estimulante. Desarrollado por Svarog Test Labs, marcado como SJ1. Tiene efectos secundarios.\n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_blue] • %c[ui_gray_2] Medicina\n
- %c[d_blue] • %c[ui_gray_2] Importado\n
- %c[d_blue] • %c[ui_gray_2] Artнculo Militar\n
- %c[d_blue] • %c[ui_gray_2] Uso Rбpido (Jeringuilla)\n
- %c[d_purple] • %c[ui_gray_2] Buena Bonificaciуn De Resistencia Al Daсo\n
- %c[d_pъrpura] • %c[ui_gris_2] Buena Bonificaciуn De Peso De Carga\n
- %c[d_purple] • %c[ui_gray_2] Muy Buena Bonificaciуn De Resistencia\n
- %c[d_purple] • %c[ui_gray_2] Muy Buen Bono De Resistencia\n
- %c[d_purple] • %c[ui_gray_2] Larga Duraciуn\n
- %c[d_red] • %c[ui_gray_2] Provoca Alucinaciones Pero Fortalece La Mente.\n
- %c[d_red] • %c[ui_gray_2] Aumenta El Hambre\n
-
-
-
- Kit Quirъrgico CMS
-
-
- Kit quirъrgico compacto para el tratamiento de heridas de bala y otras lesiones graves. A diferencia de las herramientas quirъrgicas tambiйn restaurarб algunos HP perdido tambiйn despuйs de restaurar la extremidad.\n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_blue] • %c[ui_gray_2] Objeto Quirъrgico\n
- %c[d_blue] • %c[ui_gray_2] Importado\n
- %c[d_blue] • %c[ui_gray_2] Alta Calidad\n
- %c[d_red] • %c[ui_gray_2] Uso Lento (Kit De Campo)\n
-
-
-
- Analgina Analgйsica
-
-
- Los analgйsicos mбs baratos y extendidos.\n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_blue] • %c[ui_gray_2] Medicina\n
- %c[d_blue] • %c[ui_gray_2] Analgйsicos\n
-
-
-
- Splint
-
-
- Fйrula comъn para fijar los huesos daсados en posiciones como medida de ayuda de emergencia.\n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_blue] • %c[0,255,255,255] Cura Huesos Rotos \n
- %c[d_blue] • %c[ui_gray_2] Rбpido y Permanente\n
-
-
-
- Fйrula de Aluminio
-
-
- Fйrula comъn para fijar los huesos daсados en posiciones como medida de ayuda de emergencia.\n
- %c[ui_gray_3]PROPIEDADES:\n
- %c[d_blue] • %c[ui_gray_2] Cura Huesos Rotos\n
- %c[d_blue] • %c[ui_gray_2] Importado\n
- %c[d_blue] • %c[ui_gray_2] Rбpido y Permanente\n
-
-
-
- eTG-Change
-
-
- Inyector de pluma que contiene una mezcla de diferentes esteroides y otros ingredientes. Supongo que nadie quiere saber exactamente quй contiene. El punto principal es que funciona.\n \n
- %c[0,255,255,255]PROPIEDADES:\n
- %c[d_blue] • %c[ui_gray_2] Medicina\n
- %c[d_blue] • %c[ui_gray_2] Importado\n
- %c[d_blue] • %c[ui_gray_2] Artнculo Militar\n
- %c[d_blue] • %c[ui_gray_2] Uso Rбpido (Jeringuilla)\n
- %c[d_purple] • %c[ui_gray_2] Gran Aumento Del Peso En El Transporte\n
- %c[d_purple] • %c[ui_gray_2] Muy buen bono de resistencia\n
- %c[d_purple] • %c[ui_gray_2] Duraciуn Muy Larga\n
- %c[d_red] • %c[ui_gray_2] Aumenta Considerablemente El Hambre\n
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/ui/textures_descr/ui_hud.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/ui/textures_descr/ui_hud.xml
deleted file mode 100644
index 6e07660d..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/ui/textures_descr/ui_hud.xml
+++ /dev/null
@@ -1,170 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/ui/ui_body_health.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/ui/ui_body_health.xml
deleted file mode 100644
index d8549739..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/ui/ui_body_health.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/ui/ui_custom_msgs.xml b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/ui/ui_custom_msgs.xml
deleted file mode 100644
index fda6dadf..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/configs/ui/ui_custom_msgs.xml
+++ /dev/null
@@ -1,1270 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_hud_timer_games
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_frame_error_sign_alarm
-
-
-
- car\trabantnoise
-
-
-
- act\act_controller_hit
-
-
-
- act\act_controller_hit1
-
-
-
- controller\controller_blood_01
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- st_autosave
-
-
-
-
-
-
-
- gun_jammed
-
-
-
- cant_walk
-
-
-
- cant_walk_weight
-
-
-
- st_not_enough_money
-
-
-
- st_not_enough_money
-
-
-
- can_use_weapon_now
-
-
-
- st_not_enough_money
-
-
-
- st_not_enough_money_npc
-
-
-
- ui\ui_cm_connection_error
-
-
- cur_num
-
-
-
-
- ui\ui_cm_connection_error
-
-
- cur_num
-
-
-
-
- ui\ui_cm_connection_error
-
-
- cur_num
-
-
-
-
- ui\ui_cm_connection_error
-
-
- cur_num
-
-
-
-
-
-
- ui_sega_healph
-
-
-
- ui_sega_healph
-
-
-
-
- ui_hud_timer_games
-
-
-
-
-
-
-
-
- ui_hud_timer_games
-
-
-
- ui_hud_points_count
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- intro\intro_back
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- dinamic_hud\hud_vingette
-
-
-
- shaders\gasmasks\mask_nm_1
-
-
- shaders\gasmasks\mask_nm_2
-
-
- shaders\gasmasks\mask_nm_3
-
-
- shaders\gasmasks\mask_nm_4
-
-
- shaders\gasmasks\mask_nm_5
-
-
- shaders\gasmasks\mask_nm_6
-
-
- shaders\gasmasks\mask_nm_7
-
-
- shaders\gasmasks\mask_nm_8
-
-
- shaders\gasmasks\mask_nm_9
-
-
- shaders\gasmasks\mask_nm_10
-
-
- shaders\gasmasks\mask_nm_10
-
-
- shaders\gasmasks\mask_nm_10
-
-
-
-
- dinamic_hud\hud_gas1
-
-
- dinamic_hud\hud_gas2
-
-
- dinamic_hud\hud_gas3
-
-
- dinamic_hud\hud_gas4
-
-
- dinamic_hud\hud_gas5
-
-
- dinamic_hud\hud_gas6
-
-
- dinamic_hud\hud_gas7
-
-
- dinamic_hud\hud_gas8
-
-
- dinamic_hud\hud_gas9
-
-
- dinamic_hud\hud_gas10
-
-
- dinamic_hud\hud_gas11
-
-
- dinamic_hud\hud_gas12
-
-
- dinamic_hud\hud_prot1
-
-
- dinamic_hud\hud_prot2
-
-
- dinamic_hud\hud_prot3
-
-
- dinamic_hud\hud_prot4
-
-
- dinamic_hud\hud_prot5
-
-
- dinamic_hud\hud_prot6
-
-
- dinamic_hud\hud_prot7
-
-
- dinamic_hud\hud_prot8
-
-
- dinamic_hud\hud_prot9
-
-
- dinamic_hud\hud_prot10
-
-
- dinamic_hud\hud_prot11
-
-
- dinamic_hud\hud_prot12
-
-
- dinamic_hud\hud_hard1
-
-
- dinamic_hud\hud_hard2
-
-
- dinamic_hud\hud_hard3
-
-
- dinamic_hud\hud_hard4
-
-
- dinamic_hud\hud_hard5
-
-
- dinamic_hud\hud_hard6
-
-
- dinamic_hud\hud_hard7
-
-
- dinamic_hud\hud_hard8
-
-
- dinamic_hud\hud_hard9
-
-
- dinamic_hud\hud_hard10
-
-
- dinamic_hud\hud_hard11
-
-
- dinamic_hud\hud_hard12
-
-
- dinamic_hud\hud_sci1
-
-
- dinamic_hud\hud_sci2
-
-
- dinamic_hud\hud_sci3
-
-
- dinamic_hud\hud_sci4
-
-
- dinamic_hud\hud_sci5
-
-
- dinamic_hud\hud_sci6
-
-
- dinamic_hud\hud_sci7
-
-
- dinamic_hud\hud_sci8
-
-
- dinamic_hud\hud_sci9
-
-
- dinamic_hud\hud_sci10
-
-
- dinamic_hud\hud_sci11
-
-
- dinamic_hud\hud_sci12
-
-
- dinamic_hud\hud_tact1
-
-
- dinamic_hud\hud_tact2
-
-
- dinamic_hud\hud_tact3
-
-
- dinamic_hud\hud_tact4
-
-
- dinamic_hud\hud_tact5
-
-
- dinamic_hud\hud_tact6
-
-
- dinamic_hud\hud_tact7
-
-
- dinamic_hud\hud_tact8
-
-
- dinamic_hud\hud_tact9
-
-
- dinamic_hud\hud_tact10
-
-
- dinamic_hud\hud_tact11
-
-
- dinamic_hud\hud_tact12
-
-
- dinamic_hud\hud_exo1
-
-
- dinamic_hud\hud_exo2
-
-
- dinamic_hud\hud_exo3
-
-
- dinamic_hud\hud_exo4
-
-
- dinamic_hud\hud_exo5
-
-
- dinamic_hud\hud_exo6
-
-
- dinamic_hud\hud_exo7
-
-
- dinamic_hud\hud_exo8
-
-
- dinamic_hud\hud_exo9
-
-
- dinamic_hud\hud_exo10
-
-
- dinamic_hud\hud_exo11
-
-
- dinamic_hud\hud_exo12
-
-
-
-
- dinamic_hud\blood1
-
-
- dinamic_hud\blood2
-
-
- dinamic_hud\blood3
-
-
- dinamic_hud\blood4
-
-
- dinamic_hud\blood5
-
-
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
-
-
-
-
-
-
- ui_inGame2_triangle_Radiation_green
-
-
- ui_inGame2_triangle_Radiation_yellow
-
-
- ui_inGame2_triangle_Radiation_orange
-
-
- ui_inGame2_triangle_Radiation_red
-
-
-
- ui_inGame2_triangle_Biological_green
-
-
- ui_inGame2_triangle_Biological_yellow
-
-
- ui_inGame2_triangle_Biological_orange
-
-
- ui_inGame2_triangle_Biological_red
-
-
-
- ui_inGame2_triangle_Psy_green
-
-
- ui_inGame2_triangle_Psy_yellow
-
-
- ui_inGame2_triangle_Psy_orange
-
-
- ui_inGame2_triangle_Psy_red
-
-
-
-
- ui_inGame2_triangle_Radiation_green
-
-
- ui_inGame2_triangle_Radiation_yellow
-
-
- ui_inGame2_triangle_Radiation_orange
-
-
- ui_inGame2_triangle_Radiation_red
-
-
-
- ui_inGame2_triangle_Biological_green
-
-
- ui_inGame2_triangle_Biological_yellow
-
-
- ui_inGame2_triangle_Biological_orange
-
-
- ui_inGame2_triangle_Biological_red
-
-
-
- ui_inGame2_triangle_Psy_green
-
-
- ui_inGame2_triangle_Psy_yellow
-
-
- ui_inGame2_triangle_Psy_orange
-
-
- ui_inGame2_triangle_Psy_red
-
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
-
-
-
- shaders\gasmasks\mask_nm_1
-
-
-
-
-
-
-
-
-
-
- ui_hud_bhs_bg
-
-
-
-
- ui_hud_bhs_bgm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_hud_bhs_stamina_bg
-
-
-
-
- ui_hud_bhs_health_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
-
-
-
-
-
-
- ui_hud_bhs_bg
-
-
-
-
- ui_hud_bhs_bgm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_hud_bhs_stamina_bg
-
-
-
-
- ui_hud_bhs_health_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
-
-
-
-
-
-
- ui_hud_bhs_bg
-
-
-
-
- ui_hud_bhs_bgm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_hud_bhs_stamina_bg
-
-
-
-
- ui_hud_bhs_health_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
-
-
-
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_animation/antiradobject.omf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_animation/antiradobject.omf
deleted file mode 100644
index bbcddf32..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_animation/antiradobject.omf and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_animation/bintobject.omf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_animation/bintobject.omf
deleted file mode 100644
index a49c6d17..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_animation/bintobject.omf and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_animation/medobject.omf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_animation/medobject.omf
deleted file mode 100644
index c517c4a6..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_animation/medobject.omf and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_hands_animation/antiradhands.omf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_hands_animation/antiradhands.omf
deleted file mode 100644
index a610f403..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_hands_animation/antiradhands.omf and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_hands_animation/binthands.omf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_hands_animation/binthands.omf
deleted file mode 100644
index 16433b0d..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_hands_animation/binthands.omf and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_hands_animation/hud_hand_morphine_anim.omf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_hands_animation/hud_hand_morphine_anim.omf
deleted file mode 100644
index 7d309d5d..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_hands_animation/hud_hand_morphine_anim.omf and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_hands_animation/medhands.omf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_hands_animation/medhands.omf
deleted file mode 100644
index d07bec18..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_hands_animation/medhands.omf and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_hands_animation/medkitexohands.omf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_hands_animation/medkitexohands.omf
deleted file mode 100644
index c1403b66..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/anomaly_weapons/hud_hands_animation/medkitexohands.omf and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/aptechki/medkit_hud.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/aptechki/medkit_hud.ogf
deleted file mode 100644
index abc7d99d..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/aptechki/medkit_hud.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0e21f5a6297bce6177609b75b4659af00feafa9e9d16284571ded2567d77ba9d
-size 62015
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/bints/bandage_hud.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/bints/bandage_hud.ogf
deleted file mode 100644
index 9969abd3..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/bints/bandage_hud.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ac4fa60361eb008ebe26505d27d32dcc8ecf6494ca24bfa9c6214cfeeedb7bd0
-size 89851
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/bints/wpn_bint_arm_hud.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/bints/wpn_bint_arm_hud.ogf
deleted file mode 100644
index 40045024..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/bints/wpn_bint_arm_hud.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:97288c216fac25df0723669f36f5049d0a10789807ba84b545769a23f10782ff
-size 65130
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/devices/dev_bandage/dev_bandage.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/devices/dev_bandage/dev_bandage.ogf
deleted file mode 100644
index f3917ad6..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/devices/dev_bandage/dev_bandage.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c5b87f442efd68f1b3038a2829d35c56f67f7aa6c64173c77f3b2c9bd75fffd5
-size 67939
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_alusplint.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_alusplint.ogf
deleted file mode 100644
index 1076f621..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_alusplint.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2eb51c7d532aa54fd3a3245b2d7dec22b491e64024ab5cbeb191513415b1d0f8
-size 20208
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_ibuprofen.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_ibuprofen.ogf
deleted file mode 100644
index 72199f37..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_ibuprofen.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:87b6961656fdd2a6174d9b9249ceebbbdd230c8c28f57da5d077cbc14203edc3
-size 40992
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_splint.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_splint.ogf
deleted file mode 100644
index 01bc5f6c..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_splint.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:acdbc03c89051b20520bfb2479339a22dfc7a7d794a9bc7ac0b2915dc643cde9
-size 99846
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_adrenaline.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_adrenaline.ogf
deleted file mode 100644
index 0f886fe1..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_adrenaline.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:694b09981ab4987c0a0161e52babc959aaff8ae32a4332b56e62395eabf5cacb
-size 45467
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_etg.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_etg.ogf
deleted file mode 100644
index 1da533ef..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_etg.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:afd8b21b841a751408994ea7c6927b92b45c3c3412ef3b057e2403f1f03bcbee
-size 45455
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_morphine.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_morphine.ogf
deleted file mode 100644
index ff05091a..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_morphine.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:15b55eac4046b51d1698d31cba220785b29f4b2e443f89b528ad5b392408d6a3
-size 45465
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_propital.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_propital.ogf
deleted file mode 100644
index d44cfd0f..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_propital.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7c2ee3d6ce25c7337c87bf95fd24ee36abf8b97e6442f9100a1554e409bce221
-size 45465
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_sj1.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_sj1.ogf
deleted file mode 100644
index 24d4a326..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_sj1.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4bbb5750ba8a74bd90dc14fe8356760b499590ef89e6c3638b0a91b353fcca81
-size 45455
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_sj6.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_sj6.ogf
deleted file mode 100644
index d9c58f76..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_sj6.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:763158970bfc6e4c536386295b33beff386ab5804624a2e7ddf386a5f8c5c052
-size 45455
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_zagustin.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_zagustin.ogf
deleted file mode 100644
index 73d5259c..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_stim_zagustin.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8bd729340e90a15c1110193e1a433430ee58065ab5367b86496280088133afc2
-size 45465
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_surgical_kit.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_surgical_kit.ogf
deleted file mode 100644
index 3c5426b3..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_surgical_kit.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d1f42a7988ffa1350b3a2d6ee7fe6cd6564b44fbe1abb4f3651bafc2a076cc9c
-size 155846
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_tourniquet.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_tourniquet.ogf
deleted file mode 100644
index 260dc6a1..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/eft_meds/itm_tourniquet.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:bc07c0533fb34de5561d134b77c48d058834499bb022ec4f985939bae1038a12
-size 141458
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/exo_anims/medkitexoobject.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/exo_anims/medkitexoobject.ogf
deleted file mode 100644
index f866d888..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/exo_anims/medkitexoobject.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b8c28c76f7fcc5b035fde83f01de46fc80dbf0ea5249058ae743024bee96c3aa
-size 9160
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/exo_anims/medkitexoobject.omf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/exo_anims/medkitexoobject.omf
deleted file mode 100644
index 685b5b1d..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/exo_anims/medkitexoobject.omf and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/antirad.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/antirad.ogf
deleted file mode 100644
index 88ccded4..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/antirad.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:073bdfb0b7e13b56457977545201aeeb73e30341799ee3068900df3ce774e43c
-size 239593
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/morphine_anim.omf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/morphine_anim.omf
deleted file mode 100644
index 9e7a3565..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/morphine_anim.omf and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_adrenaline_hud.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_adrenaline_hud.ogf
deleted file mode 100644
index d59c9c77..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_adrenaline_hud.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:01348f852a9aaa1f0f63427a6f191008ab77f95ab78d413e79404be2894a4eca
-size 46140
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_etg_hud.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_etg_hud.ogf
deleted file mode 100644
index 39f1ca2d..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_etg_hud.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c1b2bbc41f2907431a4af9611f8561a3954b44f5cb0556095dbf2c2609eae202
-size 46137
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_morphine_hud.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_morphine_hud.ogf
deleted file mode 100644
index f96a7c61..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_morphine_hud.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:277a1d6ba7f9064e38660ca3ff342a97d4ce942f6b1acb5700845f701c05fbd4
-size 46142
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_propital_hud.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_propital_hud.ogf
deleted file mode 100644
index 597d0380..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_propital_hud.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4ab35530783f720b6e04a7d4e85f01dc4e8caba579c64e2b44c36f4b0bf25ef9
-size 46142
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_sj1_hud.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_sj1_hud.ogf
deleted file mode 100644
index f16cd9cf..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_sj1_hud.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8f7fba4a78acdcdcf895635307447fac85528cad5c2aa233a7093256e14e2752
-size 46137
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_sj6_hud.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_sj6_hud.ogf
deleted file mode 100644
index 9ad203af..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_sj6_hud.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c036602f1d82b0bb2b61b8a05424d2c8e3f051c82236b1bbba717a33851cf243
-size 46137
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_zagustin_hud.ogf b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_zagustin_hud.ogf
deleted file mode 100644
index aa275c2a..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/meshes/dynamics/injectors/wpn_zagustin_hud.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e6a59fabb05cbb19d57bde538bcf7b3946c8d7072ad29deb7ba07229c5fadb69
-size 46142
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/aaa_descr_override.script b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/aaa_descr_override.script
deleted file mode 100644
index 1d66595f..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/aaa_descr_override.script
+++ /dev/null
@@ -1,163 +0,0 @@
-local gc = game.translate_string
-local blue_clr = utils_xml.get_color("d_blue")
-local red_clr = strformat("%c[%s,%s,%s,%s]", 255, 250, 50, 50) -- bad shit
-local white_clr = strformat("%c[%s,%s,%s,%s]", 255, 255, 255, 255)
-local teal_clr = strformat("%c[%s,%s,%s,%s]", 255, 150, 250, 240) -- for non-stat properties
-local green_clr = utils_xml.get_color("d_green")
-local def_clr = utils_xml.get_color("ui_gray_2")
-local title_clr = utils_xml.get_color("ui_gray_3")
-
-local bhs_display_numeric_at = 12
-local bhs_show_numeric_always = true
-
-local dbg = false
-function pr(...)
- if not dbg then return end
- printf(...)
-end
-
-BuildFooter = ui_item.build_desc_footer
-function ui_item.build_desc_footer(obj, sec, str)
- if zzz_player_injuries.healonelist[sec] or zzz_player_injuries.healhelplist[sec] or zzz_player_injuries.painkillerlist[sec] or zzz_player_injuries.surgerylist[sec] or zzz_player_injuries.splintlist[sec] or (zzz_player_injuries.bhs_exp_mode and zzz_player_injuries.exp_druglist[sec]) then
- printf("Changed desc for %s", sec)
- str = str or gc(ini_sys:r_string_ex(sec, "description"))
- if (not str) then return "" end
- str = str .. title_clr .. gc("desc_over_bhs") .. def_clr .. " \\n"
- local bhs_str = bhs_descr_str(obj, sec)
- str = str .. bhs_str
- str = str .. " \\n"
- else
- return BuildFooter(obj, sec, str)
- end
- return str
-end
-
-function get_local_val(path, script_name, str_to_find)
- if _G[script_name] then
-
- if not file_exists(path) then
- return
- end
-
- for line in io.lines(path) do
- if string.find(line, str_to_find) then
- _,_, loc_val = string.find(line, "start_blur_4%s*=%s*(%d+)") -- RavenAscendant carried
- if type(tonumber(loc_val)) == "number" then
- return loc_val
- end
- end
- end
- end
-end
-
-function file_exists(name)
- local f = io.open(name, "r")
- if f ~= nil then
- io.close(f)
- return true
- else
- return false
- end
-end
-
--- BHS
-function bhs_descr_str(obj, obj_sec)
-
- local _str = ""
- local blue_main = utils_xml.get_color("d_blue")
- local blue_clr = strformat("%c[%s,%s,%s,%s]", 255, 74, 134, 232)
- local yel_clr = strformat("%c[%s,%s,%s,%s]", 0, 252, 186, 3)
- local grey_clr = utils_xml.get_color("ui_gray_2")
-
- -- get string
- local function build_string(t_name, sec, color)
- local hphealed_str = ""
- local head_str = ""
- local torso_str = ""
- local arm_str = ""
- local leg_str = ""
- local healpower_str = ""
- local timeregen_str = ""
- local painkillerpower_str = ""
- local painkillerdur_str = ""
- local splint_str = ""
- local surgery_str = ""
- local restore_str = ""
- local restoretime_str = ""
- if sec and t_name[sec] then
- for limb, val in pairs(t_name[sec]) do
- if limb == "healamount" then
- hphealed_str = grey_clr .. color .. "+" .. val .. " " .. gc("st_bhs_limb_hp")
- elseif limb == "head" then
- head_str = grey_clr .. gc("st_bhs_head_str") .. color .. (val) .. "%" .. " "
- elseif limb == "torso" then
- torso_str = grey_clr .. gc("st_bhs_torso_str") .. color .. (val) .. "%" .. " "
- elseif limb == "rightarm" then
- arm_str = grey_clr .. gc("st_bhs_rightarm_str") .. color .. (val) .. "%" .. " "
- elseif limb == "rightleg" then
- leg_str = grey_clr .. gc("st_bhs_rightleg_str") .. color .. (val) .. "%" .. " "
- elseif limb == "healtimer" and zzz_player_injuries.medkits_heal_logic==2 then
- timeregen_str = grey_clr .. gc("desc_over_over") .. " " .. color .. ((val / 1000)*t_name[sec].healamount) .. " " .. gc("desc_over_sec") .. " "
- elseif limb == "healtimer" and zzz_player_injuries.medkits_heal_logic==1 then
- timeregen_str = grey_clr .. gc("desc_over_over") .. " " .. color .. ((val / 1000)*t_name[sec].head) .. " " .. gc("desc_over_sec") .. " "
- elseif limb == "healpower" then
- if val == 0 then text=gc("st_bhs_currhp")
- else text = val*100 .. "%" end
- healpower_str = grey_clr .. gc("st_bhs_upto") .. " " .. color .. text .. " max. "
- elseif limb == "painkillerpower" then
- painkillerpower_str = grey_clr .. gc("st_bhs_painkillerlvl") .. " " .. color .. val
- elseif limb == "painkillerduration" then
- painkillerdur_str = grey_clr .. gc("st_bhs_for") .. " " .. color .. (val / 1000) .. " " .. gc("desc_over_sec")
- elseif limb == "splintamount" then
- splint_str = grey_clr .. gc("st_bhs_splints") .. " "
- elseif limb == "surgeryamount" then
- surgery_str = grey_clr .. gc("st_bhs_surgerys") .. " "
- elseif limb == "restorepower" then
- restore_str = grey_clr .. color .. (val*ini_sys:r_float_ex(sec, "boost_time"))*100 .. "%" .. " " .. gc("st_bhs_main_hp")
- elseif limb == "restoretime" then
- restoretime_str = grey_clr .. gc("desc_over_over") .. " " .. color .. val .. " " .. gc("desc_over_sec") .. " "
- end
- end
- end
- --local main_string = head_str .. torso_str .. arm_str .. leg_str .. (timeregen_str ~= "" and (" " .. timeregen_str) or "")
- local main_string = (hphealed_str ~= "" and (" " .. hphealed_str) or "") .. (timeregen_str ~= "" and (" " .. timeregen_str) or "") .. (healpower_str ~= "" and (" " .. healpower_str) or "") .. (head_str ~= "" and (" " .. head_str) or "") .. (torso_str ~= "" and (" " .. torso_str) or "") .. (arm_str ~= "" and (" " .. arm_str) or "") .. (leg_str ~= "" and (" " .. leg_str) or "") .. (painkillerpower_str ~= "" and (" " .. painkillerpower_str) or "") .. (painkillerdur_str ~= "" and (" " .. painkillerdur_str) or "") .. (surgery_str ~= "" and (" " .. surgery_str) or "") .. (splint_str ~= "" and (" " .. splint_str) or "") .. (restore_str ~= "" and (" " .. restore_str) or "") .. (restoretime_str ~= "" and (" " .. restoretime_str) or "")
--- printf("main_string: [%s]", main_string)
- return main_string
- end
-
- local medkits_pre = " " .. blue_main .. gc("st_bhs_mihail_krug") .. " " .. blue_clr .. " " .. gc("st_bhs_heals") .. " "
- local medkits_str = build_string(zzz_player_injuries.healonelist, obj_sec, blue_clr)
- local healhelp_pre = " " .. blue_main .. gc("st_bhs_mihail_krug") .. " " .. blue_clr .. " " .. gc("st_bhs_heals") .. " "
- local healhelp_str = build_string(zzz_player_injuries.healhelplist, obj_sec, blue_clr)
- local surgerys_pre = " " .. blue_main .. gc("st_bhs_mihail_krug") .. " " .. blue_clr .. " " .. gc("st_bhs_surgery") .. " "
- local surgerys_str = build_string(zzz_player_injuries.surgerylist, obj_sec, blue_clr)
- local splints_pre = " " .. blue_main .. gc("st_bhs_mihail_krug") .. " " .. blue_clr .. " " .. gc("st_bhs_splint") .. " "
- local splints_str = build_string(zzz_player_injuries.splintlist, obj_sec, blue_clr)
- local painkillers_pre = " " .. yel_clr .. gc("st_bhs_mihail_krug") .. " " .. yel_clr .. " " .. gc("st_bhs_painkiller") .. " "
- local painkillers_str = build_string(zzz_player_injuries.painkillerlist, obj_sec, yel_clr)
- local bhs_exp_pre = " " .. green_clr .. gc("st_bhs_mihail_krug") .. " " .. green_clr .. " " .. gc("st_bhs_restore") .. " "
- local bhs_exp_str = build_string(zzz_player_injuries.exp_druglist, obj_sec, green_clr)
-
--- printf("obj_sec: [ %s ] || medkits_str: [ %s ] || healhelp_str: [ %s ]", obj_sec, medkits_str ~= "" and true or false, healhelp_str ~= "" and true or false)
- if medkits_str ~= "" and painkillers_str ~= "" then
- _str = medkits_pre .. medkits_str .. "\\n" .. painkillers_pre .. painkillers_str .. grey_clr .. "\\n"
- elseif healhelp_str ~= "" and painkillers_str ~= "" then
- _str = healhelp_pre .. healhelp_str .. "\\n" .. painkillers_pre .. painkillers_str .. grey_clr .. "\\n"
- elseif medkits_str ~= "" and bhs_exp_str ~= "" and zzz_player_injuries.bhs_exp_mode then
- _str = medkits_pre .. medkits_str .. "\\n" .. bhs_exp_pre .. bhs_exp_str .. grey_clr .. "\\n"
- elseif medkits_str ~= "" then
- _str = medkits_pre .. medkits_str .. grey_clr .. "\\n"
- elseif healhelp_str ~= "" then
- _str = healhelp_pre .. healhelp_str .. grey_clr .. "\\n"
- elseif splints_str ~= "" then
- _str = splints_pre .. splints_str .. grey_clr .. "\\n"
- elseif painkillers_str ~= "" then
- _str = painkillers_pre .. painkillers_str .. grey_clr .. "\\n"
- elseif surgerys_str ~= "" then
- _str = surgerys_pre .. surgerys_str .. grey_clr .. "\\n"
- elseif bhs_exp_str ~= "" and zzz_player_injuries.bhs_exp_mode then
- _str = bhs_exp_pre .. bhs_exp_str .. grey_clr .. "\\n"
- end
-
- return _str
-end
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/eftmeds_util.script b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/eftmeds_util.script
deleted file mode 100644
index 2a1ddf91..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/eftmeds_util.script
+++ /dev/null
@@ -1,196 +0,0 @@
-local loot_coefficient = 1.0
-local safe_uninstall = false
-
-local itemlist={}
-itemlist.akvatab={
- novice=0,
- trainee=0,
- experienced=0,
- professional=0,
- veteran=0,
- expert=0,
- master=0,
- legend=0}
-itemlist.morphine={
- novice=0,
- trainee=0,
- experienced=0,
- professional=0,
- veteran=0,
- expert=0,
- master=0,
- legend=0}
-itemlist.adrenalin={
- novice=0,
- trainee=0,
- experienced=0,
- professional=0,
- veteran=0,
- expert=0,
- master=0,
- legend=0}
-itemlist.jgut={
- novice=0,
- trainee=0,
- experienced=0,
- professional=0,
- veteran=0,
- expert=0,
- master=0,
- legend=0}
-itemlist.splint={
- novice=0.03,
- trainee=0.05,
- experienced=0.03,
- professional=0,
- veteran=0,
- expert=0,
- master=0,
- legend=0}
-itemlist.alu_splint={
- novice=0,
- trainee=0,
- experienced=0.02,
- professional=0.03,
- veteran=0.04,
- expert=0.05,
- master=0.06,
- legend=0.07}
-itemlist.analgin={
- novice=0.1,
- trainee=0.1,
- experienced=0.08,
- professional=0.07,
- veteran=0.07,
- expert=0.06,
- master=0.05,
- legend=0.05}
-itemlist.cms={
- novice=0,
- trainee=0,
- experienced=0,
- professional=0.03,
- veteran=0.04,
- expert=0.05,
- master=0.06,
- legend=0.07}
-itemlist.sj1={
- novice=0.00,
- trainee=0.00,
- experienced=0.00,
- professional=0.03,
- veteran=0.05,
- expert=0.07,
- master=0.08,
- legend=0.1}
-itemlist.sj6={
- novice=0.00,
- trainee=0.00,
- experienced=0.00,
- professional=0.00,
- veteran=0.02,
- expert=0.03,
- master=0.06,
- legend=0.08}
-itemlist.etg={
- novice=0.00,
- trainee=0.00,
- experienced=0.00,
- professional=0.00,
- veteran=0.02,
- expert=0.03,
- master=0.06,
- legend=0.08}
-itemlist.propital={
- novice=0.00,
- trainee=0.00,
- experienced=0.00,
- professional=0.03,
- veteran=0.05,
- expert=0.07,
- master=0.08,
- legend=0.1}
-itemlist.zagustin={
- novice=0.00,
- trainee=0.00,
- experienced=0.00,
- professional=0.03,
- veteran=0.05,
- expert=0.07,
- master=0.08,
- legend=0.1}
-itemlist.bandage_army={
- novice=0.00,
- trainee=0.00,
- experienced=0.03,
- professional=0.04,
- veteran=0.05,
- expert=0.06,
- master=0.07,
- legend=0.08}
-itemlist.surginst={
- novice=0.03,
- trainee=0.05,
- experienced=0.05,
- professional=0.03,
- veteran=0.00,
- expert=0.00,
- master=0.00,
- legend=0.00}
-
-function values(t)
- local i = 0
- return function() i = i + 1; return t[i] end
-end
-
-function delete_addon_items()
- for i = 1, 65534 do
- local obj = alife_object(i)
- if obj then
- for itemname in pairs(itemlist) do
- if string.match(obj:name(), tostring(itemname)) then
- printf("Deleting %s, Itemname: %s", obj:name(), itemname)
- alife_release(obj)
- break
- end
- end
- end
- end
-end
-
-function on_option_change()
- loot_coefficient = zzz_player_injuries_mcm.get_config("loot_coefficient")
- safe_uninstall = zzz_player_injuries_mcm.get_config("safe_uninstall")
-
- if safe_uninstall and level.present() then
- delete_addon_items()
- zzz_player_injuries_mcm.set_config("safe_uninstall", false)
- end
-end
-
-function actor_on_first_update()
- on_option_change()
-end
-
-local orig_spawn_cosmetics = death_manager.spawn_cosmetics
-function death_manager.spawn_cosmetics(npc, npc_id, npc_comm, npc_rank, visual, rand_condition)
- orig_spawn_cosmetics(npc, npc_id, npc_comm, npc_rank, visual, rand_condition)
- printf("BHSRO Possible spawns:")
- for objname, rank in pairs(itemlist) do
- local max_uses = SYS_GetParam(2, objname, "max_uses", 1)
- local do_uses = math.random(max_uses)
- local chance = (itemlist[objname][npc_rank] or 0.05) * loot_coefficient
- if (chance>0) then
- printf("Object: %s Chance: %s%",objname, itemlist[objname][npc_rank]*100)
- end
- if math.random() < chance then
- printf("Spawned %s with %s uses",objname,do_uses)
- alife_create_item(objname, npc, { ["uses"] = do_uses })
- end
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("on_option_change", on_option_change)
- RegisterScriptCallback("actor_on_first_update", actor_on_first_update)
-end
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/enhanced_animations.script b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/enhanced_animations.script
deleted file mode 100644
index 6442262d..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/enhanced_animations.script
+++ /dev/null
@@ -1,379 +0,0 @@
---[[
---------------------PLEASE DO NOT DELETE THIS SECTION---------------------------
-================================================================================
-Script(enhanced_animations) original:
-\\Author : thales100
-================================================================================
-
-Animations authors: LilGABE,denis2000,ValeroK,STRIFER,Feel_Fried
-
-================================================================================
-Script(enhanced_animations) reworked:
-Adaptation and crooked rework for Anomaly =): Feel_Fried
-
-Engine functions consultants: Amomawy devs - Lucy, tdef, Tronex
-
-Monkey patches and mask effect switcher implementation: RavenAscendant
-
-Main shitcode critic: Igigog
-================================================================================
-
-Addon main page:
-
-https://www.moddb.com/mods/stalker-anomaly/addons/food-drug-and-drinks-animations-reuploaded
-
-================================================================================
-
-All your base are belong to us! (вЊђв– _в– )
-]]--
-local ini_eff = {}
-enable_animations = true
-mutant_loot_mod = true
-local ea_debug = false
-ini_eff = ini_file("items\\items\\animations_settings.ltx")
-local active_slot,anim_exist_tm,wpn,item_usage_snd,monster_usage_snd,item,anim_use_time,obj_m,used_monster = nil
-used_item,ea_flag,fake_monster,det_active,anim_section = nil
-
-function on_game_start()
- RegisterScriptCallback("on_game_load",on_game_load)
- RegisterScriptCallback("on_option_change", loadsettings)
- if not ui_mcm then
- RegisterScriptCallback("on_key_release", on_key_release)
- end
-end
-
-function on_game_load()
- activate()
-end
-
---< Addon control
-function on_key_release(key)
- local bind = dik_to_bind(key)
- if (bind == key_bindings.kCAM_ZOOM_OUT) then
- enable_animations = not enable_animations
- end
-end
-
-function loadsettings()
- if ui_mcm then -- here we test to make sure ui_mcm exists before trying to call it's get function.
- enable_animations = ui_mcm.get("EA_settings/enable_animations")
- mutant_loot_mod = ui_mcm.get("EA_settings/mutant_loot")
- ea_debug = ui_mcm.get("EA_settings/ea_debug")
- if enable_animations == false then
- mutant_loot_mod = false
- ui_mcm.set("EA_settings/mutant_loot", false)
- end
- else
- mutant_loot_mod = ini_eff:r_bool_ex("anim_settings", "mutant_loot_mod")
- enable_animations = ui_options.get("video/player/animations")
- end
-end
-
-function activate()
- ini_eff = ini_file("items\\items\\animations_settings.ltx")
- RegisterScriptCallback("monster_on_actor_use_callback",monster_on_actor_use)
- RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
-end
--- Addon control >--
-
---< Animations engine
-function anim_prepare()
- game.only_allow_movekeys(true)
- hide_det()
- active_slot = db.actor:active_slot()
- anim_exist_tm = nil
- db.actor:restore_weapon()
- db.actor:activate_slot(0)
- RegisterScriptCallback("actor_on_update", actor_on_update)
-end
-
-function use_item(obj)
- item = obj:section()
- local outfit = db.actor:item_in_slot(7)
- outfit = outfit and outfit:section() or item
- local hud = SYS_GetParam(0, outfit, "player_hud_section", "")
- if hud:find("exo$") then
- item = item .. "_exo"
- if not ini_eff:r_string_ex(item, "snd") then
- -- Revert back
- item = obj:section()
- end
- end
- obj_m = obj
- used_item = item
- hide_hud_inventory()
- anim_section = ini_eff:r_string_ex(item, "anm")
- mask_hud_switcher()
- anim_prepare()
-end
-
-function monster_on_actor_use(obj)
- if (not mutant_loot_mod) or (not enable_animations) then
- used_monster = nil
- anim_exist_tm = nil
- return
- end
- wpn = db.actor:active_item()
- if wpn then
- wpn = wpn:clsid() == clsid.wpn_knife_s and wpn:section() or "wpn_knife3"
- wpn = string.gsub(wpn,"-","_")
- end
- item_knife.degradate()
- used_monster = obj
- level.disable_input()
- anim_prepare()
- recalc_actor_campos()
-end
-
-function start_anim(anim_section_hud)
- UnregisterScriptCallback("actor_on_update", actor_on_update)
- fov_anim_manager.change_fov(0.45)
- local speed = ini_eff:r_float_ex(used_item or "nothing", "speed") or 1
- if ea_debug then printf("speed is = "..speed) end
- game.play_hud_motion(2, anim_section_hud, "anm_ea_show", false, speed)
- local hud_anm = used_item and ini_eff:r_string_ex(used_item, "hud_anm")
- if hud_anm then
- game.play_hud_anm(hud_anm, 0, 1, 1, false)
- end
- hud_anm = nil
-end
-
-function anim_manager_item(anim_section_hud)
- item_usage_snd = sound_object(ini_eff:r_string_ex(used_item, "snd"))
- item_usage_snd:play(db.actor, 0, sound_object.s2d)
- level.add_cam_effector(ini_eff:r_string_ex(used_item, "cam"), 8555, false, "")
- tmr = ini_eff:r_float_ex(used_item, "tm")
- anim_exist_tm = tmr*0.001
- anim_use_time = anim_exist_tm*0.367
- CreateTimeEvent("ea_object_eater", "eat_my_obj", anim_use_time, eat_my_obj)
- CreateTimeEvent("ea_slot_returner", "call_my_slot_back", (anim_exist_tm + 0.1), call_my_slot_back)
- if ciga_effects then
- if ini_eff:line_exist(used_item, "smoke") then ciga_effects.ciga_start(used_item) end
- end
- alife_create_item("items_anm_dummy",db.actor)
- CreateTimeEvent("ea_anim_stoper", "stop_my_item_anim", anim_exist_tm, stop_my_item_anim)
- ea_callbacks.EA_SendScriptCallback("ea_on_item_use",used_item,anim_exist_tm)
-end
-
-function anim_manager_monster()
- monster_usage_snd = sound_object(ini_eff:r_string_ex("item_ea_harv_wpn_knife", "anim_sound"))
- monster_usage_snd:play(db.actor, 0, sound_object.s2d)
- level.add_cam_effector("itemuse_anm_effects\\harvest_skin_use.anm", 8558, false, "")
- level.add_cam_effector("itemuse_anm_effects\\test.anm", 8559, false, "")
- tmr = ini_eff:r_float_ex("item_ea_harv_wpn_knife", "anim_length")
- anim_exist_tm = tmr*0.001
- CreateTimeEvent("ea_slot_returner", "call_my_slot_back", (anim_exist_tm + 0.5), call_my_slot_back)
- CreateTimeEvent("ea_blood_fx", "blood_fx", (1), blood_fx)
- CreateTimeEvent("ea_blood_fx2", "blood_fx2", (1.6), blood_fx)
- CreateTimeEvent("ea_blood_fx3", "blood_fx3", (2.1), blood_fx)
- CreateTimeEvent("ea_blood_fx4", "blood_fx4", (2.2), blood_fx)
- CreateTimeEvent("ea_anim_stoper", "stop_my_monster_anim", anim_exist_tm, stop_my_monster_anim)
-end
-
-local failure_timer = 0
-local fdda_error_snd = sound_object(ini_eff:r_string_ex("fdda_error_snd", "snd"))
-function actor_on_update()
- failure_timer = failure_timer + (device().time_delta/17)
- if ea_debug then printf("update = "..failure_timer) end
- if (db.actor:active_slot() ~= 0 or db.actor:active_detector()) and (failure_timer < 100) then
- return
- elseif ea_debug and (failure_timer >= 100) then
- fdda_error_snd:play(db.actor, 0, sound_object.s2d)
- printf("hide weapons for anim failed")
- printf(used_item or (used_monster and used_monster:section()) or "anim find ERROR")
- printf(anim_section or "NO ANIM SECTION FOUND")
- level.enable_input()
- game.only_allow_movekeys(false)
- actor_menu.set_msg(1, "PLEASE EXIT THE GAME AND SEND LOG FILE TO FEEL_FRIED",5)
- end
- local anim_section_hud = nil
- if used_monster then
- anim_section_hud = "item_ea_harv_" .. ( wpn or "wpn_knife3" ) .. "_hud"
- start_anim(anim_section_hud)
- anim_manager_monster()
- failure_timer = 0
- return
- end
- failure_timer = 0
- anim_section_hud = anim_section .. "_hud"
- anim_section = nil
- start_anim(anim_section_hud)
- anim_manager_item(anim_section_hud)
-end
--- Animations engine >--
-
---< Monkey patches
---preventing default Anomaly anims
-local originalPIF = actor_effects.play_item_fx
-function actor_effects.play_item_fx(item)
- if ini_eff:r_string_ex(item, "snd") and enable_animations or ini_eff:r_bool_ex("skip_items", item) then return end
- if skip_functor(item) then return end
- originalPIF(item)
-end
-
-local originalUW = actor_effects.use_weapon
-function actor_effects.use_weapon(f)
- if f == 1 then
- CreateTimeEvent("ea_def_use", "def_use_end", 0.5, def_use_end)
- end
- if f == 0 then
- hide_hud_inventory()
- game.only_allow_movekeys(true)
- end
- originalUW(f)
-end
-
---delaying item use
-local originalAOIBU = itms_manager.actor_on_item_before_use
-function itms_manager.actor_on_item_before_use(obj,flags)
- originalAOIBU(obj,flags)
- local item = obj:section()
- local outfit = db.actor:item_in_slot(7)
- outfit = outfit and outfit:section() or item
- local hud = SYS_GetParam(0, outfit, "player_hud_section", "")
- printf("hud section is %s", hud)
- if hud:find("exo$") then
- item = item .. "_exo"
- if not ini_eff:r_string_ex(item, "snd") then
- -- Revert back
- printf("hud section %s is exo but no animation %s, revert back", hud, item)
- item = obj:section()
- else
- printf("hud section %s is exo and found animation %s", hud, item)
- end
- else
- printf("hud section %s is not exo", hud)
- end
- if IsMoveState("mcClimb") then
- actor_menu.set_msg(1, game.translate_string("st_EA_ladder_item_not_allowed"),3)
- flags.ret_value = false
- return
- end
- if ini_eff:r_string_ex(item, "snd") and enable_animations and flags.ret_value then
- use_item(obj)
- flags.ret_value = false
- return
- end
- return
-end
-
---delaying mutant loot dialog
-local originalUMLS = ui_mutant_loot.start
-function ui_mutant_loot.start(obj, for_bug1, for_bug2)
- if not ea_flag and enable_animations and mutant_loot_mod then return end
- originalUMLS(obj, for_bug1, for_bug2)
-end
--- Monkey patches >--
-
---< Time Events
-function call_my_slot_back()
- game.only_allow_movekeys(false)
- if take_item_anim and fake_monster then
- return true
- end
- db.actor:activate_slot(active_slot or 0)
- if det_active then det_active:switch_state(1) end
- return true
-end
-
-local bone_list = {
- [1] = "bip01_spine1",
- [2] = "bip01_spine2",
- [3] = "bip01_spine",
- [4] = "bip01_pelvis",
- [5] = "bip01_head",
-}
-function blood_fx()
- if not used_monster or used_monster:id() == 65535 then return true end
- local fx_pos = used_monster:bone_position(bone_list[math.random(1,5)])
- fx_pos.y = fx_pos.y + 0.1
- local blood_trace = vector():set(0,-1,0)
- wallmarks_manager():place_skeleton(used_monster, "bloody_marks", fx_pos, blood_trace, 0.2,-1)
- wallmarks_manager():place(blood_trace, fx_pos, 15, 0.3, "bloody_marks", used_monster,-1)
- local hit_fx = particles_object("hit_fx\\hit_flesh_01")
- hit_fx:play_at_pos(fx_pos)
- local hit_fx2 = particles_object("hit_fx\\hit_flesh_02a")
- hit_fx2:play_at_pos(fx_pos)
- local hit_fx3 = particles_object("hit_fx\\hit_knife_flesh_00")
- hit_fx3:play_at_pos(fx_pos)
- return true
-end
-
---eating fake item to stop default items sound and delayed item using
-function eat_my_obj()
- if obj_m then
- db.actor:eat(obj_m)
- end
- db.actor:eat(db.actor:object("items_anm_dummy"))
- return true
-end
-
-function stop_my_item_anim()
- ea_callbacks.EA_SendScriptCallback("ea_on_item_anim_stop",used_item)
- ea_restore_actor()
- mask_hud_switcher()
- used_item = nil
- obj_m = nil
- return true
-end
-
-function stop_my_monster_anim()
- ea_restore_actor()
- if used_monster:id() == 65535 or ( not take_item_anim ) then
- used_monster = nil
- return true
- end
- fake_monster = used_monster
- used_monster = nil
- ea_flag = true
- ui_mutant_loot.start(fake_monster, fake_monster:id(), fake_monster:section(), fake_monster:clsid())
- ea_flag = nil
- if not ui_mutant_loot.GUI:Reset(fake_monster, fake_monster:id(), fake_monster:section(), fake_monster:clsid()) then
- fake_monster = nil
- end
- return true
-end
-
-function def_use_end()
- game.only_allow_movekeys(false)
- return true
-end
--- Time Events >--
-
---< Additional animations and effects
-function mask_hud_switcher()
- if (not ini_eff:r_bool_ex(used_item, "helm")) and ui_options.get("video/player/mask_hud") then
- actor_effects.switch_helm() --raven
- actor_effects.Update_Mask(db.actor)
- end
-end
-
-function ea_restore_actor()
- db.actor:hide_weapon()
- fov_anim_manager.restore_fov()
- level.enable_input()
-end
-
---holster item in device slot
-function hide_det()
- det_active = db.actor:active_detector() or nil
- if det_active then det_active:switch_state(2) end
-end
-
-function actor_on_first_update()
- if db.actor:object("items_anm_dummy") then alife_release(db.actor:object("items_anm_dummy")) end
- loadsettings()
-end
-
---addaptive camera for mutant skinning
-function recalc_actor_campos()
- local pm = used_monster:bone_position('bip01_spine1')
- pm.y = pm.y + 0.8
- db.actor:actor_look_at_point(pm)
-end
-
--- mutant loot options check
-function skip_functor(item)
- return mutant_loot_mod and ini_eff:r_bool_ex("skip_mutant", item)
-end
--- Additional animations and effects >--
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/enhanced_animations_mcm.script b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/enhanced_animations_mcm.script
deleted file mode 100644
index e062afe3..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/enhanced_animations_mcm.script
+++ /dev/null
@@ -1,16 +0,0 @@
-
-function on_mcm_load()
- op = { id= "EA_settings" ,sh=true ,gr={
- { id= "friendlyfire" ,type= "slide" ,link= "ui_options_slider_disguise" ,text= "FDDA" ,size= {512,50} ,spacing= 20 },
- {id = "enable_animations", type = "check", val = 1, def = true},
- --{id = "enable_backpack_addon", type = "check", val = 1, def = false},
- --{id = "enable_crouch_toggle_backpack_addon", type = "check", val = 1, def = false},
- {id = "mutant_loot", type = "check", val = 1, def = true},
- --{id = "take_item_anim", type = "check", val = 1, def = false},
- --{id = "take_dist", type = "track" , val = 2, min = 0 , max = 1.0, def = 0.12, step = 0.01},
- {id = "ea_debug", type = "check", val = 1, def = false},
- }
- }
-
- return op
-end
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/gamma_artihealing_ilrathCXV.script b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/gamma_artihealing_ilrathCXV.script
deleted file mode 100644
index 6ef6ff8b..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/gamma_artihealing_ilrathCXV.script
+++ /dev/null
@@ -1,197 +0,0 @@
--- CREDIT FOR THE SCRIPT GOES TO ilrathCXV. SOME EDITS WERE MADE TO WORK WITH BHS REALISTIC OVERHAUL MOD AND TO ACCEPT MCM
-
-if perk_based_artefacts then end
-if zzz_player_injuries then end
-
-local artefact_healing = zzz_player_injuries_mcm.get_config("ARTEFACT_HEALING")
-local artefact_healing_power = zzz_player_injuries_mcm.get_config("ARTEFACT_HEALING_POWER")
-
--- This is artifacts speeding up body part hp healing. The higher the value the faster the healing. Stackable.
-local modifiedregen = 0
-artihealhelp = {}
-local math_floor = math.floor
-local shouldUpdate = false
-local sin_mult
-local has_checked = false
-local af_lucifer_check = perk_based_artefacts.artefact_props.af_lucifer
--- Values are half of their Health Regen stated on their tooltip for balance for now
--- GAMMA ARTEFACTS. IF YOU DONT USE GAMMA THEN CHANGE THE NAMES AND TIMES HERE
-artihealhelp.af_oasis_heart =1.5
-artihealhelp.af_oasis_heart_af_iam =1.5
-artihealhelp.af_oasis_heart_af_aac =1.5
-artihealhelp.af_oasis_heart_af_aam =1.5
-artihealhelp.af_fuzz_kolobok =1.5
-artihealhelp.af_fuzz_kolobok_af_iam =1.5
-artihealhelp.af_fuzz_kolobok_af_aac =1.5
-artihealhelp.af_fuzz_kolobok_af_aam =1.5
-artihealhelp.af_glass =3
-artihealhelp.af_glass_af_iam =3
-artihealhelp.af_glass_af_aac =3
-artihealhelp.af_glass_af_aam =3
-artihealhelp.af_soul =1
-artihealhelp.af_soul_af_iam =1
-artihealhelp.af_soul_af_aac =1
-artihealhelp.af_soul_af_aam =1
-artihealhelp.af_ah_r1 =1
-artihealhelp.af_ah_r2 =1
-artihealhelp.af_ah_r3 =1
-artihealhelp.af_ah_r4 =1
-artihealhelp.af_ah_r5 =1
-
-artihealhelp.af_signet =0
-artihealhelp.af_ear =0
-artihealhelp.af_chelust =0.25
-artihealhelp.af_sun =0
-artihealhelp.af_lucifer =1
-
-artihealhelp.hide_bloodsucker =1
-
-local indoor_levels = {
- jupiter_underground = true,
- l03u_agr_underground = true,
- l04u_labx18 = true,
- l08u_brainlab = true,
- l10u_bunker = true,
- l12u_control_monolith = true,
- l12u_sarcofag = true,
- l13u_warlab = true,
- labx8 = true
-}
-
-local get_weather_manager = level_weathers.get_weather_manager
-local function get_current_weather()
- return get_weather_manager():get_curr_weather()
-end
-
-function check_chain_status()
- sin_mult = 1
- if db.actor:character_community() == actor_greh then
- artihealhelp.sin_mult = 4
- end
- artihealhelp.af_chelust = artihealhelp.af_chelust * sin_mult
-end
-
-local time_g = 0
-local timer_regen = time_global()
-local arti_status_check_timer = 0
-local arti_status_check_interval = 5000 -- update every 5000ms/5sec
-
-function actor_on_update()
- time_g = time_global()
- if time_g >= arti_status_check_timer then
- arti_status_check_timer = time_g + arti_status_check_interval
-
- -- Signet Checking
- local get_nearby_campfire = bind_campfire.get_nearby_campfire
- local nearby_camp = get_nearby_campfire(5, true)
-
- if nearby_camp and nearby_camp:is_on() and artihealhelp.af_signet == 0.8 then
- -- do nothing
- elseif nearby_camp and nearby_camp:is_on() and artihealhelp.af_signet == 0 then
- artihealhelp.af_signet = 0.8
- shouldUpdate = true
- elseif artihealhelp.af_signet == 0.8 then
- artihealhelp.af_signet = 0
- shouldUpdate = true
- end
-
- -- Sun Checking
- local actor_level = level.name()
- local outside = (not indoor_levels[actor_level])
- if outside then
- local hours = level.get_time_hours()
- local daytime = (hours <= 21) and (hours >= 5)
- local clearWeather = (get_current_weather() == "clear") or 0
- if daytime and clearWeather and artihealhelp.af_sun == 0.58 then
- -- do nothing
- elseif daytime and clearWeather and artihealhelp.af_sun == 0 then
- artihealhelp.af_sun = 0.58
- shouldUpdate = true
- elseif artihealhelp.af_sun == 0.58 then
- artihealhelp.af_sun = 0
- shouldUpdate = true
- end
- end
-
- if not shouldUpdate then return end
-
- if shouldUpdate then
- artihealing_calculations()
- shouldUpdate = false
- end
- end
-
- if (modifiedregen > 0) and (time_g-timer_regen>modifiedregen) then
- shouldUpdate = true
- if time_g-timer_regen>modifiedregen then
- zzz_player_injuries.ArtiHeal(0)
- timer_regen=time_global()
- end
- end
-end
-
-
-function artihealing_calculations()
-
- shouldUpdate = true
-
- local val = 0
- db.actor:iterate_belt(
- function (owner, obj)
- local slotitemname = obj:section()
- if artihealhelp[slotitemname] then
-
- -- Heart Checking
- if slotitemname == af_ear then
- local actor_health = round_100(actor.health)
- local healthThreshold = perk_based_artefacts.healthThreshold
- if actor_health < health_threshold then
- artihealhelp.af_ear = 0.8
- else
- artihealhelp.af_ear = 0
- end
- end
-
- -- Lucifer Equip Checking
- if slotitemname == af_lucifer and not has_checked then
- artihealhelp.af_lucifer = 3
- has_checked = true
- end
-
- slotCondition = obj:condition()
- val = val + (artihealhelp[slotitemname] * slotCondition)
- end
- end
- )
-
- -- if player has Lucifer but not equipped...
- if not has_checked and af_lucifer_check:check_lucifer() then
- artihealhelp.af_lucifer = 1
- val = val + (artihealhelp.af_lucifer * af_lucifer_check.condition)
- end
-
- if val == 0 then
- modifiedregen = 0
- printf('Zeroed')
- else
- if modifiedregen == 0 then
- timer_regen=time_global()
- end
- modifiedregen = math.floor(150000 / val)/artefact_healing_power
- printf('Limb regeneration set')
- end
-
-
- printf('Limb regeneration: %s', modifiedregen)
-end
-
-function on_game_start()
- if artefact_healing and perk_based_artefacts then
- RegisterScriptCallback("actor_on_first_update", check_chain_status)
- RegisterScriptCallback("actor_on_first_update", artihealing_calculations) -- TEST
- RegisterScriptCallback("actor_on_update", actor_on_update)
- RegisterScriptCallback("actor_item_to_belt", artihealing_calculations)
- --RegisterScriptCallback("actor_item_to_ruck", artihealing_calculations)
- --RegisterScriptCallback("actor_on_item_use", artihealing_calculations)
- end
-end
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/limb_healing_campfire_ilrathCXV.script b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/limb_healing_campfire_ilrathCXV.script
deleted file mode 100644
index 78299cbd..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/limb_healing_campfire_ilrathCXV.script
+++ /dev/null
@@ -1,42 +0,0 @@
--- CREDIT FOR THE SCRIPT GOES TO ilrathCXV. SOME EDITS WERE MADE TO WORK WITH BHS REALISTIC OVERHAUL MOD AND TO ACCEPT MCM
-
-if zzz_player_injuries then end
-
-local time_g = 0
-local timer_regen = time_global()
-local campfire_healing = zzz_player_injuries_mcm.get_config("CAMPFIRE_HEALING")
-local cozy_limb_heal_interval = (zzz_player_injuries_mcm.get_config("limb_heal_interval") * 1000) or 2000 -- default from Frost: update every 2000ms/2sec
-local start_tracking = false
-
-function get_nearby_lit_campfire(dist)
- local pos = db.actor:position()
- for id,binder in pairs(bind_campfire.campfires_all) do
- if (binder and binder.campfire and binder.campfire:is_on()) then
- if (pos:distance_to_sqr(binder.object:position()) <= dist) then
- return true
- end
- end
- end
- return false
-end
-
-function actor_on_update()
- time_g = time_global()
-
- if get_nearby_lit_campfire(10.0) then
- if not start_tracking then
- timer_regen = time_global()
- start_tracking = true
- elseif ((time_g - timer_regen) > cozy_limb_heal_interval) then
- zzz_player_injuries.ArtiHeal(0)
- timer_regen=time_global()
- start_tracking = false
- end
- end
-end
-
-function on_game_start()
- if campfire_healing then
- RegisterScriptCallback("actor_on_update",actor_on_update)
- end
-end
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/mp_check_callback.script b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/mp_check_callback.script
deleted file mode 100644
index a796788a..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/mp_check_callback.script
+++ /dev/null
@@ -1,8 +0,0 @@
-function actor_on_hit_callback(obj, amount, local_direction, who, bone_index)
- printf("! CALLBACK CHECK >> on hit callback fired")
- printf("! Damage: %s",amount)
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_hit_callback", actor_on_hit_callback)
-end
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/psy_damage_eftmeds.script b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/psy_damage_eftmeds.script
deleted file mode 100644
index 91d1c229..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/psy_damage_eftmeds.script
+++ /dev/null
@@ -1,138 +0,0 @@
-if zzz_player_injuries.painkillerlist.painkillerpower then end
-
-local psy_mechanics = zzz_player_injuries_mcm.get_config("PSY_MECHANICS")
-
-local c_psy_health_regen_per_seconds = 0.0005 --Psy health regeneration per in-game seconds
-
-local previous_time = nil
-
-local init=false
-
-
-psylist={}
-psylist.lasttimestamp=time_global()
-psylist.psyduration=0
-psylist.psydebuff=0
-psylist.countdown_increments=0
-psylist.sj6={psydebuff=0.6,psyduration=1500000,countdown_increments=300}
-psylist.sj1={psydebuff=0.85,psyduration=1500000,countdown_increments=300}
-local oldhealth=0
-
-
-local function SavePsyStatus()
- utils_obj.save_var(db.actor,"psylist.countdown_increments",psylist.countdown_increments)
- utils_obj.save_var(db.actor,"psylist.psyduration",psylist.psyduration)
- utils_obj.save_var(db.actor,"psylist.psydebuff",psylist.psydebuff)
-
-end
-local function LoadPsyStatus()
- psylist.countdown_increments=utils_obj.load_var(db.actor,"psylist.countdown_increments",psylist.countdown_increments) or time_global()
- psylist.psyduration=utils_obj.load_var(db.actor,"psylist.psyduration",psylist.psyduration) or 0
- psylist.psydebuff=utils_obj.load_var(db.actor,"psylist.psydebuff",psylist.psydebuff) or 0
-end
-
-local function actor_on_item_use(obj,objname)
- --printf("PSY_MECHANICS: %s",psy_mechanics)
- --printf("arszi_psy: %s",arszi_psy)
- if (obj and objname) then
- local curhealth=arszi_psy.get_psy_health()
- --printf("objname: %s",objname)
- --printf("curhealth: %s",curhealth)
- if (objname == "drug_anabiotic") then
- arszi_psy.set_psy_health(1)
- end
- if psylist[objname] then
- if psylist.psydebuff > psylist[objname].psydebuff or psylist.psydebuff == 0 then
- psylist.psydebuff = psylist[objname].psydebuff
- psylist.countdown_increments=psylist[objname].countdown_increments
- --printf("Original duration: %s",psylist[objname].psyduration)
- psylist.psyduration = psylist[objname].psyduration/psylist.countdown_increments
- --printf("Countdowns set. New duration: %s",psylist.psyduration)
- psylist.lasttimestamp = time_global()
- --printf("Effects are higher set")
- elseif psylist.psydebuff == psylist[objname].psydebuff then
- psylist.countdown_increments=psylist[objname].countdown_increments
- --printf("Original duration: %s",psylist[objname].psyduration)
- psylist.psyduration = psylist[objname].psyduration/psylist.countdown_increments
- --printf("Countdowns set. New duration: %s",psylist.psyduration)
- psylist.lasttimestamp = time_global()
- --printf("Effects are equal set")
- end
- SavePsyStatus()
- else
- --printf("No such item in psylist: %s",objname)
- end
- end
-end
-
-local function actor_on_sleep()
- psylist.psydebuff = 0
- psylist.psyduration = 0
- psylist.countdown_increments=0
- SavePsyStatus()
-end
-
-local base_arszi_on_before_hit = arszi_psy.actor_on_before_hit
-function arszi_psy.actor_on_before_hit(s_hit)
- if s_hit.power > 0 and s_hit.type == 4 and psylist.psydebuff > 0 then
- psy_resist=1-psylist.psydebuff
- s_hit.power = s_hit.power * (psy_resist/2)
- end
- base_arszi_on_before_hit(s_hit)
-end
-
-function actor_on_update()
- if psylist.psydebuff>0 then
- if time_global() - psylist.lasttimestamp > psylist.psyduration then
- if psylist.countdown_increments == 1 or psylist.countdown_increments < 0 then
- psylist.countdown_increments = 0
- printf("Psy effect ran out")
- psylist.psydebuff = 0
- psylist.psyduration = 0
- psylist.lasttimestamp = time_global()
- elseif psylist.countdown_increments > 1 then
- psylist.countdown_increments = psylist.countdown_increments - 1
- psylist.lasttimestamp = time_global()
- --printf("Countdowns left: %s",psylist.countdown_increments)
- end
- SavePsyStatus()
- end
-
- psy_resist=1-psylist.psydebuff
- local curhealth=arszi_psy.get_psy_health()
-
- local curr_time = game.get_game_time()
- if (previous_time == nil) then previous_time = curr_time end
-
- if (curr_time:diffSec(previous_time) > 1) then
- previous_time = curr_time
-
- if (curhealth >= psylist.psydebuff) and (curhealth < psylist.psydebuff+0.01) then
- --printf("Psy in debuff range: %s",psylist.psydebuff)
- arszi_psy.set_psy_health(psylist.psydebuff)
- curhealth=psylist.psydebuff
- end
-
- if (curhealth > psylist.psydebuff) then
- --printf("PSY above psy debuff %s, curhealth: %s",psylist.psydebuff, curhealth)
- arszi_psy.set_psy_health(curhealth-c_psy_health_regen_per_seconds*2)
- elseif (curhealth < psylist.psydebuff) then
- --printf("PSY below psy debuff %s, curhealth: %s",psylist.psydebuff, curhealth)
- local multiplier = 0.5*(psy_resist/curhealth)
- arszi_psy.set_psy_health(curhealth+(c_psy_health_regen_per_seconds*multiplier))
- end
- end
- end
- if not init then
- LoadPsyStatus()
- init=true
- end
-end
-
-function on_game_start()
- if arszi_psy and psy_mechanics then
- RegisterScriptCallback("actor_on_item_use",actor_on_item_use)
- RegisterScriptCallback("actor_on_update",actor_on_update)
- RegisterScriptCallback("actor_on_sleep",actor_on_sleep)
- end
-end
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/weapon_sway_mcm.script b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/weapon_sway_mcm.script
deleted file mode 100644
index bad3b666..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/weapon_sway_mcm.script
+++ /dev/null
@@ -1,70 +0,0 @@
--- If you don't use MCM, change your defaults from here.
-local defaults = {
- ["weapon_sway_feature"] = true,
- ["sway_keybind"] = DIK_keys.DIK_F,
- ["animation_type"] = 1,
- ["max_effect_power"] = 3,
- ["weight_factor"] = 1,
- ["max_power_weight"] = 7,
- ["power_stand"] = 1.2,
- ["power_crouch"] = 0.8,
- ["power_low_crouch"] = 0.4,
- ["power_stand_scoped"] = 1.2,
- ["power_crouch_scoped"] = 0.8,
- ["power_low_crouch_scoped"] = 0.4,
- ["weapon_mount_feature"] = true,
- ["weapon_mounted_power"] = 0.1,
- ["y_axis_mounted_distance"] = -0.35,
- ["hold_breath_feature"] = true,
- ["hold_breath_mult"] = 0.1,
- ["release_breath_mult"] = 0.04,
- ["max_hold_breath_time"] = 11,
- ["breath_restore_mult"] = 0.5,
- ["enable_breath_sound"] = true,
- ["handling_mult"] = 1,
- ["debugx"] = false,
-}
-
-function get_config(key)
- if ui_mcm then return ui_mcm.get("weapon_sway/"..key) else return defaults[key] end
-end
-
-function on_mcm_load()
- op = { id= "weapon_sway",sh=true ,gr={
- { id= "title",type= "slide",link= "ui_options_slider_player",text="ui_mcm_weapon_sway_title",size= {512,50},spacing= 20 },
- {id = "weapon_sway_feature", type = "check", val = 1, def = true},
- {id = "sway_keybind", type = "key_bind", val = 2, def = DIK_keys.DIK_F},
- {id = "animation_type", type= "list", val= 2, def= 1, content= { {1, "sway_1"} , {2, "sway_2"} , {3, "custom_1"} , {4, "custom_2"} , {5, "custom_3"} } , no_str = true },
- {id="divider", type="line" },
- {id = "max_effect_power", type = "track", val = 2, min=0.1, max=8, step=0.1, def = 3},
- {id = "weight_factor", type = "track", val = 2, min=0.1, max=3, step=0.1, def = 1},
- {id = "max_power_weight", type = "track", val = 2, min=0.25, max=15, step=0.25, def = 7},
- {id="divider", type="line" },
- {id = "power_stand", type = "track", val = 2, min=0, max=3, step=0.1, def = 1.2},
- {id = "power_crouch", type = "track", val = 2, min=0, max=3, step=0.1, def = 0.8},
- {id = "power_low_crouch", type = "track", val = 2, min=0, max=3, step=0.1, def = 0.4},
- {id="divider", type="line" },
- {id = "power_stand_scoped", type = "track", val = 2, min=0, max=3, step=0.1, def = 1.2},
- {id = "power_crouch_scoped", type = "track", val = 2, min=0, max=3, step=0.1, def = 0.8},
- {id = "power_low_crouch_scoped", type = "track", val = 2, min=0, max=3, step=0.1, def = 0.4},
- {id="divider", type="line" },
- {id = "weapon_mount_feature", type = "check", val = 1, def = true},
- {id = "weapon_mounted_power", type = "track", val = 2, min=0, max=1, step=0.005, def = 0.1},
- {id = "y_axis_mounted_distance", type = "track", val = 2, min=-0.75, max=0, step=0.01, def = -0.35},
- {id="divider", type="line" },
- {id = "hold_breath_feature", type = "check", val = 1, def = true},
- {id = "hold_breath_mult", type = "track", val = 2, min=0, max=1, step=0.05, def = 0.1},
- {id = "release_breath_mult", type = "track", val = 2, min=0.01, max=0.1, step=0.01, def = 0.04},
- {id = "max_hold_breath_time", type = "track", val = 2, min=2, max=30, step=0.5, def = 11},
- {id = "breath_restore_mult", type = "track", val = 2, min=0.1, max=3, step=0.1, def = 0.5},
- {id = "enable_breath_sound", type = "check", val = 1, def = true},
- {id="divider", type="line" },
- {id = "handling_mult", type = "track", val = 2, min=0, max=1.5, step=0.025, def = 1},
- {id="divider", type="line" },
- {id = "debugx", type = "check", val = 1, def = false},
-
- }
- }
-
- return op
-end
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/wpn_sway_enable.script b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/wpn_sway_enable.script
deleted file mode 100644
index b90fdbf2..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/wpn_sway_enable.script
+++ /dev/null
@@ -1,81 +0,0 @@
-local base_sway
-local is_zoomed
-
-valid_wpns = {
- wpn_svu = true,
- wpn_svu_alt = true
-}
-
-function on_game_start()
- RegisterScriptCallback("actor_on_update", actor_on_update)
- RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
- RegisterScriptCallback("actor_on_weapon_zoom_in",actor_on_weapon_zoom_in)
- RegisterScriptCallback("actor_on_weapon_zoom_out",actor_on_weapon_zoom_out)
- RegisterScriptCallback("actor_on_before_death", restore_sway)
- RegisterScriptCallback("actor_on_net_destroy", restore_sway)
-end
-
--- when entering game; load and restore previously saved sway setting
-function actor_on_first_update()
- local saved_sway = axr_main.config:r_value("temp", "base_sway")
- if saved_sway then
- base_sway = saved_sway
- restore_sway()
- else
- base_sway = get_console_cmd(0, "weapon_sway")
- axr_main.config:w_value("temp", "base_sway", base_sway)
- axr_main.config:save()
- end
-end
-
--- add sway to valid weapon when aiming
-function actor_on_weapon_zoom_in(wpn)
- is_zoomed = true
- if base_sway == "on" then return end
-
- local sec = wpn and ini_sys:r_string_ex(wpn:section(),"parent_section") or wpn and wpn:section() or nil
- local is_valid_wpn = sec and valid_wpns[sec] or nil
- if not is_valid_wpn then return end
-
- local sway = get_console_cmd(0, "weapon_sway")
- if sway == "off" then
- --news_manager.send_tip(db.actor, "APPLY SVU SWAY")
- change_sway("on")
- end
-end
-
--- remove sway when aiming stops
-function actor_on_weapon_zoom_out(wpn)
- is_zoomed = false
- if base_sway == "on" then return end
-
- local sway = get_console_cmd(0, "weapon_sway")
- if sway == "on" then
- --news_manager.send_tip(db.actor, "REMOVE SVU SWAY")
- change_sway("off")
- end
-end
-
-function actor_on_update()
- if not base_sway then return end
-
- local sway = get_console_cmd(0, "weapon_sway")
-
- -- if player uses the console to change the weapon sway, this should update the base_sway to it
- if base_sway ~= sway and not is_zoomed then
- base_sway = sway
- axr_main.config:w_value("temp", "base_sway", base_sway)
- axr_main.config:save()
- news_manager.send_tip(db.actor, "CHANGED BASE SWAY")
- end
-end
-
-function change_sway(value)
- exec_console_cmd("weapon_sway " .. value)
-end
-
-function restore_sway()
- if base_sway then
- exec_console_cmd("weapon_sway " .. base_sway)
- end
-end
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/zzz_player_injuries.script b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/zzz_player_injuries.script
deleted file mode 100644
index c5384760..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/zzz_player_injuries.script
+++ /dev/null
@@ -1,2656 +0,0 @@
--- Eddie's Edit September 6, 2021
-local disable_hud_fps_fix_tmr = 0.2 -- sec
-
------------------------- SETTINGS ------------------------
-local damagescale=zzz_player_injuries_mcm.get_config("DAMAGE_MULT") or 3.5
--- Damage scale to body parts from recieved damage; 0.5 means half of normal limbs do have 50 hp, torso has 100 hp and head has 50 hp
-local damagescale_floor = math.floor(damagescale)
-local damage_threshold=0.0293/damagescale_floor -- 0.0293 is default
-local hud_vertical_spacing=25--27 -- How low hitbox hud will be drown. The higher the number, the lower the HUD. 0 is default ~in the middle of screen.
-
-local hide_default_hud= (zzz_player_injuries_mcm.get_config("TEXT_BASED_PATCH")) and false or true
-local show_player_name=true
-local hide_if_healthy=false
-
-local natural_regeneration = zzz_player_injuries_mcm.get_config("NATURAL_REGENERATION")
-local natural_regeneration_speed_mod = zzz_player_injuries_mcm.get_config("regeneration_speed")
-
-local painkiller_grain_shader = zzz_player_injuries_mcm.get_config("PAINKILLER_GRAIN_SHADER")
-local tourniquet_is_splint = zzz_player_injuries_mcm.get_config("TOURNIQUET_IS_SPLINT")
-local bandage_is_splint = zzz_player_injuries_mcm.get_config("BANDAGE_IS_SPLINT")
-local splinting = zzz_player_injuries_mcm.get_config("SPLINTING")
-local medkit_is_splint = zzz_player_injuries_mcm.get_config("MEDKIT_IS_SPLINT")
-local medkits_heal_logic = zzz_player_injuries_mcm.get_config("MEDKITS_HEAL_LOGIC") or 2
-local rebirth_heal_logic = zzz_player_injuries_mcm.get_config("REBIRTH_HEAL_LOGIC") or 2
-local sleep_heal = zzz_player_injuries_mcm.get_config("SLEEP_HEALS")
-local sleep_heal_logic = zzz_player_injuries_mcm.get_config("SLEEP_HEALS_LOGICAL")
-local sleep_heal_power = zzz_player_injuries_mcm.get_config("SLEEP_HEALS_POWER")
-local using_surgery = zzz_player_injuries_mcm.get_config("USE_SURGERY")
-local surgery_heals = zzz_player_injuries_mcm.get_config("SURGERY_HEALS")
-local surgery_all_limbs = zzz_player_injuries_mcm.get_config("SURGERY_ALL_LIMBS")
-local cms_restores_hp_too = zzz_player_injuries_mcm.get_config("CMS_RESTORES_HP_TOO")
-bhs_exp_mode = zzz_player_injuries_mcm.get_config("BHS_EXPERIMENTAL_MODE")
-local bhs_bleed = zzz_player_injuries_mcm.get_config("BHS_BLEEDTHROUGH")
-local fall_mult = zzz_player_injuries_mcm.get_config("FALL_MULT")
-
-local regen=0 -- Don't change that. Use mcm instead. Automatic blue health regeneration on each limb. Setting it to 90000 would mean each 90 seconds 1 health point restores
-if natural_regeneration then
- regen = 300000/natural_regeneration_speed_mod
-end
-
--- It's very important to keep the correct ratio between "effects_mult" and "maxhp" as shown in example
-effects_mult = 0.5 -- Divide this by maxhp and damagescale multipliers. Example "effects_mult = 1/10" if (default maxhp)*10, damagescale*10, medicines*10 etc (more immersive and harmful effects don't reduce the whole chunks)
-local prev_time = nil
-local head_tbl = {}
-local tinnitus_play = false
-
-function save_state(m_data)
- m_data.head_tbl = head_tbl
-end
-
-function load_state(m_data)
- head_tbl = m_data.head_tbl or {}
-end
-
-local aim_anm = {"earthquake_1","earthquake_2"}
-local rightleg_anm = {"med1","med4"}
-local leftleg_anm = {"med2","med3"}
-local bothlegs_anm = {"strong1","strong2","strong4"}
-
-function on_option_change()
- if r(head_tbl.volume) ~= r(ui_options.get("sound/general/master_volume")) then
- head_tbl.volume = (ui_options.get("sound/general/master_volume"))
- end
-end
-
--- shameful steal from arti
-local speeds = {}
-
-function actor_on_first_update()
- options_vol = ui_options.get("sound/general/master_volume")
- if not (head_tbl.volume) then head_tbl.volume = options_vol end
- exec_console_cmd("snd_volume_eff " .. options_vol)
- volume_sound_x = get_console_cmd(2,"snd_volume_eff")
- speeds[0] = db.actor:get_actor_run_coef()
- speeds[1] = db.actor:get_actor_runback_coef()
- speeds[2] = db.actor:get_actor_sprint_koef()
-end
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-hit={} -- struct to store all the hit data i might need
-hit.type = nil
-hit.power = nil
-hit.bone_id = nil
-hit.bone_id_adj = nil
-hit.draftsman = nil
-hit.fall = false
-hit.death = false
-hit.apply = false
-hit.damage = false
-
-showtexthud=(zzz_player_injuries_mcm.get_config("TEXT_BASED_PATCH")) and 2 or 0 --1 large left down, 2 default center 0 texture
-
-show_hud_type=2
-show_hud_change_time=0
-local myhealth=0
-healthstatus=true
-local init=false
-local healtimer=time_global()
-
-local display_width=2560
-local display_height=1440
-local display_ratio=169
-local display={}
-display.types={}
-display.types[43]=1.3333
-display.types[169]=1.7777
-display.types[1610]=1.56
-
-maxhp={}
-maxhp.head=22
-maxhp.torso=22
-maxhp.leftarm=10
-maxhp.rightarm=10
-maxhp.leftleg=10
-maxhp.rightleg=10
-
-health={}
-health.head=maxhp.head
-health.torso=maxhp.torso
-health.leftarm=maxhp.leftarm
-health.rightarm=maxhp.rightarm
-health.leftleg=maxhp.leftleg
-health.rightleg=maxhp.rightleg
-
-preview={}
-
-preview.health={}
-preview.health.head=nil
-preview.health.torso=nil
-preview.health.leftarm=nil
-preview.health.rightarm=nil
-preview.health.leftleg=nil
-preview.health.rightleg=nil
-
-preview.bonus={}
-preview.bonus.head=nil
-preview.bonus.torso=nil
-preview.bonus.leftarm=nil
-preview.bonus.rightarm=nil
-preview.bonus.leftleg=nil
-preview.bonus.rightleg=nil
-
-preview.surgeryhp={}
-preview.surgeryhp.head=nil
-preview.surgeryhp.torso=nil
-preview.surgeryhp.leftarm=nil
-preview.surgeryhp.rightarm=nil
-preview.surgeryhp.leftleg=nil
-preview.surgeryhp.rightleg=nil
-
-timedhp={}
-timedhp.head=0
-timedhp.torso=0
-timedhp.leftarm=0
-timedhp.rightarm=0
-timedhp.leftleg=0
-timedhp.rightleg=0
-
-surgeryhp={}
-surgeryhp.head=0
-surgeryhp.torso=0
-surgeryhp.leftarm=0
-surgeryhp.rightarm=0
-surgeryhp.leftleg=0
-surgeryhp.rightleg=0
-
-local timedheal={}
-timedheal.head=0
-timedheal.torso=0
-timedheal.leftarm=0
-timedheal.rightarm=0
-timedheal.leftleg=0
-timedheal.rightleg=0
-
-hud_blink_timer={}
-hud_blink_timer.head=0
-hud_blink_timer.torso=0
-hud_blink_timer.leftarm=0
-hud_blink_timer.rightarm=0
-hud_blink_timer.leftleg=0
-hud_blink_timer.rightleg=0
-hud_blink_timer.blinktime=1000
-
--- These items heal bodyparts over time, healing all listed body parts at the same time. Won't heal if body part is at 0 hp (=broken).
--- * the numbers for each body part is the total amount of hp healed for each body part
--- * healtimer: after this amount of time, 1 hp is added to each listed body part.
-healhelplist={}
-healhelplist.lastregen=time_global()
-healhelplist.healtimer=30000
-healhelplist.healpower=0
-if medkits_heal_logic == 1 then
- healhelplist.medkit={head=11,torso=11,rightleg=5,leftleg=5,rightarm=5,leftarm=5,healpower=1,healtimer=6000}
- healhelplist.medkit_army={head=16,torso=16,rightleg=7,leftleg=7,rightarm=7,leftarm=7,healpower=1,healtimer=4175}
- healhelplist.medkit_scientic={head=16,torso=16,rightleg=7,leftleg=7,rightarm=7,leftarm=7,healpower=1,healtimer=4175}
- healhelplist.stimpack={head=11,torso=11,rightleg=5,leftleg=5,rightarm=5,leftarm=5,healpower=1,healtimer=1000}
- healhelplist.stimpack_army={head=16,torso=16,rightleg=7,leftleg=7,rightarm=7,leftarm=7,healpower=1,healtimer=900}
- healhelplist.stimpack_scientic={head=16,torso=16,rightleg=7,leftleg=7,rightarm=7,leftarm=7,healpower=1,healtimer=900}
-end
-if rebirth_heal_logic == 1 then
- healhelplist.rebirth={head=22,torso=22,rightleg=10,leftleg=10,rightarm=10,leftarm=10,healpower=0,healtimer=772}
-end
-
--- Items that add 1 hp at a time to the most injured body part. Won't heal if body part is at 0 hp (=broken).
--- For broken limbs you first need to use a bandage (=splint).
--- * healamount: how many hp to add in total.
--- * healtimer: time it takes to heal 1 hp.
--- * healactive: leave at 0, this is used to track it during runtime.
--- * lasttimestamp: leave at 0, this is used to track it during runtime.
-healonelist={}
-healonelist.lastregen=time_global()
-healonelist.healtimer=30000
-healonelist.healamount=0
-healonelist.healpower=0
-if medkits_heal_logic == 2 then
- healonelist.medkit={healamount=21,healtimer=3180,healpower=1}
- healonelist.medkit_army={healamount=32,healtimer=2084,healpower=1}
- healonelist.medkit_scientic={healamount=32,healtimer=2084,healpower=1}
- healonelist.stimpack={healamount=21,healtimer=571,healpower=1}
- healonelist.stimpack_army={healamount=32,healtimer=468,healpower=1}
- healonelist.stimpack_scientic={healamount=32,healtimer=468,healpower=1}
- healonelist.survival_kit={healamount=60,healtimer=1428,healpower=1}
-end
-if rebirth_heal_logic == 2 then
- healonelist.rebirth={healamount=60,healtimer=283,healpower=0}
-end
-healonelist.drug_coagulant={healamount=11,healtimer=39818,healpower=0}
-healonelist.propital={healamount=21,healtimer=6000,healpower=0}
-
--- First aid items:
--- * instant effect
--- * splintamount: how much hp is healed in total. Hp is added to body part with lowest health first.
--- * maxarmleg and maxheadtorso = can only heal body part up to this hp level.
-splintlist={}
-if splinting then
- if tourniquet_is_splint then
- splintlist.jgut={splintamount=1}
- end
- if bandage_is_splint then
- splintlist.bandage={splintamount=1}
- splintlist.bandage_army={splintamount=1}
- end
- splintlist.splint={splintamount=1}
- splintlist.alu_splint={splintamount=1}
-end
-
-surgerylist={}
-if using_surgery then
- surgerylist.surginst={surgeryamount=1}
- if cms_restores_hp_too then
- surgerylist.cms={surgeryamount=4}
- else
- surgerylist.cms={surgeryamount=1}
- end
-end
-
--- Painkillers add painkillerpower as timedhp to limbs and double that to torso + head.
--- timedhp are added to health when considering effects such as shaking hands and limping. Won't prevent death when torso or head hp = 0.
-painkillerlist={}
-painkillerlist.lasttimestamp=time_global()
-painkillerlist.painkillerduration=0
-painkillerlist.painkillerpower=0
-painkillerlist.countdown_increments=0 -- divides the total duration into x parts. Used to make sure painkillers actual duration stays closer to its set duration + up to length of one increment.
-painkillerlist.morphine={painkillerpower=7,painkillerduration=1518000,countdown_increments=92}
-painkillerlist.rebirth={painkillerpower=7,painkillerduration=305000,countdown_increments=30}
-painkillerlist.salicidic_acid={painkillerpower=6,painkillerduration=1152000,countdown_increments=80}
-painkillerlist.tetanus={painkillerpower=4,painkillerduration=202000,countdown_increments=20}
-painkillerlist.analgetic={painkillerpower=5,painkillerduration=1042000,countdown_increments=80}
-painkillerlist.sj1={painkillerpower=6,painkillerduration=1500000,countdown_increments=75}
-painkillerlist.sj6={painkillerpower=9,painkillerduration=1500000,countdown_increments=75}
-painkillerlist.analgin={painkillerpower=2,painkillerduration=180000,countdown_increments=36}
-painkillerlist.akvatab={painkillerpower=4,painkillerduration=290000,countdown_increments=29}
-painkillerlist.yadylin={painkillerpower=5,painkillerduration=505000,countdown_increments=50}
-painkillerlist.adrenalin={painkillerpower=2,painkillerduration=2184000,countdown_increments=105}
-painkillerlist.etg={painkillerpower=4,painkillerduration=1800000,countdown_increments=90}
-painkillerlist.medkit_army={painkillerpower=4,painkillerduration=128000,countdown_increments=25}
-painkillerlist.medkit_scientic={painkillerpower=3,painkillerduration=128000,countdown_increments=25}
-painkillerlist.stimpack={painkillerpower=2,painkillerduration=128000,countdown_increments=25}
-painkillerlist.stimpack_army={painkillerpower=4,painkillerduration=128000,countdown_increments=25}
-painkillerlist.stimpack_scientic={painkillerpower=3,painkillerduration=128000,countdown_increments=25}
-painkillerlist.cocaine={painkillerpower=2,painkillerduration=1644000,countdown_increments=80}
-painkillerlist.joint={painkillerpower=1,painkillerduration=420000,countdown_increments=42}
-painkillerlist.marijuana={painkillerpower=1,painkillerduration=652000,countdown_increments=40}
-painkillerlist.vodka={painkillerpower=1,painkillerduration=300000,countdown_increments=30}
-painkillerlist.vodka2={painkillerpower=1,painkillerduration=300000,countdown_increments=30}
-painkillerlist.vodka_quality={painkillerpower=2,painkillerduration=300000,countdown_increments=30}
-painkillerlist.bottle_metal={painkillerpower=2,painkillerduration=300000,countdown_increments=30}
-
-exp_druglist = {}
-exp_druglist.lasttimestamp=time_global()
-exp_druglist.restoreduration=0
-exp_druglist.restorepower=0
-exp_druglist.countdown_increments=0
-exp_druglist.drug_coagulant={restorepower=0.0005,countdown_increments=438,restoretime=438}
---exp_druglist.yadylin={restorepower=0.0005,countdown_increments=438,restoretime=438}
-
-
-local modifiedregen = regen
-
-local playername
-
-function trace_this(to_trace1)
- local log_file = io.open("log_memory_npc", "a")
- log_file:write(to_trace1)
- log_file:close(log_file)
-end
-
-local function GetConditionFromFloat(float,bodypart)
- if bodypart then
- if hud_blink_timer[bodypart] then
- if time_global()-hud_blink_timer[bodypart]=0.99 then
- -- --return "good"
- -- return "blue"
- -- elseif float>=0.79 then
- -- --return "ok"
- -- return "blue"
- -- elseif float>=0.33 then
- -- return "blue"
- -- elseif float>=0.19 then
- -- return "critical"
- -- else
- -- return "critical"
- -- end
- return "blue"
-end
-local colors={}
---colors.blue="%c[0,50,200,200]"
-
--- colors.good="%c[0,0,255,0]"
--- colors.ok="%c[0,150,255,0]"
--- colors.medium="%c[0,255,255,0]"
--- colors.danger="%c[0,255,100,0]"
--- colors.critical="%c[0,255,0,0]"
-
-colors.blue="%c[0,56,115,255]"
-colors.good="%c[0,15,143,20]"
-colors.ok="%c[0,138,204,51]"
-colors.medium="%c[0,255,208,0]"
-colors.danger="%c[0,255,79,0]"
-colors.critical="%c[0,230,10,10]"
-colors.grey="%c[0,161,161,161]"
-
-colors.preview_health="%c[0,140,0,255]"
-colors.preview_bonus="%c[0,0,212,24]"
-
-colors.blank="%c[0,156,156,156]"
-colors.white="%c[0,255,255,255]"
---colors.grey="%c[0,185,185,185]"
-colors.black="%c[0,0,0,0]"
-
-local function SaveHealthStatus()
- utils_obj.save_var(db.actor,"health.head",health.head)
- utils_obj.save_var(db.actor,"health.torso",health.torso)
- utils_obj.save_var(db.actor,"health.rightarm",health.rightarm)
- utils_obj.save_var(db.actor,"health.leftarm",health.leftarm)
- utils_obj.save_var(db.actor,"health.rightleg",health.rightleg)
- utils_obj.save_var(db.actor,"health.leftleg",health.leftleg)
-
- utils_obj.save_var(db.actor,"timedheal.head",timedheal.head)
- utils_obj.save_var(db.actor,"timedheal.torso",timedheal.torso)
- utils_obj.save_var(db.actor,"timedheal.rightarm",timedheal.rightarm)
- utils_obj.save_var(db.actor,"timedheal.leftarm",timedheal.leftarm)
- utils_obj.save_var(db.actor,"timedheal.rightleg",timedheal.rightleg)
- utils_obj.save_var(db.actor,"timedheal.leftleg",timedheal.leftleg)
-
- utils_obj.save_var(db.actor,"timedhp.head",timedhp.head)
- utils_obj.save_var(db.actor,"timedhp.torso",timedhp.torso)
- utils_obj.save_var(db.actor,"timedhp.rightarm",timedhp.rightarm)
- utils_obj.save_var(db.actor,"timedhp.leftarm",timedhp.leftarm)
- utils_obj.save_var(db.actor,"timedhp.rightleg",timedhp.rightleg)
- utils_obj.save_var(db.actor,"timedhp.leftleg",timedhp.leftleg)
-
- utils_obj.save_var(db.actor,"surgeryhp.head",surgeryhp.head)
- utils_obj.save_var(db.actor,"surgeryhp.torso",surgeryhp.torso)
- utils_obj.save_var(db.actor,"surgeryhp.rightarm",surgeryhp.rightarm)
- utils_obj.save_var(db.actor,"surgeryhp.leftarm",surgeryhp.leftarm)
- utils_obj.save_var(db.actor,"surgeryhp.rightleg",surgeryhp.rightleg)
- utils_obj.save_var(db.actor,"surgeryhp.leftleg",surgeryhp.leftleg)
-
- utils_obj.save_var(db.actor,"healhelplist.healtimer",healhelplist.healtimer)
- utils_obj.save_var(db.actor,"healhelplist.healpower",healhelplist.healpower)
-
- utils_obj.save_var(db.actor,"healonelist.healtimer",healonelist.healtimer)
- utils_obj.save_var(db.actor,"healonelist.healpower",healonelist.healpower)
- utils_obj.save_var(db.actor,"healonelist.healamount",healonelist.healamount)
-
- utils_obj.save_var(db.actor,"painkillerlist.painkillerduration",painkillerlist.painkillerduration)
- utils_obj.save_var(db.actor,"painkillerlist.painkillerpower",painkillerlist.painkillerpower)
- utils_obj.save_var(db.actor,"painkillerlist.countdown_increments",painkillerlist.countdown_increments)
-
- utils_obj.save_var(db.actor,"exp_druglist.restoreduration",exp_druglist.restoreduration)
- utils_obj.save_var(db.actor,"exp_druglist.restorepower",exp_druglist.restorepower)
- utils_obj.save_var(db.actor,"exp_druglist.countdown_increments",exp_druglist.countdown_increments)
-end
-
-
-local function LoadHealthStatus()
-
- health.head=utils_obj.load_var(db.actor,"health.head") or maxhp.head
- health.torso=utils_obj.load_var(db.actor,"health.torso") or maxhp.torso
- health.rightarm=utils_obj.load_var(db.actor,"health.rightarm") or maxhp.rightarm
- health.leftarm=utils_obj.load_var(db.actor,"health.leftarm") or maxhp.leftarm
- health.rightleg=utils_obj.load_var(db.actor,"health.rightleg") or maxhp.rightleg
- health.leftleg=utils_obj.load_var(db.actor,"health.leftleg") or maxhp.leftleg
-
- timedheal.head=utils_obj.load_var(db.actor,"timedheal.head") or 0
- timedheal.torso=utils_obj.load_var(db.actor,"timedheal.torso") or 0
- timedheal.rightarm=utils_obj.load_var(db.actor,"timedheal.rightarm") or 0
- timedheal.leftarm=utils_obj.load_var(db.actor,"timedheal.leftarm") or 0
- timedheal.rightleg=utils_obj.load_var(db.actor,"timedheal.rightleg") or 0
- timedheal.leftleg=utils_obj.load_var(db.actor,"timedheal.leftleg") or 0
-
- timedhp.head=utils_obj.load_var(db.actor,"timedhp.head") or 0
- timedhp.torso=utils_obj.load_var(db.actor,"timedhp.torso") or 0
- timedhp.rightarm=utils_obj.load_var(db.actor,"timedhp.rightarm") or 0
- timedhp.leftarm=utils_obj.load_var(db.actor,"timedhp.leftarm") or 0
- timedhp.rightleg=utils_obj.load_var(db.actor,"timedhp.rightleg") or 0
- timedhp.leftleg=utils_obj.load_var(db.actor,"timedhp.leftleg") or 0
-
- surgeryhp.head=utils_obj.load_var(db.actor,"surgeryhp.head",surgeryhp.head) or 0
- surgeryhp.torso=utils_obj.load_var(db.actor,"surgeryhp.torso",surgeryhp.torso) or 0
- surgeryhp.rightarm=utils_obj.load_var(db.actor,"surgeryhp.rightarm",surgeryhp.rightarm) or 0
- surgeryhp.leftarm=utils_obj.load_var(db.actor,"surgeryhp.leftarm",surgeryhp.leftarm) or 0
- surgeryhp.rightleg=utils_obj.load_var(db.actor,"surgeryhp.rightleg",surgeryhp.rightleg) or 0
- surgeryhp.leftleg=utils_obj.load_var(db.actor,"surgeryhp.leftleg",surgeryhp.leftleg) or 0
-
- healhelplist.healtimer=utils_obj.load_var(db.actor,"healhelplist.healtimer",healhelplist.healtimer) or 0
- healhelplist.healpower=utils_obj.load_var(db.actor,"healhelplist.healpower",healhelplist.healpower) or 0
-
- healonelist.healtimer=utils_obj.load_var(db.actor,"healonelist.healtimer",healonelist.healtimer) or 0
- healonelist.healpower=utils_obj.load_var(db.actor,"healonelist.healpower",healonelist.healpower) or 0
- healonelist.healamount=utils_obj.load_var(db.actor,"healonelist.healamount",healonelist.healamount) or 0
-
- painkillerlist.painkillerduration=utils_obj.load_var(db.actor,"painkillerlist.painkillerduration",painkillerlist.painkillerduration) or 0
- painkillerlist.painkillerpower=utils_obj.load_var(db.actor,"painkillerlist.painkillerpower",painkillerlist.painkillerpower) or 0
- painkillerlist.countdown_increments=utils_obj.load_var(db.actor,"painkillerlist.countdown_increments",painkillerlist.countdown_increments) or 0
-
- exp_druglist.restoreduration=utils_obj.load_var(db.actor,"exp_druglist.restoreduration",exp_druglist.restoreduration) or 0
- exp_druglist.restorepower=utils_obj.load_var(db.actor,"exp_druglist.restorepower",exp_druglist.restorepower) or 0
- exp_druglist.countdown_increments=utils_obj.load_var(db.actor,"exp_druglist.countdown_increments",exp_druglist.countdown_increments) or 0
-
- if painkillerlist.painkillerpower > 0 and painkiller_grain_shader then
- --printf("Adding the effector. Painkillerpower: %s , Painkillerduration: %s",painkillerlist.painkillerpower,painkillerlist.painkillerduration)
- level.add_pp_effector("radiation.ppe", 5020, true)
- else
- --printf("Removing the effector. Painkillerpower: %s , Painkillerduration: %s",painkillerlist.painkillerpower,painkillerlist.painkillerduration)
- level.remove_pp_effector(5020)
- end
-end
-
-function r(val)
- local shet = round_idp(val, 3)
-
- return shet
-end
-
-function get_body_state()
- local crouch = IsMoveState('mcCrouch')
- local accel = IsMoveState('mcAccel')
- local body_st = "stand"
-
- if crouch then
- if accel then body_st = "low_crouch"
- else body_st = "crouch"
- end
- end
-
- return body_st
-end
-
-function shaking_hands()
-
- local activeslot = db.actor:active_slot()
- if not (activeslot == 2 or activeslot == 3 or activeslot == 1) then return end
-
- local item_in_slot = db.actor:item_in_slot(activeslot)
- if not (item_in_slot) then return end
-
- local section_name = item_in_slot:section()
- local weight
- if not (ini_sys:section_exist(section_name, "inv_weight")) then return end
-
- weight = ini_sys:r_float_ex(section_name, "inv_weight")
- local body_state = get_body_state()
- local cam_power = 0
- local left_arm = (health.rightarm + timedhp.rightarm) * effects_mult
- left_arm = left_arm >=1 and left_arm or 0.75
- local right_arm = (health.leftarm + timedhp.leftarm) * effects_mult
- right_arm = right_arm >=1 and right_arm or 0.75
- local arms_sum = left_arm + right_arm
- local max_arms_sum = (maxhp.rightarm + maxhp.leftarm) * effects_mult
-
- if arms_sum < (max_arms_sum * (zzz_player_injuries_mcm.get_config("arm_penalty_minimum_hp") * 0.05)) then
- cam_power = 0.65 * weight / arms_sum
- cam_power = (body_state == "crouch") and (0.60 * weight / arms_sum) or cam_power
- cam_power = (body_state == "low_crouch") and (0.55 * weight / arms_sum) or cam_power
-
- cam_power = clamp(cam_power, 0, 3)
- cam_power = cam_power * (zzz_player_injuries_mcm.get_config("arm_animation_power"))
- local cam_power_scope = cam_power * 0.33
- if item_in_slot:weapon_is_scope() then
- cam_power = cam_power_scope
- end
- -- play anm
- level.add_cam_effector("camera_effects\\" .. aim_anm[math.random(#aim_anm)] .. ".anm", 9921, true, "", 0, true, cam_power)
- else
- cam_power = 0.19 * weight / max_arms_sum
- cam_power = (body_state == "crouch") and (0.18 * weight / max_arms_sum) or cam_power
- cam_power = (body_state == "low_crouch") and (0.17 * weight / max_arms_sum) or cam_power
- cam_power = clamp(cam_power, 0, 3)
- cam_power = cam_power * (zzz_player_injuries_mcm.get_config("arm_animation_power"))
- local cam_power_scope = cam_power * 0.33
- if item_in_slot:weapon_is_scope() then
- cam_power = cam_power_scope
- end
- level.add_cam_effector("camera_effects\\" .. aim_anm[math.random(#aim_anm)] .. ".anm", 9921, true, "", 0, true, cam_power)
- end
- -- news_manager.send_tip(db.actor, r(cam_power), 0, nil, 1500)
-
-end
-
-function shaking_hands_remove()
- level.remove_cam_effector(9921)
-end
-
-function limp_speed_slow()
-
- local legs_summ = (health.leftleg + health.rightleg + timedhp.leftleg + timedhp.rightleg) * effects_mult
- local run_coef = 1
- local sprint_coef = 1
- local run_coef = 0.0625 * legs_summ + 0.375
- local sprint_coef = 0.0625 * legs_summ + 0.375
- local real_sprint_coef = 0.025 * legs_summ + 0.75
- if (health.leftleg==0 and timedhp.leftleg<=2) or (health.rightleg==0 and timedhp.rightleg<=2) then
- real_sprint_coef = 0.75
- elseif (health.leftleg + timedhp.leftleg) > (health.rightleg + timedhp.rightleg) then
- real_sprint_coef = 0.025 * ((health.leftleg + timedhp.leftleg) * effects_mult) + 0.75
- elseif (health.leftleg + timedhp.leftleg) < (health.rightleg + timedhp.rightleg) then
- real_sprint_coef = 0.025 * ((health.rightleg + timedhp.rightleg) * effects_mult) + 0.75
- end
- if (health.leftleg==0 and timedhp.leftleg<=2) or (health.rightleg==0 and timedhp.rightleg<=2) then
- run_coef = 0.22 --0.375
- end
- speed.add_speed("bhs_speed_run", run_coef, false, true)
--- speed.add_speed("bhs_speed_runback", run_coef, false, true)
- speed.add_speed("bhs_speed_sprint", real_sprint_coef, true, true)
-
--- local vec = db.actor:get_movement_speed()
--- local ms = (vec.x)^2 + (vec.y)^2 + (vec.z)^2
--- news_manager.send_tip(db.actor, r(ms), 0, nil, 1500)
-
-end
-
-local leftleg_flag = false
-local rightleg_flag = false
-local bothlegs_flag = false
-
-function legs_limp()
-
- local right_l = (health.leftleg + timedhp.leftleg) * effects_mult -- right is left
- local left_l = (health.rightleg + timedhp.rightleg) * effects_mult
- local legs_sum = left_l + right_l
- local max_right_l = maxhp.leftleg * effects_mult * (zzz_player_injuries_mcm.get_config("leg_penalty_minimum_hp") * 0.2)
- local max_left_l = maxhp.rightleg * effects_mult * (zzz_player_injuries_mcm.get_config("leg_penalty_minimum_hp") * 0.2)
- local max_legs_sum = max_left_l + max_right_l
-
- if (right_l == left_l) and (legs_sum < max_legs_sum) then
- bothlegs_flag = true
- leftleg_flag, rightleg_flag = false
- -- printf("bothlegs_flag = true")
- elseif (left_l < max_left_l) and (left_l < right_l) then
- leftleg_flag = true
- rightleg_flag, bothlegs_flag = false
- -- printf("leftleg_flag = true")
- elseif (right_l < max_right_l) and (right_l < left_l) then
- rightleg_flag = true
- leftleg_flag, bothlegs_flag = false
- -- printf("rightleg_flag = true")
- elseif (legs_sum >= max_legs_sum) then
- leftleg_flag, rightleg_flag, bothlegs_flag = false
- -- printf("ALL = false")
- end
-
-end
-
-function torso_penalty()
-
- local torso_health = (health.torso + timedhp.torso) * effects_mult
- local torso_max_hp = maxhp.torso * effects_mult
- torso_health = torso_health > torso_max_hp and torso_max_hp or ((health.torso + timedhp.torso) * effects_mult)
- local t_diff = (torso_max_hp - torso_health) / effects_mult
- local t_cap = 1 - t_diff * 0.035
-
- if (t_diff > 0) and (db.actor.health > t_cap) then
--- db.actor.health = t_cap
- t_cap = t_cap
- end
-
-end
-
-local tg_effects_regen = 0
-local tg_effects_regen_delay = 500
-local tg_stage_2_effects = 0
-local tg_stage_2_effects_delay = 15000 -- just in case, duration of ppe is 7250
-
-function bhs_concussion()
-
- local tg = time_global()
- local rnd = math.random(1, 100)
- local current = health.head * effects_mult -- reason not to add timedhp.head here: will block effect on first hit to head and then do nothing.
- if not (head_tbl.previous) then head_tbl.previous = current end
- local previous = head_tbl.previous
- local volume_sound_x = get_console_cmd(2,"snd_volume_eff")
- local volume_sound_x_fade = 0.01
-
- local anm_damage_threshold = 2
- local damage_taken = (previous - current) * math.pow(0.75, painkillerlist.painkillerpower)
--- local damage_taken = previous - current
- damage_taken = damage_taken > 0 and damage_taken or 0
-
- local max_head = maxhp.head * effects_mult
- local effector_k = damage_taken / max_head
- local effector_power = effector_k * (zzz_player_injuries_mcm.get_config("head_animation_power"))
-
--- actor_menu.set_msg(1, strformat("head.tbl.volume: %s, console_volume: %s, stage: %s", r(head_tbl.volume), r(get_console_cmd(2,"snd_volume_eff")), r(head_tbl.stage)))
-
- -- removing effects if hp between previous and current yellow or blue (or dead)
- if head_tbl.stage ~= 0 and ((previous == current) or (current <= 0)) then
- exec_console_cmd("snd_volume_eff " .. head_tbl.volume)
- level.remove_pp_effector(99133)
- head_tbl.stage = 0
- end
-
- -- stage 1
- if (head_tbl.stage == 1) then
- level.add_pp_effector("concussion_bhs.ppe", 99123, false)
- exec_console_cmd("snd_volume_eff " .. volume_sound_x_fade)
- CreateTimeEvent(0, "set_stage_two", 1, set_stage_two)
- end
- -- stage 2 xd
- if (head_tbl.stage == 2) and (tg > tg_stage_2_effects) then
- if (tinnitus_play) then
- local snd = sound_object("bhs\\tinnitusx")
- snd:play_no_feedback(db.actor, sound_object.s2d, 0, VEC_ZERO, 1.0, 1.0)
- snd.volume = effector_k * 3
- tinnitus_play = false
- end
- -- random chance for head shake
- if (damage_taken > anm_damage_threshold) and (rnd <= effector_k * 10) then
- level.add_cam_effector("camera_effects\\wake_up.anm", 96872, false, "", 0, true, effector_power * 0.2)
- end
- level.add_pp_effector("concussion_post_bhs.ppe", 99133, false)
- tg_stage_2_effects = tg + tg_stage_2_effects_delay
- end
-
- level.set_pp_effector_factor(99123, effector_power)
- level.set_pp_effector_factor(99133, effector_power)
-
- -- regen
- painkiller_regen_bonus = 0
- if painkillerlist.painkillerpower > 0 then
- painkiller_regen_bonus = (painkillerlist.painkillerpower + 1) * 0.05
- end
- if tg > tg_effects_regen then
- head_tbl.previous = clamp(head_tbl.previous - 0.01 - painkiller_regen_bonus, current, head_tbl.previous) -- effector's power decrease: 50 sec for each lost HP
- tg_effects_regen = tg + tg_effects_regen_delay
- end
--- news_manager.send_tip(db.actor, string.format("previous: %s . current: %s", r(head_tbl.previous), r(current)), 0, nil, 1500)
-
-end
-
-function set_stage_two()
- exec_console_cmd("snd_volume_eff " .. head_tbl.volume)
- head_tbl.stage = 2
- tinnitus_play = true
- return true
-end
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-
-local function bonebreak()
- local helmet = (db.actor:item_in_slot(12) or db.actor:get_current_outfit())
- if helmet then
- muffle = ""
- else
- muffle = ""
- end
- local sound_play = math.random(1,13)
- local file = "bhs\\" .. muffle .. "pain_" .. sound_play
- file_to_say = sound_object( file )
- file_to_say:play(db.actor,0,sound_object.s2d)
- local file2 = "bhs\\" .. "bone_crack"
- file_to_say = sound_object( file2 )
- file_to_say:play(db.actor,0,sound_object.s2d)
- level.add_pp_effector("blur_bhs.ppe", math.random(655808, 655820), false)
-end
-
-local function received_damage(amount)
- if grok_progressive_rad_damages then
- if grok_progressive_rad_damages.grok_rads == 1 then return end
- end
-
- local damage
- damage=math.ceil((amount*100)/11*damagescale)
- local damage_head=math.ceil((amount*2*100)/11*damagescale)
- local choosen_hitbox={}
-
- if hit.bone_id_adj then
- choosen_hitbox=hit.bone_id_adj
- printf("! Applying %s damage to %s. Damagescale: %s",damage , choosen_hitbox, damagescale)
- else
- local index=0
- for k,v in pairs(health) do
- index=index+1
- end
- local random_number=math.random(1,index)
- -- trace_this("random"..random_number.."\n")
- if random_number==1 then
- choosen_hitbox="head"
- elseif random_number==2 then
- choosen_hitbox="torso"
- elseif random_number==3 then
- choosen_hitbox="leftarm"
- elseif random_number==4 then
- choosen_hitbox="rightarm"
- elseif random_number==5 then
- choosen_hitbox="leftleg"
- elseif random_number==6 then
- choosen_hitbox="rightleg"
- end
- printf("! Applying damage to random bone, %s. Damagescale: %s", choosen_hitbox, damagescale)
- end
-
- if hit.type=="Explosive" then -- explosives = bad for health
- hud_blink_timer.head=time_global()
- hud_blink_timer.torso=time_global()
- hud_blink_timer.leftarm=time_global()
- hud_blink_timer.rightarm=time_global()
- hud_blink_timer.leftleg=time_global()
- hud_blink_timer.rightleg=time_global()
- health.head=math.floor(health.head-damage*0.75)
- health.torso=math.floor(health.torso-damage*0.75)
- health.leftarm=math.floor(health.leftarm-damage*0.75)
- health.rightarm=math.floor(health.rightarm-damage*0.75)
- health.leftleg=math.floor(health.leftleg-damage*0.75)
- health.rightleg=math.floor(health.rightleg-damage*0.75)
- surgeryhp.head=0
- surgeryhp.torso=0
- surgeryhp.leftarm=0
- surgeryhp.rightarm=0
- surgeryhp.leftleg=0
- surgeryhp.rightleg=0
- damage=0
- elseif choosen_hitbox=="head" then
- if damage >= 18 then
- damage = 17
- end
- if damage >= health.head and health.head > 0 then
- damage = damage - health.head
- health.head=0
- bonebreak()
- hit.death=true
- db.actor.health=-1
- elseif damage < health.head then
- health.head=health.head-damage
- damage=0
- end
- hud_blink_timer.head=time_global()
- utils_obj.save_var(db.actor,"health.head",health.head)
- if damage_head > (zzz_player_injuries_mcm.get_config("head_penalty_minimum_hp") - 1) then
- head_tbl.stage = 1
- end
- surgeryhp.head=0
- elseif choosen_hitbox=="torso" then
- if damage >= 16 then
- damage = 14
- end
- if damage >= health.torso and health.torso > 0 then
- damage = damage - health.torso
- health.torso=0
- bonebreak()
- elseif damage < health.torso then
- health.torso=health.torso-damage
- damage=0
- end
- hud_blink_timer.torso=time_global()
- utils_obj.save_var(db.actor,"health.torso",health.torso)
- surgeryhp.torso=0
- elseif choosen_hitbox=="leftarm" then
- if damage >= 8 then
- damage = 7
- end
- if damage >= health.leftarm and health.leftarm > 0 then
- damage = damage - health.leftarm
- health.leftarm=0
- bonebreak()
- elseif damage < health.leftarm then
- health.leftarm=health.leftarm-damage
- damage=0
- end
- hud_blink_timer.leftarm=time_global()
- utils_obj.save_var(db.actor,"health.leftarm",health.leftarm)
- surgeryhp.leftarm=0
- elseif choosen_hitbox=="rightarm" then
- if damage >= 8 then
- damage = 7
- end
- if damage >= health.rightarm and health.rightarm > 0 then
- damage = damage - health.rightarm
- health.rightarm=0
- bonebreak()
- elseif damage < health.rightarm then
- health.rightarm=health.rightarm-damage
- damage=0
- end
- hud_blink_timer.rightarm=time_global()
- utils_obj.save_var(db.actor,"health.rightarm",health.rightarm)
- surgeryhp.rightarm=0
- elseif choosen_hitbox=="leftleg" then
- if not hit.fall then
- if damage >= 8 then
- damage = 7
- end
- if damage >= health.leftleg and health.leftleg > 0 then
- damage = damage - health.leftleg
- health.leftleg=0
- bonebreak()
- elseif damage < health.leftleg then
- health.leftleg=health.leftleg-damage
- damage=0
- end
- hud_blink_timer.leftleg=time_global()
- surgeryhp.leftleg=0
- else
- local damage_rl = damage
- local damage_ll = damage
- if damage_ll >= health.leftleg then
- damage_ll = damage_ll - health.leftleg
- health.leftleg=0
- bonebreak()
- elseif damage < health.leftleg then
- health.leftleg=health.leftleg-damage
- damage_ll=0
- end
- if damage_rl >= health.rightleg then
- damage_rl = damage_rl - health.rightleg
- health.rightleg=0
- bonebreak()
- elseif damage < health.rightleg then
- health.rightleg=health.rightleg-damage
- damage_rl=0
- end
- utils_obj.save_var(db.actor,"health.rightleg",health.rightleg)
- damage=damage_ll+damage_rl
- surgeryhp.leftleg=0
- surgeryhp.rightleg=0
- end
- utils_obj.save_var(db.actor,"health.leftleg",health.leftleg)
- elseif choosen_hitbox=="rightleg" then
- if not hit.fall then
- if damage >= 8 then
- damage = 7
- end
- if damage >= health.rightleg and health.rightleg > 0 then
- damage = damage - health.rightleg
- health.rightleg=0
- bonebreak()
- elseif damage < health.rightleg then
- health.rightleg=health.rightleg-damage
- damage=0
- end
- hud_blink_timer.rightleg=time_global()
- surgeryhp.rightleg=0
- else
- local damage_rl = damage
- local damage_ll = damage
- if damage_rl >= health.rightleg then
- damage_rl = damage_rl - health.rightleg
- health.rightleg=0
- bonebreak()
- elseif damage < health.rightleg then
- health.rightleg=health.rightleg-damage
- damage_rl=0
- end
- if damage_ll >= health.leftleg then
- damage_ll = damage_ll - health.leftleg
- health.leftleg=0
- bonebreak()
- elseif damage < health.leftleg then
- health.leftleg=health.leftleg-damage
- damage_ll=0
- end
- utils_obj.save_var(db.actor,"health.leftleg",health.leftleg)
- damage=damage_ll+damage_rl
- surgeryhp.leftleg=0
- surgeryhp.rightleg=0
- end
- utils_obj.save_var(db.actor,"health.rightleg",health.rightleg)
- end
-
- if damage>0 and (bhs_exp_mode or bhs_bleed) then
- printf("! Damage spilling over! Spillover: %s", damage)
- while damage > 0 do
- local damage_parts = 1
- local damage_rest = 0
- local count = 0
- for k,v in pairs(health) do
- if v > 0 then
- if string.match(k, "torso") then
- count = count + 1
- end
- count = count + 1
- end
- end
- if count == 0 then
- break
- end
- if damage >= count then
- printf("! Enough damage(%s) to hit all healthy limbs(%s) %s times", damage, count, damage/count)
- printf("! Torso counts as 2")
- damage_parts=math.floor(damage/count)
- for k in pairs(health) do
- if health[k] > 0 then
- if string.match(k, "torso") then
- damage_torso = damage_parts*2
- if damage_torso >= health.torso then
- damage_torso = damage_torso - health.torso
- health.torso=0
- bonebreak()
- else
- health.torso=health.torso-damage_torso
- end
- damage = damage - damage_torso
- else
- if damage_parts >= health[k] then
- damage_parts = damage_parts - health[k]
- health[k]=0
- bonebreak()
- else
- health[k]=health[k]-damage_parts
- end
- damage = damage - damage_parts
- end
- surgeryhp[k]=0
- end
- end
- printf("! Damage left: %s", damage)
- printf("! Spillover pass finished, damage left: %s", damage)
- else
- printf("! NOT enough damage(%s) to hit all healthy limbs(%s) at least once.", damage, count)
- printf("! Hitting randomly")
- damage_rest=damage%count
- local index=0
- for k,v in pairs(health) do
- index=index+1
- end
- while damage_rest > 0 do
- local random_number=math.random(1,index)
- if random_number==1 then
- choosen_hitbox="head"
- elseif random_number==2 then
- choosen_hitbox="torso"
- elseif random_number==3 then
- choosen_hitbox="leftarm"
- elseif random_number==4 then
- choosen_hitbox="rightarm"
- elseif random_number==5 then
- choosen_hitbox="leftleg"
- elseif random_number==6 then
- choosen_hitbox="rightleg"
- end
- if health[choosen_hitbox] > 0 then
- health[choosen_hitbox]=health[choosen_hitbox]-1
- surgeryhp[choosen_hitbox]=0
- damage_rest=damage_rest-1
- printf("! Hitting %s once", choosen_hitbox)
- else
- printf("! Hitting %s but it is damaged, trying again", choosen_hitbox)
- end
- end
- printf("! Finished hitting, no damage left. Breaking")
- break
- end
- end
- else
- damage = 0
- end
-
- for k,v in pairs(health) do
- local missinghealth = 0
- if v < maxhp[k] then
- missinghealth = maxhp[k] - v
- if missinghealth < 0 then missinghealth = 0 end
- end
- local bonus = painkillerlist.painkillerpower
- if string.match(k, "head") or string.match(k, "torso") then
- bonus = painkillerlist.painkillerpower * 2
- end
- if bonus > missinghealth then
- bonus = missinghealth
- end
- timedhp[k] = bonus
- end
- healtimer=time_global()
-end
-
---19 head
---15 - head
---16 - head
---17 - head
-
---13 - upper torso
---12 - middle torso
---11 - lower torso
---2 pelvis
-
---20 left shoulder
---21 left upper arm
---22 left forearm
---23 left hand
-
---33 right shoulder
---34 right upepr arm
---35 right forearm
---36 right hand
-
---3 left upper leg
---4 left lower leg
-
---7 right upeprleg
---8 right lower leg
-
-local hitboxes={}
-hitboxes[19]="head"
-hitboxes[17]="head"
-hitboxes[16]="head"
-hitboxes[15]="head"
-hitboxes[14]="head"
-hitboxes[13]="torso"
-hitboxes[12]="torso"
-hitboxes[11]="torso"
-hitboxes[2]="torso"
-hitboxes[20]="leftarm"
-hitboxes[21]="leftarm"
-hitboxes[22]="leftarm"
-hitboxes[23]="leftarm"
-hitboxes[33]="rightarm"
-hitboxes[34]="rightarm"
-hitboxes[35]="rightarm"
-hitboxes[36]="rightarm"
-hitboxes[3]="leftleg"
-hitboxes[4]="leftleg"
-hitboxes[5]="fall damage"
-hitboxes[6]="fall damage"
-hitboxes[9]="fall damage"
-hitboxes[10]="fall damage"
-hitboxes[7]="rightleg"
-hitboxes[8]="rightleg"
-
-local function actor_on_hit_callback(obj, amount, local_direction, who, bone_id)
- local random = false
- local redirect = false
- local last_boneid = bone_id
- if bone_id == 65535 then -- toxic anomalies and radiation. It was hitting head or torso be redirected to arms or torso instead
- rand = math.random(1,5)
- redirect = true
- if rand == 1 or rand == 2 or rand == 3 then
- bone_id = 12
- elseif rand == 4 then
- bone_id = 20
- elseif rand == 5 then
- bone_id = 33
- end
- end
- hit.fall = false
- if (bone_id == 0 or bone_id == 5 or bone_id == 6 or bone_id == 9 or bone_id == 10) and hit.type == "Strike" and hit.draftsman:id()==0 then -- attributes fall damage to left or right leg. 8 = explosive,7 = strike
- hit.fall=true
- if rand == 1 then
- bone_id = 3
- else
- bone_id = 7
- end
- end
- if bone_id == 0 and hit.type == "Chemical" then -- attributes chemical damage to left or right leg.
- if rand == 1 then
- bone_id = 3
- else
- bone_id = 7
- end
- redirect=true
- end
- if hitboxes[bone_id] then
- hit.bone_id_adj=hitboxes[bone_id]
- text=hitboxes[bone_id]
- else -- if an unknown bone is hit, arms or torso are hit
- random = true
- bone_id = math.random(1,3)
- if bone_id == 1 then
- bone_id = 35
- elseif bone_id == 2 then
- bone_id = 23
- elseif bone_id == 3 then
- bone_id = 11
- end
- hit.bone_id_adj=hitboxes[bone_id]
- text=hitboxes[bone_id]
- end
- local damage=amount
- hit.damage = damage
- if hit.fall then
- text = "both legs"
- end
- printf("! Actor got hit in %s, random? %s, redirected? %s, damagescale: %s, damage threshold: %s. Original bone: %s, damage type: %s",text, random, redirect, damagescale, damage_threshold, hit.bone_id, hit.type)
- printf("! Damage: %s",damage)
- --printf("! Whodunit: %s",who:id())
- if not hit.bone_id then
- printf("! NOT A PROPER HIT! BONEID: %s, WHODUNIT: %s", last_boneid, who:id())
- end
- if damage>damage_threshold then
- if hit.fall then
- damage=damage*fall_mult
- printf("! Fall damage increased to %s, fall multiplier: %s", damage, fall_mult)
- end
- received_damage(damage)
- else
- --printf("! Not enough damage taken")
- hit.power = nil
- hit.fall = nil
- hit.bone_id = nil
- hit.bone_id_adj = nil
- hit.draftsman = nil
- end
- SaveHealthStatus()
-end
-
-function actor_on_before_hit(shit, bone_id)
- if shit.type == 7 then hit.type = "Strike"
- elseif shit.type == 6 then hit.type = "Gunshot"
- elseif shit.type == 8 then hit.type = "Explosive"
- elseif shit.type == 2 then hit.type = "Chemical"
- elseif shit.type == 1 then hit.type = "Electric"
- elseif shit.type == 10 then hit.type = "Fire"
- elseif shit.type == 0 then hit.type = "Burn"
- else hit.type=shit.type end
- hit.power=shit.power
- hit.bone_id=bone_id
- hit.draftsman=shit.draftsman
- if (hit.type == "Chemical" or hit.type == "Burn" or hit.type == "Flame") and shit.power <0.01 then
- hit.apply=true
- end
-end
-
-local progress_stamina=nil
-local progress_health=nil
-local progress_health_head=nil
-local progress_health_torso=nil
-local progress_health_rightarm=nil
-local progress_health_leftarm=nil
-local progress_health_rightleg=nil
-local progress_health_leftleg=nil
-
-
-local progress_health_head_time=nil
-local progress_health_torso_time=nil
-local progress_health_rightarm_time=nil
-local progress_health_leftarm_time=nil
-local progress_health_rightleg_time=nil
-local progress_health_leftleg_time=nil
-
-local progress_health_torso_surgery=nil
-local progress_health_rightarm_surgery=nil
-local progress_health_leftarm_surgery=nil
-local progress_health_rightleg_surgery=nil
-local progress_health_leftleg_surgery=nil
-
-local scuffed_fix = false
-local function HUDUpdate()
- if showtexthud>=1 then --text
- local staticname="body_health_system_text"
- if showtexthud==1 then
- staticname="body_health_system_text"
- elseif showtexthud==2 then
- staticname="cop_debug"
- end
- local hud = get_hud()
- local hud_d = hud:GetCustomStatic(staticname)
- local wnd
-
- if not healthstatus or show_hud_type~=2 then --not show
- if (hud_d ~= nil) then
- hud:RemoveCustomStatic(staticname)
- hud_d = nil
- end
- return
- end
-
- if (hud_d == nil) then
- hud:AddCustomStatic(staticname,true)
- hud_d = hud:GetCustomStatic(staticname)
- wnd = hud_d:wnd()
- if (wnd ~= nil) then
- wnd:SetAutoDelete(true)
- end
- end
-
- if (hud_d ~= nil) then
- wnd = hud_d:wnd()
- local str=""
- if hud_vertical_spacing or hud_vertical_spacing>0 then
- for i=1,hud_vertical_spacing do
- str=str.." \\n"
- end
- end
-
- local showparts=true
- if hide_if_healthy then
- showparts=false
- for k,v in pairs(health) do
- if (v0) then
- showparts=true
- break
- end
- end
- end
- if not showparts then
- str=str.." \\n".." \\n".." \\n".." \\n"
- end
- if show_player_name then
- str=str..colors.grey..db.actor:character_name().."\\n"
- else
- str=str.." \\n"
- end
-
- local function AddToHUDCircles(array,text,class,array2)
- if class=="main" and showparts then
- str = str..colors[GetConditionFromFloat(health[array]/maxhp[array],array)]
- for i=1,(preview.health[array] or health[array]) do
- str=str.."В•"
--- str=str.."пїЅ"
- end
- str=str..colors.critical
- for i=1,(preview.surgeryhp[array] or surgeryhp[array]) do
- str=str.."В•"
--- str=str.."пїЅ"
- end
- str=str..colors.good
- for i=1,(preview.bonus[array] or timedhp[array]) do
- str=str.."В•"
--- str=str.."пїЅ"
- end
- str=str..colors.blank
- for i=1,maxhp[array]-(preview.health[array] or health[array])-(preview.bonus[array] or timedhp[array]) do
- str=str.."В•"
--- str=str.."пїЅ"
- end
- local whatcolor="grey"
- if health[array]<=4 then whatcolor="critical" end
- if health[array]==0 then whatcolor="blank" end
- -- local hp_addition=preview.health[array]
- -- if hp_addition>0 then
- -- text=text..colors.blue.." +"..hp_addition
- -- end
- -- local green_addition=preview.bonus[array]
- -- if green_addition>0 then
- -- text=text..colors.good.." +"..green_addition
- -- end
- str=str..colors[whatcolor].." // "..text.."\\n"--.." H:"..health[array].." T:"..timedhp[array].." S:"..surgeryhp[array].." PH:"..preview.health[array].." PB:"..preview.bonus[array].." S:"..preview.surgeryhp[array].."\\n"
- end
- if not (zzz_player_injuries_mcm.get_config("TEXT_BASED_PATCH")) then
- if class=="condition" then
- local hp_in_ints=math.floor(db.actor.health*11)
- str = str..colors.blue
- if db.actor.health>=1.0 then hp_in_ints=11 end
- if db.actor.health<=0.0 then hp_in_ints=0 end
- for i=1,hp_in_ints do
- str=str.."В•"
--- str=str.."пїЅ"
- end
- str=str..colors.blank
- for i=1,11-hp_in_ints do
- str=str.."В•"
--- str=str.."пїЅ"
- end
- local whatcolor="grey"
- if db.actor.health<=0.4 then whatcolor="critical" end
- if db.actor.health<=0 then whatcolor="blank" end
- str=str..colors[whatcolor].." // "..text.."\\n"
- elseif class=="stamina" then
- local hp_in_ints=math.floor(db.actor.power*11)
- str = str..colors.blue
- if db.actor.power>=1.0 then hp_in_ints=11 end
- if db.actor.power>0.98 then hp_in_ints=11 end
- if db.actor.power<=0.0 then hp_in_ints=0 end
- for i=1,hp_in_ints do
- str=str.."В•"
--- str=str.."пїЅ"
- end
- str=str..colors.blank
- for i=1,11-hp_in_ints do
- str=str.."В•"
--- str=str.."пїЅ"
- end
- local whatcolor="grey"
- -- if db.actor.power<=0.4 then whatcolor="critical" end
- -- if db.actor.power<=0 then whatcolor="blank" end
- str=str..colors[whatcolor].." // "..text.."\\n"
- end
- end
- if class=="limbs" and showparts then
- str = str..colors[GetConditionFromFloat(health[array]/maxhp[array],array)]
- for i=1,(preview.health[array] or health[array]) do
- str=str.."В•"
--- str=str.."пїЅ"
- end
- str=str..colors.critical
- for i=1,(preview.surgeryhp[array] or surgeryhp[array]) do
- str=str.."В•"
--- str=str.."пїЅ"
- end
- str=str..colors.good
- for i=1,(preview.bonus[array] or timedhp[array]) do
- str=str.."В•"
--- str=str.."пїЅ"
- end
- str=str..colors.blank
- for i=1,maxhp[array]-(preview.health[array] or health[array])-(preview.bonus[array] or timedhp[array]) do
- str=str.."В•"
--- str=str.."пїЅ"
- end
- str=str.." "
- if (preview.health[array2] or health[array2])0 then
- -- text=text..colors.blue.." +"..hp_addition
- -- end
- -- local green_addition=preview.bonus[array]
- -- if green_addition>0 then
- -- text=text..colors.good.." +"..green_addition
- -- end
- str=str..colors[whatcolor].." // "..text.."\\n"--.." H[1]:"..health[array].." T[1]:"..timedhp[array].." S[1]:"..surgeryhp[array].." PH[1]:"..preview.health[array].." PB[1]:"..preview.bonus[array].." PS[1]:"..surgeryhp[array].." H[2]:"..health[array2].." T[2]:"..timedhp[array2].." S[2]:"..surgeryhp[array].." PH[2]:"..preview.health[array2].." PB[2]:"..preview.bonus[array2].." S[2]:"..surgeryhp[array].."\\n"
- end
- end
-
- local preview_show=false
- for k,v in pairs(preview.health) do
- if preview.health[k] then
- preview_show=true
- break
- end
- end
- for k,v in pairs(preview.bonus) do
- if preview.bonus[k] then
- preview_show=true
- break
- end
- end
-
- AddToHUDCircles("head","Head","main")
- AddToHUDCircles("torso","Torso","main")
- AddToHUDCircles("leftarm","Arms","limbs","rightarm")
- AddToHUDCircles("leftleg","Legs","limbs","rightleg")
- if not (zzz_player_injuries_mcm.get_config("TEXT_BASED_PATCH")) then
- AddToHUDCircles(nil,"Condition","condition")
- AddToHUDCircles(nil,"Stamina","stamina")
- end
-
- local green = math.floor(255 * ((100 - 100)/100))
- local red = math.floor(255 * (100/100))
- wnd:TextControl():SetTextST(str)
- wnd:TextControl():SetTextColor(GetARGB(255, 255, 255, 255))
-
-
- local hud = get_hud()
- if not (hud) then
- return
- end
- end
- else --pics
- local staticname="body_health_system"
- if display.types[display_ratio] then
- if display_ratio~=169 then
- staticname=staticname.."_"..tostring(display_ratio)
- end
- end
- local hud = get_hud()
- local hud_d = hud:GetCustomStatic(staticname)
- local wnd
-
- if not healthstatus or show_hud_type~=2 then --not show
- if (hud_d ~= nil) then
- hud:RemoveCustomStatic(staticname)
- hud_d = nil
- end
- goto otherhudparts
- end
-
- if (hud_d == nil) then
- hud:AddCustomStatic(staticname,true)
- hud_d = hud:GetCustomStatic(staticname)
- wnd = hud_d:wnd()
- if (wnd ~= nil) then
- wnd:SetAutoDelete(true)
- end
- end
-
- if (hud_d ~= nil) then
- wnd = hud_d:wnd()
-
-
- local hud = get_hud()
- if not (hud) then
- return
- end
- end
-
- ::otherhudparts::
- local xml = CScriptXmlInit()
- xml:ParseFile("ui_body_health.xml")
-
- local function ParamBar(barhandler,customstatic,barname,param,param_max,showbg)
-
- ---- minimal bgs ----
- local staticname
- if showbg then
- staticname=customstatic.."_bg"
- else
- staticname="bhs_garbage"
- end
- if display.types[display_ratio] then
- if display_ratio~=169 then
- staticname=staticname.."_"..tostring(display_ratio)
- end
- end
- local hud = get_hud()
- local hud_d = hud:GetCustomStatic(staticname)
- local wnd
-
- if not healthstatus or show_hud_type~=1 or (not showbg) then --not show
- if (hud_d ~= nil) then
- hud:RemoveCustomStatic(staticname)
- hud_d = nil
- end
- else
- if (hud_d == nil) then
- hud:AddCustomStatic(staticname,true)
- hud_d = hud:GetCustomStatic(staticname)
- wnd = hud_d:wnd()
- if (wnd ~= nil) then
- wnd:SetAutoDelete(true)
- end
- end
-
- if (hud_d ~= nil) then
- wnd = hud_d:wnd()
-
- local hud = get_hud()
- if not (hud) then
- goto progressbars
- end
- end
-
- end
- -------------------
- ::progressbars::
-
- if display.types[display_ratio] then
- if display_ratio~=169 then
- customstatic=customstatic.."_"..tostring(display_ratio)
- barname=barname.."_"..tostring(display_ratio)
- end
- end
-
- local cs_name = hud:GetCustomStatic(customstatic)
- if (cs_name == nil) then
- if not (scuffed_fix) then
- hud:AddCustomStatic(customstatic, true)
- cs_name = hud:GetCustomStatic(customstatic)
- local w = cs_name:wnd()
- barhandler = xml:InitProgressBar(barname, w)
- barhandler:Show(true)
- barhandler:SetProgressPos(55)
- scuffed_fix = true
- CreateTimeEvent("bvcx", "bvcx", disable_hud_fps_fix_tmr, worst_possible_fix)
- end
- else
- if not param_max then --default 0 to 100
- param=param*100
- if not param then param=0 end
- barhandler:SetProgressPos(param)
- else
- param=param*100/param_max
- if not param then param=0 end
- barhandler:SetProgressPos(param)
- end
- end
- if show_hud_type<1 or (time_global()-show_hud_change_time<50) then --not show
- if (cs_name ~= nil) then
- hud:RemoveCustomStatic(customstatic)
- cs_name = nil
- end
- -- barhandler:Show(false)
- -- else
- -- barhandler:Show(true)
- end
- return barhandler
- end
-
- --- yellow bkg lines equials health+timedhp -----
- local function nil_math(array)
- local arg=health[array]+timedhp[array]
- if preview.health[array] or preview.bonus[array] then
- arg=(preview.health[array] or 0)+(preview.bonus[array] or 0)
- end
- return arg
- end
-
- progress_health_head_time=ParamBar(progress_health_head_time,"bhs_health_head_bar_green","bhs_health_bodypart_green", nil_math("head"),maxhp.head,false)
- progress_health_torso_time=ParamBar(progress_health_torso_time,"bhs_health_torso_bar_green","bhs_health_bodypart_green", nil_math("torso"),maxhp.torso,false)
- progress_health_rightarm_time=ParamBar(progress_health_rightarm_time,"bhs_health_rightarm_bar_green","bhs_health_bodypart_green", nil_math("rightarm"),maxhp.rightarm,false)
- progress_health_leftarm_time=ParamBar(progress_health_leftarm_time,"bhs_health_leftarm_bar_green","bhs_health_bodypart_green", nil_math("leftarm"),maxhp.leftarm,false)
- progress_health_rightleg_time=ParamBar(progress_health_rightleg_time,"bhs_health_rightleg_bar_green","bhs_health_bodypart_green", nil_math("rightleg"),maxhp.rightleg,false)
- progress_health_leftleg_time=ParamBar(progress_health_leftleg_time,"bhs_health_leftleg_bar_green","bhs_health_bodypart_green", nil_math("leftleg"),maxhp.leftleg,false)
- -----------------------------
-
- --- blue bkg health equals heals -----
- if not (zzz_player_injuries_mcm.get_config("TEXT_BASED_PATCH")) then
- progress_stamina=ParamBar(progress_stamina,"bhs_stamina_bar","bhs_stamina",db.actor.power,nil,true)
- end
- progress_health=ParamBar(progress_health,"bhs_health_bar","bhs_health",db.actor.health,nil,true)
-
- progress_health_head=ParamBar(progress_health_head,"bhs_health_head_bar","bhs_health_bodypart", preview.health.head or health.head,maxhp.head,true)
- progress_health_torso=ParamBar(progress_health_torso,"bhs_health_torso_bar","bhs_health_bodypart", preview.health.torso or health.torso,maxhp.torso,true)
- progress_health_rightarm=ParamBar(progress_health_rightarm,"bhs_health_rightarm_bar","bhs_health_bodypart", preview.health.rightarm or health.rightarm,maxhp.rightarm,true)
- progress_health_leftarm=ParamBar(progress_health_leftarm,"bhs_health_leftarm_bar","bhs_health_bodypart", preview.health.leftarm or health.leftarm,maxhp.leftarm,true)
- progress_health_rightleg=ParamBar(progress_health_rightleg,"bhs_health_rightleg_bar","bhs_health_bodypart", preview.health.rightleg or health.rightleg,maxhp.rightleg,true)
- progress_health_leftleg=ParamBar(progress_health_leftleg,"bhs_health_leftleg_bar","bhs_health_bodypart", preview.health.leftleg or health.leftleg,maxhp.leftleg,true)
- -------------------------------------
-
- --- red bkg health equals surgery -----
-
- progress_health_torso_surgery=ParamBar(progress_health_torso_surgery,"bhs_health_torso_bar_blue","bhs_health_bodypart_blue", preview.surgeryhp.torso or surgeryhp.torso,maxhp.torso,false)
- progress_health_rightarm_surgery=ParamBar(progress_health_rightarm_surgery,"bhs_health_rightarm_bar_blue","bhs_health_bodypart_blue", preview.surgeryhp.rightarm or surgeryhp.rightarm,maxhp.rightarm,false)
- progress_health_leftarm_surgery=ParamBar(progress_health_leftarm_surgery,"bhs_health_leftarm_bar_blue","bhs_health_bodypart_blue", preview.surgeryhp.leftarm or surgeryhp.leftarm,maxhp.leftarm,false)
- progress_health_rightleg_surgery=ParamBar(progress_health_rightleg_surgery,"bhs_health_rightleg_bar_blue","bhs_health_bodypart_blue", preview.surgeryhp.rightleg or surgeryhp.rightleg,maxhp.rightleg,false)
- progress_health_leftleg_surgery=ParamBar(progress_health_leftleg_surgery,"bhs_health_leftleg_bar_blue","bhs_health_bodypart_blue", preview.surgeryhp.leftleg or surgeryhp.leftleg,maxhp.leftleg,false)
- -------------------------------------
- end
-end
-
-function worst_possible_fix()
- scuffed_fix = false
- return true
-end
-
-function on_key_press(dik)
- if dik == DIK_keys.DIK_H then
- -- if healthstatus then
- -- healthstatus=false
- -- xr_sound.set_sound_play(db.actor:id(), "pda_tips")
- -- else
- -- healthstatus=true
- -- staticplacement=lazyworkaroundplacement
- -- xr_sound.set_sound_play(db.actor:id(), "pda_alarm")
- -- end
- if showtexthud>0 then
- healthstatus=not healthstatus
- else
- if show_hud_type==0 then show_hud_type=1 show_hud_change_time=time_global()
- elseif show_hud_type==1 then show_hud_type=2 show_hud_change_time=time_global()
- elseif show_hud_type==2 then show_hud_type=0 show_hud_change_time=time_global()
- end
- end
- xr_sound.set_sound_play(db.actor:id(), "pda_tips")
- HUDUpdate()
- -- elseif dik==DIK_keys.DIK_J then
- -- health.rightarm=health.rightarm-1
- -- elseif dik==DIK_keys.DIK_K then
- -- health.leftarm=health.leftarm-1
- -- db.actor:give_game_news("resolution", tostring(options) or "nil", db.actor:character_icon(), 0, 10000)
- -- xr_sound.set_sound_play(db.actor:id(), "pda_tips")
- end
-end
-
-local function actor_on_weapon_zoom_in(wpn) --maybe needed for sway idk
- shaking_hands()
-end
-
-local function actor_on_weapon_zoom_out(wpn)
- shaking_hands_remove()
- end
-
-local tg_anm = 0
-local delay_anm_play = 500
-
-cooldown = 1000
-state_cooldown = 0
-local function actor_on_footstep(material,power,hud_view,flags)
-
-
- local tg = time_global()
- local right_l = (health.leftleg + timedhp.leftleg) * effects_mult -- right is left
- local left_l = (health.rightleg + timedhp.rightleg) * effects_mult
- if right_l < 1 then right_l = 0.8 end -- exp will still make big difference between 1 and 0.8
- if left_l < 1 then left_l = 0.8 end
- local legs_sum = (right_l + left_l) * effects_mult
- local left_limp = math.exp(1.5/left_l) --
- local right_limp = math.exp(1.5/right_l)
- local both_limp = (right_limp + left_limp) / 2
- local mst = IsMoveState('mcSprint') -- sprint is tearing animations apart, the only way is to increase delay for it
-
- if tg > tg_anm then
- if leftleg_flag then
- if not mst then
- level.add_cam_effector("camera_effects\\switch\\" .. leftleg_anm[math.random(#leftleg_anm)] .. ".anm", 99251, false, "", 0, false, ((left_limp - 1) * (zzz_player_injuries_mcm.get_config("leg_animation_power"))) )
- tg_anm = tg + delay_anm_play end
- -- actor_menu.set_msg(1, strformat("Left leg HP: %s | Left leg Power: %s", left_l, left_limp))
- elseif rightleg_flag then
- if not mst then
- level.add_cam_effector("camera_effects\\switch\\" .. rightleg_anm[math.random(#rightleg_anm)] .. ".anm", 99261, false, "", 0, false, ((right_limp - 1) * (zzz_player_injuries_mcm.get_config("leg_animation_power"))) )
- tg_anm = tg + delay_anm_play end
- -- actor_menu.set_msg(1, strformat("Right leg HP: %s | Right leg Power: %s", right_l, right_limp))
- elseif bothlegs_flag then
- level.add_cam_effector("camera_effects\\switch\\" .. bothlegs_anm[math.random(#bothlegs_anm)] .. ".anm", 99271, false, "", 0, false, ((both_limp - 1) * (zzz_player_injuries_mcm.get_config("leg_animation_power"))) )
- if not mst then tg_anm = tg + delay_anm_play
- else tg_anm = tg + delay_anm_play * 1.6 end
- -- actor_menu.set_msg(1, strformat("Both legs HP: %s | Both legs Power: %s", legs_sum, both_limp))
- end
- end
-
- local l_leg_power = 0
- local r_leg_power = 0
- local hit_power = 0
- local cr = IsMoveState('mcCrouch')
- local low_cr = cr and IsMoveState('mcAccel')
-
- if mst then -- comment this and uncomment next one for super memes !!
--- if (not (cr or low_cr) ) and (left_l < 1 or right_l < 1) then
- local right_l_mst = health.leftleg * effects_mult -- right is left
- local left_l_mst = health.rightleg * effects_mult
- if right_l_mst < 1 then right_l = 0.8 end -- exp will still make big difference between 1 and 0.8
- if left_l_mst < 1 then left_l = 0.8 end
-
- if left_l_mst <= (zzz_player_injuries_mcm.get_config("leg_limping_damage_minimum_hp")) then
- l_leg_power = 0.0290
- end
-
- if right_l_mst <= (zzz_player_injuries_mcm.get_config("leg_limping_damage_minimum_hp")) then
- r_leg_power = 0.0290
- end
-
- hit_power = (l_leg_power + r_leg_power) / 2
-
- -- printf("hit_power: " .. (hit_power))
- local file
- local chance = math.random(1,100)
- if (hit_power > 0) and (state_cooldown < time_global()) and (chance<=35) then
- if zzz_player_injuries_mcm.get_config("new_voice_sounds") then
- local helmet = (db.actor:item_in_slot(12) or db.actor:get_current_outfit())
- local sound_play = math.random(1,13)
- if helmet then
- muffle = ""
- else
- muffle = ""
- end
- file = "bhs\\" .. muffle .. "pain_" .. sound_play
- else
- file = "actor\\pain_" .. sound_play
- end
-
- file_to_say = sound_object( file )
- file_to_say:play(db.actor,0,sound_object.s2d)
-
- level.add_pp_effector("blur_bhs.ppe", math.random(655808, 655820), false)
-
- state_cooldown = time_global() + cooldown
-
- actor_health = db.actor.health
- if bhs_exp_mode then
- hit_power = hit_power *0.25
- end
- actor_health_reduced = actor_health - hit_power
- db.actor:set_health_ex(actor_health_reduced)
- --hit.type="Fracture"
- end
- end
-
-
-end
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
-
-local is_body_parts_damaged = false
-local function check_body_parts()
- local head_difference = maxhp.head - health.head
- local torso_difference = maxhp.torso - health.torso
- local rightarm_difference = maxhp.rightarm - health.rightarm
- local leftarm_difference = maxhp.leftarm - health.leftarm
- local rightleg_difference = maxhp.rightleg - health.rightleg
- local leftleg_difference = maxhp.leftleg - health.leftleg
-
- is_body_parts_damaged = false
-
- if (head_difference > 0 or torso_difference > 0 or rightarm_difference > 0 or leftarm_difference > 0 or rightleg_difference > 0 or leftleg_difference > 0) then
- is_body_parts_damaged = true
- end
-end
-
-old_is_actor_not_healthy = dialogs.is_actor_not_healthy
-function dialogs.is_actor_not_healthy(first_speaker, second_speaker)
- check_body_parts()
-
- if (is_body_parts_damaged == true) then
- return true
- end
-
- return old_is_actor_not_healthy(first_speaker, second_speaker)
-end
-
-old_is_actor_injured = dialogs.is_actor_injured
-function dialogs.is_actor_injured(first_speaker, second_speaker)
- check_body_parts()
-
- if (is_body_parts_damaged == true) and (db.actor:money() >= 1850) then
- return true
- end
-
- return old_is_actor_injured(first_speaker, second_speaker)
-end
-
-old_is_actor_injured_irradiated = dialogs.is_actor_injured_irradiated
-function dialogs.is_actor_injured_irradiated(first_speaker, second_speaker)
- check_body_parts()
-
- if (is_body_parts_damaged == true) and (db.actor.radiation > 0) and (db.actor:money() >= 3350) then
- return true
- end
-
- return old_is_actor_injured_irradiated(first_speaker, second_speaker)
-end
-
-local function heal_body_parts()
- timedhp.head = 0
- health.head = maxhp.head
-
- timedhp.torso = 0
- health.torso = maxhp.torso
-
- timedhp.rightarm = 0
- health.rightarm = maxhp.rightarm
-
- timedhp.leftarm = 0
- health.leftarm = maxhp.leftarm
-
- timedhp.rightleg = 0
- health.rightleg=maxhp.rightleg
-
- timedhp.leftleg = 0
- health.leftleg=maxhp.leftleg
-
- SaveHealthStatus()
-end
-
-old_heal_actor_injury_radiation = dialogs.heal_actor_injury_radiation
-function dialogs.heal_actor_injury_radiation(first_speaker, second_speaker)
- old_heal_actor_injury_radiation(first_speaker, second_speaker)
-
- check_body_parts()
-
- if (is_body_parts_damaged == true) then
- heal_body_parts()
- end
-end
-
-old_heal_actor_injury = dialogs.heal_actor_injury
-function dialogs.heal_actor_injury(first_speaker, second_speaker)
- old_heal_actor_injury(first_speaker, second_speaker)
-
- check_body_parts()
-
- if (is_body_parts_damaged == true) then
- heal_body_parts()
- end
-end
-
---new code Eddie--------------------------------------------------------
-
-function rank_part(name)
- if string.find(name, "leg") then
- return 5
- elseif string.find(name, "arm") then
- return 4
- elseif string.match(name, "torso") then
- return 3
- elseif string.match(name, "head") then
- return 2
- else
- return 1
- end
-end
-local functor = function(t,a,b)
- local rank_a = a and rank_part(a) or 0
- local rank_b = b and rank_part(b) or 0
- if rank_a ~= rank_b then return rank_a > rank_b
- else
- return a > b
- end
-end
-
-local function HealOne(healpower,health,surgeryhp)
- local healupto = healpower
- if healupto == 0 then healupto=db.actor.health --Heal up to this percentage value. Medicine should have 1, regeneration uses actor health.
- elseif healupto > 1 then healupto = 1 end
- local healamount = 1
- local loopcounter = 1 --Only heal limbs that are not broken (broken = at 0 hp).
-
- if using_surgery then
- if splinting and (healpower>0 and medkit_is_splint) then loopcounter = 0 end
- while healamount > 0 do
- for k,v in pairs(health, functor) do
- adjustedhealth = v --Double health for arm&leg for deciding what to heal, since limbs have half hp of head/torso
- if string.find(k, "leg") or string.find(k, "arm") then
- adjustedhealth = adjustedhealth * 2
- end
- if adjustedhealth == loopcounter then
- if ((loopcounter==0 and surgeryhp[k]>0) and health[k] < maxhp[k] * healupto) or (loopcounter>0 and health[k] < maxhp[k] * healupto) then
- health[k] = health[k] + 1
- if health[k]>maxhp[k] then health[k]=maxhp[k] end
- if surgeryhp[k]>0 then surgeryhp[k] = surgeryhp[k] - 1 end
- healamount = 0
- --printf("Healed once")
- break
- end
- end
- end
- if loopcounter >= maxhp.head * healupto and loopcounter >= maxhp.torso * healupto
- and loopcounter >= maxhp.rightarm * 2 * healupto and loopcounter >= maxhp.rightleg * 2 * healupto then break end
- loopcounter = loopcounter + 1
- end
- else
- if (medkit_is_splint and healpower > 0) or not splinting then loopcounter=0 end
- while healamount > 0 do
- printf("Trying to limb with %s, healpower: %s",loopcounter,healpower)
- for k,v in pairs(health, functor) do
- adjustedhealth = v --Double health for arm&leg for deciding what to heal, since limbs have half hp of head/torso
- if string.find(k, "leg") or string.find(k, "arm") then
- adjustedhealth = adjustedhealth * 2
- end
- if adjustedhealth == loopcounter then
- if health[k] < maxhp[k] * healupto then
- health[k] = health[k] + 1
- if health[k]>maxhp[k] then health[k]=maxhp[k] end
- if surgeryhp[k]>0 then surgeryhp[k] = surgeryhp[k] - 1 end
- healamount = 0
- --printf("Healed once")
- break
- end
- end
- end
- if loopcounter >= maxhp.head * healupto and loopcounter >= maxhp.torso * healupto
- and loopcounter >= maxhp.rightarm * 2 * healupto and loopcounter >= maxhp.rightleg * 2 * healupto then break end
- loopcounter = loopcounter + 1
- end
- end
- SaveHealthStatus()
-end
-
-function ArtiHeal(healpower)
- printf("Artihealed or campfire once")
- HealOne(healpower,health,surgeryhp)
-end
-
-local function SurgeryUsed(name,health,surgeryhp)
- local surgeryamount = surgerylist[name].surgeryamount
- if surgeryamount <= 0 then return end
- --printf("Using surgery")
- if using_surgery and not surgery_all_limbs then
- if not surgery_heals and not (cms_restores_hp_too and string.match(name, "cms")) then
- for k,v in pairs(health, functor) do
- if v == 0 and surgeryhp[k] == 0 then
- if string.match(k, "torso") or string.match(k, "head") then
- surgeryhp[k] = surgeryamount*2
- else
- surgeryhp[k] = surgeryamount
- end
- --printf("Surgery used on %s",k)
- surgeryamount = 0
- if surgeryhp[k]>maxhp[k] then surgeryhp[k]=maxhp[k] end
- break
- end
- end
- else
- for k,v in pairs(health, functor) do
- if v == 0 then
- if string.match(k, "torso") or string.match(k, "head") then
- health[k] = surgeryamount*2
- else
- health[k] = surgeryamount
- end
- --printf("Surgery used on %s",k)
- surgeryamount = 0
- surgeryhp[k] = 0
- if health[k]>maxhp[k] then health[k]=maxhp[k] end
- break
- end
- end
- end
- elseif using_surgery and surgery_all_limbs then
- if not surgery_heals and not (cms_restores_hp_too and string.match(name, "cms")) then
- for k,v in pairs(health, functor) do
- if v == 0 and surgeryhp[k] == 0 then
- if string.match(k, "torso") or string.match(k, "head") then
- surgeryhp[k] = surgeryamount*2
- else
- surgeryhp[k] = surgeryamount
- end
- --printf("Surgery used on %s",k)
- if surgeryhp[k]>maxhp[k] then surgeryhp[k]=maxhp[k] end
- end
- end
- else
- for k,v in pairs(health, functor) do
- if v == 0 then
- if string.match(k, "torso") or string.match(k, "head") then
- health[k] = surgeryamount*2
- else
- health[k] = surgeryamount
- end
- --printf("Surgery used on %s",k)
- if health[k]>maxhp[k] then health[k]=maxhp[k] end
- if surgeryhp[k]>0 then surgeryhp[k] = 0 end
- end
- end
- end
- end
- SaveHealthStatus()
-end
-
-local function SplintUsed(name,health,surgeryhp)
- local splintamount = splintlist[name].splintamount
- if splintamount <= 0 then return end
-
- local loopcounter = 0
- if using_surgery then
- --printf("Using surgery")
- --printf("Splinting")
- for k,v in pairs(surgeryhp, functor) do
- if v >= 1 then
- health[k] = health[k] + surgeryhp[k]
- --printf("Splint used on %s",k)
- splintamount = 0
- surgeryhp[k] = 0
- if health[k]>maxhp[k] then health[k]=maxhp[k] end
- if splintamount <= 0 then break end
- end
- end
- else
- for k,v in pairs(health, functor) do
- if v == 0 then
- health[k] = health[k] + splintamount
- --printf("Splint used on %s",k)
- splintamount = 0
- surgeryhp[k] = 0
- if health[k]>maxhp[k] then health[k]=maxhp[k] end
- if splintamount <= 0 then break end
- end
- end
- end
- SaveHealthStatus()
-end
-
-----------------------------------------------------------------
-
-local currentBoosters = {}
-local boosterCounters = {}
-
-function manage_boosters()
- local c_obj = db.actor:cast_Actor()
-
- local function restoreState()
- if currentBoosters[BoosterID["HpRestore"]] then
- currentBoosters[BoosterID["HpRestore"]] = nil
- c_obj:conditions():BoostHpRestore(-(boosterCounters[BoosterID["HpRestore"]] or 0))
- boosterCounters[BoosterID["HpRestore"]] = nil
- end
- end
-
- local foundRadiationBooster = false
- c_obj:conditions():BoosterForEach(function(booster_type, booster_time, booster_value)
- if booster_type == BoosterID["HpRestore"] and booster_value > 0 then
- if boosterCounters[booster_type] then
- c_obj:conditions():BoostHpRestore(-boosterCounters[booster_type])
- else
- boosterCounters[booster_type] = 0
- end
-
- currentBoosters[booster_type] = booster_value
- boosterCounters[booster_type] = -booster_value
- c_obj:conditions():BoostHpRestore(boosterCounters[booster_type])
- foundRadiationBooster = true
- --printf("booster_type %s, booster_time %s, booster_value %s", booster_type, booster_time, booster_value+boosterCounters[booster_type])
- end
- end)
- if not foundRadiationBooster and currentBoosters[BoosterID["HpRestore"]] then
- restoreState()
- end
-end
-
-local status_check_timer = 0
-local status_check_interval = 250
-
-function actor_on_update()
- local statuschanged = false
- if bhs_exp_mode then
- manage_boosters()
- --if time_global() >= status_check_timer then
- -- status_check_timer = time_global() + status_check_interval
- --end
- if exp_druglist.restorepower > 0 then
- if time_global() - exp_druglist.lasttimestamp > exp_druglist.restoreduration then
- if exp_druglist.countdown_increments == 1 or exp_druglist.countdown_increments < 0 then
- db.actor:change_health(exp_druglist.restorepower)
- exp_druglist.countdown_increments = 0
- printf("(EXP) Restore effect ran out")
- exp_druglist.restoreduration = 0
- exp_druglist.restorepower = 0
- exp_druglist.lasttimestamp = time_global()
- elseif exp_druglist.countdown_increments > 1 then
- db.actor:change_health(exp_druglist.restorepower)
- exp_druglist.countdown_increments = exp_druglist.countdown_increments - 1
- exp_druglist.lasttimestamp = time_global()
- --printf("Restore countdowns left: %s",exp_druglist.countdown_increments)
- end
- statuschanged = true
- end
- end
- end
- --actor_menu.set_msg("width:"..device().width.." height:"..device().height)
- local newhealth=db.actor.health
- local amount=myhealth-newhealth
- if amount>0 and hit.type and bhs_exp_mode then
- if hit.apply then
- hit.apply=false
- else
- db.actor:change_health(amount)
- end
- printf("Damage received: %s, Type: %s",amount,hit.type)
- hit.type = nil
- elseif amount>0.001 and bhs_exp_mode then
- printf("Typeless damage received: %s",amount)
- end
- if db.actor.health <= 0 and bhs_exp_mode then
- printf("Allowing death")
- hit.death=true
- db.actor.health=1
- db.actor.health=-1
- end
- myhealth=db.actor.health
-
-
- if time_global() >= status_check_timer then
- status_check_timer = time_global() + status_check_interval
- for k,v in pairs(health) do
- if v>maxhp[k] then
- health[k]=maxhp[k]
- end
- if v<=0 then health[k]=0 end
- end
- for k,v in pairs(preview.health) do
- if v>maxhp[k] then
- preview.health[k]=maxhp[k]
- preview.bonus[k]=0
- end
- if v<=0 then preview.health[k]=0 end
- if (preview.health[k]+preview.bonus[k])>maxhp[k] then preview.bonus[k]=(health[k]-maxhp[k]) end -- needs a check
- end
-
- local allheal_ceiling=1
- if timedheal.torso>0 and time_global()-healhelplist.lastregen>healhelplist.healtimer then
- healhelplist.lastregen=time_global()
- if healhelplist.healpower == 0 then allheal_ceiling=db.actor.health
- else allheal_ceiling=healhelplist.healpower end
- for k,v in pairs(timedheal) do
- if v>0 then
- if health[k]~=0 or (not splinting) or (medkit_is_splint and medkits_all_heal) then -- broken
- if health[k]maxhp[k] then health[k]=maxhp[k] end
- end
- --printf("Healed all")
- else --printf("Wasted healing on %s",k)
- end
- timedheal[k]=timedheal[k]-1
- if timedheal[k]<0 then timedheal[k]=0 end
- end
- end
- statuschanged = true
- end
-
- if time_global() - healonelist.lastregen > healonelist.healtimer then
- if healonelist.healamount > 0 then
- HealOne(healonelist.healpower,health,surgeryhp) -- healing not capped to actor.health %
- healonelist.healamount = healonelist.healamount - 1
- if healonelist.healamount < 0 then
- healonelist.healamount = 0
- end
- if healonelist.healamount == 0 then
- healonelist.lastregen = 0
- healonelist.healpower = 0
- else
- healonelist.lastregen = time_global()
- end
- statuschanged = true
- end
- end
-
- if painkillerlist.painkillerpower > 0 then
- if time_global() - painkillerlist.lasttimestamp > painkillerlist.painkillerduration then
- if painkillerlist.countdown_increments == 1 or painkillerlist.countdown_increments < 0 then
- painkillerlist.countdown_increments = 0
- printf("Painkillers ran out")
- painkillerlist.painkillerpower = 0
- painkillerlist.painkillerduration = 0
- painkillerlist.lasttimestamp = time_global()
- if painkiller_grain_shader then level.remove_pp_effector(5020) end
- for k,v in pairs(health) do
- timedhp[k] = 0
- end
- elseif painkillerlist.countdown_increments > 1 then
- painkillerlist.countdown_increments = painkillerlist.countdown_increments - 1
- painkillerlist.lasttimestamp = time_global()
- --printf("Countdowns left: %s",painkillerlist.countdown_increments)
- end
- statuschanged = true
- end
- end
-
- if modifiedregen>0 and init then
- if time_global() - healtimer > modifiedregen then
- HealOne(newhealth,health,surgeryhp)
- healtimer = time_global()
- statuschanged = true
-
- end
- end
- if not init then
-
- display_width=device().width
- display_height=device().height
- local currentratio=display_width/display_height
-
- local closest=999
- local closestkey=999
- for k,v in pairs(display.types) do
- local d=math.abs(currentratio-v)
- if d missinghealth then
- bonus = missinghealth
- end
- timedhp[k] = bonus
- end
- SaveHealthStatus()
- end
-
- if not (zzz_player_injuries_mcm.get_config("TEXT_BASED_PATCH")) then
- local hidehudonce=false
- if hide_default_hud and not hidehudonce then
- local maingameui = ActorMenu.get_maingame()
- maingameui.m_ui_hud_states.m_ui_health_bar_show = false
- maingameui.m_ui_hud_states.m_ui_stamina_bar_show = false
- -- maingameui.m_ui_hud_states.m_ui_psy_bar_show = false
- hidehudonce=true
- end
- end
-
- local speedvector=db.actor:get_movement_speed()
- local movementspeed=(speedvector.x*speedvector.x)+(speedvector.y*speedvector.y)+(speedvector.z*speedvector.z)
-
- -- xcvb ---
- limp_speed_slow()
- torso_penalty()
- bhs_concussion()
- local curr_time = game.get_game_time()
- if (prev_time == nil) then prev_time = curr_time end
- if (curr_time:diffSec(prev_time) > 3) then
- prev_time = curr_time
- legs_limp()
- end
- ----------------------------
- end
- HUDUpdate()
- --if health.torso==0 then
- -- hit.death = true
- -- db.actor.health=-1
- --end
- if health.head== 0 then
- hit.death = true
- db.actor.health=-1
- printf("Allowing death from head reaching 0")
- end
- if hit.death then
- printf("Allowing death")
- db.actor.health=-1
- end
-end
-
-local function actor_on_before_death(whoID,flags)
- if bhs_exp_mode and not hit.death and arszi_psy.get_psy_health() > 0 then
- printf("!Preventing death")
- --if myhealth <=0 then
- -- printf("Healing to full from: %s, actual health: %s",myhealth, db.actor.health)
- -- db.actor.health=1
- --else
- -- printf("Resetting health to: %s, actual health: %s",myhealth, db.actor.health)
- -- db.actor.health=myhealth
- --end
-
- if hit.type then
- if hit.apply then
- hit.apply=false
- else
- db.actor.health=myhealth
- printf("!Revesing death damage")
- end
- end
- if db.actor.health <= 0 then
- printf("!Allowing death")
- hit.death=true
- end
- flags.ret_value = false
- return
- else
- HUDUpdate()
- health.head=maxhp.head
- health.torso=maxhp.torso
- health.rightarm=maxhp.rightarm
- health.leftarm=maxhp.leftarm
- health.rightleg=maxhp.rightleg
- health.leftleg=maxhp.leftleg
- timedhp.head=0
- timedhp.torso=0
- timedhp.rightarm=0
- timedhp.leftarm=0
- timedhp.rightleg=0
- timedhp.leftleg=0
- SaveHealthStatus()
- if volume_sound_x then
- exec_console_cmd("snd_volume_eff " .. volume_sound_x)
- end
- end
-end
-
-local function MedicineUsed(name,health,timedheal,surgeryhp,ispreview)
- --printf("Medicine used for %s",ispreview)
- if splintlist[name] then
- SplintUsed(name,health,surgeryhp)
- --printf("Splint used for %s",ispreview) -- see console output
- end
- if surgerylist[name] then
- SurgeryUsed(name,health,surgeryhp)
- --printf("Surgery used for %s",ispreview) -- see console output
- end
-
- if ispreview == 0 then
- if healhelplist[name] then
- healhelplist.lastregen=time_global()
- healhelplist.healtimer=healhelplist[name].healtimer
- healhelplist.healpower=healhelplist[name].healpower
- for k,v in pairs(timedheal) do
- local bonus=healhelplist[name][k]
- if bonus and (health[k]>0 or (health[k]==0 and (not splinting or (medkit_is_splint and healhelplist.healpower>0)))) then
- timedheal[k]=bonus
- end
- end
- --printf("Heal all used for %s",ispreview)
- end
- if healonelist[name] then
- healonelist.healamount = healonelist[name].healamount
- healonelist.healtimer = healonelist[name].healtimer
- healonelist.healpower = healonelist[name].healpower
- healonelist.lastregen = time_global()
- --printf("Heal one used for %s",ispreview)
- end
- if painkillerlist[name] then
- if painkillerlist.painkillerpower < painkillerlist[name].painkillerpower then
- painkillerlist.painkillerpower = painkillerlist[name].painkillerpower
- painkillerlist.countdown_increments=painkillerlist[name].countdown_increments
- --printf("Original duration: %s",painkillerlist[name].painkillerduration)
- painkillerlist.painkillerduration = painkillerlist[name].painkillerduration/painkillerlist.countdown_increments
- --printf("Countdowns set. New duration: %s",painkillerlist.painkillerduration)
- painkillerlist.lasttimestamp = time_global()
- elseif painkillerlist.painkillerpower == painkillerlist[name].painkillerpower then
- painkillerlist.countdown_increments=painkillerlist[name].countdown_increments
- --printf("Original duration: %s",painkillerlist[name].painkillerduration)
- painkillerlist.painkillerduration = painkillerlist[name].painkillerduration/painkillerlist.countdown_increments
- --printf("Countdowns set. New duration: %s",painkillerlist.painkillerduration)
- painkillerlist.lasttimestamp = time_global()
- end
- if painkiller_grain_shader then level.add_pp_effector("radiation.ppe", 5020, true) end
- --printf("Painkiller used for %s",ispreview)
- end
- for k,v in pairs(health) do
- local missinghealth = 0
- if v < maxhp[k] then
- missinghealth = maxhp[k] - v
- if missinghealth < 0 then missinghealth = 0 end
- end
- local bonus = painkillerlist.painkillerpower
- if string.match(k, "head") or string.match(k, "torso") then
- bonus = painkillerlist.painkillerpower * 2
- end
- if bonus > missinghealth then
- bonus = missinghealth
- end
- timedhp[k] = bonus
- end
- else
- if healonelist[name] then
- for i=1,healonelist[name].healamount do
- HealOne(healonelist[name].healpower,health,surgeryhp)
- --printf("HealOne used for %s",ispreview)
- end
- end
- if healhelplist[name] then
- local allheal_ceiling=1
- if healhelplist[name].healpower <= 0 then allheal_ceiling=db.actor.health
- else allheal_ceiling=healhelplist[name].healpower end
- for k,v in pairs(health) do
- local bonus = healhelplist[name][k]
- if bonus and (health[k]>0 or (health[k]==0 and (not splinting or (medkit_is_splint and healhelplist[name].healpower>0)))) then
- if health[k]+bonus>maxhp[k]*allheal_ceiling then
- health[k]=maxhp[k]*allheal_ceiling
- else
- health[k]=health[k]+bonus
- end
- end
- end
- --printf("Heal all used for %s",ispreview)
- end
- painkillerpreview = painkillerlist.painkillerpower
- if painkillerlist[name] then
- if painkillerpreview < painkillerlist[name].painkillerpower then
- painkillerpreview = painkillerlist[name].painkillerpower
- end
- --printf("Painkiller used for %s",ispreview)
- end
- if painkillerpreview > 0 then
- for k,v in pairs(health) do
- missinghealth = 0
- if v < maxhp[k] then
- missinghealth = maxhp[k] - v
- if missinghealth < 0 then missinghealth = 0 end
- end
- bonus = painkillerpreview
- if string.match(k, "head") or string.match(k, "torso") then
- bonus = painkillerpreview * 2
- end
- if bonus > missinghealth then
- bonus = missinghealth
- end
- preview.bonus[k] = bonus
- end
- end
- end
-end
-
-local function actor_on_sleep(hours)
- local hoursleft=hours
- printf("Sleepie time for : %s", hoursleft)
- for k,v in pairs(timedhp) do
- timedhp[k]=0
- painkillerlist.painkillerpower = 0
- painkillerlist.painkillerduration = 0
- painkillerlist.countdown_increments=0
- if painkiller_grain_shader then
- level.remove_pp_effector(5020)
- end
- end
- hoursleft = hoursleft*sleep_heal_power
- printf("Adjusted hours: %s", hoursleft)
- if sleep_heal then
- if sleep_heal_logic then
- printf("Sleep logic is on")
- for i=1,hoursleft do
- HealOne(0,health,surgeryhp)
- end
- else
- printf("Sleep logic is off")
- local head_difference=maxhp.head-health.head
- if head_difference>0 then
- if hoursleft>head_difference then
- health.head=maxhp.head
- hoursleft=hoursleft-head_difference
- utils_obj.save_var(db.actor,"health.head",health.head)
- else
- health.head=health.head+hoursleft
- utils_obj.save_var(db.actor,"health.head",health.head)
- return
- end
- end
- local torso_difference=maxhp.torso-health.torso
- if torso_difference>0 then
- if hoursleft>torso_difference then
- health.torso=maxhp.torso
- hoursleft=hoursleft-torso_difference
- utils_obj.save_var(db.actor,"health.torso",health.torso)
- else
- health.torso=health.torso+hoursleft
- utils_obj.save_var(db.actor,"health.torso",health.torso)
- return
- end
- end
- local rightarm_difference=maxhp.rightarm-health.rightarm
- if rightarm_difference>0 then
- if hoursleft>rightarm_difference then
- health.rightarm=maxhp.rightarm
- hoursleft=hoursleft-rightarm_difference
- utils_obj.save_var(db.actor,"health.rightarm",health.rightarm)
- else
- health.rightarm=health.rightarm+hoursleft
- utils_obj.save_var(db.actor,"health.rightarm",health.rightarm)
- return
- end
- end
- local leftarm_difference=maxhp.leftarm-health.leftarm
- if leftarm_difference>0 then
- if hoursleft>leftarm_difference then
- health.leftarm=maxhp.leftarm
- hoursleft=hoursleft-leftarm_difference
- utils_obj.save_var(db.actor,"health.leftarm",health.leftarm)
- else
- health.leftarm=health.leftarm+hoursleft
- utils_obj.save_var(db.actor,"health.leftarm",health.leftarm)
- return
- end
- end
- local rightleg_difference=maxhp.rightleg-health.rightleg
- if rightleg_difference>0 then
- if hoursleft>rightleg_difference then
- health.rightleg=maxhp.rightleg
- hoursleft=hoursleft-rightleg_difference
- utils_obj.save_var(db.actor,"health.rightleg",health.rightleg)
- else
- health.rightleg=health.rightleg+hoursleft
- utils_obj.save_var(db.actor,"health.rightleg",health.rightleg)
- return
- end
- end
- local leftleg_difference=maxhp.leftleg-health.leftleg
- if leftleg_difference>0 then
- if hoursleft>leftleg_difference then
- health.leftleg=maxhp.leftleg
- hoursleft=hoursleft-leftleg_difference
- utils_obj.save_var(db.actor,"health.leftleg",health.leftleg)
- else
- health.leftleg=health.leftleg+hoursleft
- utils_obj.save_var(db.actor,"health.leftleg",health.leftleg)
- return
- end
- end
- end
- end
- SaveHealthStatus()
-end
-
-local function actor_on_item_use(obj,objname)
- --printf("Used %s",objname)
- if bhs_exp_mode and objname then
- if exp_druglist[objname] then
- --printf("Used a restore item: %s",objname)
- --printf("Will restore %s HP",exp_druglist[objname].restorepower*ini_sys:r_float_ex(objname, "boost_time"))
- exp_druglist.restoreduration = ini_sys:r_float_ex(objname, "boost_time")*1000/exp_druglist[objname].countdown_increments
- exp_druglist.restorepower = exp_druglist[objname].restorepower
- exp_druglist.lasttimestamp = time_global()
- exp_druglist.countdown_increments = exp_druglist[objname].countdown_increments
- --printf("Set countdown_increments to: %s",exp_druglist.restoreduration)
- end
- end
- --printf("%s used for %s",objname,obj)
-
- --printf("It deals %s damage",eat_damage)
- if bhs_exp_mode and objname then
- local eat_health = ini_sys:r_float_ex(objname, "eat_health")
- if eat_health>0 then
- db.actor:change_health(-eat_health)
- end
- --item.boost_time = ini_sys:r_float_ex(sec, "boost_time")
- --if item.boost_time and item.boost_time ~= 0 then
- -- item.boost_health_restore = ini_sys:r_float_ex(sec, "boost_health_restore")
- --end
- end
- MedicineUsed(objname,health,timedheal,surgeryhp,0)
- SaveHealthStatus()
-end
-
-local function InitializePreviewBars()
- -- db.actor:give_game_news("init", "yes", db.actor:character_icon(), 0, 10000)
- -- xr_sound.set_sound_play(db.actor:id(), "pda_tips")
- preview.health.head=health.head
- preview.health.torso=health.torso
- preview.health.rightarm=health.rightarm
- preview.health.leftarm=health.leftarm
- preview.health.rightleg=health.rightleg
- preview.health.leftleg=health.leftleg
-
- preview.bonus.head=timedhp.head
- preview.bonus.torso=timedhp.torso
- preview.bonus.rightarm=timedhp.rightarm
- preview.bonus.leftarm=timedhp.leftarm
- preview.bonus.rightleg=timedhp.rightleg
- preview.bonus.leftleg=timedhp.leftleg
-end
-local function EmptyPreviewBars()
- -- db.actor:give_game_news("empty", "yes", db.actor:character_icon(), 0, 10000)
- -- xr_sound.set_sound_play(db.actor:id(), "pda_tips")
- for k,v in pairs(preview.health) do
- preview.health[k]=nil
- end
- for k,v in pairs(preview.bonus) do
- preview.bonus[k]=nil
- end
- for k,v in pairs(preview.surgeryhp) do
- preview.surgeryhp[k]=nil
- end
-end
-
-local focused_item
-
-local function copy_table(t)
- local n={}
- for k,v in pairs(t) do
- if type(v)=='table' then
- n[k]=copy_table(v)
- else
- n[k]=v
- end
- end
- return n
-end
-
-local function ActorMenu_on_item_focus_receive(item)
- if item:id()~=focused_item then
- EmptyPreviewBars()
- end
- local item_name=item:section()
- focused_item=item:id()
- --printf("Focused %s item",item_name)
- if healhelplist[item_name] or splintlist[item_name] or painkillerlist[item_name] or healonelist[item_name] or surgerylist[item_name] then
- --printf("It was a medical item")
- -- InitializePreviewBars()
- preview.health=copy_table(health)
- preview.bonus=copy_table(timedhp)
- preview.surgeryhp=copy_table(surgeryhp)
- MedicineUsed(item_name,preview.health,preview.bonus,preview.surgeryhp,1)
- end
-end
-
-local function ActorMenu_on_item_focus_lost(item)
- --printf("! on item focus lost "..(item and item:section() or "nil"))
- if focused_item==item:id() then
- EmptyPreviewBars()
- focused_item=nil
- end
-end
-
-local function ActorMenu_on_mode_changed(mode,last_mode)
- if last_mode==1 then --inv closed
- EmptyPreviewBars()
- focused_item=nil
- elseif last_mode==4 then --looting closed
- EmptyPreviewBars()
- focused_item=nil
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("on_option_change", on_option_change) -- xcvb
- RegisterScriptCallback("actor_on_first_update",actor_on_first_update) -- xcvb
- RegisterScriptCallback("on_key_press",on_key_press)
- RegisterScriptCallback("save_state",save_state) -- xcvb
- RegisterScriptCallback("load_state",load_state) -- xcvb
- RegisterScriptCallback("actor_on_weapon_zoom_in",actor_on_weapon_zoom_in) -- xcvb
- RegisterScriptCallback("actor_on_weapon_zoom_out",actor_on_weapon_zoom_out) -- xcvb
- RegisterScriptCallback("actor_on_footstep",actor_on_footstep) -- xcvb
- RegisterScriptCallback("actor_on_sleep",actor_on_sleep)
- if not grok_actor_damage_balancer then
- RegisterScriptCallback("actor_on_before_hit",actor_on_before_hit)
- end
- RegisterScriptCallback("actor_on_hit_callback",actor_on_hit_callback)
- RegisterScriptCallback("actor_on_update",actor_on_update)
- RegisterScriptCallback("actor_on_before_death",actor_on_before_death)
- RegisterScriptCallback("actor_on_item_use",actor_on_item_use)
- RegisterScriptCallback("ActorMenu_on_item_focus_receive",ActorMenu_on_item_focus_receive)
- RegisterScriptCallback("ActorMenu_on_item_focus_lost",ActorMenu_on_item_focus_lost)
- RegisterScriptCallback("ActorMenu_on_mode_changed",ActorMenu_on_mode_changed)
-end
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/zzz_player_injuries_mcm.script b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/zzz_player_injuries_mcm.script
deleted file mode 100644
index 7c4a7749..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/zzz_player_injuries_mcm.script
+++ /dev/null
@@ -1,110 +0,0 @@
--- If you don't use MCM, change your defaults from here.
-local defaults = {
- ["TEXT_BASED_PATCH"] = false,
- ["new_voice_sounds"] = true,
- ["leg_penalty_minimum_hp"] = 8,
- ["leg_limping_damage_minimum_hp"] = 0,
- ["leg_animation_power"] = 1.0,
- ["arm_penalty_minimum_hp"] = 20,
- ["arm_animation_power"] = 1.0,
- ["head_penalty_minimum_hp"] = 12,
- ["head_animation_power"] = 1.0,
- ["NATURAL_REGENERATION"] = false,
- ["regeneration_speed"] = 1.0,
- ["PAINKILLER_GRAIN_SHADER"] = false,
- ["SPLINTING"] = true,
- ["MEDKIT_IS_SPLINT"] = true,
- ["TOURNIQUET_IS_SPLINT"] = true,
- ["BANDAGE_IS_SPLINT"] = true,
- ["MEDKITS_HEAL_LOGIC"] = 2,
- ["REBIRTH_HEAL_LOGIC"] = 2,
- ["SLEEP_HEALS"] = true,
- ["SLEEP_HEALS_LOGICAL"] = true,
- ["SLEEP_HEALS_POWER"] = 1,
- ["USE_SURGERY"] = true,
- ["SURGERY_ALL_LIMBS"] = false,
- ["SURGERY_HEALS"] = false,
- ["CMS_RESTORES_HP_TOO"] = false,
- ["PSY_MECHANICS"] = true,
- ["ARTEFACT_HEALING"] = true,
- ["ARTEFACT_HEALING_POWER"] = 1,
- ["CAMPFIRE_HEALING"] = true,
- ["CAMPFIRE_HEALING_POWER"] = 1,
- ["limb_heal_interval"] = 20,
- ["loot_coefficient"] = 1,
- ["safe_uninstall"] = false,
- ["DAMAGE_MULT"] = 3.5,
- ["FALL_MULT"] = 2.0,
- ["BHS_EXPERIMENTAL_MODE"] = false,
- ["BHS_BLEEDTHROUGH"] = true
-}
-
-function get_config(key)
- if ui_mcm then return ui_mcm.get("body_health_system/"..key) else return defaults[key] end
-end
-
-function set_config(key, value)
- if ui_mcm then ui_mcm.set("body_health_system/" .. key, value) end
-end
-
-function on_mcm_load()
- op = { id= "body_health_system",sh=true ,gr={
- {id= "title",type= "slide",link= "ui_options_slider_player",text="ui_mcm_body_health_system_title",size= {512,50},spacing= 20 },
- {id = "TEXT_BASED_PATCH", type = "check", val = 1, def = false},
- {id = "new_voice_sounds", type = "check", val = 1, def = true},
- {id = "leg_penalty_minimum_hp", type = "track", val = 2, min=1,max=10,step=1, def = 8},
- {id = "leg_limping_damage_minimum_hp", type = "track", val = 2, min=-1 ,max=10,step=1, def = 0},
- {id = "leg_animation_power", type = "track", val = 2, min=0.1,max=2,step=0.1, def = 1},
- {id = "arm_penalty_minimum_hp", type = "track", val = 2, min=1,max=20,step=1, def = 16},
- {id = "arm_animation_power", type = "track", val = 2, min=0.1,max=2,step=0.1, def = 1},
- {id = "head_penalty_minimum_hp", type = "track", val = 2, min=1,max=20,step=1, def = 12},
- {id = "head_animation_power", type = "track", val = 2, min=0.1,max=2,step=0.1, def = 1},
- {id = "divider", type = "line"},
- {id = "NEW_OPTIONS", type = "desc", clr = {200, 200, 255, 200}, text = "ui_mcm_body_health_system_NEW_OPTIONS"},
- {id = "divider", type = "line"},
- {id = "BHS_REWRITE", type = "desc", clr = {200, 200, 255, 200}, text = "ui_mcm_body_health_system_BHS_REWRITE"},
- {id = "BHS_EXPERIMENTAL_MODE", type = "check", val = 1, def = false},
- {id = "BHS_BLEEDTHROUGH", type = "check", val = 1, def = true},
- {id = "divider", type = "line"},
- {id = "PAINKILLER_GRAIN_SHADER", type = "check", val = 1, def = false},
- {id = "divider", type = "line"},
- {id = "DAMAGE_MULT", type = "track", val = 2, min = 1, max = 5.0, step = 0.1, def = 3.5},
- {id = "FALL_MULT", type = "track", val = 2, min = 1, max = 5.0, step = 0.1, def = 2.0},
- {id = "divider", type = "line"},
- {id = "MEDKITS_HEAL_LOGIC", type = "list", val = 2, content={ {1,"MEDKITS_ALL_HEAL"}, {2,"MEDKITS_ONE_HEAL"}}, def=2.0},
- {id = "REBIRTH_HEAL_LOGIC", type = "list", val = 2, content={ {1,"REBIRTH_ALL_HEAL"}, {2,"REBIRTH_ONE_HEAL"}}, def=2.0},
- {id = "divider", type = "line"},
- {id = "USE_SURGERY", type = "check", val = 1, def = true},
- {id = "SURGERY_ALL_LIMBS", type = "check", val = 1, def = false},
- {id = "SURGERY_HEALS", type = "check", val = 1, def = false},
- {id = "CMS_RESTORES_HP_TOO", type = "check", val = 1, def = false},
- {id = "divider", type = "line"},
- {id = "SPLINTING", type = "check", val = 1, def = true},
- {id = "MEDKIT_IS_SPLINT", type = "check", val = 1, def = false},
- {id = "TOURNIQUET_IS_SPLINT", type = "check", val = 1, def = false},
- {id = "BANDAGE_IS_SPLINT", type = "check", val = 1, def = false},
- {id = "divider", type = "line"},
- {id = "PSY_MECHANICS", type = "check", val = 1, def = true},
- {id = "divider", type = "line"},
- {id = "SLEEP_HEALS", type = "check", val = 1, def = true},
- {id = "SLEEP_HEALS_LOGICAL", type = "check", val = 1, def = true},
- {id = "SLEEP_HEALS_POWER", type = "track", val = 2, min=1,max=5,step=1, def = 2},
- {id = "divider", type = "line"},
- {id = "NATURAL_REGENERATION", type = "check", val = 1, def = false},
- {id = "regeneration_speed", type = "track", val = 2, min=0.2,max=5,step=0.1, def = 1},
- {id = "divider", type = "line"},
- {id = "ARTEFACT_HEALING", type = "check", val = 1, def = true},
- {id = "ARTEFACT_HEALING_POWER", type = "track", val = 2, min=0.2,max=5,step=0.1, def = 1},
- {id = "divider", type = "line"},
- {id = "CAMPFIRE_HEALING", type = "check", val = 1, def = true},
- {id = "limb_heal_interval",type = "input", val = 2, min = 1, max = 100, def = 20},
- {id = "divider", type = "line"},
- {id = "loot_coefficient", type = "track", val = 2, min = 0.0, max = 3.0, step = 0.1, def = 1.0 },
- {id = "divider", type = "line"},
- {id = "safe_uninstall", type = "check", val = 1, def = false}
- }
- }
-
-
- return op
-end
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/zzzz_weapon_sway.script b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/zzzz_weapon_sway.script
deleted file mode 100644
index c7a6f796..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/scripts/zzzz_weapon_sway.script
+++ /dev/null
@@ -1,439 +0,0 @@
-------------------------------- mcm stuff --------------------------------------
-local weapon_sway_enable = weapon_sway_mcm.get_config("weapon_sway_feature")
-local aim_anm = weapon_sway_mcm.get_config("animation_type")
-local max_effect_power = weapon_sway_mcm.get_config("max_effect_power")
-local sway_keybind = weapon_sway_mcm.get_config("sway_keybind")
-
-local power_stand = weapon_sway_mcm.get_config("power_stand")
-local power_crouch = weapon_sway_mcm.get_config("power_crouch")
-local power_low_crouch = weapon_sway_mcm.get_config("power_low_crouch")
-
-local power_stand_scoped = weapon_sway_mcm.get_config("power_stand_scoped")
-local power_crouch_scoped = weapon_sway_mcm.get_config("power_crouch_scoped")
-local power_low_crouch_scoped = weapon_sway_mcm.get_config("power_low_crouch_scoped")
-
-local weapon_mount_feature = weapon_sway_mcm.get_config("weapon_mount_feature")
-local weapon_mounted_power = weapon_sway_mcm.get_config("weapon_mounted_power")
-local y_axis_mounted_distance = weapon_sway_mcm.get_config("y_axis_mounted_distance")
-
-local weapon_handling_mult = weapon_sway_mcm.get_config("handling_mult")
-
-local weight_factor = weapon_sway_mcm.get_config("weight_factor")
-local max_power_weight = weapon_sway_mcm.get_config("max_power_weight")
-
-local hold_breath_feature = weapon_sway_mcm.get_config("hold_breath_feature")
-local enable_breath_sound = weapon_sway_mcm.get_config("enable_breath_sound")
-local breath_restore_mult = weapon_sway_mcm.get_config("breath_restore_mult")
-local max_hold_breath_time = weapon_sway_mcm.get_config("max_hold_breath_time")
-
-local hold_breath_mult = weapon_sway_mcm.get_config("hold_breath_mult")
-local release_breath_mult = weapon_sway_mcm.get_config("release_breath_mult")
-
-local weapon_sway_debug = weapon_sway_mcm.get_config("debugx")
-
-------------------------------- mcm patch --------------------------------------
-local bhs_patch = 1
-local effects_mult = zzz_player_injuries.effects_mult -- If you changed this in BHS script - you need to change it here too
-
- -- demonized's and Raven's magic, i dont even know how it works
-if zzz_player_injuries then
- zzz_player_injuries.RegisterScriptCallback = function(k, func)
- if not (k == "actor_on_weapon_zoom_in") then
- _G.RegisterScriptCallback(k, func)
- end
- end
-end
-------------------------------- main ----------------------------------
-local zoom_flag = false
-local holding_breath = false
-local breath_held_for = 0
-
-function weapon_sway()
- local wpn = db.actor:active_item()
- if not (wpn and IsWeapon(wpn)) then return end
- if (IsMelee(wpn)) then return end
-
- local wpn_sec = wpn:section()
- if not wpn_sec then return end
-
- local wpn_scoped = wpn:weapon_is_scope()
- local handling = utils_ui.prop_handling(wpn, wpn_sec)
-
- -- anm power mults
- local body_mult = get_body_state_power(wpn, wpn_scoped) or 1 -- power based on body state
- local extra_mult = wpn_scoped and 0.02 or 0.1 -- reduce scoped anm power
- local mount_mult = wpn_mounted() and weapon_mounted_power or 1 -- weapon mounted
- local handling_mult = handling and ((2.5 - 0.02 * handling * 100)^weapon_handling_mult) or 1 -- handling
- local weight = get_weight_power(wpn_sec) and clamp(get_weight_power(wpn_sec) * weight_factor, 0.01, max_power_weight) or 1 -- weight factor
- local breath_mult = holding_breath and hold_breath_mult or 1 + breath_held_for * release_breath_mult -- breath mult
-
- -- Summary power
- local cam_power = body_mult * weight * extra_mult * mount_mult * breath_mult * handling_mult
- cam_power = clamp(cam_power, 0, max_effect_power)
-
- -- Play anim or Change its power
- if level.check_cam_effector(99215) then
- level.set_cam_effector_factor(99215, cam_power)
- else
- level.add_cam_effector("weapon_sway\\sway_" .. aim_anm .. ".anm", 99215, true, "", 0, true, cam_power)
- end
-
-
- -- dbg
- if not weapon_sway_debug then return end
- actor_menu.set_msg(1, strformat("weight_mult: %s | handling_mult: %s | Total Power: %s", r(weight), r(handling_mult), r(cam_power)))
-
-end
-
-function weapon_sway_remove()
- level.remove_cam_effector(99215)
-end
-
------------------------ manage breath ------------------------
--- start holding breath
- local press_tg = 0
-function on_key_press(key)
- if not weapon_sway_enable then return end
- if not hold_breath_feature then return end
-
- -- when we aiming and press "hold breath" button
- if not (zoom_flag and key == sway_keybind) then return end
-
- -- set "holding_breath" to TRUE
- holding_breath = true
-
- local tg = time_global()
- if tg < press_tg then return end
- press_tg = tg + 2000 -- against people who trying their best to break it ;]
-
- -- and play hold sound
- breath_snd_hold()
-
-end
-
--- increase/decrease breath hold
-local breath_tmr = 0
-function breath_update()
- local tg = time_global()
- if tg < breath_tmr then return end
- breath_tmr = tg + 250
-
- -- increase "breath_held_for" if hold, decrease "breath_held_for" otherwise
- breath_held_for = holding_breath and breath_held_for + 0.25 or breath_held_for - 0.25 * breath_restore_mult
- breath_held_for = clamp(breath_held_for, 0, max_hold_breath_time)
-
- -- end holding breath if reached max time
- if breath_held_for < max_hold_breath_time then return end
-
- -- to give at least 1 sec if someone tries to spam it xd
- breath_held_for = breath_held_for - 1
-
- -- set "holding_breath" to FALSE
- holding_breath = false
-
- -- and play release sound
- breath_snd_release()
-
-end
-
--- end holding breath on key
-function on_key_release(key)
- if not (zoom_flag and holding_breath and key == sway_keybind) then return end
-
- -- set "holding_breath" to FALSE
- holding_breath = false
-
- -- if breath was held for more than 3 seconds - play release sound
- if breath_held_for > 3 then
- breath_snd_release()
- end
-
-end
-
-function breath_snd_hold()
- if not enable_breath_sound then return end
- local snd_hold = sound_object("weapon_sway\\hold_1")
- snd_hold:play_no_feedback(db.actor, sound_object.s2d, 0, VEC_ZERO, 1.0, 1.0)
-end
-
-function breath_snd_release()
- if not enable_breath_sound then return end
- local snd_release = sound_object("weapon_sway\\release_1")
- snd_release:play_no_feedback(db.actor, sound_object.s2d, 0, VEC_ZERO, 1.0, 1.0)
-end
-
------------------------ power mults ------------------------
-function get_body_state_power(wpn, scope)
- local body_state = get_body_state()
- if not body_state then return end
-
- local body_mult = 1
- body_mult = scope and power_stand_scoped or power_stand
-
- if body_state == "crouch" then
- body_mult = scope and power_crouch_scoped or power_crouch
- elseif body_state == "low_crouch" then
- body_mult = scope and power_low_crouch_scoped or power_low_crouch
- end
-
- return body_mult
-end
-
-function wpn_mounted()
- if not weapon_mount_feature then return end
-
- local rp_diff = get_rp_diff()
-
- return rp_diff > 0.1
-end
-
-function get_weight_power(wpn_sec)
- if not ini_sys:section_exist(wpn_sec, "inv_weight") then return end
-
- return ini_sys:r_float_ex(wpn_sec, "inv_weight")
-end
-
------------------------ utils ------------------------
-function get_body_state()
- local crouch = IsMoveState('mcCrouch')
- local accel = IsMoveState('mcAccel')
- local body_st = "stand"
-
- if crouch then
- if accel then
- body_st = "low_crouch"
- else
- body_st = "crouch"
- end
- end
-
- return body_st
-end
-
-function ray_pick_dir(add_x, add_y, add_z, range)
- local pos = device().cam_pos
- local dir = device().cam_dir
- local vec_x = dir.x + add_x
- local vec_y = dir.y + add_y
- local vec_z = dir.z + add_z
- vec_x = clamp( r(vec_x), -1, 1)
- vec_y = clamp( r(vec_y), -1, 1)
- vec_z = clamp( r(vec_z), -1, 1)
-
- -- dbg
- if weapon_sway_debug then
- printf("--------------------")
- printf("dir: %s", dir)
- printf("edited dir: x: %s, y: %s, z: %s", vec_x, vec_y, vec_z)
- end
-
- local pick = ray_pick()
- pick:set_position(pos)
- pick:set_direction(vector():set(vec_x, vec_y, vec_z))
- pick:set_flags(2)
- pick:set_range(range)
- pick:query()
- local distance = pick:get_distance()
-
- return distance
-end
-
-function normal_ray_pick()
- local pos = device().cam_pos
- local dir = device().cam_dir
- local pick = ray_pick()
- pick:set_position(pos)
- pick:set_direction(dir)
- pick:set_flags(2)
- pick:set_range(0.85)
- pick:query()
- local distance = pick:get_distance()
-
- return distance
-end
-
-function get_rp_diff()
- local default_raycast = normal_ray_pick()
- local x = 0
- local y = y_axis_mounted_distance
- local z = 0
- local range = 0.85
- local custom_raycast = r(ray_pick_dir(x, y, z, range))
- local diff = custom_raycast - default_raycast
-
- return diff
-end
-
-function r(val)
- return round_idp(val, 2)
-end
-
------------------------ BHS compatibility ------------------------
-if bhs_patch and zzz_player_injuries then
- function bhs_sway_func()
-
- local wpn = db.actor:active_item()
- if not (wpn and IsWeapon(wpn)) then return end
- if (IsMelee(wpn)) then return end
-
- local wpn_sec = wpn:section()
- if not wpn_sec then return end
-
- local wpn_scoped = wpn:weapon_is_scope()
- local handling = utils_ui.prop_handling(wpn, wpn_sec)
-
- local body_state = get_body_state()
- local left_arm = (zzz_player_injuries.health.rightarm + zzz_player_injuries.timedhp.rightarm) * effects_mult
- left_arm = left_arm >=1 and left_arm or 0.75
- local right_arm = (zzz_player_injuries.health.leftarm + zzz_player_injuries.timedhp.leftarm) * effects_mult
- right_arm = right_arm >=1 and right_arm or 0.75
- local arms_sum = left_arm + right_arm
- local max_arms_sum = (zzz_player_injuries.maxhp.rightarm + zzz_player_injuries.maxhp.leftarm) * effects_mult
-
- -- anm power mults
- local bhs_cam_power = 1
- local body_mult = get_body_state_power(wpn, wpn_scoped) or 1 -- power based on body state
- local extra_mult = wpn_scoped and 0.02 or 0.1 -- reduce scoped anm power
- local mount_mult = wpn_mounted() and weapon_mounted_power or 1 -- weapon mounted
- local handling_mult = handling and ((2.5 - 0.02 * handling * 100)^weapon_handling_mult) or 1 -- handling
- local weight = get_weight_power(wpn_sec) and clamp(get_weight_power(wpn_sec) * weight_factor, 0.01, max_power_weight) or 1 -- weight factor
- local breath_mult = holding_breath and hold_breath_mult or 1 + breath_held_for * release_breath_mult -- breath mult
-
- -- Summary Weapon Sway power
- local cam_power = body_mult * weight * extra_mult * mount_mult * breath_mult * handling_mult
- cam_power = clamp(cam_power, 0, max_effect_power)
-
- -- BHS
- if arms_sum < (max_arms_sum * (zzz_player_injuries_mcm.get_config("arm_penalty_minimum_hp") * 0.05)) then
- if (left_arm < right_arm / 1.5) or (right_arm < left_arm / 1.5) then
- bhs_cam_power = 1.15 * weight / arms_sum
- bhs_cam_power = (body_state == "crouch") and (0.8 * weight / arms_sum) or bhs_cam_power
- bhs_cam_power = (body_state == "low_crouch") and (0.4 * weight / arms_sum) or bhs_cam_power
- else
- bhs_cam_power = 0.8 * weight / arms_sum
- bhs_cam_power = (body_state == "crouch") and (0.55 * weight / arms_sum) or bhs_cam_power
- bhs_cam_power = (body_state == "low_crouch") and (0.3 * weight / arms_sum) or bhs_cam_power
- end
-
- -- Summary BHS power
- bhs_cam_power = clamp((bhs_cam_power * mount_mult * breath_mult * handling_mult), 0, 3)
- bhs_cam_power = bhs_cam_power * (zzz_player_injuries_mcm.get_config("arm_animation_power"))
- local cam_power_scope = bhs_cam_power * 0.2
- if wpn:weapon_is_scope() then
- bhs_cam_power = cam_power_scope
- end
-
- -- Play anim or Change its power
- if level.check_cam_effector(99215) then
- level.set_cam_effector_factor(99215, bhs_cam_power)
- else
- level.add_cam_effector("weapon_sway\\sway_" .. aim_anm .. ".anm", 99215, true, "", 0, true, bhs_cam_power)
- end
-
- -- Weapon Sway
- elseif weapon_sway_enable then
- -- Play anim or Change its power
- if level.check_cam_effector(99215) then
- level.set_cam_effector_factor(99215, cam_power)
- else
- level.add_cam_effector("weapon_sway\\sway_" .. aim_anm .. ".anm", 99215, true, "", 0, true, cam_power)
- end
-
- end
-
- -- dbg
- if not weapon_sway_debug then return end
- news_manager.send_tip(db.actor, string.format("y-axis diff: %s", ( get_rp_diff() )), 0, nil, 1500)
-
- if not hold_breath_feature then return end
- news_manager.send_tip(db.actor, string.format("Breath being held for: %s", breath_held_for), 0, nil, 1500)
-
- end
-end
-
------------------------ cb ------------------------
-function actor_on_weapon_zoom_in(wpn)
- zoom_flag = true
-end
-
-function actor_on_weapon_zoom_out(wpn)
- weapon_sway_remove()
- zoom_flag = false
-
- if not (holding_breath) then return end
-
- holding_breath = false
-
- -- if breath was held for more than 3 seconds - play release sound
- if breath_held_for > 3 then
- breath_snd_release()
- end
-
- end
-
-local tg_act = 0
-function main_update()
- local tg = time_global()
- if tg < tg_act then return end
- tg_act = tg + 250
-
- if weapon_sway_enable and zoom_flag then
- if bhs_patch and zzz_player_injuries and bhs_sway_func then
- bhs_sway_func()
- else
- weapon_sway()
- end
- end
-
- -- dbg
- if not weapon_sway_debug then return end
- news_manager.send_tip(db.actor, string.format("y-axis diff: %s", ( get_rp_diff() )), 0, nil, 1500)
-
- if not hold_breath_feature then return end
- news_manager.send_tip(db.actor, string.format("Breath being held for: %s", breath_held_for), 0, nil, 1500)
-
-end
-
-function on_option_change()
- weapon_sway_enable = weapon_sway_mcm.get_config("weapon_sway_feature")
- aim_anm = weapon_sway_mcm.get_config("animation_type")
- max_effect_power = weapon_sway_mcm.get_config("max_effect_power")
- sway_keybind = weapon_sway_mcm.get_config("sway_keybind")
-
- power_stand = weapon_sway_mcm.get_config("power_stand")
- power_crouch = weapon_sway_mcm.get_config("power_crouch")
- power_low_crouch = weapon_sway_mcm.get_config("power_low_crouch")
-
- power_stand_scoped = weapon_sway_mcm.get_config("power_stand_scoped")
- power_crouch_scoped = weapon_sway_mcm.get_config("power_crouch_scoped")
- power_low_crouch_scoped = weapon_sway_mcm.get_config("power_low_crouch_scoped")
-
- weapon_mount_feature = weapon_sway_mcm.get_config("weapon_mount_feature")
- weapon_mounted_power = weapon_sway_mcm.get_config("weapon_mounted_power")
- y_axis_mounted_distance = weapon_sway_mcm.get_config("y_axis_mounted_distance")
-
- weapon_handling_mult = weapon_sway_mcm.get_config("handling_mult")
-
- weight_factor = weapon_sway_mcm.get_config("weight_factor")
- max_power_weight = weapon_sway_mcm.get_config("max_power_weight")
-
- hold_breath_feature = weapon_sway_mcm.get_config("hold_breath_feature")
- enable_breath_sound = weapon_sway_mcm.get_config("enable_breath_sound")
- breath_restore_mult = weapon_sway_mcm.get_config("breath_restore_mult")
- max_hold_breath_time = weapon_sway_mcm.get_config("max_hold_breath_time")
-
- hold_breath_mult = weapon_sway_mcm.get_config("hold_breath_mult")
- release_breath_mult = weapon_sway_mcm.get_config("release_breath_mult")
-
- weapon_sway_debug = weapon_sway_mcm.get_config("debugx")
-end
-
-function on_game_start()
- RegisterScriptCallback("on_key_press", on_key_press)
- RegisterScriptCallback("actor_on_update", breath_update)
- RegisterScriptCallback("on_key_release", on_key_release)
- RegisterScriptCallback("actor_on_weapon_zoom_in", actor_on_weapon_zoom_in)
- RegisterScriptCallback("actor_on_weapon_zoom_out", actor_on_weapon_zoom_out)
- RegisterScriptCallback("actor_on_update", main_update)
- RegisterScriptCallback("on_option_change", on_option_change)
-end
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r1/model_exohealth.ps b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r1/model_exohealth.ps
deleted file mode 100644
index f5fc9275..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r1/model_exohealth.ps
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "common.h"
-
-struct v2p
-{
- half4 tc0: TEXCOORD0; // base
- half4 tc1: TEXCOORD1; // environment
- half4 c0: COLOR0; // sun.(fog*fog)
-};
-
-//////////////////////////////////////////////////////////////////////////////////////////
-
-half4 main_ps_1_4 ( v2p I ) : COLOR
-{
- half4 t_base = tex2D (s_base,I.tc0);
- t_base.g += clamp(0.5-abs(m_actor_params.y-0.5), 0, 0.5)*t_base.a;
- t_base.r += (1-m_actor_params.y)*t_base.a;
-
- //получаем пиксель шума и масштабируем его в соответствии с текущим уровнем проблем
- half4 t_noise = tex2D(s_lmap, I.tc0) * m_affects.x * 2;
- t_base.rgb += t_noise.rgb;
-
- return half4 (t_base.r, t_base.g, t_base.b, 1);
-}
-
-
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r1/model_exoscreen.ps b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r1/model_exoscreen.ps
deleted file mode 100644
index 55db4c82..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r1/model_exoscreen.ps
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "common.h"
-
-struct v2p
-{
- half2 tc0: TEXCOORD0; // base
- half2 tc1: TEXCOORD1; // lmap
- half4 c0: COLOR0; // sun
-};
-
-//////////////////////////////////////////////////////////////////////////////////////////
-// Pixel
-half4 main_ps_1_4 ( v2p I ) : COLOR
-{
- half4 t_base = tex2D (s_base,I.tc0);
-
- //получаем пиксель шума и масштабируем его в соответствии с текущим уровнем проблем
- half4 t_noise = tex2D(s_lmap, I.tc0) * m_affects.x * 2;
- t_base.rgb += t_noise.rgb;
-
- // out
- return half4 (t_base.r,t_base.g,t_base.b,t_base.a * I.c0.a);
-}
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r1/models_exohealth.s b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r1/models_exohealth.s
deleted file mode 100644
index fd421cba..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r1/models_exohealth.s
+++ /dev/null
@@ -1,12 +0,0 @@
-function normal (shader, t_base, t_second, t_detail)
-
- shader:begin ("model_env_lq","model_exohealth")
- : fog (true)
- : zb (true,false)
- : blend (true,blend.srcalpha,blend.invsrcalpha)
- : aref (true,0)
- : sorting (2,true)
- : distort (true)
- shader:sampler ("s_base") :texture (t_base)
- shader:sampler ("s_lmap"):texture ("ui\\ui_mono_noise")
-end
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r1/models_exoscreen01.s b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r1/models_exoscreen01.s
deleted file mode 100644
index 14e8d827..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r1/models_exoscreen01.s
+++ /dev/null
@@ -1,10 +0,0 @@
-function normal (shader, t_base, t_second, t_detail)
- shader:begin ("model_def_lplanes","model_exoscreen")
- : fog (false)
- : zb (true,false)
- : blend (true,blend.srcalpha,blend.one)
- : aref (true,0)
- : sorting (2, true)
- shader:sampler ("s_base") :texture (t_base)
- shader:sampler ("s_lmap"):texture ("ui\\ui_mono_noise")
-end
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r1/models_selflight_det2.s b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r1/models_selflight_det2.s
deleted file mode 100644
index 38ff8a34..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r1/models_selflight_det2.s
+++ /dev/null
@@ -1,8 +0,0 @@
-function normal (shader, t_base, t_second, t_detail)
- shader:begin ("model_def_lplanes","base_lplanes")
- : fog (false)
- : zb (true,false)
- : aref (true,0)
- : sorting (2, true)
- shader:sampler ("s_base") :texture (t_base)
-end
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r1/shared/common.h b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r1/shared/common.h
deleted file mode 100644
index 0ba4955c..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r1/shared/common.h
+++ /dev/null
@@ -1,59 +0,0 @@
-#ifndef SHARED_COMMON_H
-#define SHARED_COMMON_H
-//
-uniform float3x4 m_W;
-uniform float3x4 m_V;
-uniform float4x4 m_P;
-uniform float3x4 m_WV;
-uniform float4x4 m_VP;
-uniform float4x4 m_WVP;
-uniform half4 timers;
-uniform half4 fog_plane;
-uniform float4 fog_params; // x=near*(1/(far-near)), ?,?, w = -1/(far-near)
-uniform half4 fog_color;
-uniform half3 L_sun_color;
-uniform half3 L_sun_dir_w;
-uniform half3 L_sun_dir_e;
-uniform half4 L_hemi_color;
-uniform half4 L_ambient; // L_ambient.w = skynbox-lerp-factor
-uniform float3 eye_position;
-uniform half3 eye_direction;
-uniform half3 eye_normal;
-uniform half4 dt_params;
-
-//GUNSLINGER**************************//
-uniform half4 m_hud_params;
-uniform half4 screen_res;
-uniform half4 m_zoom_deviation;
-uniform float4 m_actor_params;
-uniform float4 m_affects;
-uniform float4 m_timearrow;
-uniform float4 m_timearrow2;
-uniform float4 m_digiclock;
-//************************************//
-
-half3 unpack_normal (half3 v) { return 2*v-1; }
-half3 unpack_bx2 (half3 v) { return 2*v-1; }
-half3 unpack_bx4 (half3 v) { return 4*v-2; }
-
-float2 unpack_tc_base (float2 tc, float du, float dv) {
- return (tc.xy + float2 (du,dv))*(32.f/32768.f);
-}
-
-float2 unpack_tc_lmap (float2 tc) { return tc*(1.f/32768.f); } // [-1 .. +1 ]
-
-float calc_cyclic (float x) {
- float phase = 1/(2*3.141592653589f);
- float sqrt2 = 1.4142136f;
- float sqrt2m2 = 2.8284271f;
- float f = sqrt2m2*frac(x)-sqrt2; // [-sqrt2 .. +sqrt2]
- return f*f - 1.f; // [-1 .. +1]
-}
-float2 calc_xz_wave (float2 dir2D, float frac) {
- // Beizer
- float2 ctrl_A = float2(0.f, 0.f );
- float2 ctrl_B = float2(dir2D.x, dir2D.y );
- return lerp (ctrl_A, ctrl_B, frac);
-}
-
-#endif
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r2/model_exohealth.ps b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r2/model_exohealth.ps
deleted file mode 100644
index 13e2e4b2..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r2/model_exohealth.ps
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "common.h"
-
-struct v2p
-{
- float2 tc0: TEXCOORD0; // base
- half3 tc1: TEXCOORD1; // environment
- half4 c0: COLOR0; // sun.(fog*fog)
-};
-
-// Pixel
-uniform float4 m_actor_params;
-uniform float4 m_affects;
-
-half get_noise(float2 co)
-{
- return (frac(sin(dot(co.xy ,float2(12.9898,78.233))) * 43758.5453))*0.5;
-};
-
-
-half4 main( v2p I ): COLOR
-{
- // широкая полоска искажений
- half problems = cos( ( frac( timers.z * 4 ) - 0.5 ) * 3.1416 )*2 - 0.8;
- half AMPL = 0.3;
- I.tc0.y -= ( m_affects.x > 0.15 && I.tc0.x > problems-AMPL && I.tc0.x < problems+AMPL) ? cos(4.71*(I.tc0.x-problems)/AMPL) * sin( frac(timers.z)*6.2831*90 ) * (m_affects.x/10) * (AMPL-abs(I.tc0.x-problems))/AMPL : 0;
-
- half4 t_base = tex2D (s_base, I.tc0);
-
- half tmp = 1-m_actor_params.y;
- tmp = clamp(tmp, 0, 0.5);
- t_base.r +=tmp*t_base.a;
-
- tmp = 0.5-abs(m_actor_params.y-0.5);
- tmp = clamp(tmp, 0, 0.5);
- t_base.g +=tmp*t_base.a;
-
-
- // Шум при выбросе
- half noise = get_noise(I.tc0*timers.z) * m_affects.x * 2;
- t_base.r += noise;
- t_base.g += noise;
- t_base.b += noise;
-
- return half4 (t_base.r, t_base.g, t_base.b, 1);
-}
-
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r2/model_exoscreen.ps b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r2/model_exoscreen.ps
deleted file mode 100644
index 3e350121..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r2/model_exoscreen.ps
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "common.h"
-
-struct v2p
-{
- half2 tc0: TEXCOORD0; // base
- half2 tc1: TEXCOORD1; // environment
- half4 c0: COLOR0; // sun.(fog*fog)
-};
-
-// Pixel
-uniform float4 m_affects;
-
-half get_noise(float2 co)
-{
- return (frac(sin(dot(co.xy ,float2(12.9898,78.233))) * 43758.5453))*0.5;
-};
-
-
-half4 main ( v2p I ) : COLOR
-{
- half4 t_base = tex2D (s_base, I.tc0);
-
- // Шум при выбросе
- half noise = get_noise(I.tc0*timers.z) * m_affects.x * 2;
- t_base.r += noise;
- t_base.g += noise;
- t_base.b += noise;
-
- return half4 (t_base.r, t_base.g, t_base.b, t_base.a*I.c0.a);
-}
-
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r2/models_exohealth.s b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r2/models_exohealth.s
deleted file mode 100644
index a7311ff4..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r2/models_exohealth.s
+++ /dev/null
@@ -1,13 +0,0 @@
-local tex_env0 = "$user$sky0"
-local tex_env1 = "$user$sky1"
-
-function normal (shader, t_base, t_second, t_detail)
- shader:begin ("model_env_lq","model_exohealth")
- : fog (true)
- : zb (true,false)
- : blend (true,blend.srcalpha,blend.invsrcalpha)
- : aref (true,0)
- : sorting (2,true)
- : distort (true)
- shader:sampler ("s_base") :texture (t_base)
-end
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r2/models_exoscreen01.s b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r2/models_exoscreen01.s
deleted file mode 100644
index e673d856..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r2/models_exoscreen01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-function normal (shader, t_base, t_second, t_detail)
- shader:begin ("model_def_lplanes","model_exoscreen")
- : fog (false)
- : zb (true,false)
- : blend (true,blend.srcalpha,blend.one)
- : aref (true,0)
- : sorting (2, true)
- shader:sampler ("s_base") :texture (t_base)
-end
\ No newline at end of file
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r2/models_selflight_det2.s b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r2/models_selflight_det2.s
deleted file mode 100644
index 38ff8a34..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r2/models_selflight_det2.s
+++ /dev/null
@@ -1,8 +0,0 @@
-function normal (shader, t_base, t_second, t_detail)
- shader:begin ("model_def_lplanes","base_lplanes")
- : fog (false)
- : zb (true,false)
- : aref (true,0)
- : sorting (2, true)
- shader:sampler ("s_base") :texture (t_base)
-end
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r3/model_exohealth.ps b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r3/model_exohealth.ps
deleted file mode 100644
index 905e2a56..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r3/model_exohealth.ps
+++ /dev/null
@@ -1,49 +0,0 @@
-#include "common.h"
-
-uniform float4 m_actor_params;
-uniform float4 m_affects;
-
-struct v2p
-{
- float2 tc0: TEXCOORD0; // base
- float3 tc1: TEXCOORD1; // environment
- float4 c0: COLOR0; // sun.(fog*fog)
-};
-
-float get_noise(float2 co)
-{
- return (frac(sin(dot(co.xy ,float2(12.9898,78.233))) * 43758.5453))*0.5;
-};
-
-//////////////////////////////////////////////////////////////////////////////////////////
-
-float4 main( v2p I ) : SV_Target
-{
- // пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
- float problems = cos( ( frac( timers.z * 4 ) - 0.5 ) * 3.1416 )*2 - 0.8;
- float AMPL = 0.3;
- I.tc0.y -= ( m_affects.x > 0.15 && I.tc0.x > problems-AMPL && I.tc0.x < problems+AMPL) ? cos(4.71*(I.tc0.x-problems)/AMPL) * sin( frac(timers.z)*6.2831*90 ) * (m_affects.x/10) * (AMPL-abs(I.tc0.x-problems))/AMPL : 0;
-
- float4 t_base = s_base.Sample ( smp_base, I.tc0);
-
-
- float tmp = 1-m_actor_params.y;
- tmp = clamp(tmp, 0, 0.5);
- t_base.r +=tmp*t_base.a;
-
- tmp = 0.5-abs(m_actor_params.y-0.5);
- tmp = clamp(tmp, 0, 0.5);
- t_base.g +=tmp*t_base.a;
-
- // Шум при выбросе
- float noise = get_noise(I.tc0*timers.z) * m_affects.x * 2;
- t_base.r += noise;
- t_base.g += noise;
- t_base.b += noise;
-
-
- return float4 (t_base.r, t_base.g, t_base.b, 1);
-
-}
-
-
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r3/model_exoscreen.ps b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r3/model_exoscreen.ps
deleted file mode 100644
index 89acca93..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r3/model_exoscreen.ps
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "common.h"
-
-struct v2p
-{
- float2 tc0: TEXCOORD0; // base
-// float2 tc1: TEXCOORD1; // lmap
- float4 c0: COLOR0; // sun
-};
-
-uniform float4 m_affects;
-
-float get_noise(float2 co)
-{
- return (frac(sin(dot(co.xy ,float2(12.9898,78.233))) * 43758.5453))*0.5;
-};
-
-//////////////////////////////////////////////////////////////////////////////////////////
-// Pixel
-float4 main( v2p I ) : SV_Target
-{
-// float4 t_base = tex2D (s_base,I.tc0);
- float4 t_base = s_base.Sample( smp_base, I.tc0 );
-
- // Шум при выбросе
- float noise = get_noise(I.tc0*timers.z) * m_affects.x * 2;
- t_base.r += noise;
- t_base.g += noise;
- t_base.b += noise;
-
- // out
- return float4 (t_base.r,t_base.g,t_base.b,t_base.a * I.c0.a);
-}
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r3/models_exohealth.s b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r3/models_exohealth.s
deleted file mode 100644
index fa908882..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r3/models_exohealth.s
+++ /dev/null
@@ -1,14 +0,0 @@
-local tex_env0 = "$user$sky0"
-local tex_env1 = "$user$sky1"
-
-function normal (shader, t_base, t_second, t_detail)
- shader:begin ("model_def_lplanes","model_exohealth")
- : fog (true)
- : zb (true,false)
- : blend (true,blend.srcalpha,blend.invsrcalpha)
- : aref (true,0)
- : sorting (2,true)
- : distort (true)
- shader:dx10texture ("s_base", t_base)
- shader:dx10sampler ("smp_base")
-end
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r3/models_exoscreen01.s b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r3/models_exoscreen01.s
deleted file mode 100644
index 3c8e5cee..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r3/models_exoscreen01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-function normal (shader, t_base, t_second, t_detail)
- shader:begin ("model_def_lplanes","model_exoscreen")
- : fog (false)
- : zb (true,false)
- : blend (true,blend.srcalpha,blend.one)
- : aref (true,0)
- : sorting (2, true)
- --shader:sampler ("s_base") :texture (t_base)
- shader:dx10texture ("s_base", t_base)
- shader:dx10sampler ("smp_base")
-end
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r3/models_selflight_det2.s b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r3/models_selflight_det2.s
deleted file mode 100644
index 8be8b90c..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/shaders/r3/models_selflight_det2.s
+++ /dev/null
@@ -1,10 +0,0 @@
-function normal (shader, t_base, t_second, t_detail)
- shader:begin ("model_def_lplanes","base_lplanes")
- : fog (false)
- : zb (true,false)
- : aref (true,0)
- : sorting (2, true)
- --shader:sampler ("s_base") :texture (t_base)
- shader:dx10texture ("s_base", t_base)
- shader:dx10sampler ("smp_base")
-end
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/bhs/bone_crack.ogg b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/bhs/bone_crack.ogg
deleted file mode 100644
index 492822aa..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/bhs/bone_crack.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cad2ea98a2cc9d963338c59f33bbd76e9586187c00c9cdefbe167f5ea640e6da
-size 28986
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/grok_adb/heartbeat.ogg b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/grok_adb/heartbeat.ogg
deleted file mode 100644
index 73328ec5..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/grok_adb/heartbeat.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:dfcb2db9fa4023c1204afc0498e4e6a6e3089afbce961bdad43263ea21b09f05
-size 16446
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/bandage.ogg b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/bandage.ogg
deleted file mode 100644
index f1a9f93c..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/bandage.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:386465cdedfaab48981452d6e22084d46b8e1ea3bca6951f8e24906c54874686
-size 128657
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/bandage_surginst.aup3 b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/bandage_surginst.aup3
deleted file mode 100644
index 49cd3bb5..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/bandage_surginst.aup3 and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/bandage_surginst.ogg b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/bandage_surginst.ogg
deleted file mode 100644
index d3b18bda..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/bandage_surginst.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c2566749e78d1ab545e48d214b9b1c8a13a851911fce44c29690027b5484a8e2
-size 422346
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/injector.ogg b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/injector.ogg
deleted file mode 100644
index 2450a50b..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/injector.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7ae3e05c151da38e519d3fbad09cf5960e6cd2ec2313657ce25714aca19b4d8d
-size 164200
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/inv_bandage.ogg b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/inv_bandage.ogg
deleted file mode 100644
index 7094d536..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/inv_bandage.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:074f92216da48bb6dc2b594dab4190e89d7880ae6e8a80d63d9dadbe7ffe91ec
-size 102030
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit.ogg b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit.ogg
deleted file mode 100644
index fdbb6265..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:12f30e8685fa587ab3922479c015bf470c85039b9eca11f24581cdf8b1d3b2fe
-size 103214
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit_exo.ogg b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit_exo.ogg
deleted file mode 100644
index 098dd4a2..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit_exo.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5f3a45bafb4e21a3b89117c3b1187d4293eec2454d50f428845b7bd4afd5000d
-size 87381
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit_exo_alt.ogg b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit_exo_alt.ogg
deleted file mode 100644
index b96416e9..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit_exo_alt.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:80d871dc4753104bcb721bc06bb061b6f56c5d4ad93c037175843d99f39bebb2
-size 89184
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit_use.ogg b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit_use.ogg
deleted file mode 100644
index 7b630aaa..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit_use.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8cd823e9accfc813b7d8951696aab2ca91b9e378424229706d46ad242deb30c5
-size 77434
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit_use_slow.ogg b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit_use_slow.ogg
deleted file mode 100644
index 423da329..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit_use_slow.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d395d263ed9f4297cb3757c499b7481c4031e1560cf5ac791db2fa0355069966
-size 198485
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit_use_slow80.aup3 b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit_use_slow80.aup3
deleted file mode 100644
index 89c137ff..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit_use_slow80.aup3 and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit_use_slow80.ogg b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit_use_slow80.ogg
deleted file mode 100644
index 3c42fd1b..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/medkit_use_slow80.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:63824677e0aad58eaaa59240214a4c32d591a254d33c230e3d9be201183fcece
-size 194164
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/morphine_use_s.ogg b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/morphine_use_s.ogg
deleted file mode 100644
index 061c91d1..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/morphine_use_s.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:54d955626433c7a548a6b21297db9392b6c97a96d7c08823901028532cb4337a
-size 54432
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/morphine_use_v2.ogg b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/morphine_use_v2.ogg
deleted file mode 100644
index bdd80f4c..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/interface/item_usage/morphine_use_v2.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ec9ed142dc0694e9cf12c354523df23b0022cf5fc05b7ace0012b37832736388
-size 113786
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/weapon_sway/hold_1.ogg b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/weapon_sway/hold_1.ogg
deleted file mode 100644
index 99bf10fb..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/weapon_sway/hold_1.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4878274d9f215fe3fe3bb8730e2a01943605cbdffdf6312e2ebde7bacda7c264
-size 12859
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/weapon_sway/release_1.ogg b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/weapon_sway/release_1.ogg
deleted file mode 100644
index 8772ea02..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/sounds/weapon_sway/release_1.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fcb96db9e38dbfa24b9353e6eb8643e8c722c45d1cdc9d50bca9e8cc077576bd
-size 19865
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/act/cod_ghosts_exo_computer_glass.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/act/cod_ghosts_exo_computer_glass.dds
deleted file mode 100644
index e0d37a0c..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/act/cod_ghosts_exo_computer_glass.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:970a9bb93e2002d0cf422104613411b6bbef64707204f7cd31e5657ae32ee520
-size 1048704
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/act/cod_ghosts_exo_computer_glass.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/act/cod_ghosts_exo_computer_glass.thm
deleted file mode 100644
index 181461bf..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/act/cod_ghosts_exo_computer_glass.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7d288f1a32cfb55b0daf8d55e4c1fc3866eef21d6d4d81806027caf61e9d250a
-size 176
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/act/cod_ghosts_exo_computer_glass_bump#.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/act/cod_ghosts_exo_computer_glass_bump#.dds
deleted file mode 100644
index e642778c..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/act/cod_ghosts_exo_computer_glass_bump#.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:263bcd917897f62b4703567dcd7cd83f637a75cd9a94422d88ceeeae5376327f
-size 1398256
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/act/cod_ghosts_exo_computer_glass_bump.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/act/cod_ghosts_exo_computer_glass_bump.dds
deleted file mode 100644
index 170433e6..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/act/cod_ghosts_exo_computer_glass_bump.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ef700b7c11171420ddf12cbbbc0b5f8be01e14795904e94e314a01eaa9483bae
-size 1398256
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/act/cod_ghosts_exo_computer_glass_bump.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/act/cod_ghosts_exo_computer_glass_bump.thm
deleted file mode 100644
index 8f94260d..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/act/cod_ghosts_exo_computer_glass_bump.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a1c3a049bc5717bd36bd2443713c1fecafb2f1c386cc14ce704dc12057ebdf4a
-size 176
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_alusplint.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_alusplint.dds
deleted file mode 100644
index 46162401..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_alusplint.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d53250dbc0a92d745694ef6677896f1a84c105f29f65b2b5536e2f0246a57322
-size 349680
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_alusplint.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_alusplint.thm
deleted file mode 100644
index b907c3b3..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_alusplint.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b9a3b907afd4fb8dc53ff68febee680d1b185cfd39e6706b8d0f8ae949218cec
-size 166
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_alusplint_bump#.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_alusplint_bump#.dds
deleted file mode 100644
index 0f8b97a0..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_alusplint_bump#.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:927927a7de5f862fa6e10ca2328f9d82323005a9ae8f14751b1830427ca73f37
-size 176
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_alusplint_bump#.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_alusplint_bump#.thm
deleted file mode 100644
index 7c6a9bae..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_alusplint_bump#.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9054e8f75b38345e94add586ba5da38070ac5a28694189d9e9fafd2558913304
-size 138
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_alusplint_bump.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_alusplint_bump.dds
deleted file mode 100644
index 672e10dd..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_alusplint_bump.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a942ba30867ffe3613afd580207aa2161f28e8c81261b002a33c88588f459ead
-size 349652
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_alusplint_bump.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_alusplint_bump.thm
deleted file mode 100644
index cc7fde6c..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_alusplint_bump.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ece0b09633bec1904e74fe4f8565e372244cb6fd22516998cc3a309263afb818
-size 138
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_ibuprofen.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_ibuprofen.dds
deleted file mode 100644
index a9a86c74..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_ibuprofen.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ccbaddf68f0140fdf2b9f2135bf2f5c22fa82dce857c9985991c02a0cb00f00d
-size 349680
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_ibuprofen.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_ibuprofen.thm
deleted file mode 100644
index 88e2bf98..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_ibuprofen.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9796ee2b3bf16fa9c1591d140f64e0a1e4be5bed0da5860b428e9ed8550db42e
-size 166
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_ibuprofen_bump#.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_ibuprofen_bump#.dds
deleted file mode 100644
index a85537ee..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_ibuprofen_bump#.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0e561e7163ba47c38e626162702964ebed7032f72dcd2e1b89068271ece3cd7d
-size 240
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_ibuprofen_bump#.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_ibuprofen_bump#.thm
deleted file mode 100644
index 7c6a9bae..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_ibuprofen_bump#.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9054e8f75b38345e94add586ba5da38070ac5a28694189d9e9fafd2558913304
-size 138
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_ibuprofen_bump.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_ibuprofen_bump.dds
deleted file mode 100644
index 5c31bffe..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_ibuprofen_bump.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2d664742ae62bed59ecc0edafdaeadbb527b726e9b4fae41b6c21a320edefa73
-size 349652
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_ibuprofen_bump.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_ibuprofen_bump.thm
deleted file mode 100644
index 7ab4de6b..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_ibuprofen_bump.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:72ef189a452467c2820a121407c77fa5a0760ad8c3e32d2e832379eed2b24db1
-size 138
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_m_bandage.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_m_bandage.dds
deleted file mode 100644
index 150709d4..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_m_bandage.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:87b6fb84e695ddd9d2e2149eb672581a2c943ac463c54dd092b4e155ec60b9b1
-size 349680
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_m_bandage.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_m_bandage.thm
deleted file mode 100644
index 662ed583..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_m_bandage.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9a1591296673d2347aae8e2943b6f0730ff595b08961ef6695f42c7784de2840
-size 162
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_m_bandage_bump#.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_m_bandage_bump#.dds
deleted file mode 100644
index bfce09d5..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_m_bandage_bump#.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:37bcf7f62e321207601c1f1e75b86148449cef09f0f3c27bdae9b499846928a9
-size 349680
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_m_bandage_bump.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_m_bandage_bump.dds
deleted file mode 100644
index 9f814830..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_m_bandage_bump.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2f3f4b7af82b84375c29c6080db4220eaa8f2482278fd85f94eaeedbca20ebbb
-size 349680
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_m_bandage_bump.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_m_bandage_bump.thm
deleted file mode 100644
index 674aa151..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_m_bandage_bump.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b343b3f1db388b598a3acf9374e81a50693dc37f8e9d652ffb2ba9b7991b6fc1
-size 138
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_splint.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_splint.dds
deleted file mode 100644
index 64c8929b..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_splint.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7a95cc5cee838d72242300981845584634ae0de5d828773c26895094b7075001
-size 699216
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_splint.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_splint.thm
deleted file mode 100644
index d5a5ea92..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_splint.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fbbe9bde049ce1d1c624601bf98d8eab33cc4fc0d09cb021c1a2d550ca8e1a4d
-size 163
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_splint_bump#.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_splint_bump#.dds
deleted file mode 100644
index 0f8b97a0..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_splint_bump#.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:927927a7de5f862fa6e10ca2328f9d82323005a9ae8f14751b1830427ca73f37
-size 176
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_splint_bump#.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_splint_bump#.thm
deleted file mode 100644
index 7c6a9bae..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_splint_bump#.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9054e8f75b38345e94add586ba5da38070ac5a28694189d9e9fafd2558913304
-size 138
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_splint_bump.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_splint_bump.dds
deleted file mode 100644
index 5ee2dc64..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_splint_bump.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2c2b87f716e202fc010cdc82d3230073c0f074ee7a6ee393e3c13b655a146018
-size 699180
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_splint_bump.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_splint_bump.thm
deleted file mode 100644
index e0ea3199..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_splint_bump.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d94d135e0f8c4c404a0687233726d114313cf4aeae9b1ae2e495fd14c73b6271
-size 138
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_surgical_kit.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_surgical_kit.dds
deleted file mode 100644
index b25ca777..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_surgical_kit.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:200f2629e5f175c6189bc969798ab104632b0725fc0cc3c8906257b47aae1515
-size 5592560
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_surgical_kit.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_surgical_kit.thm
deleted file mode 100644
index 9a709db2..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_surgical_kit.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3c924193d31b5c296d025592f141f8ff09637bdc7524e9234791de5b858564c0
-size 169
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_surgical_kit_bump#.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_surgical_kit_bump#.dds
deleted file mode 100644
index 0f8b97a0..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_surgical_kit_bump#.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:927927a7de5f862fa6e10ca2328f9d82323005a9ae8f14751b1830427ca73f37
-size 176
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_surgical_kit_bump#.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_surgical_kit_bump#.thm
deleted file mode 100644
index 7c6a9bae..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_surgical_kit_bump#.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9054e8f75b38345e94add586ba5da38070ac5a28694189d9e9fafd2558913304
-size 138
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_surgical_kit_bump.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_surgical_kit_bump.dds
deleted file mode 100644
index f3acdcf0..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_surgical_kit_bump.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8b613a380f8761ba6a1ad810ba293a861374103d2f67f10c2a1c4ffc9b57822b
-size 1398228
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_surgical_kit_bump.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_surgical_kit_bump.thm
deleted file mode 100644
index d44c7d76..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/item_surgical_kit_bump.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1690e8c6cc6f0a5077145a2a7642a955e1a2e4cad6f6122074c4d7b60460444d
-size 138
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/itm_tourniquet.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/itm_tourniquet.dds
deleted file mode 100644
index e63c833e..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/itm_tourniquet.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:91f9b281d8ad8e87a96370b23694ba59bb2ff718d2c2780197fc93395a3b5818
-size 699216
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/itm_tourniquet.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/itm_tourniquet.thm
deleted file mode 100644
index 9a15fbb6..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/itm_tourniquet.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:842496d2a6e7873884c15d60dd2dfc2237b271ed9b2d848f0f9270b19cdd4ed6
-size 166
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/itm_tourniquet_bump#.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/itm_tourniquet_bump#.dds
deleted file mode 100644
index 0f8b97a0..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/itm_tourniquet_bump#.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:927927a7de5f862fa6e10ca2328f9d82323005a9ae8f14751b1830427ca73f37
-size 176
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/itm_tourniquet_bump#.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/itm_tourniquet_bump#.thm
deleted file mode 100644
index 7c6a9bae..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/itm_tourniquet_bump#.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9054e8f75b38345e94add586ba5da38070ac5a28694189d9e9fafd2558913304
-size 138
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/itm_tourniquet_bump.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/itm_tourniquet_bump.dds
deleted file mode 100644
index 34f1c855..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/itm_tourniquet_bump.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4ab9464696d93badcd9baec97120ec333dce373009d2682230786a926d6361e9
-size 699180
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/itm_tourniquet_bump.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/itm_tourniquet_bump.thm
deleted file mode 100644
index 2d4a360a..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/item/itm_tourniquet_bump.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:815abf895ddc35f03dab72b503a4c6c3af6d9044b8a5fe565302974ef032971e
-size 138
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/Army_bandage.pdn b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/Army_bandage.pdn
deleted file mode 100644
index a0da0683..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/Army_bandage.pdn and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/analgin_icon.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/analgin_icon.dds
deleted file mode 100644
index d4765610..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/analgin_icon.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c4c1308ae4a9be56f8734c8825728282800da27a057a5630c4380a1fc5e0fec3
-size 4224
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/analgin_icon.pdn b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/analgin_icon.pdn
deleted file mode 100644
index 02f4bed4..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/analgin_icon.pdn and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/army_bandage_icon.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/army_bandage_icon.dds
deleted file mode 100644
index 9e49ab18..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/army_bandage_icon.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5ae46d814e1a0984fe3ef05eee83eaf005e2395a98c551aed70167bc5d31f832
-size 4224
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/ui_body_health_system3.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/ui_body_health_system3.dds
deleted file mode 100644
index 65b945b0..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/ui_body_health_system3.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:562097c82ba85af3bef484b4640a91f3fbf72e60d1c38b6c67afeb8f351e1115
-size 1048704
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/ui_body_health_system3.pdn b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/ui_body_health_system3.pdn
deleted file mode 100644
index 44d8d1f4..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/ui_body_health_system3.pdn and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/ui_icon_buffdebuff.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/ui_icon_buffdebuff.dds
deleted file mode 100644
index 4652cbf3..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/ui_icon_buffdebuff.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cc671f4529125a6eb0df894c0aa964b4c27cb27628061ab562c4470f19dee693
-size 65664
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/ui_maid_meds_eftmo.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/ui_maid_meds_eftmo.dds
deleted file mode 100644
index 3b937238..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/ui_maid_meds_eftmo.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:303a6558ddc9ffc7c4c8b81fe97cf239fca7ccec3cb47098bdbc07ef2405f5bc
-size 262272
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/ui_maid_meds_eftmo.pdn b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/ui_maid_meds_eftmo.pdn
deleted file mode 100644
index a5dba24c..00000000
Binary files a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/ui/ui_maid_meds_eftmo.pdn and /dev/null differ
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/arm/bint_arm_diffuse.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/arm/bint_arm_diffuse.dds
deleted file mode 100644
index 96085433..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/arm/bint_arm_diffuse.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4797bbb014e7ca5419307ac59963e0f8a33dba8118057c186473e7a0eb1204b4
-size 699192
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/arm/bint_arm_diffuse.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/arm/bint_arm_diffuse.thm
deleted file mode 100644
index eaff707b..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/arm/bint_arm_diffuse.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:eb971010dd517853893c897e1877c0c8df8908577de884abe60710096b5159f8
-size 178
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/item_bandage.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/item_bandage.dds
deleted file mode 100644
index 62359f58..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/item_bandage.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c95c1e9cd978298a2760bc5c80fbe1cd83ee31679db94ad4588b06a0e94b1319
-size 699192
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/item_bandage.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/item_bandage.thm
deleted file mode 100644
index 9e9b44f8..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/item_bandage.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e517e05b3e3d0b94c584d27214231718517cc6f10615780230d1db211b864022
-size 160
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/item_bandage_bump#.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/item_bandage_bump#.dds
deleted file mode 100644
index 8495e473..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/item_bandage_bump#.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6fa5744fa9c1caab9d19dbf33a86406d3bed56ae2f5e2b7825d85c0e767730e7
-size 1398256
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/item_bandage_bump.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/item_bandage_bump.dds
deleted file mode 100644
index 45f546c8..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/item_bandage_bump.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e3dd02ab28334d91351ab4c12c5053e6d44f3ca6d69b1eb6fe3cfcb820de88fa
-size 1398256
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/item_bandage_bump.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/item_bandage_bump.thm
deleted file mode 100644
index 98ded40e..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/bints/item_bandage_bump.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ad26646e852674f80482d4485f790f532a6600f6b89d4a1e0f1f4e7d5a949c9d
-size 160
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/antirad/item_injector.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/antirad/item_injector.dds
deleted file mode 100644
index 33cc7419..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/antirad/item_injector.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e96a15155413d5efaa47a296eaa015f10f2907330b68d86c94bf888b0d4643e5
-size 1398256
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/antirad/item_injector.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/antirad/item_injector.thm
deleted file mode 100644
index ec01054d..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/antirad/item_injector.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f14a6207cd0f2dcd2ad7199771f8a2fffbd7a1b9200905172f1af52047959fc1
-size 161
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/antirad/item_injector_bump#.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/antirad/item_injector_bump#.dds
deleted file mode 100644
index 5a20bed0..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/antirad/item_injector_bump#.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:eca7c846434ddca1f0f8c96e12151951ea3148fbe4788833feacdec599dc4aa5
-size 1398256
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/antirad/item_injector_bump.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/antirad/item_injector_bump.dds
deleted file mode 100644
index c4a92a2f..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/antirad/item_injector_bump.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:56c5b51fb9de6a710cc128cf9ad7068fb06d6628aac8fcfd89d48a3cc79128aa
-size 1398256
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/antirad/item_injector_bump.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/antirad/item_injector_bump.thm
deleted file mode 100644
index fa34ec4a..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/antirad/item_injector_bump.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ceb6733aa7fa6f6f0ca937445c18be4e65af7660b661d221450ca74207c2876e
-size 161
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_adrenaline.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_adrenaline.dds
deleted file mode 100644
index 96e319fc..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_adrenaline.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4afe00c68aa13926db86577b6f68758632adfde1fefb19efa8c4ebe92d4bddb3
-size 1398256
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_adrenaline.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_adrenaline.thm
deleted file mode 100644
index 892459f5..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_adrenaline.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:651c95e5daf1091d410529ec33d624a3f20ce2770d8eacae256199d72c2b0de8
-size 165
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_etg.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_etg.dds
deleted file mode 100644
index c8ae84a3..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_etg.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d7884c12ece2a19f93d1f231ba402507332949f12a3530a08ada02bc7855416c
-size 1398256
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_etg.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_etg.thm
deleted file mode 100644
index 72e5c266..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_etg.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8dcb39fbd4d45d46f91697a190be9826c2998122c2729be61bd2e0fd390b64d8
-size 165
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_morphine.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_morphine.dds
deleted file mode 100644
index df91bb16..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_morphine.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2f2f2bc2de0c716eeaa0ba6c44fecfa5ddd21187949ca739e0fc35eafd91777d
-size 1398256
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_morphine.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_morphine.thm
deleted file mode 100644
index 72e5c266..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_morphine.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8dcb39fbd4d45d46f91697a190be9826c2998122c2729be61bd2e0fd390b64d8
-size 165
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_morphine_bump#.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_morphine_bump#.dds
deleted file mode 100644
index 0f8b97a0..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_morphine_bump#.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:927927a7de5f862fa6e10ca2328f9d82323005a9ae8f14751b1830427ca73f37
-size 176
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_morphine_bump#.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_morphine_bump#.thm
deleted file mode 100644
index 7c6a9bae..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_morphine_bump#.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9054e8f75b38345e94add586ba5da38070ac5a28694189d9e9fafd2558913304
-size 138
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_morphine_bump.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_morphine_bump.dds
deleted file mode 100644
index bc989de2..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_morphine_bump.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b108ebb907a2f7e31965d6d074fbb9111919ea067dc51523997cf54ac6a430ef
-size 1398228
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_morphine_bump.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_morphine_bump.thm
deleted file mode 100644
index d44c7d76..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_morphine_bump.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1690e8c6cc6f0a5077145a2a7642a955e1a2e4cad6f6122074c4d7b60460444d
-size 138
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_propital.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_propital.dds
deleted file mode 100644
index 9c452800..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_propital.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6319b6d51f8058c59cae4e382dd1edb08aed4215f427aab7a4baae34162f24e9
-size 1398256
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_propital.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_propital.thm
deleted file mode 100644
index 72e5c266..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_propital.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8dcb39fbd4d45d46f91697a190be9826c2998122c2729be61bd2e0fd390b64d8
-size 165
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_sj1.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_sj1.dds
deleted file mode 100644
index 230e03f0..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_sj1.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8bc4f63b961bc270f19b7348751bd83af1facbf64d110567cdcd0e053b56d0b7
-size 1398256
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_sj1.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_sj1.thm
deleted file mode 100644
index 72e5c266..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_sj1.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8dcb39fbd4d45d46f91697a190be9826c2998122c2729be61bd2e0fd390b64d8
-size 165
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_sj6.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_sj6.dds
deleted file mode 100644
index 4b6294dc..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_sj6.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d218db5f82f20805d44d192ca1a5604c1b85829a888c7224bf7df6f69f509620
-size 1398256
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_sj6.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_sj6.thm
deleted file mode 100644
index 72e5c266..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_sj6.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8dcb39fbd4d45d46f91697a190be9826c2998122c2729be61bd2e0fd390b64d8
-size 165
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_zagustin.dds b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_zagustin.dds
deleted file mode 100644
index 163fa368..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_zagustin.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3899d5ed82b4dbf1976de684d596155c689435cf8b87b828a827f357da481c2b
-size 1398256
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_zagustin.thm b/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_zagustin.thm
deleted file mode 100644
index 72e5c266..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/gamedata/textures/usable_items/injectors/item_zagustin.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8dcb39fbd4d45d46f91697a190be9826c2998122c2729be61bd2e0fd390b64d8
-size 165
diff --git a/mods/[DEV] Body Health System Realistic Overhaul/meta.ini b/mods/[DEV] Body Health System Realistic Overhaul/meta.ini
deleted file mode 100644
index addfc748..00000000
--- a/mods/[DEV] Body Health System Realistic Overhaul/meta.ini
+++ /dev/null
@@ -1,28 +0,0 @@
-[General]
-gameName=stalkeranomaly
-modid=0
-version=0.87.0.0Beta
-newestVersion=
-category="18,"
-nexusFileStatus=1
-installationFile=BHS.Realistic.Overhaul.0.87.BETA.7z
-repository=
-ignoredVersion=
-comments=
-notes=
-nexusDescription=
-url=https://www.moddb.com/mods/stalker-anomaly/addons/bhs-realistic-overhaul
-hasCustomURL=true
-lastNexusQuery=
-lastNexusUpdate=
-nexusLastModified=2024-03-10T03:37:00Z
-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] Groks Body Health System Redux/gamedata/anims/blur_bhs.ppe b/mods/[DEV] Groks Body Health System Redux/gamedata/anims/blur_bhs.ppe
deleted file mode 100644
index 981205e3..00000000
Binary files a/mods/[DEV] Groks Body Health System Redux/gamedata/anims/blur_bhs.ppe and /dev/null differ
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/anims/concussion_bhs.ppe b/mods/[DEV] Groks Body Health System Redux/gamedata/anims/concussion_bhs.ppe
deleted file mode 100644
index 80f869e5..00000000
Binary files a/mods/[DEV] Groks Body Health System Redux/gamedata/anims/concussion_bhs.ppe and /dev/null differ
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/anims/concussion_post_bhs.ppe b/mods/[DEV] Groks Body Health System Redux/gamedata/anims/concussion_post_bhs.ppe
deleted file mode 100644
index 8f59fd83..00000000
Binary files a/mods/[DEV] Groks Body Health System Redux/gamedata/anims/concussion_post_bhs.ppe and /dev/null differ
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/configs/text/eng/st_items_medical.xml b/mods/[DEV] Groks Body Health System Redux/gamedata/configs/text/eng/st_items_medical.xml
deleted file mode 100644
index ad0f6e44..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/configs/text/eng/st_items_medical.xml
+++ /dev/null
@@ -1,536 +0,0 @@
-
-
-
-
-
-
-
- Anti-radiation drugs
-
-
- Mexaminum radiation protection drugs are common in the Zone. When used, this drug induces contraction of peripheral blood vessels and oxygen deprivation, which serve to treat and prevent radiation exposure. The drug does not have severe side effects, although isolated cases of mild nausea, dizziness, cramps and stomach pain have been reported.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[ui_gray_2] fast usage (syringe)\n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] H%c[0,74,134,232]• %c[ui_gray_2]T %c[0,74,134,232]•• %c[ui_gray_2]A%c[0,74,134,232]•• %c[ui_gray_2]L%c[0,74,134,232]•• \n
-
-
-
- Bandage
-
-
- A normal elastic bandage used to stop bleeding and prevent infection of wounds. For regular bleeding, carefully apply the bandage to the wound. For arterial bleeding, urgently tie the bandage around the affected area.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] first-aid item\n
- %c[d_blue] • %c[ui_gray_2] fast usage (adhesive plaster)\n
- %c[d_blue] • %c[0,252,186,3] first-aid %c[ui_gray_2] H%c[0,252,186,3]•• %c[ui_gray_2]T%c[0,252,186,3]•• %c[ui_gray_2]A%c[0,252,186,3]••• %c[ui_gray_2]L%c[0,252,186,3]••• \n
-
-
-
-
- Vinca
-
-
- Ukrainian Vikasolum - an artificial equivalent of vitamin K. The main purpose of this drug is to increase blood coagulation speed. In great demand among stalkers who want slow-healing wounds and lacerations inflicted by mutants to close up faster. The effects of the drug are long-lasting. Take two tablets at a time.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] T%c[0,74,134,232]••• \n
-
-
-
-
- Anabiotics
-
-
- An experimental drug developed by Professor Ozersky for scientific research teams working in the Zone. At its core, the drug contains tetrodotoxin, known colloquially as "zombie powder," which causes a complete shutdown of the body's central nervous system that may allow people to survive emissions outside cover. After six years worth of field tests, thoughtful stalkers know to keep a few on hand for unexpected blowouts.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] zone-produced\n
- %c[d_red] • %c[ui_gray_2] causes temporary blackout\n
- %c[d_blue] • %c[0,74,134,232] post-heals whole body completely \n
-
-
-
-
- Psy-block
-
-
- A drug that blocks avalanche-like nerve impulses. Consumption induces short-term loss of all emotion. Used exclusively in the Zone to counteract the effects of anomalous psy-fields. The effects of the drug are long-lasting. Take two tablets at a time.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_red] • %c[ui_gray_2] causes extreme dizziness\n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] H%c[0,74,134,232]••••• %c[ui_gray_2]A%c[0,74,134,232]•• %c[ui_gray_2]L%c[0,74,134,232]•• \n
-
-
-
-
- Antidote
-
-
- The IP2 antitoxin is a complex drug comprising several antidotes, including metoclopramidum, pyridoxine, thiamine, riboxin and other pharmaceuticals. The drug is used to inject a range of antibiotics to neutralise natural poisons, together with synthetic poison absorbers, into the bloodstream. IP2 is not particularly popular in the Zone as most stalkers rely on a gas mask and a protective suit. However, there are still those who have a few units of this antidote stashed for emergency situations. The effects of the drug are long-lasting. Take one capsule at a time.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] H%c[0,74,134,232]•••• %c[ui_gray_2]T%c[0,74,134,232]•• \n
-
-
-
-
- Hercules
-
-
- The main component of this product is an anabolic androgen, an artificial steroid, the chemical composition of which resembles testosterone. Often used by stalkers during long raids to reduce muscle fatigue. Significantly increases weight-carrying capacity. The effects of the drug are long-lasting.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] drink\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] mild alcohol sobering effect\n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] T%c[0,74,134,232]•••••• \n
-
-
-
-
- Radioprotectant
-
-
- B190 Indraline radioprotectant, included in medkits issued to nuclear power plant personnel. Used in the Zone instead of the excessively toxic PC1 cysteamine hydrochloride, repeated use of which often caused death. Reduces the effects of gamma radiation on live tissue. Best consumed before exposure, as effects are not instant, but the drug lasts a long time. Take one capsule at a time.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] H%c[0,74,134,232]• %c[ui_gray_2]A%c[0,74,134,232]• %c[ui_gray_2]L%c[0,74,134,232]• \n
-
-
-
-
- Akvatabs
-
-
- Small plastic bag with pills intended for disinfecting water containing harmful bacteria and viruses. Use two tablets at a time.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_red] • %c[ui_gray_2] slow usage (dispersible tablets)\n
- %c[d_blue] • %c[ui_gray_2] clean nutrition source\n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] A%c[0,74,134,232]•••• %c[ui_gray_2]L%c[0,74,134,232]•••• \n
-
-
-
-
- Basic medical package
-
-
- A medical package containing a variety of equipment for treatment of minor injuries.\n \n
- %c[ui_gray_3]CONTENTS:\n
- %c[d_cyan] • %c[default] bandage (4)\n
- %c[d_cyan] • %c[default] diclofenac sodium\n
- %c[d_cyan] • %c[default] improvised stimpack\n
- %c[d_cyan] • %c[default] metamizole ampoule\n
- %c[d_cyan] • %c[default] mineral water\n
- %c[d_cyan] • %c[default] sulfadimethoxine\n
- %c[d_cyan] • %c[default] tourniquet\n
- %c[d_cyan] • %c[default] yadulin\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] storage for medical equipment\n
-
-
-
- Army medical package
-
-
- A military-grade medical package, containing a large amount of stimulating medical drugs.\n \n
- %c[ui_gray_3]CONTENTS:\n
- %c[d_cyan] • %c[default] ampoule of morphine\n
- %c[d_cyan] • %c[default] anti-radiaton preparation\n
- %c[d_cyan] • %c[default] aquatab tablets\n
- %c[d_cyan] • %c[default] bandage (4)\n
- %c[d_cyan] • %c[default] caffeine tablets\n
- %c[d_cyan] • %c[default] diclofenac sodium\n
- %c[d_cyan] • %c[default] harness (2)\n
- %c[d_cyan] • %c[default] military stimulant\n
- %c[d_cyan] • %c[default] mineral water\n
- %c[d_cyan] • %c[default] sleeping pill (blister)\n
- %c[d_cyan] • %c[default] tetanus vaccine\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] storage for medical equipment\n
-
-
-
- Scientific medical package
-
-
- A medical package, designed for use specifically in the Zone. It contains a large amount of drugs for the purposes of countering chemical, psy- and radioactive hazards.\n \n
- %c[ui_gray_3]CONTENTS:\n
- %c[d_cyan] • %c[default] anti-radiation drug(2) \n
- %c[d_cyan] • %c[default] antioxidant IP2\n
- %c[d_cyan] • %c[default] chlortetracycline IP2\n
- %c[d_cyan] • %c[default] cystamine(2) \n
- %c[d_cyan] • %c[default] diclofenac sodium\n
- %c[d_cyan] • %c[default] epinephrine\n
- %c[d_cyan] • %c[default] harness\n
- %c[d_cyan] • %c[default] indralin-B190\n
- %c[d_cyan] • %c[default] mineral water\n
- %c[d_cyan] • %c[default] psi-block\n
- %c[d_cyan] • %c[default] scientific stimulant(2) \n
- %c[d_cyan] • %c[default] small glucose shot(2)\n
- %c[d_cyan] • %c[default] sulfadimethoxine\n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] storage for medical equipment\n
-
-
-
-
- Diclofenac sodium
-
-
- Non-steroidal anti-inflammatory drug from the group of phenylacetic acid derivatives. The effect of the drug dulls the user's nervous activity. Because of the huge number of side effects, such as headache, dizziness, drowsiness, and in some cases memory disorders, disorientation, irritability, it is not used for medicinal purposes in most countries. However, in the Zone it has become popular due to a side effect expressed in violation of the sensitivity of the central nervous system, which allows it to withstand severe injuries, such as gunshot and shrapnel wounds.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_purple] • %c[ui_gray_2] average damage resistance bonus\n
- %c[d_blue] • %c[ui_gray_2] slight health restoration on usage\n
- %c[d_red] • %c[ui_gray_2] causes very slight dizziness \n
- %c[d_blue] • %c[0,252,186,3] first-aid %c[ui_gray_2] H%c[0,252,186,3]••• %c[ui_gray_2]T%c[0,252,186,3]••• %c[ui_gray_2]A%c[0,252,186,3]•• %c[ui_gray_2]L%c[0,252,186,3]•• \n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] T%c[0,74,134,232]•• %c[ui_gray_2]A%c[0,74,134,232]• %c[ui_gray_2]L%c[0,74,134,232]• \n
-
-
-
-
- Tourniquet
-
-
- A haemostatic rubber tourniquet, allowing the user to stop bleeding.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] first-aid item\n
- %c[d_blue] • %c[ui_gray_2] fast usage (tourniquet)\n
- %c[d_blue] • %c[0,252,186,3] first-aid arms and legs completely \n
-
-
-
-
- Yadulin
-
-
- A semi-drug based on morphine. It allows the user to quickly dull pain and increase production of adrenaline, aiding the user in withstanding even the most intense battles. It is popular among stalkers, often used as a recreative drug among criminal groups, and is allegedly being supplied to the Monolith.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[ui_gray_2] agonistic effect\n
- %c[d_red] • %c[ui_gray_2] causes severe dizziness\n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] H%c[0,74,134,232]•••• %c[ui_gray_2]T%c[0,74,134,232]•••• %c[ui_gray_2]A%c[0,74,134,232]•• %c[ui_gray_2]L%c[0,74,134,232]•• \n
-
-
-
-
- First-aid kit
-
-
- A general purpose medical kit. Handy for treating injuries, wounds, chemical and thermal burns and various types of poisoning.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
- %c[d_red] • %c[ui_gray_2] slow usage (field kit)\n
- %c[d_red] • %c[ui_gray_2] prolonged body recovery time\n
- %c[d_blue] • %c[0,252,186,3] first-aid %c[ui_gray_2] H%c[0,252,186,3]•••• %c[ui_gray_2]T%c[0,252,186,3]•••• %c[ui_gray_2]A%c[0,252,186,3]•• %c[ui_gray_2]L%c[0,252,186,3]•• \n
-
-
-
- Army medkit
-
-
- A specialised medical kit for providing first aid to combat casualties. The kit includes blood coagulants based on menadione, painkillers, antibiotics and immunostimulants, as well as a kit for removing bullets and fragments from the body. This medkit is issued primarily to army personnel such as Spetsnaz units venturing deep into the Zone and is popular among Duty forces.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] military item\n
- %c[d_red] • %c[ui_gray_2] slow usage (field kit)\n
- %c[d_red] • %c[ui_gray_2] prolonged body recovery time\n
- %c[d_blue] • %c[0,252,186,3] first-aid %c[ui_gray_2] H%c[0,252,186,3]••••••• %c[ui_gray_2]T%c[0,252,186,3]•••••••• %c[ui_gray_2]A%c[0,252,186,3]••• %c[ui_gray_2]L%c[0,252,186,3]••• \n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] A%c[0,74,134,232]• %c[ui_gray_2]L%c[0,74,134,232]• \n
-
-
-
- Scientific medkit
-
-
- A medical kit designed specifically for use in the Zone. The kit contains products for handling wounds, as well as preventing the development of radiation poisoning and reducing accumulated radiation in the body. Contains Vikasolum, Batilolum and Naphazoline, unlike other medkits.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] valuable\n
- %c[d_blue] • %c[ui_gray_2] high quality\n
- %c[d_red] • %c[ui_gray_2] slow usage (field kit)\n
- %c[d_red] • %c[ui_gray_2] prolonged body recovery time\n
- %c[d_blue] • %c[0,252,186,3] first-aid %c[ui_gray_2] H%c[0,252,186,3]•••••••••• %c[ui_gray_2]T%c[0,252,186,3]•••••••• %c[ui_gray_2]A%c[0,252,186,3]•••• %c[ui_gray_2]L%c[0,252,186,3]•••• \n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] A%c[0,74,134,232]•• %c[ui_gray_2]L%c[0,74,134,232]•• \n
-
-
-
-
- Small glucose shot
-
-
- Glucose shots are used in cases of severe diabetic hypoglycaemia, but can also be employed as a stimulant. Instant induction of carbohydrates entails a rapid boost of energy, thus allowing the user to undertake increased physical effort and withstand stress. Due to its convenient means of administration, they can be used in combat situations. This makes glucose shot a very good way to speed-up the healing process.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[ui_gray_2] fast usage (syringe)\n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] H%c[0,74,134,232]•• %c[ui_gray_2]T%c[0,74,134,232]•• %c[ui_gray_2]A%c[0,74,134,232]•• %c[ui_gray_2]L%c[0,74,134,232]•• \n
-
-
-
-
- Large glucose shot
-
-
- Glucose shots are used in cases of severe diabetic hypoglycaemia, but can also be employed as a stimulant. Instant induction of carbohydrates entails a rapid boost of energy, thus allowing the user to undertake increased physical effort and withstand stress. Due to its convenient means of administration, they can be used in combat situations. This makes glucose shot a very good way to speed-up the healing process.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[ui_gray_2] fast usage (syringe)\n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] H%c[0,74,134,232]•••• %c[ui_gray_2]T%c[0,74,134,232]•••• %c[ui_gray_2]A%c[0,74,134,232]••• %c[ui_gray_2]L%c[0,74,134,232]••• \n
-
-
-
-
- Improvised stimpack
-
-
- Improvised stimpacks are popular among novice Zoners as they are easy to obtain and inexpensive. Produced in the Zone from commonly available ingredients, without proper equipment and purification. This is the cause of many side effects which include headache, paraesthesia and considerable increase in nutrition demand. Injected in the thigh.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] zone-produced\n
- %c[d_blue] • %c[ui_gray_2] fast usage (syringe)\n
- %c[d_blue] • %c[ui_gray_2] moderate body recovery time\n
- %c[d_red] • %c[ui_gray_2] causes slight dizziness \n
- %c[d_blue] • %c[0,252,186,3] first-aid %c[ui_gray_2] H%c[0,252,186,3]•••• %c[ui_gray_2]T%c[0,252,186,3]•••• %c[ui_gray_2]A%c[0,252,186,3]••• %c[ui_gray_2]L%c[0,252,186,3]••• \n
-
-
-
-
- Military stimpack
-
-
- Military stims constitute a part of standard-issue soldier equipment for field operations in the Zone. Easily available on the market and can be acquired for a moderate price. Popular among experienced Zoners. They are significantly more potent and faster working than their improvised counterparts, which makes them perfect for use in life-threatening situations. Produced from raw agents of high density which can take their toll on the body. Side effects include shock, extreme dizziness and increased hunger.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[ui_gray_2] military item\n
- %c[d_blue] • %c[ui_gray_2] fast usage (syringe)\n
- %c[d_blue] • %c[ui_gray_2] fast body recovery time\n
- %c[d_red] • %c[ui_gray_2] causes moderate dizziness \n
- %c[d_blue] • %c[0,252,186,3] first-aid %c[ui_gray_2] H%c[0,252,186,3]••••• %c[ui_gray_2]T%c[0,252,186,3]••••••• %c[ui_gray_2]A%c[0,252,186,3]••• %c[ui_gray_2]L%c[0,252,186,3]••• \n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] H%c[0,74,134,232]•• %c[ui_gray_2]T%c[0,74,134,232]•• %c[ui_gray_2]A%c[0,74,134,232]• %c[ui_gray_2]L%c[0,74,134,232]• \n
-
-
-
-
- Scientific stimpack
-
-
- Created by the same defence research institute in Kiev which developed the well-known SEVA suit, this state-of-the-art solution constitutes the most potent health stabiliser available in the Zone. Best quality ingredients and perfected formula enable almost instant recuperation and ensure prompt radiation cleansing. Side effects are minimised. Extremely high cost practically limits the target group of the drug to most skilful and successful stalkers.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[ui_gray_2] high quality\n
- %c[d_blue] • %c[ui_gray_2] fast usage (syringe)\n
- %c[d_blue] • %c[ui_gray_2] rapid body recovery time\n
- %c[d_red] • %c[ui_gray_2] causes slight dizziness \n
- %c[d_blue] • %c[0,252,186,3] first-aid %c[ui_gray_2] H%c[0,252,186,3]•••••• %c[ui_gray_2]T%c[0,252,186,3]•••••••• %c[ui_gray_2]A%c[0,252,186,3]•••• %c[ui_gray_2]L%c[0,252,186,3]•••• \n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] H%c[0,74,134,232]••• %c[ui_gray_2]T%c[0,74,134,232]•••••• %c[ui_gray_2]A%c[0,74,134,232]• %c[ui_gray_2]L%c[0,74,134,232]• \n
-
-
-
-
- Sleeping pills
-
-
- A package of small sleeping pills that will almost immediately induce sleepiness, which also helps reducing avalanche-like nerve impulses for a considerable period. Swallow some time before you want to rest and drink a few sips of water afterwards for maximum effect. Take two tablets at a time.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] immediate sleepiness induction\n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] H%c[0,74,134,232]•••••••• \n
-
-
-
-
- Cocaine
-
-
- Small aluminium case containing cocaine and the tools facilitating use. Cocaine is a powerful nervous system stimulant. Its effects can last from 15-30 minutes to an hour, depending on the route of administration. Cocaine increases alertness, induces feelings of well-being, competence and sexuality. Anxiety, paranoia and restlessness are common side effects. With excessive dosage, tremors, convulsions and increased body temperature are observed. Bandits are known for sniffing this drug right before launching an assault or ambush.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] stimulant\n
- %c[d_blue] • %c[ui_gray_2] very potent alcohol sobering effect\n
- %c[d_blue] • %c[ui_gray_2] slight health restoration on use\n
- %c[d_blue] • %c[0,252,186,3] first-aid %c[ui_gray_2] H%c[0,252,186,3]•••••••• %c[ui_gray_2]T%c[0,252,186,3]•••• %c[ui_gray_2]A%c[0,252,186,3]••• %c[ui_gray_2]L%c[0,252,186,3]••• \n
-
-
-
-
- Epinephrine shot
-
-
- Epinephrine (also known as adrenalin) is a hormone and a neurotransmitter. Epinephrine has many functions in the body, instantly regulating heart rate, blood vessel and air passage diameters, and metabolic shifts. Epinephrine release is a crucial component of the fight-or-flight response of the sympathetic nervous system. The effects lead to increased blood glucose and fatty acids, providing substrates for instant energy production within cells throughout the body.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[ui_gray_2] high quality\n
- %c[d_blue] • %c[ui_gray_2] fast usage (syringe)\n
- %c[d_blue] • %c[ui_gray_2] very potent alcohol sobering effect\n
- %c[d_blue] • %c[ui_gray_2] slight health restoration on usage\n
- %c[d_blue] • %c[0,252,186,3] first-aid %c[ui_gray_2] H%c[0,252,186,3]•••••••••• %c[ui_gray_2]T%c[0,252,186,3]•••••••••• %c[ui_gray_2]A%c[0,252,186,3]•••• %c[ui_gray_2]L%c[0,252,186,3]•••• \n
-
-
-
-
- Morphine ampoule
-
-
- An iron ampoule designed as field equipment for military field personnel for instant pain reduction. This ampoule contains a powerful dose of morphine. In clinical medicine, morphine is regarded as the gold standard of opioid analgesics used to relieve severe or agonizing pain and suffering. Like other opioids, such as oxycodone, hydromorphone, and diacetylmorphine (heroin), morphine acts directly on the central nervous system (CNS) to relieve pain. Injected into an arm or a thigh.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[ui_gray_2] high quality\n
- %c[d_blue] • %c[ui_gray_2] fast usage (syringe)\n
- %c[d_purple] • %c[ui_gray_2] large damage resistance bonus\n
- %c[d_blue] • %c[ui_gray_2] moderate health restoration on usage\n
- %c[d_red] • %c[ui_gray_2] causes very slight dizziness \n
- %c[d_blue] • %c[0,252,186,3] first-aid %c[ui_gray_2] H%c[0,252,186,3]•••••••• %c[ui_gray_2]T%c[0,252,186,3]••••• %c[ui_gray_2]A%c[0,252,186,3]•••• %c[ui_gray_2]L%c[0,252,186,3]•••• \n
-
-
-
-
- Metamizole ampoule
-
-
- An iron ampoule designed as field equipment for military field personnel for instant pain reduction. It contains a powerful dose of metamizole mixed with an antihemorrhagic drug. Metamizole is one of the strongest Non-Steroidal Anti-Inflammatory Drugs (NSAIDs), especially effective at easing aches and pains as well as reducing fevers. It is also useful as anti-inflammatory drug when used in higher doses. May cause some delayed side effects such as leucopenia or agranulocytosis, so it should be used with moderation. Injected into an arm or a thigh. Its availability in the Zone is limited due to the difficulty of smuggling the medicine across military cordons.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[ui_gray_2] fast usage (syringe)\n
- %c[d_purple] • %c[ui_gray_2] moderate damage resistance bonus\n
- %c[d_blue] • %c[ui_gray_2] small health restoration on usage\n
- %c[d_blue] • %c[0,252,186,3] first-aid %c[ui_gray_2] H%c[0,252,186,3]••••• %c[ui_gray_2]T%c[0,252,186,3]••••• %c[ui_gray_2]A%c[0,252,186,3]••• %c[ui_gray_2]L%c[0,252,186,3]••• \n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] A%c[0,74,134,232]•• %c[ui_gray_2]L%c[0,74,134,232]•• \n
-
-
-
-
- Caffeine tablets
-
-
- Caffeine and sodium benzoate which cause central nervous to work with highest effectiveness possible at a given time. Reduce sleepiness to a large degree. Take two tablets at one time.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] stimulant\n
- %c[d_blue] • %c[ui_gray_2] potent alcohol sobering effect\n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] H%c[0,74,134,232]••• \n
-
-
-
-
- Cystamine
-
-
- A substance functioning as a radioprotector, used to weaken the effects of radiation on the body. The radioprotective effect of cystamine is based on the ability to bind free radicals - ionised and excited molecules formed in tissues upon irradiation - as well as the ability of the drug to interact with certain enzymes and impart resistance to ionising radiation. The effects of cystamine do not counteract already accumulated radiation.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] H%c[0,74,134,232]••• %c[ui_gray_2]T%c[0,74,134,232]••• \n
-
-
-
-
- Sulfadimethoxine
-
-
- Sulfanilamide medication, effective against gram-positive and gram-negative bacteria. It acts on pneumococci, streptococci, staphylococcus, E. coli, Klebsiella stick (Friedlander's stick), causative agents of dysentery; is less active with respect to the protein; is active against the trachoma virus (an infectious eye disease that can lead to blindness); It does not act on strains of bacteria resistant to other sulfanilamide preparations. Adverse effects include headaches, digestive disorders, skin rashes, fevers and leukopenia. The effects of the drug are long-lasting.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_red] • %c[ui_gray_2] causes moderate dizziness \n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] %c[ui_gray_2]T%c[0,74,134,232]•• %c[ui_gray_2]A%c[0,74,134,232]• \n
-
-
-
-
- Chlortetracycline
-
-
- An antibiotic. Crystalline powder of golden yellow colour, bitter taste, soluble in water. This is one of the first open antibiotics (after penicillin).\n Chlorotetracycline hydrochloride has a bacteriostatic effect on gram-positive and gram-negative microbes, rickettsia and some large viruses.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_red] • %c[ui_gray_2] causes slight dizziness \n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] H%c[0,74,134,232]• %c[ui_gray_2]T%c[0,74,134,232]•• \n
-
-
-
-
- Etperazine
-
-
- Tablets coated with a shell, containing 4.6 and 10 mg of perphenazine. The drug is a neuroleptic - an antipsychotic agent that provides antiallergic, sedative, miorelaxing, antiemetic, weak anticholinergic, hypotensive and hypothermic actions. The efficacy of Etperazine is due to the blockade of D2 receptors in the mesocortical and mesolimbic systems. Rarely used in the Zone.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[ui_gray_2] anti-inflammatory\n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] H%c[0,74,134,232]•• %c[ui_gray_2]L%c[0,74,134,232]• \n
-
-
-
-
- Cannabis joint
-
-
- Known for their relaxing effects, joints are used by stalkers recreationally, especially those who frequent the Barrier or the Red Forest beyond it. Induces a soothing effect if combined with alcohol. Increases hunger.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] stimulant\n
- %c[d_blue] • %c[ui_gray_2] zone-produced\n
- %c[d_blue] • %c[ui_gray_2] mild alcohol sobering effect\n
-
-
-
-
- Axyltallisal "The Rebirth"
-
-
- Warning! Do not use in combination with any other drug as this may prove lethal. This powerful mixture contained in a small syringe will make you lose consciousness. But when you wake up (if you wake up), you will feel reborn. Inject the syringe into your thigh when sitting down.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] fast usage (syringe)\n
- %c[d_blue] • %c[ui_gray_2] clean nutrition source\n
- %c[d_red] • %c[ui_gray_2] causes extreme dizziness \n
- %c[d_blue] • %c[0,252,186,3] first-aid %c[ui_gray_2] whole-body completely \n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] H%c[0,74,134,232]•••••••• %c[ui_gray_2]T%c[0,74,134,232]•••••••• %c[ui_gray_2]A%c[0,74,134,232]•••• %c[ui_gray_2]L%c[0,74,134,232]•••• \n
-
-
-
-
- Tetanus vaccine
-
-
- Tetanus vaccine is composed of inactivated tetanus toxin and is used to prevent an individual from contracting tetanus. Tetanus, also known as lockjaw, is a disease caused by the bacteria Clostridium tetani which enter the body through open wounds and release a poison called tetanospasmin. Tetanus is a potentially deadly disease because the poison attacks the nervous system blocking nerve signals from the spinal cord to and from the muscles. Animals and mutants alike are prone to carry Clostridium tetani which can be transferred through bites. Injection of inactivated toxin enhances your immunological system and can lead to several positive side-effects. Moreover, this vaccine has been supplemented with several additional anti-toxins making it usable for purposes other than preventing contraction of tetanus.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[ui_gray_2] fast usage (syringe)\n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] H%c[0,74,134,232]••• %c[ui_gray_2]A%c[0,74,134,232]•• %c[ui_gray_2]L%c[0,74,134,232]•• \n
-
-
-
-
- Potassium iodide
-
-
- A pharmacological compound, used in the Zone as a cheap means of countering the effects of radiation on the body. Causes numerous side effects, notably gastrointestinal tract blistering, numbness to pain and dysfunction of the thyroid gland.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] medicine\n
- %c[d_blue] • %c[ui_gray_2] imported\n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] H%c[0,74,134,232]• %c[ui_gray_2]T%c[0,74,134,232]• %c[ui_gray_2]A%c[0,74,134,232]• %c[ui_gray_2]L%c[0,74,134,232]• \n
-
-
-
-
- Marijuana
-
-
- Self-grown cannabis. Smoking it is a popular pastime, especially among Freedomers who've served at the Barrier. Marijuana bags can be bought here and there in the Zone. Some believe that the drug helps retain a balance of the mind.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] stimulant\n
- %c[d_red] • %c[ui_gray_2] slow usage (prolonged inhalation)\n
- %c[d_blue] • %c[ui_gray_2] potent alcohol sobering effect\n
-
-
-
-
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/configs/text/eng/st_items_trash.xml b/mods/[DEV] Groks Body Health System Redux/gamedata/configs/text/eng/st_items_trash.xml
deleted file mode 100644
index b61d2a41..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/configs/text/eng/st_items_trash.xml
+++ /dev/null
@@ -1,799 +0,0 @@
-
-
-
-
-
-
- Plastic jar
-
-
-
- A tiny plastic jar. Such jars are always handy for keeping small items safe, especially drugs and medicine. It protects the contents from moisture and ensures the moisture content of the product remains the same.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] basic material\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
-
-
-
-
- Empty syringe
-
-
- A 12mL medical syringe with a lousy plunger. Seems like it has been used quite frequently. With a drug-making kit and proper knowledge, this syringe can come in handy for the creation of various types of drugs.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] basic material\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
-
-
-
-
- Rope
-
-
-
- A good rope serves many purposes, especially in a place like the Zone. Many stalkers can put it to good use, which generates a rather high trading value. About 10-metres long.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2] basic material\n
-
-
-
-
- Russian PLAYBOY
-
-
- 100 (somewhat old and crusty) pages worth of prime nude Russian girls. Common contraband among conscripts, criminals, and other unfortunates who are stuck in the Zone against their will. Some westerners joke about it saying: From Russia with love.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
-
-
-
-
- Ukrainian Special Forces Survival Guide
-
-
- You have studied this survival guide many times before. For this reason, it does not have any educational value, but you should be able to sell it for some quick cash. Some stalkers may want to take a look at it.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
-
-
-
-
- Guitar
-
-
- Guitar is a string instrument widely used by stalkers of all factions throughout the Zone in order to raise spirits and fraternize. Stalkers can often be seen playing the guitar in camps, outposts or other places of relative safety - usually by the fire. \n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
-
-
-
- Harmonica
-
-
- For blues and prison romance lovers.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
-
-
-
- Steel wool
-
-
- Steel wool, also known as wire wool or wire sponge, is a bundle of strands of very fine soft steel filaments. It is used as an abrasive in finishing and repair work for polishing wood or metal objects, cleaning household cookware, and sanding in light painting. Steel wool is made from low-carbon steel (carbon content is low enough to be close to plain iron). It is not made by drawing "steel wool wire" through a tapered die, but rather by a process more like broaching where a heavy steel wire is pulled through a toothed die that removes a thin wire shaving. Bundles of steel wool can be used in precision equipment cleaning and to improve spreading of lubricants and cleaning solvents.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] technological item\n
-
-
-
-
- Industrial grease
-
-
- Grease is a semi-solid lubricant. It generally consists of a soap emulsified with mineral or vegetable oil. Greases are applied to mechanisms that cannot be lubricated constantly or where typical lubricating oil would not stay in position. They also act as sealants to prevent ingress of water and incompressible materials. Grease-lubricated bearings have greater frictional characteristics due to their high viscosity.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] technological item\n
- %c[d_blue] • %c[ui_gray_2] high quality\n
-
-
-
-
- Metal shovel
-
-
- An old metal shovel used for various field purposes. Few people actually keep shovels in their backpacks as they are quite commonly found in the Zone, especially in industrial areas.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
-
-
-
- Military field shovel
-
-
- High-quality black military shovel. Used for numerous field purposes. Training regimen of Spetsnaz soldiers covers hand-to-hand combat and use of hand-held weapons and other equipment for the purposes of eliminating enemies. One famous example is the entrenching shovel which is a formidable weapon in close combat when used by a Spetsnaz operator.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] military item\n
-
-
-
- Mein Kampf
-
-
- Adolf Hitler's strategic memoires collected in a single book. The book and all that it stands for are hated by many, which makes this an item of high symbolic value. Adolf Hitler (20 April 1889 - 30 April 1945) was an Austrian-born German politician and the leader of the National Socialist German Workers Party (German: Nationalsozialistische Deutsche Arbeiterpartei (NSDAP), commonly referred to as the Nazi Party). He was chancellor of Germany from 1933 to 1945 and dictator of Nazi Germany (as Fuhrer und Reichskanzler) from 1934 to 1945. Hitler is responsible for the founding of Nazism, the start of World War II, and the Holocaust.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] personal belongings\n
-
-
-
-
- Personal journal
-
-
- A leather-bound journal. It's filled with the original bearer's inner thoughts, observations, and some rough sketches with notations. A light skim reveals helpful advice for the common man, but little else beyond sentimental value.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] personal belongings\n
-
-
-
-
- Map-making kit
-
-
- Map-making kit containing a set of pens and measurement instruments. All in a waterproof and camouflaged cover of high quality. Used by and issued to Ukrainian artillery personnel. Some maps have not yet been completed. Your PDA is much more useful than any of this.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] technological item\n
- %c[d_red] • %c[ui_gray_2] unusable\n
-
-
-
- Welding goggles
-
-
- Old and corroded welding goggles with a broken leather band. Welding goggles are designed to provide eye protection while welding or cutting. Useless in their current state and of no to little value.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
-
-
-
- Small survival kit
-
-
- Survival kit containing fabric, sewing needles and a few leather strips. Primarily used as a means to stop the bleeding and treat lacerations, in the hands of a skilled user this small survival kit may prove essential during prolonged excursions in the Zone. It can also be utilized for outfit repairs of even most severe damage.\n \n
- %c[ui_gray_3]HEALING:\n
- %c[d_red] • %c[ui_gray_2] Restores 3.6%hp/s, total 162%\n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
- %c[d_blue] • %c[ui_gray_2] high quality\n
- %c[d_red] • %c[ui_gray_2] slow usage (field kit)\n
- %c[d_blue] • %c[ui_gray_2] immediately stops heavy bleeding\n
- %c[d_red] • %c[ui_gray_2] prolonged body recovery time\n
- %c[d_blue] • %c[0,74,134,232] post-heals %c[ui_gray_2] T%c[0,74,134,232]•••••••• %c[ui_gray_2]A%c[0,74,134,232]••• %c[ui_gray_2]L%c[0,74,134,232]••• \n
-
-
-
-
- Decorated jewellery box
-
-
- A small box that contains finely crafted jewellery. While it is not uncommon for stalkers to poach hooves, horns or teeth from the Zone's mutants, only a select few are skilled enough to craft such materials into treasure like this. However, few stalkers care for such trinkets, and few traders are in the business of exporting such finery.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
- %c[d_blue] • %c[ui_gray_2] valuable\n
-
-
-
- Mechanics manual
-
-
- Manual of mechanical engineering. Some people read such books to expand their expertise and learn more about the facilities and factories in the Zone. Low sale value.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
-
-
-
-
- Engineering manual
-
-
- Manual of industrial engineering. Some people read such books to expand their expertise and learn more about the facilities and factories in the Zone. Low sale value.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
-
-
-
-
- Drug distribution notes
-
-
- This notebook describes various drug deals in detail. Specific nicknames, locations and time of meets. Some deals are executed through equipment exchanges and others are paid in large amounts of roubles. When browsing the pages, it becomes clear that Freedom is the main distributor of natural drugs such as marijuana. Bandits are producers and distributors of the more powerful (and dangerous) synthetic drugs like salicylic acid and cocaine. Apparently, every faction in the Zone takes part in these deals. In particular, Monolith seems to be taking in large amounts drugs in exchange for more expensive types of ammunition and equipment.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] personal belongings\n
- %c[d_blue] • %c[ui_gray_2] valuable\n
-
-
-
-
- Photo of a loved one
-
-
- This photo contains a softly rendered figure, smiling back at you encouragingly. Great attention has been given to the lighting and the atmosphere around the person within the frame, demonstrating a thoughtful, observational tenderness.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] personal belongings\n
-
-
-
-
- Ukrainian MAXIM
-
-
- This magazine is well-worn but still contains some glossy spreads of beautiful Slavic girls. Many of the pages have been torn out. Some stalkers argue whether it's funny or sad that rookies bring stuff like this into a place as deadly and sublime as the Zone. It smells faintly of cheese.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
-
-
-
-
- Leather boots
-
-
- Everyone is aware of the importance of good gear. An extra pair of boots can prove extremely useful and may be the object of envy of other stalkers since it is such a rarity.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
- %c[d_blue] • %c[ui_gray_2] personal belongings\n
-
-
-
-
- Old batteries (emptied)
-
-
- Only one out of ten batteries found in the Zone still carry some juice. These, however, are completely drained and because of that do not have any value whatsoever.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] technological item\n
- %c[d_red] • %c[ui_gray_2] depleted\n
-
-
-
- Batteries (emptied)
-
-
- These batteries have been completely drained of whatever energy they once had. Their only value is the amount of metal they are made of.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] technological item\n
- %c[d_red] • %c[ui_gray_2] depleted\n
-
-
-
- Military battery unit (emptied)
-
-
- An empty military battery unit. If full they are very valuable and in high demand due to the relative scarcity of batteries in the Zone. However, now that the juice has run out they constitute a backpack burden.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] technological item\n
- %c[d_red] • %c[ui_gray_2] depleted\n
-
-
-
- Broken flashlight
-
-
- The handle is broken and even duct tape wouldn't be able to keep the batteries in place. This is no longer of any value.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] technological item\n
- %c[d_red] • %c[ui_gray_2] broken beyond repair\n
- %c[d_red] • %c[ui_gray_2] unusable\n
-
-
-
- Soaked underwear
-
-
- An extra pair of socks, a shirt and pants could substantially increase your comfort. Unfortunately, this set is completely soaked. There is little chance any stalker will pay for this garbage. Although they might seem worthless, the material the underwear is made of can be used in armour and weapon maintenance.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
- %c[d_blue] • %c[ui_gray_2] personal belongings\n
-
-
-
-
- Weapon spare parts
-
-
- Spare parts for what looks to be an AKM assault rifle. The wooden parts are not in a very good condition, and the same can be said of metal elements. Only novices would be interested in buying them. However, it seems that they may be useful for equipment repairs. Certain Zoners replace some parts when finding a new weapon out in the open in order to avoid being hunted for stealing from someone's stash.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] military item\n
-
-
-
-
- Bed spread
-
-
- Luxury item in the Zone. Since there are only a few beds in safehouses in the Zone, having a sleeping bag and a bed spread may prove essential if you don't want to hit the wall in most inappropriate of circumstances. Bed spreads are included in the equipment of some military units.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
-
-
-
-
- Walkie talkie
-
-
- The display is dead and there is a constant hiss from the speaker indicating that this is of no use. Has what appears to be bite marks all over it.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] technological item\n
- %c[d_red] • %c[ui_gray_2] broken beyond repair\n
- %c[d_red] • %c[ui_gray_2] unusable\n
-
-
-
- Deck of cards
-
-
- Playing cards is a popular pastime, but a deck of cards can also be used for sorting special trades. The cover depicts the proud architectural design of the Moscow Metro.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
-
-
-
- Military maps
-
-
- Maps showing the location of military camps around the Zone. Each PDA comes with these maps installed, so this item is of little use to anyone.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] military item\n
-
-
-
-
- Old head lamp
-
-
- Although few dare to explore the Zone during the night, there are circumstances where a head lamp is crucial. And another source of light won't hurt, because you never know when you'll have to move from place to place. Unfortunately, this particular unit has long seen its working days and can now only serve as a source of cheap spare parts.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] technological item\n
- %c[d_red] • %c[ui_gray_2] broken beyond repair\n
- %c[d_red] • %c[ui_gray_2] unusable\n
-
-
-
- Telescopic mirror
-
-
- Small mirror mounted on a telescopic iron tube. A handy item used by fighters versed in the arts of urban combat as it allows to peek around corners without getting shot.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] military item\n
-
-
-
- Old hammer (reusable)
-
-
- Hammer with a wooden handle and an iron head. A common sight in industrial areas of the Zone. Despite its heavy weight, it's often carried in backpack due to its versatility.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
- %c[d_orange] • %c[ui_gray_2] unlimited usages\n
-
-
-
- Camouflaged tarpaulin
-
-
-
- A tarpaulin (or hootch) is a large sheet of strong, flexible, water-resistant or waterproof material, often cloth such as canvas or polyester coated with urethane, or made of plastics such as polyethylene. It has reinforced grommets at the corners and along the sides to form attachment points for rope, allowing them to be tied down or suspended. Serves many purposes, but is mainly used to create small and simple tent-like hideouts. Trading value is low due to easily found alternatives.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] military item\n
-
-
-
-
- 2 synthetic ropes
-
-
-
- Synthetic ropes are commonly found in military warehouses. But for some reason few military stalkers actually carry them. A good rope serves many purposes, especially in a place like the Zone. Many stalkers can put this to good use, which generates a rather high trading value. Each is about 5 metres long.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
-
-
-
-
- Field cutlery
-
-
-
- A spoon, a knife and a fork made of heavy steel. A robust and reasonably light cutlery set, ideal for backpacking and field exploration. The cutlery is held together by a copper cord. If cleaned properly and derusted, it would be safe to use.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
-
-
-
-
- Small radio
-
-
-
- Music is a good way to calm your nerves. But with a broken antenna this radio is of little use. Moisture and dirt have also damaged this item.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] technological item\n
- %c[d_red] • %c[ui_gray_2] broken beyond repair\n
- %c[d_red] • %c[ui_gray_2] unusable\n
-
-
-
-
- Broken radio
-
-
-
- A small radio in a poor condition. Dirty and damaged by moisture. The interior seems to be in quite a bad shape as the radio rattles when moved around. No to little value.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] technological item\n
- %c[d_red] • %c[ui_gray_2] broken beyond repair\n
- %c[d_red] • %c[ui_gray_2] unusable\n
-
-
-
-
- Broken detector
-
-
-
- A broken Bear detector. The screen is smashed and the interior seems to be in quite a bad shape. Some of the electronic parts inside are still safe. They can be reused for repair purposes, or perhaps even in crafting.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] technological item\n
- %c[d_red] • %c[ui_gray_2] broken beyond repair\n
- %c[d_red] • %c[ui_gray_2] unusable\n
-
-
-
-
- Leather gloves
-
-
-
- A pair of leather gloves. Feel and smell good as if they are bought recently. When the weather gets cold, it's important to keep your hands warm and ready.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
- %c[d_blue] • %c[ui_gray_2] valuable\n
-
-
-
-
- Hand watch
-
-
-
- An old, classic Soviet "raketa3" watch. Looks like it's still in a good shape. It's not surprising that many stalkers prefer mechanical watches over PDAs for usual time checking. Giving the fact that those watches are reliable and durable even at the worst situations, they come in handy where PDAs fail due to strong electromagnetic waves coming from emissions or nearby anomaly fields. However, some simply wear them as a style accessory.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2] personal belongings\n
- %c[d_blue] • %c[ui_gray_2] technological item\n
- %c[d_blue] • %c[ui_gray_2] valuable\n
-
-
-
-
- Ball-peen hammer
-
-
-
- Also known as a machinist's hammer. Ball-peen hammer is a type of peening hammer used in metalworking. Despite being old and rusty, you can never go wrong with having one for small repair jobs.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
-
-
-
-
- Duct tape
-
-
-
- Duct tape is commonly used in situations that require a strong, flexible, and very sticky tape. An easy and temporary solution for quick repair jobs. This type also has a long-lasting adhesive and resistance to weathering.\n \n
- %c[ui_gray_3]PROPERTIES:\n
- %c[d_blue] • %c[ui_gray_2] everyday item\n
-
-
-
-
-
-
- Ammo components for 12x70 shot rounds
-
-
- Powder, shells and shot - everything needed to make 12x70 buckshot rounds. Has enough to make 40 rounds.\n \n%c[ui_gray_2]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2]used for crafting ammunition\n%c[0,253,155,155] • %c[0,240,140,140]requires tools
-
-
- Tools for manufacturing 12x70 shot rounds
-
-
- Tools necessary for making 12x70 buckshot rounds. 12x70.\n \n%c[ui_gray_2]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2]used for crafting ammunition\n
- %c[d_cyan] • %c[ui_gray_2]everyday item\n
-
-
- Sewing kit
-
-
- Needles and cloth scraps. Everything you need to make cloth items.\n \n
- %c[ui_gray_2]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2]Crafting Tools\n
- %c[d_cyan] • %c[ui_gray_2]Common
-
-
- Sleeping bag components
-
-
- Everything needed to make a sleeping bag.\n \n
- %c[ui_gray_2]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2]Crafted Items\n
- %c[0,253,155,155] • %c[0,240,140,140]Sewing kit needed
-
-
- Backpack components
-
-
- Rubberized fabric, zippers and rivets. Everything needed to craft a backpack.\n \n
- %c[ui_gray_2]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2]Crafted Items\n
- %c[0,253,155,155] • %c[0,240,140,140]Sewing kit needed
-
-
- Tobacco rolls
-
-
- Loose tobacco, filters and paper.\n \n
- %c[ui_gray_2]PROPERTIES:\n
- %c[0,253,155,155] • %c[0,240,140,140]May cause cancer\n
- %c[d_cyan] • %c[ui_gray_2]Homemade
-
-
- Master disassembly tools
-
-
- Factory made tools designed to disassemble anything. \n \n%c[ui_gray_2]PROPERTIES:\n%c[0,155,155,155] • %c[ui_gray_2]Crafting Tools\n%c[0,255,1,1] • %c[0,100,250,100]Works on high tech gear
-
-
- Journeyman disassembly tools
-
-
- A rusted set of tools for medium armour disassembly.\n \n%c[ui_gray_2]PROPERTIES:\n%c[0,155,155,155] • %c[ui_gray_2]Crafting Tools\n%c[0,255,1,1] • %c[0,100,250,100]Works on medium armour
-
-
- Basic disassembly tools
-
-
- Improvised tools designed for fabric or light gas masks.\n \n%c[ui_gray_2]PROPERTIES:\n%c[0,155,155,155] • %c[ui_gray_2]Crafting Tools\n%c[0,255,1,1] • %c[0,100,250,100]Works on light armour and gas masks
-
-
- SEVA plate
-
-
- An armoured plate carved from a SEVA suit. Able to stop small bullets and gives some elemental resistance. Can be used for repairs.\n \n%c[ui_gray_2]PROPERTIES:\n \n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- Heavy "ESAPI" plate
-
-
- A ceramic-composite plate that provides class 4 protection. Can be used as a repair material.\n \n%c[ui_gray_2]PROPERTIES:\n \n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- Medium "SAPI" plate
-
-
- An armoured plate that provides class 3 protection. Can be used as a repair material.\n \n%c[ui_gray_2]PROPERTIES:\n \n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- Homemade plate
-
-
- Hand-made armoured plate using kevlar and aramid. Provides class 2 protection. Can be used as a repair material.\n \n%c[ui_gray_2]PROPERTIES:\n \n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- Light cloth plate
-
-
- Hand made kevlar and fabric plate. Provides class 1 protection. Can be used as a repair material.\n \n%c[ui_gray_2]PROPERTIES:\n \n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- Granite-4M plate
-
-
- Military heavy armoured plate composed of ceramics. Provides class 5 protection. Can be used as a repair material.\n \n%c[ui_gray_2]PROPERTIES:\n \n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- Unknown plate
-
-
- An armoured plate composed of unknown materials. Seems to be made of solid alloy and some fabric. Extremely heavy. Provides class 5 protection (in field tests). Can be used as a repair material.\n \n%c[ui_gray_2]PROPERTIES:\n \n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- Ammo pouch
-
-
- A cut out ammo pouch, used to store magazines. Made of dense and high-quality fabric.\n \n%c[ui_gray_2]PROPERTIES:\n \n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- Small armoured plate
-
-
- A small homemade armoured plate, likely made of melted down scrap. Can be used as a repair material.\n \n%c[ui_gray_2]PROPERTIES:\n \n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- Green cloth
-
-
- Green fabric, cut from a green suit. Very high quality and dense fabric. Can be used as a repair material.\n \n%c[ui_gray_2]PROPERTIES:\n \n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- Black cloth
-
-
- Black fabric, cut from a black suit. Very high quality and dense fabric. Can be used as a repair material.\n \n%c[ui_gray_2]PROPERTIES:\n \n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- Brown cloth
-
-
- Brown fabric, cut from a brown suit. Very high quality and dense fabric. Can be used as a repair material. \n \n%c[ui_gray_2]PROPERTIES:\n \n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- White cloth
-
-
- White fabric, cut from a white suit. Very high quality and dense fabric. Can be used as a repair material. \n \n%c[ui_gray_2]PROPERTIES:\n \n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- Servo drive
-
-
- A servo taken from an exoskeleton. Looks like it could be replaced with a repair kit.\n \n%c[ui_gray_2]PROPERTIES:\n \n
- %c[d_cyan] • %c[ui_gray_2] высокоtechnological item\n
-
-
-
- Plastic scraps
-
-
- Bits and pieces of dense plastic, carved from a suit. Can be used for patchs or repairs.\n \n%c[ui_gray_2]PROPERTIES:\n \n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- Glass
-
-
- Pieces of glass cur from gas masks or helmets. Can replace broken glass in almost any helmet with the right tools.\n \n%c[ui_gray_2]PROPERTIES:\n \n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- Old shotgun parts
-
-
- Old wood and metal parts from various smooth bore rifles, all in varying condition. Some of this could be useful for repairs.\n \n%c[ui_gray_2]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- Soviet automatic rifle parts
-
-
- Old springs, barrels and stocks from various soviet rifles, all in varying condition. Some of this could be useful for repairs.\n \n%c[ui_gray_2]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- NATO automatic rifle parts
-
-
- Old barrels, frames and stocks for various NATO automatic rifles, all in varying condition. Some of this could be useful for repairs.\n \n%c[ui_gray_2]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- Soviet pistol parts
-
-
- Old springs, hammers and frames from various soviet pistols. Some of this could be useful for repairs.\n \n%c[ui_gray_2]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- NATO pistol parts
-
-
- Old springs, hammers and frames from various NATO pistols. Some of this could be useful for repairs.\n%c[ui_gray_2]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- Soviet sniper rifle parts
-
-
- Old soviet long rifle parts. Some of this could be used for repairs.\n \n%c[ui_gray_2]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- NATO sniper rifle parts
-
-
- Old NATO sniper rifle parts. Some of this could be used for repairs.\n \n%c[ui_gray_2]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- Shotgun parts
-
-
- Relatively new parts designed for smooth barrel rifles. This could be used for repairs.\n \n%c[ui_gray_2]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- Submachine Gun Parts
-
-
- Springs, frames and stocks designed for submachineguns. This could be used for repairs.\n \n%c[ui_gray_2]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
-
- Homemade Antiseptic
-
-
- A mixture of tablets and solvents proven effective in neutralising radiation and bio-hazardous materials. Good for decontaminating items.\n \n%c[ui_gray_2]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2]Decontaminates items\n
- %c[d_cyan] • %c[ui_gray_2]Homemade
-
-
- Shotgun Barrel Replacement
-
-
- Specialised kit for replacing shotgun barrels in the field. Includes all tools and barrels.\n \n%c[ui_gray_2]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2] technological item\n
-
-
- Jagermeister Liqueur
-
-
- A German strong herbal liqueur. Made with 56 components and aged for 12 months in oak barrels. The label of the bottle depicts a deer with a cross on it's horns. According to legend, the deer was seen by Saint Hubert, the patron saint of hunters.\n \n%c[ui_gray_2]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2] Strong alcoholic beverage\n
- %c[d_cyan] • %c[ui_gray_2] Causes dizziness
-
-
- Paper, tobacco and filters.
-
-
- Tobacco, filters and paper, everything needed to make cigarettes. This should make about six to seven. \n \n%c[ui_gray_2]PROPERTIES:\n
- %c[d_cyan] • %c[ui_gray_2]Crafted Items
-
-
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/configs/text/eng/ui_st_body_health_system.xml b/mods/[DEV] Groks Body Health System Redux/gamedata/configs/text/eng/ui_st_body_health_system.xml
deleted file mode 100644
index eb06a0c4..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/configs/text/eng/ui_st_body_health_system.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
- Body Health System
-
-
- Body Health System
-
-
-
- Text HUD Replacer
-
-
- (Reloading required) Text version of HUD.
-
-
-
- New Limb Penalties feature
-
-
- (Reloading required) Enabling this activates new penalties feature. Disabling returns old BHS penalties.
-
-
- New voice for penalties
-
-
- Enabling this activates new voice during sprint with damaged legs. Disabling returns voice from original mod.
-
-
- Minimum Leg HP for camera sway penalty
-
-
- HP of at least one leg must be below this value to play effects. Default slider value of 5 means that effects will play at 4 or less HP. (Movement speed penalty will still be there, for now)
-
-
- Minimum Leg HP for damage during sprint
-
-
- Sprint with damaged leg has a chance to deal damage. This slider sets the minimum amount of leg HP needed to play this effect, i.e. if slider is 4 and leg HP is 4 then effect will be active. (Value of -1 disables the feature)
-
-
- Legs Camera Effects Power
-
-
- Multiplier of legs penalty for camera effect. Default: 1.0.
-
-
- Minimum Arms HP for penalties
-
-
- Summary Arms HP must be below this value to play effects. Default slider value of 10 means that effects will play if both arms have 9 or less HP.
-
-
- Arms Effects Power
-
-
- Multiplier for arms penalty effect power. Default: 1.0.
-
-
- Minimum Head Damage for penalties
-
-
- Damage needed to play effects. For example, default slider value of 2 means that each headshot damage must be for 2 or more HP.
-
-
- Head Effects Power
-
-
- Multiplier for head penalty effect power. Default: 1.0.
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/configs/text/rus/st_items_medical.xml b/mods/[DEV] Groks Body Health System Redux/gamedata/configs/text/rus/st_items_medical.xml
deleted file mode 100644
index 1585b7a7..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/configs/text/rus/st_items_medical.xml
+++ /dev/null
@@ -1,536 +0,0 @@
-
-
-
-
-
-
-
- Противорадиационный препарат
-
-
- Препарат радиозащитного действия «Мексамин», широко распространённый на территории Зоны. При применении вызывает сужение периферических кровеносных сосудов и кислородное голодание, что в данном случае является средством профилактики и лечения лучевой болезни. Хорошо переносится подавляющим большинством людей; в отдельных случаях возможны: лёгкая тошнота, головокружение, боли, реже - рвота.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] импортный\n
- %c[d_blue] • %c[ui_gray_2] быстрое использование (шприц)\n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Г%c[0,74,134,232]• %c[ui_gray_2]T %c[0,74,134,232]•• %c[ui_gray_2]Р%c[0,74,134,232]•• %c[ui_gray_2]Н%c[0,74,134,232]•• \n
-
-
-
- Бинт
-
-
- Асептический бинт для остановки кровотечения и предотвращения попадания в рану инфекции. При обычном кровотечении позволяет перевязать рану, при артериальном - перетянуть артерию.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] изделие первой помощи\n
- %c[d_blue] • %c[ui_gray_2] быстрое использование (лейкопластырь)\n
- %c[d_blue] • %c[0,252,186,3] Времмено лечит %c[ui_gray_2] Г%c[0,252,186,3]•• %c[ui_gray_2]T%c[0,252,186,3]•• %c[ui_gray_2]Р%c[0,252,186,3]••• %c[ui_gray_2]Н%c[0,252,186,3]••• \n
-
-
-
-
- «Барвинок» (Привозной)
-
-
- Украинский «Викасол» - синтетический аналог витамина К. Основное действие заключается в повышении свёртываемости крови. Пользуется спросом среди сталкеров, поскольку позволяет организму быстрее рубцевать рваные раны. Обладает продолжительным действием. Приём по 2 таблетки.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] T%c[0,74,134,232]••• %c[ui_gray_2]\n
-
-
-
-
- Анабиотик
-
-
- Экспериментальный препарат, разработанный для научно-исследовательских групп, действующих в Зоне. Входящий в формулу препарата тетрадотоксин, известный как «порошок зомби», вызывает полный паралич центральной нервной системы; предположительно, это может обеспечить выживание вне укрытия во время выброса. Спустя шесть лет полевых испытаний большинство рассудительных сталкеров теперь держит при себе парочку таких на случай внезапных выбросов.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[0,153,255,255] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] сделан в Зоне\n
- %c[d_red] • %c[ui_gray_2] вызывает временные провалы в памяти\n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] все тело \n
-
-
-
-
- «Пси-блокада»
-
-
- Наркотический препарат, блокирующий лавинообразные нервные импульсы. Интересен побочный эффект: после приёма препарата наблюдается кратковременное исчезновение каких-либо эмоций. В Зоне используется для противодействия аномальным полям повышенной пси-активности; за её пределами применения не нашёл. Обладает продолжительным действием. Приём по 2 таблетки.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_red] • %c[ui_gray_2] вызывает очень сильное головокружение\n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Г%c[0,74,134,232]••••• %c[ui_gray_2]Р%c[0,74,134,232]•• %c[ui_gray_2]Н%c[0,74,134,232]•• \n
-
-
-
-
- Антидот
-
-
- Препарат «Антитоксикант ИП2» представляет собой комплекс антидотов: метоклопрамида, пиридоксина, тиамина, рибоксина и других. Вводит в кровь вещества, способные разлагать белковые яды, а также абсорбенты синтетических ядов. Особой популярностью не пользуется, поскольку большинство сталкеров больше полагаются на противогаз и комбинезон. Тем не менее есть ещё те сталкеры, которые имеют несколько припрятанных упаковок этого препарата на чрезвычайный случай. Обладает продолжительным действием. Приём по 1 капсуле.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Г%c[0,74,134,232]•••• %c[ui_gray_2]T%c[0,74,134,232]•• \n
-
-
-
-
- «Геркулес»
-
-
- Основной компонент - искусственно созданный стероид, по химическому составу сходный с тестостероном. Применяется сталкерами в долгих переходах для повышения порога утомляемости мышц. Помогает значительно увеличить переносимый вес. Препарат длительного действия.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] напиток\n
- %c[d_blue] • %c[ui_gray_2] импортный\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] слабый отрезвляющий эффект\n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] T%c[0,74,134,232]•••••• \n
-
-
-
-
- Радиопротектор
-
-
- Радиопротектор «Индралин-Б190» входил в состав личных аптечек работников АЭС. Появился в Зоне в качестве замены излишне токсичному цистамину гидрохлорида (РС1). Уменьшает воздействие гамма-излучения на ткани живого организма. Данный препарат желательно применять превентивно, то есть до облучения, поскольку он не оказывает мгновенного эффекта. Обладает продолжительным действием. Приём по 1 капсуле.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Г%c[0,74,134,232]• %c[ui_gray_2]Р%c[0,74,134,232]• %c[ui_gray_2]Н%c[0,74,134,232]• \n
-
-
-
-
- «Акватабс»
-
-
- Небольшая пластиковая упаковка с таблетками, предназначенными для обеззараживания воды от вредных бактерий и вирусов. Приём по 2 таблетки.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_red] • %c[ui_gray_2] медленное использование (растворимые таблетки)\n
- %c[d_blue] • %c[ui_gray_2] здоровое питание\n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Р%c[0,74,134,232]•••• %c[ui_gray_2]Н%c[0,74,134,232]•••• \n
-
-
-
-
- Медицинский набор (Базовый)
-
-
- Медицинский набор первой помощи Позволяет справляться с легкими травмами вида: ранения, ушибы, кровотечения различного характера.\n \n
- %c[ui_gray_3]СОДЕРЖИМОЕ:\n
- %c[d_cyan] • %c[default] Бинт (4)\n
- %c[d_cyan] • %c[default] Диклофенак натрия\n
- %c[d_cyan] • %c[default] Самопальный стимпак\n
- %c[d_cyan] • %c[default] Ампула салициловой кислоты\n
- %c[d_cyan] • %c[default] Бутылка минеральной воды\n
- %c[d_cyan] • %c[default] Сульфадиметоксин\n
- %c[d_cyan] • %c[default] Жгут\n
- %c[d_cyan] • %c[default] Йадулин\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] комплект медикаментов\n
-
-
-
- Медицинский набор (Армейский)
-
-
- Армейский медицинский набор, включающий большое количество стимулирующих медпрепаратов. Позволяет справляться с травмами различного вида и степени сложности: ранениями, ожогами, отравлениями.\n \n
- %c[ui_gray_3]СОДЕРЖИМОЕ:\n
- %c[d_cyan] • %c[default] Ампула морфина\n
- %c[d_cyan] • %c[default] Противорадиационный препарат\n
- %c[d_cyan] • %c[default] Таблетки «Акватабс»\n
- %c[d_cyan] • %c[default] Бинт (4)\n
- %c[d_cyan] • %c[default] Таблетки кофеина\n
- %c[d_cyan] • %c[default] Диклофенак натрия\n
- %c[d_cyan] • %c[default] Жгут (2)\n
- %c[d_cyan] • %c[default] Военный стимулятор\n
- %c[d_cyan] • %c[default] Бутылка минеральной воды\n
- %c[d_cyan] • %c[default] Снотворное (Упаковка)\n
- %c[d_cyan] • %c[default] Вакцина от столбняка\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] комплект медикаментов\n
-
-
-
- Медицинский набор (Научный)
-
-
- Медицинский набор, разработанный специально для научных сотрудников, которые работают в условиях Зоны. Содержит в себе большой перечень препаратов, направленных на профилактику и защиту от радиационных, химических и пси-угроз.\n \n
- %c[ui_gray_3]СОДЕРЖИМОЕ:\n
- %c[d_cyan] • %c[default] Противорадиационный препарат (2)\n
- %c[d_cyan] • %c[default] «Антитоксикант ИП2»\n
- %c[d_cyan] • %c[default] Большая инъекция глюкозы\n
- %c[d_cyan] • %c[default] Цистамин (2)\n
- %c[d_cyan] • %c[default] Диклофенак натрия\n
- %c[d_cyan] • %c[default] Эпинефрин\n
- %c[d_cyan] • %c[default] Жгут\n
- %c[d_cyan] • %c[default] «Индралин-Б190»\n
- %c[d_cyan] • %c[default] Бутылка минеральной воды\n
- %c[d_cyan] • %c[default] «Пси-блокада»\n
- %c[d_cyan] • %c[default] Научный стимулятор (2)\n
- %c[d_cyan] • %c[default] Сульфадиметоксин\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] комплект медикаментов\n
-
-
-
-
- Диклофенак натрия
-
-
- Нестероидный противовоспалительный препарат (НПВП) из группы производных фенилуксусной кислоты. Механизм действия препарата состоит в притуплении нервной деятельности. Из-за огромного количества побочных действий, как, например, головная боль, головокружение, сонливость, в отдельных случаях - расстройства памяти, дезориентация, раздражимость - не используется в лекарственных целях в большинстве стран мира. Однако в Зоне преобрёл популярность из-за побочного действия, выраженного в нарушении чувствительности ЦНС, что позволяет выдержать сильные травмы, такие как пулевые и осколочные ранения.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] импортный\n
- %c[d_purple] • %c[ui_gray_2] средняя стойкость к повреждениям\n
- %c[d_blue] • %c[ui_gray_2] слабое восстановление здоровья после использования\n
- %c[d_red] • %c[ui_gray_2] вызывает малозаметное головокружение\n
- %c[d_blue] • %c[0,252,186,3] Времмено лечит %c[ui_gray_2] Г%c[0,252,186,3]••• %c[ui_gray_2]T%c[0,252,186,3]••• %c[ui_gray_2]Р%c[0,252,186,3]•• %c[ui_gray_2]Н%c[0,252,186,3]•• \n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] T%c[0,74,134,232]•• %c[ui_gray_2]Р%c[0,74,134,232]• %c[ui_gray_2]Н%c[0,74,134,232]• \n
-
-
-
-
- Медицинский жгут
-
-
- Кровоостанавливающий резиновый жгут. При обычном кровотечении позволяет перевязать рану, при артериальном - перетянуть артерию.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] изделие первой помощи\n
- %c[d_blue] • %c[ui_gray_2] быстрое использование (жгут)\n
- %c[d_blue] • %c[0,252,186,3] Времмено лечит %c[ui_gray_2] руки и ноги полностью \n
-
-
-
-
- Йадулин
-
-
- Полунаркотическое средство на основе морфина, позволяющее быстро заглушить боль и усилить выработку адреналина. Пользуется популярностью у некоторых сталкеров, так как действительно помогает выдержать даже самый напряженный бой. Часто используется в качестве наркотика в кругах бандитов. По неточным данным, идут постоянные поставки данного средства группировке «Монолит».\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] импортное\n
- %c[d_blue] • %c[ui_gray_2] агонистическое влияние\n
- %c[d_red] • %c[ui_gray_2] вызывает серьезное головокружение\n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Г%c[0,74,134,232]•••• %c[ui_gray_2]T%c[0,74,134,232]•••• %c[ui_gray_2]Р%c[0,74,134,232]•• %c[ui_gray_2]Н%c[0,74,134,232]•• \n
-
-
-
-
- Аптечка первой помощи
-
-
- Медицинский комплект общего назначения. Удобен для оказания первой помощи при травмах, небольших ранах, химических и термических ожогах, а также различного рода отравлениях.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] повсеместное применение\n
- %c[d_red] • %c[ui_gray_2] медленное использование (полевой набор)\n
- %c[d_red] • %c[ui_gray_2] восстанавливает здоровье длительное время\n
- %c[d_blue] • %c[0,252,186,3] Времмено лечит %c[ui_gray_2] Г%c[0,252,186,3]•••• %c[ui_gray_2]T%c[0,252,186,3]•••• %c[ui_gray_2]Р%c[0,252,186,3]•• %c[ui_gray_2]Н%c[0,252,186,3]•• \n
-
-
-
- Армейская аптечка
-
-
- Специализированный медицинский набор для оказания первой помощи при ранениях на поле боя. В набор входят средства для ускорения свёртывания крови на основе «Менадиона», обезболивающие, антибиотики и стимуляторы иммунитета; кроме того, здесь имеется простейший хирургический набор для извлечения осколков и пуль. Стандартная армейская аптечка, стоящая на обеспечении спецназа и ряда войск, направленных на исследование Зоны Отчуждения. Пользуется большой популярностью среди бойцов «Долга».\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] военное изделие\n
- %c[d_red] • %c[ui_gray_2] медленное использование (полевой набор)\n
- %c[d_red] • %c[ui_gray_2] восстанавливает здоровье длительное время\n
- %c[d_blue] • %c[0,252,186,3] Времмено лечит %c[ui_gray_2] Г%c[0,252,186,3]••••••• %c[ui_gray_2]T%c[0,252,186,3]•••••••• %c[ui_gray_2]Р%c[0,252,186,3]••• %c[ui_gray_2] Н%c[0,252,186,3]••• \n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Р%c[0,74,134,232]• %c[ui_gray_2] Н%c[0,74,134,232]• \n
-
-
-
- Научная аптечка
-
-
- Медицинский набор, разработанный специально для научных сотрудников, которые работают в условиях Зоны. Содержит средства как для заживления механических травм, так и для предотвращения развития лучевой болезни. В отличие от других наборов, в этом можно найти «Викасол», «Батилол» и С-нафтизин.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] высокая ценность\n
- %c[d_blue] • %c[ui_gray_2] высокое качество\n
- %c[d_red] • %c[ui_gray_2] медленное использование (полевой набор)\n
- %c[d_red] • %c[ui_gray_2] восстанавливает здоровье длительное время\n
- %c[d_blue] • %c[0,252,186,3] Времмено лечит %c[ui_gray_2] Г%c[0,252,186,3]•••••••••• %c[ui_gray_2]T%c[0,252,186,3]•••••••• %c[ui_gray_2]Р%c[0,252,186,3]•••• %c[ui_gray_2]Н%c[0,252,186,3]•••• \n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Р%c[0,74,134,232]•• %c[ui_gray_2]Н%c[0,74,134,232]•• \n
-
-
-
-
- Малая инъекция глюкозы
-
-
- Инъекция глюкозы используется в тяжёлых случаях диабета - гипогликемии. Но сталкеры используют её в качестве стимулятора - мгновенное повышение углеводов в организме вызывает быстрое повышение энергии, тем самым повышая физическую силу и способность выдерживать значительные перегрузки. Из-за удобства поставки и быстроты применения инъекцию можно использовать в боевой обстановке, что делает данный стимулятор хорошим средством ускорения заживления ран.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] импортная\n
- %c[d_blue] • %c[ui_gray_2] быстрое использование (шприц)\n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Г%c[0,74,134,232]•• %c[ui_gray_2]T%c[0,74,134,232]•• %c[ui_gray_2]Р%c[0,74,134,232]•• %c[ui_gray_2]Н%c[0,74,134,232]•• \n
-
-
-
-
- Большая инъекция глюкозы
-
-
- Инъекция глюкозы используется в тяжёлых случаях диабета - гипогликемии. Но сталкеры используют её в качестве стимулятора - мгновенное повышение углеводов в организме вызывает быстрое повышение энергии, тем самым повышая физическую силу и способность выдерживать значительные перегрузки. Из-за удобства поставки и быстроты применения инъекцию можно использовать в боевой обстановке, что делает данный стимулятор хорошим средством ускорения заживления ран. Содержит большую дозу препарата.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] импортная\n
- %c[d_blue] • %c[ui_gray_2] быстрое использование (шприц)\n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Г%c[0,74,134,232]•••• %c[ui_gray_2]T%c[0,74,134,232]•••• %c[ui_gray_2]Р%c[0,74,134,232]••• %c[ui_gray_2]Н%c[0,74,134,232]••• \n
-
-
-
-
- Самопальный стимпак
-
-
- Самопальные стимпаки (стимуляторы) очень популярны среди сталкеров-новичков, поскольку их легко достать, да и стоят они довольно недорого. Производятся из широко доступных в Зоне ингредиентов без надлежащей очистки и без использования специального оборудования. Это и является основной причиной многих побочных эффектов, которые включают в себя головную боль, парестезию и значительный голод после использования. Вводится в бедро.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] сделан в Зоне\n
- %c[d_blue] • %c[ui_gray_2] быстрое использование (шприц)\n
- %c[d_blue] • %c[ui_gray_2] умеренное восстановление здоровья\n
- %c[d_red] • %c[ui_gray_2] вызывает слабое головокружение \n
- %c[d_blue] • %c[0,252,186,3] Времмено лечит %c[ui_gray_2] Г%c[0,252,186,3]•••• %c[ui_gray_2]T%c[0,252,186,3]•••• %c[ui_gray_2]Р%c[0,252,186,3]••• %c[ui_gray_2]Н%c[0,252,186,3]••• \n
-
-
-
-
- Военный стимулятор
-
-
- Военные стимпаки (стимуляторы) входят в состав штатного военного снаряжения для проведения операций в условиях Зоны Отчуждения. Достаточно часто встречаются на рынке товаров и могут быть куплены за умеренную цену. Популярны среди опытных сталкеров, так как являются значительно более мощными и быстродействующими, чем их доступные самопальные аналоги, что делает их идеальными для использования в опасных передрягах. Изготавливаются из сырья высокой плотности, что может пагубно сказываться на организм. Из побочных эффектов известен шок, головокружение и сильное обострение чувства голода.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] импортный\n
- %c[d_blue] • %c[ui_gray_2] военное изделие\n
- %c[d_blue] • %c[ui_gray_2] быстрое использование (шприц)\n
- %c[d_blue] • %c[ui_gray_2] быстрое восстановление здоровья\n
- %c[d_red] • %c[ui_gray_2] вызывает среднее головокружение \n
- %c[d_blue] • %c[0,252,186,3] Времмено лечит %c[ui_gray_2] Г%c[0,252,186,3]••••• %c[ui_gray_2]T%c[0,252,186,3]••••••• %c[ui_gray_2]Р%c[0,252,186,3]••• %c[ui_gray_2]Н%c[0,252,186,3]••• \n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Г%c[0,74,134,232]•• %c[ui_gray_2]T%c[0,74,134,232]•• %c[ui_gray_2]Р%c[0,74,134,232]• %c[ui_gray_2]Н%c[0,74,134,232]• \n
-
-
-
-
- Экспериментальный научный стимулятор
-
-
- Выпускается тем же Химическим департаментом в Киеве, который разработал известный костюм «СЕВА». Данный стимулятор является наиболее мощным стабилизатором здоровья из всех доступных на территории Зоны. Самые лучшие ингредиенты отличного качества и усовершенствованная формула позволяют практически мгновенно восстановить здоровье и вывести излишки радиации. Побочные эффекты сведены к минимуму. Очень дорогие, следовательно применяются только весьма везучими и успешными сталкерами.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] импортный\n
- %c[d_blue] • %c[ui_gray_2] высокое качество\n
- %c[d_blue] • %c[ui_gray_2] быстрое использование (шприц)\n
- %c[d_blue] • %c[ui_gray_2] мгновенное восстановление здоровья\n
- %c[d_red] • %c[ui_gray_2] вызывает слабое головокружение \n
- %c[d_blue] • %c[0,252,186,3] Времмено лечит %c[ui_gray_2] Г%c[0,252,186,3]•••••• %c[ui_gray_2]T%c[0,252,186,3]•••••••• %c[ui_gray_2]Р%c[0,252,186,3]•••• %c[ui_gray_2]Н%c[0,252,186,3]•••• \n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Г%c[0,74,134,232]••• %c[ui_gray_2]T%c[0,74,134,232]•••••• %c[ui_gray_2]Р%c[0,74,134,232]• %c[ui_gray_2]Н%c[0,74,134,232]• \n
-
-
-
-
- Снотворное
-
-
- Небольшая упаковка снотворного, которое поможет заснуть даже при сильных головных болях и плохом самочувствии. Кроме того, помогает снизить интенсивность нервных импульсов. Не стоит проглатывать сразу всю пачку, выпейте таблетку и сделайте несколько глотков воды для достижения максимального эффекта. Приём по 2 таблетки.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Г%c[0,74,134,232]•••••••• \n
-
-
-
-
- Кокаин
-
-
- Небольшой алюминиевый кейс, содержащий дозы кокаина и инструменты для его инъекций. Кокаин является мощным стимулятором нервной системы. Его действие длится от 15-30 минут до часа, в зависимости от места введения инъекции. Кокаин повышает бдительность, чувство благополучия и эйфории, повышает энергию и длительную активность, ощущение компетентности и сексуальности. Физическая сила может быть увеличена на спортивных состязаниях, где требуются длительное внимание и выносливость. Беспокойство, паранойя и неугомонность также являются частыми симптомами его применения. При чрезмерной дозировке наблюдаются сотрясения, конвульсии и увеличенная температура тела. Бандиты часто нюхают этот препарат непосредственно перед штурмом баз и лагерей.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] стимулятор\n
- %c[d_blue] • %c[ui_gray_2] очень мощное отрезвляющее действие\n
- %c[d_blue] • %c[ui_gray_2] небольшое восстановление здоровья при использовании\n
- %c[d_blue] • %c[0,252,186,3] Времмено лечит %c[ui_gray_2] Г%c[0,252,186,3]•••••••• %c[ui_gray_2]T%c[0,252,186,3]•••• %c[ui_gray_2]Р%c[0,252,186,3]••• %c[ui_gray_2]Н%c[0,252,186,3]••• \n
-
-
-
-
- Эпинефрин
-
-
- Эпинефрин (также известный, как адреналин) представляет собой гормон совместно с нейромедиатором. Эпинефрин выполняет множество функций в организме: мгновенно регулирует частоту сердечных сокращений, расширяет кровеносные сосуды упрощая прохождение через них воздуха, а также вызывает метаболические сдвиги. Адреналин выделяется при борьбе или бегстве из симпатической нервной системы. Эффекты приводят к увеличению глюкозы в крови и жирных кислот, обеспечивая тем самым организм мгновенным субстратами для производства энергии внутри клеток по всему организму.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] импортный\n
- %c[d_blue] • %c[ui_gray_2] высокое качество\n
- %c[d_blue] • %c[ui_gray_2] быстрое использование (шприц)\n
- %c[d_blue] • %c[ui_gray_2] очень мощное отрезвляющее действие\n
- %c[d_blue] • %c[ui_gray_2] слабое восстановление здоровья после использования\n
- %c[d_blue] • %c[0,252,186,3] Времмено лечит %c[ui_gray_2] Г%c[0,252,186,3]•••••••••• %c[ui_gray_2]T%c[0,252,186,3]•••••••••• %c[ui_gray_2]Р%c[0,252,186,3]•••• %c[ui_gray_2]Н%c[0,252,186,3]•••• \n
-
-
-
-
- Ампула морфина
-
-
- Металлическая ампула для мгновенного подавления боли, разработанная как полевой технологический предмет для военнослужащих. Эта ампула содержит мощную дозу морфина. В клинической медицине морфин рассматривается как золотой стандарт опиоидных анальгетиков, используемый для облегчения тяжёлой и мучительной боли. Как и в других опиоидах, таких как оксикодон, гидроморфон и диацетилморфин (героин), морфин действует непосредственно на центральную нервную систему для облегчения и снижения чувства боли. Вводить ампулу в руку или бедро.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] импортная\n
- %c[d_blue] • %c[ui_gray_2] высокое качество\n
- %c[d_blue] • %c[ui_gray_2] быстрое использование (шприц)\n
- %c[d_purple] • %c[ui_gray_2] большая стойкость к повреждениям\n
- %c[d_blue] • %c[ui_gray_2] среднее восстановление здоровья после использования\n
- %c[d_red] • %c[ui_gray_2] вызывает малозаметное головокружение \n
- %c[d_blue] • %c[0,252,186,3] Времмено лечит %c[ui_gray_2] Г%c[0,252,186,3]•••••••• %c[ui_gray_2]T%c[0,252,186,3]••••• %c[ui_gray_2]Р%c[0,252,186,3]•••• %c[ui_gray_2]Н%c[0,252,186,3]•••• \n
-
-
-
-
- Ампула салициловой кислоты
-
-
- Металлическая ампула для мгновенного подавления боли, разработанная как полевой технологический предмет для военнослужащих. Эта ампула содержит сильную дозу салициловой кислоты. Салициловая кислоты известна своей способностью облегчать боли или снижать симптомы лихорадки. Именно эти медицинские показатели делают салициловую кислоту весьма важным медикаментом в качестве противовоспалительного препарата. Некоторые учёные полагают, что салицилат является незаменимым микроэлементом в рационе человека, который может заменить витамины, а именно витамин «С». Вводить ампулу в руку или бедро.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] импортное\n
- %c[d_blue] • %c[ui_gray_2] быстрое использование (шприц)\n
- %c[d_purple] • %c[ui_gray_2] средняя стойкость к повреждениям\n
- %c[d_blue] • %c[ui_gray_2] слабое восстановление здоровья после использования\n
- %c[d_blue] • %c[0,252,186,3] Времмено лечит %c[ui_gray_2] Г%c[0,252,186,3]••••• %c[ui_gray_2]T%c[0,252,186,3]••••• %c[ui_gray_2]Р%c[0,252,186,3]••• %c[ui_gray_2]Н%c[0,252,186,3]••• \n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Р%c[0,74,134,232]•• %c[ui_gray_2]Н%c[0,74,134,232]•• \n
-
-
-
-
- Таблетки кофеина
-
-
- Кофеин и бензоат натрия, которые заставляют работать нервную систему с максимально возможной эффективностью. В значительной степени снижают сонливость. Приём по 2 таблетки.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] стимулятор\n
- %c[d_blue] • %c[ui_gray_2] мощное отрезвляющее действие\n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Г%c[0,74,134,232]••• \n
-
-
-
-
- Цистамин
-
-
- Цистамина дигидрохлорид. Вещество-радиопротектор, ослабляет негативное воздействие ионизирующего излучения на организм. Радиозащитное действие основано на способности связывать свободные радикалы, ионизированные и возбуждённые молекулы, образующиеся в тканях при облучении, а также на способности препарата взаимодействовать с некоторыми ферментами и придавать им устойчивость по отношению к ионизирующему излучению. Не предупреждает и не устраняет уже развившуюся лучевую лейкопению. В медицине применяется в виде дигидрохлорида.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] импортный\n
- %c[d_red] • %c[ui_gray_2] лёгкое головокружение\n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Г%c[0,74,134,232]••• %c[ui_gray_2]T%c[0,74,134,232]••• \n
-
-
-
-
- Сульфадиметоксин
-
-
- Сульфаниламидный препарат длительного действия. Эффективен в отношении грамположительных и грамотрицательных бактерий: действует на пневмококки, стрептококки, стафилококки, кишечную палочку, палочку клебсиеллы (палочку Фридлендера), возбудителей дизентерии; менее активен в отношении протея; активен в отношении вируса трахомы (инфекционного заболевания глаз, которое может привести к слепоте); не действует на штаммы бактерий, устойчивых к другим сульфаниламидным препаратам. Возможны головная боль, диспепсические расстройства (расстройства пищеварения), кожные высыпания, лекарственная лихорадка (резкое повышение температуры тела при приеме препарата), лейкопения (снижение уровня лейкоцитов в крови).\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] импортный\n
- %c[d_red] • %c[ui_gray_2] вызывает среднее головокружение \n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] T%c[0,74,134,232]•• %c[ui_gray_2]Р%c[0,74,134,232]• \n
-
-
-
-
- Хлортетрациклин
-
-
- Aнтибиотик группы тетрациклинов. Кристаллический порошок золотисто-желтого цвета, горького вкуса, растворим в воде. Это один из первых открытых антибиотиков после пенициллина. Хлортетрациклина гидрохлорид обладает бактериостатическим действием на грамположительные и грамотрицательные микробы, риккетсии и некоторые крупные вирусы.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] импортный\n
- %c[d_red] • %c[ui_gray_2] вызывает слабое головокружение \n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Г%c[0,74,134,232]• %c[ui_gray_2]T%c[0,74,134,232]•• \n
-
-
-
-
- Этаперазин
-
-
- Таблетки, покрытые оболочкой. Таблетка лекарственного средства содержит 4,6 и 10 мг перфеназина. Препарат является нейролептиком - антипсихотическим средством, оказывающим противоаллергическое, седативное, миорелаксирующее, противорвотное, слабое антихолинергическое, гипотензивное и гипотермическое действия. Эффективность Этаперазина обусловлена блокадой D2-рецепторов мезокортикальной и мезолимбической систем. В Зоне используется редко.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] импортный\n
- %c[d_blue] • %c[ui_gray_2] противоотравляющий медикамент\n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Г%c[0,74,134,232]•• %c[ui_gray_2]Н%c[0,74,134,232]• \n
-
-
-
-
- Косяк конопли
-
-
- Благодаря своему успокаивающему эффекту довольно популярен среди сталкеров, которые находятся на границах Рыжего леса, «Выжигателя» и прочих пси-установок. Косяк успокоит нервы и поможет расслабиться на некоторое время. А в сочетании с алкоголем имеет просто отличное успокаивающее действие. Повышает чувство голода.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] стимулятор\n
- %c[d_blue] • %c[ui_gray_2] сделан в Зоне\n
- %c[d_blue] • %c[ui_gray_2] слабый отрезвляющий эффект\n
-
-
-
-
- Наркотический анальгетик «Возрождение»
-
-
- Внимание! Не используйте данный препарат совместно с другими стимулирующими препаратами, так как это может привести к быстрой смерти. Первый эффект этого мощнейшего вещества - потеря сознания. Однако после прихода в себя (если это вообще произойдёт) приходит ощущения гигантского прироста сил. Применение: ввести иглу шприца в бедро, предварительно выпустив кислород мягким нажатием на поршень.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] быстрое использование (шприц)\n
- %c[d_blue] • %c[ui_gray_2] здоровое питание\n
- %c[d_red] • %c[ui_gray_2] вызывает очень сильное головокружение\n
- %c[d_blue] • %c[0,252,186,3] Времмено лечит %c[ui_gray_2] все тело \n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Г%c[0,74,134,232]•••••••• %c[ui_gray_2]T%c[0,74,134,232]•••••••• %c[ui_gray_2]Р%c[0,74,134,232]•••• %c[ui_gray_2]Н%c[0,74,134,232]•••• \n
-
-
-
-
- Вакцина от столбняка
-
-
- Вакцина против столбняка представляет собой инактивированные токсины столбняка, которая поможет предотвратить заражение. Столбняк, известный как «Тризм челюсти» - это заболевание, вызываемое бактериями из семейства «Клостридии», которые попадают в организм через открытые раны, образовывая яд тетэноспэсмин. Это потенциально смертельное заболевание, потому что яд поражает нервную систему, блокируя нервные сигналы от спинного мозга к мышцам. Все животные Зоны Отчуждения и мутанты являются переносчиками бактерий «Клостридий», которые могут передаваться сталкерам через укусы. Вакцина против столбняка способна повысить защиту вашей иммунной системы, не имея при этом побочных эффектов. Кроме того, в её состав входят дополнительные антитоксины, которые расширяют цели применения данной вакцины помимо лечения столбняка.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] импортная\n
- %c[d_blue] • %c[ui_gray_2] быстрое использование (шприц)\n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Г%c[0,74,134,232]••• %c[ui_gray_2]Р%c[0,74,134,232]•• %c[ui_gray_2]Н%c[0,74,134,232]•• \n
-
-
-
-
- Калия йодид
-
-
- Фармакологическое действие восполняющее дефицит йода, антитиреоидное, муколитическое, отхаркивающее, противогрибковое, рассасывающее, радиопротективное. В ЧЗО используется в качестве дешёвого аналога противорадиационных препаратов. Имеет ряд побочных действий, выраженных в нарушении ЖКТ, головных болях, нарушении функций щитовидной железы.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] медикамент\n
- %c[d_blue] • %c[ui_gray_2] импортный\n
- %c[d_red] • %c[ui_gray_2] лёгкое головокружение\n
- %c[d_blue] • %c[0,74,134,232] Полностью вылечивает %c[ui_gray_2] Г%c[0,74,134,232]• %c[ui_gray_2]T%c[0,74,134,232]• %c[ui_gray_2]Р%c[0,74,134,232]• %c[ui_gray_2]Н%c[0,74,134,232]• \n
-
-
-
-
- Марихуана
-
-
- Самовыращенный гашиш. Курение травки - это популярное времяпрепровождение в Зоне, особенно в рядах «Свободы», бойцы которой защищают «Барьер». В Зоне Отчуждения марихуану можно купить мешками здесь и там. Некоторые полагают, что она, как препарат, помогает сохранить равновесие в голове и не свихнуться от пси-воздействия.\n \n
- %c[ui_gray_3]ХАРАКТЕРИСТИКИ:\n
- %c[d_blue] • %c[ui_gray_2] стимулятор\n
- %c[d_red] • %c[ui_gray_2] медленное использование (вдыхание)\n
- %c[d_blue] • %c[ui_gray_2] мощное отрезвляющее действие\n
-
-
-
-
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/configs/text/rus/ui_st_body_health_system.xml b/mods/[DEV] Groks Body Health System Redux/gamedata/configs/text/rus/ui_st_body_health_system.xml
deleted file mode 100644
index ffbd9149..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/configs/text/rus/ui_st_body_health_system.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
- Body Health System
-
-
- Body Health System
-
-
-
- Текстовый HUD
-
-
- (Требуется перезагрузка) Текстовая версия HUD'а.
-
-
-
- Новая функция штрафов конечностей
-
-
- (Требуется перезагрузка) Включение этой опции активирует новую функцию штрафов. Отключение возвращает старые штрафы BHS.
-
-
- Новый голос при эффектах
-
-
- Включение этой опции активирует новые звуки голоса при спринте со сломанными ногами. Выключение возвращает голос оригинального мода.
-
-
- Минимальное здоровье ног для активации эффектов камеры
-
-
- Здоровье хотя бы одной ноги должно быть ниже этого значения, чтобы активировать эффекты. Значение ползунка по умолчанию 5 означает, что эффекты будут воспроизводиться при значении здоровья 4 или менее. (Штраф скорости передвижения отключить нельзя, пока)
-
-
- Минимальное здоровье ног для активации урона при спринте
-
-
- Спринт с поврежденными ногами имеет шанс нанести урон. Ползунок устанавливает минимальное значение здоровья ног, необходимое для активации эффекта. Например, если ползунок 4 и здоровье хотя бы одной ноги 4, то эффект будет активирован. (Значение -1 выключает функцию)
-
-
- Сила эффектов (Ноги)
-
-
- Множитель для силы эффектов (ноги). По умолчанию: 1.0.
-
-
- Минимальное здоровье рук для активации штрафов
-
-
- Суммарное здоровье обеих рук должно быть ниже этого значения, чтобы активировать эффекты. Значение ползунка по умолчанию 10 означает, что эффекты будут воспроизводиться, если обе руки имеют значение здоровья 9 или менее.
-
-
- Сила эффектов (Руки)
-
-
- Множитель для силы эффектов (руки). По умолчанию: 1.0.
-
-
- Минимальный урон головы для активации штрафов
-
-
- Урон, необходимый для активации эффектов. Например, значение ползунка по умолчанию 2 означает, что урон от каждого выстрела в голову должен будет убавлять значение здоровья на 2 или более.
-
-
- Сила эффектов (Голова)
-
-
- Множитель для силы эффектов (голова). По умолчанию: 1.0.
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/configs/ui/maingame.xml b/mods/[DEV] Groks Body Health System Redux/gamedata/configs/ui/maingame.xml
deleted file mode 100644
index d362f900..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/configs/ui/maingame.xml
+++ /dev/null
@@ -1,243 +0,0 @@
-
-
-
-
- <_auto_static x="512" y="384" width="115" height="115" alignment="c" stretch="1" heading="1" xform_anim="xfrom_rotate_3sec" xform_anim_cyclic="1">
- ui_icons_newPDA_Crclbig_h
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_hud_icon_weapon
-
-
-
-
-
-
-
-
-
-
-
-
- ui_inGame2_shield_Psy
-
-
- ui_inGame2_shield_Radiation
-
-
- ui_inGame2_shield_biological
-
-
- ui_inGame2_shield_blood
-
-
- ui_inGame2_shield_force
-
-
- ui_inGame2_shield_health
-
-
- ui_inGame2_shield_stamina
-
-
- ui_inGame2_shield_radiation_cleanup
-
-
-
- ui_hud_icon_goodmode
-
-
-
- ui_hud_icon_artefact
-
-
-
-
-
-
-
-
- ui_hud_icon_PDA
-
-
-
-
-
- detectors\contact_1
-
-
-
- counter
- ui_item_count_back
-
-
-
- ui_inGame2_Patroni_HUD_active_items_icon
-
-
-
-
- counter
- ui_item_count_back
-
-
-
- ui_inGame2_Patroni_HUD_active_items_icon
-
-
-
-
- counter
- ui_item_count_back
-
-
-
- ui_inGame2_Patroni_HUD_active_items_icon
-
-
-
-
- counter
- ui_item_count_back
-
-
-
- ui_inGame2_Patroni_HUD_active_items_icon
-
-
-
- quick_use_str_1
-
-
- quick_use_str_2
-
-
- quick_use_str_3
-
-
- quick_use_str_4
-
-
-
-
-
-
-
-
-
-
- ui_inGame2_Patroni_HUD_main_window
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ammo
-
-
-
- fmj
-
-
-
- ap
-
-
-
- third
-
-
-
- gr
-
-
-
-
-
-
-
-
-
-
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/configs/ui/maingame_16.xml b/mods/[DEV] Groks Body Health System Redux/gamedata/configs/ui/maingame_16.xml
deleted file mode 100644
index 6dc56340..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/configs/ui/maingame_16.xml
+++ /dev/null
@@ -1,243 +0,0 @@
-
-
-
-
- <_auto_static x="512" y="384" width="115" height="115" alignment="c" stretch="1" heading="1" xform_anim="xfrom_rotate_3sec" xform_anim_cyclic="1">
- ui_icons_newPDA_Crclbig_h
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_hud_icon_weapon
-
-
-
-
-
-
-
-
-
-
-
-
- ui_inGame2_shield_Psy
-
-
- ui_inGame2_shield_Radiation
-
-
- ui_inGame2_shield_biological
-
-
- ui_inGame2_shield_blood
-
-
- ui_inGame2_shield_force
-
-
- ui_inGame2_shield_health
-
-
- ui_inGame2_shield_stamina
-
-
- ui_inGame2_shield_radiation_cleanup
-
-
-
- ui_hud_icon_goodmode
-
-
-
- ui_hud_icon_artefact
-
-
-
-
-
-
-
-
- ui_hud_icon_PDA
-
-
-
-
-
- detectors\contact_1
-
-
-
- counter
- ui_item_count_back
-
-
-
- ui_inGame2_Patroni_HUD_active_items_icon
-
-
-
-
- counter
- ui_item_count_back
-
-
-
- ui_inGame2_Patroni_HUD_active_items_icon
-
-
-
-
- counter
- ui_item_count_back
-
-
-
- ui_inGame2_Patroni_HUD_active_items_icon
-
-
-
-
- counter
- ui_item_count_back
-
-
-
- ui_inGame2_Patroni_HUD_active_items_icon
-
-
-
- quick_use_str_1
-
-
- quick_use_str_2
-
-
- quick_use_str_3
-
-
- quick_use_str_4
-
-
-
-
-
-
-
-
-
-
- ui_inGame2_Patroni_HUD_main_window
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ammo
-
-
-
- fmj
-
-
-
- ap
-
-
-
- third
-
-
-
- gr
-
-
-
-
-
-
-
-
-
-
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/configs/ui/textures_descr/ui_hud.xml b/mods/[DEV] Groks Body Health System Redux/gamedata/configs/ui/textures_descr/ui_hud.xml
deleted file mode 100644
index d0bce0e5..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/configs/ui/textures_descr/ui_hud.xml
+++ /dev/null
@@ -1,163 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/configs/ui/ui_body_health.xml b/mods/[DEV] Groks Body Health System Redux/gamedata/configs/ui/ui_body_health.xml
deleted file mode 100644
index 26b1f613..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/configs/ui/ui_body_health.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/configs/ui/ui_custom_msgs.xml b/mods/[DEV] Groks Body Health System Redux/gamedata/configs/ui/ui_custom_msgs.xml
deleted file mode 100644
index 7903fc3e..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/configs/ui/ui_custom_msgs.xml
+++ /dev/null
@@ -1,1198 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_hud_timer_games
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_frame_error_sign_alarm
-
-
-
- car\trabantnoise
-
-
-
- act\act_controller_hit
-
-
-
- act\act_controller_hit1
-
-
-
- controller\controller_blood_01
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- st_autosave
-
-
-
-
-
-
-
- gun_jammed
-
-
-
- cant_walk
-
-
-
- cant_walk_weight
-
-
-
- st_not_enough_money
-
-
-
- st_not_enough_money
-
-
-
- can_use_weapon_now
-
-
-
- st_not_enough_money
-
-
-
- st_not_enough_money_npc
-
-
-
- ui\ui_cm_connection_error
-
-
- cur_num
-
-
-
-
- ui\ui_cm_connection_error
-
-
- cur_num
-
-
-
-
- ui\ui_cm_connection_error
-
-
- cur_num
-
-
-
-
- ui\ui_cm_connection_error
-
-
- cur_num
-
-
-
-
-
-
- ui_sega_healph
-
-
-
- ui_sega_healph
-
-
-
-
- ui_hud_timer_games
-
-
-
-
-
-
-
-
- ui_hud_timer_games
-
-
-
- ui_hud_points_count
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- intro\intro_back
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- dinamic_hud\hud_vingette
-
-
-
- shaders\gasmasks\mask_nm_1
-
-
- shaders\gasmasks\mask_nm_2
-
-
- shaders\gasmasks\mask_nm_3
-
-
- shaders\gasmasks\mask_nm_4
-
-
- shaders\gasmasks\mask_nm_5
-
-
- shaders\gasmasks\mask_nm_6
-
-
- shaders\gasmasks\mask_nm_7
-
-
- shaders\gasmasks\mask_nm_8
-
-
- shaders\gasmasks\mask_nm_9
-
-
- shaders\gasmasks\mask_nm_10
-
-
- shaders\gasmasks\mask_nm_10
-
-
- shaders\gasmasks\mask_nm_10
-
-
-
-
- dinamic_hud\hud_gas1
-
-
- dinamic_hud\hud_gas2
-
-
- dinamic_hud\hud_gas3
-
-
- dinamic_hud\hud_gas4
-
-
- dinamic_hud\hud_gas5
-
-
- dinamic_hud\hud_gas6
-
-
- dinamic_hud\hud_gas7
-
-
- dinamic_hud\hud_gas8
-
-
- dinamic_hud\hud_gas9
-
-
- dinamic_hud\hud_gas10
-
-
- dinamic_hud\hud_gas11
-
-
- dinamic_hud\hud_gas12
-
-
- dinamic_hud\hud_prot1
-
-
- dinamic_hud\hud_prot2
-
-
- dinamic_hud\hud_prot3
-
-
- dinamic_hud\hud_prot4
-
-
- dinamic_hud\hud_prot5
-
-
- dinamic_hud\hud_prot6
-
-
- dinamic_hud\hud_prot7
-
-
- dinamic_hud\hud_prot8
-
-
- dinamic_hud\hud_prot9
-
-
- dinamic_hud\hud_prot10
-
-
- dinamic_hud\hud_prot11
-
-
- dinamic_hud\hud_prot12
-
-
- dinamic_hud\hud_hard1
-
-
- dinamic_hud\hud_hard2
-
-
- dinamic_hud\hud_hard3
-
-
- dinamic_hud\hud_hard4
-
-
- dinamic_hud\hud_hard5
-
-
- dinamic_hud\hud_hard6
-
-
- dinamic_hud\hud_hard7
-
-
- dinamic_hud\hud_hard8
-
-
- dinamic_hud\hud_hard9
-
-
- dinamic_hud\hud_hard10
-
-
- dinamic_hud\hud_hard11
-
-
- dinamic_hud\hud_hard12
-
-
- dinamic_hud\hud_sci1
-
-
- dinamic_hud\hud_sci2
-
-
- dinamic_hud\hud_sci3
-
-
- dinamic_hud\hud_sci4
-
-
- dinamic_hud\hud_sci5
-
-
- dinamic_hud\hud_sci6
-
-
- dinamic_hud\hud_sci7
-
-
- dinamic_hud\hud_sci8
-
-
- dinamic_hud\hud_sci9
-
-
- dinamic_hud\hud_sci10
-
-
- dinamic_hud\hud_sci11
-
-
- dinamic_hud\hud_sci12
-
-
- dinamic_hud\hud_tact1
-
-
- dinamic_hud\hud_tact2
-
-
- dinamic_hud\hud_tact3
-
-
- dinamic_hud\hud_tact4
-
-
- dinamic_hud\hud_tact5
-
-
- dinamic_hud\hud_tact6
-
-
- dinamic_hud\hud_tact7
-
-
- dinamic_hud\hud_tact8
-
-
- dinamic_hud\hud_tact9
-
-
- dinamic_hud\hud_tact10
-
-
- dinamic_hud\hud_tact11
-
-
- dinamic_hud\hud_tact12
-
-
- dinamic_hud\hud_exo1
-
-
- dinamic_hud\hud_exo2
-
-
- dinamic_hud\hud_exo3
-
-
- dinamic_hud\hud_exo4
-
-
- dinamic_hud\hud_exo5
-
-
- dinamic_hud\hud_exo6
-
-
- dinamic_hud\hud_exo7
-
-
- dinamic_hud\hud_exo8
-
-
- dinamic_hud\hud_exo9
-
-
- dinamic_hud\hud_exo10
-
-
- dinamic_hud\hud_exo11
-
-
- dinamic_hud\hud_exo12
-
-
-
-
- dinamic_hud\blood1
-
-
- dinamic_hud\blood2
-
-
- dinamic_hud\blood3
-
-
- dinamic_hud\blood4
-
-
- dinamic_hud\blood5
-
-
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
-
-
-
-
-
-
- ui_inGame2_triangle_Radiation_green
-
-
- ui_inGame2_triangle_Radiation_yellow
-
-
- ui_inGame2_triangle_Radiation_orange
-
-
- ui_inGame2_triangle_Radiation_red
-
-
-
- ui_inGame2_triangle_Biological_green
-
-
- ui_inGame2_triangle_Biological_yellow
-
-
- ui_inGame2_triangle_Biological_orange
-
-
- ui_inGame2_triangle_Biological_red
-
-
-
- ui_inGame2_triangle_Psy_green
-
-
- ui_inGame2_triangle_Psy_yellow
-
-
- ui_inGame2_triangle_Psy_orange
-
-
- ui_inGame2_triangle_Psy_red
-
-
-
-
- ui_inGame2_triangle_Radiation_green
-
-
- ui_inGame2_triangle_Radiation_yellow
-
-
- ui_inGame2_triangle_Radiation_orange
-
-
- ui_inGame2_triangle_Radiation_red
-
-
-
- ui_inGame2_triangle_Biological_green
-
-
- ui_inGame2_triangle_Biological_yellow
-
-
- ui_inGame2_triangle_Biological_orange
-
-
- ui_inGame2_triangle_Biological_red
-
-
-
- ui_inGame2_triangle_Psy_green
-
-
- ui_inGame2_triangle_Psy_yellow
-
-
- ui_inGame2_triangle_Psy_orange
-
-
- ui_inGame2_triangle_Psy_red
-
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
-
-
-
- shaders\gasmasks\mask_nm_1
-
-
-
-
-
-
-
-
-
-
- ui_hud_bhs_bg
-
-
-
-
- ui_hud_bhs_bgm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_hud_bhs_stamina_bg
-
-
-
-
- ui_hud_bhs_health_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
-
-
-
-
-
-
- ui_hud_bhs_bg
-
-
-
-
- ui_hud_bhs_bgm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_hud_bhs_stamina_bg
-
-
-
-
- ui_hud_bhs_health_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
-
-
-
-
-
-
- ui_hud_bhs_bg
-
-
-
-
- ui_hud_bhs_bgm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_hud_bhs_stamina_bg
-
-
-
-
- ui_hud_bhs_health_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
-
-
-
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/scripts/ab_move_notification.script b/mods/[DEV] Groks Body Health System Redux/gamedata/scripts/ab_move_notification.script
deleted file mode 100644
index 7eef5642..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/scripts/ab_move_notification.script
+++ /dev/null
@@ -1,18 +0,0 @@
-notify_icon_x = 13
-notify_icon_y = 620
-
-function monkey() end
- monkey = actor_menu.set_notification
-
-function monkey_notify(typ, texture, tm, snd)
- monkey(typ, texture, tm, snd)
- local hud = get_hud()
- if(hud) then
- cs = hud:GetCustomStatic("notify_icon")
- pos = cs:wnd():GetWndPos()
- pos.x = notify_icon_x
- pos.y = notify_icon_y
- cs:wnd():SetWndPos(pos)
- end
-end
-actor_menu.set_notification = monkey_notify
\ No newline at end of file
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/scripts/itms_manager.script b/mods/[DEV] Groks Body Health System Redux/gamedata/scripts/itms_manager.script
deleted file mode 100644
index 49bbeac6..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/scripts/itms_manager.script
+++ /dev/null
@@ -1,1528 +0,0 @@
-
---[[
- itms_manager
- by Alundaio
-
- Copyright (C) 2012 Alundaio
- This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
-
- Modified by Tronex:
- 2018/7/18 - Added support for new usable items (maps,craft)
- 2018/7/21 - Added the ability to gather/separate muti-use items
- 2018/7/26 - Added the ability to disassemble misc items
- 2018/7/26 - Rewrote a lot of function with better codes
- 2018/7/31 - Added new items, battery consumption for geiger counter and gps tracker
- 2018/8/2 - Drag artefacts on containers to put them in, container tool is no longer used
- 2019/2/16 - Organized the items in tables for global use
- 2019/9/19 - Bolt count manager
- 2020/3/18 - Cleaning
---]]
-
--- local uses = obj:get_remaining_uses()
--- local max_uses = obj:get_max_uses()
--- obj:set_remaining_uses(num)
-
-
--- Prepare ini files
-ini_manager = ini_file("items\\settings\\itms_manager.ltx")
-ini_container = ini_file("items\\settings\\arty_container.ltx")
-ini_parts = ini_file("items\\settings\\parts.ltx")
-ini_craft = ini_file("items\\settings\\craft.ltx")
-ini_death = ini_file("items\\settings\\death_generic.ltx")
-ini_reward = ini_file("items\\settings\\item_rewards.ltx")
-
-local n = 0
-local result,id,value = "","",""
-local string_find = string.find
-local string_gsub = string.gsub
-
--- Collect item sections of main tools
-itms_arty_container = utils_data.collect_section(ini_container,"containers",true) or {}
-
-local empty_syringe_items = {}
-n = ini_manager:line_count("empty_syringe_items")
-for i=0,n-1 do
- result, id, value = ini_manager:r_line_ex("empty_syringe_items",i,"","")
- if ini_sys:section_exist(id) then
- empty_syringe_items[id] = true
- end
-end
-
-item_rewards = {}
-ini_reward:section_for_each(function(section)
- if (not item_rewards[section]) then
- item_rewards[section] = {}
- end
-
- n = ini_reward:line_count(section)
- for i=0,n-1 do
- result, id, value = ini_reward:r_line_ex(section,i,"","")
- if ini_sys:section_exist(id) then
- item_rewards[section][id] = ini_sys:r_float_ex(id,"tier") or 1
- end
- end
-end)
-
-item_combine = {}
-n = ini_craft:line_count("item_combination")
-for i=0,n-1 do
- result, id, value = ini_craft:r_line_ex("item_combination",i,"","")
- if id and value then
- local str = str_explode(id,":")
- if str[1] and str[2] and ini_sys:section_exist(str[1]) and ini_sys:section_exist(str[2]) and ini_sys:section_exist(value) then
- if (not item_combine[str[1]]) then
- item_combine[str[1]] = {}
- end
- item_combine[str[1]][str[2]] = value
- else
- printe("!ERROR item_combination | wrong section names")
- end
- end
-end
-
-
--------------------------------
--- CALLBACKS
--------------------------------
-function on_game_start()
- RegisterScriptCallback("actor_on_item_before_use",actor_on_item_before_use)
- RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
- RegisterScriptCallback("actor_on_item_drop",actor_on_item_drop)
- RegisterScriptCallback("actor_on_item_use",actor_on_item_use)
- RegisterScriptCallback("actor_on_item_take",actor_on_item_take)
- RegisterScriptCallback("ActorMenu_on_item_drag_drop",ActorMenu_on_item_drag_drop)
- RegisterScriptCallback("ActorMenu_on_item_focus_receive",ActorMenu_on_item_focus_receive)
- RegisterScriptCallback("save_state",save_state)
-end
-
-local old_booster = {}
-local boost_min = 0.00005
-local booster_string = {
- ["pwr"] = "ui_inv_power",
- ["psy"] = "ui_inv_outfit_telepatic_protection",
- ["bld"] = "ui_inv_bleeding",
- ["hp"] = "ui_inv_health",
- ["rad"] = "ui_inv_radiation",
-}
-function actor_on_item_before_use(obj,flags)
- local sec = obj:section()
-
- -- no need to check for tools
- if IsItem("tool",sec) then
- --printf("- actor_on_item_before_use [%s] | ignore utility item", sec)
- flags.ret_value = true
- return
- end
-
- local curr_booster = {}
- local time_g = time_global()
- local str = ""
- local pass = true
-
- -- read important boosts
- local period = ini_sys:r_float_ex(sec, "boost_time") or 0
- local rad_boost = ini_sys:r_float_ex(sec, "boost_radiation_restore") or 0
- local psy_boost = ini_sys:r_float_ex(sec, "boost_telepat_protection") or 0
- local bld_boost = ini_sys:r_float_ex(sec, "boost_bleeding_restore") or 0
- local hp_boost = ini_sys:r_float_ex(sec, "boost_health_restore") or 0
- local pwr_boost = ini_sys:r_float_ex(sec, "boost_power_restore") or 0
-
- -- if an item is required
- local require_tool = ini_sys:r_string_ex(sec, "required_tool")
- local obj_tool = require_tool and ini_sys:section_exist(require_tool) and db.actor:object(require_tool)
-
- -- store boosts in a table
- curr_booster["section"] = sec
- curr_booster["period"] = (period > 0) and (time_g + period*1000) or time_g
- curr_booster["pwr"] = (pwr_boost > boost_min) and pwr_boost or 0
- curr_booster["psy"] = (psy_boost > boost_min) and psy_boost or 0
- curr_booster["bld"] = (bld_boost > boost_min) and bld_boost or 0
- curr_booster["hp"] = (hp_boost > boost_min) and hp_boost or 0
- curr_booster["rad"] = (rad_boost > boost_min) and rad_boost or 0
-
- -- A required tool is missing -> no eat
- if require_tool and (not obj_tool) then
- --printf("~ actor_on_item_before_use [%s] | require_tool [%s] is missing", sec, require_tool)
- str = strformat(game.translate_string("st_itm_manager_missing_requirements"), ui_item.get_sec_name(require_tool))
- pass = false
-
- -- older booster is still active
- -- elseif old_booster["period"] and (old_booster["period"] > time_g) then
- --printf("~ on_before_item_use [%s] | older booster [%s] is still active", sec, old_booster['section'])
- -- local weaker_effect
- -- local stronger_effect
- -- for k,v in pairs(curr_booster) do
- -- if (k ~= "section") and (k ~= "period") then
- -- local v2 = old_booster[k]
- -- if v2 and (v > boost_min) and (v2 > boost_min) then
- -- if (v <= v2) then
- -- weaker_effect = k
- -- else
- -- stronger_effect = k
- -- end
- -- elseif (v2 == 0) and (v > boost_min) then
- -- stronger_effect = k
- -- end
- -- end
- -- end
-
- -- older booster has some stronger effect, while new one doesn't have any stronger effect
- -- if weaker_effect and (not stronger_effect) then
- --printf("~ on_before_item_use [%s] | older booster [%s] has stronger effect: %s", sec, old_booster['section'], weaker_effect)
- -- local boost_str = game.translate_string(booster_string[weaker_effect])
- -- str = strformat(game.translate_string("st_itm_manager_greater_effect"),boost_str)
- -- pass = false
- -- end
- end
-
- -- to eat or not to eat
- if pass then
- --printf("- on_before_item_use [%s] | pass = true", sec)
- flags.ret_value = true
- copy_table(old_booster, curr_booster)
- if obj_tool then
- utils_item.discharge(obj_tool)
- end
- else
- --printf("! actor_on_item_before_use [%s] | pass = false", sec)
- flags.ret_value = false
- --alife_release(obj)
- --alife_create_item(sec,db.actor)
-
- utils_xml.hide_menu()
- actor_menu.set_msg(1, str,3)
- end
-end
-
-function actor_on_first_update()
-
- -- Delete base pda
- local sim = alife()
- local obj, se_obj
- --[[
- for i=1,65534 do
- se_obj = sim:object(i)
- if se_obj and (se_obj:section_name() == "device_pda") then
- sim:release(se_obj,true)
- end
- end
- --]]
-
- -- Delete animation items on actor
- for sec,_ in pairs(GetItemList("release")) do
- obj = db.actor:object(sec)
- if obj then
- alife_release(obj)
- end
- end
-
- -- Spawn bolts
- local m_data = alife_storage_manager.get_state()
- local bolt_first = m_data.bolt_first
- if bolt_first then
- alife_create_item(bolt_first, db.actor)
- m_data.bolt_first = nil
- end
-
- local bolt_slot = m_data.bolt_slot
- if bolt_slot then
- alife_create_item(bolt_slot, db.actor)
- end
-
- local bolts = m_data.bolts
- if bolts then
- for sec,cnt in pairs(bolts) do
- for i=1,cnt do
- alife_create_item(sec, db.actor)
- end
- end
- end
-
- -- Damage equipment
- if (not has_alife_info("start_equippment_handled")) and (not IsTestMode()) then
- CreateTimeEvent(0,"delay_new_game_autosave",4,new_game_equippment)
- end
-
- -- Bolt manager
- CreateTimeEvent("cycle","bolt_manager",60,bolt_manager)
-end
-
-function actor_on_item_drop(obj)
- if not (obj) then
- return
- end
-
- if (db.actor:has_info("actor_made_wish_for_riches")) then
- db.actor:transfer_item(obj,db.actor)
- elseif IsWeapon(obj) then
- se_save_var(obj:id(), nil, "strapped_item", obj:condition())
- end
-end
-
-function actor_on_item_use(obj)
- if (db.actor:has_info("actor_made_wish_for_riches")) then
- return
- end
-
- local sec = obj:section()
-
-
- -- Strelok Notes
- if (sec == "mlr_strelok_item_01") then
- txr_routes.open_route("val","x18")
- return
-
- -- Deployable mgun
- elseif (sec == "itm_deployable_mgun") then
- use_deployable_mgun(obj)
- return
-
- -- Watch
- elseif (sec == "hand_watch") then
- use_watch(obj)
- return
-
- -- Chocolate Bar
- elseif (sec == "chocolate") then
- alife_create_item("chocolate_p", db.actor)
- return
-
- -- Bolts pack
- elseif (sec == "bolts_pack") then
- local bolts = {}
- local n = math.random(20,30)
- for i=1,n do
- local actor = db.actor
- if math.random(1,100) > 50 then
- bolts[#bolts + 1] = "bolt"
- else
- bolts[#bolts + 1] = "bolt_bullet"
- end
- end
- utils_item.delay_event(bolts, nil, "bolts_pack", false, 5)
- return
-
- -- give empty syringe on using some medical items
- elseif empty_syringe_items[sec] then
- alife_create_item("e_syringe", db.actor)
-
- -- weather radar
- elseif (sec == "device_weather_radar") then
- ui_debug_weather.activate()
- return
- end
-
- -- don't discharge items with no removal
- if IsItem("multiuse_r",sec) then
- local uses = obj:get_remaining_uses()
- local max_uses = obj:get_max_uses()
- if uses and max_uses and (uses < max_uses) then
- obj:set_remaining_uses(uses + 1)
- end
- end
-end
-
-local str_itm_taken = game.translate_string("st_item_taken")
-function actor_on_item_take(obj)
- local sec = obj:section()
-
- -- Play sound effect for item taking
- play_item_sound(obj)
-
- if IsWeapon(obj) and se_load_var(item_id, nil, "strapped_item") then
- se_save_var(obj:id(), nil, "strapped_item", nil)
-
- -- Explosive barrels
- elseif (sec == "explosive_mobiltank") or (sec == "explosive_tank") then
- local se_obj = alife_object(obj:id())
- local fuel = tostring(math.random(6,8))
- if se_obj then
- alife_release(se_obj)
- alife_create_item("explo_jerrycan_fuel", db.actor, {uses = 2})
- end
-
- -- Story special
- elseif (sec == "main_story_1_quest_case") and (not has_alife_info("agr_u_bloodsucker_on_case")) then
- db.actor:give_info_portion("agr_u_bloodsucker_on_case")
- xr_effects.create_squad(nil,nil,{"agr_u_bloodsucker_3_squad","agr_u_bloodsucker"})
- end
-
- -- Show notification
- --local str = strformat(str_itm_taken, ui_item.get_sec_name(sec))
- --actor_menu.set_msg(2, str)
-end
-
-function dropdrop_ArtyContainer(obj_1, obj_2, sec_1, sec_2) -- Put artefact in container
- local cont = sec_2
- local arty = sec_1
- if ini_sys:section_exist(arty .. "_" .. cont) then
- local cond = obj_1 and obj_1:condition()
-
- actor_effects.play_item_fx("container_tool_" .. cont .. "_dummy")
-
- alife_create_item(arty .. "_" .. cont, db.actor, { cond = cond } )
- alife_release(obj_1)
- alife_release(obj_2)
- end
-end
-function dropdrop_Basic_Combination(obj_1, obj_2, sec_1, sec_2) -- Combine basic items
- local sec_new = item_combine[sec_1][sec_2]
- actor_effects.play_item_fx("item_combination")
- alife_create_item(sec_new, db.actor)
- alife_release(obj_1)
- alife_release(obj_2)
-end
-function ActorMenu_on_item_drag_drop(obj_1, obj_2, slot_from, slot_to)
-
- -- Check capability
- if not (slot_from == EDDListType.iActorBag and slot_to == EDDListType.iActorBag) then
- return
- end
-
- local sec_1 = obj_1:section()
- local sec_2 = obj_2:section()
-
- if itms_arty_container[sec_2] then
- if (ini_sys:r_string_ex(sec_1,"class") == "ARTEFACT") or (ini_sys:r_string_ex(sec_1,"class") == "SCRPTART") then
- dropdrop_ArtyContainer(obj_1, obj_2, sec_1, sec_2)
- end
-
- elseif item_combine[sec_1] and item_combine[sec_1][sec_2] then
- dropdrop_Basic_Combination(obj_1, obj_2, sec_1, sec_2)
- end
-end
-
-local focus_last_sec
-local focus_tbl = {}
-local focus_upgr = {}
-function ActorMenu_on_item_focus_receive(obj) -- highlight compatible items
- --[[
- local parent = obj:parent()
- if not (parent and parent:id() == AC_ID) then
- return
- end
- --]]
-
- local sec_focus = obj:section()
- if (focus_last_sec ~= sec_focus) then
- local id = obj:id()
- focus_last_sec = sec_focus
- empty_table(focus_tbl)
-
- local parent_sec = ini_sys:r_string_ex(sec_focus,"parent_section") or sec_focus
-
- -- For weapons
- if IsWeapon(obj) then
-
- -- Ammo
- local ammo = utils_item.get_ammo(sec_focus, id)
- for i=1,#ammo do
- focus_tbl[#focus_tbl + 1] = ammo[i]
- end
-
- -- Scopes
- local scopes = parse_list(ini_sys, parent_sec, "scopes")
- for i=1,#scopes do
- focus_tbl[#focus_tbl + 1] = scopes[i]
- end
-
- local scope = utils_item.get_wpn_param(obj, sec_focus, "scopes_sect")
- if scope and (obj:weapon_scope_status() == 2) then
- focus_tbl[#focus_tbl + 1] = scope
- end
-
- -- Silencer
- local sil = utils_item.get_wpn_param(obj, sec_focus, "silencer_name")
- if sil and (obj:weapon_silencer_status() == 2) then
- focus_tbl[#focus_tbl + 1] = sil
- end
-
- -- Grenade Launcher
- local gl = utils_item.get_wpn_param(obj, sec_focus, "grenade_launcher_name")
- if gl and (obj:weapon_grenadelauncher_status() == 2) then
- focus_tbl[#focus_tbl + 1] = gl
- end
- end
-
- -- Parts
- local parts_str = ini_parts:r_string_ex("con_parts_list",parent_sec)
- local parts = parts_str and (parts_str ~= "") and str_explode(parts_str,",")
- if parts then
- for i=1,#parts do
- focus_tbl[#focus_tbl + 1] = parts[i]
- end
- end
-
- -- Repair kits
- local repair_type = ini_sys:r_string_ex(parent_sec,"repair_type")
- if repair_type and repair_type ~= "" then
- for kit,v in pairs(GetItemList("repair")) do
- if v[repair_type] then
- focus_tbl[#focus_tbl + 1] = kit
- end
- end
- --[[
- for kit,v in pairs(GetItemList("workshop")) do
- if v[repair_type] then
- focus_tbl[#focus_tbl + 1] = kit
- end
- end
- --]]
- end
-
- -- Upgrade parts
- local upgr_str = ini_sys:r_string_ex(parent_sec,"upgrades")
- if upgr_str and upgr_str ~= "" then
- if (not focus_upgr[parent_sec]) then
- local upgr = parse_list(ini_sys,parent_sec,"upgrades")
- focus_upgr[parent_sec] = {}
- for i=1,#upgr do
- extract_upgr_tools(focus_upgr[parent_sec], upgr[i])
- end
- end
- for tool,_ in pairs(focus_upgr[parent_sec]) do
- --printf("- upgrade part for [%s] -> [%s]", parent_sec, tool)
- focus_tbl[#focus_tbl + 1] = tool
- end
- end
-
- end
-
- local inventory = GetActorMenu()
- if not ((#focus_tbl > 0) or (inventory and inventory:IsShown())) then
- return
- end
-
- for i=1,#focus_tbl do
- inventory:highlight_section_in_slot(focus_tbl[i],EDDListType.iActorBag)
- inventory:highlight_section_in_slot(focus_tbl[i],EDDListType.iPartnerTradeBag)
- inventory:highlight_section_in_slot(focus_tbl[i],EDDListType.iDeadBodyBag)
- inventory:highlight_section_in_slot(focus_tbl[i],EDDListType.iActorTrade)
- inventory:highlight_section_in_slot(focus_tbl[i],EDDListType.iPartnerTrade)
- end
-end
-
-function save_state(m_data) --// NOTE: bolts aren't saved in alife, so this is a temp solution
- local bolts = {}
- local function itr(obj)
- local sec = obj:section()
- if (sec == "bolt") or (sec == "bolt_bullet") then
- if (not bolts[sec]) then
- bolts[sec] = 0
- end
- bolts[sec] = bolts[sec] + 1
- end
- return false
- end
- db.actor:inventory_for_each(itr)
-
- m_data.bolts = bolts
- m_data.bolt_slot = db.actor:item_in_slot(6) and db.actor:item_in_slot(6):section() or nil
-end
-
-
--------------------------------
--- ITEM OPTIONS (MENU)
--------------------------------
-function menu_open(itm) -- return "open" name
- local p = itm:parent()
- if not (p and p:id() == AC_ID) then return end
- if itms_arty_container[itm:section()] then return end -- default containers
-
- return game.translate_string("st_item_open")
-end
-
-function menu_unpack(itm) -- return "unpack" name
- local p = itm:parent()
- if not (p and p:id() == AC_ID) then return end
-
- return game.translate_string("st_item_unpack")
-end
-
-function menu_play(itm) -- return "Play" name
- local p = itm:parent()
- if not (p and p:id() == AC_ID) then return end
-
- return game.translate_string("st_item_play")
-end
-
-function menu_place(obj) -- return "Place" name
- return game.translate_string("st_item_place")
-end
-
-
--------------------------------
--- ITEM OPTIONS (FUNCTOR)
--------------------------------
-function use_package(obj)
- local sec = obj:section()
- local content = parse_list(ini_manager, "package_content", sec)
- if #content > 0 then
- utils_item.delay_event(content, {obj:id()}, "package_content", false, 5)
- end
-end
-
-function use_package_random(obj)
- local sec = obj:section()
- local content = ini_manager:r_string_ex("package_content",sec)
- if not content then return end
-
- local t = str_explode(content,",")
- local pick = {}
- for i=1,#t do
- if (#pick < 6) and (math.random(100) < 50) then
- pick[#pick+1] = t[i]
- end
- end
- pick = #pick > 1 and pick or {t[1],t[2],t[3],t[4]}
-
- utils_item.delay_event(pick, {obj:id()}, "package_content", true, 5)
-end
-
-function use_deployable_mgun(obj)
- local pos = vector():set(device().cam_pos)
- pos:add(device().cam_dir:mul(3))
- alife_create("deployable_mgun",pos,level.vertex_id(pos),db.actor:game_vertex_id())
-end
-
-function use_guitar(obj)
- local n = math.random(28)
- local snd = sound_object("music\\guitar_" .. tostring(n))
- if (not snd) then return end
- local period = snd:length()
- snd:play_no_feedback(db.actor, 0, 0, db.actor:position(), 1.0, 1.0)
- actor_effects.play_continuous_effect(period)
-end
-
-function use_harmonica(obj)
- local n = math.random(5)
- local snd = sound_object("music\\harmonica_" .. tostring(n))
- if (not snd) then return end
- local period = snd:length()
- snd:play_no_feedback(db.actor, 0, 0, db.actor:position(), 1.0, 1.0)
- actor_effects.play_continuous_effect(period)
-end
-
-function use_arty_container(obj)
- local break_con
- local break_arty
- local sec = obj:section()
-
- if (string.find(sec, "(lead.-_box)",3)) then
- break_con = "lead_box"
- break_arty = sec:gsub("_lead_box", "")
- elseif (string.find(sec, "(af.-_iam)",3)) then
- break_con = "af_iam"
- break_arty = sec:gsub("_af_iam", "")
- elseif (string.find(sec, "(af.-_aac)",3)) then
- break_con = "af_aac"
- break_arty = sec:gsub("_af_aac", "")
- elseif (string.find(sec, "(af.-_aam)",3)) then
- break_con = "af_aam"
- break_arty = sec:gsub("_af_aam", "")
- end
-
- if break_con and break_arty and ini_sys:section_exist(break_con) and ini_sys:section_exist(break_arty) then
- local cond = obj:condition()
-
- _G.ARTY_FROM_CONT = true -- Hack to prevent player from exploting Artefacts Containers (gaining rank by recieving artefacts)
- actor_effects.play_item_fx(break_con .. "_dummy")
- alife_create_item(break_con, db.actor)
- alife_create_item(break_arty, db.actor, { cond = cond } )
- alife_release(obj)
- end
-end
-
-function use_watch(obj)
- local Y, M, D, h, mint, sec, ms = game.get_game_time():get()
- local pharse = game.translate_string("st_dyn_news_day_part_am")
- local mints = tostring(mint)
- if (h > 12) then
- h = h - 12
- pharse = game.translate_string("st_dyn_news_day_part_pm")
- elseif (h == 12) then
- pharse = game.translate_string("st_dyn_news_day_part_pm")
- elseif (h == 0) then
- h = 12
- end
- if (mint < 10) then
- mints = "0" .. tostring(mint)
- end
- utils_xml.hide_menu()
- actor_menu.set_msg(1, tostring(h) .. ":" .. mints .. " " .. pharse , 3)
-end
-
-function use_place(obj)
- local p = obj:parent()
- if not (p and p:id() == AC_ID) then
- return
- end
-
- local section = obj:section()
- alife_release_id(obj:id())
-
- local pos = db.actor:position()
- pos:add(device().cam_dir:mul(1.2))
- pos.y = db.actor:position().y + 1
- local lvid = db.actor:level_vertex_id()
- local gvid = db.actor:game_vertex_id()
- local se_obj = alife_create(section,pos,lvid,gvid)
-
- local rot = device().cam_dir:getH()
- se_obj.angle = vector():set(0,rot,0)
-end
-
-
--------------------------------
--- OTHERS
--------------------------------
-function actor_on_trade(obj,sell_bye,money) -- bind_stalker on_trade
-
-end
-
-function actor_item_take(obj) -- bind_stalker on_item_take
-
-end
-
-function npc_on_item_take_from_box(npc,box,item)
-
-end
-
-function new_game_equippment()
- -- Damage equipment
- local function damage_items(actor,itm)
- local sec = itm:section()
- if (IsWeapon(itm) and (sec ~= "wpn_binoc_inv")) or IsOutfit(itm) or IsHeadgear(itm) or IsItem("device",sec) then
- itm:set_condition(math.random(75,85)/100)
- end
- end
- db.actor:iterate_inventory(damage_items,db.actor)
-
- give_info("start_equippment_handled")
-
- -- Override autosave
- exec_console_cmd("save " .. user_name() .. " - autosave")
- printf("- Autosaved new game")
-
- -- Override ammo type if required
- local start_wpn_tbl = alife_storage_manager.get_state().start_wpn_ammo
- if start_wpn_tbl then
- for id, ammo_sec in pairs(start_wpn_tbl) do
- local wpn = level.object_by_id(id)
- if wpn then
- local ammo_list = utils_item.get_ammo(wpn:section(), wpn:id())
- local ammo_type
- for i=1,#ammo_list do
- if (ammo_list[i] == ammo_sec) then
- ammo_type = i-1
- break
- end
- end
- if ammo_type then
- local wpn_ammo_mag_size = ini_sys:r_u32(wpn:section(), "ammo_mag_size")
- if wpn_ammo_mag_size then
- wpn:unload_magazine()
- wpn:set_ammo_type(ammo_type)
- wpn:set_ammo_elapsed(wpn_ammo_mag_size )
- printdbg("- New game weapon | [%s] - ammo type used: %s", wpn:section(), ammo_type)
- end
- end
- end
- end
- end
-
- return true
-end
-
-function bolt_manager() -- limit bolt count in actor inventory
- ResetTimeEvent("cycle","bolt_manager",60)
-
- local sim = alife()
- local bolt_max_num = ini_manager:r_float_ex("settings","bolt_max_num") or 99
- local cnt = 0
- local id, sec, se_obj
-
- local function itr(temp, obj)
- sec = obj:section()
- if (sec == "bolt") or (sec == "bolt_bullet") then
- cnt = cnt + 1
- if (cnt > bolt_max_num) then
- local se_obj = alife_object(obj:id())
- if se_obj then
- alife_release(se_obj)
- end
- end
- end
- end
- db.actor:iterate_ruck(itr, nil)
-
- return false
-end
-
-function give_item_reward(num_of_items)
- num_of_items = num_of_items or 1
- local prior = {
- ["health"] = 2,
- ["rad"] = 2,
- ["drink"] = 2,
- ["food"] = 2,
- ["ammo"] = 2,
- ["battery"] = 0,
- }
-
- local tot_power,tot_devices = 0,0
- local ammo_suitable = {}
- local ammo_avail = {}
- local function itr(obj)
- local sec = obj:section()
-
- -- Evaluate medkits
- if item_rewards["items_health"][sec] then
- prior["health"] = prior["health"] - 1
- end
-
- -- Evaluate anti-rads
- if item_rewards["items_rad"][sec] then
- prior["rad"] = prior["rad"] - 1
- end
-
- -- Evaluate drink
- if item_rewards["items_drink"][sec] then
- prior["drink"] = prior["drink"] - 1
- end
-
- -- Evaluate food
- if item_rewards["items_food"][sec] then
- prior["food"] = prior["food"] - 1
- end
-
- -- Evaluate devices power
- if IsItem("device",sec) then
- tot_devices = tot_devices + 1
- tot_power = tot_power + (obj:condition() * 100)
- end
-
- -- Evaluate weapons and ammo
- if (sec ~= "wpn_binoc") and IsWeapon(obj) and (not IsMelee(obj)) then
- local ammo = utils_item.get_ammo(obj:section(), obj:id())
- if ammo and #ammo > 1 then
- for i=1,#ammo do
- local sec_ammo = ammo[i]
- if item_rewards["items_ammo"][sec_ammo] then
- ammo_suitable[sec_ammo] = true
- end
- end
- end
- end
-
- if IsItem("ammo",sec) then
- ammo_avail[sec] = { cnt = obj:ammo_get_count() , box = IsItem("ammo",sec) }
- --printf("ammo_avail[%s] = { cnt = %s | box = %s", sec, ammo_avail[sec].cnt, ammo_avail[sec].box)
- end
-
- return false
- end
- db.actor:inventory_for_each(itr)
-
- -- Total power of devices is less than %50 -> need battery
- if (tot_power < (50 * tot_devices)) then
- prior["battery"] = 1
- end
-
- -- No enough ammo found for existing weapons -> need ammo
- for sec,_ in pairs(ammo_suitable) do
- local ammo = ammo_avail[sec]
- if ammo and (ammo.cnt >= ammo.box) then
- prior["ammo"] = prior["ammo"] - 1
- end
- end
-
- --[[
- for k,p in pairs(prior) do
- printf("- Prior[%s] = %s",k,p)
- end
- --]]
-
- -- Give actor items
- for i=1,num_of_items do
-
- -- Search from higher to lower priority
- local picker = {}
- local pick_prior
- local functor = function(t,a,b) return t[a] > t[b] end
- for k,p in spairs(prior,functor) do
- if (p > 0) then
- if (not pick_prior) or (pick_prior == p) then
- pick_prior = p
- picker[#picker + 1] = k
- end
- end
- end
-
- if pick_prior and (#picker > 0) then
-
- -- Pick random type of this priority
- local item_reward
- local k = picker[math.random(#picker)]
-
- -- Pick random item
- if k == "health" then
- item_reward = random_key_table(item_rewards["items_health"])
- elseif k == "rad" then
- item_reward = random_key_table(item_rewards["items_rad"])
- elseif k == "drink" then
- item_reward = random_key_table(item_rewards["items_drink"])
- elseif k == "food" then
- item_reward = random_key_table(item_rewards["items_food"])
- elseif k == "battery" then
- item_reward = item_device.device_battery
- elseif k == "ammo" then
- item_reward = random_key_table(ammo_suitable)
- end
-
- if item_reward then
-
- -- Reduce priority
- prior[k] = prior[k] - 1
- local amount = 1
-
- -- Give items
- local box_size = IsItem("ammo",item_reward)
- local max_uses = IsItem("multiuse",item_reward)
- local uses = max_uses and (max_uses >= 2) and 2 or 1
- if uses then
- amount = math.random(1,uses)
- end
- alife_create_item(item_reward, db.actor, {uses = amount , ammo = box_size})
-
- -- Send news
- news_manager.relocate_item(db.actor, "in", item_reward, amount)
- end
- break
- end
- end
-end
-
-function send_itm_msg(sec)
- local str = strformat(game.translate_string("st_item_taken"), ui_item.get_sec_name(sec))
- actor_menu.set_msg(2, str)
-end
-
-local upg_gr = {
- ["first"] = 1,
- ["secon"] = 2,
- ["third"] = 3,
- ["fourt"] = 4,
- ["fifth"] = 5,
-}
-local upg_ind = {
- ["a"] = 1,
- ["b"] = 2,
- ["c"] = 3,
- ["d"] = 4,
- ["e"] = 5,
- ["f"] = 6,
-}
-function extract_upgr_tools(t1, current_grp)
-
- local elements = parse_list(ini_sys, current_grp, "elements")
-
- -- Gather groups and indexes
- for i=1,#elements do -- search in upgrade group elements
- for k,v in pairs(upg_gr) do
- if string_find(elements[i],k) then -- if we found a legit element
- local indx = elements[i]:sub(9,9) -- get the index
- local upg_idx = indx and upg_ind[indx]
- if upg_idx then
- local prop = ini_sys:r_string_ex(elements[i],"property")
- if prop then
- local pr = str_explode(prop,",")
- local tool = utils_item.get_upgrade_prop_tool(pr[1])
- local num = ((upg_idx <= 2) and 1) or ((upg_idx <= 4) and 2) or 3
- local sec_tool = tool and tool:gsub("%^d", tostring(num)) or nil
- if sec_tool then
- t1[sec_tool] = true
- else
- local sec = ini_sys:r_string_ex(elements[i],"section")
- printdbg("! extract_upgr | can't generate tool for upgrade [%s], property: %s", sec, pr[1])
- end
- end
- end
- end
- end
- end
-
- -- Repeat
- for i=1,#elements do
- local next_grp = ini_sys:r_string_ex(elements[i],"effects")
- if next_grp and (next_grp ~= "") then
- extract_upgr_tools(t1,next_grp)
- end
- end
-end
-
-
--------------------------------
--- MULTI-USE ITEMS
--------------------------------
-function relocate_item_to_actor(actor, npc, section, amount)
- if (not actor) then
- return
- end
-
- amount = amount or 1
- local npc_inv = npc and (not IsItem("anim",section)) and utils_item.collect_amount(npc, section, 1) or {}
- local sim = alife()
- local cnt = amount
- local max_uses = IsItem("multiuse",section) or 1
-
- while cnt > 0 do
- -- Create or transfer object from npc
- local id
- if not is_empty(npc_inv) then
- local id_pick = random_key_table(npc_inv)
- local obj = id_pick and level.object_by_id(id_pick)
- if obj then
- npc:transfer_item(obj, actor)
- npc_inv[id_pick] = nil
- id = id_pick
- end
- else
- local se_obj = alife_create_item(section, db.actor)
- id = se_obj and se_obj.id
-
- -- Register PDA if found
- if npc and id and item_device.device_npc_pda[section] then
- ui_pda_npc_tab.register_pda(npc, section, id)
- end
- end
-
- -- Set remaining uses if needed
- if id then
- cnt = cnt - max_uses
- if cnt < 0 then
- local uses = (max_uses - (-cnt))
- process_item(section , id, {uses = uses} )
- end
- else
- printe("!ERROR: relocate_item_to_actor | object for section [%s] is bugged!", section)
- break
- end
- end
-
- local box_size = IsItem("ammo",section)
- if box_size then
- amount = amount * box_size
- end
- news_manager.relocate_item(actor, "in", section, amount)
-end
-
-function relocate_item_from_actor(actor, npc, section, amount)
- if (not actor) then
- return
- end
-
- if (npc == nil) then
- --printe("!ERROR: Couldn't relocate_item_from_actor | no npc found!")
- end
-
- amount = amount or 1
- local cnt = amount
- local max_uses = IsItem("multiuse",section)
- local keep_itr = true
- local function itr(temp, obj)
- --printf("~relocate_item_from_actor | checked [%s]", obj:section())
- if keep_itr and (obj and obj:section() == section) then
- --printf("-relocate_item_from_actor | found needed section [%s]", section)
- local uses = max_uses and obj:get_remaining_uses() or 1
- cnt = cnt - uses
- if (cnt >= 0) then
- if npc then
- actor:transfer_item(obj, npc)
- else
- alife_release_id(obj:id())
- end
-
- if (cnt == 0) then
- keep_itr = false
- end
- else
- local remain_1 = -cnt
- local remain_2 = max_uses - remain_1
- process_item(section, obj:id(), {uses = remain_1})
- if npc then
- alife_create_item(section, npc, {uses = remain_2})
- end
- keep_itr = false
- end
- end
- end
- actor:iterate_inventory(itr, nil)
-
- if cnt > 0 then
- printe("! ERROR: Couldn't relocate_item_from_actor | not enough item [%s] recolated! need %s more", section, cnt)
- end
-
- local box_size = IsItem("ammo",section)
- if box_size then
- amount = amount * box_size
- end
- news_manager.relocate_item(actor, "out", section, amount)
-end
-
-
--------------------------------
--- Sound Effects
--------------------------------
-local time_snd_prev = 0
-local snd_on_take = {
- ["coin"] = {"interface\\items\\inv_items_money_coin_2"},
- ["bolt"] = {"interface\\items\\inv_items_ammo_1"},
- ["paper"] = {"interface\\items\\inv_items_money_paper"},
- ["bottle"] = {"interface\\items\\inv_items_bottle_",1,2},
- ["pills"] = {"interface\\items\\inv_items_pills_2"},
- ["part"] = {"interface\\items\\inv_items_parts_",1,2},
- ["outfit"] = {"interface\\items\\inv_items_cloth_",1,3},
- ["ammo"] = {"interface\\items\\inv_items_ammo_",4,7},
- ["grenade"] = {"interface\\items\\inv_items_grenade_",1,2},
- ["knife"] = {"interface\\items\\inv_items_knife_",1,2},
- ["weapon"] = {"interface\\items\\inv_items_wpn_",1,2},
- ["other"] = {"interface\\items\\inv_items_generic_",2,5},
-}
-
-function play_item_sound(item, vol)
- if (not item) then
- printe("!ERROR itms_manager | play_item_sound | no object recieved!")
- end
-
- local snd_type = SYS_GetParam(0,item:section(),"snd_on_take")
- if not (snd_type and snd_type ~= "") then
- return
- end
-
- local snd = snd_on_take[snd_type]
- if (not snd) then
- return
- end
-
- local snd_obj
- if (#snd == 1) then
- snd_obj = sound_object(snd[1])
- else
- snd_obj = sound_object(snd[1] .. tostring(math.random(snd[2],snd[3])))
- end
-
- local time_g = time_global()
- if snd_obj and (time_g > time_snd_prev + 25) then
- snd_obj:play(db.actor,0,sound_object.s2d)
- snd_obj.volume = vol or 1
- end
- time_snd_prev = time_g
-end
-
-
-
--------------------------------
--- Item Processor
--------------------------------
-local c_instance
-function get_item_processor()
- if c_instance == nil then
- c_instance = ItemProcessor()
- end
- return c_instance
-end
-
-function process_item(...)
- if c_instance == nil then
- c_instance = ItemProcessor()
- end
- return c_instance:Process_Item(...)
-end
-
-function create_item(...)
- if c_instance == nil then
- c_instance = ItemProcessor()
- end
- return c_instance:Create_Item(...)
-end
-
-class "ItemProcessor"
-function ItemProcessor:__init()
- self.Remove = {}
- self.Cond = {}
- self.Uses = {}
- self.Ammo = {}
-
- self.Debug = false -- true to debug
- self.Cycles = 10
-end
-
-function ItemProcessor:update()
- -- Process Condition
- for id,con in pairs(self.Cond) do
- local obj = level.object_by_id(id)
- if obj then
- if self.Debug then
- printf("* ItemProcessor | processing condition | id: %s - con: %s", id, con)
- end
-
- obj:set_condition(con)
- local new_con = obj:condition()
-
- if (new_con < con + 0.02) and (new_con > con - 0.02) then -- range check
- self.Cond[id] = nil
-
- if self.Debug then
- printf("# ItemProcessor | processing condition done | id: %s - con: %s", id, new_con)
- end
- else
- self:Remove_Process(id,"!","can't set condition!")
- end
-
- elseif alife_object(id) then
- self:Remove_Process(id,"~","server object exists, no game object yet")
-
- else
- self:Remove_Process(id,"!","no game object!")
- end
- end
-
- -- Process Uses
- for id,uses in pairs(self.Uses) do
- local obj = level.object_by_id(id)
- if obj then
- if self.Debug then
- printf("* ItemProcessor | processing uses | id: %s - uses: %s", id, uses)
- end
-
- obj:set_remaining_uses(uses)
-
- if (obj:get_remaining_uses() == uses) then
- self.Uses[id] = nil
-
- if self.Debug then
- printf("# ItemProcessor | processing uses done | id: %s - con: %s", id, uses)
- end
- else
- self:Remove_Process(id,"!","can't set uses!")
- end
-
- elseif alife_object(id) then
- self:Remove_Process(id,"~","server object exists, no game object yet")
-
- else
- self:Remove_Process(id,"!","no game object!")
- end
- end
-
- -- Process Ammo
- for id,ammo in pairs(self.Ammo) do
- local obj = level.object_by_id(id)
- if obj then
- if self.Debug then
- printf("* ItemProcessor | processing ammo | id: %s - ammo: %s", id, ammo)
- end
-
- obj:ammo_set_count(ammo)
-
- if (obj:ammo_get_count() == ammo) then -- range
- self.Ammo[id] = nil
-
- if self.Debug then
- printf("# ItemProcessor | processing ammo done | id: %s - con: %s", id, new_con)
- end
- else
- self:Remove_Process(id,"!","can't set ammo!")
- end
-
- elseif alife_object(id) then
- self:Remove_Process(id,"~","server object exists, no game object yet")
-
- else
- self:Remove_Process(id,"!","no game object!")
- end
- end
-end
-
-function ItemProcessor:Create_Item(section, owner, t)
-
- t = t or {}
-
- if section then
- local uses
- section, uses = self:Extract_Uses(section)
-
- if (ini_sys:section_exist(section)) then
-
- -- Spawn object
- local se_itm
- if owner then
-
- -- Collect spawn data
- local pos, lvi, gvi, pid, spawn_typ
- if (type(owner) == "table") then
- pos, lvi, gvi, pid = owner[1], owner[2], owner[3], owner[4]
- if pid then
- spawn_typ = "on custom object"
- else
- spawn_typ = "in world"
- end
- elseif (type(owner.id) == "function") then
- pos, lvi, gvi, pid = owner:position(), owner:level_vertex_id(), owner:game_vertex_id(), owner:id()
- spawn_typ = "on game object"
- elseif owner.id then
- pos, lvi, gvi, pid = owner.position, owner.m_level_vertex_id, owner.m_game_vertex_id, owner.id
- spawn_typ = "on server object"
- end
-
- -- Validate
- if not (pos and lvi and gvi) then
- callstack()
- printe("! ItemProcessor | Missing spawn properties for [%s] | Spawn type: %s | pos: %s, lvi: %s, gvi: %s", section, spawn_typ, pos , lvi , gvi)
- return nil
- end
- if self.Debug then
- local obj_p = pid and alife_object(pid)
- local name_p = obj_p and (obj_p.id == AC_ID and "actor" or obj_p:name()) or ""
- spawn_typ = spawn_typ .. (obj_p and (" (".. name_p .. ")") or "")
- end
-
- -- Ammo need unique process to spawn multi-objects, return result from here
- if t.ammo and t.ammo > 0 and IsItem("ammo",section) then
-
- -- Replace damaged items with old if _NO_DAMAGED_AMMO allows it
- if _NO_DAMAGED_AMMO and string_find(section,"verybad") then
- local new_section = string_gsub(section,"verybad","bad")
- if ini_sys:section_exist(new_section) then
- section = new_section
- end
- end
-
-
- local num_in_box = ini_sys:r_u32(section, "box_size")
- local num = t.ammo
- local se_tbl = {}
- local sim = alife()
-
- local p_id = pid or 65535 -- because xray
- while (num > num_in_box) do
- se_tbl[#se_tbl+1] = sim:create_ammo(section, pos, lvi, gvi, p_id, num_in_box)
- alife_record( se_tbl[#se_tbl] , true )
- num = num - num_in_box
-
- if self.Debug then
- local se_ammo = se_tbl[#se_tbl]
- printf("/ alife_create [%s] (%s) x%s ammo %s", section, se_ammo and se_ammo.id, num_in_box, spawn_typ)
- end
- end
-
- se_tbl[#se_tbl+1] = sim:create_ammo(section, pos, lvi, gvi, p_id, num)
- alife_record( se_tbl[#se_tbl] , true )
-
- if self.Debug then
- local se_ammo = se_tbl[#se_tbl]
- printf("/ alife_create [%s] (%s) x%s ammo %s", section, se_ammo and se_ammo.id, num, spawn_typ)
- end
-
- return se_tbl
-
- -- Other items
- else
-
- if pid then
- se_itm = alife():create(section, pos, lvi, gvi, pid)
- else
- se_itm = alife():create(section, pos, lvi, gvi)
- end
-
- if self.Debug then
- printf("/ alife_create [%s] (%s) on %s", section, se_itm and se_itm.id, spawn_typ)
- end
- end
- else
- printe("! ItemProcessor | Missing spawn owner for [%s]!", section)
- end
-
- -- Process
- if se_itm then
- alife_record(se_itm,true)
-
- -- Multiuse items
- if IsItem("multiuse",section) then
- uses = uses or t.uses
-
- -- Send to process
- if uses then
- self.Uses[se_itm.id] = uses --self:Process_Item(section, se_itm.id, { uses = uses })
- end
-
- -- Degradable items
- elseif utils_item.is_degradable(nil, section) then
- local cond = t.cond
-
- -- Parts
- if t.cond_cr and t.cond_ct and IsItem(cond_ct,section) then
- cond = (#t.cond_cr > 2) and self:Random_Choice(t.cond_cr) or self:Random_Condition(t.cond_cr)
-
- -- others
- elseif t.cond_r then
- cond = (#t.cond_r > 2) and self:Random_Choice(t.cond_r) or self:Random_Condition(t.cond_r)
-
- end
-
- -- Send to process
- if cond then
- self.Cond[se_itm.id] = cond --self:Process_Item(section, se_itm.id, { cond = cond })
- end
- end
-
- return se_itm
-
- else
- printe("!ERROR [%s] is not spawned by ItemProcessor",section)
- end
-
- else
- printe("! ItemProcessor | section [%s] doesn't exist!", section)
- end
-
- else
- printf("~ ItemProcessor | nothing is passed to process!")
- end
-
- return nil
-end
-
-function ItemProcessor:Process_Item(section, id, t)
- if t then
- if t.uses then
- self.Uses[id] = t.uses
-
- elseif t.cond then
- self.Cond[id] = t.cond
-
- elseif t.ammo then
- self.Ammo[id] = t.ammo
-
- elseif self.Debug then
- --printf("* ItemProcessor | no process done for [%s] (%s)", section, id)
- end
- end
-end
-
-function ItemProcessor:Remove_Process(id, mark, str)
- mark = mark or "~"
- self.Remove[id] = self.Remove[id] and (self.Remove[id] + 1) or 0
- if (self.Remove[id] > self.Cycles) then
- self.Cond[id] = nil
- self.Uses[id] = nil
- self.Ammo[id] = nil
- self.Remove[id] = nil
-
- if self.Debug then
- local obj = level.object_by_id(id)
- local p = obj and obj:parent()
- printf("%s ItemProcessor | %s: (%s) [%s] - owner: (%s) [%s]", mark, str, id, obj and obj:section(), p and p:id() or "-", p and p:section())
- end
- end
-end
-
-function ItemProcessor:Random_Choice(arg)
- if arg and (#arg > 0) then
- local r = math.random(1, #arg)
- return arg[r]
- end
-end
-
-function ItemProcessor:Random_Condition(arg)
- if arg and (#arg > 0) then
- return (math.random(arg[1], arg[2])/100)
- end
-end
-
-function ItemProcessor:Extract_Uses(sec_d)
- local _, __, sec_u, uses = string_find(sec_d,"(.*)__(%d)")
- if sec_u and uses and tonumber(uses) and ini_sys:section_exist(sec_u) then
- return sec_u, tonumber(uses)
- end
- return sec_d
-end
-
---------------------------------------------------------------------------------
-
-
--------------------------------
--- DEBUG
--------------------------------
-function generate_boosters_list()
- local config = ini_file_ex("booster_stats.ltx",true)
-
- ini_sys:section_for_each(function(section)
- local cls = ini_sys:r_string_ex(section,"class")
- if (cls == "II_FOOD") and (ini_sys:r_float_ex(section,"boost_time") > 0) then
- local str = ""
- str = str .. ("cost:" .. ini_sys:r_float_ex(section,"cost") .. "|")
- str = str .. (ini_sys:r_float_ex(section,"max_uses") and ("uses:" .. ini_sys:r_float_ex(section,"max_uses") .. "|") or ("uses:1|"))
- str = str .. ("boost_time:" .. ini_sys:r_float_ex(section,"boost_time") .. "|")
-
- if ini_sys:r_float_ex(section,"boost_max_weight") ~= 0 then
- str = str .. ("boost_max_weight:" .. ini_sys:r_float_ex(section,"boost_max_weight") .. "|")
- end
- if ini_sys:r_float_ex(section,"boost_health_restore") ~= 0 then
- str = str .. ("boost_health_restore:" .. ini_sys:r_float_ex(section,"boost_health_restore") .. "|")
- end
- if ini_sys:r_float_ex(section,"boost_power_restore") ~= 0 then
- str = str .. ("boost_power_restore:" .. ini_sys:r_float_ex(section,"boost_power_restore") .. "|")
- end
- if ini_sys:r_float_ex(section,"boost_radiation_restore") ~= 0 then
- str = str .. ("boost_radiation_restore:" .. ini_sys:r_float_ex(section,"boost_radiation_restore") .. "|")
- end
- if ini_sys:r_float_ex(section,"boost_bleeding_restore") ~= 0 then
- str = str .. ("boost_bleeding_restore:" .. ini_sys:r_float_ex(section,"boost_bleeding_restore") .. "|")
- end
-
- if ini_sys:r_float_ex(section,"boost_radiation_protection") ~= 0 then
- str = str .. ("boost_radiation_protection:" .. ini_sys:r_float_ex(section,"boost_radiation_protection") .. "|")
- end
- if ini_sys:r_float_ex(section,"boost_telepat_protection") ~= 0 then
- str = str .. ("boost_telepat_protection:" .. ini_sys:r_float_ex(section,"boost_telepat_protection") .. "|")
- end
- if ini_sys:r_float_ex(section,"boost_chemburn_protection") ~= 0 then
- str = str .. ("boost_chemburn_protection:" .. ini_sys:r_float_ex(section,"boost_chemburn_protection") .. "|")
- end
-
- if ini_sys:r_float_ex(section,"boost_burn_immunity") ~= 0 then
- str = str .. ("boost_burn_immunity:" .. ini_sys:r_float_ex(section,"boost_burn_immunity") .. "|")
- end
- if ini_sys:r_float_ex(section,"boost_shock_immunity") ~= 0 then
- str = str .. ("boost_shock_immunity:" .. ini_sys:r_float_ex(section,"boost_shock_immunity") .. "|")
- end
- if ini_sys:r_float_ex(section,"boost_radiation_immunity") ~= 0 then
- str = str .. ("boost_radiation_immunity:" .. ini_sys:r_float_ex(section,"boost_radiation_immunity") .. "|")
- end
- if ini_sys:r_float_ex(section,"boost_telepat_immunity") ~= 0 then
- str = str .. ("boost_telepat_immunity:" .. ini_sys:r_float_ex(section,"boost_telepat_immunity") .. "|")
- end
- if ini_sys:r_float_ex(section,"boost_chemburn_immunity") ~= 0 then
- str = str .. ("boost_chemburn_immunity:" .. ini_sys:r_float_ex(section,"boost_chemburn_immunity") .. "|")
- end
- if ini_sys:r_float_ex(section,"boost_strike_immunity") ~= 0 then
- str = str .. ("boost_strike_immunity:" .. ini_sys:r_float_ex(section,"boost_strike_immunity") .. "|")
- end
- if ini_sys:r_float_ex(section,"boost_wound_immunity") ~= 0 then
- str = str .. ("boost_wound_immunity:" .. ini_sys:r_float_ex(section,"boost_wound_immunity") .. "|")
- end
- if ini_sys:r_float_ex(section,"boost_explosion_immunity") ~= 0 then
- str = str .. ("boost_explosion_immunity:" .. ini_sys:r_float_ex(section,"boost_explosion_immunity") .. "|")
- end
- if ini_sys:r_float_ex(section,"boost_fire_wound_immunity") ~= 0 then
- str = str .. ("boost_fire_wound_immunity:" .. ini_sys:r_float_ex(section,"boost_fire_wound_immunity") .. "|")
- end
-
- config:w_value("temp", section, str)
- end
- end)
-
- config:save()
-end
\ No newline at end of file
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/scripts/zzz_player_injuries.script b/mods/[DEV] Groks Body Health System Redux/gamedata/scripts/zzz_player_injuries.script
deleted file mode 100644
index ead0d1dc..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/scripts/zzz_player_injuries.script
+++ /dev/null
@@ -1,1808 +0,0 @@
--- Mora's Edit January 20, 2021
-local disable_hud_fps_fix_tmr = 0.2 -- sec
-
------------------------- SETTINGS ------------------------
-local healingitems=true -- Enable healing items
-local regen=0 -- Automatic blue health regeneration on each limb. Setting it to 90000 would mean each 90 seconds 1 health point restores
-local damagescale=1.0 -- Damage scale to body parts from recieved damage; 0.5 means half of normal limbs do have 50 hp, torso has 100 hp and head has 50 hp
-local easyhealing=false -- If easy healing is enabled, you wont need to use post healing items and first aid items would restore blue health
-local hud_vertical_spacing=25--27 -- How low hitbox hud will be drown. The higher the number, the lower the HUD. 0 is default ~in the middle of screen.
-
-local hide_default_hud= (zzz_player_injuries_mcm.get_config("TEXT_BASED_PATCH")) and false or true
-local show_player_name=true
-local hide_if_healthy=false
-
---====== marked everything i added with 'xcvb' to make it easier to find in case someone wants to change/modify anything from new effects ======
-local NEW_LIMB_PENALTIES_FEATURE = zzz_player_injuries_mcm.get_config("NEW_LIMB_PENALTIES_FEATURE") -- will keep it on loading just in case
-
--- It's very important to keep the correct ratio between "effects_mult" and "maxhp" as shown in example
-local effects_mult = 1 -- Divide this by maxhp and damagescale multipliers. Example "effects_mult = 1/10" if (default maxhp)*10, damagescale*10, medicines*10 etc (more immersive and harmful effects don't reduce the whole chunks)
-local prev_time = nil
-local head_tbl = {}
-local tinnitus_play = false
-
-function save_state(m_data)
- m_data.head_tbl = head_tbl
-end
-
-function load_state(m_data)
- head_tbl = m_data.head_tbl or {}
-end
-
-local aim_anm = {"earthquake_1","earthquake_2"}
-local rightleg_anm = {"med1","med4"}
-local leftleg_anm = {"med2","med3"}
-local bothlegs_anm = {"strong1","strong2","strong4"}
-
-function on_option_change()
- if r(head_tbl.volume) ~= r(ui_options.get("sound/general/master_volume")) then
- head_tbl.volume = (ui_options.get("sound/general/master_volume"))
- end
-end
-
--- shameful steal from arti
-local speeds = {}
-
-function actor_on_first_update()
- local options_vol = ui_options.get("sound/general/master_volume")
- if not (head_tbl.volume) then head_tbl.volume = options_vol end
- speeds[0] = db.actor:get_actor_run_coef()
- speeds[1] = db.actor:get_actor_runback_coef()
- speeds[2] = db.actor:get_actor_sprint_koef()
-end
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-
-local last_damaged_hitbox=nil
-local showtexthud=(zzz_player_injuries_mcm.get_config("TEXT_BASED_PATCH")) and 2 or 0 --1 large left down, 2 default center 0 texture
-local show_hud_type=2
-local show_hud_change_time=0
-local myhealth=0
-local healthstatus=true
-local init=false
-local timeregen=time_global()
-
-local display_width=2560
-local display_height=1440
-local display_ratio=169
-local display={}
-display.types={}
-display.types[43]=1.3333
-display.types[169]=1.7777
-display.types[1610]=1.56
-
-maxhp={}
-maxhp.head=11
-maxhp.torso=11
-maxhp.leftarm=5
-maxhp.rightarm=5
-maxhp.leftleg=5
-maxhp.rightleg=5
-
-health={}
-health.head=maxhp.head
-health.torso=maxhp.torso
-health.leftarm=maxhp.leftarm
-health.rightarm=maxhp.rightarm
-health.leftleg=maxhp.leftleg
-health.rightleg=maxhp.rightleg
-
-preview={}
-
-preview.health={}
-preview.health.head=nil
-preview.health.torso=nil
-preview.health.leftarm=nil
-preview.health.rightarm=nil
-preview.health.leftleg=nil
-preview.health.rightleg=nil
-
-preview.bonus={}
-preview.bonus.head=nil
-preview.bonus.torso=nil
-preview.bonus.leftarm=nil
-preview.bonus.rightarm=nil
-preview.bonus.leftleg=nil
-preview.bonus.rightleg=nil
-
-
-timedhp={}
-timedhp.head=0
-timedhp.torso=0
-timedhp.leftarm=0
-timedhp.rightarm=0
-timedhp.leftleg=0
-timedhp.rightleg=0
-
-hud_blink_timer={}
-hud_blink_timer.head=0
-hud_blink_timer.torso=0
-hud_blink_timer.leftarm=0
-hud_blink_timer.rightarm=0
-hud_blink_timer.leftleg=0
-hud_blink_timer.rightleg=0
-hud_blink_timer.blinktime=1000
-
-medkits={}
-medkits.lastregen=time_global()
-medkits.timedhealth=60000
-medkits.morphine={head=8,torso=5,rightleg=4,leftleg=4,rightarm=4,leftarm=4,timeregen=60000}
-medkits.rebirth={head=11,torso=11,rightleg=5,leftleg=5,rightarm=5,leftarm=5,timeregen=60000}
-medkits.adrenalin={head=10,torso=10,rightleg=5,leftleg=5,rightarm=5,leftarm=5,timeregen=80000}
-medkits.cocaine={harming=true,head=8,torso=4,rightleg=3,leftleg=3,rightarm=3,leftarm=3,timeregen=180000}
-medkits.analgetic={head=3,torso=3,rightleg=2,leftleg=2,rightarm=2,leftarm=2,timeregen=60000}
-medkits.salicidic_acid={harming=true,head=5,torso=5,rightleg=3,leftleg=3,rightarm=3,leftarm=3,timeregen=40000}
-medkits.stimpack={head=5,torso=5,rightleg=3,leftleg=3,rightarm=3,leftarm=3,timeregen=50000}
-medkits.stimpack_army={head=5,torso=7,rightleg=3,leftleg=3,rightarm=3,leftarm=3,timeregen=65000}
-medkits.stimpack_scientic={head=6,torso=9,rightleg=4,leftleg=4,rightarm=4,leftarm=4,timeregen=75000}
-medkits.medkit={head=5,torso=5,rightleg=2,leftleg=2,rightarm=2,leftarm=2,timeregen=30000}
-medkits.medkit_army={head=7,torso=8,rightleg=3,leftleg=3,rightarm=3,leftarm=3,timeregen=40000}
-medkits.medkit_scientic={head=10,torso=8,rightleg=4,leftleg=4,rightarm=4,leftarm=4,timeregen=50000}
-medkits.jgut={rightleg=5,leftleg=5,rightarm=5,leftarm=5,timeregen=40000}
-medkits.survival_kit={torso=11,rightleg=3,leftleg=3,rightarm=3,leftarm=3,timeregen=100000}
-medkits.bandage={torso=2,torso=2,rightleg=3,leftleg=3,rightarm=3,leftarm=3,timeregen=40000}
-
-healhelp={}
---healhelp.bandage={rightleg=2,leftleg=2,rightarm=2,leftarm=2}
-healhelp.caffeine={head=3}
-healhelp.drug_psy_blockade={head=5,rightleg=2,leftleg=2,rightarm=2,leftarm=2}
-healhelp.drug_sleepingpills={head=8}
-healhelp.drug_booster={torso=6}
-healhelp.drug_anabiotic={head=11,torso=11,rightleg=11,leftleg=11,rightarm=11,leftarm=11}
-healhelp.rebirth={head=8,torso=8,rightleg=4,leftleg=4,rightarm=4,leftarm=4}
-healhelp.glucose_s={head=2,torso=2,rightleg=2,leftleg=2,rightarm=2,leftarm=2}
-healhelp.glucose={head=4,torso=4,rightleg=3,leftleg=3,rightarm=3,leftarm=3}
-healhelp.medkit_army={rightleg=1,leftleg=1,rightarm=1,leftarm=1}
-healhelp.medkit_scientic={rightleg=2,leftleg=2,rightarm=2,leftarm=2}
-healhelp.salicidic_acid={rightleg=2,leftleg=2,rightarm=2,leftarm=2}
-healhelp.analgetic={torso=2,rightleg=1,leftleg=1,rightarm=1,leftarm=1}
-healhelp.stimpack_army={head=2,torso=2,rightleg=1,leftleg=1,rightarm=1,leftarm=1}
-healhelp.stimpack_scientic={head=3,torso=6,rightleg=1,leftleg=1,rightarm=1,leftarm=1}
-healhelp.tetanus={head=3,rightleg=2,leftleg=2,rightarm=2,leftarm=2}
-healhelp.drug_coagulant={torso=3}
-healhelp.yadylin={head=4,torso=4,rightleg=2,leftleg=2,rightarm=2,leftarm=2}
-healhelp.survival_kit={torso=11,rightleg=3,leftleg=3,rightarm=3,leftarm=3}
-healhelp.akvatab={rightleg=4,leftleg=4,rightarm=4,leftarm=4}
-healhelp.vinca={torso=3}
-healhelp.antibio_chlor={head=1,torso=2}
-healhelp.antibio_sulfad={torso=2,rightarm=1,leftarm=1}
-healhelp.antiemetic={head=2,rightleg=1,leftleg=1}
-healhelp.antirad={head=1,torso=2,rightleg=2,leftleg=2,rightarm=2,leftarm=2}
-healhelp.antirad_cystamine={head=3,torso=3}
-healhelp.antirad_kalium={head=1,torso=1,rightleg=1,leftleg=1,rightarm=1,leftarm=1}
-healhelp.drug_antidot={head=4,torso=2}
-healhelp.drug_radioprotector={head=1,rightleg=1,leftleg=1,rightarm=1,leftarm=1}
-
-
-if easyhealing then
- healhelp.morphine={harming=true,head=8,torso=5,rightleg=4,leftleg=4,rightarm=4,leftarm=4,timeregen=60000}
- healhelp.rebirth={harming=true,head=11,torso=11,rightleg=5,leftleg=5,rightarm=5,leftarm=5,timeregen=60000}
- healhelp.adrenalin={harming=true,head=10,torso=10,rightleg=5,leftleg=5,rightarm=5,leftarm=5,timeregen=80000}
- healhelp.cocaine={harming=true,head=8,torso=4,rightleg=3,leftleg=3,rightarm=3,leftarm=3,timeregen=180000}
- healhelp.analgetic={harming=true,head=3,torso=3,rightleg=2,leftleg=2,rightarm=2,leftarm=2,timeregen=60000}
- healhelp.salicidic_acid={harming=true,head=5,torso=5,rightleg=3,leftleg=3,rightarm=3,leftarm=3,timeregen=40000}
- healhelp.stimpack={harming=true,head=5,torso=5,rightleg=3,leftleg=3,rightarm=3,leftarm=3,timeregen=50000}
- healhelp.stimpack_army={harming=true,head=5,torso=7,rightleg=3,leftleg=3,rightarm=3,leftarm=3,timeregen=65000}
- healhelp.stimpack_scientic={harming=true,head=6,torso=9,rightleg=4,leftleg=4,rightarm=4,leftarm=4,timeregen=75000}
- healhelp.medkit={head=5,torso=5,rightleg=2,leftleg=2,rightarm=2,leftarm=2,timeregen=30000}
- healhelp.medkit_army={head=7,torso=8,rightleg=3,leftleg=3,rightarm=3,leftarm=3,timeregen=40000}
- healhelp.medkit_scientic={head=10,torso=8,rightleg=4,leftleg=4,rightarm=4,leftarm=4,timeregen=50000}
- healhelp.yadylin={head=2,torso=2,rightleg=2,leftleg=2,rightarm=2,leftarm=2,timeregen=90000}
- healhelp.bandage={torso=2,torso=2,rightleg=3,leftleg=3,rightarm=3,leftarm=3,timeregen=40000}
-end
-
-
-local playername
-
-function trace_this(to_trace1)
- local log_file = io.open("log_memory_npc", "a")
- log_file:write(to_trace1)
- log_file:close(log_file)
-end
-
-local function GetConditionFromFloat(float,bodypart)
- if bodypart then
- if hud_blink_timer[bodypart] then
- if time_global()-hud_blink_timer[bodypart]=0.99 then
- -- --return "good"
- -- return "blue"
- -- elseif float>=0.79 then
- -- --return "ok"
- -- return "blue"
- -- elseif float>=0.33 then
- -- return "blue"
- -- elseif float>=0.19 then
- -- return "critical"
- -- else
- -- return "critical"
- -- end
- return "blue"
-end
-local colors={}
---colors.blue="%c[0,50,200,200]"
-
--- colors.good="%c[0,0,255,0]"
--- colors.ok="%c[0,150,255,0]"
--- colors.medium="%c[0,255,255,0]"
--- colors.danger="%c[0,255,100,0]"
--- colors.critical="%c[0,255,0,0]"
-
-colors.blue="%c[0,56,115,255]"
-colors.good="%c[0,15,143,20]"
-colors.ok="%c[0,138,204,51]"
-colors.medium="%c[0,255,208,0]"
-colors.danger="%c[0,255,79,0]"
-colors.critical="%c[0,230,10,10]"
-colors.grey="%c[0,161,161,161]"
-
-colors.preview_health="%c[0,140,0,255]"
-colors.preview_bonus="%c[0,0,212,24]"
-
-colors.blank="%c[0,156,156,156]"
-colors.white="%c[0,255,255,255]"
---colors.grey="%c[0,185,185,185]"
-colors.black="%c[0,0,0,0]"
-
-local function SaveHealthStatus()
- utils_obj.save_var(db.actor,"health.head",health.head)
- utils_obj.save_var(db.actor,"health.torso",health.torso)
- utils_obj.save_var(db.actor,"health.rightarm",health.rightarm)
- utils_obj.save_var(db.actor,"health.leftarm",health.leftarm)
- utils_obj.save_var(db.actor,"health.rightleg",health.rightleg)
- utils_obj.save_var(db.actor,"health.leftleg",health.leftleg)
-
- utils_obj.save_var(db.actor,"timedhp.head",timedhp.head)
- utils_obj.save_var(db.actor,"timedhp.torso",timedhp.torso)
- utils_obj.save_var(db.actor,"timedhp.rightarm",timedhp.rightarm)
- utils_obj.save_var(db.actor,"timedhp.leftarm",timedhp.leftarm)
- utils_obj.save_var(db.actor,"timedhp.rightleg",timedhp.rightleg)
- utils_obj.save_var(db.actor,"timedhp.leftleg",timedhp.leftleg)
-end
-local function LoadHealthStatus()
- health.head=utils_obj.load_var(db.actor,"health.head") or maxhp.head
- health.torso=utils_obj.load_var(db.actor,"health.torso") or maxhp.torso
- health.rightarm=utils_obj.load_var(db.actor,"health.rightarm") or maxhp.rightarm
- health.leftarm=utils_obj.load_var(db.actor,"health.leftarm") or maxhp.leftarm
- health.rightleg=utils_obj.load_var(db.actor,"health.rightleg") or maxhp.rightleg
- health.leftleg=utils_obj.load_var(db.actor,"health.leftleg") or maxhp.leftleg
-
- timedhp.head=utils_obj.load_var(db.actor,"timedhp.head") or 0
- timedhp.torso=utils_obj.load_var(db.actor,"timedhp.torso") or 0
- timedhp.rightarm=utils_obj.load_var(db.actor,"timedhp.rightarm") or 0
- timedhp.leftarm=utils_obj.load_var(db.actor,"timedhp.leftarm") or 0
- timedhp.rightleg=utils_obj.load_var(db.actor,"timedhp.rightleg") or 0
- timedhp.leftleg=utils_obj.load_var(db.actor,"timedhp.leftleg") or 0
-end
-
-
-local function PartialDamage()
- local armsbroken=0
- local legsbroken=0
- if health.leftarm==0 then armsbroken=armsbroken+1 end
- if health.rightarm==0 then armsbroken=armsbroken+1 end
-
- if health.leftleg==0 then legsbroken=legsbroken+1 end
- if health.rightleg==0 then legsbroken=legsbroken+1 end
-
- -- trace_this("Legsbroken "..legsbroken.."\n")
- -- trace_this("Pierna izq "..health.leftleg.."\n")
- -- trace_this("Pierna der "..health.rightleg.."\n\n")
- if health.torso==0 then
- db.actor.health=-1
- end
- if health.head== 0 then
- db.actor.health=-1
- end
-
- -- not gonna rewrite it xd
- if NEW_LIMB_PENALTIES_FEATURE then return end
-
- if armsbroken>0 then
- if armsbroken==1 then
- local activeslot=db.actor:active_slot()
- if activeslot==2 or activeslot==3 then
- local item_in_slot=db.actor:item_in_slot(activeslot)
- if item_in_slot then
- local section_name=item_in_slot:section()
- --printf("# section name: %s",j)
- local weight
- if ini_sys:section_exist(section_name,"inv_weight") then
- weight=ini_sys:r_float_ex(section_name,"inv_weight")
- --printf("# weight: %s",weight)
- else
- --printf("! weight doesnt' exist!")
- end
- if weight then
- if weight>1.7 then
- actor_menu.set_msg(1, "One of your arms is wounded, you can't hold this.", 8)
- db.actor:drop_item(item_in_slot)
- end
- end
- end
- end
- else
- local activeslot=db.actor:active_slot()
- if activeslot==2 or activeslot==3 or activeslot==1 then
- local item_in_slot=db.actor:item_in_slot(activeslot)
- actor_menu.set_msg(1, "Both your arms are wounded, you can't hold this.", 8)
- db.actor:drop_item(item_in_slot)
- end
- end
- end
- if legsbroken>0 then
- local vec=db.actor:get_movement_speed()
- local movementspeed=(vec.x*vec.x)+(vec.y*vec.y)+(vec.z*vec.z)
- local stamina=db.actor.power
- if legsbroken==1 then
- -- trace_this("Piernas rotas "..movementspeed.."\n")
- if movementspeed>30 then db.actor.power=0.01 actor_menu.set_msg(1, "Your leg is damaged, you cannot run.", 8) end
- else
- local msg=""
- for i=1,68 do
- msg=msg.." "
- end
-
- msg=msg.."Both legs are damaged, you cannot walk."
- if not (movementspeed<60 and movementspeed>50) and not(movementspeed<22 and movementspeed>20)and not(movementspeed<3 and movementspeed>=0) then
- db.actor.power=0.0 actor_menu.set_msg(1, msg, 10)
- -- trace_this("Actor power"..msg.."\n")
- end
- end
- end
-
-end
-
---======== xcvb =================================
-function r(val)
- local shet = round_idp(val, 3)
-
- return shet
-end
-
-function get_body_state()
- local crouch = IsMoveState('mcCrouch')
- local accel = IsMoveState('mcAccel')
- local body_st = "stand"
-
- if crouch then
- if accel then body_st = "low_crouch"
- else body_st = "crouch"
- end
- end
-
- return body_st
-end
-
-function shaking_hands()
-
- if not (NEW_LIMB_PENALTIES_FEATURE) then return end
-
- local activeslot = db.actor:active_slot()
- if not (activeslot == 2 or activeslot == 3 or activeslot == 1) then return end
-
- local item_in_slot = db.actor:item_in_slot(activeslot)
- if not (item_in_slot) then return end
-
- local section_name = item_in_slot:section()
- local weight
- if not (ini_sys:section_exist(section_name, "inv_weight")) then return end
-
- weight = ini_sys:r_float_ex(section_name, "inv_weight")
- local body_state = get_body_state()
- local cam_power = 0
- local left_arm = health.rightarm * effects_mult
- left_arm = left_arm >=1 and left_arm or 0.75
- local right_arm = health.leftarm * effects_mult
- right_arm = right_arm >=1 and right_arm or 0.75
- local arms_sum = left_arm + right_arm
- local max_arms_sum = (maxhp.rightarm + maxhp.leftarm) * effects_mult
-
- if arms_sum < (max_arms_sum * (zzz_player_injuries_mcm.get_config("arm_penalty_minimum_hp") * 0.1)) then
- if (left_arm < right_arm / 1.5) or (right_arm < left_arm / 1.5) then
- cam_power = 1.15 * weight / arms_sum
- cam_power = (body_state == "crouch") and (0.8 * weight / arms_sum) or cam_power
- cam_power = (body_state == "low_crouch") and (0.4 * weight / arms_sum) or cam_power
- else
- cam_power = 0.8 * weight / arms_sum
- cam_power = (body_state == "crouch") and (0.55 * weight / arms_sum) or cam_power
- cam_power = (body_state == "low_crouch") and (0.3 * weight / arms_sum) or cam_power
- end
-
- cam_power = clamp(cam_power, 0, 3)
- cam_power = cam_power * (zzz_player_injuries_mcm.get_config("arm_animation_power"))
- local cam_power_scope = cam_power * 0.2
- if item_in_slot:weapon_is_scope() then
- cam_power = cam_power_scope
- end
- -- play anm
- level.add_cam_effector("camera_effects\\" .. aim_anm[math.random(#aim_anm)] .. ".anm", 9921, true, "", 0, true, cam_power)
- end
- -- news_manager.send_tip(db.actor, r(cam_power), 0, nil, 1500)
-
-end
-
-function shaking_hands_remove()
- level.remove_cam_effector(9921)
-end
-
-function limp_speed_slow()
-
- if not (NEW_LIMB_PENALTIES_FEATURE) then return end
-
- local legs_summ = (health.leftleg + health.rightleg) * effects_mult
- local run_coef = 1
- local sprint_coef = 1
- local run_coef = 0.0625 * legs_summ + 0.375
- local sprint_coef = 0.0625 * legs_summ + 0.375
- local real_sprint_coef = 0.025 * legs_summ + 0.75
- speed.add_speed("bhs_speed_run", run_coef, false, true)
--- speed.add_speed("bhs_speed_runback", run_coef, false, true)
- speed.add_speed("bhs_speed_sprint", real_sprint_coef, true, true)
-
--- local vec = db.actor:get_movement_speed()
--- local ms = (vec.x)^2 + (vec.y)^2 + (vec.z)^2
--- news_manager.send_tip(db.actor, r(ms), 0, nil, 1500)
-
-end
-
-local leftleg_flag = false
-local rightleg_flag = false
-local bothlegs_flag = false
-
-function legs_limp()
-
- if not (NEW_LIMB_PENALTIES_FEATURE) then return end
-
- local right_l = health.leftleg * effects_mult -- right is left
- local left_l = health.rightleg * effects_mult
- local legs_sum = left_l + right_l
- local max_right_l = maxhp.leftleg * effects_mult * (zzz_player_injuries_mcm.get_config("leg_penalty_minimum_hp") * 0.2)
- local max_left_l = maxhp.rightleg * effects_mult * (zzz_player_injuries_mcm.get_config("leg_penalty_minimum_hp") * 0.2)
- local max_legs_sum = max_left_l + max_right_l
-
- if (right_l == left_l) and (legs_sum < max_legs_sum) then
- bothlegs_flag = true
- leftleg_flag, rightleg_flag = false
- -- printf("bothlegs_flag = true")
- elseif (left_l < max_left_l) and (left_l < right_l) then
- leftleg_flag = true
- rightleg_flag, bothlegs_flag = false
- -- printf("leftleg_flag = true")
- elseif (right_l < max_right_l) and (right_l < left_l) then
- rightleg_flag = true
- leftleg_flag, bothlegs_flag = false
- -- printf("rightleg_flag = true")
- elseif (legs_sum >= max_legs_sum) then
- leftleg_flag, rightleg_flag, bothlegs_flag = false
- -- printf("ALL = false")
- end
-
-end
-
-function torso_penalty()
-
- if not (NEW_LIMB_PENALTIES_FEATURE) then return end
-
- local torso_health = health.torso * effects_mult
- local torso_max_hp = maxhp.torso * effects_mult
- torso_health = torso_health > torso_max_hp and torso_max_hp or (health.torso * effects_mult)
- local t_diff = (torso_max_hp - torso_health) / effects_mult
- local t_cap = 1 - t_diff * 0.035
-
- if (t_diff > 0) and (db.actor.health > t_cap) then
- db.actor.health = t_cap
- end
-
-end
-
-local tg_effects_regen = 0
-local tg_effects_regen_delay = 500
-local tg_stage_2_effects = 0
-local tg_stage_2_effects_delay = 15000 -- just in case, duration of ppe is 7250
-
-function bhs_concussion()
-
- if not (NEW_LIMB_PENALTIES_FEATURE) then return end
-
- local tg = time_global()
- local rnd = math.random(1, 100)
- local current = health.head * effects_mult
- if not (head_tbl.previous) then head_tbl.previous = current end
- local previous = head_tbl.previous
- local volume_sound_x = get_console_cmd(2,"snd_volume_eff")
- local volume_sound_x_fade = 0.01
-
- local anm_damage_threshold = 2
- local damage_taken = previous - current
- damage_taken = damage_taken > 0 and damage_taken or 0
-
- local max_head = maxhp.head * effects_mult
- local effector_k = damage_taken / max_head
- local effector_power = effector_k * (zzz_player_injuries_mcm.get_config("head_animation_power"))
-
--- actor_menu.set_msg(1, strformat("head.tbl.volume: %s, console_volume: %s, stage: %s", r(head_tbl.volume), r(get_console_cmd(2,"snd_volume_eff")), r(head_tbl.stage)))
-
- -- removing effects if hp between previous and current yellow or blue (or dead)
- if (previous == current) or (current <= 0) then
- exec_console_cmd("snd_volume_eff " .. head_tbl.volume)
- level.remove_pp_effector(99133)
- head_tbl.stage = 0
- end
-
- -- stage 1
- if (head_tbl.stage == 1) then
- level.add_pp_effector("concussion_bhs.ppe", 99123, false)
- exec_console_cmd("snd_volume_eff " .. volume_sound_x_fade)
- CreateTimeEvent(0, "set_stage_two", 10, set_stage_two)
- end
- -- stage 2 xd
- if (head_tbl.stage == 2) and (tg > tg_stage_2_effects) then
- if (tinnitus_play) then
- local snd = sound_object("bhs\\tinnitusx")
- snd:play_no_feedback(db.actor, sound_object.s2d, 0, VEC_ZERO, 1.0, 1.0)
- snd.volume = effector_k * 3
- tinnitus_play = false
- end
- -- random chance for head shake
- if (damage_taken > anm_damage_threshold) and (rnd <= effector_k * 10) then
- level.add_cam_effector("camera_effects\\wake_up.anm", 96872, false, "", 0, true, effector_power)
- end
- level.add_pp_effector("concussion_post_bhs.ppe", 99133, false)
- tg_stage_2_effects = tg + tg_stage_2_effects_delay
- end
-
- level.set_pp_effector_factor(99123, effector_power)
- level.set_pp_effector_factor(99133, effector_power)
-
- -- regen
- if tg > tg_effects_regen then
- head_tbl.previous = clamp(head_tbl.previous - 0.01, current, head_tbl.previous) -- effector's power decrease: 50 sec for each lost HP
- tg_effects_regen = tg + tg_effects_regen_delay
- end
--- news_manager.send_tip(db.actor, string.format("previous: %s . current: %s", r(head_tbl.previous), r(current)), 0, nil, 1500)
-
-end
-
-function set_stage_two()
- exec_console_cmd("snd_volume_eff " .. head_tbl.volume)
- head_tbl.stage = 2
- tinnitus_play = true
- return true
-end
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-
-
---19 head
---15 - head
---16 - head
---17 - head
-
---13 - upper torso
---12 - middle torso
---11 - lower torso
---2 pelvis
-
---20 left shoulder
---21 left upper arm
---22 left forearm
---23 left hand
-
---33 right shoulder
---34 right upepr arm
---35 right forearm
---36 right hand
-
---3 left upper leg
---4 left lower leg
-
---7 right upeprleg
---8 right lower leg
-
-local hitboxes={}
-hitboxes[19]="head"
-hitboxes[17]="head"
-hitboxes[16]="head"
-hitboxes[15]="head"
-hitboxes[14]="head"
-hitboxes[13]="torso"
-hitboxes[12]="torso"
-hitboxes[11]="torso"
-hitboxes[2]="torso"
-hitboxes[20]="leftarm"
-hitboxes[21]="leftarm"
-hitboxes[22]="leftarm"
-hitboxes[23]="leftarm"
-hitboxes[33]="rightarm"
-hitboxes[34]="rightarm"
-hitboxes[35]="rightarm"
-hitboxes[36]="rightarm"
-hitboxes[3]="leftleg"
-hitboxes[4]="leftleg"
-hitboxes[7]="rightleg"
-hitboxes[8]="rightleg"
-
-local function actor_on_hit_callback(obj, amount, local_direction, who, bone_id)
- printf("! actor got hit in %s", bone_id)
-
- if bone_id == 65535 then -- toxic anomalies and radiation
- bone_id = math.random(1,2)
- if bone_id == 1 then
- bone_id = 19
- else
- bone_id = 13
- end
- end
-
- if bone_id == 0 then -- attributes fall damage to left or right leg
- bone_id = math.random(1,2)
- if bone_id == 1 then
- bone_id = 3
- else
- bone_id = 7
- end
- end
-
- if hitboxes[bone_id] then
- last_damaged_hitbox=hitboxes[bone_id]
- text=hitboxes[bone_id]
- else -- if an unknown bone is hit, arms or torso are hit
- bone_id = math.random(1,3)
- if bone_id == 1 then
- bone_id = 33
- elseif bone_id == 2 then
- bone_id = 23
- elseif bone_id == 3 then
- bone_id = 11
- end
- last_damaged_hitbox=hitboxes[bone_id]
- text=hitboxes[bone_id]
- end
-
- --printf("! actor got hit in %s, id %s",text, bone_id)
-end
-
-local function recieved_damage(amount)
- local index=0
- for k,v in pairs(health) do
- index=index+1
- end
- local random_number=math.random(1,index)
- local choosen_hitbox={}
- -- trace_this("random"..random_number.."\n")
- if random_number==1 then
- choosen_hitbox="head"
- elseif random_number==2 then
- choosen_hitbox="torso"
- elseif random_number==3 then
- choosen_hitbox="leftarm"
- elseif random_number==4 then
- choosen_hitbox="rightarm"
- elseif random_number==5 then
- choosen_hitbox="leftleg"
- elseif random_number==6 then
- choosen_hitbox="rightleg"
- end
- if last_damaged_hitbox then
- choosen_hitbox=last_damaged_hitbox
- last_damaged_hitbox=nil
- end
-
-
- local damage
- damage=math.ceil((amount*100)/11*damagescale)
- local damage_head=math.ceil((amount*2*100)/11*damagescale)
-
-
- if choosen_hitbox=="head" then
- hud_blink_timer.head=time_global()
- health.head=health.head-damage_head
- if health.head<=0 then health.head=0 actor_menu.set_msg(1, "Head fatally damaged!", 8) end
- utils_obj.save_var(db.actor,"health.head",health.head)
- -- xcvb
- if damage_head > (zzz_player_injuries_mcm.get_config("head_penalty_minimum_hp") - 1) then
- head_tbl.stage = 1
- end
- -------
-
- elseif choosen_hitbox=="torso" then
- hud_blink_timer.torso=time_global()
- health.torso=health.torso-damage
- if health.torso<=0 then health.torso=0 actor_menu.set_msg(1, "Torso fatally damaged!", 8) end
- utils_obj.save_var(db.actor,"health.torso",health.torso)
-
- elseif choosen_hitbox=="leftarm" then
- hud_blink_timer.leftarm=time_global()
- health.leftarm=health.leftarm-damage
- if health.leftarm<=0 then health.leftarm=0 actor_menu.set_msg(1, "Right arm damaged!", 8) end
- utils_obj.save_var(db.actor,"health.leftarm",health.leftarm)
-
- elseif choosen_hitbox=="rightarm" then
- hud_blink_timer.rightarm=time_global()
- health.rightarm=health.rightarm-damage
- if health.rightarm<=0 then health.rightarm=0 actor_menu.set_msg(1, "Left arm damaged!", 8) end
- utils_obj.save_var(db.actor,"health.rightarm",health.rightarm)
-
- elseif choosen_hitbox=="leftleg" then
- hud_blink_timer.leftleg=time_global()
- health.leftleg=health.leftleg-damage
- if health.leftleg<=0 then
- if health.rightleg>0 then
- health.leftleg=0 actor_menu.set_msg(1, "Right leg damaged!", 8)
- end
- end
- utils_obj.save_var(db.actor,"health.leftleg",health.leftleg)
-
- elseif choosen_hitbox=="rightleg" then
- hud_blink_timer.rightleg=time_global()
- health.rightleg=health.rightleg-damage
- if health.rightleg<=0 then
- if health.leftleg>0 then
- health.rightleg=0 actor_menu.set_msg(1, "Left leg damaged!", 8)
- end
- end
- utils_obj.save_var(db.actor,"health.rightleg",health.rightleg)
-
- end
- timeregen=time_global()
-end
-local progress_stamina=nil
-local progress_health=nil
-local progress_health_head=nil
-local progress_health_torso=nil
-local progress_health_rightarm=nil
-local progress_health_leftarm=nil
-local progress_health_rightleg=nil
-local progress_health_leftleg=nil
-
-
-local progress_health_head_time=nil
-local progress_health_torso_time=nil
-local progress_health_rightarm_time=nil
-local progress_health_leftarm_time=nil
-local progress_health_rightleg_time=nil
-local progress_health_leftleg_time=nil
-
-local scuffed_fix = false
-local function HUDUpdate()
- if showtexthud>=1 then --text
- local staticname="body_health_system_text"
- if showtexthud==1 then
- staticname="body_health_system_text"
- elseif showtexthud==2 then
- staticname="cop_debug"
- end
- local hud = get_hud()
- local hud_d = hud:GetCustomStatic(staticname)
- local wnd
-
- if not healthstatus or show_hud_type~=2 then --not show
- if (hud_d ~= nil) then
- hud:RemoveCustomStatic(staticname)
- hud_d = nil
- end
- return
- end
-
- if (hud_d == nil) then
- hud:AddCustomStatic(staticname,true)
- hud_d = hud:GetCustomStatic(staticname)
- wnd = hud_d:wnd()
- if (wnd ~= nil) then
- wnd:SetAutoDelete(true)
- end
- end
-
- if (hud_d ~= nil) then
- wnd = hud_d:wnd()
- local str=""
- if hud_vertical_spacing or hud_vertical_spacing>0 then
- for i=1,hud_vertical_spacing do
- str=str.." \\n"
- end
- end
-
- local showparts=true
- if hide_if_healthy then
- showparts=false
- for k,v in pairs(health) do
- if (v0) then
- showparts=true
- break
- end
- end
- end
- if not showparts then
- str=str.." \\n".." \\n".." \\n".." \\n"
- end
- if show_player_name then
- str=str..colors.grey..db.actor:character_name().."\\n"
- else
- str=str.." \\n"
- end
-
- local function AddToHUDCircles(array,text,class,array2)
- if class=="main" and showparts then
- str = str..colors[GetConditionFromFloat(health[array]/maxhp[array],array)]
- for i=1,(preview.health[array] or health[array])-(preview.bonus[array] or timedhp[array]) do
- str=str.."•"
- end
- str=str..colors.good
- for i=1,(preview.bonus[array] or timedhp[array]) do
- str=str.."•"
- end
- str=str..colors.blank
- for i=1,maxhp[array]-(preview.health[array] or health[array]) do
- str=str.."•"
- end
- local whatcolor="grey"
- if health[array]<=4 then whatcolor="critical" end
- if health[array]==0 then whatcolor="blank" end
- -- local hp_addition=preview.health[array]
- -- if hp_addition>0 then
- -- text=text..colors.blue.." +"..hp_addition
- -- end
- -- local green_addition=preview.bonus[array]
- -- if green_addition>0 then
- -- text=text..colors.good.." +"..green_addition
- -- end
- str=str..colors[whatcolor].." // "..text.."\\n"--.." H:"..health[array].." T:"..timedhp[array].." PH:"..preview.health[array].." PB:"..preview.bonus[array].."\\n"
- end
- if not (zzz_player_injuries_mcm.get_config("TEXT_BASED_PATCH")) then
- if class=="condition" then
- local hp_in_ints=math.floor(db.actor.health*11)
- str = str..colors.blue
- if db.actor.health>=1.0 then hp_in_ints=11 end
- if db.actor.health<=0.0 then hp_in_ints=0 end
- for i=1,hp_in_ints do
- str=str.."•"
- end
- str=str..colors.blank
- for i=1,11-hp_in_ints do
- str=str.."•"
- end
- local whatcolor="grey"
- if db.actor.health<=0.4 then whatcolor="critical" end
- if db.actor.health<=0 then whatcolor="blank" end
- str=str..colors[whatcolor].." // "..text.."\\n"
- elseif class=="stamina" then
- local hp_in_ints=math.floor(db.actor.power*11)
- str = str..colors.blue
- if db.actor.power>=1.0 then hp_in_ints=11 end
- if db.actor.power>0.98 then hp_in_ints=11 end
- if db.actor.power<=0.0 then hp_in_ints=0 end
- for i=1,hp_in_ints do
- str=str.."•"
- end
- str=str..colors.blank
- for i=1,11-hp_in_ints do
- str=str.."•"
- end
- local whatcolor="grey"
- -- if db.actor.power<=0.4 then whatcolor="critical" end
- -- if db.actor.power<=0 then whatcolor="blank" end
- str=str..colors[whatcolor].." // "..text.."\\n"
- end
- end
- if class=="limbs" and showparts then
- str = str..colors[GetConditionFromFloat(health[array]/maxhp[array],array)]
- for i=1,(preview.health[array] or health[array])-(preview.bonus[array] or timedhp[array]) do
- str=str.."•"
- end
- str=str..colors.good
- for i=1,(preview.bonus[array] or timedhp[array]) do
- str=str.."•"
- end
- str=str..colors.blank
- for i=1,maxhp[array]-(preview.health[array] or health[array]) do
- str=str.."•"
- end
- str=str.." "
- if (preview.health[array2] or health[array2])0 then
- -- text=text..colors.blue.." +"..hp_addition
- -- end
- -- local green_addition=preview.bonus[array]
- -- if green_addition>0 then
- -- text=text..colors.good.." +"..green_addition
- -- end
- str=str..colors[whatcolor].." // "..text.."\\n"--.." H[1]:"..health[array].." T[1]:"..timedhp[array].." PH[1]:"..preview.health[array].." PB[1]:"..preview.bonus[array].." H[2]:"..health[array2].." T[2]:"..timedhp[array2].." PH[2]:"..preview.health[array2].." PB[2]:"..preview.bonus[array2].."\\n"
- end
- end
-
- local preview_show=false
- for k,v in pairs(preview.health) do
- if preview.health[k] then
- preview_show=true
- break
- end
- end
- for k,v in pairs(preview.bonus) do
- if preview.bonus[k] then
- preview_show=true
- break
- end
- end
-
- AddToHUDCircles("head","Head","main")
- AddToHUDCircles("torso","Torso","main")
- AddToHUDCircles("leftarm","Arms","limbs","rightarm")
- AddToHUDCircles("leftleg","Legs","limbs","rightleg")
- if not (zzz_player_injuries_mcm.get_config("TEXT_BASED_PATCH")) then
- AddToHUDCircles(nil,"Condition","condition")
- AddToHUDCircles(nil,"Stamina","stamina")
- end
-
- local green = math.floor(255 * ((100 - 100)/100))
- local red = math.floor(255 * (100/100))
- wnd:TextControl():SetTextST(str)
- wnd:TextControl():SetTextColor(GetARGB(255, 255, 255, 255))
-
-
- local hud = get_hud()
- if not (hud) then
- return
- end
- end
- else --pics
- local staticname="body_health_system"
- if display.types[display_ratio] then
- if display_ratio~=169 then
- staticname=staticname.."_"..tostring(display_ratio)
- end
- end
- local hud = get_hud()
- local hud_d = hud:GetCustomStatic(staticname)
- local wnd
-
- if not healthstatus or show_hud_type~=2 then --not show
- if (hud_d ~= nil) then
- hud:RemoveCustomStatic(staticname)
- hud_d = nil
- end
- goto otherhudparts
- end
-
- if (hud_d == nil) then
- hud:AddCustomStatic(staticname,true)
- hud_d = hud:GetCustomStatic(staticname)
- wnd = hud_d:wnd()
- if (wnd ~= nil) then
- wnd:SetAutoDelete(true)
- end
- end
-
- if (hud_d ~= nil) then
- wnd = hud_d:wnd()
-
-
- local hud = get_hud()
- if not (hud) then
- return
- end
- end
-
- ::otherhudparts::
-
- local function ParamBar(barhandler,customstatic,barname,param,param_max,showbg)
-
- ---- minimal bgs ----
- local staticname
- if showbg then
- staticname=customstatic.."_bg"
- else
- staticname="bhs_garbage"
- end
- if display.types[display_ratio] then
- if display_ratio~=169 then
- staticname=staticname.."_"..tostring(display_ratio)
- end
- end
- local hud = get_hud()
- local hud_d = hud:GetCustomStatic(staticname)
- local wnd
-
- if not healthstatus or show_hud_type~=1 or (not showbg) then --not show
- if (hud_d ~= nil) then
- hud:RemoveCustomStatic(staticname)
- hud_d = nil
- end
- else
- if (hud_d == nil) then
- hud:AddCustomStatic(staticname,true)
- hud_d = hud:GetCustomStatic(staticname)
- wnd = hud_d:wnd()
- if (wnd ~= nil) then
- wnd:SetAutoDelete(true)
- end
- end
-
- if (hud_d ~= nil) then
- wnd = hud_d:wnd()
-
- local hud = get_hud()
- if not (hud) then
- goto progressbars
- end
- end
-
- end
- -------------------
- ::progressbars::
-
- if display.types[display_ratio] then
- if display_ratio~=169 then
- customstatic=customstatic.."_"..tostring(display_ratio)
- barname=barname.."_"..tostring(display_ratio)
- end
- end
-
- local cs_name = hud:GetCustomStatic(customstatic)
- if (cs_name == nil) then
- if not (scuffed_fix) then
- hud:AddCustomStatic(customstatic, true)
- local xml = CScriptXmlInit()
- xml:ParseFile("ui_body_health.xml")
- cs_name = hud:GetCustomStatic(customstatic)
- local w = cs_name:wnd()
- barhandler = xml:InitProgressBar(barname, w)
- barhandler:Show(true)
- barhandler:SetProgressPos(55)
- scuffed_fix = true
- CreateTimeEvent("bvcx", "bvcx", disable_hud_fps_fix_tmr, worst_possible_fix)
- end
- else
- if not param_max then --default 0 to 100
- param=param*100
- if not param then param=0 end
- barhandler:SetProgressPos(param)
- else
- param=param*100/param_max
- if not param then param=0 end
- barhandler:SetProgressPos(param)
- end
- end
- if show_hud_type<1 or (time_global()-show_hud_change_time<50) then --not show
- if (cs_name ~= nil) then
- hud:RemoveCustomStatic(customstatic)
- cs_name = nil
- end
- -- barhandler:Show(false)
- -- else
- -- barhandler:Show(true)
- end
- return barhandler
- end
-
- --- green bkg lines equials health -----
- progress_health_head_time=ParamBar(progress_health_head_time,"bhs_health_head_bar_green","bhs_health_bodypart_green", preview.health.head or health.head,maxhp.head,false)
- progress_health_torso_time=ParamBar(progress_health_torso_time,"bhs_health_torso_bar_green","bhs_health_bodypart_green", preview.health.torso or health.torso,maxhp.torso,false)
- progress_health_rightarm_time=ParamBar(progress_health_rightarm_time,"bhs_health_rightarm_bar_green","bhs_health_bodypart_green", preview.health.rightarm or health.rightarm,maxhp.rightarm,false)
- progress_health_leftarm_time=ParamBar(progress_health_leftarm_time,"bhs_health_leftarm_bar_green","bhs_health_bodypart_green", preview.health.leftarm or health.leftarm,maxhp.leftarm,false)
- progress_health_rightleg_time=ParamBar(progress_health_rightleg_time,"bhs_health_rightleg_bar_green","bhs_health_bodypart_green", preview.health.rightleg or health.rightleg,maxhp.rightleg,false)
- progress_health_leftleg_time=ParamBar(progress_health_leftleg_time,"bhs_health_leftleg_bar_green","bhs_health_bodypart_green", preview.health.leftleg or health.leftleg,maxhp.leftleg,false)
- -----------------------------
-
- --- blue bkg health equals heals-timedhp -----
- if not (zzz_player_injuries_mcm.get_config("TEXT_BASED_PATCH")) then
- progress_stamina=ParamBar(progress_stamina,"bhs_stamina_bar","bhs_stamina",db.actor.power,nil,true)
- end
- progress_health=ParamBar(progress_health,"bhs_health_bar","bhs_health",db.actor.health,nil,true)
-
- local function nil_math(array)
- local arg=health[array]-timedhp[array]
- if preview.health[array] or preview.bonus[array] then
- arg=(preview.health[array] or 0)-(preview.bonus[array] or 0)
- end
- return arg
- end
-
- progress_health_head=ParamBar(progress_health_head,"bhs_health_head_bar","bhs_health_bodypart", nil_math("head"),maxhp.head,true)
- progress_health_torso=ParamBar(progress_health_torso,"bhs_health_torso_bar","bhs_health_bodypart", nil_math("torso"),maxhp.torso,true)
- progress_health_rightarm=ParamBar(progress_health_rightarm,"bhs_health_rightarm_bar","bhs_health_bodypart", nil_math("rightarm"),maxhp.rightarm,true)
- progress_health_leftarm=ParamBar(progress_health_leftarm,"bhs_health_leftarm_bar","bhs_health_bodypart", nil_math("leftarm"),maxhp.leftarm,true)
- progress_health_rightleg=ParamBar(progress_health_rightleg,"bhs_health_rightleg_bar","bhs_health_bodypart", nil_math("rightleg"),maxhp.rightleg,true)
- progress_health_leftleg=ParamBar(progress_health_leftleg,"bhs_health_leftleg_bar","bhs_health_bodypart", nil_math("leftleg"),maxhp.leftleg,true)
- -------------------------------------
- end
-end
-
-function worst_possible_fix()
- scuffed_fix = false
- return true
-end
-
-local function on_key_press(dik)
- if dik == DIK_keys.DIK_H then
- -- if healthstatus then
- -- healthstatus=false
- -- xr_sound.set_sound_play(db.actor:id(), "pda_tips")
- -- else
- -- healthstatus=true
- -- staticplacement=lazyworkaroundplacement
- -- xr_sound.set_sound_play(db.actor:id(), "pda_alarm")
- -- end
- if showtexthud>0 then
- healthstatus=not healthstatus
- else
- if show_hud_type==0 then show_hud_type=1 show_hud_change_time=time_global()
- elseif show_hud_type==1 then show_hud_type=2 show_hud_change_time=time_global()
- elseif show_hud_type==2 then show_hud_type=0 show_hud_change_time=time_global()
- end
- end
- xr_sound.set_sound_play(db.actor:id(), "pda_tips")
- HUDUpdate()
- -- elseif dik==DIK_keys.DIK_J then
- -- health.rightarm=health.rightarm-1
- -- elseif dik==DIK_keys.DIK_K then
- -- health.leftarm=health.leftarm-1
- -- db.actor:give_game_news("resolution", tostring(options) or "nil", db.actor:character_icon(), 0, 10000)
- -- xr_sound.set_sound_play(db.actor:id(), "pda_tips")
- end
-end
-
---====== xcvb ================================================
-
- local function actor_on_weapon_zoom_in(wpn)
- shaking_hands()
-end
-
- local function actor_on_weapon_zoom_out(wpn)
- shaking_hands_remove()
- end
-
-local tg_anm = 0
-local delay_anm_play = 500
-
-cooldown = 2500
-state_cooldown = 0
-local function actor_on_footstep(material,power,hud_view,flags)
-
- if not (NEW_LIMB_PENALTIES_FEATURE) then return end
-
- local tg = time_global()
- local right_l = health.leftleg * effects_mult -- right is left
- local left_l = health.rightleg * effects_mult
- if right_l < 1 then right_l = 0.8 end -- exp will still make big difference between 1 and 0.8
- if left_l < 1 then left_l = 0.8 end
- local legs_sum = (right_l + left_l) * effects_mult
- local left_limp = math.exp(1.5/left_l) --
- local right_limp = math.exp(1.5/right_l)
- local both_limp = (right_limp + left_limp) / 2
- local mst = IsMoveState('mcSprint') -- sprint is tearing animations apart, the only way is to increase delay for it
-
- if tg > tg_anm then
- if leftleg_flag then
- if not mst then
- level.add_cam_effector("camera_effects\\switch\\" .. leftleg_anm[math.random(#leftleg_anm)] .. ".anm", 99251, false, "", 0, false, ((left_limp - 1) * (zzz_player_injuries_mcm.get_config("leg_animation_power"))) )
- tg_anm = tg + delay_anm_play end
- -- actor_menu.set_msg(1, strformat("Left leg HP: %s | Left leg Power: %s", left_l, left_limp))
- elseif rightleg_flag then
- if not mst then
- level.add_cam_effector("camera_effects\\switch\\" .. rightleg_anm[math.random(#rightleg_anm)] .. ".anm", 99261, false, "", 0, false, ((right_limp - 1) * (zzz_player_injuries_mcm.get_config("leg_animation_power"))) )
- tg_anm = tg + delay_anm_play end
- -- actor_menu.set_msg(1, strformat("Right leg HP: %s | Right leg Power: %s", right_l, right_limp))
- elseif bothlegs_flag then
- level.add_cam_effector("camera_effects\\switch\\" .. bothlegs_anm[math.random(#bothlegs_anm)] .. ".anm", 99271, false, "", 0, false, ((both_limp - 1) * (zzz_player_injuries_mcm.get_config("leg_animation_power"))) )
- if not mst then tg_anm = tg + delay_anm_play
- else tg_anm = tg + delay_anm_play * 1.6 end
- -- actor_menu.set_msg(1, strformat("Both legs HP: %s | Both legs Power: %s", legs_sum, both_limp))
- end
- end
-
- local l_leg_power = 0
- local r_leg_power = 0
- local hit_power = 0
- local cr = IsMoveState('mcCrouch')
- local low_cr = cr and IsMoveState('mcAccel')
-
- if mst then -- comment this and uncomment next one for super memes !!
--- if (not (cr or low_cr) ) and (left_l < 1 or right_l < 1) then
- if left_l <= (zzz_player_injuries_mcm.get_config("leg_limping_damage_minimum_hp")) then
- l_leg_power = 0.0290
- end
-
- if right_l <= (zzz_player_injuries_mcm.get_config("leg_limping_damage_minimum_hp")) then
- r_leg_power = 0.0290
- end
-
- hit_power = (l_leg_power + r_leg_power) / 2
-
- -- printf("hit_power: " .. (hit_power))
- local file
- local sound_play = math.random(1,100)
- if (hit_power > 0) and (state_cooldown < time_global()) and (sound_play <= 13) then
- if zzz_player_injuries_mcm.get_config("new_voice_sounds") then
- local helmet = (db.actor:item_in_slot(12) or db.actor:get_current_outfit())
- if helmet then
- muffle = "m_"
- else
- muffle = ""
- end
- file = "bhs\\" .. muffle .. "pain_" .. sound_play
- else
- file = "actor\\pain_" .. sound_play
- end
-
- file_to_say = sound_object( file )
- file_to_say:play(db.actor,0,sound_object.s2d)
-
- level.add_pp_effector("blur_bhs.ppe", math.random(655808, 655820), false)
-
- state_cooldown = time_global() + cooldown
-
- actor_health = db.actor.health
- actor_health_reduced = actor_health - hit_power
- db.actor:set_health_ex(actor_health_reduced)
- end
- end
-
-
-end
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
-
-local function actor_on_sleep(hours)
- for k,v in pairs(timedhp) do
- health[k]=health[k]-timedhp[k]
- if health[k]=="head" or health[k]=="torso" and health[k]<=0 then health[k]=1 end
- timedhp[k]=0
- end
- local hoursleft=hours
- local head_difference=maxhp.head-health.head
- if head_difference>0 then
- if hoursleft>head_difference then
- health.head=maxhp.head
- hoursleft=hoursleft-head_difference
- utils_obj.save_var(db.actor,"health.head",health.head)
- else
- health.head=health.head+hoursleft
- utils_obj.save_var(db.actor,"health.head",health.head)
- return
- end
- end
- local torso_difference=maxhp.torso-health.torso
- if torso_difference>0 then
- if hoursleft>torso_difference then
- health.torso=maxhp.torso
- hoursleft=hoursleft-torso_difference
- utils_obj.save_var(db.actor,"health.torso",health.torso)
- else
- health.torso=health.torso+hoursleft
- utils_obj.save_var(db.actor,"health.torso",health.torso)
- return
- end
- end
- local rightarm_difference=maxhp.rightarm-health.rightarm
- if rightarm_difference>0 then
- if hoursleft>rightarm_difference then
- health.rightarm=maxhp.rightarm
- hoursleft=hoursleft-rightarm_difference
- utils_obj.save_var(db.actor,"health.rightarm",health.rightarm)
- else
- health.rightarm=health.rightarm+hoursleft
- utils_obj.save_var(db.actor,"health.rightarm",health.rightarm)
- return
- end
- end
- local leftarm_difference=maxhp.leftarm-health.leftarm
- if leftarm_difference>0 then
- if hoursleft>leftarm_difference then
- health.leftarm=maxhp.leftarm
- hoursleft=hoursleft-leftarm_difference
- utils_obj.save_var(db.actor,"health.leftarm",health.leftarm)
- else
- health.leftarm=health.leftarm+hoursleft
- utils_obj.save_var(db.actor,"health.leftarm",health.leftarm)
- return
- end
- end
- local rightleg_difference=maxhp.rightleg-health.rightleg
- if rightleg_difference>0 then
- if hoursleft>rightleg_difference then
- health.rightleg=maxhp.rightleg
- hoursleft=hoursleft-rightleg_difference
- utils_obj.save_var(db.actor,"health.rightleg",health.rightleg)
- else
- health.rightleg=health.rightleg+hoursleft
- utils_obj.save_var(db.actor,"health.rightleg",health.rightleg)
- return
- end
- end
- local leftleg_difference=maxhp.leftleg-health.leftleg
- if leftleg_difference>0 then
- if hoursleft>leftleg_difference then
- health.leftleg=maxhp.leftleg
- hoursleft=hoursleft-leftleg_difference
- utils_obj.save_var(db.actor,"health.leftleg",health.leftleg)
- else
- health.leftleg=health.leftleg+hoursleft
- utils_obj.save_var(db.actor,"health.leftleg",health.leftleg)
- return
- end
- end
-end
-
-local is_body_parts_damaged = false
-local function check_body_parts()
- local head_difference = maxhp.head - health.head
- local torso_difference = maxhp.torso - health.torso
- local rightarm_difference = maxhp.rightarm - health.rightarm
- local leftarm_difference = maxhp.leftarm - health.leftarm
- local rightleg_difference = maxhp.rightleg - health.rightleg
- local leftleg_difference = maxhp.leftleg - health.leftleg
-
- is_body_parts_damaged = false
-
- if (head_difference > 0 or torso_difference > 0 or rightarm_difference > 0 or leftarm_difference > 0 or rightleg_difference > 0 or leftleg_difference > 0) then
- is_body_parts_damaged = true
- end
-end
-
-old_is_actor_not_healthy = dialogs.is_actor_not_healthy
-function dialogs.is_actor_not_healthy(first_speaker, second_speaker)
- check_body_parts()
-
- if (is_body_parts_damaged == true) then
- return true
- end
-
- return old_is_actor_not_healthy(first_speaker, second_speaker)
-end
-
-old_is_actor_injured = dialogs.is_actor_injured
-function dialogs.is_actor_injured(first_speaker, second_speaker)
- check_body_parts()
-
- if (is_body_parts_damaged == true) and (db.actor:money() >= 1850) then
- return true
- end
-
- return old_is_actor_injured(first_speaker, second_speaker)
-end
-
-old_is_actor_injured_irradiated = dialogs.is_actor_injured_irradiated
-function dialogs.is_actor_injured_irradiated(first_speaker, second_speaker)
- check_body_parts()
-
- if (is_body_parts_damaged == true) and (db.actor.radiation > 0) and (db.actor:money() >= 3350) then
- return true
- end
-
- return old_is_actor_injured_irradiated(first_speaker, second_speaker)
-end
-
-local function heal_body_parts()
- timedhp.head = 0
- health.head = maxhp.head
-
- timedhp.torso = 0
- health.torso = maxhp.torso
-
- timedhp.rightarm = 0
- health.rightarm = maxhp.rightarm
-
- timedhp.leftarm = 0
- health.leftarm = maxhp.leftarm
-
- timedhp.rightleg = 0
- health.rightleg=maxhp.rightleg
-
- timedhp.leftleg = 0
- health.leftleg=maxhp.leftleg
-
- SaveHealthStatus()
-end
-
-old_heal_actor_injury_radiation = dialogs.heal_actor_injury_radiation
-function dialogs.heal_actor_injury_radiation(first_speaker, second_speaker)
- old_heal_actor_injury_radiation(first_speaker, second_speaker)
-
- check_body_parts()
-
- if (is_body_parts_damaged == true) then
- heal_body_parts()
- end
-end
-
-old_heal_actor_injury = dialogs.heal_actor_injury
-function dialogs.heal_actor_injury(first_speaker, second_speaker)
- old_heal_actor_injury(first_speaker, second_speaker)
-
- check_body_parts()
-
- if (is_body_parts_damaged == true) then
- heal_body_parts()
- end
-end
-
-function actor_on_update()
- --actor_menu.set_msg("width:"..device().width.." height:"..device().height)
-
- local newhealth=db.actor.health
- local amount=myhealth-newhealth
- if amount>0.0293 then
- recieved_damage(amount)
- --printf("! %s",amount
- -- trace_this("Amount"..amount.."\n")
- end
-
-
- myhealth=db.actor.health
- for k,v in pairs(health) do
- if v>maxhp[k] then health[k]=maxhp[k] end
- if v<=0 then health[k]=0 end
- if health[k]maxhp[k] then preview.health[k]=maxhp[k] end
- if v<=0 then preview.health[k]=0 end
- if preview.health[k]medkits.timedhealth then
- medkits.lastregen=time_global()
- for k,v in pairs(timedhp) do
- if v>0 then
- timedhp[k]=timedhp[k]-1
- health[k]=health[k]-1
- end
- if v<0 then
- timedhp[k]=0
- end
- end
- SaveHealthStatus()
- end
- if regen>0 and init then
-
- if time_global()-timeregen>regen then
- if health.head~=maxhp.head then health.head=health.head+1 end
- if health.torso~=maxhp.torso then health.torso=health.torso+1 end
- if health.rightarm~=maxhp.rightarm then health.rightarm=health.rightarm+1 end
- if health.leftarm~=maxhp.leftarm then health.leftarm=health.leftarm+1 end
- if health.rightleg~=maxhp.rightleg then health.rightleg=health.rightleg+1 end
- if health.leftleg~=maxhp.leftleg then health.leftleg=health.leftleg+1 end
- SaveHealthStatus()
- timeregen=time_global()
- end
- end
- if not init then
-
- display_width=device().width
- display_height=device().height
- local currentratio=display_width/display_height
-
- local closest=999
- local closestkey=999
- for k,v in pairs(display.types) do
- local d=math.abs(currentratio-v)
- if d 3) then
- prev_time = curr_time
- legs_limp()
- end
- ----------------------------
- HUDUpdate()
- PartialDamage()
-end
-
-local function actor_on_before_death()
- HUDUpdate()
- health.head=maxhp.head
- health.torso=maxhp.torso
- health.rightarm=maxhp.rightarm
- health.leftarm=maxhp.leftarm
- health.rightleg=maxhp.rightleg
- health.leftleg=maxhp.leftleg
- timedhp.head=0
- timedhp.torso=0
- timedhp.rightarm=0
- timedhp.leftarm=0
- timedhp.rightleg=0
- timedhp.leftleg=0
- SaveHealthStatus()
-end
-
--- base_notify = actor_menu.set_notification
-
--- function actor_menu.set_notification(typ, texture, tm, snd)
- -- base_notify(typ, texture, tm, snd)
- -- local hud = get_hud()
- -- if(hud) then
- -- cs = hud:GetCustomStatic("notify_icon")
- -- pos = cs:wnd():GetWndPos()
- -- pos.x = 8
- -- pos.y = 600
- -- cs:wnd():SetWndPos(pos)
- -- end
--- end
-
--- how's it going?
-local function MedicineUsed(name,health,timedhp)
- local ret_lastregen,ret_timedhealth=medkits.lastregen,medkits.timedhealth
- if medkits[name] then
- ret_lastregen=time_global()
- ret_timedhealth=medkits[name].timeregen
- for k,v in pairs(timedhp) do
- local bonus=medkits[name][k]
- if bonus then
- if medkits[name].harming then
- health[k]=health[k]+bonus
- timedhp[k]=v+bonus
- else
- if health[k]+bonus>maxhp[k] then
- local amounttoheal=maxhp[k]-health[k]
- health[k]=health[k]+amounttoheal
- timedhp[k]=v+amounttoheal
- else
- health[k]=health[k]+bonus
- timedhp[k]=v+bonus
- end
- end
- end
- end
- end
- if healhelp[name] then
- for k,v in pairs(timedhp) do
- if healhelp[name][k] then
- timedhp[k]=timedhp[k]-healhelp[name][k]
- if timedhp[k]<0 then timedhp[k]=0 end
- end
- end
- end
- return ret_lastregen,ret_timedhealth
-end
-
-local function actor_on_item_use(obj,objname)
- if healingitems then
- medkits.lastregen,medkits.timedhealth=MedicineUsed(objname,health,timedhp)
- end
-
- SaveHealthStatus()
-end
-
-local function InitializePreviewBars()
- -- db.actor:give_game_news("init", "yes", db.actor:character_icon(), 0, 10000)
- -- xr_sound.set_sound_play(db.actor:id(), "pda_tips")
- preview.health.head=health.head
- preview.health.torso=health.torso
- preview.health.rightarm=health.rightarm
- preview.health.leftarm=health.leftarm
- preview.health.rightleg=health.rightleg
- preview.health.leftleg=health.leftleg
-
- preview.bonus.head=timedhp.head
- preview.bonus.torso=timedhp.torso
- preview.bonus.rightarm=timedhp.rightarm
- preview.bonus.leftarm=timedhp.leftarm
- preview.bonus.rightleg=timedhp.rightleg
- preview.bonus.leftleg=timedhp.leftleg
-end
-local function EmptyPreviewBars()
- -- db.actor:give_game_news("empty", "yes", db.actor:character_icon(), 0, 10000)
- -- xr_sound.set_sound_play(db.actor:id(), "pda_tips")
- for k,v in pairs(preview.health) do
- preview.health[k]=nil
- end
- for k,v in pairs(preview.bonus) do
- preview.bonus[k]=nil
- end
-end
-
-local focused_item
-
-local function copy_table(t)
- local n={}
- for k,v in pairs(t) do
- if type(v)=='table' then
- n[k]=copy_table(v)
- else
- n[k]=v
- end
- end
- return n
-end
-
-local function ActorMenu_on_item_focus_receive(item)
-
- if item:id()~=focused_item then
- EmptyPreviewBars()
- end
- local item_name=item:section()
- focused_item=item:id()
- if medkits[item_name] or healhelp[item_name] then
- -- InitializePreviewBars()
- preview.health=copy_table(health)
- preview.bonus=copy_table(timedhp)
- MedicineUsed(item_name,preview.health,preview.bonus)
- end
-
- -- if medkits[item_name] then
- -- for med_k,med_v in pairs(medkits[item_name]) do
- -- local health_v=health[med_k]
- -- local hitbox=med_k
- -- if health_v~=nil then --this hitbox would be greened
- -- local totalgreen=medkits[item_name][hitbox]
- -- local emptyhealth=maxhp[hitbox]-health_v
- -- if emptyhealth>totalgreen then --difference
- -- preview.health[hitbox]=health[hitbox]+totalgreen
- -- if medkits[item_name].harming then
- -- preview.bonus[hitbox]=timedhp[hitbox]+totalgreen
- -- else
- -- preview.bonus[hitbox]=timedhp[hitbox]+emptyhealth
- -- end
- -- else
- -- local remaininggreen=emptyhealth-totalgreen -- hd4-tg7=3
- -- preview.health[hitbox]=maxhp[hitbox]
- -- if medkits[item_name].harming then
- -- preview.bonus[hitbox]=timedhp[hitbox]+totalgreen
- -- else
- -- preview.bonus[hitbox]=timedhp[hitbox]+emptyhealth
- -- end
- -- end
-
- -- end
- -- end
- -- end
- -- if healhelp[item_name] then
- -- for med_k,med_v in pairs(healhelp[item_name]) do
- -- local timedhp_v=timedhp[med_k]
- -- local hitbox=med_k
- -- if timedhp_v~=nil then --this hitbox would be blued
- -- local total_green_to_blue=healhelp[item_name][hitbox]
- -- local need_to_transform=timedhp[hitbox]
- -- if need_to_transformmaxhp[k] then
- -- preview.health[k]=maxhp[k]
- -- end
- -- end
- -- for k,v in pairs(preview.bonus) do
- -- if v<0 then
- -- preview.bonus[k]=0
- -- elseif v>maxhp[k] then
- -- preview.bonus[k]=maxhp[k]
- -- end
- -- end
- -- -- end
-end
-
-local function ActorMenu_on_item_focus_lost(item)
- --printf("! on item forus lost "..(item and item:section() or "nil"))
- if focused_item==item:id() then
- EmptyPreviewBars()
- focused_item=nil
- end
-end
-
-local function ActorMenu_on_mode_changed(mode,last_mode)
- if last_mode==1 then --inv closed
- EmptyPreviewBars()
- focused_item=nil
- elseif last_mode==4 then --looting closed
- EmptyPreviewBars()
- focused_item=nil
- end
-end
-
--- local function npc_on_hit_callback(npc,amount,local_direction,who,bone_index)
- -- local npc_name=npc:character_name() or "nil"
- -- local npc_icon=npc:character_icon() or "nil"
- -- local amount
- -- local attacker_name
- -- if who and who:id() == db.actor:id() then
- -- local wherehit
- -- -- if type(bone_index)=="number" then
- -- -- if bone_index == 14 or bone_index == 15 then
- -- -- wherehit = "Eyes"
- -- -- elseif bone_index == 16 or bone_index == 13 then
- -- -- wherehit = "Head"
- -- -- elseif bone_index == 17 then
- -- -- wherehit = "Neck"
- -- -- elseif bone_index == 9 or bone_index == 10 or bone_index == 11 or bone_index == 18 then
- -- -- wherehit = "Torso"
- -- -- elseif bone_index >= 1 and bone_index <= 4 then
- -- -- wherehit = "Left Leg"
- -- -- elseif bone_index >= 5 and bone_index <= 8 then
- -- -- wherehit = "Right Leg"
- -- -- elseif bone_index >= 19 and bone_index <=30 then
- -- -- wherehit = "Left Arm"
- -- -- elseif bone_index >= 31 and bone_index <=42 then
- -- -- wherehit = "Right Arm"
- -- -- end
- -- -- end
- -- if not wherehit then wherehit=bone_index end
- -- db.actor:give_game_news("npc_on_hit_callback", "name: "..npc_name.." where:"..wherehit, npc_icon , 0, 10000)
- -- xr_sound.set_sound_play(db.actor:id(), "pda_tips")
- -- end
--- end
-
-function on_game_start()
- RegisterScriptCallback("on_option_change", on_option_change) -- xcvb
- RegisterScriptCallback("actor_on_first_update",actor_on_first_update) -- xcvb
- RegisterScriptCallback("on_key_press",on_key_press)
- RegisterScriptCallback("save_state",save_state) -- xcvb
- RegisterScriptCallback("load_state",load_state) -- xcvb
- RegisterScriptCallback("actor_on_weapon_zoom_in",actor_on_weapon_zoom_in) -- xcvb
- RegisterScriptCallback("actor_on_weapon_zoom_out",actor_on_weapon_zoom_out) -- xcvb
- RegisterScriptCallback("actor_on_footstep",actor_on_footstep) -- xcvb
- RegisterScriptCallback("actor_on_sleep",actor_on_sleep)
- RegisterScriptCallback("actor_on_hit_callback",actor_on_hit_callback)
- RegisterScriptCallback("actor_on_update",actor_on_update)
- RegisterScriptCallback("actor_on_before_death",actor_on_before_death)
- RegisterScriptCallback("actor_on_item_use",actor_on_item_use)
- RegisterScriptCallback("ActorMenu_on_item_focus_receive",ActorMenu_on_item_focus_receive)
- RegisterScriptCallback("ActorMenu_on_item_focus_lost",ActorMenu_on_item_focus_lost)
- RegisterScriptCallback("ActorMenu_on_mode_changed",ActorMenu_on_mode_changed)
-
- --RegisterScriptCallback("npc_on_hit_callback", npc_on_hit_callback)
-end
\ No newline at end of file
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/scripts/zzz_player_injuries_mcm.script b/mods/[DEV] Groks Body Health System Redux/gamedata/scripts/zzz_player_injuries_mcm.script
deleted file mode 100644
index 55ae8ca6..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/scripts/zzz_player_injuries_mcm.script
+++ /dev/null
@@ -1,36 +0,0 @@
--- If you don't use MCM, change your defaults from here.
-local defaults = {
- ["TEXT_BASED_PATCH"] = false,
- ["NEW_LIMB_PENALTIES_FEATURE"] = true,
- ["new_voice_sounds"] = true,
- ["leg_penalty_minimum_hp"] = 5,
- ["leg_limping_damage_minimum_hp"] = 3,
- ["leg_animation_power"] = 1.0,
- ["arm_penalty_minimum_hp"] = 10,
- ["arm_animation_power"] = 1.0,
- ["head_penalty_minimum_hp"] = 2,
- ["head_animation_power"] = 1.0,
-}
-
-function get_config(key)
- if ui_mcm then return ui_mcm.get("body_health_system/"..key) else return defaults[key] end
-end
-
-function on_mcm_load()
- op = { id= "body_health_system",sh=true ,gr={
- { id= "title",type= "slide",link= "ui_options_slider_player",text="ui_mcm_body_health_system_title",size= {512,50},spacing= 20 },
- {id = "TEXT_BASED_PATCH", type = "check", val = 1, def = false},
- {id = "NEW_LIMB_PENALTIES_FEATURE", type = "check", val = 1, def = true},
- {id = "new_voice_sounds", type = "check", val = 1, def = true},
- {id = "leg_penalty_minimum_hp", type = "track", val = 2, min=1,max=5,step=1, def = 5},
- {id = "leg_limping_damage_minimum_hp", type = "track", val = 2, min=-1,max=4,step=1, def = 3},
- {id = "leg_animation_power", type = "track", val = 2, min=0.1,max=2,step=0.1, def = 1},
- {id = "arm_penalty_minimum_hp", type = "track", val = 2, min=1,max=10,step=1, def = 10},
- {id = "arm_animation_power", type = "track", val = 2, min=0.1,max=2,step=0.1, def = 1},
- {id = "head_penalty_minimum_hp", type = "track", val = 2, min=1,max=10,step=1, def = 2},
- {id = "head_animation_power", type = "track", val = 2, min=0.1,max=2,step=0.1, def = 1},
- }
- }
-
- return op
-end
\ No newline at end of file
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_1.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_1.ogg
deleted file mode 100644
index f52bf202..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_1.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8fde28397da896446b25b81aba863260b01b5b7d5d034a9095957dbcc3d4d490
-size 5815
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_10.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_10.ogg
deleted file mode 100644
index df3e9a79..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_10.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0ffa626920a45540aeef21724aa094c2a48d05ad8acca308bd405e410ff19b03
-size 8752
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_11.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_11.ogg
deleted file mode 100644
index c6a9de70..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_11.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f3092fe6f68bf054a737169897f2d0cacd40c59e921fa9f299a2137b2e22ff68
-size 5681
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_12.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_12.ogg
deleted file mode 100644
index 5bfb8447..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_12.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b5895bbbb8fed9836b6cd4bf9d72bff2238d7e210420c135c36f8bd6dcb9d97c
-size 6731
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_13.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_13.ogg
deleted file mode 100644
index 6742079d..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_13.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c459914690f18b125fcad61d3043e48d9d9c082ae16bc83630ea5e3457d2ba68
-size 12652
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_2.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_2.ogg
deleted file mode 100644
index e4d5480c..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_2.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e5b298d0dc6356b08b851aac984a4905c12f499a4dd5a0c565a5c50d32e96e93
-size 6313
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_3.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_3.ogg
deleted file mode 100644
index ff37ac3f..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_3.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9899986b970b178aa49dbd0c52007a6f9af4c040307f313d6b7e6798df19c46d
-size 6545
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_4.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_4.ogg
deleted file mode 100644
index 256f71bb..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_4.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2b8f3d737808c2697d8cd406f0a7d33566e9b74f17b38e193d7732a3b08baa11
-size 7306
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_5.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_5.ogg
deleted file mode 100644
index ee8318ff..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_5.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a2511b901bbabb2807eafddaf9eb85e220087e4b39a092f22b88c5b3fabb656f
-size 7222
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_6.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_6.ogg
deleted file mode 100644
index 6f48b40e..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_6.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1fdcca9a78be7b9442b4ac8609ad7f67cd22cab2acc380bcc87df696644f9d6d
-size 8225
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_7.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_7.ogg
deleted file mode 100644
index 2a09658f..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_7.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fe4675dafad4e7fff111331fc4a47e1936ce44cb2772aa4a00951c45649a29ef
-size 8745
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_8.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_8.ogg
deleted file mode 100644
index 22ab1f95..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_8.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e1af0c09549b7e3236cf5cfc4a6f2c1f02d8489c1a8b39b3833c955e33da2c9b
-size 11884
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_9.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_9.ogg
deleted file mode 100644
index c5b6ea7c..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/m_pain_9.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6eceeb0b269137ecbccb37f51041df01d2b0cde83cf32430cfa1da809a2914ea
-size 7968
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_1.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_1.ogg
deleted file mode 100644
index bcef58b2..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_1.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8391023563e132094fb2611e239e4737b3c17ed4baaae27ee0906eebe76f6911
-size 8220
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_10.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_10.ogg
deleted file mode 100644
index 903fb959..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_10.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8fbe6952919aac1158ceac50425c66d4b6004013e75dfff05ecce8be6d0b0882
-size 14099
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_11.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_11.ogg
deleted file mode 100644
index 2837a2bf..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_11.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:bb6c7f4358cc68048dfa96fcff0e5a750c4702ca05809bdd8bb5c67daf99fb28
-size 8229
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_12.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_12.ogg
deleted file mode 100644
index 91a3c277..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_12.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:addbb3c066f5762b3ff7c47a0496452dc898635bfddd10e6461bfbb46b157507
-size 9920
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_13.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_13.ogg
deleted file mode 100644
index 0f0727ba..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_13.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:954967d29c3a68ad0c35a28b68adac4d1382a61e766606d3871aa4dee7c937ff
-size 22287
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_2.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_2.ogg
deleted file mode 100644
index 0aa4c65a..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_2.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f2fe33968af528a3ced9f763cc43bcb6e00bbe8cb7b02ff689a4c94c5c2ebb97
-size 9582
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_3.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_3.ogg
deleted file mode 100644
index 195cd3e4..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_3.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6a05bbab2d120684617787c87dd187516ad68fbea60e431ea8397e00817b92ae
-size 9551
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_4.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_4.ogg
deleted file mode 100644
index 8374fb3c..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_4.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:670757646e004779205e26d5131605efdde1eac908682f30585ce3d0de78541e
-size 11040
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_5.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_5.ogg
deleted file mode 100644
index eccad29d..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_5.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:26ea33c198ecffc6197a326541fceb04be2cc4c9134aa13d107801aa9921a000
-size 9890
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_6.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_6.ogg
deleted file mode 100644
index 895ebe26..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_6.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5b52e6acc2ac268d15747bb5c6d132b129abbcf22ef61a8f672933c7dd6c69cd
-size 13224
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_7.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_7.ogg
deleted file mode 100644
index 57d73ccd..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_7.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:07f96213ef9c3fbc5736d70728ebdd91246d366aae9ef3905d726c68a7277f26
-size 13774
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_8.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_8.ogg
deleted file mode 100644
index f1e12c0b..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_8.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cc946508c610e488b03d68996cd2045bfaca8c484e9895dd672f100a939d0070
-size 19915
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_9.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_9.ogg
deleted file mode 100644
index a9fbc6f0..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/pain_9.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d243aa541bc7327e34581792922d27f65ac9a52bf5da809b6a53c4c4f65b4c38
-size 12015
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/tinnitusx.ogg b/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/tinnitusx.ogg
deleted file mode 100644
index b2d50925..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/sounds/bhs/tinnitusx.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d5b36e62bac8deee1a51f5076e6f12c225f8dbdf370b616ec30254184bb0df65
-size 140281
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/textures/ui/ui_actor_hint_wnd.dds b/mods/[DEV] Groks Body Health System Redux/gamedata/textures/ui/ui_actor_hint_wnd.dds
deleted file mode 100644
index f39b4ed8..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/textures/ui/ui_actor_hint_wnd.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f39188129b40d2fcd5c5c167321750bcfe6cac1133c6eb9e2ffacf38a7326dcd
-size 2097280
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/textures/ui/ui_actor_hint_wnd.thm b/mods/[DEV] Groks Body Health System Redux/gamedata/textures/ui/ui_actor_hint_wnd.thm
deleted file mode 100644
index 355670ff..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/textures/ui/ui_actor_hint_wnd.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f93ae8aa2fe2554cc93a5e3829cd8dc88a4a7f59b2e592a63467e788bb8009a2
-size 138
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/textures/ui/ui_body_health_system.dds b/mods/[DEV] Groks Body Health System Redux/gamedata/textures/ui/ui_body_health_system.dds
deleted file mode 100644
index 48890079..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/textures/ui/ui_body_health_system.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:60bd3d20d28e274196c820b9656e5dfc56a0063474653fd7b2d46b8b9eb1f35f
-size 65664
diff --git a/mods/[DEV] Groks Body Health System Redux/gamedata/textures/ui/ui_body_health_system3.dds b/mods/[DEV] Groks Body Health System Redux/gamedata/textures/ui/ui_body_health_system3.dds
deleted file mode 100644
index bab9c07a..00000000
--- a/mods/[DEV] Groks Body Health System Redux/gamedata/textures/ui/ui_body_health_system3.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9d93e3298d307abe2e7ce58a7bece24f84947b9d5d3a7bc264fef667d9f8da50
-size 1048704
diff --git a/mods/[DEV] Groks Body Health System Redux/meta.ini b/mods/[DEV] Groks Body Health System Redux/meta.ini
deleted file mode 100644
index b25b9d08..00000000
--- a/mods/[DEV] Groks Body Health System Redux/meta.ini
+++ /dev/null
@@ -1,28 +0,0 @@
-[General]
-gameName=stalkeranomaly
-modid=0
-version=2.0.2.0
-newestVersion=
-category="18,"
-nexusFileStatus=1
-installationFile=2.0.2_Groks_Body_Health_System_Redux.zip
-repository=
-ignoredVersion=
-comments=
-notes=
-nexusDescription=
-url=https://www.moddb.com/mods/stalker-anomaly/addons/100-groks-body-health-system-redux-for-151
-hasCustomURL=true
-lastNexusQuery=
-lastNexusUpdate=
-nexusLastModified=2024-03-10T03:36:30Z
-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] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/act/act_scientist.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/act/act_scientist.dds
deleted file mode 100644
index 8c9f651b..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/act/act_scientist.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ec428af430424a312d51be0759d9c5690ced2c816647f08efa0cab7a3cf0a968
-size 1398256
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/act/act_scientist_bump#.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/act/act_scientist_bump#.dds
deleted file mode 100644
index 7ad90de0..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/act/act_scientist_bump#.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3d4f396e91d7eea723509f2b504d1100e6c6f6c18d83be0006716a39eec22973
-size 1398256
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/act/act_scientist_bump.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/act/act_scientist_bump.dds
deleted file mode 100644
index 49d4c416..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/act/act_scientist_bump.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e1a67af974590fb5b3a328bee398e58585c1296a6ab627972aab780ea11d14d0
-size 1398256
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/act/act_scientist_head1.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/act/act_scientist_head1.dds
deleted file mode 100644
index d2fc1c0f..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/act/act_scientist_head1.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4f19482cbbc97955f51d587e65310eaa0b72738d1683eca32d2b4e112c8a5974
-size 174904
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/act/act_scientist_head1_bump#.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/act/act_scientist_head1_bump#.dds
deleted file mode 100644
index 7a856cdd..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/act/act_scientist_head1_bump#.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ebbaf6973aa3e8bb4076689dac437f9c06b4a7ad3c62cb2e59674c17c518069d
-size 349680
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/act/act_scientist_head1_bump.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/act/act_scientist_head1_bump.dds
deleted file mode 100644
index 120bc62a..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/act/act_scientist_head1_bump.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:86368f85172a7d7a7153cf5743bc88d18086de448cce2fbb3b8cb8d94400d23a
-size 349680
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/controller/controller_blood_01.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/controller/controller_blood_01.dds
deleted file mode 100644
index e89212fd..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/controller/controller_blood_01.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8e0fb7cfb1f4e48d02fb106c92a5fbad3eab95d553e3367fb39dc49beed67199
-size 349680
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/decal/decal_monolith_sign.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/decal/decal_monolith_sign.dds
deleted file mode 100644
index 8a024c8b..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/decal/decal_monolith_sign.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e05cb4be4de4fde62889751d748453e583835f39a439815bfaf0258761ae2412
-size 22000
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/door/door_kotelna.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/door/door_kotelna.dds
deleted file mode 100644
index a97bbf06..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/door/door_kotelna.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:14ce93685982787dba457b5bdcf77919d5636787088c383939a249a95ff1a9c4
-size 262272
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/door/door_rusty_iron_0.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/door/door_rusty_iron_0.dds
deleted file mode 100644
index 050e1e6a..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/door/door_rusty_iron_0.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:85213cdaa67b37dac47ccc05c1a9cbcab3fd79d0c47f2c1c68ae1d41f7c3ee70
-size 262272
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_rain.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_rain.dds
deleted file mode 100644
index 0b4ad31a..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_rain.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fb2b4579d1ce12e0f5763f583212b35c9df37e99b6de44d20529ca798311e496
-size 16512
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_rainsplash1.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_rainsplash1.dds
deleted file mode 100644
index d8727564..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_rainsplash1.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f1619c0f288f59c7004bbc23aec491cb8621d99d1ab7d904ff52cc97cfcff869
-size 16512
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker.dds
deleted file mode 100644
index 75226d13..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:dbb613b7c319af006d2eeef20c095ceb21e35b4cfda5a3e520cb68e9be76717e
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker.ogm_cheg b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker.ogm_cheg
deleted file mode 100644
index 86a32151..00000000
Binary files a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker.ogm_cheg and /dev/null differ
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker.seq b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker.seq
deleted file mode 100644
index 7c367c6e..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker.seq
+++ /dev/null
@@ -1,31 +0,0 @@
-5
-fx\fx_stalker_001.tga
-fx\fx_stalker_002.tga
-fx\fx_stalker_003.tga
-fx\fx_stalker_004.tga
-fx\fx_stalker_005.tga
-fx\fx_stalker_006.tga
-fx\fx_stalker_007.tga
-fx\fx_stalker_008.tga
-fx\fx_stalker_009.tga
-fx\fx_stalker_010.tga
-fx\fx_stalker_011.tga
-fx\fx_stalker_012.tga
-fx\fx_stalker_013.tga
-fx\fx_stalker_014.tga
-fx\fx_stalker_015.tga
-fx\fx_stalker_016.tga
-fx\fx_stalker_017.tga
-fx\fx_stalker_018.tga
-fx\fx_stalker_019.tga
-fx\fx_stalker_020.tga
-fx\fx_stalker_021.tga
-fx\fx_stalker_022.tga
-fx\fx_stalker_023.tga
-fx\fx_stalker_024.tga
-fx\fx_stalker_025.tga
-fx\fx_stalker_026.tga
-fx\fx_stalker_027.tga
-fx\fx_stalker_028.tga
-fx\fx_stalker_029.tga
-fx\fx_stalker_030.tga
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_001.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_001.dds
deleted file mode 100644
index 70b058ba..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_001.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:854b8ad358ed5be76ccb6328b9bb5396e39d2de9db3fe2e5f186375e950d4923
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_002.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_002.dds
deleted file mode 100644
index 395d42be..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_002.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d655df9dbc20c9be52706d0660a34772ba5c8f33595078b8c274372646f18920
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_003.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_003.dds
deleted file mode 100644
index 1a6788d8..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_003.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fb4745e4703f42cb4c52e7064850b9e3023ef7221c5597dbad7fe7ced92ea32b
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_004.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_004.dds
deleted file mode 100644
index e58bd0b5..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_004.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9c4b0b8cf899c36757647ff02358bb53e4c909248f1c5b9db3b2274966e32dad
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_005.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_005.dds
deleted file mode 100644
index 5a48bad7..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_005.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:accb5650d7512847e288477df8112c782c88e94ae89ad495f34ab4681a27a479
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_006.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_006.dds
deleted file mode 100644
index 06c74d74..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_006.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:54adec484c559bd26a8d1a01bfec1c8fc65d0131b803ece214e4be372d7fed00
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_007.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_007.dds
deleted file mode 100644
index 19e10141..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_007.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e8cd6e0515fae6be91167674949318b943d8533f35dcc594db99e07604725e5f
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_008.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_008.dds
deleted file mode 100644
index 0d60a01d..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_008.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a8e01df3eb259130fbbb087d15e6373f028c8257ce49deb21ec561256b12f4bb
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_009.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_009.dds
deleted file mode 100644
index 68ea2fb7..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_009.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:42155320ef3ae1419fabb97eec873b70746613e6a7cce0028efe2b65f978e97c
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_010.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_010.dds
deleted file mode 100644
index 5b97e50d..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_010.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:79f8c4a520537baca1f07615bb9d6c8dc34f1abceee657c27cdacaddec912063
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_011.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_011.dds
deleted file mode 100644
index 8c258908..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_011.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:26bfd39ea8484b3d8020651c4d0cb120eb11a6bb12b1dabde481895beac1ddc3
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_012.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_012.dds
deleted file mode 100644
index 075afd76..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_012.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8e077fd71289dc57f8dc6655b8ea2ee86d1c2e065cf1a21a2fe580a4b7b8cd52
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_013.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_013.dds
deleted file mode 100644
index a14f17ba..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_013.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3d851b06ba2358ca875de8ed386e3c4732035816921b85c750227f1f40dbd4b0
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_014.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_014.dds
deleted file mode 100644
index 092b7a76..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_014.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1aafccba94adc890f43a794cd8a26ab37c49aef9a755d83c8683d4e6847cb2d3
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_015.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_015.dds
deleted file mode 100644
index 515997c9..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_015.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:79d5b07b34b868584e443e4ea039984bdd59c8fbd1a8447eda5f53a56efda0d1
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_016.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_016.dds
deleted file mode 100644
index 3c7913b4..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_016.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7c52f0b25a178551ae4b79d0b0f8d8457a2bf35477c19b62dd2a6f89a3c3c969
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_017.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_017.dds
deleted file mode 100644
index e198da44..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_017.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cac71be7f175ff6d13719a00c08320ee4e1f935c98706b967bf877697a468bdb
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_018.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_018.dds
deleted file mode 100644
index 6e230a30..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_018.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9a83c13e0014b4ab34c3792279cff4f927e537807f8e4a3998d8227311b0831d
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_019.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_019.dds
deleted file mode 100644
index 3d4cbf76..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_019.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:edd694ec1d9aab6da3d7c8050ae7e6afe579aee58e5255ad20a9c94434e8b86e
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_020.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_020.dds
deleted file mode 100644
index eff4a835..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_020.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:249f618025d53e9f04cae7629cb878cb84d3837d098dcdb36a48897979d03220
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_021.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_021.dds
deleted file mode 100644
index ab391e41..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_021.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7e417bd67dacfb836051784a4f9b234a9160b3493a55e8e5d3d0292ee6da30c1
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_022.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_022.dds
deleted file mode 100644
index 4b09df26..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_022.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b8d62a9254f290a66c8d048edd42a2a05982d91aefa834fa59d5cfb309bad156
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_023.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_023.dds
deleted file mode 100644
index 8b3fd976..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_023.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1dd0dd413a958b9a2ae7d454dd28294d40a80c9673e7f5bea1da7a2e57c2bdb7
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_024.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_024.dds
deleted file mode 100644
index f7f96443..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_024.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:456326f98fdc7aa93b4fd61d7de5cf48a0c79eb55126e4dcd6ebdbe0277fc5d9
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_025.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_025.dds
deleted file mode 100644
index 1725d872..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_025.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5323778027f5c81c9181aa4506489b00276fa87808c00f7a5fff0413848d5287
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_026.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_026.dds
deleted file mode 100644
index 066da8c6..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_026.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:778930f207f8e9d1d10c2569c584b5563e3571c865cafdbff8263abc20697bb1
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_027.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_027.dds
deleted file mode 100644
index 9059a9ff..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_027.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:320e8b886aa0f3396734a960a99ff369d360a8f1d43554cbd755010da2eae7dc
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_028.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_028.dds
deleted file mode 100644
index c476bf17..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_028.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b1624f43d4259350289fe1eca324f97b41637705891739acdb784a29f533ab7a
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_029.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_029.dds
deleted file mode 100644
index df3944bd..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_029.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1bc4fe2cea77b5cbee147c1408750ac111dd56a9d61b58a72eeb38fd376afac2
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_030.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_030.dds
deleted file mode 100644
index 57b31aae..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/fx/fx_stalker_030.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3275cb36b53c5ff7be1c7d09dcd35476dd7e1ba907c634a859a087fca3351b69
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_3.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_3.dds
deleted file mode 100644
index ef8f71ff..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_3.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2f2c6f5cde6f921fe94afbc7375319f3beba4b82f17dbbcd3cc2a8da912eeba5
-size 174904
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_delo.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_delo.dds
deleted file mode 100644
index c843db47..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_delo.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0294bdfb6cee0b6089c94f1363effc3f31cbc15d7644d06ba628607a49dda8e5
-size 174904
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_1.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_1.dds
deleted file mode 100644
index 91741f77..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_1.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ca54153ce7f3b11d74ec8b7bee613b859a36954a49434eac02d539cd993d046e
-size 349680
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_1.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_1.thm
deleted file mode 100644
index c147a7d7..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_1.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:321f2a254c94c324bdc7e8536c49435778155912fbabb8c657f9c0871ce12059
-size 163
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_1_bump#.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_1_bump#.dds
deleted file mode 100644
index 2a5a3a46..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_1_bump#.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5ab69c556b6f6b8bc1b83d1644b7666483716b8d4e7fc5d4645a7d9146730479
-size 349680
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_1_bump.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_1_bump.dds
deleted file mode 100644
index e43fbc27..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_1_bump.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a24b056554169ba3ea76eb0e2661a2f9d299b749d06b62d42d120c415dc278e0
-size 349680
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_1_bump.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_1_bump.thm
deleted file mode 100644
index 92c9a69a..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_1_bump.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:18dd11dc9dc2f5f50a9546ac001c55ca59fd5ffc5889f7e5c295ee3782abc8e6
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_2.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_2.dds
deleted file mode 100644
index d158142a..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_2.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7ed1e8b50b6d82910a5cfce5851713e4f19d0c5ea55c55c99321bed05c8fefe7
-size 349680
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_2.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_2.thm
deleted file mode 100644
index 77d2f468..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_2.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:dfa50b89ec6272f5846138ad9d506c248aeb3cfe55f9d9b620158c1303e712e5
-size 163
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_2_bump#.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_2_bump#.dds
deleted file mode 100644
index 48d7e854..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_2_bump#.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a76a5a4a0c9ce715c580e6dc165f0790a5f7b8578d682ea9d4502e1297ab325e
-size 349680
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_2_bump.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_2_bump.dds
deleted file mode 100644
index 4bfb2993..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_2_bump.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f395aaef8214c7548324ad324e1cd9e5b950d9419207e83c2881bec1da441e4a
-size 349680
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_2_bump.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_2_bump.thm
deleted file mode 100644
index 81e7e979..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_2_bump.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a1a5fc7ef73e68d934a4f61eae5627fe94be6732fbf606a6a9e48afedeb2877b
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_2_segment.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_2_segment.dds
deleted file mode 100644
index 649392ee..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_2_segment.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:969da6008655d766e469efed16049d1df06291415763cecce6a8605b559d810a
-size 87536
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_3.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_3.dds
deleted file mode 100644
index 49343e3d..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_3.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:eb1a0dc287571361dc44acdc8d88e003a793daaad08b79bfc4a67f13e9a6628a
-size 174904
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_3.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_3.thm
deleted file mode 100644
index fb99c2e3..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_3.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:16f9e1d194f3c0090b62ef23ed9b708244b9835dfe6e9561840e351e6f568566
-size 163
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_3_bump#.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_3_bump#.dds
deleted file mode 100644
index fbd9f5c1..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_3_bump#.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0124a5cd2d0563a1636a929515bc54b240b57189856378500220b5a26b712e75
-size 349680
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_3_bump.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_3_bump.dds
deleted file mode 100644
index 00b0a4b7..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_3_bump.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6f5b814464e8c812f83fb7446efe7ecbaf99cccdc8313c6ad160febc13589ca1
-size 349680
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_3_bump.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_3_bump.thm
deleted file mode 100644
index 674aa151..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_3_bump.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b343b3f1db388b598a3acf9374e81a50693dc37f8e9d652ffb2ba9b7991b6fc1
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_4.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_4.dds
deleted file mode 100644
index 293bc3bc..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_4.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:accd053f80e8bd1f2f19c0a33ccfdc5cf6127a6a4afdbc4a0c2180ed56c73376
-size 174904
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_4.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_4.thm
deleted file mode 100644
index fb99c2e3..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_detector_4.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:16f9e1d194f3c0090b62ef23ed9b708244b9835dfe6e9561840e351e6f568566
-size 163
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_dipl.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_dipl.dds
deleted file mode 100644
index 5bf7e05e..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_dipl.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:07dd840efa2bfd9bfba2c1ec4c6ace4d7ec7c460f87ee922d851c54166d68733
-size 174904
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_document_01.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_document_01.dds
deleted file mode 100644
index ae3067a6..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_document_01.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9ce88156e794c878cc8730d87b9ca2b32fdc01ffb401feb7f65eda9f221189ec
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_document_01.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_document_01.thm
deleted file mode 100644
index 5e80f23f..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_document_01.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fec1790faab58ccc601536354687b9acf2710780052ca5727023077da6d699c1
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_drink_bump#.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_drink_bump#.dds
deleted file mode 100644
index adf3210b..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_drink_bump#.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9e88209e706aaa8adf579b1f82b99e6127c5db62b0796d6c9dbe4703addd8c58
-size 87536
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_drink_bump.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_drink_bump.dds
deleted file mode 100644
index cfa4cda4..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_drink_bump.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:70c277eafd035fc5d4e1c1e3ebdf2b633e9afae90846eba2a0a261493ad79419
-size 87536
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_drink_nonstop.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_drink_nonstop.dds
deleted file mode 100644
index 6d972d01..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_drink_nonstop.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:40a267cd1fa30a6ccb634240c78acba7bdf3ac11e03705e3643643a57d4c38c3
-size 87536
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_drink_nonstop_old.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_drink_nonstop_old.dds
deleted file mode 100644
index 1999c459..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_drink_nonstop_old.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:85812078bfa98410d14cec20058b5b9c630ffab04eea8812cff0feba9b4f9fca
-size 87536
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_drink_stalker.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_drink_stalker.dds
deleted file mode 100644
index c8aa7335..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_drink_stalker.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:84e0df4bde1a7908e609a99f2671432dacd8f5451f5c01417bdef34456fba7da
-size 87536
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_drink_stalker_old.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_drink_stalker_old.dds
deleted file mode 100644
index c563c4f7..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_drink_stalker_old.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:90d70010837302da3a0d4aefefd15a0ac6f052f71d7a0a635cab7191b103491e
-size 87536
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_energy.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_energy.dds
deleted file mode 100644
index e6f421b6..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_energy.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ba90518aee1e3b4524fa6aeb16775eb9464e7ad7a84ec1d5449eb384b064132e
-size 262272
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_energy.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_energy.thm
deleted file mode 100644
index eccbb74d..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_energy.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:96eabf7198c8da2f2ce87525e2e72dc6db9894bf67ba28f17d649c5410d62005
-size 158
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_food.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_food.dds
deleted file mode 100644
index f0606183..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_food.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6bc6a30467c38f4387d4f29c7b63975ea2dd7e30b41f63c780025df655655a5a
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_foto1.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_foto1.dds
deleted file mode 100644
index bba23211..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_foto1.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f800e0a207c313e5248fa396ddc5e5a7af5bf0c460de9ca561e7e33bbba7e18b
-size 174904
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_foto1.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_foto1.thm
deleted file mode 100644
index 411155e0..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_foto1.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f08a81d508473598b9d05d875662588658fde86b7e9e1ef1fa7da325232964ae
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_foto2.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_foto2.dds
deleted file mode 100644
index fa836fa7..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_foto2.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0c7af586cdf6c7c19d28605243d9923c2d937b4d24d0012c733877a8f6c02e63
-size 174904
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_gazmask1.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_gazmask1.dds
deleted file mode 100644
index ca0d6481..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_gazmask1.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5240d1b055d542f71416e70f99c5e6cbbd9a654fec9f5cea309a0dc5bc0100d4
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_gazmask3.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_gazmask3.dds
deleted file mode 100644
index 583f906b..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_gazmask3.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:35a549d0e0e85f1d04bb98a2a3a9ff9bfc16214d2c3d9cf3e839e422c49ec3a4
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_guitar.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_guitar.dds
deleted file mode 100644
index a0b918dd..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_guitar.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:145eb6f9ad54f4e46204398a2be9c7c9282801c30916f8641c57bb980b8b83d8
-size 174904
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_guitar.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_guitar.thm
deleted file mode 100644
index 296d6788..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_guitar.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:06f505c459b58d9a98c91491fdcf7ade3bbb85d4f2b24632a0b927880c1b7d1d
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_kanyaka.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_kanyaka.dds
deleted file mode 100644
index 3934f55a..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_kanyaka.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0d8c5a23e74a0c4564e8702a958e58f083fdf026598876ed9d7f18ab42de32ee
-size 21992
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_medkit.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_medkit.dds
deleted file mode 100644
index 24e7c368..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_medkit.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:702d32b05b183bfd48479191f95276a6e7edbd47719a173a21910c95ae389047
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_medkit.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_medkit.thm
deleted file mode 100644
index 5e80f23f..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_medkit.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fec1790faab58ccc601536354687b9acf2710780052ca5727023077da6d699c1
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_medkit_2.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_medkit_2.dds
deleted file mode 100644
index a9427964..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_medkit_2.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:449e8f2b49171bf22b031599fe4dfd2465bcfbfdb50cc0b0a5c60337c2e056d7
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_medkit_2.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_medkit_2.thm
deleted file mode 100644
index 5e80f23f..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_medkit_2.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fec1790faab58ccc601536354687b9acf2710780052ca5727023077da6d699c1
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_medkit_3.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_medkit_3.dds
deleted file mode 100644
index 31c2bdcf..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_medkit_3.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:186a57edf9c8cc3fe0889659a634e3ab1a668cb8757ca90d37a36b29589e2ed9
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_medkit_3.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_medkit_3.thm
deleted file mode 100644
index 5e80f23f..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_medkit_3.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fec1790faab58ccc601536354687b9acf2710780052ca5727023077da6d699c1
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_mks10.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_mks10.dds
deleted file mode 100644
index 532c2625..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_mks10.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ca2971a9db69f9074735437b13eb777b54d227dde5e5422ba67ee245a739f2a7
-size 174904
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_samopal.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_samopal.dds
deleted file mode 100644
index 2968b45a..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_samopal.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:da45fec303c8b776e0d587e638f815ddfba2ff30a1aff58aed8ceee9080224c7
-size 87536
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_ustroystva.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_ustroystva.dds
deleted file mode 100644
index 65fbbea5..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_ustroystva.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b379daf45da782cb1481ec91f5c3085337ccd76a8536ee3ac694ab614b4c64d5
-size 174904
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_ustroystva.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_ustroystva.thm
deleted file mode 100644
index 296d6788..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_ustroystva.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:06f505c459b58d9a98c91491fdcf7ade3bbb85d4f2b24632a0b927880c1b7d1d
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_x_files.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_x_files.dds
deleted file mode 100644
index 53b476f8..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_x_files.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5f3f8f83bea04a849b9910237b3061401b7166df6749210d26512d6e05665aaa
-size 174904
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_x_files.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_x_files.thm
deleted file mode 100644
index 296d6788..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/item/item_x_files.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:06f505c459b58d9a98c91491fdcf7ade3bbb85d4f2b24632a0b927880c1b7d1d
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/logoGSC.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/logoGSC.dds
deleted file mode 100644
index 177d4aa1..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/logoGSC.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:998c2998577c5d4ee30824bb0cdf94ef8d935a4239ed3fa2004a6ae1de8c1b3c
-size 28112
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/logoINC.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/logoINC.dds
deleted file mode 100644
index 49b406df..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/logoINC.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:29057261b84e79835ab41b005490b815e527086978c3e6d39d7bc39478d85ad1
-size 28112
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/logoMODDB.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/logoMODDB.dds
deleted file mode 100644
index 04a9e334..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/logoMODDB.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:069665324507c2f4ebba32ccc88352a275ec92fceece94aa34b0f196c53dd8da
-size 28112
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/logoSTALKER.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/logoSTALKER.dds
deleted file mode 100644
index 28d60542..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/logoSTALKER.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ef2619ed9e436576da71d305d287396b2fc46436e4bdee7112e8ac2defc6cd24
-size 146048
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/logo_AMCM.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/logo_AMCM.dds
deleted file mode 100644
index 1d9bdcb5..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/logo_AMCM.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c2a499b7639ce135499ce535e2c1422b6996875a93c144c1e217feb160c3af2a
-size 63632
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/logo_GSCWorld.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/logo_GSCWorld.dds
deleted file mode 100644
index b150e98e..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/logo_GSCWorld.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b949f755d8368f743433cbe6888c3bfeac48d733b4414e939aafa6047e6f6377
-size 28112
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_agit.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_agit.dds
deleted file mode 100644
index 25f364af..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_agit.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:84fb6f0a2aeecba1dae2e875ef640a6b065a3c2f59748d912d5e60712b708f20
-size 1048704
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_bar_logo.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_bar_logo.dds
deleted file mode 100644
index 3a08fec3..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_bar_logo.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9dbdd08174fc7df3371d6858b247db29954e2c1060c24ca1039f70560206a92e
-size 87528
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_bar_logo.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_bar_logo.thm
deleted file mode 100644
index 488b582f..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_bar_logo.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9365730abd41876f25cd4525400d0ea7325918e9fdc655af734937cb6c2df790
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_carpet.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_carpet.dds
deleted file mode 100644
index fdcd4f6a..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_carpet.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1dde61bcbbd9df1cc39c1e56aeaa1f1386479c8233366bece101eac4ace13f26
-size 349680
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_carpet.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_carpet.thm
deleted file mode 100644
index 71524319..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_carpet.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1fe1110ca8b47d639c4405cdd7fdd3de5af6a5a026d63e05d521a8a3f886c524
-size 184
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_code_1.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_code_1.dds
deleted file mode 100644
index 940bd6f1..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_code_1.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f2ad66b1890122329f47aec4c098e5dcf8833fabb745a1dd928f5c9010286ad4
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_dangerbox.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_dangerbox.dds
deleted file mode 100644
index f10f521d..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_dangerbox.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3cb0a7afcad75d913f6df7fbfb9700212afe237c8042d10beeb4c4ef1a4c1aa7
-size 174904
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_dangerbox.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_dangerbox.thm
deleted file mode 100644
index ee6f60d9..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_dangerbox.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c80e1cc522864e2f322903ab8094ba0cb9d8201175a4219c99c0fb01d8988324
-size 187
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_dolg.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_dolg.dds
deleted file mode 100644
index 97715ba3..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_dolg.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cef791e7efad3686fe057a265bcbe5e71bbee682946a4b6d2d38098691d6f5d7
-size 16512
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_dolg_gerb.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_dolg_gerb.dds
deleted file mode 100644
index e94bae89..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_dolg_gerb.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:64fac78459e2c01b7b9e3a6316a4f1c791609a9acac0f194c5b19a2d344c46e1
-size 32896
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_dolg_signs.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_dolg_signs.dds
deleted file mode 100644
index 8e4646c0..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_dolg_signs.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3c8046b0bcae4fe2f966e8ecd90b3443c85a6e00e60240315662ade3fe8fa402
-size 32896
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_door4.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_door4.dds
deleted file mode 100644
index 10e1f2be..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_door4.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fd7e09c99fa555455390ee3c7342718ab422020993d88553c6f83ea539258e2d
-size 2097280
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_number1.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_number1.dds
deleted file mode 100644
index 02d63b9c..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_number1.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6341874248f68bfbb456874f62fc707e9c2e93be1484ba532b765c5e474ac726
-size 32896
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_poster_01.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_poster_01.dds
deleted file mode 100644
index 6a331b14..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_poster_01.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a3f0f4d0117eda402b1f391f4c245dae298b570d1066e48480e6f436af48aabc
-size 87528
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_poster_01.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_poster_01.thm
deleted file mode 100644
index b3b8a22b..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_poster_01.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ff9933f606a9bc751f340f18af24e4e6d153ec265adaedd4d02b0a00433bbacb
-size 165
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_poster_02.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_poster_02.dds
deleted file mode 100644
index e5b63446..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_poster_02.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:706501793aa1936a5202718be7647d3f011083ab3fea100bd41ad0c678c856f3
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_poster_02.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_poster_02.thm
deleted file mode 100644
index 5e80f23f..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_poster_02.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fec1790faab58ccc601536354687b9acf2710780052ca5727023077da6d699c1
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_poster_03.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_poster_03.dds
deleted file mode 100644
index c37ce347..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_poster_03.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7dc32c099b4388aabf541b6acec13b0b0cc42e52a9a699ca673a4c1bb8c8a71b
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_poster_03.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_poster_03.thm
deleted file mode 100644
index 5e80f23f..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_poster_03.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fec1790faab58ccc601536354687b9acf2710780052ca5727023077da6d699c1
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_stena_07_d.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_stena_07_d.dds
deleted file mode 100644
index 32903e20..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_stena_07_d.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f054efaf69dd9af0a92ef9be94d6e3c34b6406cb67bdde5adfabce0f8bbaa153
-size 174904
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_stena_07_d.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_stena_07_d.thm
deleted file mode 100644
index 6cad0fc0..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_stena_07_d.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e5adc4228b7bba35d59db4c837157f6940dbb623a726230a2f587aaae328e18c
-size 187
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_tabl_pod_01.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_tabl_pod_01.dds
deleted file mode 100644
index 71c50515..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_tabl_pod_01.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d06485d20f122e906fa933b449632a1f1447bb41c5f0d2e924c108d2eeae751f
-size 4224
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_ukazatel.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_ukazatel.dds
deleted file mode 100644
index b205f7bd..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_ukazatel.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7682861ecf2cc5998bbc260dc4203cf1652710a4d71fe929e6c1ee5ac82d8c21
-size 32896
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_yantar.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_yantar.dds
deleted file mode 100644
index 42afe7f8..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/prop/prop_yantar.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9b4c0a72bca8ca0983375507b79fda598bff88746c8e5544dfcf4ca1fd4b4bb8
-size 8320
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/sign/sign_bioh.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/sign/sign_bioh.dds
deleted file mode 100644
index 4c582cc1..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/sign/sign_bioh.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ae73d626b065bbec8a7e62d46fc145b7f8fa96a14119846a42ec9d8f495f3256
-size 11064
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/sign/sign_gr.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/sign/sign_gr.dds
deleted file mode 100644
index 46190584..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/sign/sign_gr.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7c828ab4dd3a3d99782dcc5138f75e3e8830edf97f0dddec290b4234c9767c86
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/sign/sign_info_01r.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/sign/sign_info_01r.dds
deleted file mode 100644
index 33aeff7c..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/sign/sign_info_01r.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:75ed0a3942c30f2e236f42981083ede05cafaa818408f737414a0791d7acd652
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/sign/sign_info_02r.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/sign/sign_info_02r.dds
deleted file mode 100644
index 28a4f6d2..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/sign/sign_info_02r.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e296fa334277ad8e6476a5e0668f3f562e2aa43c7d712e2544e93fc4d5da43f2
-size 43832
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/sign/sign_rad.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/sign/sign_rad.dds
deleted file mode 100644
index 08ad8afa..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/sign/sign_rad.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:66549475c136915c3e9d9071b4e6f3a2f112aa9c1f103ac3fd6bf73d081d4362
-size 8320
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/sign/sign_voltage2.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/sign/sign_voltage2.dds
deleted file mode 100644
index 826dde99..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/sign/sign_voltage2.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:95f68d97b13180e9007a3c57237d40e394e7445f03a5dfdfbbe71261d589c953
-size 5608
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/azazel_mode.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/azazel_mode.dds
deleted file mode 100644
index f2be6d4a..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/azazel_mode.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:14d5533206ae2439bbbfc0080867664dc702279c51b36249eebcbe893f3ec038
-size 104528
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/gui_overlay.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/gui_overlay.dds
deleted file mode 100644
index 628f3668..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/gui_overlay.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:47abf97d5c125730d725abe1855200d84868624ceaf1f0e8ba7f50b4f8d6f636
-size 1126448
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ico_bloodsucker.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ico_bloodsucker.dds
deleted file mode 100644
index d6a097e7..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ico_bloodsucker.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f5e8534135a3e34dbace74ba2331f7d2dabbbe1ca78aead3741e7d451ff62374
-size 32528
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ico_campfire.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ico_campfire.dds
deleted file mode 100644
index f70c6053..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ico_campfire.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4522343e3565bcef3d81c8b5b723558d847a6e911d0d8d1f401b6952d1480a39
-size 40128
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ico_gui.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ico_gui.dds
deleted file mode 100644
index af160a53..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ico_gui.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9985c2796e858edcf2680a76fe64e9fa6809183f7e16b18e5ab1b8bd533e997c
-size 40128
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ico_loadout.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ico_loadout.dds
deleted file mode 100644
index c96bab35..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ico_loadout.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0d2eaf0ceac5a26bad071c71520e678f6a73672f2a45b2e082f6a91170d7d0da
-size 40128
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ico_think.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ico_think.dds
deleted file mode 100644
index 5165b056..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ico_think.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9d3f9b9214245f636800fde38081c6cda360b1627aee8415aec63249baa23983
-size 32528
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/portrait_border.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/portrait_border.dds
deleted file mode 100644
index dae2ce7b..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/portrait_border.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6350498e0ab06f2dc6f4ab04f8034c3a4f136c51a694646a205da051c7102d15
-size 32528
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inGame2_Radar.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inGame2_Radar.dds
deleted file mode 100644
index 4e2ac6eb..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inGame2_Radar.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:62ed157f6e26f3f0612bf29bfd8b4d7571974627e76762dc57fee0ebc1a5c061
-size 1048704
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_bottom.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_bottom.dds
deleted file mode 100644
index 59b57d12..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_bottom.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:82a67cdcaf4a8a1b177e3296f5045e3cf72e0f767934c6d5138f23d11cb73ece
-size 153728
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_bottom_texture.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_bottom_texture.dds
deleted file mode 100644
index 0414a90e..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_bottom_texture.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:db872a01002236f235a6ef33ab144076100c5e2827ba34f46dda22b8f4217286
-size 153728
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_chibistalker.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_chibistalker.dds
deleted file mode 100644
index 9273f63b..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_chibistalker.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6e8309170249027afecf8af85b8c09780f3b90b1c87e87d99cf7423c6ccc6f0a
-size 232128
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_head.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_head.dds
deleted file mode 100644
index e5ecd82d..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_head.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b97539ebda39b6c16543dfffc4140cf9b97e28b0774f21eb4fe2ef5ad0a53880
-size 153728
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_line.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_line.dds
deleted file mode 100644
index 7d7fb252..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_line.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7d71b6a5a16c8f0362b39c986b186dbfc9037827a451dc84f01337b6e05302e1
-size 1072
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_overlay_shadow.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_overlay_shadow.dds
deleted file mode 100644
index df04d9e1..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_overlay_shadow.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cfe6d85193269fdc2c8fdae3bd55a7348e868be7aa5f8472285a02dabb45f9d7
-size 786560
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_panel.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_panel.dds
deleted file mode 100644
index ff95faf8..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_panel.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:99fcd53b8c6d20bc924413bfbaa85041c5019555c579d4b5ad04210ead78f409
-size 368768
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_top_light.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_top_light.dds
deleted file mode 100644
index 86c27d97..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_top_light.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a02d4d0f249bd9b8de3001284f2e53e64ec6d7542364de0f8d895b21372b62cb
-size 192128
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_version.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_version.dds
deleted file mode 100644
index 6f675449..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_inc_version.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3d2103ca8ba275a5f37c2d2938911c989c79939cf83fee44fc2a2591be6352f7
-size 153728
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_profile.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_profile.dds
deleted file mode 100644
index 1dc01266..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/enhancedGUI/ui_profile.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7894f05b58706156ac87c474aa48a7ccdd0d277fdcae7a252dc8d58225712beb
-size 232128
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_actor_icon_no_data.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_actor_icon_no_data.dds
deleted file mode 100644
index c287e98e..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_actor_icon_no_data.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:dc32469d0214ee40a067df6c68d6ac4860ba1d23f9533e8a492425ec458fe6f5
-size 16512
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_back_f.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_back_f.dds
deleted file mode 100644
index 96a04aaa..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_back_f.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:78445ddbfa3dba9f042983e1108d925dca770d4bd99d7fb8abad337b239e5ce5
-size 4194432
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_back_t.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_back_t.dds
deleted file mode 100644
index c0f1a788..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_back_t.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cfff1ea16b748c8301f17ce3e8bff97ed6f8f81c5c173c299a4dca15142a3c00
-size 4194432
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_factions.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_factions.dds
deleted file mode 100644
index 9879876a..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_factions.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3a729c81c28c56a39b245883fd83b24cec9f8ac39508a7530ceb598f8e202f96
-size 262272
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_main.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_main.dds
deleted file mode 100644
index b53944e4..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_main.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ffc30280bfaf0473d5a71b93dec259eaff43fcfe4b8a7a32759495c9cb04fa33
-size 1048704
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_maps_1.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_maps_1.dds
deleted file mode 100644
index 0cac9002..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_maps_1.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:96179793b91fa1bd15dffca49eca7a460aba607a8df72bf3a5b63de3181c70e6
-size 1048704
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_maps_2.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_maps_2.dds
deleted file mode 100644
index 02de8afb..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_maps_2.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1063a1f9e7a9964239d070caa38f00207dcc82b622d4e68fecff48cf3dadea53
-size 1048704
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_maps_3.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_maps_3.dds
deleted file mode 100644
index 14952635..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_maps_3.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c5aa6b365105ed7b3a0df0f1764ab207c8ca5d8b1febbfe7d155fa1d3ecd646a
-size 1048704
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_maps_4.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_maps_4.dds
deleted file mode 100644
index 4daae713..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_maps_4.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:db41dda27ec833f7b16104a5c2a713ee54deabc31fb2100bc1a8455659f4ec20
-size 1048704
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_models.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_models.dds
deleted file mode 100644
index 06b0672a..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_models.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7e03b5f043274bf85b86e1477ebc55987185f87fb1bcb4399976dc7d05fd0a32
-size 1048704
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_popup.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_popup.dds
deleted file mode 100644
index 0909ca6e..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_new_game_popup.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7965f78e099065f6dff5840afaa0a170b05116d7f6fb65a35971c3f5b2359f19
-size 1048704
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_trx_new_game_back_f.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_trx_new_game_back_f.dds
deleted file mode 100644
index ae0b93cb..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_trx_new_game_back_f.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1bc85eaac6335095cba592b7ce2ce7afabd661a7a2cdb298f5feeb01d9de60b0
-size 1048704
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_trx_new_game_back_t.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_trx_new_game_back_t.dds
deleted file mode 100644
index ae0b93cb..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/new_game/ui_trx_new_game_back_t.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1bc85eaac6335095cba592b7ce2ce7afabd661a7a2cdb298f5feeb01d9de60b0
-size 1048704
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_achivments.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_achivments.dds
deleted file mode 100644
index 0218a597..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_achivments.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9c3da9032038994c662718dac96bc31742d5777e51b16ad919d2aa90cbda12bb
-size 1048704
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_achivments.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_achivments.thm
deleted file mode 100644
index 355670ff..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_achivments.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f93ae8aa2fe2554cc93a5e3829cd8dc88a4a7f59b2e592a63467e788bb8009a2
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_dialog_screen.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_dialog_screen.dds
deleted file mode 100644
index f78d35dc..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_dialog_screen.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:97b04ab3a6d40e58eb415dfcbadcfd888fef488e99d69cfd1e7119466d76b1ff
-size 1048704
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_dialog_screen.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_dialog_screen.thm
deleted file mode 100644
index 533bc265..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_dialog_screen.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6cf3db83495bf0c8cf02aa8f3a73d1d318719beda3d279b86f968e6cdd2d3ed4
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_hint_wnd.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_hint_wnd.dds
deleted file mode 100644
index 2492fab3..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_hint_wnd.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:83bf95e05e92b9969f2969a18c0b48aa070f80e62b5d41d3c92f31b820ca8d01
-size 8388736
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_hint_wnd.pdn b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_hint_wnd.pdn
deleted file mode 100644
index 9e83616e..00000000
Binary files a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_hint_wnd.pdn and /dev/null differ
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_loadgame_screen.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_loadgame_screen.dds
deleted file mode 100644
index 80b4a13f..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_loadgame_screen.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f148f92000fda9c80ea499961d3ce62e2a675976b5a8968d8254253147eb7403
-size 1048704
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_main_menu.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_main_menu.dds
deleted file mode 100644
index 18862909..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_main_menu.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fab853d03b0b281e9993b7a3a594f32fb3992428c62e31c58aeb106a2cbb8585
-size 8388736
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_menu.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_menu.dds
deleted file mode 100644
index 027c03e6..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_menu.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a299dded209d1f1d03902d3263169b359fcbce77bbdd4bc8865f868c3bfed8f6
-size 8388736
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_menu_factions.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_menu_factions.dds
deleted file mode 100644
index 1ec244f1..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_menu_factions.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4a3e355dcfa954d56f30b52a50afef47309de0baad43bd7932b346ee00c81490
-size 4194432
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_menu_new_tabs.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_menu_new_tabs.dds
deleted file mode 100644
index 5dae3ca9..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_menu_new_tabs.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d2018e1302d02d732b7ff55d22ddaa7c8b2649ddbbb15bdf299a8847df7d6467
-size 8388736
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_monsters_pda.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_monsters_pda.dds
deleted file mode 100644
index 80bb5602..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_monsters_pda.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9aa9ca40ebc8608fb726170c7d440b30c18142264aaf74953f7bbad2c592911f
-size 1048704
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_monsters_pda_1.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_monsters_pda_1.dds
deleted file mode 100644
index 1c8ddde1..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_monsters_pda_1.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:261bd8c2c8b9664760cb350f9ac3934c1e457f9832a30ea970617f0be9c6c018
-size 524416
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_monsters_pda_2.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_monsters_pda_2.dds
deleted file mode 100644
index 51331655..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_monsters_pda_2.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8ed762264d54870444f3f77ac41086ac0617c82989ca64f4c42934771f1c1d9e
-size 524416
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_monsters_pda_3.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_monsters_pda_3.dds
deleted file mode 100644
index 1395c130..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_monsters_pda_3.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cc150be23d02c8b97ba5ecdb46c734fb77459e93b15bd6dbc0184ccfbec02595
-size 524416
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_multiplayer_game_menu.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_multiplayer_game_menu.dds
deleted file mode 100644
index 0ec8136c..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_multiplayer_game_menu.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cd3ce52c955d4abc7c309b72b753bc61f669fac24206ba98d0baf3a075b3695f
-size 4194432
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_multiplayer_game_menu.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_multiplayer_game_menu.thm
deleted file mode 100644
index 533bc265..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_multiplayer_game_menu.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6cf3db83495bf0c8cf02aa8f3a73d1d318719beda3d279b86f968e6cdd2d3ed4
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_sleep_screen.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_sleep_screen.dds
deleted file mode 100644
index 58f6d256..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_sleep_screen.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8aec4885e9d88fe1806ebbc36a35987ace9dde79f22f476aedf71e4cdf5750dc
-size 4194432
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_widescreen_sidepanels.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_widescreen_sidepanels.dds
deleted file mode 100644
index a2b11784..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_actor_widescreen_sidepanels.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:30bdb292bcbe82cac8180a439dd8d9787c080ab0e7e3e4539737c1d81177a918
-size 4194432
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_01.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_01.dds
deleted file mode 100644
index baad6014..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_01.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d93e5dc5cfef392cceab20043b7cabb2edd18aa67775d73c54b3c94a66d22362
-size 4224
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_01.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_01.thm
deleted file mode 100644
index 9718b800..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_01.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ad5c53b9a15a3aa5a0b922ec8d0f46632c391e1e6894187ca08c5bd3bc4a57aa
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_02.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_02.dds
deleted file mode 100644
index ac072744..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_02.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1fc53d3c1d66c0c80e27de56318adf26f507e568cafee240ba05aaddd0675db7
-size 4224
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_02.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_02.thm
deleted file mode 100644
index 9718b800..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_02.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ad5c53b9a15a3aa5a0b922ec8d0f46632c391e1e6894187ca08c5bd3bc4a57aa
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_03.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_03.dds
deleted file mode 100644
index b2fb161d..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_03.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:124fc87376f5f294f2ffe36a9e2d34e7ce5f2111c63d552e216e9078fa3cf2d4
-size 4224
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_03.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_03.thm
deleted file mode 100644
index 9718b800..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_03.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ad5c53b9a15a3aa5a0b922ec8d0f46632c391e1e6894187ca08c5bd3bc4a57aa
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_04.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_04.dds
deleted file mode 100644
index cb1ecb76..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_04.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a561383a636055a639d0bd29ec76363297a354774366564e05a3d43d33c2efd7
-size 4224
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_04.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_04.thm
deleted file mode 100644
index 9718b800..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_04.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ad5c53b9a15a3aa5a0b922ec8d0f46632c391e1e6894187ca08c5bd3bc4a57aa
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_05.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_05.dds
deleted file mode 100644
index a2b91167..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_05.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2c6d19d26073b8fcd82924349f56b416ec778434c371a91326f58dd8bd96e0b5
-size 4224
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_05.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_05.thm
deleted file mode 100644
index 9718b800..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_05.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ad5c53b9a15a3aa5a0b922ec8d0f46632c391e1e6894187ca08c5bd3bc4a57aa
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_06.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_06.dds
deleted file mode 100644
index 0c26335a..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_06.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7faffb0f93fa5de860266a7d33fb810c38b036e9544e71a08e22a25425c2f59f
-size 4224
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_06.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_06.thm
deleted file mode 100644
index 9718b800..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_06.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ad5c53b9a15a3aa5a0b922ec8d0f46632c391e1e6894187ca08c5bd3bc4a57aa
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_07.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_07.dds
deleted file mode 100644
index 874725ac..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_07.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e30769de3f379b8d89e8028a6e66cd1b15ef94004342c3c3b1cc186e6cbd0fe9
-size 4224
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_07.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_07.thm
deleted file mode 100644
index 9718b800..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_07.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ad5c53b9a15a3aa5a0b922ec8d0f46632c391e1e6894187ca08c5bd3bc4a57aa
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_08.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_08.dds
deleted file mode 100644
index e35b0c5f..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_08.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8a5822521c667943d9d1ff42d4e3b455cf24cc3ea13a578e72f7f781620e28d7
-size 4224
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_08.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_08.thm
deleted file mode 100644
index 9718b800..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ani_cursor_08.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ad5c53b9a15a3aa5a0b922ec8d0f46632c391e1e6894187ca08c5bd3bc4a57aa
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_bars.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_bars.dds
deleted file mode 100644
index 7da70238..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_bars.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cc56d1b48e0fde59c8a74d577c26797dcc6708fb2a859e387091e3c013e7d254
-size 32896
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_common.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_common.dds
deleted file mode 100644
index 5ced3192..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_common.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:12eb6d67d1957f431b91989b179f4e5db99e0caa7446e0323505863f6a456708
-size 4194432
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_common_dbg.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_common_dbg.dds
deleted file mode 100644
index c585208b..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_common_dbg.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d3286d427ba1f3340809f29a7c9537f37c5e70148526a2fa1453859842e0e137
-size 2097280
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_con_checker_interface.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_con_checker_interface.dds
deleted file mode 100644
index e13ab638..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_con_checker_interface.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4a03396771ff930b8aaef21e33e27fa2ca7cfd28842d78e8972c741aa05f5380
-size 262272
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_grid.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_grid.dds
deleted file mode 100644
index d1d11d49..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_grid.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1c43d415af370beec1491b40c2377e1143c322891d0d967494e5573b63f955ae
-size 65664
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_grid.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_grid.thm
deleted file mode 100644
index eee3223d..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_grid.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1bb181c45665f8ae7b88b2f4f767a3c624a259afb37b061ceddd581ad23a24aa
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_highlight.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_highlight.dds
deleted file mode 100644
index 2e7c6db2..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_highlight.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4396386bfa43e1d5847ac1d1215f49e541a99945bfe26279dab49877e3419cc7
-size 32896
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_hud.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_hud.dds
deleted file mode 100644
index a3423a20..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_hud.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:69009792e0016b3f6c4a96cd98f13a0c419b7d4a7edfec49ed382b1709eb7d2f
-size 4194432
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_hud.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_hud.thm
deleted file mode 100644
index 42ef409d..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_hud.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5324a22873d5e82c77c40d5a49e3a5bc8b5699f0f30184cbf91505b4956f1a3b
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_hud_grenade_mark.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_hud_grenade_mark.dds
deleted file mode 100644
index 32b2e593..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_hud_grenade_mark.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6d63f6386003fd9b146c08021a00f5d8d4c3fc4ee0430433c893b4530b49bb87
-size 65664
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_hud_grenade_mark.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_hud_grenade_mark.thm
deleted file mode 100644
index b02dbd76..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_hud_grenade_mark.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0e14ae8dcfe380b81f05d88871d280002453cd0327dfa9d5f4b24b261434df4e
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_hud_hit_mark (2).dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_hud_hit_mark (2).dds
deleted file mode 100644
index fc0e8cc2..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_hud_hit_mark (2).dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:55e23643e378794f96533be1ee3557870443a752cd4d6d0a2f561c7bcb707331
-size 74112
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_hud_hit_mark.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_hud_hit_mark.dds
deleted file mode 100644
index f5533cb9..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_hud_hit_mark.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a015fc14b5800caf7dbaa54aff34b3b7f63083f121d016a853eb3c49801f12f5
-size 291724
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ingame2_common.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ingame2_common.dds
deleted file mode 100644
index 03e2fd74..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ingame2_common.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:bda2b090792d213050f32ac31e939e0ad827a5e39a83236f2974a65e2e7c3d6b
-size 4194432
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ingame2_common.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ingame2_common.thm
deleted file mode 100644
index 42ef409d..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_ingame2_common.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5324a22873d5e82c77c40d5a49e3a5bc8b5699f0f30184cbf91505b4956f1a3b
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_mm_faction_patches.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_mm_faction_patches.dds
deleted file mode 100644
index eb0ecd61..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_mm_faction_patches.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7002bd288fd7ed4875a8154fe65fac2aad8176ddb4705f7021fa33baed04a442
-size 524416
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise.seq b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise.seq
deleted file mode 100644
index c2d855f8..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise.seq
+++ /dev/null
@@ -1,12 +0,0 @@
-25
-ui\ui_noise_00
-ui\ui_noise_01
-ui\ui_noise_02
-ui\ui_noise_03
-ui\ui_noise_04
-ui\ui_noise_03
-ui\ui_noise_01
-ui\ui_noise_02
-ui\ui_noise_00
-ui\ui_noise_03
-ui\ui_noise_04
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_00.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_00.dds
deleted file mode 100644
index 6664a026..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_00.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c0ea3b9e919a591c14e16ce5c0f3b574e47a4c47d11be7ced16ea8b8bcb1fffb
-size 65664
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_00.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_00.thm
deleted file mode 100644
index b02dbd76..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_00.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0e14ae8dcfe380b81f05d88871d280002453cd0327dfa9d5f4b24b261434df4e
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_01.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_01.dds
deleted file mode 100644
index 034ce9de..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_01.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8560065b6eb2ea1d5062ba67789cfd6a55345e78f4f692225ae28552ec66eebc
-size 65664
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_01.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_01.thm
deleted file mode 100644
index b02dbd76..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_01.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0e14ae8dcfe380b81f05d88871d280002453cd0327dfa9d5f4b24b261434df4e
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_02.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_02.dds
deleted file mode 100644
index d07c3949..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_02.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a3f208f1a8cd92e1527981dbc1a78fb3a16b51bf7c5863d9d6ba508e930e40b0
-size 65664
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_02.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_02.thm
deleted file mode 100644
index b02dbd76..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_02.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0e14ae8dcfe380b81f05d88871d280002453cd0327dfa9d5f4b24b261434df4e
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_03.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_03.dds
deleted file mode 100644
index ef4d2d01..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_03.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:08261615eb319b53ef741f32e139dfa8225cc80c2ab26eb9d9b745adfb943d44
-size 65664
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_03.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_03.thm
deleted file mode 100644
index b02dbd76..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_03.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0e14ae8dcfe380b81f05d88871d280002453cd0327dfa9d5f4b24b261434df4e
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_04.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_04.dds
deleted file mode 100644
index c25a8869..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_04.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:12773f1e533eb2d34867881b40dd00d3324c90a6f86c276b376dbf51a4c0288a
-size 65664
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_04.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_04.thm
deleted file mode 100644
index b02dbd76..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_noise_04.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0e14ae8dcfe380b81f05d88871d280002453cd0327dfa9d5f4b24b261434df4e
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_options.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_options.dds
deleted file mode 100644
index f5065fbc..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_options.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:56739fd1decb3ad79bc73d8ab23f5c5b0c79a3bf2d35c982f9a8efa48f8b4b2d
-size 4194432
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_options_sliders.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_options_sliders.dds
deleted file mode 100644
index 204a498c..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_options_sliders.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1355c3d7eacf34f317730140e345e18392c79c85e3110e4db804bb2cec982820
-size 1048704
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_pda_anims_01.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_pda_anims_01.dds
deleted file mode 100644
index 12da182b..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_pda_anims_01.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:94eed06c92b02e3d706b60a164c2dfde29d07370779a65bc5b257aa4b4cf2994
-size 16512
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_pda_anims_01.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_pda_anims_01.thm
deleted file mode 100644
index d0b1bb7f..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_pda_anims_01.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4329366d995ec8da1b51a670c530108f93ddb1358f0309ff1458ff036e4f8eb6
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_pda_anims_03.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_pda_anims_03.dds
deleted file mode 100644
index 26d7e5ad..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_pda_anims_03.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3738e2b56e570d649a90017d1626400cecb1ad3472372ef4697e711694a341a2
-size 16512
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_pda_anims_03.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_pda_anims_03.thm
deleted file mode 100644
index d0b1bb7f..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_pda_anims_03.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4329366d995ec8da1b51a670c530108f93ddb1358f0309ff1458ff036e4f8eb6
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_pda_anims_04.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_pda_anims_04.dds
deleted file mode 100644
index 14ed68a5..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_pda_anims_04.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:709cd82efbb75d7c2fe6246ce33b21a67f667873dde312e4329b8ccd458ca129
-size 16512
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_pda_anims_04.thm b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_pda_anims_04.thm
deleted file mode 100644
index d0b1bb7f..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/ui/ui_pda_anims_04.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4329366d995ec8da1b51a670c530108f93ddb1358f0309ff1458ff036e4f8eb6
-size 138
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/wm/wm_board_a.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/wm/wm_board_a.dds
deleted file mode 100644
index 7c201410..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/wm/wm_board_a.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:83e1f09c279a0bcb5710b4424e258276f7673201af9443428b5a87ffdb4b65e8
-size 174928
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/wm/wm_pl_1.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/wm/wm_pl_1.dds
deleted file mode 100644
index fb895895..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/wm/wm_pl_1.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:dccda60e39056b775ccd43b072ae59f01339e5d981d725fde67764a88834d64e
-size 4194432
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/wm/wm_pl_3.dds b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/wm/wm_pl_3.dds
deleted file mode 100644
index 26c620a8..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/gamedata/textures/wm/wm_pl_3.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7431a6088476dbae03592fb1ed9c64215792e08e68205c2c0da621fdb6c2f4fe
-size 1048704
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/info_CORE.txt b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/info_CORE.txt
deleted file mode 100644
index e759e913..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/info_CORE.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
- we tried to replace all the textures with better ones and originals from trilogy. also all Enhanced GUI textures stored in this folder. patches will provide edited textures in own folder.
\ No newline at end of file
diff --git a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/meta.ini b/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/meta.ini
deleted file mode 100644
index 0a76c935..00000000
--- a/mods/[DEV] INC - 01 Enhanced GUI - [CORE]/meta.ini
+++ /dev/null
@@ -1,26 +0,0 @@
-[General]
-category="18,"
-newestVersion=
-ignoredVersion=
-version=
-installationFile=
-repository=Nexus
-gameName=stalkeranomaly
-modid=-1
-comments=
-notes=
-nexusDescription=
-url=
-hasCustomURL=false
-nexusFileStatus=1
-lastNexusQuery=
-lastNexusUpdate=
-nexusLastModified=2024-03-14T09:13:50Z
-nexusCategory=0
-converted=false
-validated=false
-color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
-tracked=0
-
-[installedFiles]
-size=0
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/message_box.xml b/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/message_box.xml
deleted file mode 100644
index 7fb0794e..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/message_box.xml
+++ /dev/null
@@ -1,561 +0,0 @@
-
-
-
-
-
- ui_inGame2_message_box
-
- level_changer_invitation
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- level_changer_invitation
-
-
- button_ok
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_error
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_file_name_is_empty
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_mm_delete_existing_file_q
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_file_exist_owerwrite_q
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- You can buy a spawn for 1000 $. Press Yes to pay
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_mm_quit_windows_message
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_want_to_leave_game_q
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_load_game_confirm
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_invalid_saved_game
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_conn_invalid_host
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_conn_invalid_pass
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_conn_sess_full
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_conn_rejected_server
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_conn_cdkey_invalid
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_conn_cdkey_in_use
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_conn_cdkey_disabled
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_conn_version_differs
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_err_gs_not_available
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_err_sb_master_server_conn_fail
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_conn_new_patch
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_conn_no_new_patch
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_voting_disabled
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_select_one_map
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_mm_need_restart
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_cant_run_r2
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_patch_download_error
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_patch_download_success
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_connecting_to_masterserver
-
-
- button_ok
- ui_mm_cancel
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_kicked_by_server
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_error_loading
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- a
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- a
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- mm_mp_host_port
-
-
- mm_mp_password
-
-
-
- ui_inGame2_edit_box_1
-
-
-
- ui_inGame2_edit_box_1
-
-
- button_yes
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_Cancel
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- mm_mp_userpassword
-
-
- mm_mp_password
-
-
-
- ui_inGame2_edit_box_1
-
-
-
- ui_inGame2_edit_box_1
-
-
- button_yes
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_Cancel
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- download_map
-
-
-
- ui_inGame2_edit_box_1
-
-
- button_copy
- ui_st_btn_copy_url
- ui_inGame2_Mp_bigbuttone
-
-
- button_yes
- ui_st_btn_download_map
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_Cancel
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
-
-
-
- button_cancel_login
- Btn_Cancel
- ui_inGame2_Mp_bigbuttone
-
-
-
-
- ui_inGame2_message_box
-
-
-
-
-
- ui_inGame2_message_box
-
-
-
-
-
-
- ui_inGame2_message_box
-
-
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
-
- ui_inGame2_message_box
-
-
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/message_box_16.xml b/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/message_box_16.xml
deleted file mode 100644
index 4b5e4c55..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/message_box_16.xml
+++ /dev/null
@@ -1,562 +0,0 @@
-
-
-
-
-
- ui_inGame2_message_box
-
- level_changer_invitation
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- level_changer_invitation
-
-
- button_ok
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_error
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_file_name_is_empty
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_mm_delete_existing_file_q
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_file_exist_owerwrite_q
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- You can buy a spawn for 1000 $. Press Yes to pay
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_mm_quit_windows_message
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_want_to_leave_game_q
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_load_game_confirm
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_invalid_saved_game
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_conn_invalid_host
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_conn_invalid_pass
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_conn_sess_full
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_conn_rejected_server
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_conn_cdkey_invalid
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_conn_cdkey_in_use
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_conn_cdkey_disabled
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_conn_version_differs
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_err_gs_not_available
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_err_sb_master_server_conn_fail
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_conn_new_patch
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_conn_no_new_patch
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_voting_disabled
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_select_one_map
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_mm_need_restart
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_cant_run_r2
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_patch_download_error
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_patch_download_success
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_connecting_to_masterserver
-
-
- button_ok
- ui_mm_cancel
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_kicked_by_server
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- ui_st_error_loading
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- a
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- a
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- mm_mp_host_port
-
-
- mm_mp_password
-
-
-
- ui_inGame2_edit_box_1
-
-
-
- ui_inGame2_edit_box_1
-
-
- button_yes
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_Cancel
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- mm_mp_userpassword
-
-
- mm_mp_password
-
-
-
- ui_inGame2_edit_box_1
-
-
-
- ui_inGame2_edit_box_1
-
-
- button_yes
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_Cancel
- ui_inGame2_Mp_bigbuttone
-
-
-
- ui_inGame2_message_box
-
- download_map
-
-
-
- ui_inGame2_edit_box_1
-
-
- button_copy
- ui_st_btn_copy_url
- ui_inGame2_Mp_bigbuttone
-
-
- button_yes
- ui_st_btn_download_map
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_Cancel
- ui_inGame2_Mp_bigbuttone
-
-
-
-
- ui_inGame2_message_box
-
-
-
-
- button_cancel_login
- Btn_Cancel
- ui_inGame2_Mp_bigbuttone
-
-
-
-
- ui_inGame2_message_box
-
-
-
-
-
- ui_inGame2_message_box
-
-
-
-
-
-
- ui_inGame2_message_box
-
-
-
-
- button_ok
- Btn_OK
- ui_inGame2_Mp_bigbuttone
-
-
-
-
- ui_inGame2_message_box
-
-
-
-
- button_yes
- Btn_Yes
- ui_inGame2_Mp_bigbuttone
-
-
- button_no
- Btn_No
- ui_inGame2_Mp_bigbuttone
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/messages_window.xml b/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/messages_window.xml
deleted file mode 100644
index 66c1f84a..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/messages_window.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
-
-
- ui_hud_teamF_counterC
-
-
- ui_hud_teamF_counter
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/textures_descr/ui_actor_main_menu.xml b/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/textures_descr/ui_actor_main_menu.xml
deleted file mode 100644
index 799b6f65..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/textures_descr/ui_actor_main_menu.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/textures_descr/ui_actor_main_menu_options.xml b/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/textures_descr/ui_actor_main_menu_options.xml
deleted file mode 100644
index 7104f554..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/textures_descr/ui_actor_main_menu_options.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/textures_descr/ui_actor_mp_buyscreen.xml b/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/textures_descr/ui_actor_mp_buyscreen.xml
deleted file mode 100644
index 9b00241e..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/textures_descr/ui_actor_mp_buyscreen.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/textures_descr/ui_actor_mp_screen.xml b/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/textures_descr/ui_actor_mp_screen.xml
deleted file mode 100644
index 2256674b..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/textures_descr/ui_actor_mp_screen.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/textures_descr/ui_common.xml b/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/textures_descr/ui_common.xml
deleted file mode 100644
index 33c64c07..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/gamedata/configs/ui/textures_descr/ui_common.xml
+++ /dev/null
@@ -1,782 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_texture id="ui_scroll_back_16" x="124" y="189" width="13" height="13" />
- <_texture id="ui_scroll_box_16" x="124" y="206" width="13" height="13" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/meta.ini b/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/meta.ini
deleted file mode 100644
index 0a76c935..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements/meta.ini
+++ /dev/null
@@ -1,26 +0,0 @@
-[General]
-category="18,"
-newestVersion=
-ignoredVersion=
-version=
-installationFile=
-repository=Nexus
-gameName=stalkeranomaly
-modid=-1
-comments=
-notes=
-nexusDescription=
-url=
-hasCustomURL=false
-nexusFileStatus=1
-lastNexusQuery=
-lastNexusUpdate=
-nexusLastModified=2024-03-14T09:13:50Z
-nexusCategory=0
-converted=false
-validated=false
-color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
-tracked=0
-
-[installedFiles]
-size=0
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/scripts/modxml_menu_bg.script b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/scripts/modxml_menu_bg.script
deleted file mode 100644
index ec3f8865..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/scripts/modxml_menu_bg.script
+++ /dev/null
@@ -1,66 +0,0 @@
-
-function on_xml_read()
- RegisterScriptCallback("on_xml_read", function(xml_file_name, xml_obj)
- if xml_file_name == [[ui\ui_mm_main.xml]]
- or xml_file_name == [[ui\ui_mm_main_16.xml]]
- or xml_file_name == [[ui\ui_credits_16.xml]]
- or xml_file_name == [[ui\ui_mm_faction_select.xml]]
- or xml_file_name == [[ui\ui_mm_faction_select_16.xml]]
- or xml_file_name == [[ui\ui_mm_load_dlg.xml]]
- or xml_file_name == [[ui\ui_mm_load_dlg_16.xml]]
- or xml_file_name == [[ui\ui_mm_save_dlg.xml]]
- or xml_file_name == [[ui\ui_mm_save_dlg_16.xml]]
- or xml_file_name == [[ui\ui_options.xml]]
- or xml_file_name == [[ui\ui_options_16.xml]]
- or xml_file_name == [[ui\ui_mcm.xml]]
- or xml_file_name == [[ui\ui_mcm_16.xml]]
- then
-
- math.randomseed(os.time())
-
- local res = xml_obj:query("background > auto_static > texture")
- local menu_t = {
- "ui\\enhancedGUI_00",
- "ui\\enhancedGUI_01",
- "ui\\enhancedGUI_02",
- "ui\\enhancedGUI_03",
- "ui\\enhancedGUI_04",
- "ui\\enhancedGUI_05",
- "ui\\enhancedGUI_06",
- "ui\\enhancedGUI_07",
- "ui\\enhancedGUI_08",
- "ui\\enhancedGUI_09",
- "ui\\enhancedGUI_10",
- "ui\\enhancedGUI_11",
- "ui\\enhancedGUI_12",
- "ui\\enhancedGUI_13",
- "ui\\enhancedGUI_14",
- "ui\\enhancedGUI_15",
- "ui\\enhancedGUI_16",
- "ui\\enhancedGUI_17",
- "ui\\enhancedGUI_18",
- "ui\\enhancedGUI_19",
- "ui\\enhancedGUI_20",
- "ui\\enhancedGUI_21",
- "ui\\enhancedGUI_22",
- "ui\\enhancedGUI_23",
- "ui\\enhancedGUI_24",
- "ui\\enhancedGUI_25",
- "ui\\enhancedGUI_26",
- "ui\\enhancedGUI_27",
- "ui\\enhancedGUI_28",
- "ui\\enhancedGUI_29",
- "ui\\enhancedGUI_30",
- "ui\\enhancedGUI_31",
- "ui\\enhancedGUI_32",
- "ui\\enhancedGUI_33",
-
-}
- local picked_menu = menu_t[math.random(1, #menu_t)]
- if res[1] then
- el = res[1]
- xml_obj:setText (el, picked_menu)
- end
- end
- end)
-end
\ No newline at end of file
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/scripts/modxml_menu_music.script b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/scripts/modxml_menu_music.script
deleted file mode 100644
index f930d63c..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/scripts/modxml_menu_music.script
+++ /dev/null
@@ -1,32 +0,0 @@
-
-function on_xml_read()
- RegisterScriptCallback("on_xml_read", function(xml_file_name, xml_obj)
- if xml_file_name == [[ui\ui_mm_main.xml]]
- or xml_file_name == [[ui\ui_mm_main_16.xml]]
- then
-
- math.randomseed(os.time())
-
- local res = xml_obj:query("menu_sound > menu_music")
- local mus_t = {
- "music\\mm_music\\track_1",
- "music\\mm_music\\track_2",
- "music\\mm_music\\track_3",
- "music\\mm_music\\track_4",
- "music\\mm_music\\track_5",
- "music\\mm_music\\track_6",
- "music\\mm_music\\track_7",
- "music\\mm_music\\track_8",
- "music\\mm_music\\track_9",
- "music\\mm_music\\track_10",
- "music\\mm_music\\track_11",
-
-}
- local picked_track = mus_t[math.random(1, #mus_t)]
- if res[1] then
- el = res[1]
- xml_obj:setText (el, picked_track)
- end
- end
- end)
-end
\ No newline at end of file
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_1.ogg b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_1.ogg
deleted file mode 100644
index 15ff642d..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_1.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5bf7ea3dbb856e3da59be2cfd16f0ee96c796acd051095cf40ff1a102ba96f1b
-size 1959094
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_10.ogg b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_10.ogg
deleted file mode 100644
index e49e9f35..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_10.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2520bf19606786be039aa7955ec443858ff46aa250ed79ab6c989fc8a2c2917f
-size 3718421
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_11.ogg b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_11.ogg
deleted file mode 100644
index 4463a08f..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_11.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:136469f1516e9e700a4a8705fe00d74a8497fbfb7289c7f45c0257ac4e52e10f
-size 2713864
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_2.ogg b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_2.ogg
deleted file mode 100644
index 651fbd4c..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_2.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:66f20c5b43ad7a1928aafc8ffc2db26f84114a3e787e4e8cde3a0c1703acb907
-size 4667251
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_3.ogg b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_3.ogg
deleted file mode 100644
index e40765ff..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_3.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:86c22b66e8d1e5e4057af2572b15b184fb955c54b115f3a64a5f4caa757e61b6
-size 1613267
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_4.ogg b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_4.ogg
deleted file mode 100644
index 4b3e73de..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_4.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a61bf916ee8e1ac396cae539d2ed5aca95262fd8de3bf0446451ab46c71d3818
-size 2399520
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_5.ogg b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_5.ogg
deleted file mode 100644
index 472662ff..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_5.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c26b34ee38f6daa799065a04274da454d48001f9c508a88303541c621392f0f4
-size 1982474
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_6.ogg b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_6.ogg
deleted file mode 100644
index da899870..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_6.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fe1797d247556c5934fd1a2197178b102f2b10ed0c5cb25ce1ae6377d8145df0
-size 1413873
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_7.ogg b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_7.ogg
deleted file mode 100644
index b087cd42..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_7.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d0e132fae6298129e083815633677103bd62afa97ec3a53c319998eefafcc936
-size 4302665
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_8.ogg b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_8.ogg
deleted file mode 100644
index b9331c77..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_8.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f7538416106b1551e977f1b2ef24cf315e439b1e5de4e7d9d05870b52f6d583a
-size 1596129
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_9.ogg b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_9.ogg
deleted file mode 100644
index e2c17cec..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/mm_music/track_9.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:55c9b9b2534e38f16e77e0cca524dd62fce846b981b02f64ec1d8a4a8caf2f4a
-size 1502683
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/ui_menu_background.ogg b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/ui_menu_background.ogg
deleted file mode 100644
index b93d407a..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/sounds/music/ui_menu_background.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:aa63f44a70e104c435e886e94cbdadd71562b32a30708d3a84a434c76fdb7442
-size 13054212
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_00.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_00.dds
deleted file mode 100644
index 69375158..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_00.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9bfc91163cb03ec14daa681d0ce827eea8419273b094ec3dfd7d677010be0945
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_01.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_01.dds
deleted file mode 100644
index edc4e72e..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_01.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:78170da01f993775a8d6aa3b2ec070a4276a2ba9ad76607dd7fb148ff993983a
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_02.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_02.dds
deleted file mode 100644
index 4fb1761e..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_02.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4c5968138fdbd6f4e588a7583e4a7f8a000ba74f8737a16d396f0199253f2b04
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_03.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_03.dds
deleted file mode 100644
index 89fc9b2d..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_03.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:414c2419e79b327d55c780e77a39f6ca4e0a589bd7277d29e28b3e48ef28755e
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_04.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_04.dds
deleted file mode 100644
index c1e4b6e4..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_04.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9ccbb2adaf4872585276c3a3f1ae72ffed295f02c7a6e2172474628af2054deb
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_05.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_05.dds
deleted file mode 100644
index 3acfe24c..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_05.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9c8145d5cfa4c5079e96f3138e8142b19c58255ef7b2732c4c6c17b4311ea3e4
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_06.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_06.dds
deleted file mode 100644
index 93ef2c6c..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_06.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ee62698851cf09442cd5405eea8fb1fe4d46b47e54f66fd294de35799b354ca5
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_07.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_07.dds
deleted file mode 100644
index 79cbcf40..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_07.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9087f828a8f95309291509eb868b3f13e1c3a0720f0830a09d97a0130f5de17b
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_08.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_08.dds
deleted file mode 100644
index 83c7c9df..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_08.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0b36dd05ec7e8330b2049d12c3ee8b9eb30909e62a7a01d2fd16c410726d786b
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_09.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_09.dds
deleted file mode 100644
index bb08d461..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_09.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ff229be49de95d41c8d33d70583fbe24aa7dc121e8a3591ec4dcb4bac317a82f
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_10.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_10.dds
deleted file mode 100644
index a2d60d65..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_10.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3738a5606b6b6a36802f2a17c60f4597df8b22bee1363ae73c9c9116972adf36
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_11.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_11.dds
deleted file mode 100644
index 642d0345..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_11.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:300939edff53b74047892f694f344b4d90e03acf449cc17707eee0742444ec58
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_12.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_12.dds
deleted file mode 100644
index b8d677ef..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_12.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ee6f1e2c2c0d4e9a78ee13100a9f1716ea36a3257df2b43917324e4d40d2a7af
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_13.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_13.dds
deleted file mode 100644
index 32cb787b..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_13.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0576542959ec503674cf5b2a78c192f336307c0558840f8c59cd1f7414f1662a
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_14.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_14.dds
deleted file mode 100644
index 8f4a6ac1..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_14.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5efd7ffc23de92681f602c3182219374ee18af830841ff65f4db11db7f07fec6
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_15.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_15.dds
deleted file mode 100644
index 06626f96..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_15.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:59bdc78d46c081a03ed744cea7ab3fc5b8fc0d343431fb708b9ddeccdfd020b2
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_16.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_16.dds
deleted file mode 100644
index 79e9a64d..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_16.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5839fc05b13ca69c97c575071077a175e278ed0967e52271dd63c96502b13e70
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_17.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_17.dds
deleted file mode 100644
index 581db75f..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_17.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6d67a2955a2c2cc96c4e838f2bc319b8aca425025216b02d0a48d72c1a12f026
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_18.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_18.dds
deleted file mode 100644
index 95b143ee..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_18.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cdc53cb4707e0d99ccff329c91c596fe194ec2fa8c79fc0edd76ce93797dc3ac
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_19.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_19.dds
deleted file mode 100644
index d5b95074..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_19.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8701cf6be6c47018cf9048e56650d9ceb36402e92f473657c1c47bcac9cd7312
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_20.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_20.dds
deleted file mode 100644
index 1d6f11a1..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_20.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:55e14a239ccba989d6393b6f599b4d4a1a198a35f6b0c4e8c35c5c47a0f97433
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_21.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_21.dds
deleted file mode 100644
index 2270735c..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_21.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:44401dea9f3e26b0ff11e4f08e79de513cb6951f519e1f3ed3b4ab2072827ca1
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_22.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_22.dds
deleted file mode 100644
index 1abc477a..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_22.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:59d7717c9089c1edab243fd8ded2f3035e8bb5cf78f22fb2fa6d9eb55fa1363e
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_23.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_23.dds
deleted file mode 100644
index 3fc5b79b..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_23.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:961ddbf001573b5b848b60017931df703812a34b82698e2e8291dcd75b41a001
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_24.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_24.dds
deleted file mode 100644
index ff5d6ab4..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_24.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fbbc15513a213215ac6ac718e3c8e77666c7b8662dd6c2c5ddc7b754020ee5d3
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_25.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_25.dds
deleted file mode 100644
index 5c594e74..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_25.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:75e56256fca1f3cec2728d1b9ac0638ad6393c8e255a9b2c5dfd7034ee8883cb
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_26.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_26.dds
deleted file mode 100644
index ab452c17..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_26.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e1c77575679a72e7fb772045aa3624353e762351f98295fa6d9ad6e91c4dc2d6
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_27.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_27.dds
deleted file mode 100644
index 01c3b923..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_27.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e1843c56817e432e11189eee7e57fbc2385ba2de75a08caa79ce79699e28256b
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_28.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_28.dds
deleted file mode 100644
index 975d70b3..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_28.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:052aa3f4f348420f34a41e15e5b0c93a56e32147e3668978f40222a1b9fead87
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_29.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_29.dds
deleted file mode 100644
index b110315f..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_29.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6f1baeb3b06529cce4215d04032ef2850b220862b49833a9c68cc415ffadf53d
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_30.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_30.dds
deleted file mode 100644
index 0cb75ad8..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_30.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c22790cffd2fcd516f10f264344703ed8febf597a95ad982d59bea679ccac536
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_31.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_31.dds
deleted file mode 100644
index cfce5349..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_31.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:883754bdb5b41b0e28bac47e5076732d95b7fa06e01b5c70b4a8402a4e6ba54a
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_32.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_32.dds
deleted file mode 100644
index 59adae9c..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_32.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4ea29ed8f8a84262766826c65a9022132916d76a442f2ac27a3b0d09ea4b326d
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_33.dds b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_33.dds
deleted file mode 100644
index 9a8ed0a1..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/textures/ui/enhancedGUI_33.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:dacbc04c2ce2bfbef9e6cc731cc43ebe8ea5aff6492c9b517f4bedbd30f49109
-size 2097280
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/info_dx8.txt b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/info_dx8.txt
deleted file mode 100644
index ab4adb1e..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/info_dx8.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-
- V.0.6
- - removed module 11 textures, moved DX8 images in this module. they work fine with all resolutions.
-
- in 800x600 4:3 screens. dynamic background is only added for ui_name_16. doesn't changes ui_name.xml files.
\ No newline at end of file
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/info_dynamic_backgrounds.txt b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/info_dynamic_backgrounds.txt
deleted file mode 100644
index f2669eac..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/info_dynamic_backgrounds.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
- Lauta_ro
-
- "Makes the main menu change background texture and music on each boot and also when opening menu while in a loaded game
- Thanks to RavenAscendant and xcvb"
-
- REQUIRES LATEST MODDED EXES AND FILES
\ No newline at end of file
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/meta.ini b/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/meta.ini
deleted file mode 100644
index 0a76c935..00000000
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/meta.ini
+++ /dev/null
@@ -1,26 +0,0 @@
-[General]
-category="18,"
-newestVersion=
-ignoredVersion=
-version=
-installationFile=
-repository=Nexus
-gameName=stalkeranomaly
-modid=-1
-comments=
-notes=
-nexusDescription=
-url=
-hasCustomURL=false
-nexusFileStatus=1
-lastNexusQuery=
-lastNexusUpdate=
-nexusLastModified=2024-03-14T09:13:50Z
-nexusCategory=0
-converted=false
-validated=false
-color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
-tracked=0
-
-[installedFiles]
-size=0
diff --git a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/configs/ui/game_tutorials.xml b/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/configs/ui/game_tutorials.xml
deleted file mode 100644
index 14e76ced..00000000
--- a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/configs/ui/game_tutorials.xml
+++ /dev/null
@@ -1,635 +0,0 @@
-
-
-
-
-#include "ui\ui_credits.xml"
-
-
- - 0
-
-
-
-
-
- -
- 4
- off
- jump
- xr_effects.on_tutor_gameover_stop
- xr_effects.on_tutor_gameover_quickload
-
- 0
-
-
- st_game_over
-
-
- st_game_over_press_jump
-
-
-
-
-
-
-
- on
-
-
- -
- 1
- any
- 1
-
-
-
- st_press_any_key
-
-
- st_press_any_key
-
-
- st_press_any_key
-
-
-
-
-
-
- 1
-
-
- intro\intro_back
-
-
-
- -
- characters_voice\scenario\video\intro_gsc
- 1
- on
-
- intro\intro_gsc
-
-
-
- -
- characters_voice\scenario\video\dream_rats
- 1
- on
-
- intro\dream_rats
-
-
-
-
-
-
-
-
-
-- 0
-
-
-
- 1
-
-
- back
- intro\intro_back
-
-
-
- -
- intro\hip_1
- 1
- on
- on
-
- intro\hip_1
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.jup_b32_place_scanner
- use
- 0
-
-
- jup_b209_scanner_place_tips
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.pri_b306_generator_start
- use
- 0
-
-
- pri_b306_generator_use
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.jup_b206_get_plant
- use
- 0
-
-
- jup_b206_use_plant
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.pas_b400_switcher
- use
- 0
-
-
- pas_b400_tip_switcher
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.pri_a18_use_idol
- use
- 0
-
-
- pri_a18_use_idol
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.jup_b209_place_scanner
- use
- 0
-
-
- jup_b209_scanner_place_tips
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.jup_b9_heli_1_searching
- use
- 0
-
-
- st_search_helicopter
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.jup_b8_heli_4_searching
- use
- 0
-
-
- st_search_helicopter
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.jup_b10_ufo_searching
- use
- 0
-
-
- jup_b10_ufo_searching_tips
-
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.zat_b101_heli_5_searching
- use
- 0
-
-
- st_search_helicopter
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.zat_b28_heli_3_searching
- use
- 0
-
-
- st_search_helicopter
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.zat_b100_heli_2_searching
- use
- 0
-
-
- st_search_helicopter
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.zat_b33_pic_snag_container
- use
- 0
-
-
- zat_b33_car_searching_tip
-
-
-
-
-
-
-
-
- -
- quit
-
- ui_sleep_dialog.sleep_in_zone
-
- use
- quit
- 0
-
-
- sleep_zone_tip
-
-
-
-
-
-
-
- -
- quit
-
- bind_campfire.use_campfire
- use
- quit
- 0
-
-
- st_ignite_fire
-
-
-
-
-
-
-
- -
- quit
-
- bind_campfire.use_campfire
- use
- quit
- 0
-
-
- st_extinguish_fire
-
-
-
-
-
-
-
- -
- 1
- on
- level_weathers.rain_sound_fix
-
- intro\intro_back
-
-
-
-
-
- 5
-
- on
- characters_voice\scenario\video\dream_rats
-
- intro\intro_back
-
- xr_effects.end_x18_dream
-
-
- -
- 33
-
-
-
- intro\dream_rats
-
-
-
-
-
-
- 5
-
- on
- characters_voice\scenario\video\dream_doctor
-
- intro\intro_back
-
- xr_effects.end_yantar_dream
-
-
- -
- 80
-
-
-
- intro\dream_doctor
-
-
-
-
-
-
-
- 5
-
- on
- characters_voice\scenario\video\dream_sarcofag
-
- intro\intro_back
-
- xr_effects.end_radar_dream
-
-
- -
- 37
-
-
-
- intro\dream_sarcofag
-
-
-
-
-
-
- 5
-
- on
- characters_voice\scenario\video\dream_warlab
-
- intro\intro_back
-
- xr_effects.end_warlab_dream
-
-
- -
- 53
-
-
-
- intro\dream_warlab
-
-
-
-
-
-
- 5
-
- on
- characters_voice\scenario\video\dream_doctor_2
-
- intro\intro_back
-
- xr_effects.game_credits
-
-
- -
- 58
-
-
-
- intro\dream_doctor_2
-
-
-
-
-
-
- 5
-
- on
- characters_voice\scenario\video\final_peace
-
- intro\intro_back
-
- xr_effects.end_final_peace
-
-
- -
- 71
-
-
-
- intro\final_peace
-
-
-
-
-
-
-
-
- -
- 15
-
-
-
-
-
- 0
-
-
- w1
- totaliz_helper_mlr_text
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.bridge_down
- use
- 0
-
-
- bridge_down_red_forest_tips
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.bridge_stop
- use
- 0
-
-
- bridge_stop_red_forest_tips
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.bridge_up
- use
- 0
-
-
- bridge_up_red_forest_tips
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/configs/ui/resc/game_tutorials.xml b/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/configs/ui/resc/game_tutorials.xml
deleted file mode 100644
index 61989b9c..00000000
--- a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/configs/ui/resc/game_tutorials.xml
+++ /dev/null
@@ -1,613 +0,0 @@
-
-
-
-
-#include "ui\ui_credits.xml"
-
-
- - 0
-
-
-
-
-
- -
- 4
- off
- jump
- xr_effects.on_tutor_gameover_stop
- xr_effects.on_tutor_gameover_quickload
-
- 0
-
-
- st_game_over
-
-
- st_game_over_press_jump
-
-
-
-
-
-
-
- on
-
-
- -
- 1
- any
- 1
-
-
-
- st_press_any_key
-
-
- st_press_any_key
-
-
- st_press_any_key
-
-
-
-
-
-
-
-
- - 0
-
-
-
-
-
-
-- 0
-
-
-
- 1
-
-
- back
- intro\intro_back
-
-
-
- -
- intro\hip_1
- 1
- on
- on
-
- intro\hip_1
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.jup_b32_place_scanner
- use
- 0
-
-
- jup_b209_scanner_place_tips
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.pri_b306_generator_start
- use
- 0
-
-
- pri_b306_generator_use
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.jup_b206_get_plant
- use
- 0
-
-
- jup_b206_use_plant
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.pas_b400_switcher
- use
- 0
-
-
- pas_b400_tip_switcher
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.pri_a18_use_idol
- use
- 0
-
-
- pri_a18_use_idol
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.jup_b209_place_scanner
- use
- 0
-
-
- jup_b209_scanner_place_tips
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.jup_b9_heli_1_searching
- use
- 0
-
-
- st_search_helicopter
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.jup_b8_heli_4_searching
- use
- 0
-
-
- st_search_helicopter
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.jup_b10_ufo_searching
- use
- 0
-
-
- jup_b10_ufo_searching_tips
-
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.zat_b101_heli_5_searching
- use
- 0
-
-
- st_search_helicopter
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.zat_b28_heli_3_searching
- use
- 0
-
-
- st_search_helicopter
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.zat_b100_heli_2_searching
- use
- 0
-
-
- st_search_helicopter
-
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.zat_b33_pic_snag_container
- use
- 0
-
-
- zat_b33_car_searching_tip
-
-
-
-
-
-
-
-
- -
- quit
-
- ui_sleep_dialog.sleep_in_zone
-
- use
- quit
- 0
-
-
- sleep_zone_tip
-
-
-
-
-
-
-
- -
- quit
-
- bind_campfire.use_campfire
- use
- quit
- 0
-
-
- st_ignite_fire
-
-
-
-
-
-
-
- -
- quit
-
- bind_campfire.use_campfire
- use
- quit
- 0
-
-
- st_extinguish_fire
-
-
-
-
-
-
-
- -
- 1
- on
- level_weathers.rain_sound_fix
-
- intro\intro_back
-
-
-
-
-
- 5
-
- on
- characters_voice\scenario\video\dream_rats
-
- intro\intro_back
-
- xr_effects.end_x18_dream
-
-
- -
- 33
-
-
-
- intro\dream_rats
-
-
-
-
-
-
- 5
-
- on
- characters_voice\scenario\video\dream_doctor
-
- intro\intro_back
-
- xr_effects.end_yantar_dream
-
-
- -
- 80
-
-
-
- intro\dream_doctor
-
-
-
-
-
-
-
- 5
-
- on
- characters_voice\scenario\video\dream_sarcofag
-
- intro\intro_back
-
- xr_effects.end_radar_dream
-
-
- -
- 37
-
-
-
- intro\dream_sarcofag
-
-
-
-
-
-
- 5
-
- on
- characters_voice\scenario\video\dream_warlab
-
- intro\intro_back
-
- xr_effects.end_warlab_dream
-
-
- -
- 53
-
-
-
- intro\dream_warlab
-
-
-
-
-
-
- 5
-
- on
- characters_voice\scenario\video\dream_doctor_2
-
- intro\intro_back
-
- xr_effects.game_credits
-
-
- -
- 58
-
-
-
- intro\dream_doctor_2
-
-
-
-
-
-
- 5
-
- on
- characters_voice\scenario\video\final_peace
-
- intro\intro_back
-
- xr_effects.end_final_peace
-
-
- -
- 71
-
-
-
- intro\final_peace
-
-
-
-
-
-
-
-
- -
- 15
-
-
-
-
-
- 0
-
-
- w1
- totaliz_helper_mlr_text
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.bridge_down
- use
- 0
-
-
- bridge_down_red_forest_tips
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.bridge_stop
- use
- 0
-
-
- bridge_stop_red_forest_tips
-
-
-
-
-
-
-
- -
- quit
-
- xr_effects.bridge_up
- use
- 0
-
-
- bridge_up_red_forest_tips
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/configs/ui/ui_movies.xml b/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/configs/ui/ui_movies.xml
deleted file mode 100644
index b537d657..00000000
--- a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/configs/ui/ui_movies.xml
+++ /dev/null
@@ -1,361 +0,0 @@
-
-
-
-
-
-
- intro\intro_back
-
-
- 1
-
- -
- 1
- on
- characters_voice\scenario\video\thq_logo_audio
-
- intro\thq_logo_hyuv
-
-
-
- -
- characters_voice\scenario\video\intro_gsc
- 1
- on
-
- intro\intro_gsc
-
-
-
- -
- 9
- on
-
-
- w1
- ui_asus_01
-
-
- w2
- ui_asus_02
-
-
-
- -
- 5
- on
-
-
- w1
- ui\ui_nvidia_intro
-
-
-
-
-
-
-
- 1
-
-
- back
- intro\intro_back
-
-
-
- -
- characters_voice\scenario\video\intro_stalker
- on
-
- intro\intro_stalker
-
-
-
-
-
-
- 1
-
-
- back
- intro\intro_back
-
-
-
- -
- characters_voice\scenario\video\dream_rats
- on
- xr_effects.end_x18_dream
- off
-
- intro\dream_rats
-
-
-
-
-
- 1
-
-
- back
- intro\intro_back
-
-
-
- -
- characters_voice\scenario\video\dream_sarcofag
- on
- xr_effects.end_radar_dream
- off
-
- intro\dream_sarcofag
-
-
-
-
-
- 1
-
-
- back
- intro\intro_back
-
-
-
- -
- characters_voice\scenario\video\dream_doctor
- on
- off
- xr_effects.end_yantar_dream
-
- intro\dream_doctor
-
-
-
-
-
- 1
-
-
- back
- intro\intro_back
-
-
-
- -
- characters_voice\scenario\video\final_blind
- on
- xr_effects.game_credits
- off
-
- intro\final_blind
-
-
-
-
-
- 1
-
-
- back
- intro\intro_back
-
-
-
- -
- characters_voice\scenario\video\final_gold
- on
- xr_effects.game_credits
- off
-
- intro\final_gold
-
-
-
-
-
- 1
-
-
- back
- intro\intro_back
-
-
-
- -
- characters_voice\scenario\video\final_to_monolith
- on
- xr_effects.game_credits
- off
-
- intro\final_to_monolith
-
-
-
-
-
- 1
-
-
- back
- intro\intro_back
-
-
-
- -
- characters_voice\scenario\video\final_apocal
- on
- xr_effects.game_credits
- off
-
- intro\final_apocal
-
-
-
-
-
- 1
-
-
- back
- intro\intro_back
-
-
-
- -
- characters_voice\scenario\video\final_immortal
- on
- off
- xr_effects.game_credits
-
- intro\final_immortal
-
-
-
-
-
- 1
-
-
- back
- intro\intro_back
-
-
-
- -
- characters_voice\scenario\video\dream_doctor_2
- on
- off
- xr_effects.game_credits
-
- intro\dream_doctor_2
-
-
-
-
-
- 1
-
-
- back
- intro\intro_back
-
-
-
- -
- characters_voice\scenario\video\final_peace
- on
- off
- xr_effects.game_credits
-
- intro\final_peace
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/sounds/characters_voice/scenario/video/dream_rats_l.ogg b/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/sounds/characters_voice/scenario/video/dream_rats_l.ogg
deleted file mode 100644
index 9d9445a7..00000000
--- a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/sounds/characters_voice/scenario/video/dream_rats_l.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:32f35c70be2b37885318d62a8ef85950fa40f476f599dc160766d8bb36b309fe
-size 295566
diff --git a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/sounds/characters_voice/scenario/video/dream_rats_r.ogg b/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/sounds/characters_voice/scenario/video/dream_rats_r.ogg
deleted file mode 100644
index f3935d1c..00000000
--- a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/sounds/characters_voice/scenario/video/dream_rats_r.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:792ffe815c24a569c80a82a690edaac8d7fa377dceb5115c2124a13276a84a62
-size 297033
diff --git a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/sounds/characters_voice/scenario/video/intro_gsc_l.ogg b/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/sounds/characters_voice/scenario/video/intro_gsc_l.ogg
deleted file mode 100644
index d27bfb3c..00000000
--- a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/sounds/characters_voice/scenario/video/intro_gsc_l.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ee380a3fc0556b843524e401201815b3a1f1338f352fbca70f1d9d61796eaf73
-size 114689
diff --git a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/sounds/characters_voice/scenario/video/intro_gsc_r.ogg b/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/sounds/characters_voice/scenario/video/intro_gsc_r.ogg
deleted file mode 100644
index d6c8bd70..00000000
--- a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/sounds/characters_voice/scenario/video/intro_gsc_r.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:301c787cf2c849040152835983b9c0a8d6bc2660a6e32746dda751e16ac56632
-size 115980
diff --git a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/textures/intro/dream_rats.ogm b/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/textures/intro/dream_rats.ogm
deleted file mode 100644
index 89b6a177..00000000
Binary files a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/textures/intro/dream_rats.ogm and /dev/null differ
diff --git a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/textures/intro/intro_gsc.ogm b/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/textures/intro/intro_gsc.ogm
deleted file mode 100644
index d444917a..00000000
Binary files a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/gamedata/textures/intro/intro_gsc.ogm and /dev/null differ
diff --git a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/info_intro.txt b/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/info_intro.txt
deleted file mode 100644
index 2f2c5c8b..00000000
--- a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/info_intro.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- "ui_movies.xml" FILE SAFE TO REMOVE
- [this file is extracted from Shadow of Chernobly and not required and works for Anomaly. it's only contained for devs.]
\ No newline at end of file
diff --git a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/meta.ini b/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/meta.ini
deleted file mode 100644
index 0a76c935..00000000
--- a/mods/[DEV] INC - 11 Optional - Enhanced GUI - Intros/meta.ini
+++ /dev/null
@@ -1,26 +0,0 @@
-[General]
-category="18,"
-newestVersion=
-ignoredVersion=
-version=
-installationFile=
-repository=Nexus
-gameName=stalkeranomaly
-modid=-1
-comments=
-notes=
-nexusDescription=
-url=
-hasCustomURL=false
-nexusFileStatus=1
-lastNexusQuery=
-lastNexusUpdate=
-nexusLastModified=2024-03-14T09:13:50Z
-nexusCategory=0
-converted=false
-validated=false
-color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
-tracked=0
-
-[installedFiles]
-size=0
diff --git a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/soulslike_ui_mm_gamemode.xml b/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/soulslike_ui_mm_gamemode.xml
deleted file mode 100644
index c53c0743..00000000
--- a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/soulslike_ui_mm_gamemode.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
- st_cap_check_soulslike_mode
-
-
- ui_inGame2_checkbox
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/soulslike_ui_mm_gamemode_16.xml b/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/soulslike_ui_mm_gamemode_16.xml
deleted file mode 100644
index c53c0743..00000000
--- a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/soulslike_ui_mm_gamemode_16.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
- st_cap_check_soulslike_mode
-
-
- ui_inGame2_checkbox
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_mm_faction_select.xml b/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_mm_faction_select.xml
deleted file mode 100644
index f086bfd5..00000000
--- a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_mm_faction_select.xml
+++ /dev/null
@@ -1,390 +0,0 @@
-
-
-
-
-
-
- ui\enhancedGUI_17
-
-
- ui\enhancedGUI\gui_overlay
-
-
- ui\enhancedGUI\ui_inc_line
-
-
- ui\enhancedGUI\ui_inc_line
-
-
- ui\enhancedGUI\ui_inc_line
-
-
- ui\enhancedGUI\ui_inc_line
-
-
- ui\enhancedGUI\azazel_mode
-
-
- ui\enhancedGUI\portrait_border
-
-
- ui\enhancedGUI\ico_campfire
-
-
- ui\enhancedGUI\ico_loadout
-
-
-
- logoSTALKER
-
-
- logoINC
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- st_mm_new_game_character
-
-
- st_mm_new_game_options
-
-
- st_mm_new_game_inventory
-
-
- st_mm_new_game_loadout
-
-
-
-
- st_mm_btn_new_game_faction
- ui_inGame2_inventory_button
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- st_mm_btn_new_game_icon
- ui_inGame2_inventory_button
-
-
-
-
-
-
-
-
-
- st_mm_new_game_name
-
-
-
-
-
-
- st_mm_new_game_money
-
-
-
-
-
-
- st_mm_new_game_points_left
-
-
-
-
-
-
- ui_new_game_btn_checkbox
-
-
-
- st_mm_new_game_points_used
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- st_mm_btn_new_game_submit
- ui_button_ordinary
-
-
-
-
-
-
-
-
- st_mm_btn_new_game_rand
- ui_button_ordinary
-
-
-
-
-
-
-
-
- st_mm_btn_new_game_back
- ui_button_ordinary
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- st_cap_list_difficulty
-
-
-
-
-
-
-
-
-
- st_cap_list_economy
-
-
-
-
-
-
-
-
-
-
-
-
- st_cap_check_story
-
-
- ui_inGame2_checkbox
-
-
-
- st_cap_check_azazel_mode
-
-
- ui_inGame2_checkbox
-
-
-
- st_cap_check_survival
-
-
- ui_inGame2_checkbox
-
-
-
- st_cap_check_routes
-
-
- ui_inGame2_checkbox
-
-
-
- st_cap_check_warfare
-
-
- ui_inGame2_checkbox
-
-
- st_cap_check_hardcore
-
-
- ui_inGame2_checkbox
-
-
- st_cap_list_hardcore_lives
-
-
-
-
-
-
-
-
-
-
- st_cap_list_hardcore_regen
-
-
-
-
-
-
-
-
-
-
- st_cap_check_drx
-
-
- ui_inGame2_checkbox
-
-
-
- st_cap_check_campfire
-
-
- ui_inGame2_checkbox
-
-
-
- st_cap_check_conditions
-
-
- ui_inGame2_checkbox
-
-
-
- st_cap_list_timer
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_new_game_black_back
-
-
-
-
- ui_new_game_black_back
-
-
-
-
- st_mm_new_game_faction
-
-
-
-
-
-
- ui_new_game_btn_stalker
-
-
- ui_new_game_btn_bandit
-
-
- ui_new_game_btn_csky
-
-
- ui_new_game_btn_dolg
-
-
- ui_new_game_btn_freedom
-
-
- ui_new_game_btn_killer
-
-
- ui_new_game_btn_army
-
-
- ui_new_game_btn_ecolog
-
-
- ui_new_game_btn_monolith
-
-
- ui_new_game_btn_renegade
-
-
- ui_new_game_btn_greh
-
-
- ui_new_game_btn_isg
-
-
-
-
-
-
- ui_new_game_black_back
-
-
-
-
- ui_new_game_black_back
-
-
-
-
- st_mm_new_game_icon
-
-
-
-
-
-
-
- ui_new_game_btn_icon
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_mm_faction_select_16.xml b/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_mm_faction_select_16.xml
deleted file mode 100644
index f086bfd5..00000000
--- a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_mm_faction_select_16.xml
+++ /dev/null
@@ -1,390 +0,0 @@
-
-
-
-
-
-
- ui\enhancedGUI_17
-
-
- ui\enhancedGUI\gui_overlay
-
-
- ui\enhancedGUI\ui_inc_line
-
-
- ui\enhancedGUI\ui_inc_line
-
-
- ui\enhancedGUI\ui_inc_line
-
-
- ui\enhancedGUI\ui_inc_line
-
-
- ui\enhancedGUI\azazel_mode
-
-
- ui\enhancedGUI\portrait_border
-
-
- ui\enhancedGUI\ico_campfire
-
-
- ui\enhancedGUI\ico_loadout
-
-
-
- logoSTALKER
-
-
- logoINC
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- st_mm_new_game_character
-
-
- st_mm_new_game_options
-
-
- st_mm_new_game_inventory
-
-
- st_mm_new_game_loadout
-
-
-
-
- st_mm_btn_new_game_faction
- ui_inGame2_inventory_button
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- st_mm_btn_new_game_icon
- ui_inGame2_inventory_button
-
-
-
-
-
-
-
-
-
- st_mm_new_game_name
-
-
-
-
-
-
- st_mm_new_game_money
-
-
-
-
-
-
- st_mm_new_game_points_left
-
-
-
-
-
-
- ui_new_game_btn_checkbox
-
-
-
- st_mm_new_game_points_used
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- st_mm_btn_new_game_submit
- ui_button_ordinary
-
-
-
-
-
-
-
-
- st_mm_btn_new_game_rand
- ui_button_ordinary
-
-
-
-
-
-
-
-
- st_mm_btn_new_game_back
- ui_button_ordinary
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- st_cap_list_difficulty
-
-
-
-
-
-
-
-
-
- st_cap_list_economy
-
-
-
-
-
-
-
-
-
-
-
-
- st_cap_check_story
-
-
- ui_inGame2_checkbox
-
-
-
- st_cap_check_azazel_mode
-
-
- ui_inGame2_checkbox
-
-
-
- st_cap_check_survival
-
-
- ui_inGame2_checkbox
-
-
-
- st_cap_check_routes
-
-
- ui_inGame2_checkbox
-
-
-
- st_cap_check_warfare
-
-
- ui_inGame2_checkbox
-
-
- st_cap_check_hardcore
-
-
- ui_inGame2_checkbox
-
-
- st_cap_list_hardcore_lives
-
-
-
-
-
-
-
-
-
-
- st_cap_list_hardcore_regen
-
-
-
-
-
-
-
-
-
-
- st_cap_check_drx
-
-
- ui_inGame2_checkbox
-
-
-
- st_cap_check_campfire
-
-
- ui_inGame2_checkbox
-
-
-
- st_cap_check_conditions
-
-
- ui_inGame2_checkbox
-
-
-
- st_cap_list_timer
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_new_game_black_back
-
-
-
-
- ui_new_game_black_back
-
-
-
-
- st_mm_new_game_faction
-
-
-
-
-
-
- ui_new_game_btn_stalker
-
-
- ui_new_game_btn_bandit
-
-
- ui_new_game_btn_csky
-
-
- ui_new_game_btn_dolg
-
-
- ui_new_game_btn_freedom
-
-
- ui_new_game_btn_killer
-
-
- ui_new_game_btn_army
-
-
- ui_new_game_btn_ecolog
-
-
- ui_new_game_btn_monolith
-
-
- ui_new_game_btn_renegade
-
-
- ui_new_game_btn_greh
-
-
- ui_new_game_btn_isg
-
-
-
-
-
-
- ui_new_game_black_back
-
-
-
-
- ui_new_game_black_back
-
-
-
-
- st_mm_new_game_icon
-
-
-
-
-
-
-
- ui_new_game_btn_icon
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_mm_load_dlg_16.xml b/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_mm_load_dlg_16.xml
deleted file mode 100644
index de538356..00000000
--- a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_mm_load_dlg_16.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-
-
-
-
-
-
- ui\enhancedGUI_17
-
-
- ui\enhancedGUI\gui_overlay
-
-
- ui\enhancedGUI\ui_inc_line
-
-
- ui\enhancedGUI\ui_inc_line
-
-
- logoSTALKER
-
-
- logoINC
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_mm_main.xml b/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_mm_main.xml
deleted file mode 100644
index a558b456..00000000
--- a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_mm_main.xml
+++ /dev/null
@@ -1,131 +0,0 @@
-
-
-
-
-
-
- ui\enhancedGUI_17
-
-
- ui\enhancedGUI\ui_inc_overlay_shadow
-
-
- ui\enhancedGUI\ui_inc_version
-
-
- ui\enhancedGUI\ui_inc_panel
-
-
- ui\enhancedGUI\ui_inc_bottom
-
-
- logoSTALKER
-
-
- logoMODDB
-
-
- logoGSC
-
-
- logoINC
-
-
-
-
-
-
- ui_inGame2_slider
-
- ui_magnifier2
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_menu_click
-
- music\karlcasey_whitebat_creepingfog
-
-
-
-
-
-
-
-
-
- ui_icons_PDA_tooltips
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_mm_main_16.xml b/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_mm_main_16.xml
deleted file mode 100644
index 7f8041d4..00000000
--- a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_mm_main_16.xml
+++ /dev/null
@@ -1,131 +0,0 @@
-
-
-
-
-
-
- ui\enhancedGUI_17
-
-
- ui\enhancedGUI\ui_inc_overlay_shadow
-
-
- ui\enhancedGUI\ui_inc_version
-
-
- ui\enhancedGUI\ui_inc_panel
-
-
- ui\enhancedGUI\ui_inc_bottom
-
-
- logoSTALKER
-
-
- logoMODDB
-
-
- logoGSC
-
-
- logoINC
-
-
-
-
-
-
- ui_inGame2_slider
-
- ui_magnifier2
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_menu_click
-
- music\anomaly_ilya_ponomarenko_day_one
-
-
-
-
-
-
-
-
-
- ui_icons_PDA_tooltips
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_mm_save_dlg_16.xml b/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_mm_save_dlg_16.xml
deleted file mode 100644
index 9de8dfcf..00000000
--- a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_mm_save_dlg_16.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
-
-
-
- ui\enhancedGUI_17
-
-
- ui\enhancedGUI\gui_overlay
-
-
- ui\enhancedGUI\ui_inc_line
-
-
- ui\enhancedGUI\ui_inc_line
-
-
- logoSTALKER
-
-
- logoINC
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_options_16.xml b/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_options_16.xml
deleted file mode 100644
index 379fe173..00000000
--- a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/configs/ui/ui_options_16.xml
+++ /dev/null
@@ -1,298 +0,0 @@
-
-
-
-
-
-
- ui\enhancedGUI_17
-
-
- ui\enhancedGUI\gui_overlay
-
-
- logoSTALKER
-
-
- logoINC
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_icons_PDA_tooltips
-
-
- ui_icons_PDA_tooltips
-
-
- ui_icons_PDA_tooltips
-
-
-
- ui_mm_preset
-
-
-
- ui_inGame2_edit_box_2
-
-
-
-
-
-
-
-
-
-
- ui_mm_apply
- ui_button_ordinary
-
-
-
-
-
-
-
-
- ui_mm_reset
- ui_button_ordinary
-
-
-
-
-
-
-
-
- ui_mm_default
- ui_button_ordinary
-
-
-
-
-
-
-
-
- ui_mm_cancel
- ui_button_ordinary
-
-
-
-
-
-
-
-
-
-
-
-
- ui_icons_PDA_dialog_frame
-
-
-
-
-
- ui_checkbox_TabLED
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_button_ordinary
-
-
- ui_mm_btn_apply_all
-
-
-
- ui_stroketextbox
-
-
- ui_button_inv
-
-
-
-
-
-
- ui_inGame2_opt_slider_bar_back
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_inGame2_opt_slider_bar_back
-
-
-
-
-
-
- ui_inGame2_opt_slider_bar_back
-
-
-
-
- ui_inGame2_checkbox
-
-
-
-
-
-
-
-
-
-
-
-
- ui_inGame2_edit_box_2
-
-
-
-
-
-
-
-
-
-
- ui\ui_console
-
-
-
-
-
- ui_radio
-
-
-
-
-
-
-
-
- ui_inGame2_checkbox
-
-
-
-
-
-
-
-
-
-
- ui_inGame2_servers_list_button
-
- ui_mm_keyboard_setup
-
-
-
-
-
- ui_inGame2_servers_list_button
-
- ui_mm_action
-
-
-
- ui_inGame2_servers_list_button
-
- ui_mm_key
-
-
-
- ui_inGame2_servers_list_button
-
-
- ui_inGame2_empty_frameline_15
-
- ui_mm_alternative
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_icons_PDA_tooltips
-
-
-
- ui_mm_video_basic_lighting
-
-
-
-
-
-
- ui_mm_video_basic_gamma
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/scripts/ui_options.script b/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/scripts/ui_options.script
deleted file mode 100644
index ba435a8d..00000000
--- a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/gamedata/scripts/ui_options.script
+++ /dev/null
@@ -1,2733 +0,0 @@
-
---[[
-
- Tronex
- 2019/10/12
- Anomlous Options Menu
-
- Features:
- - %100 customizable, support for all kind of xml elements
- - Highlight pending changes
- - Option description support
- - Option presets support
- - Reset button to clear pending changes
- - Script callback on option changes
- - Functors capability to excute on apply or init
- - Precoditions capability to hide/show/execute functors
-
- To get an option value inside other scripts, use: ui_options.get(parameter)
- Check the options table here to see the values used
-
- See the tutorial at the bottom for adding or modifying options table
-
---]]
-
-local enable_debug = false
-------------------------------------------------------------
--- Strings and LTX management
-------------------------------------------------------------
-local ini_pres = ini_file("presets\\includes.ltx")
-local ini_loc = ini_file_ex("localization.ltx",true)
-local _opt_ = "/" -- For axr_options.ltx, don't touch!
-local opt_section = "options" -- For axr_options.ltx, don't touch!
-local opt_str = "ui_mm_" -- Option name: "ui_mm_(option ID)" -- Option description: "ui_mm_(option ID)_desc"
-local opt_str_menu = "ui_mm_menu_" -- Option menu: "ui_mm_menu_(option menu ID)"
-local opt_str_prst = "ui_mm_prst_" -- Option preset: "ui_mm_prst_(option preset ID)"
-local opt_str_lst = "ui_mm_lst_" -- List/Radio keys: "ui_mm_lst_(key)"
-function cc(path,opt) return (path .. _opt_ .. opt) end
-
-------------------------------------------------------------
--- Utilities
-------------------------------------------------------------
-
-local m_floor, m_ceil, s_find, s_gsub = math.floor, math.ceil, string.find, string.gsub
-local clr, clamp, round_idp, str_explode = utils_xml.get_color, clamp, round_idp, str_explode
-local precision = 6 -- allowed number of zeros
-local width_factor = utils_xml.is_widescreen() and 0.8 or 1
-local clr_o = GetARGB(255, 250, 150, 75)
-local clr_g1 = GetARGB(255, 170, 170, 170)
-local clr_g2 = GetARGB(255, 200, 200, 200)
-local clr_w = GetARGB(255, 255, 255, 255)
-local clr_tree = {
- [1] = GetARGB(255, 180, 180, 180),
- [2] = GetARGB(255, 180, 180, 180),
- [3] = GetARGB(255, 180, 180, 180),
-}
-
-function print_dbg(...)
- if enable_debug then
- printf(...)
- end
-end
-
-
-
-------------------------------------------------------------
--- Options
-------------------------------------------------------------
-options = {}
-local opt_temp = {} -- stores pending changes
-local opt_backup = {} -- do a backup of original changes for comparison with pendings
-local opt_index = {} -- option index by path, so we can locate an option fast without iterating throw the whole options table
-local opt_val = {} -- option value type by path, to execute proper functions on different type without iterating throw the whole options table
-local allowed_type = { -- ignore tables from these types in temp tables
- ["check"] = true,
- ["list"] = true,
- ["input"] = true,
- ["radio_h"] = true,
- ["radio_v"] = true,
- ["track"] = true,
-}
-function init_opt_base()
-
-options = {
-
-{ id= "video" ,gr={
- { id= "basic" ,sh=true ,gr={
- { id= "slide_vid" ,type= "slide" ,link= "ui_options_slider_video" ,text= "ui_mm_title_video_basic" ,size= {512,50} },
-
- { id= "renderer" ,type= "list" ,val= 0 ,cmd= "renderer" ,curr= {curr_renderer} ,content= {cont_renderer} ,restart= true ,vid= true },
--- { id= "preset" ,type= "list" ,val= 0 ,cmd= "_preset" ,content= {{"Minimum","pres_minimum"} , {"Low","pres_low"} , {"Default","pres_default"} , {"High","pres_high"} , {"Extreme","pres_extreme"}} ,restart= true},
- { id= "resolution" ,type= "list" ,val= 0 ,cmd= "vid_mode" ,content= {cont_vid_mode} ,no_str= true ,restart= true ,vid= true },
- { id= "gamma" ,type= "track" ,val= 2 ,cmd= "rs_c_gamma" ,min= 0.5 ,max= 1.5 ,step= 0.1 ,precondition= {for_renderer,"renderer_r1"} },
- { id= "contrast" ,type= "track" ,val= 2 ,cmd= "rs_c_contrast" ,min= 0.5 ,max= 1.5 ,step= 0.1 ,precondition= {for_renderer,"renderer_r1"} },
- { id= "brightness" ,type= "track" ,val= 2 ,cmd= "rs_c_brightness" ,min= 0.5 ,max= 1.5 ,step= 0.1 ,precondition= {for_renderer,"renderer_r1"} },
- { id= "fov" ,type= "track" ,val= 2 ,cmd= "fov" ,min= 5 ,max= 180 ,step= 1 },
- { id= "hud_fov" ,type= "track" ,val= 2 ,cmd= "hud_fov" ,min= 0.1 ,max= 1 ,step= 0.01 },
- { id= "screen_mode" ,type= "radio_h" ,val= 2 ,curr= {curr_screen_mode} ,content= {{1,"fullscreen"} , {2,"borderless"} , {3,"windowed"}} ,functor = {func_screen_mode} },
- { id= "lighting" ,type= "button" ,functor_ui= {start_lighting_ui} ,precondition= {level_present} ,precondition_1= {for_renderer,"renderer_r2a","renderer_r2","renderer_r2.5","renderer_r3","renderer_r4"} },
-},},
- { id= "advanced" ,presets= {"video_extreme","video_high","video_default","video_low","video_minimum"} ,sh=true ,gr={
- { id= "slide_vid_adv" ,type= "slide" ,link= "ui_options_slider_video_advanced" ,text= "ui_mm_title_video_advanced" ,size= {512,50} },
-
- { id= "ai_torch" ,type= "check" ,val= 1 ,cmd= "ai_use_torch_dynamic_lights" },
- { id= "v_sync" ,type= "check" ,val= 1 ,cmd= "rs_v_sync" },
- { id= "framelimit" ,type= "track" ,val= 2 ,cmd= "r__framelimit" ,min= 0 ,max= 500 ,step= 2 },
-
- { id= "line" ,type= "line" },
- { id= "title" ,type= "title" ,text= "ui_mm_header_rendering_dist" ,align= "l" ,clr= {255,200,200,200} },
- { id= "vis_distance" ,type= "track" ,val= 2 ,cmd= "rs_vis_distance" ,min= 0.4 ,max= 1.5 ,step= 0.1 ,no_str= true },
- { id= "optimize_static_geom" ,type= "track" ,val= 2 ,cmd= "r__optimize_static_geom" ,min= 0 ,max= 4 ,step= 1 ,no_str= true ,invert= true },
- { id= "optimize_dynamic_geom" ,type= "track" ,val= 2 ,cmd= "r__optimize_dynamic_geom" ,min= 0 ,max= 4 ,step= 1 ,no_str= true ,invert= true },
- { id= "optimize_shadow_geom" ,type= "check" ,val= 1 ,cmd= "r__optimize_shadow_geom" },
-
- { id= "line" ,type= "line" },
- { id= "title" ,type= "title" ,text= "ui_mm_header_rendering_quality" ,align= "l" ,clr= {255,200,200,200} },
- { id= "texture_lod" ,type= "track" ,val= 2 ,cmd= "texture_lod" ,min= 0 ,max= 4 ,step= 1 ,no_str= true ,invert= true ,vid= true ,restart= true },
- { id= "geometry_lod" ,type= "track" ,val= 2 ,cmd= "r__geometry_lod" ,min= 0.1 ,max= 1.5 ,step= 0.1 },
- { id= "mipbias" ,type= "track" ,val= 2 ,cmd= "r__tf_mipbias" ,min= -0.5 ,max= 0.5 ,step= 0.1 ,no_str= true ,invert= true },
- { id= "tf_aniso" ,type= "list" ,val= 0 ,cmd= "r__tf_aniso" ,content={ {"0","0"},{"4","4"},{"8","8"},{"16","16"} } ,vid= true, no_str= true },
- { id= "ssample" ,type= "track" ,val= 2 ,cmd= "r__supersample" ,min= 1 ,max= 8 ,step= 1 ,vid= true ,precondition= {for_renderer,"renderer_r1","renderer_r2a","renderer_r2","renderer_r2.5"} },
- { id= "ssample_list" ,type= "list" ,val= 0 ,cmd= "r3_msaa" ,content={ {"st_opt_off","st_opt_off"},{"2x","x2"},{"4x","x4"},{"8x","x8"} } ,vid= true ,precondition= {for_renderer,"renderer_r3","renderer_r4"} , no_str= true },
- { id= "smaa" ,type= "list" ,val= 0 ,cmd= "r2_smaa" ,content={ {"off","st_opt_off"},{"low","st_opt_low"},{"medium","st_opt_medium"},{"high","st_opt_high"},{"ultra","st_opt_ultra"} } ,precondition= {for_renderer,"renderer_r2a","renderer_r2","renderer_r2.5","renderer_r3","renderer_r4"}, no_str= true },
- { id= "detail_textures" ,type= "check" ,val= 1 ,cmd= "r1_detail_textures" ,vid= true ,precondition= {for_renderer,"renderer_r1"} },
- { id= "detail_bump" ,type= "check" ,val= 1 ,cmd= "r2_detail_bump" ,vid= true ,precondition= {for_renderer,"renderer_r2","renderer_r2.5","renderer_r3","renderer_r4"} },
- { id= "steep_parallax" ,type= "check" ,val= 1 ,cmd= "r2_steep_parallax" ,vid= true ,precondition= {for_renderer,"renderer_r2.5","renderer_r3","renderer_r4"} },
- { id= "enable_tessellation" ,type= "check" ,val= 1 ,cmd= "r4_enable_tessellation" ,vid= true ,precondition= {for_renderer,"renderer_r4"} },
-
- { id= "line" ,type= "line" },
- { id= "title" ,type= "title" ,text= "ui_mm_header_grass" ,align= "l" ,clr= {255,200,200,200} },
- { id= "detail_density" ,type= "track" ,val= 2 ,cmd= "r__detail_density" ,min= 0.04 ,max= 1 ,step= 0.02 ,prec = 2 ,invert= true ,vid= true ,restart= true ,no_str= true },
- { id= "detail_radius" ,type= "track" ,val= 2 ,cmd= "r__detail_radius" ,min= 50 ,max= 250 ,step= 20 ,restart= true ,vid= true },
- { id= "detail_height" ,type= "track" ,val= 2 ,cmd= "r__detail_height" ,min= 0.5 ,max= 2 ,step= 0.1 ,restart= true ,vid= true },
- { id= "grass_shadow" ,type= "check" ,val= 1 ,cmd= "r__enable_grass_shadow" ,vid= true ,precondition= {for_renderer,"renderer_r2","renderer_r2.5","renderer_r3","renderer_r4"} },
-
- { id= "line" ,type= "line" ,precondition= {for_renderer,"renderer_r2a","renderer_r2","renderer_r2.5","renderer_r3","renderer_r4"} },
- { id= "title" ,type= "title" ,text= "ui_mm_header_lighting" ,align= "l" ,clr= {255,200,200,200} ,precondition= {for_renderer,"renderer_r2a","renderer_r2","renderer_r2.5","renderer_r3","renderer_r4"}},
- { id= "slight_fade" ,type= "track" ,val= 2 ,cmd= "r2_slight_fade" ,min= 0.2 ,max= 1 ,step= 0.1 ,vid= true ,precondition= {for_renderer,"renderer_r2a","renderer_r2","renderer_r2.5","renderer_r3","renderer_r4"} },
- { id= "ls_squality" ,type= "track" ,val= 2 ,cmd= "r2_ls_squality" ,min= 0.5 ,max= 1 ,step= 0.5 ,vid= true ,precondition= {for_renderer,"renderer_r2a","renderer_r2","renderer_r2.5","renderer_r3","renderer_r4"} },
- { id= "actor_shadow" ,type= "check" ,val= 1 ,cmd= "r__actor_shadow" ,precondition= {for_renderer,"renderer_r2","renderer_r2.5","renderer_r3","renderer_r4"} },
- { id= "gloss_factor" ,type= "track" ,val= 2 ,cmd= "r2_gloss_factor" ,min= 0 ,max= 10 ,step= 0.5 ,precondition= {for_renderer,"renderer_r2a","renderer_r2","renderer_r2.5","renderer_r3","renderer_r4"} },
- { id= "sun" ,type= "check" ,val= 1 ,cmd= "r2_sun" ,vid= true ,precondition= {for_renderer,"renderer_r2","renderer_r2.5","renderer_r3","renderer_r4"} },
- { id= "sun_quality" ,type= "list" ,val= 0 ,cmd= "r2_sun_quality" ,content={cont_sun_quality} ,vid= true ,precondition= {for_renderer,"renderer_r2.5","renderer_r3","renderer_r4"} },
--- { id= "sun_details" ,type= "check" ,val= 1 ,cmd= "r2_sun_details" ,vid= true ,precondition= {for_renderer,"renderer_r2","renderer_r2.5","renderer_r3","renderer_r4"} },
- { id= "sunshafts_mode" ,type= "radio_v" ,val= 0 ,cmd= "r2_sunshafts_mode" ,content={ {"off"},{"volumetric"},{"screen_space"},{"combined"} } ,vid= true ,precondition= {for_renderer,"renderer_r2.5","renderer_r3","renderer_r4"} },
- { id= "sunshafts_quality" ,type= "list" ,val= 0 ,cmd= "r2_sunshafts_quality" ,content={ {"st_opt_low","low"},{"st_opt_medium","medium"},{"st_opt_high","high"} } ,vid= true ,precondition= {for_renderer,"renderer_r2.5","renderer_r3","renderer_r4"} },
- { id= "sunshafts_value" ,type= "track" ,val= 2 ,cmd= "r2_sunshafts_value" ,min= 0.5 ,max= 2 ,step= 0.1 ,vid= true ,precondition= {for_renderer,"renderer_r2.5","renderer_r3","renderer_r4"} },
- { id= "sunshafts_min" ,type= "track" ,val= 2 ,cmd= "r2_sunshafts_min" ,min= 0 ,max= 0.5 ,step= 0.05 ,vid= true ,precondition= {for_renderer,"renderer_r2.5","renderer_r3","renderer_r4"} },
- { id= "ssao_mode" ,type= "radio_v" ,val= 0 ,cmd= "r2_ssao_mode" ,content={ {"disabled","st_opt_off"},{"default","SSDO"},{"hbao","HBAO"},{"hdao","HDAO"}} ,vid= true , no_str = true ,restart= true ,precondition= {for_renderer,"renderer_r2.5","renderer_r3","renderer_r4"} },
- { id= "ssao" ,type= "list" ,val= 0 ,cmd= "r2_ssao" ,content={ {"st_opt_off","off"},{"st_opt_low","low"},{"st_opt_medium","medium"},{"st_opt_high","high"} } ,vid= true ,restart= true ,precondition= {for_renderer,"renderer_r2.5","renderer_r3","renderer_r4"} },
- { id= "volumetric_lights" ,type= "check" ,val= 1 ,cmd= "r2_volumetric_lights" ,vid= true ,precondition= {for_renderer,"renderer_r2.5","renderer_r3","renderer_r4"} },
-
- { id= "line" ,type= "line" ,precondition= {for_renderer,"renderer_r2.5","renderer_r3","renderer_r4"}},
- { id= "title" ,type= "title" ,text= "ui_mm_header_effects" ,align= "l" ,clr= {255,200,200,200} ,precondition= {for_renderer,"renderer_r2.5","renderer_r3","renderer_r4"}},
- { id= "soft_water" ,type= "check" ,val= 1 ,cmd= "r2_soft_water" ,vid= true ,precondition= {for_renderer,"renderer_r2.5","renderer_r3","renderer_r4"} },
- { id= "soft_particles" ,type= "check" ,val= 1 ,cmd= "r2_soft_particles" ,vid= true ,precondition= {for_renderer,"renderer_r2.5","renderer_r3","renderer_r4"} },
- { id= "dof_enable" ,type= "check" ,val= 1 ,cmd= "r2_dof_enable" ,precondition= {for_renderer,"renderer_r2.5","renderer_r3","renderer_r4"} },
- { id= "mblur_enable" ,type= "check" ,val= 1 ,cmd= "r2_mblur_enabled" ,vid= true ,precondition= {for_renderer,"renderer_r2.5","renderer_r3","renderer_r4"} },
- { id= "mblur" ,type= "track" ,val= 2 ,def= 0.4 ,cmd= "r2_mblur" ,min= 0 ,max= 1 ,step= 0.05 ,precondition= {for_renderer,"renderer_r2.5","renderer_r3","renderer_r4"} },
- { id= "dynamic_wet_surfaces" ,type= "check" ,val= 1 ,cmd= "r3_dynamic_wet_surfaces" ,vid= true ,precondition= {for_renderer,"renderer_r3","renderer_r4"} },
- { id= "volumetric_smoke" ,type= "check" ,val= 1 ,cmd= "r3_volumetric_smoke" ,vid= true ,precondition= {for_renderer,"renderer_r3","renderer_r4"} },
--- { id= "msaa_alphatest" ,type= "list" ,val= 0 ,cmd= "r3_msaa_alphatest" ,content={ {"st_opt_off","off"},{"st_atest_msaa_dx10_0","atest_msaa_dx10_0"},{"st_atest_msaa_dx10_1","atest_msaa_dx10_1"} } ,vid= true ,precondition= {for_renderer,"renderer_r3","renderer_r4"} },
--- { id= "msaa_opt" ,type= "check" ,val= 1 ,cmd= "r3_msaa_opt" ,vid= true ,precondition= {for_renderer,"renderer_r3","renderer_r4"} },
-
- },},
- { id= "hud" ,sh=true ,gr={
- { id= "slide_hud" ,type= "slide" ,link= "ui_options_slider_hud" ,text= "ui_mm_title_hud" ,size= {512,50} ,spacing= 20 },
-
- { id= "show_crosshair" ,type= "check" ,val= 1 ,def= false ,cmd= "hud_crosshair" },
- { id= "crosshair_dist" ,type= "check" ,val= 1 ,def= false ,cmd= "hud_crosshair_dist" },
- { id= "crosshair_clr_a" ,type= "track" ,val= 2 ,min= 0 ,max= 255 ,step= 1 ,curr= {curr_crosshair_clr,"a"} ,functor= {func_crosshair_clr,"a"} },
- { id= "crosshair_clr_r" ,type= "track" ,val= 2 ,min= 0 ,max= 255 ,step= 1 ,curr= {curr_crosshair_clr,"r"} ,functor= {func_crosshair_clr,"r"} },
- { id= "crosshair_clr_g" ,type= "track" ,val= 2 ,min= 0 ,max= 255 ,step= 1 ,curr= {curr_crosshair_clr,"g"} ,functor= {func_crosshair_clr,"g"} },
- { id= "crosshair_clr_b" ,type= "track" ,val= 2 ,min= 0 ,max= 255 ,step= 1 ,curr= {curr_crosshair_clr,"b"} ,functor= {func_crosshair_clr,"b"} },
-
- { id= "line" ,type= "line" },
- { id= "show_hud" ,type= "check" ,val= 1 ,def= true ,cmd= "hud_draw" },
--- { id= "dynamic_crosshair" ,type= "check" ,val= 1 ,def= false ,cmd= "cl_dynamiccrosshair" },
- { id= "show_slots" ,type= "check" ,val= 1 ,def= true ,functor= {func_slot_hud} },
- { id= "show_wpn" ,type= "check" ,val= 1 ,def= true ,cmd= "hud_weapon" },
- { id= "show_tracers" ,type= "check" ,val= 1 ,def= true ,cmd= "g_use_tracers" },
- { id= "show_minimap" ,type= "check" ,val= 1 ,def= false ,functor= {func_hud_minimap} },
- { id= "show_enemy_health" ,type= "check" ,val= 1 ,def= false },
- { id= "show_identity" ,type= "check" ,val= 1 ,def= false ,cmd= "hud_info" },
- { id= "autohide_stamina_bar" ,type= "check" ,val= 1 ,def= true ,functor= {func_hud_autohide_bar} },
- { id= "3d_pda" ,type= "check" ,val= 1 ,def= true ,cmd= "g_3d_pda" },
- { id= "ironsights_zoom_factor" ,type= "track" ,val= 2 ,min= 1 ,max= 2 ,step= 0.1 ,cmd= "g_ironsights_zoom_factor" },
- { id= "head_bob_factor" ,type= "track" ,val= 2 ,min= 0 ,max= 2 ,step= 0.1 ,cmd= "head_bob_factor" },
-
- },},
- { id= "player" ,sh=true ,gr={
- { id= "slide_player" ,type= "slide" ,link= "ui_options_slider_player" ,text= "ui_mm_title_effects" ,size= {512,50} },
-
- { id= "animations" ,type= "check" ,val= 1 ,def= true },
- { id= "item_swap_animation" ,type= "check" ,val= 1 ,def= true },
- { id= "shoot_effects" ,type= "check" ,val= 1 ,def= false },
-
- { id= "radiation_effect" ,type= "check" ,val= 1 ,def= true },
- { id= "blood_splash" ,type= "check" ,val= 1 ,def= false },
- { id= "bleed_effect" ,type= "check" ,val= 1 ,def= true },
- --{ id="tiny_pfx" ,type= "check" ,val= 1 ,def= true },
-
- { id= "slide_mask" ,type= "slide" ,link= "ui_options_slider_mask" ,text= "ui_mm_title_mask" ,size= {512,50} ,spacing= 20 },
- { id= "mask_hud" ,type= "check" ,val= 1 ,def= true },
- { id= "breathing_fog" ,type= "check" ,val= 1 ,def= true },
- { id= "rain_droplets" ,type= "check" ,val= 1 ,def= true },
- { id= "visor_reflection" ,type= "check" ,val= 1 ,def= true },
- },},
- { id= "weather" ,sh=true ,gr={
- { id= "clear_slide" ,type= "slide" ,link= "ui_options_slider_weather_clear" ,text= "st_wthr_clear" ,size= {512,50} },
- { id= "clear_period" ,type= "radio_h" ,val= 2 ,def= random_choice(4,6) ,content={ {3,"3h"},{4,"4h"},{5,"5h"},{6,"6h"},{7,"7h"},{8,"8h"},{9,"9h"},{10,"10h"},{11,"11h"},{12,"12h"} } ,hint= "video_weather_period" ,force_horz = true },
- { id= "clear_occurrence" ,type= "radio_v" ,val= 2 ,def= random_choice(2,3) ,content={ {1,"none"},{2,"rare"},{3,"regular"} } ,hint= "video_weather_occurrence" },
-
- { id= "partly_slide" ,type= "slide" ,link= "ui_options_slider_weather_partly" ,text= "st_wthr_partly" ,size= {512,50} },
- { id= "partly_period" ,type= "radio_h" ,val= 2 ,def= random_choice(4,6) ,content={ {3,"3h"},{4,"4h"},{5,"5h"},{6,"6h"},{7,"7h"},{8,"8h"},{9,"9h"},{10,"10h"},{11,"11h"},{12,"12h"} } ,hint= "video_weather_period" ,force_horz = true },
- { id= "partly_occurrence" ,type= "radio_v" ,val= 2 ,def= random_choice(2,3) ,content={ {1,"none"},{2,"rare"},{3,"regular"} } ,hint= "video_weather_occurrence" },
-
- { id= "cloudy_slide" ,type= "slide" ,link= "ui_options_slider_weather_cloudy" ,text= "st_wthr_cloudy" ,size= {512,50} },
- { id= "cloudy_period" ,type= "radio_h" ,val= 2 ,def= random_choice(4,6) ,content={ {3,"3h"},{4,"4h"},{5,"5h"},{6,"6h"},{7,"7h"},{8,"8h"},{9,"9h"},{10,"10h"},{11,"11h"},{12,"12h"} } ,hint= "video_weather_period" ,force_horz = true },
- { id= "cloudy_occurrence" ,type= "radio_v" ,val= 2 ,def= random_choice(2,3) ,content={ {1,"none"},{2,"rare"},{3,"regular"} } ,hint= "video_weather_occurrence" },
-
- { id= "rain_slide" ,type= "slide" ,link= "ui_options_slider_weather_rain" ,text= "st_wthr_rain" ,size= {512,50} },
- { id= "rain_period" ,type= "radio_h" ,val= 2 ,def= random_choice(4,6) ,content={ {3,"3h"},{4,"4h"},{5,"5h"},{6,"6h"},{7,"7h"},{8,"8h"},{9,"9h"},{10,"10h"},{11,"11h"},{12,"12h"} } ,hint= "video_weather_period" ,force_horz = true },
- { id= "rain_occurrence" ,type= "radio_v" ,val= 2 ,def= random_choice(2,3) ,content={ {1,"none"},{2,"rare"},{3,"regular"} } ,hint= "video_weather_occurrence" },
-
- { id= "storm_slide" ,type= "slide" ,link= "ui_options_slider_weather_storm" ,text= "st_wthr_storm" ,size= {512,50} },
- { id= "storm_period" ,type= "radio_h" ,val= 2 ,def= random_choice(4,6) ,content={ {3,"3h"},{4,"4h"},{5,"5h"},{6,"6h"},{7,"7h"},{8,"8h"},{9,"9h"},{10,"10h"},{11,"11h"},{12,"12h"} } ,hint= "video_weather_period" ,force_horz = true },
- { id= "storm_occurrence" ,type= "radio_v" ,val= 2 ,def= random_choice(2,3) ,content={ {1,"none"},{2,"rare"},{3,"regular"} } ,hint= "video_weather_occurrence" },
-
- { id= "foggy_slide" ,type= "slide" ,link= "ui_options_slider_weather_foggy" ,text= "st_wthr_foggy" ,size= {512,50} },
- { id= "foggy_period" ,type= "radio_h" ,val= 2 ,def= random_choice(4,6) ,content={ {3,"3h"},{4,"4h"},{5,"5h"},{6,"6h"},{7,"7h"},{8,"8h"},{9,"9h"},{10,"10h"},{11,"11h"},{12,"12h"} } ,hint= "video_weather_period" ,force_horz = true },
- { id= "foggy_occurrence" ,type= "radio_v" ,val= 2 ,def= random_choice(2,3) ,content={ {1,"none"},{2,"rare"},{3,"regular"} } ,hint= "video_weather_occurrence" },
-
- },},
- { id= "night" ,sh=true ,gr={
- { id= "slide_night" ,type= "slide" ,link= "ui_options_slider_night" ,text= "ui_mm_title_night" ,size= {512,50} },
-
- { id= "brightness" ,type= "list" ,val= 0 ,def= "slight" ,content= {{"dark","dark_night"} , {"slight","slight_night"} , {"medium","medium_night"} , {"bright","bright_night"}} },
- { id= "moon_cycle" ,type= "radio_h" ,val= 2 ,def= 8 ,content= {{8,"8days"} , {28,"28days"}} },
- { id= "moon_phase_state" ,type= "check" ,val= 1 ,def= false },
- { id= "moon_phase" ,type= "radio_v" ,val= 2 ,def= 8 ,content= {{0,"moon_phase_0"} , {1,"moon_phase_1"} , {2,"moon_phase_2"} , {3,"moon_phase_3"} , {4,"moon_phase_4"} , {5,"moon_phase_5"} , {6,"moon_phase_6"} , {7,"moon_phase_7"}} },
- },},
-},},
-{ id= "sound" ,gr={
- { id= "general" ,sh=true ,gr={
- { id= "slide_sound" ,type= "slide" ,link= "ui_options_slider_sound" ,text= "ui_mm_title_sound" ,size= {512,50} },
-
- { id= "master_volume" ,type= "track" ,val= 2 ,cmd= "snd_volume_eff" ,min= 0 ,max= 1 ,step= 0.1 },
- { id= "music_volume" ,type= "track" ,val= 2 ,cmd= "snd_volume_music" ,min= 0 ,max= 1 ,step= 0.1 },
- { id= "sound_device" ,type= "list" ,val= 0 ,cmd= "snd_device" ,no_str= true ,restart= true },
- { id= "eax" ,type= "check" ,val= 1 ,cmd= "snd_efx" },
- { id= "dynamic_music" ,type= "check" ,val= 1 ,cmd= "g_dynamic_music" },
- { id= "caption" ,type= "radio_v" ,val= 0 ,def= "none" ,content={ {"none"},{"storyonly"},{"all"} } },
- },},
- { id= "environment" ,sh=true ,gr={
- { id= "slide_sound" ,type= "slide" ,link= "ui_options_slider_sound_environment" ,text= "ui_mm_title_sound_environment" ,size= {512,50} },
-
- { id= "ambient_volume" ,type= "track" ,val= 2 ,def= 1 ,min= 0 ,max= 1 ,step= 0.1 },
- { id= "wind_sound" ,type= "check" ,val= 1 ,def= true },
- { id= "breathing_sound" ,type= "check" ,val= 1 ,def= true },
- { id= "helmet_rain_sound" ,type= "check" ,val= 1 ,def= true },
- },},
- { id= "radio" ,sh=true ,gr={
- { id= "slide_radio" ,type= "slide" ,link= "ui_options_slider_radio" ,text= "ui_mm_title_sound_radio" ,size= {512,50} },
-
- { id= "zone" ,type= "check" ,val= 1 ,def= true },
- { id= "emission_intereferences" ,type= "check" ,val= 1 ,def= true },
- { id= "underground_intereferences" ,type= "check" ,val= 1 ,def= true },
- { id= "display_tracks" ,type= "check" ,val= 1 ,def= false },
- -- playlist names
- },},
-},},
-{ id= "control" ,gr={
- { id= "general" ,sh=true ,gr={
- { id= "slide_control" ,type= "slide" ,link= "ui_options_slider_control" ,text= "ui_mm_title_control" ,size= {512,50} },
-
- { id= "mouse_sens" ,type= "track" ,val= 2 ,cmd= "mouse_sens" ,min= 0.001 ,max= 0.6 ,step= 0.01 },
- { id= "mouse_sens_aim" ,type= "track" ,val= 2 ,cmd= "mouse_sens_aim" ,min= 0.5 ,max= 2 ,step= 0.05, def= 1 },
- { id= "mouse_invert" ,type= "check" ,val= 1 ,cmd= "mouse_invert" ,def= false },
- { id= "crouch_toggle" ,type= "check" ,val= 1 ,cmd= "g_crouch_toggle" ,def= false },
- { id= "walk_toggle" ,type= "check" ,val= 1 ,cmd= "g_walk_toggle" ,def= false },
- { id= "sprint_toggle" ,type= "check" ,val= 1 ,cmd= "g_sprint_toggle" ,def= true },
- { id= "lookout_toggle" ,type= "check" ,val= 1 ,cmd= "g_lookout_toggle" ,def= false },
- { id= "aim_toggle" ,type= "check" ,val= 1 ,cmd= "wpn_aim_toggle" ,def= false ,bool_to_num= true },
- { id= "pickup_mode" ,type= "check" ,val= 1 ,cmd= "g_multi_item_pickup" ,def= true },
- { id= "simple_pda_mode" ,type= "check" ,val= 1 ,cmd= "g_simple_pda" ,def= true },
- { id= "disassembly_warning" ,type= "check" ,val= 1 ,def= true },
- },},
- { id= "keybind" ,sh=true ,gr={},}, -- ENGINE!
-},},
-{ id= "gameplay" ,gr={
- { id= "general" ,sh=true ,gr={
- { id= "slide_player" ,type= "slide" ,link= "ui_options_slider_player" ,text= "ui_mm_title_gameplay" ,size= {512,50} },
-
- { id= "player_name" ,type= "input" ,val= 0 ,curr= {curr_player_name} ,functor= {func_player_name} ,precondition= {level_present} },
- { id= "outfit_portrait" ,type= "check" ,val= 1 ,def= true },
- { id= "hardcore_ai_aim" ,type= "check" ,val= 1 ,def= false ,functor= {func_hardcore_ai_aim} },
- { id= "show_tip_reputation" ,type= "check" ,val= 1 ,def= true },
- { id= "mechanic_feature" ,type= "check" ,val= 1 ,def= false },
-
- { id= "line" ,type= "line" },
- { id= "release_dropped_items" ,type= "check" ,val= 1 ,def= true },
- { id= "corpse_max_count" ,type= "track" ,val= 2 ,def= 5 ,min= 5 ,max= 30 ,step= 1 },
- { id= "corpse_min_dist" ,type= "track" ,val= 2 ,def= 75 ,min= 75 ,max= 200 ,step= 5 },
- { id= "line" ,type= "line" },
- { id= "npc_loot_distance" ,type= "track" ,val= 2 ,def= 5 ,min= 0 ,max= 25 ,step= 1 },
- { id= "line" ,type= "line" },
- { id= "max_tasks" ,type= "track" ,val= 2 , def= 2 ,min= 1 ,max= 10 ,step= 1 },
- { id= "line" ,type= "line" },
- { id= "need_equipped_hkit" ,type= "check" ,val= 1 ,def= true },
- },},
- { id= "silent_kills" ,sh=true ,gr={
- { id= "sk_desc" ,type= "desc" ,text= "st_sk_desc" ,clr= {255,125,175,200} },
- { id= "sk_enabled" ,type= "check" ,val= 1 ,def= false},
- { id= "sk_melee_enabled" ,type= "check" ,val= 1 ,def= true},
- { id= "sk_all_melee_ok" ,type= "check" ,val= 1 ,def= false},
- { id= "sk_gun_enabled" ,type= "check" ,val= 1 ,def= true},
- { id= "sk_headshot_only" ,type= "check" ,val= 1 ,def= true},
- { id= "sk_fresh_time" ,type= "input" ,val= 0 ,def= 300},
- { id= "sk_suspect_dist" ,type= "input" ,val= 0 ,def= 10},
- { id= "sk_melee_hear_dist" ,type= "input" ,val= 0 ,def= 5},
- { id= "sk_gun_hear_dist" ,type= "input" ,val= 0 ,def= 10},
- },},
- { id= "economy_diff" ,sh=true ,precondition = {level_present} ,output = "ui_mm_warning_economy_diff_not_level_present" ,presets= {"economy_easy","economy_medium","economy_hard"} ,gr={
- { id= "slide_economy_diff" ,type= "slide" ,link= "ui_options_slider_economy_diff" ,text= "ui_mm_title_economy_diff" ,size= {512,50} },
- { id= "desc_ingame_only" ,type= "desc" ,text= "ui_mm_desc_economy_diff" ,clr= {255,200,75,75} },
-
- { id= "condition_buy_override" ,type= "track" ,val= 2 , curr = {trader_cond,'get'}, functor= {trader_cond,"set"} ,min= 0 ,max= 100 ,step= 1 },
- { id= "goodwill" ,type= "track" ,val= 2 ,curr= {curr_economy,"goodwill"} ,functor= {func_economy_diff,"goodwill"} ,min= 0.5 ,max= 3 ,step= 0.1 },
- { id= "rewards" ,type= "track" ,val= 2 ,curr= {curr_economy,"rewards"} ,functor= {func_economy_diff,"rewards"} ,min= 0.5 ,max= 3 ,step= 0.1 },
- { id= "repair" ,type= "track" ,val= 2 ,curr= {curr_economy,"repair"} ,functor= {func_economy_diff,"repair"} ,min= 1 ,max= 2 ,step= 0.1 },
- { id= "upgrade" ,type= "track" ,val= 2 ,curr= {curr_economy,"upgrade"} ,functor= {func_economy_diff,"upgrade"} ,min= 1 ,max= 3 ,step= 0.1 },
- { id= "buy" ,type= "track" ,val= 2 ,curr= {curr_economy,"buy"} ,functor= {func_economy_diff,"buy"} ,min= 0.5 ,max= 2 ,step= 0.1 },
- { id= "sell" ,type= "track" ,val= 2 ,curr= {curr_economy,"sell"} ,functor= {func_economy_diff,"sell"} ,min= 0.5 ,max= 2 ,step= 0.1 },
- { id= "loots" ,type= "track" ,val= 2 ,curr= {curr_economy,"loots"} ,functor= {func_economy_diff,"loots"} ,min= 0.5 ,max= 3 ,step= 0.1 },
- { id= "money_loots" ,type= "track" ,val= 2 ,curr= {curr_economy,"money_loots"} ,functor= {func_economy_diff,"money_loots"} ,min= 0.5 ,max= 3 ,step= 0.1 },
- { id= "stash_chance" ,type= "track" ,val= 2 ,curr= {curr_economy,"stash_chance"} ,functor= {func_economy_diff,"stash_chance"} ,min= 0.1 ,max= 1 ,step= 0.05 },
- { id= "weapon_degradation" ,type= "track" ,val= 2 ,curr= {curr_economy,"weapon_degradation"} ,functor= {func_economy_diff,"weapon_degradation"} ,min= 0.5 ,max= 1 ,step= 0.05 },
- { id= "battery_consumption" ,type= "track" ,val= 2 ,curr= {curr_economy,"battery_consumption"} ,functor= {func_economy_diff,"battery_consumption"} ,min= 0.5 ,max= 3 ,step= 0.1 },
- { id= "restock" ,type= "track" ,val= 2 ,curr= {curr_economy,"restock"} ,functor= {func_economy_diff,"restock"} ,min= 12 ,max= 168 ,step= 1 },
- { id= "arty_chance" ,type= "track" ,val= 2 ,curr= {curr_economy,"arty_chance"} ,functor= {func_economy_diff,"arty_chance"} ,min= 0.1 ,max= 1 ,step= 0.05 },
- { id= "percentage_parts" ,type= "check" ,val= 1 ,curr= {curr_economy,"percentage_parts"} ,functor= {func_economy_diff,"percentage_parts"} },
- { id= "limited_bolts" ,type= "check" ,val= 1 ,curr= {curr_economy,"limited_bolts"} ,functor= {func_economy_diff,"limited_bolts"} },
- { id= "outfit_drops" ,type= "list" ,val= 2 ,curr= {curr_economy,"outfit_drops"} ,functor= {func_economy_diff,"outfit_drops"} ,content= {{1,"off"} , {2,"progressive"} , {3,"full"}} },
-
- },},
- { id= "gameplay_diff" ,sh=true ,precondition = {level_present} ,output = "ui_mm_warning_gameplay_diff_not_level_present" ,presets= {"gameplay_easy","gameplay_medium","gameplay_hard"} ,gr={
- { id= "slide_gameplay_diff" ,type= "slide" ,link= "ui_options_slider_gameplay_diff" ,text= "ui_mm_title_gameplay_diff" ,size= {512,50} },
- { id= "desc_ingame_only" ,type= "desc" ,text= "ui_mm_desc_gameplay_diff" ,clr= {255,200,75,75} },
-
- { id= "actor_immunities" ,type= "list" ,val= 2 ,curr= {curr_gameplay,"actor_immunities"} ,functor= {func_gameplay_diff,"actor_immunities"} ,content= {{1,"great"} , {2,"good"} , {3,"average"} , {4,"poor"}} },
- { id= "hit_power" ,type= "track" ,val= 2 ,curr= {curr_gameplay,"hit_power"} ,functor= {func_gameplay_diff,"hit_power"} ,min= 0.5 ,max= 3 ,step= 0.1 },
- { id= "dispersion_base" ,type= "track" ,val= 2 ,curr= {curr_gameplay,"dispersion_base"} ,functor= {func_gameplay_diff,"dispersion_base"} ,min= 1 ,max= 3 ,step= 0.1 },
- { id= "dispersion_factor" ,type= "track" ,val= 2 ,curr= {curr_gameplay,"dispersion_factor"} ,functor= {func_gameplay_diff,"dispersion_factor"} ,min= 1 ,max= 5 ,step= 0.1 },
- { id= "power_loss_bias" ,type= "track" ,val= 2 ,curr= {curr_gameplay,"power_loss_bias"} ,functor= {func_gameplay_diff,"power_loss_bias"} ,min= 0.0 ,max= 1 ,step= 0.05 },
- { id= "weight" ,type= "track" ,val= 2 ,curr= {curr_gameplay,"weight"} ,functor= {func_gameplay_diff,"weight"} ,min= 10 ,max= 50 ,step= 1 },
- { id= "thirst" ,type= "check" ,val= 1 ,curr= {curr_gameplay,"thirst"} ,functor= {func_gameplay_diff,"thirst"} },
- { id= "sleep" ,type= "check" ,val= 1 ,curr= {curr_gameplay,"sleep"} ,functor= {func_gameplay_diff,"sleep"} },
- { id= "radiation_day" ,type= "check" ,val= 1 ,curr= {curr_gameplay,"radiation_day"} ,functor= {func_gameplay_diff,"radiation_day"} },
- { id= "notify_geiger" ,type= "check" ,val= 1 ,curr= {curr_gameplay,"notify_geiger"} ,functor= {func_gameplay_diff,"notify_geiger"} },
- { id= "notify_anomaly" ,type= "check" ,val= 1 ,curr= {curr_gameplay,"notify_anomaly"} ,functor= {func_gameplay_diff,"notify_anomaly"} },
- },},
- { id= "disguise" ,sh=true ,gr={
- { id= "slide_disguise" ,type= "slide" ,link= "ui_options_slider_disguise" ,text= "ui_mm_menu_disguise" ,size= {512,50} },
- { id= "desc_disguise" ,type= "desc" ,text= "ui_mm_desc_disguise" ,clr= {255,125,175,200} },
- { id= "line" ,type= "line" },
-
- { id= "state" ,type= "check" ,val= 1 ,def= true },
- { id= "line" ,type= "line" },
-
- { id= "active_item" ,type= "check" ,val= 1 ,def= true },
- { id= "active_item_factor" ,type= "track" ,val= 2 ,def= 1 ,min= 0.1 ,max= 2 ,step= 0.1 },
- { id= "weapon" ,type= "check" ,val= 1 ,def= true },
- { id= "weapon_factor" ,type= "track" ,val= 2 ,def= 1 ,min= 0.1 ,max= 2 ,step= 0.1 },
- { id= "outfit" ,type= "check" ,val= 1 ,def= true },
- { id= "outfit_factor" ,type= "track" ,val= 2 ,def= 1 ,min= 0.1 ,max= 2 ,step= 0.1 },
- { id= "helmet" ,type= "check" ,val= 1 ,def= true },
- { id= "helmet_factor" ,type= "track" ,val= 2 ,def= 1 ,min= 0.1 ,max= 2 ,step= 0.1 },
- { id= "backpack" ,type= "check" ,val= 1 ,def= true },
- { id= "backpack_factor" ,type= "track" ,val= 2 ,def= 1 ,min= 0.1 ,max= 2 ,step= 0.1 },
- { id= "inventory" ,type= "check" ,val= 1 ,def= true },
- { id= "inventory_factor" ,type= "track" ,val= 2 ,def= 1 ,min= 0.1 ,max= 2 ,step= 0.1 },
- { id= "line" ,type= "line" },
-
- { id= "speed" ,type= "check" ,val= 1 ,def= true },
- { id= "speed_factor" ,type= "track" ,val= 2 ,def= 1 ,min= 0.1 ,max= 2 ,step= 0.1 },
- { id= "distance" ,type= "check" ,val= 1 ,def= true },
- { id= "distance_factor" ,type= "track" ,val= 2 ,def= 5 ,min= 1 ,max= 100 ,step= 1 },
- { id= "stay_time" ,type= "check" ,val= 1 ,def= true },
- { id= "stay_time_factor" ,type= "track" ,val= 2 ,def= 20 ,min= 1 ,max= 100 ,step= 1 },
- },},
- { id= "fast_travel" ,sh=true ,gr={
- { id= "slide_fast_travel" ,type= "slide" ,link= "ui_options_slider_fast_travel" ,text= "ui_mm_menu_fast_travel" ,size= {512,50} },
- { id= "desc_fast_travel" ,type= "desc" ,text= "ui_mm_desc_fast_travel" ,clr= {255,125,175,200} },
- { id= "line" ,type= "line" },
-
- { id= "state" ,type= "list" ,val= 2 ,def= 0 ,content= {{0,"disabled"} , {1,"visit_only"} , {2,"show_all"}} },
- { id= "line" ,type= "line" },
-
- { id= "on_combat" ,type= "check" ,val= 1 ,def= false },
- { id= "on_overweight" ,type= "check" ,val= 1 ,def= false },
- { id= "on_damage" ,type= "check" ,val= 1 ,def= false },
- { id= "on_emission" ,type= "check" ,val= 1 ,def= false },
- { id= "long_names" ,type= "check" ,val= 1 ,def= false },
- { id= "visit_message" ,type= "check" ,val= 1 ,def= false },
- { id= "time" ,type= "check" ,val= 1 ,def= false },
- },},
- { id= "backpack_travel" ,sh=true ,gr={
- { id= "slide_backpack_travel" ,type= "slide" ,link= "ui_options_slider_fast_travel" ,text= "ui_mm_menu_backpack_travel" ,size= {512,50} },
- { id= "desc_backpack_travel" ,type= "desc" ,text= "ui_mm_desc_backpack_travel" ,clr= {255,125,175,200} },
- { id= "line" ,type= "line" },
-
- { id= "state" ,type= "check" ,val= 1 ,def= false },
- { id= "line" ,type= "line" },
-
- { id= "on_combat" ,type= "check" ,val= 1 ,def= false },
- { id= "on_overweight" ,type= "check" ,val= 1 ,def= false },
- { id= "on_damage" ,type= "check" ,val= 1 ,def= false },
- { id= "on_emission" ,type= "check" ,val= 1 ,def= false },
- { id= "time" ,type= "check" ,val= 1 ,def= false },
- },},
-},},
-{ id= "alife" ,gr={
- { id= "general" ,sh=true ,gr={
- { id= "slide_alife" ,type= "slide" ,link= "ui_options_slider_alife" ,text= "ui_mm_title_alife" ,size= {512,50} },
-
- { id= "alife_mutant_pop" ,type= "list" ,val= 2 ,def= 0.75 ,content= {{0.25} , {0.5} , {0.75} , {1}} ,no_str= true },
- { id= "alife_stalker_pop" ,type= "list" ,val= 2 ,def= 0.5 ,content= {{0.25} , {0.5} , {0.75} , {1}} ,no_str= true },
- { id= "offline_combat" ,type= "list" ,val= 0 ,def= "full" ,content= {{"full","full"} , {"on_smarts_only","on_smarts_only"}, {"off","off"}} },
- { id= "excl_dist" ,type= "list" ,val= 2 ,def= 75 ,content= {{0} , {25} , {50} , {75} , {100}} ,no_str= true },
- { id= "dynamic_anomalies" ,type= "check" ,val= 1 ,def= true },
- { id= "dynamic_relations" ,type= "check" ,val= 1 ,def= false },
- { id= "war_goodwill_reset" ,type= "check" ,val= 1 ,def= false },
- { id= "heli_engine_sound" ,type= "check" ,val= 1 ,def= false },
- { id= "heli_spawn" ,type= "check" ,val= 1 ,def= false },
-
- },},
- { id= "event" ,sh=true ,gr={
- { id= "slide_emission" ,type= "slide" ,link= "ui_options_slider_emission" ,text= "ui_mm_title_emission" ,size= {512,50} },
- { id= "emission_state" ,type= "check" ,val= 1 ,def= true },
- { id= "emission_frequency" ,type= "list" ,val= 2 ,def= 24 ,content= {{12,"every_12h"} , {24,"every_24h"} , {48,"every_2d"} , {96,"every_4d"}} },
- { id= "emission_fate" ,type= "list" ,val= 0 ,def= "kill_at_wave" ,content= {{"kill_at_end"} , {"kill_at_wave"} , {"turn_to_zombie"} , {"explode"}} },
- { id= "emission_warning" ,type= "list" ,val= 0 ,def= "siren_radio" ,content= {{"siren_radio"} , {"siren"} , {"radio"} , {"no_warning"}} },
- { id= "emission_task" ,type= "check" ,val= 1 ,def= true },
-
- { id= "slide_psi_storm" ,type= "slide" ,link= "ui_options_slider_psi_storm" ,text= "ui_mm_title_psi_storm" ,size= {512,50} ,spacing= 20 },
- { id= "psi_storm_state" ,type= "check" ,val= 1 ,def= true },
- { id= "psi_storm_frequency" ,type= "list" ,val= 2 ,def= 24 ,content= {{12,"every_12h"} , {24,"every_24h"} , {48,"every_2d"} , {96,"every_4d"}} },
- { id= "psi_storm_fate" ,type= "list" ,val= 0 ,def= "kill_at_vortex" ,content= {{"kill_at_vortex"} , {"turn_to_zombie"} , {"unhurt"}} },
- { id= "psi_storm_warning" ,type= "list" ,val= 0 ,def= "siren" ,content= {{"siren"} , {"no_warning"}} },
- { id= "psi_storm_task" ,type= "check" ,val= 1 ,def= true },
-
- },},
- { id= "warfare" ,presets= {"warfare_default","warfare_slow","warfare_slower"} ,gr={
- { id= "general" ,sh=true ,presets= {"warfare_default","warfare_yoko"} ,gr={
- { id= "slide_warfare" ,type= "slide" ,link= "ui_options_slider_warfare" ,text= "ui_mm_title_warfare" ,size= {512,50} },
-
- { id= "all_out_war" ,type= "check" ,val= 1 ,def= false },
- { id= "random_starting_locations" ,type= "check" ,val= 1 ,def= false },
- { id= "random_starting_character" ,type= "check" ,val= 1 ,def= false },
- { id= "random_stalker_chance" ,type= "track" ,val= 2 ,def= 50 ,min= 0 ,max= 100 ,step= 1 },
- { id= "random_monster_chance" ,type= "track" ,val= 2 ,def= 50 ,min= 0 ,max= 100 ,step= 1 },
- { id= "auto_capture" ,type= "check" ,val= 1 ,def= true },
- { id= "auto_capture_max_distance" ,type= "track" ,val= 2 ,def= 50 ,min= 0 ,max= 100 ,step= 1 },
- { id= "auto_capture_wait_time" ,type= "track" ,val= 2 ,def= 15 ,min= 0 ,max= 100 ,step= 1 },
- { id= "fog_of_war" ,type= "check" ,val= 1 ,def= true },
- { id= "fog_of_war_distance" ,type= "track" ,val= 2 ,def= 100 ,min= 0 ,max= 100 ,step= 1 },
- { id= "hide_unfriendly_squads" ,type= "check" ,val= 1 ,def= true },
- { id= "hide_smarts" ,type= "check" ,val= 1 ,def= false },
- { id= "hide_underground_smarts" ,type= "check" ,val= 1 ,def= true },
- { id= "enemy_new_game_bonus" ,type= "check" ,val= 1 ,def= false },
- { id= "enemy_resource_boost" ,type= "track" ,val= 2 ,def= 0 ,min= 0 ,max= 100 ,step= 1 },
- { id= "enemy_base_boost" ,type= "track" ,val= 2 ,def= 0 ,min= 0 ,max= 100 ,step= 1 },
-
- { id= "actor_influence_weight" ,type= "track" ,val= 2 ,def= 250 ,min= 0 ,max= 10000 ,step= 50 },
- { id= "novice_squad_price" ,type= "track" ,val= 2 ,def= 1000 ,min= 0 ,max= 100000 ,step= 1000 },
- { id= "advanced_squad_price" ,type= "track" ,val= 2 ,def= 10000 ,min= 0 ,max= 100000 ,step= 1000 },
- { id= "veteran_squad_price" ,type= "track" ,val= 2 ,def= 50000 ,min= 0 ,max= 100000 ,step= 1000 },
- { id= "heli_price" ,type= "track" ,val= 2 ,def= 75000 ,min= 0 ,max= 100000 ,step= 1000 },
- { id= "actor_support_enemy_rank_weight" ,type= "track" ,val= 2 ,def= 0 ,min= 0 ,max= 50 ,step= 1 },
- { id= "actor_support_reward_money" ,type= "track" ,val= 2 ,def= 500 ,min= 0 ,max= 10000 ,step= 50 },
- { id= "actor_support_reward_influence" ,type= "track" ,val= 2 ,def= 0.2 ,min= 0 ,max= 2 ,step= 0.1 },
-
- { id= "monster_max_squads_per_level" ,type= "track" ,val= 2 ,def= 5 ,min= 1 ,max= 200 ,step= 1 },
- { id= "monster_min_faction_respawn" ,type= "track" ,val= 2 ,def= 5 ,min= 1 ,max= 200 ,step= 1 },
- { id= "monster_max_faction_respawn" ,type= "track" ,val= 2 ,def= 30 ,min= 1 ,max= 200 ,step= 1 },
-
- { id= "zombies_act_as_faction" ,type= "check" ,val= 1 ,def= false },
- --{ id= "offline_combat_distance" ,type= "track" ,val= 2 ,def= 100 ,min= 1 ,max= 200 ,step= 1 },
- { id= "enable_mutant_offline_combat" ,type= "check" ,val= 1 ,def= true },
- { id= "disable_smart_pop_cap" ,type= "check" ,val= 1 ,def= false },
- { id= "purge_zone_on_emission" ,type= "check" ,val= 1 ,def= false },
- { id= "purge_zone_percentage" ,type= "track" ,val= 2 ,def= 50 ,min= 1 ,max= 100 ,step= 1 },
- { id= "debug_logging" ,type= "check" ,val= 1 ,def= false },
- },},
- { id= "azazel" ,sh=true ,presets= {"warfare_default","warfare_yoko"} ,gr={
- { id= "slide_warfare" ,type= "slide" ,link= "ui_options_slider_warfare" ,text= "ui_mm_title_warfare_azazel" ,size= {512,50} },
-
- { id="state" ,type= "check" ,val= 1 ,def= true },
- { id="respawn_as_companions" ,type= "check" ,val= 1 ,def= true },
- { id="respawn_as_actor_faction" ,type= "check" ,val= 1 ,def= true },
- { id="respawn_as_allies" ,type= "check" ,val= 1 ,def= false },
- { id="respawn_as_neutrals" ,type= "check" ,val= 1 ,def= false },
- { id="respawn_as_enemies" ,type= "check" ,val= 1 ,def= false },
- { id="respawn_as_nearest" ,type= "check" ,val= 1 ,def= true },
-
- { id="companion_dist_mult" ,type= "track" ,val= 2 ,def= 1 ,min= 0 ,max= 100 ,step= 1 },
- { id="actor_faction_dist_mult" ,type= "track" ,val= 2 ,def= 1 ,min= 0 ,max= 100 ,step= 1 },
- { id="friend_dist_mult" ,type= "track" ,val= 2 ,def= 1 ,min= 0 ,max= 100 ,step= 1 },
- { id="ally_dist_mult" ,type= "track" ,val= 2 ,def= 1 ,min= 0 ,max= 100 ,step= 1 },
- { id="neutral_dist_mult" ,type= "track" ,val= 2 ,def= 1 ,min= 0 ,max= 100 ,step= 1 },
- { id="enemy_dist_mult" ,type= "track" ,val= 2 ,def= 1 ,min= 0 ,max= 100 ,step= 1 },
-
- { id="companion_min_respawn_dist" ,type= "track" ,val= 2 ,def= 0 ,min= 0 ,max= 100 ,step= 1 },
- { id="companion_max_respawn_dist" ,type= "track" ,val= 2 ,def= 0 ,min= 0 ,max= 100 ,step= 1 },
- { id="actor_faction_min_respawn_dist" ,type= "track" ,val= 2 ,def= 0 ,min= 0 ,max= 100 ,step= 1 },
- { id="actor_faction_max_respawn_dist" ,type= "track" ,val= 2 ,def= 0 ,min= 0 ,max= 100 ,step= 1 },
- { id="ally_min_respawn_dist" ,type= "track" ,val= 2 ,def= 0 ,min= 0 ,max= 100 ,step= 1 },
- { id="ally_max_respawn_dist" ,type= "track" ,val= 2 ,def= 0 ,min= 0 ,max= 100 ,step= 1 },
- { id="neutral_respawn_min_dist" ,type= "track" ,val= 2 ,def= 0 ,min= 0 ,max= 100 ,step= 1 },
- { id="neutral_respawn_max_dist" ,type= "track" ,val= 2 ,def= 0 ,min= 0 ,max= 100 ,step= 1 },
- { id="enemy_respawn_min_dist" ,type= "track" ,val= 2 ,def= 0 ,min= 0 ,max= 100 ,step= 1 },
- { id="enemy_respawn_max_dist" ,type= "track" ,val= 2 ,def= 0 ,min= 0 ,max= 100 ,step= 1 },
- },},
- { id= "stalker" ,sh=true ,presets= {"warfare_default","warfare_yoko"}, id_gr= "warfare_faction" ,apply_to_all=true ,gr={
- { id= "slide_warfare" ,type= "slide" ,link= "ui_options_slider_warfare" ,text= "ui_mm_title_warfare_faction" ,size= {512,50} },
-
- { id="participate_in_warfare" ,type= "check" ,val= 1 ,def= true ,hint="alife_warfare_faction_participate_in_warfare" },
- { id="spawn_on_new_game" ,type= "check" ,val= 1 ,def= true ,hint="alife_warfare_faction_spawn_on_new_game" },
- { id="random_spawn_entries" ,type= "track" ,val= 2 ,def= 1 ,min= 0 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_random_spawn_entries" },
- { id="linked_level_targeting" ,type= "check" ,val= 1 ,def= true ,hint="alife_warfare_faction_linked_level_targeting" },
- { id="ignore_empty_targets" ,type= "check" ,val= 1 ,def= false ,hint="alife_warfare_faction_ignore_empty_targets" },
- { id="expansion_aggression" ,type= "track" ,val= 2 ,def= 50 ,min= 0 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_expansion_aggression" },
- { id="offline_power_multiplier" ,type= "track" ,val= 2 ,def= 1 ,min= 0 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_offline_power_multiplier" },
- { id="night_activity_chance" ,type= "track" ,val= 2 ,def= 50 ,min= 0 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_night_activity_chance" },
-
- { id="keep_last_base" ,type= "check" ,val= 1 ,def= false ,hint="alife_warfare_faction_keep_last_base" },
- { id="min_faction_respawn" ,type= "track" ,val= 2 ,def= 15 ,min= 0 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_min_faction_respawn" },
- { id="max_faction_respawn" ,type= "track" ,val= 2 ,def= 90 ,min= 0 ,max= 200 ,step= 1 ,hint="alife_warfare_faction_max_faction_respawn" },
-
- { id="min_invasion_size" ,type= "track" ,val= 2 ,def= 1 ,min= 0 ,max= 10 ,step= 0.1 ,hint="alife_warfare_faction_min_invasion_size" },
- { id="max_invasion_size" ,type= "track" ,val= 2 ,def= 2.5 ,min= 0 ,max= 10 ,step= 0.1 ,hint="alife_warfare_faction_max_invasion_size" },
- { id="min_invasion_depart_time" ,type= "track" ,val= 2 ,def= 5 ,min= 0 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_min_invasion_depart_time" },
- { id="max_invasion_depart_time" ,type= "track" ,val= 2 ,def= 30 ,min= 0 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_max_invasion_depart_time" },
-
- { id="min_patrol_time" ,type= "track" ,val= 2 ,def= 60 ,min= 0 ,max= 1000 ,step= 10 ,hint="alife_warfare_faction_min_patrol_time" },
- { id="max_patrol_time" ,type= "track" ,val= 2 ,def= 240 ,min= 0 ,max= 1000 ,step= 10 ,hint="alife_warfare_faction_max_patrol_time" },
- { id="min_patrol_squads" ,type= "track" ,val= 2 ,def= 1 ,min= 0 ,max= 10 ,step= 1 ,hint="alife_warfare_faction_min_patrol_squads" },
- { id="max_patrol_squads" ,type= "track" ,val= 2 ,def= 2 ,min= 0 ,max= 10 ,step= 1 ,hint="alife_warfare_faction_max_patrol_squads" },
- { id="patrol_hunt_chance" ,type= "track" ,val= 2 ,def= 50 ,min= 0 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_patrol_hunt_chance" },
- { id="min_patrol_rest_time" ,type= "track" ,val= 2 ,def= 60 ,min= 0 ,max= 1000 ,step= 10 ,hint="alife_warfare_faction_min_patrol_rest_time" },
- { id="max_patrol_rest_time" ,type= "track" ,val= 2 ,def= 240 ,min= 0 ,max= 1000 ,step= 10 ,hint="alife_warfare_faction_max_patrol_rest_time" },
-
- { id="min_resurgence_wait_time" ,type= "track" ,val= 2 ,def= 30 ,min= 0 ,max= 1000 ,step= 10 ,hint="alife_warfare_faction_min_resurgence_wait_time" },
- { id="max_resurgence_wait_time" ,type= "track" ,val= 2 ,def= 120 ,min= 0 ,max= 1000 ,step= 10 ,hint="alife_warfare_faction_max_resurgence_wait_time" },
-
- { id="random_squad_count" ,type= "check" ,val= 1 ,def= false ,hint="alife_warfare_faction_random_squad_count" },
- { id="min_random_squad_count" ,type= "track" ,val= 2 ,def= 1 ,min= 0 ,max= 20 ,step= 1 ,hint="alife_warfare_faction_min_random_squad_count" },
- { id="max_random_squad_count" ,type= "track" ,val= 2 ,def= 3 ,min= 0 ,max= 20 ,step= 1 ,hint="alife_warfare_faction_max_random_squad_count" },
-
- { id="random_patrols" ,type= "check" ,val= 1 ,def= false ,hint="alife_warfare_faction_random_patrols" },
- { id="max_random_patrols" ,type= "track" ,val= 2 ,def= 15 ,min= 0 ,max= 20 ,step= 1 ,hint="alife_warfare_faction_max_random_patrols" },
- { id="min_random_patrol_time" ,type= "track" ,val= 2 ,def= 30 ,min= 0 ,max= 1000 ,step= 10 ,hint="alife_warfare_faction_min_random_patrol_time" },
- { id="max_random_patrol_time" ,type= "track" ,val= 2 ,def= 180 ,min= 0 ,max= 1000 ,step= 10 ,hint="alife_warfare_faction_max_random_patrol_time" },
-
- { id="base_priority" ,type= "track" ,val= 2 ,def= 10 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_base_priority" },
- { id="resource_priority" ,type= "track" ,val= 2 ,def= 5 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_resource_priority" },
- { id="territory_priority" ,type= "track" ,val= 2 ,def= -5 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_territory_priority" },
- { id="flag_priority" ,type= "track" ,val= 2 ,def= 1 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_flag_priority" },
- { id="is_being_targeted_priority" ,type= "track" ,val= 2 ,def= 2 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_is_being_targeted_priority" },
- { id="target_weaker_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_target_weaker_priority" },
- { id="target_stronger_priority" ,type= "track" ,val= 2 ,def= 1 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_target_stronger_priority" },
- { id="target_faction_stronger_priority" ,type= "track" ,val= 2 ,def= 1 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_target_faction_stronger_priority" },
- { id="target_faction_weaker_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_target_faction_weaker_priority" },
- { id="target_resource_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_target_resource_priority" },
- { id="target_on_same_level_priority" ,type= "track" ,val= 2 ,def= 100 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_target_on_same_level_priority" },
-
- { id="max_smart_targets_per_base" ,type= "track" ,val= 2 ,def= 2 ,min= 0 ,max= 10 ,step= 1 ,hint="alife_warfare_faction_max_smart_targets_per_base" },
-
- { id="resource_count_modifier" ,type= "track" ,val= 2 ,def= 0 ,min= 0 ,max= 1 ,step= 0.01 ,hint="alife_warfare_faction_resource_count_modifier" },
- { id="base_count_modifier" ,type= "track" ,val= 2 ,def= 0 ,min= 0 ,max= 1 ,step= 0.01 ,hint="alife_warfare_faction_base_count_modifier" },
-
- { id="lvl_k00_marsh_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_k00_marsh_priority" },
- { id="lvl_k01_darkscape_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_k01_darkscape_priority" },
- { id="lvl_l01_escape_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_l01_escape_priority" },
- { id="lvl_l02_garbage_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_l02_garbage_priority" },
- { id="lvl_l03_agroprom_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_l03_agroprom_priority" },
- { id="lvl_l04_darkvalley_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_l04_darkvalley_priority" },
- { id="lvl_l05_bar_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_l05_bar_priority" },
- { id="lvl_l06_rostok_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_l06_rostok_priority" },
- { id="lvl_l07_military_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_l07_military_priority" },
- { id="lvl_l08_yantar_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_l08_yantar_priority" },
- { id="lvl_l09_deadcity_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_l09_deadcity_priority" },
- { id="lvl_l10_limansk_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_l10_limansk_priority" },
- { id="lvl_l10_radar_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_l10_radar_priority" },
- { id="lvl_l10_red_forest_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_l10_red_forest_priority" },
- { id="lvl_l11_hospital_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_l11_hospital_priority" },
- { id="lvl_l11_pripyat_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_l11_pripyat_priority" },
- { id="lvl_l12_stancia_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_l12_stancia_priority" },
- { id="lvl_l12u_sarcofag_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_l12u_sarcofag_priority" },
- { id="lvl_l12u_control_monolith_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_l12u_control_monolith_priority" },
- { id="lvl_l12_stancia_2_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_l12_stancia_2_priority" },
- { id="lvl_l13_generators_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_l13_generators_priority" },
- { id="lvl_zaton_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_zaton_priority" },
- { id="lvl_jupiter_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_jupiter_priority" },
- { id="lvl_pripyat_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_pripyat_priority" },
- { id="lvl_jupiter_underground_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_jupiter_underground_priority" },
- { id="lvl_k02_trucks_cemetery_priority" ,type= "track" ,val= 2 ,def= 0 ,min= -100 ,max= 100 ,step= 1 ,hint="alife_warfare_faction_lvl_k02_trucks_cemetery_priority" },
- },},
- },},
- { id= "dynamic_news" ,sh=true ,gr={
- { id= "slide_dynamic_news" ,type= "slide" ,link= "ui_options_slider_news" ,text= "ui_mm_menu_dynamic_news" ,size= {512,50} },
- { id= "desc_dynamic_news" ,type= "desc" ,text= "ui_mm_desc_dynamic_news" ,clr= {255,125,175,200} },
- { id= "line" ,type= "line" },
-
- { id="message_duration" ,type= "track" ,val= 2 ,def= 10 ,min= 5 ,max= 30 ,step= 1 },
-
- { id= "line" ,type= "line" },
- { id="death_stalker_news" ,type= "check" ,val= 1 ,def= true },
- { id="death_mutant_news" ,type= "check" ,val= 1 ,def= true },
- { id="generic_death_news" ,type= "check" ,val= 1 ,def= false },
- { id="death_report_news" ,type= "check" ,val= 1 ,def= false },
- { id="kill_wounded_news" ,type= "check" ,val= 1 ,def= true },
- { id="found_artifact_news" ,type= "check" ,val= 1 ,def= true },
- { id="heli_call_news" ,type= "check" ,val= 1 ,def= true },
- { id="loot_news" ,type= "check" ,val= 1 ,def= true },
-
- { id= "line" ,type= "line" },
- { id="reaction_news" ,type= "check" ,val= 1 ,def= true },
-
- { id= "line" ,type= "line" },
- { id="weather_news" ,type= "check" ,val= 1 ,def= true },
- { id="time_news" ,type= "check" ,val= 1 ,def= true },
- { id="nearby_activity_news" ,type= "check" ,val= 1 ,def= true },
- { id="dumb_zombie_news" ,type= "check" ,val= 1 ,def= true },
- { id="cycle_of_special_news" ,type= "track" ,val= 2 ,def= 240 ,min= 60 ,max= 1800 ,step= 60 },
-
- { id= "line" ,type= "line" },
- { id="bounty_news" ,type= "check" ,val= 1 ,def= true },
- { id="cycle_of_task_news" ,type= "track" ,val= 2 ,def= 300 ,min= 60 ,max= 1800 ,step= 60 },
-
- { id= "line" ,type= "line" },
- { id="random_msg_news" ,type= "check" ,val= 1 ,def= true },
- { id="factions_report_news" ,type= "check" ,val= 1 ,def= true },
- { id="zone_activity_news" ,type= "check" ,val= 1 ,def= true },
- { id="found_dead_news" ,type= "check" ,val= 1 ,def= true },
- { id="surge_news" ,type= "check" ,val= 1 ,def= true },
- { id="cycle_of_random_news" ,type= "track" ,val= 2 ,def= 240 ,min= 60 ,max= 1800 ,step= 60 },
-
- { id= "line" ,type= "line" },
- { id="companions_news" ,type= "check" ,val= 1 ,def= true },
- { id="cycle_of_companions_news" ,type= "track" ,val= 2 ,def= 240 ,min= 60 ,max= 1800 ,step= 60 },
- },},
-},},
-{ id= "other" ,sh=true ,gr={
- { id= "slide_other" ,type= "slide" ,link= "ui_options_slider_other" ,text= "ui_mm_title_other" ,size= {512,50} },
-
- { id= "localization" ,type= "list" ,val= 0 ,def= "eng" ,curr= {curr_localization} ,content= {{"eng"} , {"rus"}} ,no_str= true ,functor= {func_localization} },
- { id= "discord" ,type= "check" ,val= 1 ,def= true ,cmd= "discord_status" },
-
- { id= "line" ,type= "line" ,precondition = {debug_only} },
- { id= "important_save" ,type= "check" ,val= 1 ,def= true ,cmd= "g_important_save" },
- -- { id= "autosave_timer" ,type= "check" ,val= 1 ,def= false ,functor= {func_autosave_timer} }, -- removed for custom value box below
- { id= "autosave_timer_new" ,type= "input" ,val= 0 ,def= 0, functor ={func_autosave_timer_new}},
- { id= "quicksave_cnt" ,type= "list" ,val= 2 ,def= 5 ,content= {{1} , {5} , {10} , {15} , {20}} ,no_str= true },
-
- { id= "line" ,type= "line" ,precondition = {debug_only} },
- { id= "debug_hud" ,type= "check" ,val= 1 ,def= false ,precondition = {debug_only} ,functor= {func_debug_hud} },
- { id= "debug_map_hud" ,type= "check" ,val= 1 ,def= false ,precondition = {debug_only} ,functor= {func_debug_map_hud} },
- { id= "debug_error" ,type= "check" ,val= 1 ,def= false ,precondition = {debug_only} },
-},},
-}
-
- init_opt_coder()
-end
-function init_opt_coder()
- ------------------------------------------------------------------------
- -- Auto-complete factions options for warfare
- local t = {}
- copy_table(t, options[5].gr[3].gr[3].gr)
- options[5].gr[3].gr[4] = { id= "bandit" ,sh=true ,presets= {"warfare_default","warfare_yoko"}, id_gr= "warfare_faction", apply_to_all=true ,gr=t }
- options[5].gr[3].gr[5] = { id= "csky" ,sh=true ,presets= {"warfare_default","warfare_yoko"}, id_gr= "warfare_faction", apply_to_all=true ,gr=t }
- options[5].gr[3].gr[6] = { id= "army" ,sh=true ,presets= {"warfare_default","warfare_yoko"}, id_gr= "warfare_faction", apply_to_all=true ,gr=t }
- options[5].gr[3].gr[7] = { id= "freedom" ,sh=true ,presets= {"warfare_default","warfare_yoko"}, id_gr= "warfare_faction", apply_to_all=true ,gr=t }
- options[5].gr[3].gr[8] = { id= "dolg" ,sh=true ,presets= {"warfare_default","warfare_yoko"}, id_gr= "warfare_faction", apply_to_all=true ,gr=t }
- options[5].gr[3].gr[9] = { id= "ecolog" ,sh=true ,presets= {"warfare_default","warfare_yoko"}, id_gr= "warfare_faction", apply_to_all=true ,gr=t }
- options[5].gr[3].gr[10] = { id= "killer" ,sh=true ,presets= {"warfare_default","warfare_yoko"}, id_gr= "warfare_faction", apply_to_all=true ,gr=t }
- options[5].gr[3].gr[11] = { id= "monolith" ,sh=true ,presets= {"warfare_default","warfare_yoko"}, id_gr= "warfare_faction", apply_to_all=true ,gr=t }
- options[5].gr[3].gr[12] = { id= "renegade" ,sh=true ,presets= {"warfare_default","warfare_yoko"}, id_gr= "warfare_faction", apply_to_all=true ,gr=t }
- options[5].gr[3].gr[13] = { id= "greh" ,sh=true ,presets= {"warfare_default","warfare_yoko"}, id_gr= "warfare_faction", apply_to_all=true ,gr=t }
- options[5].gr[3].gr[14] = { id= "isg" ,sh=true ,presets= {"warfare_default","warfare_yoko"}, id_gr= "warfare_faction", apply_to_all=true ,gr=t }
- options[5].gr[3].gr[15] = { id= "zombied" ,sh=true ,presets= {"warfare_default","warfare_yoko"}, id_gr= "warfare_faction", apply_to_all=true ,gr=t }
-
- ------------------------------------------------------------------------
- -- Auto-complete options for radio music
- local ltx = ini_file("plugins\\radio_zone_fm.ltx") -- File control: reading the ltx file that controls the hotkeys
- local num_of_plyr = ltx:r_float_ex("trx_radio_plyr","number_of_playlists") or 2 -- Number of Music Player plylists
- local radio_size = #options[2].gr[3].gr
- for i=1,num_of_plyr do
- radio_size = radio_size + 1
- options[2].gr[3].gr[radio_size] = { id= ("playlist_name_"..i) ,type= "input" ,val= 0 ,def= {def_radio_playlist, i} }
- end
-
- ------------------------------------------------------------------------
- -- Coding options
- local function code_option(gr, id, num)
- local path
- for i=1,#gr do
- if allowed_type[gr[i].type] then
- path = cc(id , gr[i].id)
- opt_index[path] = cc(num , i)
- opt_val[path] = gr[i].val
- --printf("-[%s] | index: %s - type: %s", path, opt_index[path], opt_val[path])
- end
- end
- end
-
- local id_1, id_2, id_3
- -- Level 1
- for i=1,#options do
- id_1 = options[i].id
- if options[i].sh then
- code_option(options[i].gr, id_1, i)
- else
- -- Level 2
- for ii=1,#options[i].gr do
- id_2 = options[i].gr[ii].id
- if options[i].gr[ii].sh then
- code_option( (options[i].gr[ii].gr), (id_1 .._opt_.. id_2), (i .._opt_.. ii) )
- else
- -- Level 3
- for iii=1,#options[i].gr[ii].gr do
- id_3 = options[i].gr[ii].gr[iii].id
- if options[i].gr[ii].gr[iii].sh then
- code_option( (options[i].gr[ii].gr[iii].gr), (id_1 .._opt_.. id_2 .._opt_.. id_3), (i .._opt_.. ii .._opt_.. iii) )
- else
- ----
- end
- end
-
- end
- end
- end
- end
-
-end
-
-
-------------------------------------------------------------
--- Functors
-------------------------------------------------------------
-
--- Special
-function start_lighting_ui(self)
- self:On_Cancel()
- ui_ctrl_lighting.start()
-end
-
--- Preconditions
-function level_present()
- return level.present()
-end
-function debug_only()
- return DEV_DEBUG
-end
-function for_renderer(...)
- local rend = {...}
- local curr_rend = get_console_cmd(0, "renderer")
- local result = false
- for i=1,#rend do
- result = result or curr_rend == rend[i]
- end
- return result
-end
-
--- Default values
-function def_radio_playlist(i)
- if (i == 1) then return "OST"
- elseif (i == 2) then return "TRX_Special"
- else return "Playlist_" .. tostring(i)
- end
-end
-
--- Contents
-function cont_vid_mode()
- local ratio = {
- [round_idp(5/4, 1)] = "(5:4)",
- [round_idp(4/3, 1)] = "(4:3)",
- [round_idp(16/9, 1)] = "(16:9)",
- [round_idp(16/10, 1)] = "(16:10)",
- [round_idp(21/9, 1)] = "(21:9)",
- [round_idp(32/9, 1)] = "(32:9)",
- }
-
- local ress = game.get_resolutions() -- get all res list from engine in one string
- ress = str_explode(ress,",")
-
- local cont = {}
- for i=1,#ress do
- local res = str_explode(ress[i],"x")
- local w = tonumber(res[1])
- local h = tonumber(res[2])
- local rat = ratio[round_idp(w/h , 1)] or ""
- cont[#cont + 1] = { (w.."x"..h) , (w.." x "..h.." "..rat) }
- end
-
- return cont
-end
-function cont_renderer()
- if for_renderer("renderer_r2a","renderer_r2","renderer_r2.5") then
- return {{"renderer_r2a"},{"renderer_r2"},{"renderer_r2.5"}}
- else
- local curr = get_console_cmd(0, "renderer")
- return {{curr}}
- end
-end
-function cont_sun_quality()
- local cont = { {"st_opt_low","low"},{"st_opt_medium","medium"},{"st_opt_high","high"} }
- if for_renderer("renderer_r3","renderer_r4") then
- cont[#cont + 1] = {"st_opt_ultra","ultra"}
- cont[#cont + 1] = {"st_opt_extreme","extreme"}
- end
- return cont
-end
-
--- Functor to execute on apply
-function func_screen_mode()
- local val = opt_temp["video/basic/screen_mode"]
- if (val == nil) then
- val = axr_main.config:r_value(opt_section, "video/basic/screen_mode", 2)
- end
-
- if (val == 1) then
- exec_console_cmd("rs_screenmode fullscreen")
- elseif (val == 2) then
- exec_console_cmd("rs_screenmode borderless")
- else
- exec_console_cmd("rs_screenmode windowed")
- end
- --[[
- if val == 1 then
- exec_console_cmd("rs_fullscreen on")
- exec_console_cmd("rs_borderless 0")
- else
- exec_console_cmd("rs_fullscreen off")
- exec_console_cmd("rs_borderless 1")
- end
- --]]
-end
-function func_localization()
- local val = opt_temp["other/localization"]
- if (val == nil) then
- val = axr_main.config:r_value(opt_section, "other/localization", 0)
- end
-
- if (ini_loc:r_value("string_table","language") ~= val) then
- ini_loc:w_value("string_table","language",val)
- ini_loc:save()
- reload_ini_sys()
- game.reload_language()
-
- if level.present() then
- SendScriptCallback("on_localization_change")
- end
- end
-end
-function func_slot_hud()
- if level.present() then
- local val = opt_temp["video/hud/show_slots"]
- if (val == nil) then
- val = axr_main.config:r_value(opt_section, "video/hud/show_slots", 1)
- end
-
- if val then
- item_artefact.activate_hud()
- else
- item_artefact.deactivate_hud()
- end
- end
-end
-function func_hardcore_ai_aim()
- if level.present() then
- local val = opt_temp["gameplay/general/hardcore_ai_aim"]
- if (val == nil) then
- val = axr_main.config:r_value(opt_section, "gameplay/general/hardcore_ai_aim", 1)
- end
-
- if val then
- exec_console_cmd("ai_aim_max_angle 20.0")
- exec_console_cmd("ai_aim_min_angle 17.0")
- exec_console_cmd("ai_aim_min_speed 2.5")
- exec_console_cmd("ai_aim_predict_time 0.28")
- else
- exec_console_cmd("ai_aim_max_angle 0.7854")
- exec_console_cmd("ai_aim_min_angle 0.19635")
- exec_console_cmd("ai_aim_min_speed 0.24")
- exec_console_cmd("ai_aim_predict_time 0.40")
- end
- end
-end
-
--- unused
--- function func_autosave_timer()
- -- if (level.present() and game_autosave) then
- -- local val = opt_temp["other/autosave_timer"]
- -- if (val == nil) then
- -- val = axr_main.config:r_value(opt_section, "other/autosave_timer", 1)
- -- end
-
- -- if val then
- -- game_autosave.activate_feature()
- -- else
- -- game_autosave.deactivate_feature()
- -- end
- -- end
--- end
-
-function func_autosave_timer_new()
- game_autosave_new.option_updated()
-end
-
-function func_hud_minimap()
- if (level.present()) then
- local val = opt_temp["video/hud/show_minimap"]
- if (val == nil) then
- val = axr_main.config:r_value(opt_section, "video/hud/show_minimap", 0)
- end
-
- local maingameui = ActorMenu.get_maingame()
- if (maingameui and maingameui.UIZoneMap) then
- maingameui.UIZoneMap.disabled = not val
- maingameui.UIMotionIcon:Show(maingameui.UIZoneMap.disabled == false)
- end
- end
-end
-function func_hud_autohide_bar()
- if (level.present()) then
- local val = opt_temp["video/hud/autohide_stamina_bar"]
- if (val == nil) then
- val = axr_main.config:r_value(opt_section, "video/hud/autohide_stamina_bar", 1)
- end
-
- actor_effects.toggle_hud_autohide(val)
- end
-end
-function func_player_name()
- local se_actor = alife():actor()
- if se_actor then
- local curr_name = se_actor:character_name()
- local new_name = opt_temp["gameplay/general/player_name"] or axr_main.config:r_value(opt_section, "gameplay/general/player_name", 0)
- if new_name and (new_name ~= "") and (new_name ~= curr_name) then
- se_actor:set_character_name(new_name)
- printf("- Changed player name from (%s) to (%s)", curr_name, new_name)
- end
- end
-end
-function func_gameplay_diff(fac)
- if (opt_temp["gameplay/gameplay_diff/"..fac] ~= nil) then
- game_difficulties.set_game_factor(fac, opt_temp["gameplay/gameplay_diff/"..fac])
- end
-end
-function func_economy_diff(fac)
- if (opt_temp["gameplay/economy_diff/"..fac] ~= nil) then
- game_difficulties.set_eco_factor(fac, opt_temp["gameplay/economy_diff/"..fac])
- end
-end
-function func_debug_hud()
- if (level.present() and xrs_debug_tools) then
- local val = opt_temp["other/debug_hud"]
- if (val == nil) then
- val = axr_main.config:r_value(opt_section, "other/debug_hud", 1)
- end
-
- if val then
- xrs_debug_tools.activate_feature()
- else
- xrs_debug_tools.deactivate_feature()
- end
- end
-end
-function func_debug_map_hud()
- if (level.present() and ui_map_debug_ex) then
- local val = opt_temp["other/debug_map_hud"]
- if (val == nil) then
- val = axr_main.config:r_value(opt_section, "other/debug_map_hud", 1)
- end
-
- if val then
- ui_map_debug_ex.activate_feature()
- else
- ui_map_debug_ex.deactivate_feature()
- end
- end
-end
-function func_crosshair_clr(n)
- local val = opt_temp["video/hud/crosshair_clr_" .. n]
- if (val == nil) then
- return
- end
-
- local curr = get_console_cmd(nil, "g_crosshair_color")
- curr = tostring(curr)
- local r,g,b,a = string.match(curr,"(%d+), (%d+), (%d+), (%d+)")
- if n == "a" then
- a = val
- elseif n == "r" then
- r = val
- elseif n == "g" then
- g = val
- elseif n == "b" then
- b = val
- end
- exec_console_cmd( strformat("g_crosshair_color (%s, %s, %s, %s)",r,g,b,a) )
-end
-
--- Current value override
-function curr_renderer()
- return get_console_cmd(0, "renderer")
-end
-function curr_screen_mode()
- local sm = get_console_cmd(0, "rs_screenmode")
- if (sm == "fullscreen") then
- return 1
- elseif (sm == "borderless") then
- return 2
- end
- return 3
-end
-function curr_player_name()
- return alife():actor():character_name()
-end
-function curr_economy(fact)
- local value = game_difficulties.get_eco_factor(fact)
- return value
-end
-function curr_gameplay(fact)
- local value = game_difficulties.get_game_factor(fact)
- return value
-end
-function curr_localization()
- local val = ini_loc:r_value("string_table","language") or axr_main.config:r_value(opt_section, "other/localization", 0)
- return val
-end
-function curr_crosshair_clr(n)
- local curr = get_console_cmd(nil, "g_crosshair_color")
- curr = tostring(curr)
- local r,g,b,a = string.match(curr,"(%d+), (%d+), (%d+), (%d+)")
- if n == "a" then
- return tonumber(a)
- elseif n == "r" then
- return tonumber(r)
- elseif n == "g" then
- return tonumber(g)
- elseif n == "b" then
- return tonumber(b)
- end
- return 255
-end
-
--- Utilities
-function is_int(num)
- return (m_floor(num) == num)
-end
-function exec(func,...)
- if (not func) then
- return false
- end
- return func(...)
-end
-function str_opt_explode(id, by_num)
- local nums = by_num and opt_index[id] or id
- local t = nums and str_explode(nums, _opt_) or {}
- if by_num then
- for i=1,#t do
- t[i] = tonumber(t[i])
- end
- end
- return t
-end
-function get_opt_table(id)
- local t = str_opt_explode(id, true)
- if #t == 0 then
- return {}
- end
-
- if #t == 1 then
- return options[t[1]]
- elseif #t == 2 then
- return options[t[1]].gr[t[2]]
- elseif #t == 3 then
- return options[t[1]].gr[t[2]].gr[t[3]]
- elseif #t == 4 then
- return options[t[1]].gr[t[2]].gr[t[3]].gr[t[4]]
- end
-end
-function check_opt_table(id)
- local t = str_opt_explode(id, true)
- return #t > 0
-end
-
---------------------
-function get(id)
- if (#options == 0) then
- init_opt_base()
- end
-
- local value = axr_main.config:r_value(opt_section, id, opt_val[id])
- if (value ~= nil) then
- --print_dbg("/Got axr_option [%s] = %s", id, value)
- return value
- end
-
- -- Write in axr_main if it doesn't exist
- local v = get_opt_table(id)
- if v.cmd then
- if v.val == 0 then
- value = get_console_cmd(0, v.cmd)
- elseif v.val == 1 then
- value = get_console_cmd(1, v.cmd)
- elseif v.val == 2 then
- value = get_console_cmd(0, v.cmd) --get_console_cmd(2, v.cmd)
- value = tonumber(value)
- if v.min and v.max then
- value = clamp(value, v.min, v.max)
- end
- value = round_idp(value, v.prec or precision)
- end
- elseif (type(v.def) == "table") then
- value = exec(unpack(v.def))
- axr_main.config:w_value(opt_section, id, value)
- axr_main.config:save()
- else
- value = v.def
- axr_main.config:w_value(opt_section, id, value)
- axr_main.config:save()
- end
-
- --print_dbg("/Got option [%s] = %s", id, value)
- if (value == nil) then
- printe("!Found nil option value [%s]", id)
- end
-
- return value
-end
-
-function set(id, value)
- axr_main.config:w_value(opt_section, id, value)
- axr_main.config:save()
-end
---------------------
-
-
---===========================================================
---//////////////////////// OPTIONS //////////////////////////
---===========================================================
-
-class "UIOptions" (CUIScriptWnd)
-
-function UIOptions:__init() super()
- self.last_tree = {}
- self.last_path = nil
- self.last_curr_tree = nil
-
- self._Cap = {}
- self._Check = {}
- self._List = {}
- self._Input = {}
- self._Track = {}
- self._Radio = {}
-
- -- Prepare the options table
- if (#options == 0) then
- init_opt_base()
- end
-
- self:InitControls()
- self:InitCallBacks()
-
- self:Reset()
-end
-
-function UIOptions:__finalize()
-end
-
-function UIOptions:InitControls()
- self:SetWndRect (Frect():set(0,0,1024,768))
- self:Enable (true)
-
- self.xml = CScriptXmlInit()
- local xml = self.xml
- xml:ParseFile ("ui_options.xml")
-
- self.background = xml:InitStatic("background", self)
- self.dialog = xml:InitStatic("main", self)
-
- xml:InitStatic("main:frame", self.dialog)
-
- -- Buttons
- self.btn_accept = xml:Init3tButton("main:btn_accept", self.dialog)
- self:Register(self.btn_accept, "btn_accept")
-
- self.btn_reset = xml:Init3tButton("main:btn_reset", self.dialog)
- self:Register(self.btn_reset, "btn_reset")
-
- self.btn_default = xml:Init3tButton("main:btn_default", self.dialog)
- self:Register(self.btn_default, "btn_default")
-
- self.btn_cancel = xml:Init3tButton("main:btn_cancel", self.dialog)
- self:Register(self.btn_cancel, "btn_cancel")
-
- -- Pending text
- --xml:InitFrame("main:notify_frame", self.dialog)
- self.pending = xml:InitTextWnd("main:notify", self.dialog)
-
- -- Options lists
- self.tree = {}
- self.bl = {}
-
- -- Options showcase
- self.scroll_opt = xml:InitScrollView("main:scroll", self.dialog)
-
- -- Presets
- self.preset_cap = xml:InitStatic("main:cap_preset", self.dialog)
- self.preset = xml:InitComboBox("main:preset",self.dialog)
- self:Register(self.preset, "preset")
- self.preset:Show(false)
- self.preset_cap:Show(false)
-
- -- Message box
- self.message_box = CUIMessageBoxEx()
- self:Register (self.message_box, "mb")
-
- -- Hint Window
- self.hint_wnd = utils_ui.UIHint(self)
-end
-
-function UIOptions:InitCallBacks()
- self:AddCallback("btn_accept", ui_events.BUTTON_CLICKED, self.OnButton_Accept, self)
- self:AddCallback("btn_reset", ui_events.BUTTON_CLICKED, self.OnButton_Reset, self)
- self:AddCallback("btn_default", ui_events.BUTTON_CLICKED, self.OnButton_Default, self)
- self:AddCallback("btn_cancel", ui_events.BUTTON_CLICKED, self.OnButton_Cancel, self)
-
- self:AddCallback("preset", ui_events.LIST_ITEM_SELECT, self.Callback_Preset, self)
-
- self:AddCallback("mb", ui_events.MESSAGE_BOX_YES_CLICKED, self.On_Discard, self)
- --self:AddCallback("mb", ui_events.MESSAGE_BOX_NO_CLICKED, self.On_Discard,self)
-end
-
-function UIOptions:Update()
- CUIScriptWnd.Update(self)
-
- -- Show hint on hover
- for id,ctrl in pairs(self._Cap) do
- if ctrl:IsCursorOverWindow() then
- local str = opt_str .. id .. "_desc"
- local str_t = game.translate_string(str)
- if (str ~= str_t) then
- self.hint_wnd:Update(str_t)
- end
- return
- end
- end
-
- self.hint_wnd:Update()
-
- -- Hack to simulate tracing method for TrackBar value changes. TODO: add callback support for CUITrackBar in engine, this is just silly
- for id,e in pairs(self._Track) do
- if e.ctrl:IsCursorOverWindow() then
- local v = self:GetOption(id)
- local value = round_idp(e.ctrl:GetFValue(), v.prec or precision)
- if (value ~= e.value) then
- e.value = value
- self:Callback_Track(e.txt, e.path, e.opt, v, value)
- return
- end
- end
- end
-end
-
-function UIOptions:Reset()
- -- Clear all trees
- for i=1,3 do
- if self.tree[i] then
- if type(self.tree[i]) == table then
- for j=1,#self.tree[i] do
- self.tree[i][j]:Clear()
- end
- else
- self.tree[i]:Clear()
- end
- end
- end
-
- self:Register_Tree(1, "", options, 1)
-end
-
-function UIOptions:Reset_opt(curr_tree, path, flags)
- flags = flags or {}
- local xml = self.xml
- self.scroll_opt:Clear()
-
- -- If options tree has a precondition that must be met, don't show it if it returns false
- if curr_tree.precondition and (not exec(unpack(curr_tree.precondition))) then
- if curr_tree.output then
- local _txt = xml:InitTextWnd("elements:block", nil)
- _txt:SetText( game.translate_string(curr_tree.output) )
-
- self.scroll_opt:AddWindow(_txt, true)
- _txt:SetAutoDelete(false)
- end
- else
-
- -- Keybinds
- if (self.dlg_controls == nil) then
- self.dlg_controls = opt_controls()
- self.dlg_controls:InitControls(0,0, xml, self)
- self.dlg_controls:Show (false)
- self.dialog:AttachChild (self.dlg_controls)
- xml:InitWindow ("tab_size", 0, self.dlg_controls)
-
- local opt = COptionsManager()
-
- opt:SetCurrentValues("key_binding")
- opt:SaveBackupValues("key_binding")
- end
- if (path == "control/keybind") then
- self.dlg_controls:Show(true)
- self.Keybinds_Shown = true
- else
- self.dlg_controls:Show(false)
- end
-
- -- Presets
- self:Register_Preset(curr_tree)
-
- if curr_tree.apply_to_all and curr_tree.id_gr then
- flags.apply_to_all = true
- flags.group = curr_tree.id_gr
- else
- flags.apply_to_all = nil
- end
-
- empty_table(self._Cap)
- empty_table(self._Check)
- empty_table(self._List)
- empty_table(self._Input)
- empty_table(self._Track)
- empty_table(self._Radio)
-
- for i=1,#curr_tree.gr do
- -- Check preconditions
- local to_hide = curr_tree.gr[i].precondition and (not exec(unpack(curr_tree.gr[i].precondition)))
- for j=1,10 do -- support for 10 preconditions
- if (not curr_tree.gr[i]["precondition_" .. j]) then
- break
- elseif (not exec(unpack(curr_tree.gr[i]["precondition_" .. j]))) then
- to_hide = true
- break
- end
- end
-
- if (not to_hide) then
- local opt = curr_tree.gr[i].id
- local v = curr_tree.gr[i]
-
- local _st = xml:InitStatic("main:st", nil)
- local _h = 0
-
------------ Support
- if (v.type == "line") then
- _h = self:Register_Line(xml, _st)
-
- elseif (v.type == "image") then
- _h = self:Register_Image(xml, _st, v)
-
- elseif (v.type == "slide") then
- _h = self:Register_Slide(xml, _st, v)
-
- elseif (v.type == "title") then
- _h = self:Register_Title(xml, _st, v)
-
- elseif (v.type == "desc") then
- _h = self:Register_Desc(xml, _st, v)
-
------------ Option
- elseif (v.type == "check") then
- _h = self:Register_Check(xml, _st, path, opt, v, flags)
-
- elseif (v.type == "button") then
- _h = self:Register_Button(xml, _st, path, opt, v, flags)
-
- elseif (v.type == "list") then
- _h = self:Register_List(xml, _st, path, opt, v, flags)
-
- elseif (v.type == "input") then
- _h = self:Register_Input(xml, _st, path, opt, v, flags)
-
- elseif (v.type == "track") then
- _h = self:Register_Track(xml, _st, path, opt, v, flags)
-
- elseif (v.type == "radio_h") then
- _h = self:Register_Radio(xml, _st, path, opt, v, true, flags)
-
- elseif (v.type == "radio_v") then
- _h = self:Register_Radio(xml, _st, path, opt, v, false, flags)
-
- end
-
- _st:SetWndSize(vector2():set(_st:GetWidth(), _h + 10))
- self.scroll_opt:AddWindow(_st, true)
- _st:SetAutoDelete(true)
- end
- end
- if self.Save_AXR then
- self.Save_AXR = false
- axr_main.config:save()
- end
- end
-end
-
-function UIOptions:Reset_last_opt()
- Register_UI("UIOptions")
-
- if self.last_curr_tree and self.last_path then
- self:Reset_opt(self.last_curr_tree, self.last_path)
- self:UpdatePending()
- end
-end
-
-------------------------------------------------------------
--- Elements
-------------------------------------------------------------
-function UIOptions:Register_Cap(xml, handler, id, hint)
- id = s_gsub(id, _opt_, "_")
- self._Cap[id] = xml:InitStatic("elements:cap",handler)
- self._Cap[id]:TextControl():SetText( game.translate_string(opt_str .. (hint or id)) )
- return self._Cap[id]:GetHeight()
-end
-
-function UIOptions:Register_Line(xml, handler)
- local line = xml:InitStatic("elements:line",handler)
- return (line:GetHeight() + 10)
-end
-
-function UIOptions:Register_Image(xml, handler, v)
- local pic = xml:InitStatic("elements:image",handler)
- if v.link then
- if (v.pos) then
- local pos = pic:GetWndPos()
- pic:SetWndPos(vector2():set( pos.x + v.pos[1] , pos.y + v.pos[2] ))
- end
- if (v.size) then
- pic:SetWndSize(vector2():set( v.size[1] , v.size[2] ))
- end
- pic:InitTexture(v.link)
- pic:SetStretchTexture(v.stretch and true or false)
- end
- return pic:GetHeight()
-end
-
-function UIOptions:Register_Slide(xml, handler, v)
- local frame = xml:InitStatic("elements:slide", handler)
- local _pos = frame:GetWndPos()
- frame:SetWndPos(vector2():set( _pos.x , _pos.y + (v.spacing or 20) ))
-
- local pic = xml:InitStatic("elements:slide:pic", frame)
- if v.link then
- pic:InitTexture(v.link)
- pic:SetStretchTexture(true)
- if (v.pos) then
- local pos = pic:GetWndPos()
- pic:SetWndPos(vector2():set( pos.x + v.pos[1] , pos.y + v.pos[2] ))
- end
- if (v.size) then
- pic:SetWndSize(vector2():set( v.size[1] * width_factor , v.size[2] ))
- end
- pic:InitTexture(v.link)
- end
-
- local txt = xml:InitTextWnd("elements:slide:txt", frame)
- if v.text then
- txt:SetText( game.translate_string(v.text) )
- end
-
- xml:InitStatic("elements:slide:line_1", frame)
- xml:InitStatic("elements:slide:line_2", frame)
-
- return (pic:GetHeight() + 20)
-end
-
-function UIOptions:Register_Title(xml, handler, v)
- local title = xml:InitTextWnd("elements:title_" .. (v.align or "l"), handler)
- title:SetText( game.translate_string(v.text) )
- title:AdjustHeightToText()
- title:SetWndSize(vector2():set(title:GetWidth(), title:GetHeight() + 20))
- if v.clr and v.clr[4] then
- title:SetTextColor( GetARGB(v.clr[1], v.clr[2], v.clr[3], v.clr[4]) )
- end
- return title:GetHeight()
-end
-
-function UIOptions:Register_Desc(xml, handler, v)
- local desc = xml:InitTextWnd("elements:desc", handler)
- desc:SetText( game.translate_string(v.text) )
- desc:AdjustHeightToText()
- desc:SetWndSize(vector2():set(desc:GetWidth(), desc:GetHeight() + 20))
- if v.clr and v.clr[4] then
- desc:SetTextColor( GetARGB(v.clr[1], v.clr[2], v.clr[3], v.clr[4]) )
- end
- return desc:GetHeight()
-end
-
-function UIOptions:Register_Check(xml, handler, path, opt, v, flags)
- local id = cc(path , opt)
-
- -- Caption
- local h = self:Register_Cap(xml, handler, id, v.hint)
-
- -- Apply to all button
- if flags.apply_to_all and flags.group then
- self:Register_BtnAll(xml, handler, path, opt, v, flags)
- end
-
- -- Create control
- local ctrl = xml:InitCheck("elements:check",handler)
- if (ctrl:GetHeight() > h) then
- h = ctrl:GetHeight()
- end
-
- -- Get values
- local value = self:GetValue(path, opt, v, flags)
- ctrl:SetCheck(value)
-
- -- Register
- local id_ctrl = self:Stacker(path, opt, v)
-
- self:Register(ctrl, id_ctrl)
- local _wrapper = function(handler) -- we need wrapper in order to pass ctrl to method
- self:Callback_Check(ctrl, path, opt, v)
- end
- self:AddCallback(id_ctrl, ui_events.BUTTON_CLICKED, _wrapper, self)
-
- return h
-end
-function UIOptions:Callback_Check(ctrl, path, opt, v)
- local value = ctrl:GetCheck()
- self:CacheValue(path, opt, value, v)
-end
-
-function UIOptions:Register_Button(xml, handler, path, opt, v, flags)
- local id = cc(path , opt)
-
-
-
- --[[ Apply to all button
- if flags.apply_to_all and flags.group then
- self:Register_BtnAll(xml, handler, path, opt, v, flags)
- end
- --]]
-
- xml:InitFrame("elements:frame_button", handler)
-
- -- Create control
- local ctrl = xml:Init3tButton("elements:btn_button", handler)
- local h = ctrl:GetHeight()
-
- -- Caption
- local id_cap = s_gsub(id, _opt_, "_")
- self._Cap[id_cap] = xml:InitStatic("elements:cap_button",handler)
- self._Cap[id_cap]:TextControl():SetText( game.translate_string(opt_str .. (v.hint or id_cap)) )
- if (self._Cap[id_cap]:GetHeight() > h) then
- h = self._Cap[id_cap]:GetHeight()
- end
-
- -- Register
- local id_ctrl = self:Stacker(path, opt, v)
-
- self:Register(ctrl, id_ctrl)
- local _wrapper = function(handler) -- we need wrapper in order to pass ctrl to method
- self:Callback_Button(ctrl, path, opt, v)
- end
- self:AddCallback(id_ctrl, ui_events.BUTTON_CLICKED, _wrapper, self)
-
- return h
-end
-function UIOptions:Callback_Button(ctrl, path, opt, v)
- if v.functor_ui then
- local id = cc(path , opt)
- print_dbg("- Executing functor_ui of [%s]",id)
- exec(unpack(v.functor_ui),self)
- end
- if v.functor then
- local id = cc(path , opt)
- print_dbg("- Executing functor of [%s]",id)
- exec(unpack(v.functor))
- end
-end
-
-function UIOptions:Register_List(xml, handler, path, opt, v, flags)
- local id = cc(path , opt)
-
- -- Caption
- local h = self:Register_Cap(xml, handler, id, v.hint)
-
- -- Apply to all button
- if flags.apply_to_all and flags.group then
- self:Register_BtnAll(xml, handler, path, opt, v, flags)
- end
-
- -- Create control
- local ctrl = xml:InitComboBox("elements:list",handler)
- if (ctrl:GetHeight() > h) then
- --h = ctrl:GetHeight()
- end
-
- -- Get values
- local idx
- local value = self:GetValue(path, opt, v, flags)
- local content = self:GetContent(path, opt, v)
-
- -- Setup
- for i=1,#content do
- local str_2 = content[i][2] or tostring(content[i][1])
- local str = v.no_str and str_2 or game.translate_string(opt_str_lst .. str_2)
- ctrl:AddItem( game.translate_string(str), i)
-
- if content[i][1] == value then
- idx = i
- end
- end
- idx = idx or 1
-
- local str_2 = content[idx][2] or tostring(content[idx][1])
- local str = v.no_str and str_2 or game.translate_string(opt_str_lst .. str_2)
- ctrl:enable_id( idx )
- ctrl:SetText( game.translate_string(str) )
-
- -- Register
- local id_ctrl = self:Stacker(path, opt, v)
-
- self:Register(ctrl, id_ctrl)
- local _wrapper = function(handler) -- we need wrapper in order to pass ctrl to method
- self:Callback_List(ctrl, path, opt, v)
- end
- self:AddCallback(id_ctrl, ui_events.LIST_ITEM_SELECT, _wrapper, self)
-
- return h
-end
-function UIOptions:Callback_List(ctrl, path, opt, v)
- local i = ctrl:CurrentID()
- local content = self:GetContent(path, opt, v)
- self:CacheValue(path, opt, content[i][1], v)
-end
-
-function UIOptions:Register_Input(xml, handler, path, opt, v, flags)
- local id = cc(path , opt)
-
- -- Caption
- local h = self:Register_Cap(xml, handler, id, v.hint)
-
- -- Apply to all button
- if flags.apply_to_all and flags.group then
- self:Register_BtnAll(xml, handler, path, opt, v, flags)
- end
-
- -- Create control
- local ctrl = xml:InitEditBox("elements:input",handler)
- if (ctrl:GetHeight() > h) then
- h = ctrl:GetHeight()
- end
-
- -- Get values
- local value = self:GetValue(path, opt, v, flags)
- ctrl:SetText(value)
-
- -- Register
- local id_ctrl = self:Stacker(path, opt, v)
-
- self:Register(ctrl, id_ctrl)
- local _wrapper = function(handler) -- we need wrapper in order to pass ctrl to method
- self:Callback_Input(ctrl, path, opt, v)
- end
- self:AddCallback(id_ctrl, ui_events.EDIT_TEXT_COMMIT, _wrapper, self)
-
- return h
-end
-function UIOptions:Callback_Input(ctrl, path, opt, v)
- local value = ctrl:GetText()
- if not (value and value ~= "") then
- ctrl:SetText( self:GetCurrentValue(path, opt, v) or self:GetDefaultValue(path, opt, v) )
- return
- end
-
- if (v.val == 1) then
- value = tonumber(value)
- if (not value) then
- ctrl:SetText( self:GetCurrentValue(path, opt, v) or self:GetDefaultValue(path, opt, v) )
- return
- end
- value = clamp(value, v.min, v.max)
- end
-
- self:CacheValue(path, opt, value, v)
- ctrl:SetText(value)
-end
-
-function UIOptions:Register_Track(xml, handler, path, opt, v, flags)
- local id = cc(path , opt)
-
- -- Caption
- local h = self:Register_Cap(xml, handler, id, v.hint)
-
- -- Apply to all button
- if flags.apply_to_all and flags.group then
- self:Register_BtnAll(xml, handler, path, opt, v, flags)
- end
-
- -- Create control
- self._Track[id] = {}
- self._Track[id].ctrl = xml:InitTrackBar("elements:track",handler)
- self._Track[id].path = path
- self._Track[id].opt = opt
- if (self._Track[id].ctrl:GetHeight() > h) then
- h = self._Track[id].ctrl:GetHeight()
- end
-
- self._Track[id].txt = xml:InitTextWnd("elements:track_value",handler)
-
- -- Get values
- local value = self:GetValue(path, opt, v, flags)
- value = clamp(value, v.min, v.max)
- value = round_idp(value, v.prec or precision)
-
- local int = false --is_int(value) and is_int(v.step) and is_int(v.min) and is_int(v.max)
- self._Track[id].value = value -- temp
- self._Track[id].ctrl:SetInvert(v.invert and true or false)
- self._Track[id].ctrl:SetStep(v.step)
- if int then
- self._Track[id].ctrl:SetOptIBounds(v.min, v.max)
- self._Track[id].ctrl:SetIValue(value)
- else
- self._Track[id].ctrl:SetOptFBounds(v.min, v.max)
- self._Track[id].ctrl:SetFValue(value)
- end
- if (not v.no_str) then
- self._Track[id].txt:SetText(value)
- end
-
- return h
-end
-function UIOptions:Callback_Track(ctrl, path, opt, v, value)
- if (not v.no_str) then
- ctrl:SetText(value)
- end
- self:CacheValue(path, opt, value, v)
-end
-
-function UIOptions:Register_Radio(xml, handler, path, opt, v, typ, flags)
- local id = cc(path , opt)
-
- -- Caption
- local h = self:Register_Cap(xml, handler, id, v.hint)
-
- -- Apply to all button
- if flags.apply_to_all and flags.group then
- self:Register_BtnAll(xml, handler, path, opt, v, flags)
- end
-
- -- Determine type
- local str = typ and "horz" or "vert"
- local content = self:GetContent(path, opt, v)
- local num = #content
- if num > 8 and (not v.force_horz) then
- typ = false
- str = "vert"
- end
-
- -- Create control
- local frame = xml:InitStatic("elements:radio_" .. str, handler)
- local ctrl = {}
- local txt
- local offset = typ and m_floor(frame:GetWidth()/num) or 30
- local h_factor = typ and 1 or 0
- local v_factor = typ and 0 or 1
- local h1, h2 = 0, 0
- --printf("offset: %s - h_factor: %s - v_factor: %s - num: %s", offset, h_factor, v_factor, num)
- for i=1,num do
-
- -- Buttons
- ctrl[i] = xml:InitCheck("elements:radio_" .. str .. ":btn", frame)
- local pos = ctrl[i]:GetWndPos()
- h1 = (h1 * v_factor) + ctrl[i]:GetHeight()
- ctrl[i]:SetWndPos(vector2():set( pos.x + ((i-1) * offset * h_factor) , pos.y + ((i-1) * offset * v_factor) ))
-
- -- Text
- txt = xml:InitTextWnd("elements:radio_" .. str .. ":txt", frame)
- local pos2 = txt:GetWndPos()
- h2 = h_factor * txt:GetHeight()
- txt:SetWndPos(vector2():set( pos2.x + ((i-1) * offset * h_factor) , pos2.y - (v_factor * 30) + ((i-1) * offset * v_factor) ))
- local str_2 = content[i][2] or tostring(content[i][1])
- local str = v.no_str and game.translate_string(str_2) or game.translate_string(opt_str_lst .. str_2)
- txt:SetText( str )
-
- if (h1 + h2 > h) then
- h = h1 + h2
- end
- end
-
- -- Get values
- local value = self:GetValue(path, opt, v, flags)
-
- local id_ctrl = self:Stacker(path, opt, v)
- for i=1,num do
- if (content[i][1] == value) then
- ctrl[i]:SetCheck(true)
- else
- ctrl[i]:SetCheck(false)
- end
-
- -- Register
- self:Register(ctrl[i], id_ctrl .. i)
- local _wrapper = function(handler) -- we need wrapper in order to pass ctrl to method
- self:Callback_Radio(ctrl, path, opt, v, i)
- end
- self:AddCallback(id_ctrl .. i, ui_events.BUTTON_CLICKED, _wrapper, self)
- end
-
- return h
-end
-function UIOptions:Callback_Radio(ctrl, path, opt, v, n)
- local value = ctrl[n]:GetCheck()
- --printf("n = %s", n)
- if value then
- for i=1,#ctrl do
- if i ~= n then
- ctrl[i]:SetCheck(false)
- end
- end
-
- local content = self:GetContent(path, opt, v)
- self:CacheValue(path, opt, content[n][1], v)
- else
- ctrl[n]:SetCheck(true)
- end
-end
-
-function UIOptions:Register_BtnAll(xml, handler, path, opt, v, flags)
- local ctrl = xml:Init3tButton("elements:btn_all",handler)
- xml:InitStatic("elements:cap_all",handler)
-
- local id_ctrl = self:Stacker(path, opt, v)
-
- self:Register(ctrl, id_ctrl)
- local _wrapper = function(handler) -- we need wrapper in order to pass ctrl to method
- self:Callback_BtnAll(ctrl, path, opt, v, flags)
- end
- self:AddCallback(id_ctrl, ui_events.BUTTON_CLICKED, _wrapper, self)
-end
-function UIOptions:Callback_BtnAll(ctrl, path, opt, v, flags)
- local id = cc(path , opt)
- local group = flags.group
- local value = self:GetValue(path, opt, v, flags)
-
- -- Set same value for identical options of same group
- local function set_in_group(p, group, path, opt, value)
- print_dbg("~set_in_group | current path: %s - target opt: %s", path, opt)
- for i=1,#p do
- local path_ext = path and (path ~= "") and cc(path , p[i].id) or p[i].id
- if p[i].sh then
- print_dbg("~set_in_group | current path: %s - target opt: %s", path_ext, opt)
- if (p[i].id_gr == group) then
- local gr = p[i].gr
- for j=1,#gr do
- if gr[j].id == opt then
- local id_ext = cc(path_ext , opt)
- if check_opt_table(id_ext) then
- print_dbg("-set_in_group | Found match: %s", id_ext)
- self:CacheValue(path_ext, opt, value, gr[j])
- end
- end
- end
- end
- else
- set_in_group(p[i].gr, group, path_ext, opt, value)
- end
- end
- end
- set_in_group(options, group, "", opt, value)
-end
-
-function UIOptions:Register_Preset(ct)
- if ct.presets then
- self.preset:ClearList()
- --
- for i=1,#ct.presets do
- self.preset:AddItem( game.translate_string(opt_str_prst .. ct.presets[i]), i)
- end
- if (ct.curr_preset) then
- self.preset:SetText( game.translate_string(opt_str_prst .. ct.curr_preset) )
- end
- self.preset:Show(true)
- self.preset_cap:Show(true)
- else
- self.preset:ClearList()
- self.preset:Show(false)
- self.preset_cap:Show(false)
- end
-end
-function UIOptions:Callback_Preset()
- if not (self.last_curr_tree and self.last_path) then
- return
- end
-
- local txt = self.preset:GetText()
- if not (txt and txt ~= "") then
- return
- end
-
- -- Retrieve the preset section
- local pres
- local presets = self.last_curr_tree.presets
- for i=1,#presets do
- if game.translate_string(opt_str_prst .. presets[i]) == txt then
- pres = presets[i]
- break
- end
- end
-
- if pres and ini_pres:section_exist(pres) then
- self.last_curr_tree.curr_preset = pres
- --self:Reset_opt(self.last_curr_tree, self.last_path, { preset = pres })
-
- local n = ini_pres:line_count(pres)
- local result, id, value
- for i=0,n-1 do
- result, id, value = ini_pres:r_line_ex(pres,i,"","")
-
- -- Validate option
- local v = get_opt_table(id)
- if v and v.type then
-
- -- No need to modify options that can't be seen
- local to_hide = v.precondition and (not exec(unpack(v.precondition)))
- if (not to_hide) then
-
- -- Get proper value
- if v.val == 0 then
-
- elseif v.val == 1 then
- value = (value == "true") and true or false
- elseif v.val == 2 then
- value = tonumber(value)
- end
-
- -- Extract path and opt
- local t = str_opt_explode(id)
- local opt = t[#t]
- local path = t[1]
- for i=2,#t-1 do
- path = cc(path , t[i])
- end
-
- -- Cache changes
- self:CacheValue(path, opt, value, v)
- end
- end
- end
-
- -- Update XML elements
- self:Reset_opt(self.last_curr_tree, self.last_path)
-
- -- Update state
- self:UpdatePending()
- end
-end
-
-function UIOptions:Register_Tree(tr, path, group, idx)
- print_dbg("-Register_Tree | tr: %s - path: %s", tr, path)
- local xml = self.xml
-
- if (not self.tree[tr]) then
- self.tree[tr] = {}
- end
-
- if (not self.tree[tr][path]) then
- self.tree[tr][path] = xml:InitScrollView("main:tree_" .. tr, self.dialog)
-
- --[[
- local pos = self.tree[tr][path]:GetWndPos()
- if tr == 3 then idx = 1 end
- self.tree[tr][path]:SetWndPos(vector2():set( pos.x , pos.y + (25*(idx-1)) ))
- --]]
-
- if (not self.bl[tr]) then
- self.bl[tr] = {}
- end
-
- self.bl[tr][path] = {}
-
- -- Fill tree
- for i=1,#group do
- local _st = xml:InitStatic("main:st_tree", nil)
-
- self.bl[tr][path][i] = xml:InitCheck("elements:btn_list", _st)
- self.bl[tr][path][i]:SetCheck(false)
-
- local txt = xml:InitTextWnd("elements:txt_list", _st)
- txt:SetText( game.translate_string(opt_str_menu .. group[i].id) )
- txt:SetTextColor( clr_tree[tr] )
-
- self.tree[tr][path]:AddWindow(_st, true)
- _st:SetAutoDelete(false)
- end
-
- -- Set Callback for tree buttons
- for i=1,#self.bl[tr][path] do
- local path_i = (path ~= "") and cc(path , group[i].id) or group[i].id
-
- self:Register(self.bl[tr][path][i], ("tree_"..path_i))
- local _wrapper = function(handler) -- we need wrapper in order to pass ctrl to method
- self:Callback_Tree(tr, path_i, group[i], self.bl[tr][path], i)
- end
- self:AddCallback(("tree_"..path_i), ui_events.BUTTON_CLICKED, _wrapper, self)
- end
- end
-
- self.tree[tr][path]:Show(true)
-
- self.bl[tr][path][1]:SetCheck(true)
- local path_1 = (path ~= "") and cc(path , group[1].id) or group[1].id
- self:Callback_Tree(tr, path_1, group[1], self.bl[tr][path], 1)
-end
-function UIOptions:Callback_Tree(tr, path, group, ctrl, i)
- print_dbg("-Callback_Tree | tr: %s - path: %s - index: %s", tr, path, i)
-
- -- Radio buttons behavior
- if (ctrl[i]:GetCheck() == false) then
- ctrl[i]:SetCheck(true)
- return
- end
- for k=1,#ctrl do
- if k ~= i then
- ctrl[k]:SetCheck(false)
- end
- end
-
- -- Hide all sub trees
- for k=tr+1,#self.tree do
- for _,v in pairs(self.tree[k]) do
- v:Show(false)
- end
- end
-
- -- If its an option list, show it
- if group.sh then
- self:Reset_opt(group, path)
-
- -- Caching current options
- self.last_path = path
- if (not self.last_curr_tree) then
- self.last_curr_tree = {}
- end
- empty_table(self.last_curr_tree)
- copy_table(self.last_curr_tree, group)
-
- else
- self:Register_Tree(tr+1, path, group.gr, i)
- end
-end
-
-
-------------------------------------------------------------
--- Utilities
-------------------------------------------------------------
-function UIOptions:GetValue(path, opt, v, flags)
--- NOTE: make sure to check for nil values only, since false exists as legit value for commands and check boxes
-
- local value
-
- if flags and flags.def then
- value = self:GetDefaultValue(path, opt, v)
-
- elseif flags and flags.preset then
- local pres = flags.preset
- local id = cc(path , opt)
-
- if v.val == 0 then
- value = ini_pres:r_string_ex(pres, id)
- elseif v.val == 1 then
- value = ini_pres:r_bool_ex(pres, id)
- elseif v.val == 2 then
- value = ini_pres:r_float_ex(pres, id)
- end
- end
-
- if (value ~= nil) or (flags and flags.def) then
- if (value ~= nil) and (v.type == "track") then
- value = clamp(value, v.min, v.max)
- end
- self:CacheValue(path, opt, value, v)
- end
- if (value == nil) then
- value = self:GetCurrentValue(path, opt, v)
- end
- if (value == nil) then
- value = self:GetDefaultValue(path, opt, v)
- end
-
- if (value ~= nil) and (v.type == "track") then
- value = clamp(value, v.min, v.max)
- end
-
- return value
-end
-
-function UIOptions:GetDefaultValue(path, opt, v)
- local id = cc(path , opt)
- local value
-
- if (type(v.def) == "table") then
- value = exec(unpack(v.def))
- else
- value = v.def
- end
-
- -- We cache default values for the first time, so current values rely on them up later
- -- because some default values are randomized and player might not touch them, thus causing randomized effects where they are used in-game
- if (axr_main.config:r_value(opt_section, id, v.val) == nil) and (value ~= nil) then
- axr_main.config:w_value(opt_section, id, value)
- self.Save_AXR = true
- end
-
- return value
-end
-
-function UIOptions:GetCurrentValue(path, opt, v)
- local id = cc(path , opt)
-
- if (opt_temp[id] ~= nil) then
- local _id = s_gsub(id, _opt_, "_")
- if self._Cap[_id] and self._Cap[_id]:IsShown() then
- self._Cap[_id]:TextControl():SetTextColor( clr_o )
- end
-
- return opt_temp[id]
- end
-
- local value
- if v.curr then
- value = exec(unpack(v.curr))
- elseif v.cmd then
- if v.val == 0 then
- value = get_console_cmd(0, v.cmd)
- elseif v.val == 1 then
- value = get_console_cmd(1, v.cmd)
- elseif v.val == 2 then
- value = get_console_cmd(0, v.cmd) --get_console_cmd(2, v.cmd) -- some commands are integers, using get_float will return 0. This is a walkaround
- value = tonumber(value)
- if v.min and v.max then
- value = clamp(value, v.min, v.max)
- end
- value = round_idp(value, v.prec or precision)
- end
-
- else
- value = axr_main.config:r_value(opt_section, id, v.val)
- end
-
- return value
-end
-
-function UIOptions:GetContent(path, opt, v)
- if v.cmd and (not v.content) then
- local value
- if v.val == 0 then
- value = get_console_cmd(0, v.cmd)
- elseif v.val == 1 then
- value = get_console_cmd(1, v.cmd)
- elseif v.val == 2 then
- value = get_console_cmd(0, v.cmd) --get_console_cmd(2, v.cmd)
- value = tonumber(value)
- if v.min and v.max then
- value = clamp(value, v.min, v.max)
- end
- value = round_idp(value, v.prec or precision)
- end
- return {{value,tostring(value)}}
-
- elseif (type(v.content[1]) == "function") then
- return exec(unpack(v.content))
- else
- return v.content
- end
-end
-
-function UIOptions:GetOption(id)
-
- local t = str_explode(id,_opt_ )
- local v = options
- for i=1,#t do
- for j=1,#v do
- if v[j].id == t[i] then
- if i == #t then
- v = v[j]
- else
- v = v[j].gr
- end
- break
- end
- end
- end
- return v
-end
-
-function UIOptions:CacheValue(path, opt, value, v)
- local id = cc(path , opt)
-
- -- Do a backup of current values first
- if (opt_backup[id] == nil) then
- opt_backup[id] = self:GetValue(path, opt, v)
- print_dbg("# Backup [%s] = %s", id, opt_backup[id])
- end
-
- -- Cache changed values
- if (value ~= nil) and (value ~= opt_backup[id]) then
- opt_temp[id] = value
- print_dbg("/ Cached [%s] = %s", id, value)
- else
- opt_temp[id] = nil -- no need to cache current values
- print_dbg("~ Cleared cache [%s]", id)
- end
-
- -- Change text color
- local _id = s_gsub(id, _opt_, "_")
- if self._Cap[_id] and self._Cap[_id]:IsShown() then
- if (opt_temp[id] ~= nil) and (opt_temp[id] ~= opt_backup[id]) then
- self._Cap[_id]:TextControl():SetTextColor( clr_o )
- else
- self._Cap[_id]:TextControl():SetTextColor( clr_g1 )
- end
- end
-
- -- Update state
- self:UpdatePending()
-end
-
-function UIOptions:Stacker(path, opt, v)
--- This assure that each time a control is created, an unique callback id is given to it
--- Why? because in normal case, jumping between options removes the previous ones constantly, getting back to them will create new controls and assign them to the old ids
--- This is bad because callbacks are still attached to the old controls, any fresh controls that get assigned to those ids will be inactive as a result
--- My solution is this function to generate unique id each time a control is created
-
- if (not v.stack) then v.stack = 0 end
- v.stack = v.stack + 1
-
- return cc( cc(path , opt) , v.stack)
-end
-
-function UIOptions:UpdatePending()
- local size = size_table(opt_temp)
- if size > 0 then
- self.pending:SetText( strformat( game.translate_string("ui_mm_warning_pending"), size) )
- else
- self.pending:SetText("")
- end
-end
-
-
-------------------------------------------------------------
--- Callbacks
-------------------------------------------------------------
-function UIOptions:OnButton_Accept()
- --if self.Need_VidRestart then
- -- self.message_box:InitMessageBox("message_box_yes_no")
- -- self.message_box:SetText(string.format("%s %d% s", game.translate_string("ui_mm_confirm_changes"), 15, game.translate_string("mp_si_sec")))
- -- self.message_box:ShowDialog(true)
- --else
- self:On_Accept()
- --end
-end
-
-function UIOptions:OnButton_Reset()
- if self.last_path and self.last_curr_tree and is_not_empty(opt_temp) then
- local to_reset
- for id, val in pairs(opt_temp) do
- if s_find(id,self.last_path) then
- to_reset = true
- opt_temp[id] = nil
-
- local _id = s_gsub(id, _opt_, "_")
- if self._Cap[_id] and self._Cap[_id]:IsShown() then
- self._Cap[_id]:TextControl():SetTextColor( clr_g1 )
- end
- end
- end
-
- if (to_reset) then
- self:UpdatePending()
- self:Reset_opt(self.last_curr_tree, self.last_path)
- end
- end
-
- if self.dlg_controls and self.dlg_controls:IsShown() then
- local opt = COptionsManager()
- opt:SetCurrentValues ("key_binding")
- end
-end
-
-function UIOptions:OnButton_Default()
- if self.last_path and self.last_curr_tree then
- self:Reset_opt(self.last_curr_tree, self.last_path, { def = true })
- end
-
- if self.dlg_controls and self.dlg_controls:IsShown() then
- exec_console_cmd("default_controls")
-
- local opt = COptionsManager()
- opt:SetCurrentValues ("key_binding")
- end
-end
-
-function UIOptions:OnButton_Cancel()
- if is_not_empty(opt_temp) then
- self.message_box:InitMessageBox("message_box_yes_no")
- self.message_box:SetText(game.translate_string("ui_mm_discard_changes"))
- self.message_box:ShowDialog(true)
- else
- self:On_Cancel()
- end
-end
-
-function UIOptions:On_Accept()
- for id, val in pairs(opt_temp) do
-
- local v = self:GetOption(id)
-
- -- Cache the changes
- if (not v.curr) then
- print_dbg("- Saved [%s] := %s", id, val)
- axr_main.config:w_value(opt_section, id, val)
- self.Save_AXR = true
- end
-
- self.Change_Done = true
-
- -- Execute functors if found
- if v.functor then
- if v.postcondition then
- if exec(unpack(v.postcondition))then
- print_dbg("- Executing postcondition functor of [%s]",id)
- exec(unpack(v.functor))
- end
- else
- print_dbg("- Executing functor of [%s]",id)
- exec(unpack(v.functor))
- end
- end
-
- -- See if it needs restart
- if v.restart then
- self.Need_Restart = true
- end
- if v.vid then
- self.Need_VidRestart = true
- end
-
- -- Send callback and apply changes
- if v.cmd then
- local cmd_value = val
- if type(cmd_value) == "boolean" then
- if v.bool_to_num then
- cmd_value = cmd_value and "1" or "0"
- else
- cmd_value = cmd_value and "on" or "off"
- end
- end
-
- print_dbg("- Saved CMD [%s] := %s", id, cmd_value)
- exec_console_cmd(v.cmd .. " " .. cmd_value)
- self.Save_CFG = true
- end
- end
-
- -- Save axr_options
- if self.Save_AXR then
- axr_main.config:save()
- self.Save_AXR = false
- end
-
- -- Save keybinds
- if self.Keybinds_Shown then
- local opt = COptionsManager()
- opt:SaveValues("key_binding")
- opt:OptionsPostAccept()
- self.Save_CFG = true
- end
-
- print_dbg("~ Change done: %s | Game restart: %s | Vid restart: %s | Save AXR: %s | Save CFG: %s | Keybinds: %s", self.Change_Done, self.Need_Restart, self.Need_VidRestart, self.Save_AXR, self.Save_CFG, self.Keybinds_Shown)
-
- -- appdata
- if self.Save_CFG then
- print_dbg("- Saved CFG")
- exec_console_cmd("cfg_save")
- --exec_console_cmd("cfg_save tmp")
- end
-
- if level.present() and self.Change_Done then
- print_dbg("% Sent callback (on_option_change)")
- SendScriptCallback("on_option_change")
- end
-
- -- Clear cache
- empty_table(opt_temp)
- empty_table(opt_backup)
-
- -- Exit
- self:On_Cancel()
-end
-
-function UIOptions:On_Cancel()
-
- self.owner:ShowDialog(true)
- self:HideDialog()
- self.owner:Show(true)
-
- -- Restart vid
- if self.Need_VidRestart then
- exec_console_cmd("vid_restart")
- end
-
- if self.Need_Restart then
- self.owner:SetMsg( game.translate_string("ui_mm_change_done_restart") , 7 )
- self.message_box:InitMessageBox("message_box_restart_game")
- self.message_box:ShowDialog(true)
-
- elseif self.Change_Done then
- self.owner:SetMsg( game.translate_string("ui_mm_change_done") , 5 )
- end
-
- self.Change_Done = false
- self.Need_VidRestart = false
- self.Need_Restart = false
- self.Save_CFG = false
- self.Keybinds_Shown = false
-
- Unregister_UI("UIOptions")
-end
-
-function UIOptions:On_Discard()
- empty_table(opt_temp)
- if (self.last_path and self.last_curr_tree) then
- self:UpdatePending()
- self:Reset_opt(self.last_curr_tree, self.last_path)
- end
- self:On_Cancel()
-end
-
-function UIOptions:OnKeyboard(dik, keyboard_action)
- local res = CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
- if (res == false) then
- local bind = dik_to_bind(dik)
- if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
-
- if dik == DIK_keys.DIK_ESCAPE then
- self:OnButton_Cancel()
- end
-
- end
- end
-
- return res
-end
-
-
-------------------------------------------------------------
--- Keybinds
-------------------------------------------------------------
-class "opt_controls" (CUIWindow)
-
-function opt_controls:__init() super()
-end
-
-function opt_controls:__finalize()
-
-end
-
-function opt_controls:InitControls(x, y, xml, handler)
-
- self:SetWndPos(vector2():set(x,y))
- self:SetWndSize(vector2():set(738,416))
-
- self:SetAutoDelete(true)
-
--- self.bk = xml:InitFrame("frame", self)
-
- xml:InitFrameLine ("tab_controls:cap_keyboardsetup", self)
- xml:InitFrameLine ("tab_controls:cap_keyboardsetup", self)
- xml:InitKeyBinding ("tab_controls:key_binding", self)
-end
-
-function trader_cond(x)
- if x == 'get' then
- -- printf('@@@ returning %s', alife_storage_manager.get_state().trader_buy_condition_override or "0 (DEFAULT)")
- return alife_storage_manager.get_state().trader_buy_condition_override or 0
- else
- -- printf('@@@ setting %s', opt_temp["gameplay/economy_diff/condition_buy_override"] or '0 (DEFAULT)')
- alife_storage_manager.get_state().trader_buy_condition_override = opt_temp["gameplay/economy_diff/condition_buy_override"] or 0
- end
-end
-
-
-------------------------------------------------------------
--- Tutorial: How to add new options:
-------------------------------------------------------------
---[[
- ------------------------------------------------------------------------------------------------
- Option name:
- script will read option name (id) and show it automatically, naming should be like this: "ui_mm_[tree_1]_[tree_2]_[tree_...]_[option]"
- [tree_n] and [option] are detemined from option path inside the table
- Example: options["video"]["general"]["renderer"] name will come from "ui_mm_video_general_renderer" string
-
- ------------------------------------------------------------------------------------------------
- Option description:
- option description can show up in the hint window if its defined by its name followed by "_desc"
- Example: option with a name of "ui_mm_video_general_renderer" will show its hint if "ui_mm_video_general_renderer_desc" exists
-
-
- ------------------------------------------------------------------------------------------------
- Parameters of option Tree:
- ------------------------------------------------------------------------------------------------
-
- - [id]
- - Define: (string)
- To give a tree its own identity
-
- - [sh]
- - Define: (boolean)
- used to detemine that the sub-tree tables are actual list of options to set and show
-
- - [precondition]
- - Define: ( table {function, parameters} )
- don't show tree options if its precondition return false
-
- - [output]
- - Define: (string)
- Text to show when precondition fails
-
- - [gr]
- - Define: ( table { ... } )
- Table of a sub-tree or options list
-
- - [apply_to_all]
- - Define: (boolean)
- when you have options trees with similar options and group, you can use this to add "Apply to All" button to each option
- clicking it will apply option changes to this option in all other trees from same group
- you must give these a tree a group id
-
- - [id_gr]
- - Define: (string)
- allows you to give options tree a group id, to connect them when you want to use "Apply to all" button for options
-
- ------------------------------------------------------------------------------------------------
- Parameters of options:
- ------------------------------------------------------------------------------------------------
-
- ----------------------
- Critical parameters:
- --------------------
- These parameters must be declared for elements
-
- [id]
- - Define: (string)
- Option identity/name.
- Option get stored in axr_main or called in other sripts by its path (IDs of sub trees and option):
- Example: ( tree_1_id/tree_2_id/.../option_id )
-
- [type]
- - Define: (string)
- - Possible values:
- - Option elements:
- "check" : Option, check box, either ON or OFF
- "list" : Option, list of strings, useful for options with too many selections
- "input" : Option, input box, you can type a value of your choice
- "radio_h" : Option, radio box, select one out of many choices. Can fit up to 8 selections (Horizental layout)
- "radio_v" : Option, radio box, select one out of many choices. Can fit up any number of selections (Vertical layout)
- "track" : Option, track bar, easy way to control numric options with min/max values (can be used only if [val] = 2)
- - Support elements:
- "line" : Support element, a simple line to separate things around
- "image" : Support element, 563x50 px image box, full-area coverage
- "slide" : Support element, image box on left, text on right
- "title" : Support element, title (left/right/center alignment)
- "desc" : Support element, description (left alignment)
-
-
- ----------------------
- Dependable parameters:
- ----------------------
- These parameters must be declared when other specific parameters are declared already. They work along with them
-
- [val]
- - Define: (number)
- - Used by: option elements: ALL
- Option's value type: 0. string | 1. boolean | 2. float
- It tells the script what kind of value the option is storing / dealing with
-
- [cmd]:
- - Define: (string)
- - Used by: option elements: ALL (needed if you want to control a console command)
- Tie an option to a console command, so when the option value get changed, it get applied directly to the command
- The option will show command's current value
- NOTE:
- cmd options don't get cached in axr_options, instead they get stored in appdata/user.ltx
- [def] parameter is not needed here since we engine applies default values to commands if they don't exist in user.ltx automatically
-
- [def]
- - Define: (boolean) / (number) / (string) / ( table {function, parameters} )
- - Used by: option elements: ALL (not needed if [cmd] is used)
- Default value of an option
- when no cached values are found in axr_options, the default value will be used
-
- [min]
- - Define: (number)
- - Used by: option elements: "input" / "track": (only if [val] = 2)
- Minimum viable value for an option, to make sure a value stays in range
-
- [max]
- - Define: (number)
- - Used by: option elements: "input" / "track": (only if [val] = 2)
- Maximum viable value for an option, to make sure a value stays in range
-
- [step]
- - Define: (number)
- - Used by: option elements: "track": (only if [val] = 2)
- How much a value can be increased/decreased in one step
-
- [content]
- - Define: ( table {double pairs} ) / ( table {function, parameters} )
- - Used by: option elements: "list" / "radio_h" / "radio_v":
- Delcares option's selection list
- Pairs: { value of the selection, string to show on UI }
- Example: content= { {0,"off"} , {1,"half"} , {2,"full"}}
- So the list or radio option will show 3 selections (translated strings): (ui_mm_lst_off) and (ui_mm_lst_half) and (ui_mm_lst_full)
- When you select one and it get applied, the assosiated value will get applied
- So picking the first one will pass ( 0 )
-
-
- [link]
- - Define: (string)
- - Used by: support elements: "image" / "slide"
- Link to texture you want to show
-
- [text]
- - Define: (string)
- - Used by: support elements: "slide" / "title" / "desc"
- String to show near the image, it will be translated
-
- ----------------------
- Optional parameters:
- ----------------------
- These parameters are completely optionals, and can be used for custom stuff
-
- [force_horz]
- - Define: (boolean)
- - Used by: option elements: "radio_h"
- Force the radio buttons into horizental layout, despite their number
-
- [no_str]
- - Define: (boolean)
- - Used by: option elements: "list" / "radio_h" / "radio_v" / "track"
- Usually, the 2nd key of pairs in content table are strings to show on the UI, by translating "opt_str_lst_(string)"
- when we set [no_str] to true, it will show the string fromm table as it is without translations or "opt_str_lst_"
- For TrackBars: no_str won't show value next to the slider
-
- [prec]
- - Define: (number)
- - Used by: option elements: "track"
- allowed number of zeros in a number
-
- [precondition]
- - Define: ( table {function, parameters} )
- - Used by: option elements: ALL
- Show the option on UI if the precondition function returns true
-
- [functor]
- - Define: ( table {function, parameters} )
- - Used by: option elements: ALL
- Execute a function when option's changes get applied
-
- [postcondition]
- - Define: ( table {function, parameters} )
- - Used by: option elements: ALL, with defined [functor]
- Option won't execute its functor when changes are applied, unless if the postcondition function returns true
-
- [curr]
- - Define: ( table {function, parameters} )
- - Used by: option elements: ALL
- get current value of an option by executing the declared function, instead of reading it from axr_options.ltx
-
- [hint]
- - Define: (string)
- - Used by: option elements: ALL
- Override default name / desc rule to replace the translation of an option with a custom one, should be set without "ui_mm_" and "_desc"
- Example: { hint = "alife_warfare_capture"} will force the script to use "ui_mm_alife_warfare_capture" and "ui_mm_alife_warfare_capture_desc" for name and desc of the option
-
- [clr]
- - Define: ( table {a,r,b,g} )
- - Used by: support elements: "title" / "desc"
- determines the color of the text
-
- [stretch]
- - Define: (boolean)
- - Used by: support elements: "slide"
- force the texture to stretch or not
-
- [pos]
- - Define: ( table {x,y} )
- - Used by: support elements: "slide"
- custom pos for the texture
-
- [size]
- - Define: ( table {w,z} )
- - Used by: support elements: "slide"
- custom size for the texture
-
- [align]
- - Define: (string) "l" "r" "c"
- - Used by: support elements: "title"
- determines the alignment of the title
-
- [spacing]
- - Define: (number)
- - Used by: support elements: "slide"
- hight offset to add extra space
---]]
\ No newline at end of file
diff --git a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/info_main_menu.txt b/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/info_main_menu.txt
deleted file mode 100644
index c9312dd7..00000000
--- a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/info_main_menu.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
- vanilla "ui_options.script" is added, some modpacks decided to disable "DEFAULT" button.
-
- added "Jabbers Soulslike" toggle, does not require main addon.
- soulslike_ui_mm_gamemode.xml
- soulslike_ui_mm_gamemode_16.xml
\ No newline at end of file
diff --git a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/meta.ini b/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/meta.ini
deleted file mode 100644
index 0a76c935..00000000
--- a/mods/[DEV] INC - 12 Enhanced GUI - Main Menu/meta.ini
+++ /dev/null
@@ -1,26 +0,0 @@
-[General]
-category="18,"
-newestVersion=
-ignoredVersion=
-version=
-installationFile=
-repository=Nexus
-gameName=stalkeranomaly
-modid=-1
-comments=
-notes=
-nexusDescription=
-url=
-hasCustomURL=false
-nexusFileStatus=1
-lastNexusQuery=
-lastNexusUpdate=
-nexusLastModified=2024-03-14T09:13:50Z
-nexusCategory=0
-converted=false
-validated=false
-color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
-tracked=0
-
-[installedFiles]
-size=0
diff --git a/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/text/eng/ui_st_credits.xml b/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/text/eng/ui_st_credits.xml
deleted file mode 100644
index cea54e37..00000000
--- a/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/text/eng/ui_st_credits.xml
+++ /dev/null
@@ -1,1305 +0,0 @@
-
-
-
-
- Enhanced GUI / Anomaly Edition v0.1 [ALPHA] пїЅ 2007 INCBOX INC
-
-
-
- - Enhanced GUI -
-
-
- INC
-
-
- EZEILL
-
-
- Aster
-
-
- пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ
-
-
- Hunlight
-
-
- - Enhanced GUI Testers -
-
-
- semfeliks
-
-
- RAR
-
-
- Jerry
-
-
- Rain
-
-
- Xen
-
-
-
- - Artwork -
-
-
- Kait Kybar
-
-
- Andrew Goryunov
-
-
- Ihor Tovstohan
-
-
- Matias Machado
-
-
- Sergej Dubovik
-
-
- Sergey Taranik
-
-
- Sergey Zabelin
-
-
- Vitaliy Filipskyy
-
-
- BONDARTS
-
-
-
-
- - Authors -
-
-
- - Contributors -
-
-
-
- - Boomsticks and Sharpsticks -
-
-
- Mich
-
-
- Mortan (STCoP WP)
-
-
- SiberCat
-
-
- YungPr1nce
-
-
-
- - Blindside's Weapon Reanimation and Rebalance "Loner" -
-
-
- Blindxside
-
-
-
- - Food, Drug and Drinks Animations -
-
-
- Feel_Fried
-
-
-
- - Weapon Parts Overhaul -
-
-
- artifax
-
-
-
- - Ballistics Overhaul -
-
-
- - Body Health System -
-
-
- Grokitach
-
-
-
- Gunslinger Mod Team
-
-
-
-
- - Original The Hand/Arms Project -
-
-
- ICHICROW
-
-
-
- - T.H.A.P. Rework -
-
-
- - I.N.E.R.T.I.A. Camera Reanimation Project -
-
-
- IENCE
-
-
-
- - HD Models -
-
-
- Ninja_Nub[NOR]
-
-
- Raito-x-Ray
-
-
-
- - Dux's Innumerable Character Kit -
-
-
- DuxFortis
-
-
-
- Isthar
-
-
- ALEX1197
-
-
- 2clip
-
-
- ky-ky
-
-
- lafugix
-
-
-
- - Soundscape Overhaul -
-
-
-
- - Skies Redux -
-
-
- d_nan
-
-
-
- - Aydins Grass Tweaks -
-
-
- aytabag
-
-
-
- - Weapon Cover Tilt -
-
-
- - Michikos Weather Revamp -
-
-
- - Dynamic Anomalies Overhaul -
-
-
- TheMrDemonized
-
-
-
- - Toxic Air -
-
-
- - Stealth -
-
-
- - Hunger Thirst Sleepiness Bars -
-
-
- bvcx
-
-
-
- - Screen Space Shaders -
-
-
- Ascii1457
-
-
- - Enhanced Shaders -
-
-
- KennShade
-
-
- - Atmospherics -
-
-
- Hippobot
-
-
- - Expedition -
-
-
- jdud
-
-
-
-
- - Icons Pack -
-
-
- Cr3pis
-
-
-
- - Tactical Fonts for Anomaly -
-
-
- CryoManne
-
-
-
-
- - Other Modders -
-
-
- DeadEnvoy
-
-
- Daniel Swahn
-
-
- Alexey Omelchuk
-
-
- ec0-
-
-
- TDLemon
-
-
- Zooey
-
-
- Hekawa
-
-
- Foxhed
-
-
- .MaLum
-
-
- maidresidence
-
-
- BlackGrowl
-
-
- HarukaSai
-
-
- ravenascendant
-
-
- wuut
-
-
- JasonVN.za
-
-
- Ishmaeel
-
-
- indyora
-
-
- Freedom_is_garbage
-
-
- Wang_Laoshi
-
-
- fitzroy_doll
-
-
- Arkady & Boris Strugatsky
-
-
- Stalker Wiki
-
-
- CEMENT
-
-
-
- Moperdogolus
-
-
- SarisKhan
-
-
- MerelyMezz
-
-
- Leviathan
-
-
- Jurkonov
-
-
- AeneasH
-
-
- IgiGog
-
-
- DamieneX
-
-
- thisisntmysteamid
-
-
- AyyKyu
-
-
- swergdach
-
-
- Daedalus-Prime
-
-
- Cobra Commander
-
-
- BazinGarrey
-
-
- CrookR
-
-
- LVutner
-
-
- theRealBeef
-
-
- LilGabe
-
-
- thales100
-
-
- denis2000
-
-
- Patrick Sutton
-
-
- Valerok
-
-
- Grelka
-
-
-
- Lucy
-
-
- GRIZZY
-
-
- Diphenhydramine-HCl
-
-
- Tweaki_Breeki
-
-
- DaveIsDead
-
-
- zoust
-
-
- GabeCPB0
-
-
- 2Gen
-
-
- Vintar0
-
-
- Arszi
-
-
- meatchunk
-
-
- tdef
-
-
- Rezy
-
-
- K0bik
-
-
- Quantum_Cookie
-
-
- Strogglet15
-
-
- Elkinda
-
-
- longreed
-
-
- Smiyukiharukagacus02
-
-
- Qball
-
-
- av661194
-
-
- Real_leaper
-
-
- Dominus_Imperatoriis
-
-
-
- Green_Ghost
-
-
- Aorushome
-
-
- ptolthegoodguy
-
-
- artifax
-
-
- Aonestr
-
-
- TheShinyHaxorus
-
-
- lyrathechimera
-
-
- OnegRiot
-
-
- K.Cin
-
-
- sneaky
-
-
- Favkis_Nexerade
-
-
- reter
-
-
- mora145
-
-
- nb79
-
-
- ForeverButthurt
-
-
- Sarapz
-
-
- whereismy
-
-
- illinaru
-
-
- CptCrits
-
-
- RowanMaBoot
-
-
- KronQ
-
-
- Yastin
-
-
- AeroFW
-
-
-
- helloworlder
-
-
- SiNiMiKe
-
-
- Lenny Weisstein
-
-
- RazorShultz
-
-
- Big Angry Negro
-
-
- SparksTheUnicorn
-
-
- Noxilian
-
-
- AGoodSetOfPistol
-
-
- Incompetent
-
-
- Toxicity86
-
-
- Evilwarrior2019
-
-
- Death_KnightRZ
-
-
- Steelhawk28
-
-
- strelocc
-
-
- mezz
-
-
- Mich_Cartman
-
-
- r3zy
-
-
- Dead Air
-
-
- ThunderVision
-
-
- PYP
-
-
- Briggs
-
-
- Enola Straight
-
-
- Lauta_ro
-
-
-
- Stalker_Boss
-
-
- sneakydud
-
-
- Michiko-chan152
-
-
- ChadSTALKEREnjoyer
-
-
- A. R. E. A
-
-
- Isthar
-
-
- ALEX1197
-
-
- 2clip
-
-
- ky-ky
-
-
- lafugix
-
-
- Thfpjct
-
-
- пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
-
-
- Awene
-
-
- Mireles
-
-
- brainscorcher
-
-
- CrommCruac
-
-
- Doodlezoid
-
-
- Queen Kat
-
-
- towelie60
-
-
- Doenitz
-
-
- Pryviet
-
-
- RickRiera
-
-
- Aboba
-
-
- MrStalkerHacker
-
-
-
- Darth_Shepard
-
-
- Azetrix
-
-
- jenek96
-
-
- #Closed
-
-
- Mike0422
-
-
- tkcrits
-
-
- pr0statitis
-
-
- rene13cross
-
-
- Souvlakii
-
-
- Battlestate Games
-
-
- [ R R G ]
-
-
- Ethylia
-
-
- dannydealmusic
-
-
- Lord Jardhead
-
-
- Sosoyer
-
-
- hetza
-
-
- tcmx
-
-
- Kennedith
-
-
- moddbplsffs
-
-
- =Krieger=
-
-
- DSurs
-
-
- unethicalrus
-
-
- Beats
-
-
-
- JSRS Team
-
-
- Kh0rnz
-
-
- Apathy Knight
-
-
- SD
-
-
- Maid
-
-
- maslinupoymal
-
-
- Mortan
-
-
- Andrejs Green
-
-
- LsdPro
-
-
- _MrVlad
-
-
- SiberCat
-
-
- YungPrince
-
-
- Shadow_Guardian
-
-
- mp5lng
-
-
- tych0
-
-
- FIREBREATH1001
-
-
-
-
-
- Anomaly
-
-
-
- - Anomaly Developers -
-
-
- Project Founder and Lead Engine Developer
-
-
- Searge
-
-
- Lead Game Designer and Project Manager
-
-
- Tronex
-
-
- Game Designer and Script Developer
-
-
- tdef
-
-
- Texture Artist and Weather Designer
-
-
- meatchunk
-
-
- Engine Developer
-
-
- Rezy
-
-
- Shader Developer and Additional Programming
-
-
- LVutner
-
-
- Level Designer and Model Designer
-
-
- CEASER
-
-
- Level Designer and Model Designer
-
-
- Vehtam
-
-
- Russian Translator and Game Tester
-
-
- ThunderVision
-
-
-
- - Anomaly Contributors -
-
-
-
- Features
-
-
- "Lost to the Zone" - Storylines
-
-
- SarisKhan
-
-
- Warfare Mode
-
-
- Werejew
-
-
-
- Visuals
-
-
-
- Atmosfear 3 Source Materials
-
-
- Cromm Cruac
-
-
- Textures (Stalkers, Detectors and Zombie Models)
-
-
- Akinaro
-
-
- DUGA and Pripyat Signs (Models and Textures), Levels
-
-
- Campfire Particles and Assistance
-
-
- Theysani
-
-
- Mask Cleaning Animation
-
-
- Monkatraz
-
-
- Sight Overhaul
-
-
- BMWAG65321
-
-
- DX8 Rendering Improvements
-
-
- Zhoraferz
-
-
- Blend Animations
-
-
- Souvlaki
-
-
- PDA Animations
-
-
- Unethicalrus
-
-
- Textures and Tree Models
-
-
- Vurt
-
-
-
- Dialogs and Text
-
-
-
- Proof Reading, Dialogue Revision
-
-
- Red Forest Cake
-
-
- Russian Translator
-
-
- ThunderVision
-
-
- Jaznavav
-
-
- Revised Strings
-
-
- Killeon
-
-
- Grey
-
-
- Expanded Information Dialogue for NPCs
-
-
- Salty
-
-
- Indyor
-
-
- Expanded Messages for PDAs
-
-
- DesmanMetzger
-
-
- Taffy
-
-
- Improved Strings for Outfits and Weapons Description
-
-
- Acinu
-
-
-
- Coding
-
-
-
- Engine Optimization Assistance
-
-
- Rafa / EMS Team
-
-
- Stalker Weather Tweaker
-
-
- Davyd McColl
-
-
-
- Rebalance and Fixes
-
-
-
- Damage System
-
-
- Balathruin
-
-
- AI Improvement, Stability Testing
-
-
- Zhoraferz
-
-
- Weapon Fixes
-
-
- PYP
-
-
- пїЅпїЅпїЅпїЅпїЅ
-
-
- Re-organized XML Profiles
-
-
- Bob
-
-
- Upgrades Fixes
-
-
- Just Monika
-
-
- PSY System Improvements
-
-
- Arszi
-
-
-
- Audio and Music
-
-
-
- Ambient Music
-
-
- HEIFEHEN
-
-
- Music
-
-
- Ilya Ponomarenko
-
-
- Anomaly 1.5 B3 Trailer
-
-
- Carl Mylo
-
-
-
- Quality Control
-
-
-
- Beta Testers
-
-
- Keystone
-
-
- Carl Mylo
-
-
- Delraich
-
-
- Topsi
-
-
- Unethicalrus
-
-
- Klean
-
-
- Warezz.K
-
-
- DesmanMetzger
-
-
- Sanchez69full
-
-
- пїЅпїЅпїЅпїЅпїЅ
-
-
- MindAbsorber
-
-
- Regicide
-
-
- Lennic
-
-
- Balathruin
-
-
- GhenTuong
-
-
- Arszi
-
-
- Asnen
-
-
- Axis
-
-
- Solarint
-
-
- Souvlaki
-
-
- Domi
-
-
- Hip
-
-
- Feel_Fried
-
-
-
- Special Thanks
-
-
-
- Anomaly Discord Server Creator and Manager
-
-
- Exo-Stalker
-
-
-
- Zhoraferz
-
-
- Vaakvadoz
-
-
- Andrejs
-
-
- VK Tech Support
-
-
- TrueTrolleybus
-
-
-
- Assets
-
-
-
- Skyboxes
-
-
- Skygod
-
-
- Tactical Flashlight
-
-
- Romann
-
-
- Outfits
-
-
- DDOA Add-on
-
-
- Base Mod / Core Features and Scripts
-
-
- Call of Chernobyl
-
-
- Base Mod / Gameplay Mechanics
-
-
- Misery / Call of Misery
-
-
- Base mod
-
-
- Last Day
-
-
- Engine Support and Optimization
-
-
- Oxygen
-
-
- Engine Support and Weapons features
-
-
- Shoker Weapons Mode
-
-
- Weapons
-
-
- STCoP 3.0
-
-
- Icons Work
-
-
- A.R.E.A
-
-
- Detectors Models Base, Items and Particles
-
-
- Dead Air
-
-
- Glass Textures
-
-
- Textures.com
-
-
- SWTC
-
-
- MNP Meshes
-
-
- Demosfen
-
-
- Yim's Weapon Tweaks
-
-
- Yim
-
-
- 21:9 Scopes Patch
-
-
- digitalifeless
-
-
- And as always: good hunting, stalker!
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/text/rus/ui_st_credits.xml b/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/text/rus/ui_st_credits.xml
deleted file mode 100644
index e84e8890..00000000
--- a/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/text/rus/ui_st_credits.xml
+++ /dev/null
@@ -1,1305 +0,0 @@
-
-
-
-
- Enhanced GUI / Anomaly Edition v0.1 [ALPHA] © 2007 INCBOX INC
-
-
-
- - Enhanced GUI -
-
-
- INC
-
-
- EZEILL
-
-
- Aster
-
-
- дедушка Ли
-
-
- Hunlight
-
-
- - Enhanced GUI Тестеры -
-
-
- semfeliks
-
-
- RAR
-
-
- Jerry
-
-
- Rain
-
-
- Xen
-
-
-
- - Визуал -
-
-
- Kait Kybar
-
-
- Andrew Goryunov
-
-
- Ihor Tovstohan
-
-
- Matias Machado
-
-
- Sergej Dubovik
-
-
- Sergey Taranik
-
-
- Sergey Zabelin
-
-
- Vitaliy Filipskyy
-
-
- BONDARTS
-
-
-
-
- - Авторы -
-
-
- - Внёсшие вклад -
-
-
-
- - Boomsticks and Sharpsticks -
-
-
- Mich
-
-
- Mortan (STCoP WP)
-
-
- SiberCat
-
-
- YungPr1nce
-
-
-
- - Blindside's Weapon Reanimation and Rebalance "Loner" -
-
-
- Blindxside
-
-
-
- - Food, Drug and Drinks Animations -
-
-
- Feel_Fried
-
-
-
- - Weapon Parts Overhaul -
-
-
- artifax
-
-
-
- - Ballistics Overhaul -
-
-
- - Body Health System -
-
-
- Grokitach
-
-
-
- Gunslinger Mod Team
-
-
-
-
- - Original The Hand/Arms Project -
-
-
- ICHICROW
-
-
-
- - T.H.A.P. Rework -
-
-
- - I.N.E.R.T.I.A. Camera Reanimation Project -
-
-
- IENCE
-
-
-
- - HD Models -
-
-
- Ninja_Nub[NOR]
-
-
- Raito-x-Ray
-
-
-
- - Dux's Innumerable Character Kit -
-
-
- DuxFortis
-
-
-
- Isthar
-
-
- ALEX1197
-
-
- 2clip
-
-
- ky-ky
-
-
- lafugix
-
-
-
- - Soundscape Overhaul -
-
-
-
- - Skies Redux -
-
-
- d_nan
-
-
-
- - Aydins Grass Tweaks -
-
-
- aytabag
-
-
-
- - Weapon Cover Tilt -
-
-
- - Michikos Weather Revamp -
-
-
- - Dynamic Anomalies Overhaul -
-
-
- TheMrDemonized
-
-
-
- - Toxic Air -
-
-
- - Stealth -
-
-
- - Hunger Thirst Sleepiness Bars -
-
-
- bvcx
-
-
-
- - Screen Space Shaders -
-
-
- Ascii1457
-
-
- - Enhanced Shaders -
-
-
- KennShade
-
-
- - Atmospherics -
-
-
- Hippobot
-
-
- - Expedition -
-
-
- jdud
-
-
-
-
- - Icons Pack -
-
-
- Cr3pis
-
-
-
- - Tactical Fonts for Anomaly -
-
-
- CryoManne
-
-
-
-
- - Other Modders -
-
-
- DeadEnvoy
-
-
- Daniel Swahn
-
-
- Alexey Omelchuk
-
-
- ec0-
-
-
- TDLemon
-
-
- Zooey
-
-
- Hekawa
-
-
- Foxhed
-
-
- .MaLum
-
-
- maidresidence
-
-
- BlackGrowl
-
-
- HarukaSai
-
-
- ravenascendant
-
-
- wuut
-
-
- JasonVN.za
-
-
- Ishmaeel
-
-
- indyora
-
-
- Freedom_is_garbage
-
-
- Wang_Laoshi
-
-
- fitzroy_doll
-
-
- Arkady & Boris Strugatsky
-
-
- Stalker Wiki
-
-
- CEMENT
-
-
-
- Moperdogolus
-
-
- SarisKhan
-
-
- MerelyMezz
-
-
- Leviathan
-
-
- Jurkonov
-
-
- AeneasH
-
-
- IgiGog
-
-
- DamieneX
-
-
- thisisntmysteamid
-
-
- AyyKyu
-
-
- swergdach
-
-
- Daedalus-Prime
-
-
- Cobra Commander
-
-
- BazinGarrey
-
-
- CrookR
-
-
- LVutner
-
-
- theRealBeef
-
-
- LilGabe
-
-
- thales100
-
-
- denis2000
-
-
- Patrick Sutton
-
-
- Valerok
-
-
- Grelka
-
-
-
- Lucy
-
-
- GRIZZY
-
-
- Diphenhydramine-HCl
-
-
- Tweaki_Breeki
-
-
- DaveIsDead
-
-
- zoust
-
-
- GabeCPB0
-
-
- 2Gen
-
-
- Vintar0
-
-
- Arszi
-
-
- meatchunk
-
-
- tdef
-
-
- Rezy
-
-
- K0bik
-
-
- Quantum_Cookie
-
-
- Strogglet15
-
-
- Elkinda
-
-
- longreed
-
-
- Smiyukiharukagacus02
-
-
- Qball
-
-
- av661194
-
-
- Real_leaper
-
-
- Dominus_Imperatoriis
-
-
-
- Green_Ghost
-
-
- Aorushome
-
-
- ptolthegoodguy
-
-
- artifax
-
-
- Aonestr
-
-
- TheShinyHaxorus
-
-
- lyrathechimera
-
-
- OnegRiot
-
-
- K.Cin
-
-
- sneaky
-
-
- Favkis_Nexerade
-
-
- reter
-
-
- mora145
-
-
- nb79
-
-
- ForeverButthurt
-
-
- Sarapz
-
-
- whereismy
-
-
- illinaru
-
-
- CptCrits
-
-
- RowanMaBoot
-
-
- KronQ
-
-
- Yastin
-
-
- AeroFW
-
-
-
- helloworlder
-
-
- SiNiMiKe
-
-
- Lenny Weisstein
-
-
- RazorShultz
-
-
- Big Angry Negro
-
-
- SparksTheUnicorn
-
-
- Noxilian
-
-
- AGoodSetOfPistol
-
-
- Incompetent
-
-
- Toxicity86
-
-
- Evilwarrior2019
-
-
- Death_KnightRZ
-
-
- Steelhawk28
-
-
- strelocc
-
-
- mezz
-
-
- Mich_Cartman
-
-
- r3zy
-
-
- Dead Air
-
-
- ThunderVision
-
-
- PYP
-
-
- Briggs
-
-
- Enola Straight
-
-
- Lauta_ro
-
-
-
- Stalker_Boss
-
-
- sneakydud
-
-
- Michiko-chan152
-
-
- ChadSTALKEREnjoyer
-
-
- A. R. E. A
-
-
- Isthar
-
-
- ALEX1197
-
-
- 2clip
-
-
- ky-ky
-
-
- lafugix
-
-
- Thfpjct
-
-
- Угрюмый
-
-
- Awene
-
-
- Mireles
-
-
- brainscorcher
-
-
- CrommCruac
-
-
- Doodlezoid
-
-
- Queen Kat
-
-
- towelie60
-
-
- Doenitz
-
-
- Pryviet
-
-
- RickRiera
-
-
- Aboba
-
-
- MrStalkerHacker
-
-
-
- Darth_Shepard
-
-
- Azetrix
-
-
- jenek96
-
-
- #Closed
-
-
- Mike0422
-
-
- tkcrits
-
-
- pr0statitis
-
-
- rene13cross
-
-
- Souvlakii
-
-
- Battlestate Games
-
-
- [ R R G ]
-
-
- Ethylia
-
-
- dannydealmusic
-
-
- Lord Jardhead
-
-
- Sosoyer
-
-
- hetza
-
-
- tcmx
-
-
- Kennedith
-
-
- moddbplsffs
-
-
- =Krieger=
-
-
- DSurs
-
-
- unethicalrus
-
-
- Beats
-
-
-
- JSRS Team
-
-
- Kh0rnz
-
-
- Apathy Knight
-
-
- SD
-
-
- Maid
-
-
- maslinupoymal
-
-
- Mortan
-
-
- Andrejs Green
-
-
- LsdPro
-
-
- _MrVlad
-
-
- SiberCat
-
-
- YungPrince
-
-
- Shadow_Guardian
-
-
- mp5lng
-
-
- tych0
-
-
- FIREBREATH1001
-
-
-
-
-
- Anomaly
-
-
-
- - Разработчики -
-
-
- Основатель проекта и ведущий разработчик
-
-
- Searge
-
-
- Ведущий геймдизайнер и руководитель проекта
-
-
- Tronex
-
-
- Геймдизайнер и разработчик сценариев
-
-
- tdef
-
-
- Художник по текстурам и погодный дизайнер
-
-
- meatchunk
-
-
- Разработчик движка
-
-
- Rezy
-
-
- Разработчик шейдеров и доп. программирование
-
-
- LVutner
-
-
- Дизайнер уровней и моделей
-
-
- CEASER
-
-
- Дизайнер уровней и моделей
-
-
- Vehtam
-
-
- Переводчик на русский язык и тестировщик
-
-
- ThunderVision
-
-
-
- - Внесли свой вклад -
-
-
-
- Особенности
-
-
- "Lost to the Zone" - Storylines
-
-
- SarisKhan
-
-
- Warfare Mode
-
-
- Werejew
-
-
-
- Визуальные эффекты
-
-
-
- Atmosfear 3 Source Materials
-
-
- Cromm Cruac
-
-
- Textures (Stalkers, Detectors and Zombie Models)
-
-
- Akinaro
-
-
- DUGA and Pripyat Signs (Models and Textures), Levels
-
-
- Campfire Particles and Assistance
-
-
- Theysani
-
-
- Mask Cleaning Animation
-
-
- Monkatraz
-
-
- Sight Overhaul
-
-
- BMWAG65321
-
-
- DX8 Rendering Improvements
-
-
- Zhoraferz
-
-
- Blend Animations
-
-
- Souvlaki
-
-
- PDA Animations
-
-
- Unethicalrus
-
-
- Textures and Tree Models
-
-
- Vurt
-
-
-
- Диалоги и текст
-
-
-
- Proof Reading, Dialogue Revision
-
-
- Red Forest Cake
-
-
- Переводчики на русский
-
-
- ThunderVision
-
-
- Jaznavav
-
-
- Revised Strings
-
-
- Killeon
-
-
- Grey
-
-
- Expanded Information Dialogue for NPCs
-
-
- Salty
-
-
- Indyor
-
-
- Expanded Messages for PDAs
-
-
- DesmanMetzger
-
-
- Taffy
-
-
- Improved Strings for Outfits and Weapons Description
-
-
- Acinu
-
-
-
- Написание кода
-
-
-
- Engine Optimization Assistance
-
-
- Rafa / EMS Team
-
-
- Stalker Weather Tweaker
-
-
- Davyd McColl
-
-
-
- Пересмотр баланса и исправления
-
-
-
- Damage System
-
-
- Balathruin
-
-
- AI Improvement, Stability Testing
-
-
- Zhoraferz
-
-
- Weapon Fixes
-
-
- PYP
-
-
- Хрона
-
-
- Re-organized XML Profiles
-
-
- Bob
-
-
- Upgrades Fixes
-
-
- Just Monika
-
-
- PSY System Improvements
-
-
- Arszi
-
-
-
- Аудио и музыка
-
-
-
- Ambient Music
-
-
- HEIFEHEN
-
-
- Music
-
-
- Ilya Ponomarenko
-
-
- Anomaly 1.5 B3 Trailer
-
-
- Carl Mylo
-
-
-
- Контроль качества
-
-
-
- Бета-тестировщики
-
-
- Keystone
-
-
- Carl Mylo
-
-
- Delraich
-
-
- Topsi
-
-
- Unethicalrus
-
-
- Klean
-
-
- Warezz.K
-
-
- DesmanMetzger
-
-
- Sanchez69full
-
-
- СаНЫч
-
-
- MindAbsorber
-
-
- Regicide
-
-
- Lennic
-
-
- Balathruin
-
-
- GhenTuong
-
-
- Arszi
-
-
- Asnen
-
-
- Axis
-
-
- Solarint
-
-
- Souvlaki
-
-
- Domi
-
-
- Hip
-
-
- Feel_Fried
-
-
-
- Отдельная благодарность
-
-
-
- Создатель и менеджер сервера Anomaly в Discord
-
-
- Exo-Stalker
-
-
-
- Zhoraferz
-
-
- Vaakvadoz
-
-
- Andrejs
-
-
- Техническая поддержка ВКонтакте
-
-
- TrueTrolleybus
-
-
-
- Использованные ассеты
-
-
-
- Skyboxes
-
-
- Skygod
-
-
- Tactical Flashlight
-
-
- Romann
-
-
- Outfits
-
-
- DDOA Add-on
-
-
- Base Mod / Core Features and Scripts
-
-
- Call of Chernobyl
-
-
- Base Mod / Gameplay Mechanics
-
-
- Misery / Call of Misery
-
-
- Base mod
-
-
- Last Day
-
-
- Engine Support and Optimization
-
-
- Oxygen
-
-
- Engine Support and Weapons features
-
-
- Shoker Weapons Mode
-
-
- Weapons
-
-
- STCoP 3.0
-
-
- Icons Work
-
-
- A.R.E.A
-
-
- Detectors Models Base, Items and Particles
-
-
- Dead Air
-
-
- Glass Textures
-
-
- Textures.com
-
-
- SWTC
-
-
- MNP Meshes
-
-
- Demosfen
-
-
- Yim's Weapon Tweaks
-
-
- Yim
-
-
- 21:9 Scopes Patch
-
-
- digitalifeless
-
-
- И как всегда: удачной охоты, сталкер!
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/ui/ui_credits.xml b/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/ui/ui_credits.xml
deleted file mode 100644
index 381e4a09..00000000
--- a/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/ui/ui_credits.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
- 1
- 1
-
-
-
- ui\ui_mm_credits
-
-
- xr_effects.after_credits
-
-
-#include "ui\ui_credits_base.xml"
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/ui/ui_credits_16.xml b/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/ui/ui_credits_16.xml
deleted file mode 100644
index 492f15a2..00000000
--- a/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/ui/ui_credits_16.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- 1
- 1
-
-
-
- ui\enhancedGUI_00
-
- ui\enhancedGUI\gui_overlay
-
-
-
- xr_effects.after_credits
-
-
-#include "ui\ui_credits_base.xml"
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/ui/ui_credits_base.xml b/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/ui/ui_credits_base.xml
deleted file mode 100644
index fe72d55e..00000000
--- a/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/ui/ui_credits_base.xml
+++ /dev/null
@@ -1,1446 +0,0 @@
-
-
-
- -
- 1.5
- on
- xr_effects.before_credits
-
-
-
- 1
-
-
- -
- 150
- on
-
- Music\credits
-
-
- 1
-
-
-
- logoSTALKER
-
-
- logoINC
-
-
-
- st_anomaly_credits
-
-
- st_anomaly_mods_credits
-
-
-
-
-
- st_enhanced_gui
-
-
- st_enhanced_gui_inc
-
-
-
- st_mod_contributors
-
-
- st_enhanced_gui_ezeill
-
-
- st_enhanced_gui_aster
-
-
- st_enhanced_gui_grandpali
-
-
- st_enhanced_gui_hunlight
-
-
-
- st_mod_egui_testers
-
-
- st_enhanced_gui_semfeliks
-
-
- st_enhanced_gui_rar
-
-
- st_enhanced_gui_jerry
-
-
- st_enhanced_gui_rain
-
-
- st_enhanced_gui_xen
-
-
-
- st_artwork
-
-
- st_kaitkybar
-
-
- st_andrewgoryunov
-
-
- st_ihortovstohan
-
-
- st_matiasmachado
-
-
- st_sergejdubovik
-
-
- st_sergeytaranik
-
-
- st_sergeyzabelin
-
-
- st_vitaliyfilipskyy
-
-
- st_bondarts
-
-
-
-
- st_screen_space_shaders
-
-
- st_screen_space_shaders_ascii1457
-
-
-
- st_enhanced_shaders
-
-
- st_enhanced_shaders_kennshade
-
-
-
- st_atmospherics
-
-
- st_atmospherics_hippobot
-
-
-
- st_expedition
-
-
- st_jhud
-
-
-
-
- st_bas_devs
-
-
- st_bas_mich
-
-
- st_bas_mortan
-
-
- st_bas_sibercat
-
-
- st_bas_yungpr1nce
-
-
-
- st_ffda_devs
-
-
- st_ffda_feel_fried
-
-
-
- st_bodyhealth_devs
-
-
- st_grokitach
-
-
-
-
- st_blindside_devs
-
-
- st_blindside_blindxside
-
-
-
- st_weaponcover_dev
-
-
- st_themrdemonized
-
-
-
- st_camera_reanimation_project
-
-
- st_thap_project_ience
-
-
-
-
-
- st_weaponparts_devs
-
-
- st_artifax
-
-
-
- st_ballistics_devs
-
-
- st_grokitach
-
-
-
- st_stealth_dev
-
-
- st_bvcx
-
-
-
-
- st_handarm_project
-
-
- st_handarm_project_ichicrow
-
-
-
- st_thap_project
-
-
- st_thap_project_ience
-
-
- st_mod_contributors
-
-
- st_gunslinger_mod_team
-
-
- st_thap_project_alex1197
-
-
- st_thap_project_2clip
-
-
- st_thap_project_ky-ky
-
-
- st_thap_project_lafugix
-
-
- st_thap_project_isthar
-
-
-
-
-
- st_hd_models
-
-
- st_ninja_nub
-
-
- st_raito_xray
-
-
-
- st_duxscharacterkit
-
-
- st_duxfortis
-
-
-
-
- st_soundscape_overhaul
-
-
- st_solarint
-
-
-
- st_michikos_dev
-
-
- st_themrdemonized
-
-
-
- st_skiesredux_dev
-
-
- st_dnan
-
-
-
- st_grasstweaks_dev
-
-
- st_aytabag
-
-
-
-
- st_dynamicanomalies_dev
-
-
- st_themrdemonized
-
-
-
- st_toxicair_dev
-
-
- st_bvcx
-
-
-
-
- st_iconspack
-
-
- st_cr3pis
-
-
-
- st_tacticalfonts
-
-
- st_cryomanne
-
-
-
- st_iconspack
-
-
- st_cr3pis
-
-
-
-
- st_modders
-
-
- st_deadenvoy
-
-
- st_danielswahn
-
-
- st_alexeyomelchuk
-
-
- st_ec0
-
-
- st_tdlemon
-
-
- st_zooey
-
-
- st_hekawa
-
-
- st_foxhed
-
-
- st_malum
-
-
- st_maidresidence
-
-
- st_blackgrowl
-
-
- st_harukasai
-
-
- st_ravenascendant
-
-
- st_wuut
-
-
- st_jasonvnza
-
-
- st_ishmaeel
-
-
- st_indyora
-
-
- st_freedomisgarbage
-
-
- st_wanglaoshi
-
-
- st_fitzroydoll
-
-
- st_arkadynborisstrugatsky
-
-
- st_stalkerwiki
-
-
- st_cement
-
-
-
-
- st_moperdogolus
-
-
- st_sariskhan
-
-
- st_merelymezz
-
-
- st_leviathan
-
-
- st_jurkonov
-
-
- st_aeneash
-
-
- st_igigog
-
-
- st_damienex
-
-
- st_thisisntmysteamid
-
-
- st_ayykyu
-
-
- st_swergdach
-
-
- st_daedalusprime
-
-
- st_cobracommander
-
-
- st_bazingarrey
-
-
- st_crookr
-
-
- st_lvutner
-
-
- st_therealbeef
-
-
- st_lilgabe
-
-
- st_thales100
-
-
- st_denis2000
-
-
- st_patricksutton
-
-
- st_valerok
-
-
- st_grelka
-
-
-
-
- st_lucy
-
-
- st_grizzy
-
-
- st_diphenhydraminehcl
-
-
- st_tweakibreeki
-
-
- st_daveisdead
-
-
- st_zoust
-
-
- st_gabecpb0
-
-
- st_2gen
-
-
- st_vintar0
-
-
- st_arszi
-
-
- st_meatchunk
-
-
- st_tdef
-
-
- st_rezy
-
-
- st_k0bik
-
-
- st_quantumcookie
-
-
- st_strogglet15
-
-
- st_elkinda
-
-
- st_longreed
-
-
- st_smiyukiharukagacus02
-
-
- st_qball
-
-
- st_av661194
-
-
- st_realleaper
-
-
- st_dominusimperatoriis
-
-
-
-
- st_greenghost
-
-
- st_aorushome
-
-
- st_ptolthegoodguy
-
-
- st_artifax
-
-
- st_aonestr
-
-
- st_theshinyhaxorus
-
-
- st_lyrathechimera
-
-
- st_onegriot
-
-
- st_kcin
-
-
- st_sneaky
-
-
- st_favkisnexerade
-
-
- st_reter
-
-
- st_mora145
-
-
- st_nb79
-
-
- st_foreverbutthurt
-
-
- st_sarapz
-
-
- st_whereismy
-
-
- st_illinaru
-
-
- st_cptcrits
-
-
- st_rowanmaboot
-
-
- st_kronq
-
-
- st_yastin
-
-
- st_aerofw
-
-
-
-
- st_helloworlder
-
-
- st_sinimike
-
-
- st_lennyweisstein
-
-
- st_razorshultz
-
-
- st_bigangrynegro
-
-
- st_sparkstheunicorn
-
-
- st_noxilian
-
-
- st_agoodsetofpistol
-
-
- st_incompetent
-
-
- st_toxicity86
-
-
- st_evilwarrior2019
-
-
- st_deathknightrz
-
-
- st_steelhawk28
-
-
- st_strelocc
-
-
- st_mezz
-
-
- st_michcartman
-
-
- st_r3zy
-
-
- st_deadair
-
-
- st_thundervision
-
-
- st_pyp
-
-
- st_briggs
-
-
- st_enolastraight
-
-
- st_lautaro
-
-
-
-
- st_stalkerboss
-
-
- st_sneakydud
-
-
- st_michikochan152
-
-
- st_chadstalkerenjoyer
-
-
- st_area
-
-
- st_isthar
-
-
- st_alex1197
-
-
- st_2clip
-
-
- st_kyky
-
-
- st_lafugix
-
-
- st_thfpjct
-
-
- st_Yrpkmbn
-
-
- st_awene
-
-
- st_mireles
-
-
- st_brainscorcher
-
-
- st_crommcruac
-
-
- st_queenkat
-
-
- st_towelie60
-
-
- st_doenitz
-
-
- st_pryviet
-
-
- st_rickriera
-
-
- st_aboba
-
-
- st_mrstalkerhacker
-
-
-
-
- st_darthshepard
-
-
- st_azetrix
-
-
- st_jenek96
-
-
- st_closed
-
-
- st_mike0422
-
-
- st_tkcrits
-
-
- st_pr0statitis
-
-
- st_rene13cross
-
-
- st_souvlakii
-
-
- st_battlestategames
-
-
- st_rrg
-
-
- st_ethylia
-
-
- st_dannydealmusic
-
-
- st_lordjardhead
-
-
- st_sosoyer
-
-
- st_hetza
-
-
- st_tcmx
-
-
- st_kennedith
-
-
- st_moddbplsffs
-
-
- st_krieger
-
-
- st_dsurs
-
-
- st_unethicalrus
-
-
- st_beats
-
-
-
-
- st_jsrsteam
-
-
- st_kh0rnz
-
-
- st_apathyknight
-
-
- st_sd
-
-
- st_maid
-
-
- st_maslinupoymal
-
-
- st_mortan
-
-
- st_andrejsgreen
-
-
- st_lsdpro
-
-
- st_mrvlad
-
-
- st_sibercat
-
-
- st_yungprince
-
-
- st_shadowguardian
-
-
- st_mp5lng
-
-
- st_tych0
-
-
- st_firebreath1001
-
-
-
-
-
- st_developers
-
-
-
- st_lead_developer
-
-
- st_searge
-
-
- st_project_lead
-
-
- st_tronex
-
-
- st_script_developer
-
-
- st_tdef
-
-
-
- st_texture_art
-
-
- st_meatchunk
-
-
-
- st_engine_developer
-
-
- st_rezy
-
-
-
- st_shaders_and_programming
-
-
- st_lvutner
-
-
-
- st_level_model_designer_1
-
-
- st_ceaser
-
-
- st_level_model_designer_2
-
-
- st_vehtam
-
-
-
- st_russian_game_tester
-
-
- st_thundervision
-
-
-
-
-
- st_contributors
-
-
-
- st_features
-
-
-
-
- st_lttz_storylines
-
-
- st_sariskhan
-
-
-
- st_warfare_mode
-
-
- st_werejew
-
-
-
-
-
- st_visuals
-
-
-
-
- st_atmosfear3_source_materials
-
-
- st_cromm_cruac
-
-
-
- st_textures_s_d_z
-
-
- st_akinaro
-
-
-
- st_duga_signs_levels
-
-
- st_vehtam
-
-
-
- st_campfire_particles_assistance
-
-
- st_theysani
-
-
-
- st_mask_cleaning_anim
-
-
- Monkatraz
-
-
-
- st_sight_overhaul
-
-
- st_bmwag65321
-
-
-
- st_dx8_improvements
-
-
- st_zhoraferz
-
-
-
- st_blend_anim
-
-
- st_souvlaki
-
-
-
- st_pda_anim
-
-
- st_unethicalrus
-
-
-
- st_textures_tree_models
-
-
- st_vurt
-
-
-
-
-
- st_dialogs_text
-
-
-
- st_proof_reading_dialogue_revision
-
-
- st_red_forest_cake
-
-
-
- st_russian_translator
-
-
- st_thundervision
-
-
- st_jaznavav
-
-
-
- st_revised_strings
-
-
- st_killeon
-
-
- st_grey
-
-
-
- st_expanded_info_dialogue
-
-
- st_salty
-
-
- st_indyor
-
-
-
- st_expanded_messages_pda
-
-
- st_desmanmetzger
-
-
- st_taffy
-
-
-
- st_improved_strings_outfits_weapons_desc
-
-
- st_acinu
-
-
-
-
-
- st_coding
-
-
-
- st_engine_optimization
-
-
- st_rafa_ems_team
-
-
-
- st_stalker_weather_tweaker
-
-
- st_davyd_mccoll
-
-
-
-
-
- st_rebalance_fixes
-
-
-
- st_damage_system
-
-
- st_balathruin
-
-
-
- st_ai_improvement_stability_testing
-
-
- st_zhoraferz
-
-
-
- st_weapon_fixes
-
-
- st_pyp
-
-
- st_hrona
-
-
-
- st_reorganized_xml_profiles
-
-
- st_bob
-
-
-
- st_upgrades_fixes
-
-
- st_just_monika
-
-
-
- st_psy_system_improvements
-
-
- st_arszi
-
-
-
-
-
- st_audio_music
-
-
-
- st_ambient_music
-
-
- st_heifehen
-
-
-
- st_m_music
-
-
- st_ilya_ponomarenko
-
-
-
- st_anomaly_trailer_b3
-
-
- st_carl_mylo
-
-
-
-
-
- st_quality_control
-
-
-
- st_beta_testers
-
-
- st_keystone
-
-
- st_carl_mylo
-
-
- st_delraich
-
-
- st_topsi
-
-
- st_unethicalrus
-
-
- st_klean
-
-
- st_warezz_k
-
-
- st_desmanmetzger
-
-
- st_sanchez69full
-
-
- st_sanych
-
-
- st_mindabsorber
-
-
- st_regicide
-
-
- st_lennic
-
-
- st_balathruin
-
-
- st_ghentuong
-
-
- st_arszi
-
-
- st_asnen
-
-
- st_axis
-
-
- st_solarint
-
-
- st_souvlaki
-
-
- st_domi
-
-
- st_hip
-
-
- st_feel_fried
-
-
-
-
-
- st_special_thanks
-
-
-
- st_discord_creator_and_manager
-
-
- st_exo_stalker
-
-
-
- st_vk_community_manager
-
-
- st_zhoraferz
-
-
- st_vaakvadoz
-
-
- st_andrejs
-
-
-
- st_vk_tech_support
-
-
- st_feel_fried
-
-
-
-
-
- st_assets
-
-
-
- st_skyboxes
-
-
- st_skygod
-
-
- st_swtc
-
-
-
- st_c_tactical_flashlight
-
-
- st_romann
-
-
-
- st_c_outfits
-
-
- st_ddoa_add-on
-
-
-
- st_base_mod_core_features_and_scripts
-
-
- st_call_of_chenobyl
-
-
-
- st_base_mod_gameplay_mechanics
-
-
- st_misery_call_of_misery
-
-
-
- st_base_mod
-
-
- st_last_day
-
-
-
- st_engine_support_and_optimization
-
-
- st_oxygen
-
-
-
- st_engine_support_weapons_features
-
-
- st_shoker_weapons_mode
-
-
-
- st_c_weapons
-
-
- st_stcop_3.0
-
-
-
- st_icons_work
-
-
- st_c_area
-
-
-
- st_detectors_models_base_items_particles
-
-
- st_dead_air
-
-
-
- st_c_glass_textures
-
-
- st_textures_com
-
-
-
- st_mnp_meshes
-
-
- st_demosfen
-
-
-
- st_yims_weapon_tweaks
-
-
- st_yim
-
-
-
- st_219_scopes_patch
-
-
- st_digitalifeless
-
-
-
- st_credits_end
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/ui/ui_mm_main.xml b/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/ui/ui_mm_main.xml
deleted file mode 100644
index 2417affb..00000000
--- a/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/ui/ui_mm_main.xml
+++ /dev/null
@@ -1,133 +0,0 @@
-
-
-
-
-
-
- ui\enhancedGUI_17
-
-
- ui\enhancedGUI\ui_inc_overlay_shadow
-
-
- ui\enhancedGUI\ui_inc_version
-
-
- ui\enhancedGUI\ui_inc_panel
-
-
- ui\enhancedGUI\ui_inc_bottom
-
-
- logoSTALKER
-
-
- logoMODDB
-
-
- logoGSC
-
-
- logoINC
-
-
-
-
-
-
- ui_inGame2_slider
-
- ui_magnifier2
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_menu_click
-
- music\anomaly_ilya_ponomarenko_day_one
-
-
-
-
-
-
-
-
-
- ui_icons_PDA_tooltips
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/ui/ui_mm_main_16.xml b/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/ui/ui_mm_main_16.xml
deleted file mode 100644
index c56feaf0..00000000
--- a/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/configs/ui/ui_mm_main_16.xml
+++ /dev/null
@@ -1,133 +0,0 @@
-
-
-
-
-
-
- ui\enhancedGUI_17
-
-
- ui\enhancedGUI\ui_inc_overlay_shadow
-
-
- ui\enhancedGUI\ui_inc_version
-
-
- ui\enhancedGUI\ui_inc_panel
-
-
- ui\enhancedGUI\ui_inc_bottom
-
-
- logoSTALKER
-
-
- logoMODDB
-
-
- logoGSC
-
-
- logoINC
-
-
-
-
-
-
- ui_inGame2_slider
-
- ui_magnifier2
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_menu_click
-
- music\meganMcDuffee_DontGoInThere
-
-
-
-
-
-
-
-
-
- ui_icons_PDA_tooltips
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/scripts/modxml_credit_button_patcher_mcm.script b/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/scripts/modxml_credit_button_patcher_mcm.script
deleted file mode 100644
index d0078a16..00000000
--- a/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/scripts/modxml_credit_button_patcher_mcm.script
+++ /dev/null
@@ -1,25 +0,0 @@
-local patched = false
-function on_xml_read()
- if not patched then
- patched = true
- RegisterScriptCallback("main_menu_on_init", function(self)
- self:AddCallback("btn_credits", ui_events.BUTTON_CLICKED, self.OnButton_credits_clicked, self)
- end)
- end
-end
-
-function on_mcm_load()
- if not patched then
- patched = true
- RegisterScriptCallback("main_menu_on_init", function(self)
- self:AddCallback("btn_credits", ui_events.BUTTON_CLICKED, self.OnButton_credits_clicked, self)
- end)
- end
-end
-
-
-function ui_main_menu.main_menu:OnButton_credits_clicked()
--- local console = get_console()
--- console:execute("main_menu off")
- game.start_tutorial("credits_seq")
-end
\ No newline at end of file
diff --git a/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/scripts/resc/dis/ui_main_menu.script b/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/scripts/resc/dis/ui_main_menu.script
deleted file mode 100644
index 60edbb80..00000000
--- a/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/scripts/resc/dis/ui_main_menu.script
+++ /dev/null
@@ -1,389 +0,0 @@
---[[
-
- File: UI_MAIN_MENU.SCRIPT
- Description: Load Dialog for STALKER
- Created: 28.10.2004
- Last edit: 10.01.2015
- Copyright: 2004 GSC Game World
- Author: Serhiy Vynnychenko (narrator@gsc-game.kiev.ua)
- Version: 0.9
-
- -----------------------------------------------------
-
- Modified by Tronex
- 2018/7/17 - Prevent saving when hardcore save modes are active
- 2019/10/28 - New keybinds and actions
-
---]]
-
-class "main_menu" (CUIScriptWnd)
-
-function main_menu:__init() super()
- math.randomseed(device():time_continual())
- self.mbox_mode = 0
- self:InitControls()
- self:InitCallBacks()
- SendScriptCallback("main_menu_on_init",self)
- RegisterScriptCallback("on_localization_change",self)
-
- if not (level.present()) then
- xrs_debug_tools.on_game_start()
- end
-end
-
-function main_menu:__finalize()
-end
-
-function main_menu:InitControls()
- self:SetWndRect (Frect():set(0,0,1024,768))
-
- local xml = CScriptXmlInit()
- xml:ParseFile ("ui_mm_main.xml")
-
- xml:InitStatic ("background", self)
- self.shniaga = xml:InitMMShniaga("shniaga_wnd",self);
-
- self.message_box = CUIMessageBoxEx()
- self:Register (self.message_box, "msg_box")
-
- local _ver = xml:InitStatic ("static_version",self)
- local mm = _G.main_menu.get_main_menu()
- _ver:TextControl():SetTextColor (GetARGB(190, 190, 190, 190))
- local flavor_name = ""
- if anomaly_flavor then
- flavor_name = " - " .. anomaly_flavor.get_flavor()
- end
- _ver:TextControl():SetText (game.translate_string("ui_st_game_version") .. flavor_name .. (DEV_DEBUG and " (Debug mode - Press F1 for help)" or ""))
-
- -- Message Window
- self.msg_wnd = xml:InitFrame("msg_wnd:background",self)
- self.msg_wnd:SetAutoDelete(false)
- self.msg_wnd_text = xml:InitTextWnd("msg_wnd:text",self.msg_wnd)
- self.msg_wnd_text:SetTextAlignment(2)
-
- self.msg_wnd:Show(false)
- self.msg_wnd:SetColor(GetARGB(255,0,0,0))
-end
-
-function main_menu:InitCallBacks()
- self:AddCallback("btn_newgame", ui_events.BUTTON_CLICKED, self.OnButton_new_game, self)
- self:AddCallback("btn_options", ui_events.BUTTON_CLICKED, self.OnButton_options_clicked, self)
- self:AddCallback("btn_load", ui_events.BUTTON_CLICKED, self.OnButton_load_clicked, self)
- self:AddCallback("btn_save", ui_events.BUTTON_CLICKED, self.OnButton_save_clicked, self)
- self:AddCallback("btn_quit", ui_events.BUTTON_CLICKED, self.OnButton_quit_clicked, self)
- self:AddCallback("btn_quit_to_mm", ui_events.BUTTON_CLICKED, self.OnButton_disconnect_clicked, self)
- self:AddCallback("btn_credits", ui_events.BUTTON_CLICKED, self.OnButton_credits_clicked, self)
- self:AddCallback("btn_ret", ui_events.BUTTON_CLICKED, self.OnButton_return_game, self)
- self:AddCallback("btn_lastsave", ui_events.BUTTON_CLICKED, self.OnButton_last_save, self)
-
- -- message box
- self:AddCallback("msg_box", ui_events.MESSAGE_BOX_OK_CLICKED, self.OnMsgOk, self)
- self:AddCallback("msg_box", ui_events.MESSAGE_BOX_CANCEL_CLICKED, self.OnMsgCancel, self)
- self:AddCallback("msg_box", ui_events.MESSAGE_BOX_YES_CLICKED, self.OnMsgYes, self)
- self:AddCallback("msg_box", ui_events.MESSAGE_BOX_NO_CLICKED, self.OnMsgNo, self)
- self:AddCallback("msg_box", ui_events.MESSAGE_BOX_QUIT_GAME_CLICKED,self.OnMessageQuitGame, self)
- self:AddCallback("msg_box", ui_events.MESSAGE_BOX_QUIT_WIN_CLICKED, self.OnMessageQuitWin, self)
-
- self:Register(self, "self")
- self:AddCallback("self", ui_events.MAIN_MENU_RELOADED, self.OnMenuReloaded, self)
-end
-
-function main_menu:Update()
- CUIScriptWnd.Update(self)
- -- Warning messages timer
- if (self.msg_wnd_timer) then
- self.msg_wnd_timer = self.msg_wnd_timer - 1
- if (self.msg_wnd_timer <= 0) then
- self.msg_wnd_timer = nil
- self.msg_wnd:Show(false)
- end
- end
-end
-
-function main_menu:Show(f)
- self.shniaga:SetVisibleMagnifier(f)
-end
-
-
-function main_menu:OnButton_last_save()
-
- if ( alife() == nil) then
- local flist = getFS():file_list_open_ex("$game_saves$",bit_or(FS.FS_ListFiles,FS.FS_RootOnly),"*"..".scop")
- flist:Sort(FS.FS_sort_by_modif_down)
- local file = flist:GetAt(0)
- if not (file) then
- return
- end
- local file_name = string.sub(file:NameFull(), 0, (string.len(file:NameFull()) - string.len(".scop")))
-
- exec_console_cmd("main_menu off")
- exec_console_cmd("start server("..file_name.."/single/alife/load) client(localhost)")
- return
- end
-
- if ( (db.actor ~= nil) and (db.actor:alive() == false) ) then
- self:LoadLastSave ()
- return
- end
-
- self.mbox_mode = 1
- self.message_box:InitMessageBox ("message_box_confirm_load_save")
- self.message_box:ShowDialog(true)
-end
-
-function main_menu:OnButton_new_game()
- --game.start_tutorial("credits_seq")
- self:ShowFactionUI()
-end
-
-function main_menu:OnButton_quit_clicked()
- self.message_box:InitMessageBox("message_box_quit_windows")
- self.message_box:ShowDialog(true)
-end
-
-function main_menu:OnButton_disconnect_clicked()
-
- self.message_box:InitMessageBox("message_box_quit_game")
-
- if (level.game_id() ~= 1) then
- self.message_box:SetText("ui_mm_disconnect_message") -- MultiPlayer
- else
- self.message_box:SetText("ui_mm_quit_game_message") -- SinglePlayer
- end
- self.message_box:ShowDialog(true)
-end
-
-function main_menu:OnButton_credits_clicked()
--- local console = get_console()
--- console:execute("main_menu off")
- game.start_tutorial("credits_seq")
-end
-
-
-function main_menu:OnButton_save_clicked()
-
- -- Saving will be interrupted if flags.ret is set to true by a custom script that have "on_before_save_input"
- if level.present() then
- local flags = {ret = false}
- SendScriptCallback("on_before_save_input", flags, 1, game.translate_string("st_ui_save"))
- if (flags.ret == true) then
- return
- end
- end
-
- if self.save_dlg == nil then
- self.save_dlg = ui_save_dialog.UISaveDialog()
- self.save_dlg.owner = self
- end
-
- self.save_dlg:FillList()
- self.save_dlg:ShowDialog(true)
- self:HideDialog()
- self:Show(false)
-end
-
-function main_menu:OnButton_options_clicked()
- if (self.opt_dlg == nil) then
- self.opt_dlg = ui_options.UIOptions()
- self.opt_dlg.owner = self
- end
-
- self.opt_dlg:ShowDialog(true)
- self:HideDialog()
- self:Show(false)
- self.opt_dlg:Reset_last_opt()
-end
-
-function main_menu:OnButton_load_clicked()
-
- if self.load_dlg ==nil then
- self.load_dlg = ui_load_dialog.UILoadDialog()
- self.load_dlg.owner = self
- end
-
- self.load_dlg:FillList()
- self.load_dlg:ShowDialog(true)
- self:HideDialog()
- self:Show(false)
-end
-
-function main_menu:OnButton_return_game()
- exec_console_cmd("main_menu off")
- SendScriptCallback("main_menu_on_quit",self)
-end
-
-
-function main_menu:OnMsgOk()
- if (self.mbox_mode == 2) then
- exec_console_cmd("quit")
- end
- self.mbox_mode = 0
-end
-
-function main_menu:OnMsgCancel()
- self.mbox_mode = 0
-end
-
-function main_menu:OnMsgYes()
-
- if self.mbox_mode == 1 then
- self:LoadLastSave()
- end
-
- self.mbox_mode = 0
-end
-
-function main_menu:OnMsgNo()
- self.mbox_mode = 0
-end
-
-function main_menu:OnMessageQuitGame()
- exec_console_cmd("disconnect")
-end
-
-function main_menu:OnMessageQuitWin()
- exec_console_cmd("quit")
-end
-
-
-function main_menu:StartGame()
- if (alife() ~= nil) then
- exec_console_cmd("disconnect")
- end
- device():pause(false)
- exec_console_cmd("start server(all/single/alife/new) client(localhost)")
- exec_console_cmd("main_menu off")
-end
-
-function main_menu:ShowFactionUI()
- if self.new_game_dlg == nil then
- self.new_game_dlg = ui_mm_faction_select.UINewGame(self)
- end
-
- self.new_game_dlg:ShowDialog(true)
- self:HideDialog()
- self:Show(false)
-end
-
-function main_menu:LoadLastSave()
- exec_console_cmd("main_menu off")
- exec_console_cmd("load_last_save")
-end
-
-function main_menu:on_localization_change()
- self.opt_dlg = nil
- self.new_game_dlg = nil
-end
-
-function main_menu:Dispatch(cmd, param) --virtual function
- if cmd == 2 then
- self:OnButton_multiplayer_clicked()
- end
- return true
-end
-
-function main_menu:OnKeyboard(dik, keyboard_action) --virtual function
- CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
- local bind = dik_to_bind(dik)
-
- SendScriptCallback("main_menu_on_keyboard",dik,keyboard_action,self,level.present())
-
- if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
- if (level.present()) then
- if (dik == DIK_keys.DIK_ESCAPE) then
- if (db.actor and db.actor:alive()) or (IsGameTypeSingle() ~= true) then
- self.OnButton_return_game()
- end
- return true
- elseif (bind == key_bindings.kQUICK_SAVE) then
- level_input.action_quick_save()
- return true
- elseif (bind == key_bindings.kQUICK_LOAD) then
- level_input.action_quick_load()
- return true
-
- -- F6 in menu = Hardsave (script originally made by NamelessWanderer)
- elseif (dik == DIK_keys.DIK_F6) then
-
- -- Saving will be interrupted if flags.ret is set to true by a custom script that have "on_before_save_input"
- if level.present() then
- local flags = {ret = false}
- SendScriptCallback("on_before_save_input", flags, 3, game.translate_string("st_ui_save"))
- if (flags.ret == true) then
- return true
- end
- end
-
- if level.present() and (db.actor ~= nil) and db.actor:alive() then
- local Y, M, D, h
- Y, M, D, h = game.get_game_time():get(Y, M, D, h)
-
- m = level.get_time_minutes()
- if m < 10 then
- m = ("0"..m)
- end
- local comm = utils_xml.get_special_txt(db.actor:character_community())
- local map = utils_xml.get_special_txt(level.name())
- exec_console_cmd("main_menu off")
- exec_console_cmd("save " .. comm .. " - " .. map .. " - hardsave - " .. string.format("%d.%d.%d %d-%d", D, M, Y, h, m))
- end
- end
- else
- if (dik == DIK_keys.DIK_F2) and DEV_DEBUG then
- axr_main.config:w_value("character_creation","new_game_test",true)
- --axr_main.config:w_value("character_creation","new_game_story_mode",true)
- axr_main.config:w_value("character_creation","new_game_difficulty",1)
- axr_main.config:w_value("character_creation","new_game_economy",1)
- --axr_main.config:w_value("character_creation","new_game_opened_routes",true)
- axr_main.config:w_value("character_creation","new_game_faction","stalker")
- axr_main.config:w_value("character_creation","new_game_loadout", "device_pda_1")
- axr_main.config:save()
-
- self:StartGame()
-
- elseif (bind == key_bindings.kQUICK_LOAD) then
- self:OnButton_last_save()
- return true
- end
- end
-
- if (dik == DIK_keys.DIK_Q) then
- self:OnMessageQuitWin()
-
- elseif (dik == DIK_keys.DIK_NUMPAD0) and DEV_DEBUG then
- reload_ini_sys()
- game.reload_language()
- printf("system_ini_reload = success!")
-
- elseif (dik == DIK_keys.DIK_F1) and DEV_DEBUG then
- self:SetMsg( game.translate_string("st_ui_dbg_help"), 10 , 3)
- end
- end
-
- return true
-end
-
-function main_menu:OnMenuReloaded()
- printf("- main_menu:OnMenuReloaded()")
- --self:OnButton_options_clicked()
-end
-
-function main_menu:SetMsg(text,tmr,align)
- if (text == "") then
- return
- end
- self.msg_wnd:Show(true)
-
- align = align or 2
- local _x = (align == 3) and -512 or 0
- self.msg_wnd_text:SetTextAlignment(align)
- self.msg_wnd_text:SetText(text)
- self.msg_wnd_text:AdjustHeightToText()
- self.msg_wnd_text:SetWndSize(vector2():set(1024,self.msg_wnd_text:GetHeight()+10))
- self.msg_wnd_text:SetWndPos(vector2():set(_x,20))
-
- self.msg_wnd:SetWndSize(vector2():set(1024,self.msg_wnd_text:GetHeight()+44))
- self.msg_wnd:SetWndPos(vector2():set(0,80))
-
- self.msg_wnd_timer = 100*tmr
-end
diff --git a/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/sounds/music/credits.ogg b/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/sounds/music/credits.ogg
deleted file mode 100644
index 0ba4b5e6..00000000
--- a/mods/[DEV] INC - 13 Enhanced GUI - Credits/gamedata/sounds/music/credits.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:bbb44d0b115b816f4c5dc9b63874204367ec82e11c387765a102c4fe8c4a3747
-size 8342245
diff --git a/mods/[DEV] INC - 13 Enhanced GUI - Credits/info_ui_main_menu.txt b/mods/[DEV] INC - 13 Enhanced GUI - Credits/info_ui_main_menu.txt
deleted file mode 100644
index fef1131d..00000000
--- a/mods/[DEV] INC - 13 Enhanced GUI - Credits/info_ui_main_menu.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
- to prevent conflicts with MCM and it's updates, "ui_main_menu.script" is removed and added "modxml_credit_button_patcher_mcm.script" to add CREDITS button. this feature will require modded exes.
\ No newline at end of file
diff --git a/mods/[DEV] INC - 13 Enhanced GUI - Credits/meta.ini b/mods/[DEV] INC - 13 Enhanced GUI - Credits/meta.ini
deleted file mode 100644
index 0a76c935..00000000
--- a/mods/[DEV] INC - 13 Enhanced GUI - Credits/meta.ini
+++ /dev/null
@@ -1,26 +0,0 @@
-[General]
-category="18,"
-newestVersion=
-ignoredVersion=
-version=
-installationFile=
-repository=Nexus
-gameName=stalkeranomaly
-modid=-1
-comments=
-notes=
-nexusDescription=
-url=
-hasCustomURL=false
-nexusFileStatus=1
-lastNexusQuery=
-lastNexusUpdate=
-nexusLastModified=2024-03-14T09:13:50Z
-nexusCategory=0
-converted=false
-validated=false
-color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
-tracked=0
-
-[installedFiles]
-size=0
diff --git a/mods/[DEV] INC - 71 PATCH - Main Menu - MCM/gamedata/configs/text/eng/ui_st_mcm.xml b/mods/[DEV] INC - 71 PATCH - Main Menu - MCM/gamedata/configs/text/eng/ui_st_mcm.xml
deleted file mode 100644
index c20fc998..00000000
--- a/mods/[DEV] INC - 71 PATCH - Main Menu - MCM/gamedata/configs/text/eng/ui_st_mcm.xml
+++ /dev/null
@@ -1,187 +0,0 @@
-
-
-
-
-
- Welcome to Anomaly Mod Configuration Menu. By itself MCM does nothing. MCM provides a place for other mods/addons to display a settings UI.
- \nTo the left you will see a list of mods/addons that are using MCM to do so.
-
-
- Bugs with MCM or crashes with ui_mcm.script in the log are most likely caused by one of the mods/addons using MCM and should be reported to that mod/addon's author.
-
-
-
-
-
-
- Reload all menus
-
-
- Checking this and hitting apply will cause MCM to reload all menus. This is a debugging tool and shouldn't be necessary in the normal course of things.
-
-
-
-
-
- This is a utility for addon makers that lets them move their logging out of the xray log and game console.
- \nBecause I respect your concerns about lag and SSD write cycles I have provided some controls for you to tweak how the logging behaves.
- \nLogs will be named after the script that creates them and the MCM session id number. They be created in appdata/logs/mcm/
-
-
-
- Enable MCM logging utility.
-
-
- Unchecking this will prevent any new logs from being created or updated. (Note changes may not take effect until after a new save game is loaded.)
-
-
- Number of log sessions to keep.
-
-
- When the number of logs created by a script exceeds this number older logs will be deleted. (Note log deletion will not happen if the game crashes.)
-
-
- Allow continuous file writes.
-
-
- Logs files are normally updated in batches. This can cause some information to be lost if the game crashes. An addon maker may request you check this box to allow their log to be updated immediately.
-
-
- Time between Log auto saves in milliseconds.
-
-
- No matter what is set here logs will still be saved when entering assorted UI screens and saving/loading games.
-
-
- Xray log time stamp frequency.
-
-
- MCM adds a time stamp to the xray log to make it easier to coordinate events between mcm logs and the xray log. This is the minimum time between those time stamps. If nothing else is printing to the console neither will mcm.
-
-
- Enable Debug logging.
-
-
- This enables MCM's own debug logging and should be enabled before reporting bugs with MCM. Other addons may also use this setting to enable thier own logging.
-
-
-
-
-
- Main.
-
-
-
- MCM Key Binds work "Minecraft Style": click on the box, then hit a key. Clicking or Escape Key will cancel.
- \nIf the key you see does not match the key you pressed, or MCM seems to ignore some keys, you likely need to modify mcm_key_localization.ltx to reflect your keyboard layout.
- \nKeys that are assigned to more than one MCM Key Bind or to an engine key bind will be highlighted red
-
-
- A few notes on the red conflicting key coloring.
- \n1. It may not matter. If the keys are used in two different UI's or if one key bind only triggers when also holding shift then the fact that the key is used twice doesn't matter.
- \n2. MCM does not know what an addon may be doing with a key. YOU need to understand how an addon is using a key to know if a conflict is relevant.
- \n3. For a single pending change the color updates correctly, for multiple pending changes it may not. Apply your changes and reopen MCM to verify correct conflict status.
-
-
-
- Long press multiplier.
-
-
- Multiplier applied to Double tap window to determine How long a key needs to be held down to count as a long press or hold. Only applies to addons that use MCM to identify long key presses.
-
-
- Double tap window.
-
-
- How soon a second press of a key needs to follow a first to count as a double tap of the key. Only applies to addons that use MCM to identify double key presses. This time can affect the input delay of some single key press events and should thereby be set as small as possible.
-
-
-
-
- This panel gathers all MCM key binds into one place, in the same order that the addons that add them appear on the left.
- \nHowever this list cannot include additional settings from the addons panel that may affect how this key behaves.
- \nAlways review the addon panel where they Key Bind was gathered from as well as that addons documentation.
-
-
- Pending changes on other panels will not be reflected on this panel, nor will pending settings on this panel be reflected on others.
- \nApply your changes before and after using this panel. Failure to do so may result in undesired behavior.
- \n\nA few notes on the red conflicting key coloring.
- \n1. It may not matter. If the keys are used in two different UI's or if one key bind only triggers when also holding shift then the fact that the key is used twice doesn't matter.
- \n2. MCM does not know what an addon may be doing with a key. YOU need to understand how an addon is using a key to know if a conflict is relevant.
- \n3. For a single pending change the color updates correctly, for multiple pending changes it may not. Apply your changes and reopen MCM to verify correct conflict status.
-
-
-
- This panel gathers all MCM key binds marked as conflicting into one place, sorted by key.
- \nIf a key only appears on this list once it likely conflicts with an engine keybind. Those are listed in the normal Anomaly options.
- \nHowever this list cannot include additional settings from the addons panel that may affect how this key behaves.
- \nAlways review the addon panel where they Key Bind was gathered from as well as that addons documentation.
-
-
-
-
-
- With modifier key.
-
-
- The above keybind will only activate if this key is also held down.
-
-
-
- No modifier.
-
-
- Control key.
-
-
- Shift key.
-
-
- Alt key.
-
-
-
-
-
-
- Input mode.
-
-
- The above keybind will activate if the key input in this manner.
-
-
-
- Simple Press.
-
-
- Double tap.
-
-
- Long Press.
-
-
-
-
-
-
-
-
-
-
diff --git a/mods/[DEV] INC - 71 PATCH - Main Menu - MCM/gamedata/configs/ui/ui_mcm.xml b/mods/[DEV] INC - 71 PATCH - Main Menu - MCM/gamedata/configs/ui/ui_mcm.xml
deleted file mode 100644
index 6f32b04e..00000000
--- a/mods/[DEV] INC - 71 PATCH - Main Menu - MCM/gamedata/configs/ui/ui_mcm.xml
+++ /dev/null
@@ -1 +0,0 @@
-#include "ui\ui_mcm_16.xml"
\ No newline at end of file
diff --git a/mods/[DEV] INC - 71 PATCH - Main Menu - MCM/gamedata/configs/ui/ui_mcm_16.xml b/mods/[DEV] INC - 71 PATCH - Main Menu - MCM/gamedata/configs/ui/ui_mcm_16.xml
deleted file mode 100644
index db561d66..00000000
--- a/mods/[DEV] INC - 71 PATCH - Main Menu - MCM/gamedata/configs/ui/ui_mcm_16.xml
+++ /dev/null
@@ -1,237 +0,0 @@
-
-
-
-
-
-
- ui\enhancedGUI_17
-
-
- ui\enhancedGUI\gui_overlay
-
-
- logoSTALKER
-
-
- logoINC
-
-
- logo_AMCM
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_icons_PDA_tooltips
-
-
- ui_icons_PDA_tooltips
-
-
- ui_icons_PDA_tooltips
-
-
-
- ui_mm_preset
-
-
-
- ui_inGame2_edit_box_2
-
-
-
-
-
-
-
-
-
-
- ui_mm_apply
- ui_button_ordinary
-
-
-
-
-
-
-
-
- ui_mm_reset
- ui_button_ordinary
-
-
-
-
-
-
-
-
- ui_mm_default
- ui_button_ordinary
-
-
-
-
-
-
-
-
- ui_mm_cancel
- ui_button_ordinary
-
-
-
-
-
-
-
-
-
-
-
-
- ui_icons_PDA_dialog_frame
-
-
-
-
-
- ui_checkbox_TabLED
-
-
-
-
-
-
-
-
-
-
-
- ui_button_ordinary
-
-
- ui_mm_btn_apply_all
-
-
- ui_stroketextbox
-
-
- ui_button_inv
-
-
-
-
-
- ui_stroketextbox
-
-
- ui_button_inv
-
-
-
-
-
- ui_inGame2_opt_slider_bar_back
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_inGame2_opt_slider_bar_back
-
-
-
-
-
-
- ui_inGame2_opt_slider_bar_back
-
-
-
-
- ui_inGame2_checkbox
-
-
-
-
-
-
-
-
-
-
-
-
- ui_inGame2_edit_box_2
-
-
-
-
-
-
-
-
-
-
- ui\ui_console
-
-
-
-
-
- ui_radio
-
-
-
-
-
-
-
-
- ui_inGame2_checkbox
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 71 PATCH - Main Menu - MCM/gamedata/configs/ui/ui_mm_main.xml b/mods/[DEV] INC - 71 PATCH - Main Menu - MCM/gamedata/configs/ui/ui_mm_main.xml
deleted file mode 100644
index cd6e3d2d..00000000
--- a/mods/[DEV] INC - 71 PATCH - Main Menu - MCM/gamedata/configs/ui/ui_mm_main.xml
+++ /dev/null
@@ -1,137 +0,0 @@
-
-
-
-
-
-
- ui\enhancedGUI_17
-
-
- ui\enhancedGUI\ui_inc_overlay_shadow
-
-
- ui\enhancedGUI\ui_inc_version
-
-
- ui\enhancedGUI\ui_inc_panel
-
-
- ui\enhancedGUI\ui_inc_bottom
-
-
- logoSTALKER
-
-
- logoMODDB
-
-
- logoGSC
-
-
- logoINC
-
-
-
-
-
-
- ui_inGame2_slider
-
- ui_magnifier2
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_menu_click
-
- music\pripyat_whispers_final
-
-
-
-
-
-
-
-
-
- ui_icons_PDA_tooltips
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 71 PATCH - Main Menu - MCM/gamedata/configs/ui/ui_mm_main_16.xml b/mods/[DEV] INC - 71 PATCH - Main Menu - MCM/gamedata/configs/ui/ui_mm_main_16.xml
deleted file mode 100644
index cd6e3d2d..00000000
--- a/mods/[DEV] INC - 71 PATCH - Main Menu - MCM/gamedata/configs/ui/ui_mm_main_16.xml
+++ /dev/null
@@ -1,137 +0,0 @@
-
-
-
-
-
-
- ui\enhancedGUI_17
-
-
- ui\enhancedGUI\ui_inc_overlay_shadow
-
-
- ui\enhancedGUI\ui_inc_version
-
-
- ui\enhancedGUI\ui_inc_panel
-
-
- ui\enhancedGUI\ui_inc_bottom
-
-
- logoSTALKER
-
-
- logoMODDB
-
-
- logoGSC
-
-
- logoINC
-
-
-
-
-
-
- ui_inGame2_slider
-
- ui_magnifier2
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_menu_click
-
- music\pripyat_whispers_final
-
-
-
-
-
-
-
-
-
- ui_icons_PDA_tooltips
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 71 PATCH - Main Menu - MCM/meta.ini b/mods/[DEV] INC - 71 PATCH - Main Menu - MCM/meta.ini
deleted file mode 100644
index 0a76c935..00000000
--- a/mods/[DEV] INC - 71 PATCH - Main Menu - MCM/meta.ini
+++ /dev/null
@@ -1,26 +0,0 @@
-[General]
-category="18,"
-newestVersion=
-ignoredVersion=
-version=
-installationFile=
-repository=Nexus
-gameName=stalkeranomaly
-modid=-1
-comments=
-notes=
-nexusDescription=
-url=
-hasCustomURL=false
-nexusFileStatus=1
-lastNexusQuery=
-lastNexusUpdate=
-nexusLastModified=2024-03-14T09:13:50Z
-nexusCategory=0
-converted=false
-validated=false
-color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
-tracked=0
-
-[installedFiles]
-size=0
diff --git a/mods/[DEV] INC - 72 PATCH - Main Menu - Credits + MCM/gamedata/configs/ui/ui_mm_main.xml b/mods/[DEV] INC - 72 PATCH - Main Menu - Credits + MCM/gamedata/configs/ui/ui_mm_main.xml
deleted file mode 100644
index 96d12102..00000000
--- a/mods/[DEV] INC - 72 PATCH - Main Menu - Credits + MCM/gamedata/configs/ui/ui_mm_main.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-
-
-
-
-
-
- ui\enhancedGUI_17
-
-
- ui\enhancedGUI\ui_inc_overlay_shadow
-
-
- ui\enhancedGUI\ui_inc_version
-
-
- ui\enhancedGUI\ui_inc_panel
-
-
- ui\enhancedGUI\ui_inc_bottom
-
-
- logoSTALKER
-
-
- logoMODDB
-
-
- logoGSC
-
-
- logoINC
-
-
- logo_AMCM
-
-
-
-
-
-
-
- ui_inGame2_slider
-
- ui_magnifier2
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_menu_click
-
- music\pripyat_whispers_final
-
-
-
-
-
-
-
-
-
- ui_icons_PDA_tooltips
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 72 PATCH - Main Menu - Credits + MCM/gamedata/configs/ui/ui_mm_main_16.xml b/mods/[DEV] INC - 72 PATCH - Main Menu - Credits + MCM/gamedata/configs/ui/ui_mm_main_16.xml
deleted file mode 100644
index 96d12102..00000000
--- a/mods/[DEV] INC - 72 PATCH - Main Menu - Credits + MCM/gamedata/configs/ui/ui_mm_main_16.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-
-
-
-
-
-
- ui\enhancedGUI_17
-
-
- ui\enhancedGUI\ui_inc_overlay_shadow
-
-
- ui\enhancedGUI\ui_inc_version
-
-
- ui\enhancedGUI\ui_inc_panel
-
-
- ui\enhancedGUI\ui_inc_bottom
-
-
- logoSTALKER
-
-
- logoMODDB
-
-
- logoGSC
-
-
- logoINC
-
-
- logo_AMCM
-
-
-
-
-
-
-
- ui_inGame2_slider
-
- ui_magnifier2
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_menu_click
-
- music\pripyat_whispers_final
-
-
-
-
-
-
-
-
-
- ui_icons_PDA_tooltips
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 72 PATCH - Main Menu - Credits + MCM/gamedata/scripts/resc/dis/ui_main_menu.script b/mods/[DEV] INC - 72 PATCH - Main Menu - Credits + MCM/gamedata/scripts/resc/dis/ui_main_menu.script
deleted file mode 100644
index d790da3b..00000000
--- a/mods/[DEV] INC - 72 PATCH - Main Menu - Credits + MCM/gamedata/scripts/resc/dis/ui_main_menu.script
+++ /dev/null
@@ -1,410 +0,0 @@
---[[
-
- File: UI_MAIN_MENU.SCRIPT
- Description: Load Dialog for STALKER
- Created: 28.10.2004
- Last edit: 10.01.2015
- Copyright: 2004 GSC Game World
- Author: Serhiy Vynnychenko (narrator@gsc-game.kiev.ua)
- Version: 0.9
-
- -----------------------------------------------------
-
- Modified by Tronex
- 2018/7/17 - Prevent saving when hardcore save modes are active
- 2019/10/28 - New keybinds and actions
-
---]]
-
-class "main_menu" (CUIScriptWnd)
-
-function main_menu:__init() super()
- math.randomseed(device():time_continual())
- self.mbox_mode = 0
- self:InitControls()
- self:InitCallBacks()
- ui_mcm.init_opt_base()
- SendScriptCallback("main_menu_on_init",self)
- RegisterScriptCallback("on_localization_change",self)
-
- if not (level.present()) then
- xrs_debug_tools.on_game_start()
- end
-end
-
-function main_menu:__finalize()
-end
-
-function main_menu:InitControls()
- self:SetWndRect (Frect():set(0,0,1024,768))
-
- local xml = CScriptXmlInit()
- xml:ParseFile ("ui_mm_main.xml")
-
- xml:InitStatic ("background", self)
- self.shniaga = xml:InitMMShniaga("shniaga_wnd",self);
-
- self.message_box = CUIMessageBoxEx()
- self:Register (self.message_box, "msg_box")
-
- local _ver = xml:InitStatic ("static_version",self)
- local mm = _G.main_menu.get_main_menu()
- _ver:TextControl():SetTextColor (GetARGB(190, 190, 190, 190))
- local flavor_name = ""
- if anomaly_flavor then
- flavor_name = " - " .. anomaly_flavor.get_flavor()
- end
- _ver:TextControl():SetText (game.translate_string("ui_st_game_version") .. flavor_name .. (DEV_DEBUG and " (Debug mode - Press F1 for help)" or ""))
-
- -- Message Window
- self.msg_wnd = xml:InitFrame("msg_wnd:background",self)
- self.msg_wnd:SetAutoDelete(false)
- self.msg_wnd_text = xml:InitTextWnd("msg_wnd:text",self.msg_wnd)
- self.msg_wnd_text:SetTextAlignment(2)
-
- self.msg_wnd:Show(false)
- self.msg_wnd:SetColor(GetARGB(255,0,0,0))
-end
-
-function main_menu:InitCallBacks()
- self:AddCallback("btn_newgame", ui_events.BUTTON_CLICKED, self.OnButton_new_game, self)
- self:AddCallback("btn_options", ui_events.BUTTON_CLICKED, self.OnButton_options_clicked, self)
- self:AddCallback("btn_mcm", ui_events.BUTTON_CLICKED, self.OnButton_mcm_clicked, self)
- self:AddCallback("btn_credits", ui_events.BUTTON_CLICKED, self.OnButton_credits_clicked, self)
- self:AddCallback("btn_load", ui_events.BUTTON_CLICKED, self.OnButton_load_clicked, self)
- self:AddCallback("btn_save", ui_events.BUTTON_CLICKED, self.OnButton_save_clicked, self)
- self:AddCallback("btn_quit", ui_events.BUTTON_CLICKED, self.OnButton_quit_clicked, self)
- self:AddCallback("btn_quit_to_mm", ui_events.BUTTON_CLICKED, self.OnButton_disconnect_clicked, self)
- self:AddCallback("btn_ret", ui_events.BUTTON_CLICKED, self.OnButton_return_game, self)
- self:AddCallback("btn_lastsave", ui_events.BUTTON_CLICKED, self.OnButton_last_save, self)
-
- -- message box
- self:AddCallback("msg_box", ui_events.MESSAGE_BOX_OK_CLICKED, self.OnMsgOk, self)
- self:AddCallback("msg_box", ui_events.MESSAGE_BOX_CANCEL_CLICKED, self.OnMsgCancel, self)
- self:AddCallback("msg_box", ui_events.MESSAGE_BOX_YES_CLICKED, self.OnMsgYes, self)
- self:AddCallback("msg_box", ui_events.MESSAGE_BOX_NO_CLICKED, self.OnMsgNo, self)
- self:AddCallback("msg_box", ui_events.MESSAGE_BOX_QUIT_GAME_CLICKED,self.OnMessageQuitGame, self)
- self:AddCallback("msg_box", ui_events.MESSAGE_BOX_QUIT_WIN_CLICKED, self.OnMessageQuitWin, self)
-
- self:Register(self, "self")
- self:AddCallback("self", ui_events.MAIN_MENU_RELOADED, self.OnMenuReloaded, self)
-end
-
-function main_menu:Update()
- CUIScriptWnd.Update(self)
- -- Warning messages timer
- if (self.msg_wnd_timer) then
- self.msg_wnd_timer = self.msg_wnd_timer - 1
- if (self.msg_wnd_timer <= 0) then
- self.msg_wnd_timer = nil
- self.msg_wnd:Show(false)
- end
- end
-end
-
-function main_menu:Show(f)
- self.shniaga:SetVisibleMagnifier(f)
-end
-
-
-function main_menu:OnButton_last_save()
-
- if ( alife() == nil) then
- local flist = getFS():file_list_open_ex("$game_saves$",bit_or(FS.FS_ListFiles,FS.FS_RootOnly),"*"..".scop")
- flist:Sort(FS.FS_sort_by_modif_down)
- local file = flist:GetAt(0)
- if not (file) then
- return
- end
- local file_name = string.sub(file:NameFull(), 0, (string.len(file:NameFull()) - string.len(".scop")))
-
- exec_console_cmd("main_menu off")
- exec_console_cmd("start server("..file_name.."/single/alife/load) client(localhost)")
- return
- end
-
- if ( (db.actor ~= nil) and (db.actor:alive() == false) ) then
- self:LoadLastSave ()
- return
- end
-
- self.mbox_mode = 1
- self.message_box:InitMessageBox ("message_box_confirm_load_save")
- self.message_box:ShowDialog(true)
-end
-
-function main_menu:OnButton_new_game()
- --game.start_tutorial("credits_seq")
- self:ShowFactionUI()
-end
-
-function main_menu:OnButton_quit_clicked()
- self.message_box:InitMessageBox("message_box_quit_windows")
- self.message_box:ShowDialog(true)
-end
-
-function main_menu:OnButton_disconnect_clicked()
-
- self.message_box:InitMessageBox("message_box_quit_game")
-
- if (level.game_id() ~= 1) then
- self.message_box:SetText("ui_mm_disconnect_message") -- MultiPlayer
- else
- self.message_box:SetText("ui_mm_quit_game_message") -- SinglePlayer
- end
- self.message_box:ShowDialog(true)
-end
-
-function main_menu:OnButton_credits_clicked()
--- local console = get_console()
--- console:execute("main_menu off")
- game.start_tutorial("credits_seq")
-end
-
-function main_menu:OnButton_save_clicked()
-
- -- Saving will be interrupted if flags.ret is set to true by a custom script that have "on_before_save_input"
- if level.present() then
- local flags = {ret = false}
- SendScriptCallback("on_before_save_input", flags, 1, game.translate_string("st_ui_save"))
- if (flags.ret == true) then
- return
- end
- end
-
- if self.save_dlg == nil then
- self.save_dlg = ui_save_dialog.UISaveDialog()
- self.save_dlg.owner = self
- end
-
- self.save_dlg:FillList()
- self.save_dlg:ShowDialog(true)
- self:HideDialog()
- self:Show(false)
-end
-
-function main_menu:OnButton_options_clicked()
- if (self.opt_dlg == nil) then
- self.opt_dlg = ui_options.UIOptions()
- self.opt_dlg.owner = self
- end
-
- self.opt_dlg:ShowDialog(true)
- self:HideDialog()
- self:Show(false)
- self.opt_dlg:Reset_last_opt()
-end
-
-function main_menu:OnButton_mcm_clicked()
- printf("MCMBTN press")
- if (self.mcm_dlg == nil) then
- self.mcm_dlg = ui_mcm.UIMCM()
- self.mcm_dlg.owner = self
- end
-
- self.mcm_dlg:ShowDialog(true)
- self:HideDialog()
- self:Show(false)
- self.mcm_dlg:Reset_last_opt()
-end
-
-function main_menu:OnButton_load_clicked()
-
- if self.load_dlg ==nil then
- self.load_dlg = ui_load_dialog.UILoadDialog()
- self.load_dlg.owner = self
- end
-
- self.load_dlg:FillList()
- self.load_dlg:ShowDialog(true)
- self:HideDialog()
- self:Show(false)
-end
-
-function main_menu:OnButton_return_game()
- exec_console_cmd("main_menu off")
- SendScriptCallback("main_menu_on_quit",self)
-end
-
-
-function main_menu:OnMsgOk()
- if (self.mbox_mode == 2) then
- if mcm_log then
- mcm_log.close_logs()
- end
- exec_console_cmd("quit")
- end
- self.mbox_mode = 0
-end
-
-function main_menu:OnMsgCancel()
- self.mbox_mode = 0
-end
-
-function main_menu:OnMsgYes()
-
- if self.mbox_mode == 1 then
- self:LoadLastSave()
- end
-
- self.mbox_mode = 0
-end
-
-function main_menu:OnMsgNo()
- self.mbox_mode = 0
-end
-
-function main_menu:OnMessageQuitGame()
- exec_console_cmd("disconnect")
-end
-
-function main_menu:OnMessageQuitWin()
- if mcm_log then
- mcm_log.close_logs()
- end
- exec_console_cmd("quit")
-end
-
-
-function main_menu:StartGame()
- if (alife() ~= nil) then
- exec_console_cmd("disconnect")
- end
- device():pause(false)
- exec_console_cmd("start server(all/single/alife/new) client(localhost)")
- exec_console_cmd("main_menu off")
-end
-
-function main_menu:ShowFactionUI()
- if self.new_game_dlg == nil then
- self.new_game_dlg = ui_mm_faction_select.UINewGame(self)
- end
-
- self.new_game_dlg:ShowDialog(true)
- self:HideDialog()
- self:Show(false)
-end
-
-function main_menu:LoadLastSave()
- exec_console_cmd("main_menu off")
- exec_console_cmd("load_last_save")
-end
-
-function main_menu:on_localization_change()
- self.opt_dlg = nil
- self.mcm_dlg = nil
- self.new_game_dlg = nil
-end
-
-function main_menu:Dispatch(cmd, param) --virtual function
- if cmd == 2 then
- self:OnButton_multiplayer_clicked()
- end
- return true
-end
-
-function main_menu:OnKeyboard(dik, keyboard_action) --virtual function
- CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
- local bind = dik_to_bind(dik)
-
- SendScriptCallback("main_menu_on_keyboard",dik,keyboard_action,self,level.present())
-
- if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
- if (level.present()) then
- if (dik == DIK_keys.DIK_ESCAPE) then
- if (db.actor and db.actor:alive()) or (IsGameTypeSingle() ~= true) then
- self.OnButton_return_game()
- end
- return true
- elseif (bind == key_bindings.kQUICK_SAVE) then
- level_input.action_quick_save()
- return true
- elseif (bind == key_bindings.kQUICK_LOAD) then
- level_input.action_quick_load()
- return true
-
- -- F6 in menu = Hardsave (script originally made by NamelessWanderer)
- elseif (dik == DIK_keys.DIK_F6) then
-
- -- Saving will be interrupted if flags.ret is set to true by a custom script that have "on_before_save_input"
- if level.present() then
- local flags = {ret = false}
- SendScriptCallback("on_before_save_input", flags, 3, game.translate_string("st_ui_save"))
- if (flags.ret == true) then
- return true
- end
- end
-
- if level.present() and (db.actor ~= nil) and db.actor:alive() then
- local Y, M, D, h
- Y, M, D, h = game.get_game_time():get(Y, M, D, h)
-
- m = level.get_time_minutes()
- if m < 10 then
- m = ("0"..m)
- end
- local comm = utils_xml.get_special_txt(db.actor:character_community())
- local map = utils_xml.get_special_txt(level.name())
- exec_console_cmd("main_menu off")
- exec_console_cmd("save " .. comm .. " - " .. map .. " - hardsave - " .. string.format("%d.%d.%d %d-%d", D, M, Y, h, m))
- end
- end
- else
- if (dik == DIK_keys.DIK_F2) and DEV_DEBUG then
- axr_main.config:w_value("character_creation","new_game_test",true)
- --axr_main.config:w_value("character_creation","new_game_story_mode",true)
- axr_main.config:w_value("character_creation","new_game_difficulty",1)
- axr_main.config:w_value("character_creation","new_game_economy",1)
- --axr_main.config:w_value("character_creation","new_game_opened_routes",true)
- axr_main.config:w_value("character_creation","new_game_faction","stalker")
- axr_main.config:w_value("character_creation","new_game_loadout", "device_pda_1")
- axr_main.config:save()
-
- self:StartGame()
-
- elseif (bind == key_bindings.kQUICK_LOAD) then
- self:OnButton_last_save()
- return true
- end
- end
-
- if (dik == DIK_keys.DIK_Q) then
- self:OnMessageQuitWin()
-
- elseif (dik == DIK_keys.DIK_NUMPAD0) and DEV_DEBUG then
- reload_ini_sys()
- game.reload_language()
- printf("system_ini_reload = success!")
-
- elseif (dik == DIK_keys.DIK_F1) and DEV_DEBUG then
- self:SetMsg( game.translate_string("st_ui_dbg_help"), 10 , 3)
- end
- end
-
- return true
-end
-
-function main_menu:OnMenuReloaded()
- printf("- main_menu:OnMenuReloaded()")
- --self:OnButton_options_clicked()
-end
-
-function main_menu:SetMsg(text,tmr,align)
- if (text == "") then
- return
- end
- self.msg_wnd:Show(true)
-
- align = align or 2
- local _x = (align == 3) and -512 or 0
- self.msg_wnd_text:SetTextAlignment(align)
- self.msg_wnd_text:SetText(text)
- self.msg_wnd_text:AdjustHeightToText()
- self.msg_wnd_text:SetWndSize(vector2():set(1024,self.msg_wnd_text:GetHeight()+10))
- self.msg_wnd_text:SetWndPos(vector2():set(_x,20))
-
- self.msg_wnd:SetWndSize(vector2():set(1024,self.msg_wnd_text:GetHeight()+44))
- self.msg_wnd:SetWndPos(vector2():set(0,80))
-
- self.msg_wnd_timer = 100*tmr
-end
diff --git a/mods/[DEV] INC - 72 PATCH - Main Menu - Credits + MCM/meta.ini b/mods/[DEV] INC - 72 PATCH - Main Menu - Credits + MCM/meta.ini
deleted file mode 100644
index 0a76c935..00000000
--- a/mods/[DEV] INC - 72 PATCH - Main Menu - Credits + MCM/meta.ini
+++ /dev/null
@@ -1,26 +0,0 @@
-[General]
-category="18,"
-newestVersion=
-ignoredVersion=
-version=
-installationFile=
-repository=Nexus
-gameName=stalkeranomaly
-modid=-1
-comments=
-notes=
-nexusDescription=
-url=
-hasCustomURL=false
-nexusFileStatus=1
-lastNexusQuery=
-lastNexusUpdate=
-nexusLastModified=2024-03-14T09:13:50Z
-nexusCategory=0
-converted=false
-validated=false
-color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
-tracked=0
-
-[installedFiles]
-size=0
diff --git a/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/gamedata/configs/ui/maingame.xml b/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/gamedata/configs/ui/maingame.xml
deleted file mode 100644
index 68849ee5..00000000
--- a/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/gamedata/configs/ui/maingame.xml
+++ /dev/null
@@ -1,245 +0,0 @@
-
-
-
-
- <_auto_static x="512" y="384" width="115" height="115" alignment="c" stretch="1" heading="1" xform_anim="xfrom_rotate_3sec" xform_anim_cyclic="1">
- ui_icons_newPDA_Crclbig_h
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_hud_icon_weapon
-
-
-
-
-
-
-
-
-
-
-
-
- ui_inGame2_shield_Psy
-
-
- ui_inGame2_shield_Radiation
-
-
- ui_inGame2_shield_biological
-
-
- ui_inGame2_shield_blood
-
-
- ui_inGame2_shield_force
-
-
- ui_inGame2_shield_health
-
-
- ui_inGame2_shield_stamina
-
-
- ui_inGame2_shield_radiation_cleanup
-
-
-
- ui_hud_icon_goodmode
-
-
-
- ui_hud_icon_artefact
-
-
-
-
-
-
-
-
- ui_hud_icon_PDA
-
-
-
-
-
- detectors\contact_1
-
-
-
- counter
- ui_item_count_back
-
-
-
- ui_inGame2_Patroni_HUD_active_items_icon
-
-
-
-
- counter
- ui_item_count_back
-
-
-
- ui_inGame2_Patroni_HUD_active_items_icon
-
-
-
-
- counter
- ui_item_count_back
-
-
-
- ui_inGame2_Patroni_HUD_active_items_icon
-
-
-
-
- counter
- ui_item_count_back
-
-
-
- ui_inGame2_Patroni_HUD_active_items_icon
-
-
-
- quick_use_str_1
-
-
- quick_use_str_2
-
-
- quick_use_str_3
-
-
- quick_use_str_4
-
-
-
-
-
-
-
-
-
-
- ui_inGame2_Patroni_HUD_main_window
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ammo
-
-
-
- fmj
-
-
-
- ap
-
-
-
- third
-
-
-
- gr
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/gamedata/configs/ui/maingame_16.xml b/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/gamedata/configs/ui/maingame_16.xml
deleted file mode 100644
index f23f1a43..00000000
--- a/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/gamedata/configs/ui/maingame_16.xml
+++ /dev/null
@@ -1,245 +0,0 @@
-
-
-
-
- <_auto_static x="512" y="384" width="115" height="115" alignment="c" stretch="1" heading="1" xform_anim="xfrom_rotate_3sec" xform_anim_cyclic="1">
- ui_icons_newPDA_Crclbig_h
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_hud_icon_weapon
-
-
-
-
-
-
-
-
-
-
-
-
- ui_inGame2_shield_Psy
-
-
- ui_inGame2_shield_Radiation
-
-
- ui_inGame2_shield_biological
-
-
- ui_inGame2_shield_blood
-
-
- ui_inGame2_shield_force
-
-
- ui_inGame2_shield_health
-
-
- ui_inGame2_shield_stamina
-
-
- ui_inGame2_shield_radiation_cleanup
-
-
-
- ui_hud_icon_goodmode
-
-
-
- ui_hud_icon_artefact
-
-
-
-
-
-
-
-
- ui_hud_icon_PDA
-
-
-
-
-
- detectors\contact_1
-
-
-
- counter
-
-
-
-
-
-
-
- counter
-
-
-
-
-
-
-
- counter
-
-
-
-
-
-
-
- counter
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_inGame2_Patroni_HUD_main_window
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ammo
-
-
-
- fmj
-
-
-
- ap
-
-
-
- third
-
-
-
- gr
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/gamedata/configs/ui/textures_descr/ui_hud.xml b/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/gamedata/configs/ui/textures_descr/ui_hud.xml
deleted file mode 100644
index c42fb43d..00000000
--- a/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/gamedata/configs/ui/textures_descr/ui_hud.xml
+++ /dev/null
@@ -1,252 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- /*
- novice
- experienced
- veteran
- master
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/gamedata/configs/ui/ui_body_health.xml b/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/gamedata/configs/ui/ui_body_health.xml
deleted file mode 100644
index d8549739..00000000
--- a/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/gamedata/configs/ui/ui_body_health.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/gamedata/configs/ui/ui_custom_msgs.xml b/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/gamedata/configs/ui/ui_custom_msgs.xml
deleted file mode 100644
index a83705ba..00000000
--- a/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/gamedata/configs/ui/ui_custom_msgs.xml
+++ /dev/null
@@ -1,1264 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_hud_timer_games
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_frame_error_sign_alarm
-
-
-
- car\trabantnoise
-
-
-
- act\act_controller_hit
-
-
-
- act\act_controller_hit1
-
-
-
- controller\controller_blood_01
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- st_autosave
-
-
-
-
-
-
-
- gun_jammed
-
-
-
- cant_walk
-
-
-
- cant_walk_weight
-
-
-
- st_not_enough_money
-
-
-
- st_not_enough_money
-
-
-
- can_use_weapon_now
-
-
-
- st_not_enough_money
-
-
-
- st_not_enough_money_npc
-
-
-
- ui\ui_cm_connection_error
-
-
- cur_num
-
-
-
-
- ui\ui_cm_connection_error
-
-
- cur_num
-
-
-
-
- ui\ui_cm_connection_error
-
-
- cur_num
-
-
-
-
- ui\ui_cm_connection_error
-
-
- cur_num
-
-
-
-
-
-
- ui_sega_healph
-
-
-
- ui_sega_healph
-
-
-
-
- ui_hud_timer_games
-
-
-
-
-
-
-
-
- ui_hud_timer_games
-
-
-
- ui_hud_points_count
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- intro\intro_back
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- dinamic_hud\hud_vingette
-
-
-
- shaders\gasmasks\mask_nm_1
-
-
- shaders\gasmasks\mask_nm_2
-
-
- shaders\gasmasks\mask_nm_3
-
-
- shaders\gasmasks\mask_nm_4
-
-
- shaders\gasmasks\mask_nm_5
-
-
- shaders\gasmasks\mask_nm_6
-
-
- shaders\gasmasks\mask_nm_7
-
-
- shaders\gasmasks\mask_nm_8
-
-
- shaders\gasmasks\mask_nm_9
-
-
- shaders\gasmasks\mask_nm_10
-
-
- shaders\gasmasks\mask_nm_10
-
-
- shaders\gasmasks\mask_nm_10
-
-
-
-
- dinamic_hud\hud_gas1
-
-
- dinamic_hud\hud_gas2
-
-
- dinamic_hud\hud_gas3
-
-
- dinamic_hud\hud_gas4
-
-
- dinamic_hud\hud_gas5
-
-
- dinamic_hud\hud_gas6
-
-
- dinamic_hud\hud_gas7
-
-
- dinamic_hud\hud_gas8
-
-
- dinamic_hud\hud_gas9
-
-
- dinamic_hud\hud_gas10
-
-
- dinamic_hud\hud_gas11
-
-
- dinamic_hud\hud_gas12
-
-
- dinamic_hud\hud_prot1
-
-
- dinamic_hud\hud_prot2
-
-
- dinamic_hud\hud_prot3
-
-
- dinamic_hud\hud_prot4
-
-
- dinamic_hud\hud_prot5
-
-
- dinamic_hud\hud_prot6
-
-
- dinamic_hud\hud_prot7
-
-
- dinamic_hud\hud_prot8
-
-
- dinamic_hud\hud_prot9
-
-
- dinamic_hud\hud_prot10
-
-
- dinamic_hud\hud_prot11
-
-
- dinamic_hud\hud_prot12
-
-
- dinamic_hud\hud_hard1
-
-
- dinamic_hud\hud_hard2
-
-
- dinamic_hud\hud_hard3
-
-
- dinamic_hud\hud_hard4
-
-
- dinamic_hud\hud_hard5
-
-
- dinamic_hud\hud_hard6
-
-
- dinamic_hud\hud_hard7
-
-
- dinamic_hud\hud_hard8
-
-
- dinamic_hud\hud_hard9
-
-
- dinamic_hud\hud_hard10
-
-
- dinamic_hud\hud_hard11
-
-
- dinamic_hud\hud_hard12
-
-
- dinamic_hud\hud_sci1
-
-
- dinamic_hud\hud_sci2
-
-
- dinamic_hud\hud_sci3
-
-
- dinamic_hud\hud_sci4
-
-
- dinamic_hud\hud_sci5
-
-
- dinamic_hud\hud_sci6
-
-
- dinamic_hud\hud_sci7
-
-
- dinamic_hud\hud_sci8
-
-
- dinamic_hud\hud_sci9
-
-
- dinamic_hud\hud_sci10
-
-
- dinamic_hud\hud_sci11
-
-
- dinamic_hud\hud_sci12
-
-
- dinamic_hud\hud_tact1
-
-
- dinamic_hud\hud_tact2
-
-
- dinamic_hud\hud_tact3
-
-
- dinamic_hud\hud_tact4
-
-
- dinamic_hud\hud_tact5
-
-
- dinamic_hud\hud_tact6
-
-
- dinamic_hud\hud_tact7
-
-
- dinamic_hud\hud_tact8
-
-
- dinamic_hud\hud_tact9
-
-
- dinamic_hud\hud_tact10
-
-
- dinamic_hud\hud_tact11
-
-
- dinamic_hud\hud_tact12
-
-
- dinamic_hud\hud_exo1
-
-
- dinamic_hud\hud_exo2
-
-
- dinamic_hud\hud_exo3
-
-
- dinamic_hud\hud_exo4
-
-
- dinamic_hud\hud_exo5
-
-
- dinamic_hud\hud_exo6
-
-
- dinamic_hud\hud_exo7
-
-
- dinamic_hud\hud_exo8
-
-
- dinamic_hud\hud_exo9
-
-
- dinamic_hud\hud_exo10
-
-
- dinamic_hud\hud_exo11
-
-
- dinamic_hud\hud_exo12
-
-
-
-
- dinamic_hud\blood1
-
-
- dinamic_hud\blood2
-
-
- dinamic_hud\blood3
-
-
- dinamic_hud\blood4
-
-
- dinamic_hud\blood5
-
-
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath1
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath2
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath5
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
- dinamic_hud\breath3
-
-
-
-
-
-
-
-
- ui_inGame2_triangle_Radiation_green
-
-
- ui_inGame2_triangle_Radiation_yellow
-
-
- ui_inGame2_triangle_Radiation_orange
-
-
- ui_inGame2_triangle_Radiation_red
-
-
-
- ui_inGame2_triangle_Biological_green
-
-
- ui_inGame2_triangle_Biological_yellow
-
-
- ui_inGame2_triangle_Biological_orange
-
-
- ui_inGame2_triangle_Biological_red
-
-
-
- ui_inGame2_triangle_Psy_green
-
-
- ui_inGame2_triangle_Psy_yellow
-
-
- ui_inGame2_triangle_Psy_orange
-
-
- ui_inGame2_triangle_Psy_red
-
-
-
-
- ui_inGame2_triangle_Radiation_green
-
-
- ui_inGame2_triangle_Radiation_yellow
-
-
- ui_inGame2_triangle_Radiation_orange
-
-
- ui_inGame2_triangle_Radiation_red
-
-
-
- ui_inGame2_triangle_Biological_green
-
-
- ui_inGame2_triangle_Biological_yellow
-
-
- ui_inGame2_triangle_Biological_orange
-
-
- ui_inGame2_triangle_Biological_red
-
-
-
- ui_inGame2_triangle_Psy_green
-
-
- ui_inGame2_triangle_Psy_yellow
-
-
- ui_inGame2_triangle_Psy_orange
-
-
- ui_inGame2_triangle_Psy_red
-
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
- dinamic_hud\water
-
-
-
-
-
- shaders\gasmasks\mask_nm_1
-
-
-
-
-
-
-
-
-
-
- ui_hud_bhs_bg
-
-
-
-
- ui_hud_bhs_bgm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_hud_bhs_stamina_bg
-
-
-
-
- ui_hud_bhs_health_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
-
-
-
-
-
-
- ui_hud_bhs_bg
-
-
-
-
- ui_hud_bhs_bgm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_hud_bhs_stamina_bg
-
-
-
-
- ui_hud_bhs_health_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
-
-
-
-
-
-
- ui_hud_bhs_bg
-
-
-
-
- ui_hud_bhs_bgm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ui_hud_bhs_stamina_bg
-
-
-
-
- ui_hud_bhs_health_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
- ui_hud_bhs_bar_bg
-
-
-
-
-
-
-
diff --git a/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/gamedata/scripts/zzz_player_injuries_disabled.script b/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/gamedata/scripts/zzz_player_injuries_disabled.script
deleted file mode 100644
index f3b0d6d2..00000000
--- a/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/gamedata/scripts/zzz_player_injuries_disabled.script
+++ /dev/null
@@ -1,11 +0,0 @@
--- function monkey_on_game_start()
--- printf("[zzz_player_injuries] Hey! I have been monkey patched by zzz_player_injuries_disabled.script")
--- end
-
--- if zzz_player_injuries then
--- zzz_player_injuries.on_game_start = monkey_on_game_start
--- end
-
--- function on_game_start()
--- printf("[zzz_player_injuries_disabled] I am monkey patching zzz_player_injuries.script")
--- end
\ No newline at end of file
diff --git a/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/meta.ini b/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/meta.ini
deleted file mode 100644
index 0a76c935..00000000
--- a/mods/[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul/meta.ini
+++ /dev/null
@@ -1,26 +0,0 @@
-[General]
-category="18,"
-newestVersion=
-ignoredVersion=
-version=
-installationFile=
-repository=Nexus
-gameName=stalkeranomaly
-modid=-1
-comments=
-notes=
-nexusDescription=
-url=
-hasCustomURL=false
-nexusFileStatus=1
-lastNexusQuery=
-lastNexusUpdate=
-nexusLastModified=2024-03-14T09:13:50Z
-nexusCategory=0
-converted=false
-validated=false
-color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
-tracked=0
-
-[installedFiles]
-size=0
diff --git a/mods/[REQUIRED] Custom Main Menu/gamedata/configs/ui/ui_mm_main_16.xml b/mods/[REQUIRED] Custom Main Menu/gamedata/configs/ui/ui_mm_main_16.xml
index ca44de1e..f295e345 100644
--- a/mods/[REQUIRED] Custom Main Menu/gamedata/configs/ui/ui_mm_main_16.xml
+++ b/mods/[REQUIRED] Custom Main Menu/gamedata/configs/ui/ui_mm_main_16.xml
@@ -4,7 +4,7 @@
- ui\enhancedGUI_17
+ ui\Zaper_Background
ui\enhancedGUI\ui_inc_overlay_shadow
@@ -18,7 +18,7 @@
ui\enhancedGUI\ui_inc_bottom
-
+
logoSTALKER
diff --git a/mods/[REQUIRED] Custom Main Menu/gamedata/scripts/modxml_menu_bg.script b/mods/[REQUIRED] Custom Main Menu/gamedata/scripts/modxml_menu_bg.script
new file mode 100644
index 00000000..e956db8b
--- /dev/null
+++ b/mods/[REQUIRED] Custom Main Menu/gamedata/scripts/modxml_menu_bg.script
@@ -0,0 +1,32 @@
+
+function on_xml_read()
+ RegisterScriptCallback("on_xml_read", function(xml_file_name, xml_obj)
+ if xml_file_name == [[ui\ui_mm_main.xml]]
+ or xml_file_name == [[ui\ui_mm_main_16.xml]]
+ or xml_file_name == [[ui\ui_credits_16.xml]]
+ or xml_file_name == [[ui\ui_mm_faction_select.xml]]
+ or xml_file_name == [[ui\ui_mm_faction_select_16.xml]]
+ or xml_file_name == [[ui\ui_mm_load_dlg.xml]]
+ or xml_file_name == [[ui\ui_mm_load_dlg_16.xml]]
+ or xml_file_name == [[ui\ui_mm_save_dlg.xml]]
+ or xml_file_name == [[ui\ui_mm_save_dlg_16.xml]]
+ or xml_file_name == [[ui\ui_options.xml]]
+ or xml_file_name == [[ui\ui_options_16.xml]]
+ or xml_file_name == [[ui\ui_mcm.xml]]
+ or xml_file_name == [[ui\ui_mcm_16.xml]]
+ then
+
+ math.randomseed(os.time())
+
+ local res = xml_obj:query("background > auto_static > texture")
+ local menu_t = {
+ "ui\\DG_Freedom"
+ }
+ local picked_menu = menu_t[math.random(1, #menu_t)]
+ if res[1] then
+ el = res[1]
+ xml_obj:setText (el, picked_menu)
+ end
+ end
+ end)
+end
\ No newline at end of file
diff --git a/mods/[REQUIRED] Custom Main Menu/gamedata/scripts/modxml_menu_music.script b/mods/[REQUIRED] Custom Main Menu/gamedata/scripts/modxml_menu_music.script
new file mode 100644
index 00000000..25b36c5b
--- /dev/null
+++ b/mods/[REQUIRED] Custom Main Menu/gamedata/scripts/modxml_menu_music.script
@@ -0,0 +1,27 @@
+
+function on_xml_read()
+ RegisterScriptCallback("on_xml_read", function(xml_file_name, xml_obj)
+ if xml_file_name == [[ui\ui_mm_main.xml]]
+ or xml_file_name == [[ui\ui_mm_main_16.xml]]
+ then
+
+ math.randomseed(os.time())
+
+ local res = xml_obj:query("menu_sound > menu_music")
+ local mus_t = {
+ "music\\mm_music\\track_1",
+ "music\\mm_music\\track_2",
+ "music\\mm_music\\track_3",
+ "music\\mm_music\\track_4",
+ "music\\mm_music\\track_5",
+ "music\\mm_music\\track_6",
+ "music\\mm_music\\track_7",
+ }
+ local picked_track = mus_t[math.random(1, #mus_t)]
+ if res[1] then
+ el = res[1]
+ xml_obj:setText (el, picked_track)
+ end
+ end
+ end)
+end
\ No newline at end of file
diff --git a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/scripts/zzzzzz_mm_music.script b/mods/[REQUIRED] Custom Main Menu/gamedata/scripts/zzzzzz_mm_music.script
similarity index 89%
rename from mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/scripts/zzzzzz_mm_music.script
rename to mods/[REQUIRED] Custom Main Menu/gamedata/scripts/zzzzzz_mm_music.script
index 63b9b268..b603f6ec 100644
--- a/mods/[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX/gamedata/scripts/zzzzzz_mm_music.script
+++ b/mods/[REQUIRED] Custom Main Menu/gamedata/scripts/zzzzzz_mm_music.script
@@ -7,10 +7,6 @@ local mus_t = {
"music\\mm_music\\track_5",
"music\\mm_music\\track_6",
"music\\mm_music\\track_7",
- "music\\mm_music\\track_8",
- "music\\mm_music\\track_9",
- "music\\mm_music\\track_10",
-
}
function main_menu_on_init()
diff --git a/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_1.ogg b/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_1.ogg
new file mode 100644
index 00000000..efe0b83c
--- /dev/null
+++ b/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b1c57c79b7c5451116be9dcbf7e3d05519164ccd10dc8d77ee3154cef4bc40a8
+size 11105295
diff --git a/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_2.ogg b/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_2.ogg
new file mode 100644
index 00000000..c61e1fda
--- /dev/null
+++ b/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b053198960f936f2bfb64cc20f0eb313f7d3f8f0a732f526077a71d77aba066c
+size 15180665
diff --git a/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_3.ogg b/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_3.ogg
new file mode 100644
index 00000000..68563176
--- /dev/null
+++ b/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e0a0ab07cb425df937376c0cd7ab4b438742203e77259d814796dfb7bc50f63a
+size 15716795
diff --git a/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_4.ogg b/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_4.ogg
new file mode 100644
index 00000000..3ae5f1ad
--- /dev/null
+++ b/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1eece59854675643effe40d65b4ac85a1cba3ed06b78bf818108f999ef6283ca
+size 28832866
diff --git a/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_5.ogg b/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_5.ogg
new file mode 100644
index 00000000..73bf3597
--- /dev/null
+++ b/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_5.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3dee4ddb0a1f221f4fb5630abd9a73ec1475f887d9647d0969d2dfdca70a4371
+size 19161016
diff --git a/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_6.ogg b/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_6.ogg
new file mode 100644
index 00000000..b68a6633
--- /dev/null
+++ b/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_6.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0b2fa6236315d195cf4e2e8d9ed6a92ffb5ac2a1db123b83db2fdefbd3aab050
+size 17354825
diff --git a/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_7.ogg b/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_7.ogg
new file mode 100644
index 00000000..1a4dca68
--- /dev/null
+++ b/mods/[REQUIRED] Custom Main Menu/gamedata/sounds/music/mm_music/track_7.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:34acc74b5d1abd7c58280cb6710b755dec4015ef4db7dd99870d4aef5f15d466
+size 14829643
diff --git a/mods/[REQUIRED] Custom Main Menu/gamedata/textures/ui/DG_Freedom.ogm b/mods/[REQUIRED] Custom Main Menu/gamedata/textures/ui/DG_Freedom.ogm
new file mode 100644
index 00000000..95b105c3
Binary files /dev/null and b/mods/[REQUIRED] Custom Main Menu/gamedata/textures/ui/DG_Freedom.ogm differ
diff --git a/mods/[REQUIRED] Modpack Data/gamedata/configs/axr_options.ltx b/mods/[REQUIRED] Modpack Data/gamedata/configs/axr_options.ltx
index c3f64ca4..9c3089a5 100644
--- a/mods/[REQUIRED] Modpack Data/gamedata/configs/axr_options.ltx
+++ b/mods/[REQUIRED] Modpack Data/gamedata/configs/axr_options.ltx
@@ -351,6 +351,34 @@
drug_charcoal/loot_coefficient = 1
drug_charcoal/safe_uninstall = false
drug_charcoal/trader_restock_amount = 3
+ drx_da/anomaly_amount_modifier = 1
+ drx_da/anomaly_zone_anomalies_distance_max = 25
+ drx_da/anomaly_zone_anomalies_distance_min = 1
+ drx_da/anomaly_zone_spawn_chance = 1
+ drx_da/artefacts_spawn_chance = 15
+ drx_da/debug_mode = false
+ drx_da/delete_dynamic_anomalies = false
+ drx_da/disable_new_anomalies = false
+ drx_da/electric_field_modifier = 1
+ drx_da/enable_anomalies_behaviour = true
+ drx_da/gravitational_shake_modifier = 1
+ drx_da/max_artefacts_per_zone = 2
+ drx_da/presets = 1
+ drx_da/random_artefact_spawn_chance = 25
+ drx_da/save_after_cleanup = false
+ drx_da/zone_mine_cdf_enable = true
+ drx_da/zone_mine_flash_enable = true
+ drx_da/zone_mine_ghost_enable = true
+ drx_da/zone_mine_gold_enable = true
+ drx_da/zone_mine_mefistotel_enable = true
+ drx_da/zone_mine_net_enable = true
+ drx_da/zone_mine_point_enable = true
+ drx_da/zone_mine_seed_enable = true
+ drx_da/zone_mine_shatterpoint_enable = true
+ drx_da/zone_mine_sloth_enable = true
+ drx_da/zone_mine_sphere_enable = true
+ drx_da/zone_mine_thorn_enable = true
+ drx_da/zone_mine_umbra_enable = true
dynahud/bhs_hud/always_hide = false
dynahud/bhs_hud/autohide = true
dynahud/bhs_hud/dismiss_force = false
@@ -568,13 +596,13 @@
fireModeCheck/hideGui =
freelook_addon/freelook_val = 0.7
gggf/gotta_go_fast_climb = 1.1
- gggf/gotta_go_fast_crouch = 1
+ gggf/gotta_go_fast_crouch = 0.9
gggf/gotta_go_fast_lean = 1.1
gggf/gotta_go_fast_prone = 1.1
gggf/gotta_go_fast_run = 0.9
gggf/gotta_go_fast_scoped = 1
gggf/gotta_go_fast_sprint = 0.8
- gggf/gotta_go_fast_walk = 1.4
+ gggf/gotta_go_fast_walk = 1.2
glowsticks/enable_bs_mm_flicker = false
glowsticks/equip_next = true
glowsticks/keybind = 33
@@ -602,20 +630,20 @@
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 = 1
+ haru_quick_action_wheel_mcm/tabs/ammo_tab = 2
haru_quick_action_wheel_mcm/tabs/attachments_enabled = true
- haru_quick_action_wheel_mcm/tabs/attachments_tab = 5
+ haru_quick_action_wheel_mcm/tabs/attachments_tab = 6
haru_quick_action_wheel_mcm/tabs/devices_enabled = true
- haru_quick_action_wheel_mcm/tabs/devices_tab = 3
+ haru_quick_action_wheel_mcm/tabs/devices_tab = 4
haru_quick_action_wheel_mcm/tabs/food_enabled = true
- haru_quick_action_wheel_mcm/tabs/food_tab = 4
+ haru_quick_action_wheel_mcm/tabs/food_tab = 5
haru_quick_action_wheel_mcm/tabs/grenades_enabled = true
- haru_quick_action_wheel_mcm/tabs/grenades_tab = 6
+ haru_quick_action_wheel_mcm/tabs/grenades_tab = 7
haru_quick_action_wheel_mcm/tabs/meds_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/meds_tab = 3
+ haru_quick_action_wheel_mcm/tabs/slots_enabled = true
haru_quick_action_wheel_mcm/tabs/slots_tab = 8
- haru_quick_action_wheel_mcm/tabs/tab_count = 6
+ haru_quick_action_wheel_mcm/tabs/tab_count = 7
hg_companion/move/distance = 1.4
hg_companion/move/formation = true
hg_companion/move/hud = true
@@ -1232,8 +1260,8 @@
scop/scop_fov = 0.4
scop/scope_fov = 0.4
selfkill/keybind_mcm = 14
- session_id = 335
- session_start = 1710922823000
+ session_id = 364
+ session_start = 1711023697000
sleep_timelapse/alifeOptimize = true
sleep_timelapse/alifeSleepRadius = 75
sleep_timelapse/camUpdateTotalTime = 2500
@@ -1352,20 +1380,20 @@
ssfx_module/wpn_dof/looting_mutant_mcm = true
ssfx_module/wpn_dof/pda_mcm = true
ssfx_module/wpn_dof/reloading_mcm = true
- stealth/crouch = 0.5
+ stealth/crouch = 0.25
stealth/debugx = false
- stealth/distance = 1.2
+ stealth/distance = 0.9
stealth/icon = true
stealth/icon_type = 2
stealth/icon_x = 970
stealth/icon_y = 650
- stealth/low_crouch = 0.25
- stealth/luminocity = 1
- stealth/memory = 1.2
+ stealth/low_crouch = 0.15
+ stealth/luminocity = 0.8
+ stealth/memory = 1
stealth/michiko_patch = false
stealth/nvg_val = 1
- stealth/velocity = 1
- stealth/weight = 1
+ stealth/velocity = 0.8
+ stealth/weight = 0.7
swm_legs/disabled = false
swm_legs/enable_debug_warnings = false
swm_legs/enable_idle_anims = true
@@ -1446,20 +1474,20 @@
ui_popup_messages/apm_main/window_amount = 10
ui_popup_messages/apm_reputation/goodwill = true
ui_popup_messages/apm_reputation/reputation = true
- weapon_cover_tilt/animation_speed = 11.5
- weapon_cover_tilt/animation_weight_coeff = 1
+ weapon_cover_tilt/animation_speed = 12.6
+ weapon_cover_tilt/animation_weight_coeff = 1.6
weapon_cover_tilt/consider_silencer = true
weapon_cover_tilt/enable_manual_tilt = true
weapon_cover_tilt/enabled = true
weapon_cover_tilt/manual_tilt_key_bind = 23
- weapon_cover_tilt/offset_x = 0
- weapon_cover_tilt/offset_y = 0
- weapon_cover_tilt/offset_z = 0
+ weapon_cover_tilt/offset_x = 0.054
+ weapon_cover_tilt/offset_y = -0.025
+ weapon_cover_tilt/offset_z = -0.12
weapon_cover_tilt/roll_variation = 10
weapon_cover_tilt/tilt_rattle = true
weapon_cover_tilt/trigger_radius = 0.61
weapon_cover_tilt/trigger_radius_magnitude = 1
- weapon_cover_tilt/yaw_variation = 10
+ weapon_cover_tilt/yaw_variation = 14
weapon_sway/animation_type = 2
weapon_sway/bhs_patch = true
weapon_sway/breath_restore_mult = 0.5
@@ -1585,14 +1613,14 @@
alife/event/psi_storm_state = true
alife/event/psi_storm_task = false
alife/event/psi_storm_warning = siren
- alife/general/alife_mutant_pop = 1
- alife/general/alife_stalker_pop = 1
+ alife/general/alife_mutant_pop = 0.75
+ alife/general/alife_stalker_pop = 0.75
alife/general/dynamic_anomalies = true
alife/general/dynamic_relations = true
- alife/general/excl_dist = 75
+ alife/general/excl_dist = 100
alife/general/heli_engine_sound = true
alife/general/heli_spawn = true
- alife/general/offline_combat = on_smarts_only
+ alife/general/offline_combat = full
alife/general/war_goodwill_reset = false
alife/warfare/army/base_count_modifier = 0
alife/warfare/army/base_priority = 10
@@ -2637,7 +2665,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
@@ -2699,7 +2727,7 @@
gameplay/silent_kills/sk_suspect_dist = 10
modded_exes/new_zoom_enable = true
modded_exes/sds_enable = true
- other/autosave_timer_new = 0
+ other/autosave_timer_new = 15
other/debug_error = false
other/debug_hud = false
other/debug_map_hud = false
@@ -2725,18 +2753,20 @@
video/advanced/actor_shadow = true
video/advanced/detail_density = 0.38
video/advanced/detail_height = 1
- video/advanced/detail_radius = 150
+ video/advanced/detail_radius = 90
video/advanced/dof_enable = true
video/advanced/enable_tessellation = true
video/advanced/framelimit = 164
- video/advanced/geometry_lod = 1.2
+ video/advanced/geometry_lod = 1
video/advanced/grass_shadow = false
video/advanced/mblur = 0.4
video/advanced/mblur_enable = true
- video/advanced/optimize_dynamic_geom = 0
+ video/advanced/mipbias = -0.2
+ video/advanced/optimize_dynamic_geom = 2
video/advanced/optimize_static_geom = 0
video/advanced/slight_fade = 0.8
- video/advanced/ssample_list = 2x
+ video/advanced/smaa = low
+ video/advanced/ssample_list = st_opt_off
video/advanced/ssao = st_opt_medium
video/advanced/ssao_mode = default
video/advanced/steep_parallax = true
@@ -2745,7 +2775,9 @@
video/advanced/sunshafts_mode = combined
video/advanced/sunshafts_quality = st_opt_medium
video/advanced/sunshafts_value = 0.6
- video/advanced/texture_lod = 0
+ video/advanced/texture_lod = 1
+ video/advanced/tf_aniso = 4
+ video/advanced/v_sync = true
video/advanced/vis_distance = 1.2
video/basic/fov = 74
video/basic/hud_fov = 0.57
@@ -2758,8 +2790,8 @@
video/hud/show_minimap = false
video/hud/show_slots = false
video/hud/show_wpn = true
- video/night/brightness = slight
- video/night/moon_cycle = 28
+ video/night/brightness = dark
+ video/night/moon_cycle = 8
video/night/moon_phase = 8
video/night/moon_phase_state = false
video/player/animations = true
@@ -2789,6 +2821,6 @@
[temp]
base_sway = on
fov_changed = false
- fov_value = 0.56999999284744
+ fov_value = 0.44999998807907
rspec_default = true
diff --git a/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_pistols.ltx b/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_pistols.ltx
index 250fbd56..a9ff6e36 100644
--- a/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_pistols.ltx
+++ b/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_pistols.ltx
@@ -1,3 +1,17 @@
+![wpn_glock17_hud]
+ aim_hud_offset_pos = -0.046909, 0.055846, -0.0057
+ aim_hud_offset_pos_16x9 = -0.046909, 0.055846, -0.0057
+ aim_hud_offset_rot = 0.022916, 0.016484, -0.078623
+ aim_hud_offset_rot_16x9 = 0.022916, 0.016484, -0.078623
+ hands_orientation = -0.858161, -3.469785, -2.563601
+ hands_orientation_16x9 = -0.858161, -3.469785, -2.563601
+ hands_position = -0.074731, -0.117835, -0.173914
+ hands_position_16x9 = -0.074731, -0.117835, -0.173914
+ lowered_hud_offset_pos = -0.015359, 0.075517, -0.011376
+ lowered_hud_offset_pos_16x9 = -0.015359, 0.075517, -0.011376
+ lowered_hud_offset_rot = 0.324888, -0.162931, 0.1
+ lowered_hud_offset_rot_16x9 = 0.324888, -0.162931, 0.1
+
![wpn_gsh18]
fire_point = 0, 0.133, 0.161
fire_point2 = 0, 0.133, 0.161
diff --git a/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_rifles.ltx b/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_rifles.ltx
index 3998c8a7..1dbc9425 100644
--- a/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_rifles.ltx
+++ b/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_rifles.ltx
@@ -253,6 +253,53 @@
lowered_hud_offset_pos_16x9 = 0.184744, 0.042425, -0.050558
lowered_hud_offset_rot = -0.01694, -0.895315, 0.458319
lowered_hud_offset_rot_16x9 = -0.01694, -0.895315, 0.458319
+
+![wpn_ak74m_1p29_sk2_hud]
+ aim_hud_offset_alt_pos = -0.096957, -0.022753, 0.056886
+ aim_hud_offset_alt_pos_16x9 = -0.096957, -0.022753, 0.056886
+ aim_hud_offset_alt_rot = 0.00974, 0.02235, 0.463642
+ aim_hud_offset_alt_rot_16x9 = 0.00974, 0.02235, 0.463642
+ aim_hud_offset_pos = -0.051994, 0.019688, -0.051771
+ aim_hud_offset_pos_16x9 = -0.051994, 0.019688, -0.051771
+ aim_hud_offset_rot = 0.022708, 0.01006, -0.136318
+ aim_hud_offset_rot_16x9 = 0.022708, 0.01006, -0.136318
+ fire_point2 = 0, -0.011, 0.553
+ gl_hud_offset_pos = -0.0327, 0.004, 0
+ gl_hud_offset_pos_16x9 = -0.0327, 0.004, 0
+ gl_hud_offset_rot = -0.07, 0.023, 0
+ gl_hud_offset_rot_16x9 = -0.07, 0.023, 0
+ hands_orientation = 0.487576, 1.186593, -8.448
+ hands_orientation_16x9 = 0.487576, 1.186593, -8.448
+ hands_position = 0.054773, -0.04434, 0.074782
+ hands_position_16x9 = 0.054773, -0.04434, 0.074782
+ lowered_hud_offset_pos = 0.109305, 0.023204, 0
+ lowered_hud_offset_pos_16x9 = 0.109305, 0.023204, 0
+ lowered_hud_offset_rot = 0.095734, -0.76, 0.386579
+ lowered_hud_offset_rot_16x9 = 0.095734, -0.76, 0.386579
+ shell_point = 0, 0.064, 0.19
+
+![wpn_ak74m_camo]
+ position = -0.026, -0.175, 0
+
+![wpn_ak74m_camo_1p29]
+ use_alt_aim_hud = true
+ position = -0.026, -0.175, 0
+
+![wpn_ak74m_sk2_hud]
+ aim_hud_offset_pos = -0.052044, 0.042659, -0.078087
+ aim_hud_offset_pos_16x9 = -0.052044, 0.042659, -0.078087
+ aim_hud_offset_rot = 0.022708, 0.01006, -0.136318
+ aim_hud_offset_rot_16x9 = 0.022708, 0.01006, -0.136318
+ fire_point2 = 0, -0.011, 0.553
+ hands_orientation = 0.487576, 1.186593, -8.448
+ hands_orientation_16x9 = 0.487576, 1.186593, -8.448
+ hands_position = 0.054773, -0.04434, 0.074782
+ hands_position_16x9 = 0.054773, -0.04434, 0.074782
+ lowered_hud_offset_pos = 0.109305, 0.023204, 0
+ lowered_hud_offset_pos_16x9 = 0.109305, 0.023204, 0
+ lowered_hud_offset_rot = 0.095734, -0.76, 0.386579
+ lowered_hud_offset_rot_16x9 = 0.095734, -0.76, 0.386579
+ shell_point = 0, 0.064, 0.19
![wpn_fal_aus]
strap_position = -0.26, -0.11, 0
@@ -1943,8 +1990,8 @@
position = -0.026, 0, 0
![wpn_ak74_n_hud]
- aim_hud_offset_pos = -0.065354, 0.02272, -0.042221
- aim_hud_offset_pos_16x9 = -0.065354, 0.02272, -0.042221
+ aim_hud_offset_pos = -0.04578, 0.026343, -0.042221
+ aim_hud_offset_pos_16x9 = -0.04578, 0.026343, -0.042221
aim_hud_offset_rot = -0.000663, 0.007825, -0.089368
aim_hud_offset_rot_16x9 = -0.000663, 0.007825, -0.089368
gl_hud_offset_pos = -0.092, -0.152108, -0.212401
@@ -1953,8 +2000,8 @@
gl_hud_offset_rot_16x9 = -0.305533, 0.008603, -0.0097
hands_orientation = 0.436182, 0.194943, -4.709284
hands_orientation_16x9 = 0.436182, 0.194943, -4.709284
- hands_position = -0.001681, 0.005532, -0.22259
- hands_position_16x9 = -0.001681, 0.005532, -0.22259
+ hands_position = -0.02083, -8e-05, -0.259567
+ hands_position_16x9 = -0.02083, -8e-05, -0.259567
item_position = 0.003195, -0.00014, -0.000181
lowered_hud_offset_pos = 0.021116, 0.001348, 0
lowered_hud_offset_pos_16x9 = 0.021116, 0.001348, 0
@@ -2141,3 +2188,49 @@
![wpn_m14_hud]
hands_position = -0.035409, -0.014823, 0.000242
hands_position_16x9 = -0.035409, -0.014823, 0.000242
+
+![wpn_g36]
+ fire_point = 0, 0.21, 0.58
+ fire_point2 = 0, 0.21, 0.71
+ position = -0.026, -0.132, 0
+ shell_point = 0, 0.21, 0.13
+
+![wpn_g36_hud]
+ aim_hud_offset_pos = -0.058463, 0.029889, -0.019324
+ aim_hud_offset_pos_16x9 = -0.058463, 0.029889, -0.019324
+ aim_hud_offset_rot = 0.046257, 0.033342, -0.047645
+ aim_hud_offset_rot_16x9 = 0.046257, 0.033342, -0.047645
+ hands_orientation = 1.206831, 1.972121, -2.434843
+ hands_orientation_16x9 = 1.206831, 1.972121, -2.434843
+ hands_position = -0.086322, -0.21329, -0.066719
+ hands_position_16x9 = -0.086322, -0.21329, -0.066719
+ lowered_hud_offset_pos = 0.128562, 0.027174, 0.008537
+ lowered_hud_offset_pos_16x9 = 0.128562, 0.027174, 0.008537
+ lowered_hud_offset_rot = 0.1, -0.8, 0.397956
+ lowered_hud_offset_rot_16x9 = 0.1, -0.8, 0.397956
+
+![wpn_l85]
+ use_alt_aim_hud = true
+ fire_point = 0, 0.186, 0.435
+ fire_point2 = 0, 0.106, 0.468
+ position = -0.026, -0.135, 0
+ shell_point = -0.02, 0.167, 0.082
+
+![wpn_l85_hud]
+ aim_hud_offset_alt_pos = -0.051252, 0.000144, 0.287289
+ aim_hud_offset_alt_pos_16x9 = -0.051252, 0.000144, 0.287289
+ aim_hud_offset_alt_rot = 0.006686, 0.009816, -0.085329
+ aim_hud_offset_alt_rot_16x9 = 0.006686, 0.009816, -0.085329
+ aim_hud_offset_pos = -0.051819, 0.019756, 0.08537
+ aim_hud_offset_pos_16x9 = -0.051819, 0.019756, 0.08537
+ aim_hud_offset_rot = 0.006119, 0.010509, -0.078299
+ aim_hud_offset_rot_16x9 = 0.006119, 0.010509, -0.078299
+ hands_orientation = 0.51627, -0.034137, -5.302046
+ hands_orientation_16x9 = 0.51627, -0.034137, -5.302046
+ hands_position = -0.02997, -0.009112, -0.084044
+ hands_position_16x9 = -0.02997, -0.009112, -0.084044
+ lowered_hud_offset_pos = 0.048108, 0.024694, 0
+ lowered_hud_offset_pos_16x9 = 0.048108, 0.024694, 0
+ lowered_hud_offset_rot = 0.2, -0.7, 0.290844
+ lowered_hud_offset_rot_16x9 = 0.2, -0.7, 0.290844
+
\ No newline at end of file
diff --git a/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_shotguns.ltx b/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_shotguns.ltx
index 13271d72..e1431c24 100644
--- a/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_shotguns.ltx
+++ b/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_shotguns.ltx
@@ -1,3 +1,24 @@
+![wpn_spas12]
+ fire_point = 0, 0.133, 0.686
+ fire_point2 = 0, 0.103, 0.686
+ position = -0.024, -0.081, 0
+ shell_point = 0, 0.138, 0.07
+ strap_position = -0.26, -0.1, 0.05
+
+![wpn_spas12_hud]
+ aim_hud_offset_pos = -0.040185, 0.044069, -0.061513
+ aim_hud_offset_pos_16x9 = -0.040185, 0.044069, -0.061513
+ aim_hud_offset_rot = 0.017184, 0.014279, -0.114453
+ aim_hud_offset_rot_16x9 = 0.017184, 0.014279, -0.114453
+ hands_orientation = 1.988269, -0.159289, -4.784354
+ hands_orientation_16x9 = 1.988269, -0.159289, -4.784354
+ hands_position = -0.023465, 0.001777, 0.054063
+ hands_position_16x9 = -0.023465, 0.001777, 0.054063
+ lowered_hud_offset_pos = 0.108771, 0.02004, -0.02
+ lowered_hud_offset_pos_16x9 = 0.108771, 0.02004, -0.02
+ lowered_hud_offset_rot = -0.094308, -0.710934, 0.685156
+ lowered_hud_offset_rot_16x9 = -0.094308, -0.710934, 0.685156
+
![wpn_toz194_hud]
aim_hud_offset_pos = -0.047189, 0.066443, -0.005648
aim_hud_offset_pos_16x9 = -0.047189, 0.066443, -0.005648
diff --git a/profiles/Default/modlist.txt b/profiles/Default/modlist.txt
index f17d07e3..a5398a95 100644
--- a/profiles/Default/modlist.txt
+++ b/profiles/Default/modlist.txt
@@ -1,21 +1,10 @@
# This file was automatically generated by Mod Organizer.
-Unmanaged_separator
--[DEV] Custom Traders
-[DEV] Brotherhood
+-[DEV] Custom Traders
-[DEV] Backpack Drops
-[DEV] Weapon Repositions
-[DEV] EGUI Main Menu Replacer
--[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul
--[DEV] INC - 72 PATCH - Main Menu - Credits + MCM
--[DEV] INC - 71 PATCH - Main Menu - MCM
--[DEV] INC - 13 Enhanced GUI - Credits
--[DEV] INC - 12 Enhanced GUI - Main Menu
--[DEV] INC - 11 Optional - Enhanced GUI - Intros
--[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX
--[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements
--[DEV] INC - 01 Enhanced GUI - [CORE]
--[DEV] Body Health System Realistic Overhaul
--[DEV] Groks Body Health System Redux
+Divergent - Developer Workspace_separator
-[DEV] Configuration Files
-Dvergent - Developer Addons_separator
@@ -28,19 +17,22 @@
-Divergent - Custom Addons_separator
+Maid's Vanilla HD Icons
-DynaHUD
++Mark Switch
++Parallax Reflex Sights
+Atmospherics
++Aydins Grass Tweaks - SSS Terrain LOD Compatiblity
+Screen Space Shaders
+Beefs NVGs - Improved
+Shader Driven Scopes
+Enhanced Shaders and Color Grading
-+Aydins Grass Tweaks - SSS Terrain LOD Compatiblity
-+Aydin's Grass Tweaks
+Enhanced Graphical User Interface
+bhsro_surgerykit
+Body Health System Realistic Overhaul
+Groks Body Health System Redux
+Binocular Renaimation
-Last Load and Overrides_separator
++New Levels - Arrival Patch
+-Patches and Compatibility_separator
+Usable Bar Doors
+Alternate Fake Start
+Redone Radar and Red Forest
@@ -59,6 +51,7 @@
+Hollywood FX
+Visuals and Effects_separator
+Footsies
++Ledge Climbing Sounds Redone
+Anomaly Footstep Redone
+Gear Rustle Redone
+Return Menu Music
@@ -96,6 +89,7 @@
+TBs Angry Chimera Growls
+Fair Fast Travel
+Arszis Radiation Overhaul - Demonized Edition
++Arrival
-Gameplay Overhauls_separator
+Glowsticks Reanimated
+Glowsticks
@@ -162,6 +156,7 @@
+Armor Rebalance
+TBs Coordinate Based Safe Zones
-Gameplay Tweaks_separator
++Headlamp Reanimated
+Enjoy Cigarettes
+Asnens and Groks Better Cigarettes Animations
+FDDA Enhanced Animations - Medical and Exo
@@ -194,7 +189,7 @@
+Gewehr Reanimation
+M82 Reanimation
+Death Animations
-+Bolt Reanimation
++Haxs Bolt Reanimation
+Barrys Better Axes
+Barrys Better Knives
+Gunslinger PDA Animation
@@ -230,9 +225,10 @@
+T.H.A.P. re-Rework
+T.H.A.P. Rework
+Vehicle Textures Redux
-+Garbage Reworked
-+Red Forest Reworked
-+Pripyat Reworked
+-Garbage Reworked
+-Red Forest Reworked
+-Pripyat Reworked
++Aydin's Grass Tweaks
+Zone Reality Remade
+C.O.N.T.R.A.S.T.I.V.I.T.Y
-Models and Textures_separator
@@ -248,11 +244,8 @@
+High Resolution PDA Maps
+Display Campfires On Map
+Sorting Plus
-+Mark Switch
-+Parallax Reflex Sights
+Quick Action Wheel
+Device Selector Key
-+Dialog Dynamic UI
+Anomaly Barter
+PDA Hacking
+The Collector
diff --git a/profiles/Development/modlist.txt b/profiles/Development/modlist.txt
index 06697335..7ef2a1fe 100644
--- a/profiles/Development/modlist.txt
+++ b/profiles/Development/modlist.txt
@@ -1,20 +1,9 @@
-Unmanaged_separator
--[DEV] Custom Traders
+[DEV] Brotherhood
+-[DEV] Custom Traders
-[DEV] Backpack Drops
-[DEV] Weapon Repositions
-[DEV] EGUI Main Menu Replacer
--[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul
--[DEV] INC - 72 PATCH - Main Menu - Credits + MCM
--[DEV] INC - 71 PATCH - Main Menu - MCM
--[DEV] INC - 13 Enhanced GUI - Credits
--[DEV] INC - 12 Enhanced GUI - Main Menu
--[DEV] INC - 11 Optional - Enhanced GUI - Intros
--[DEV] INC - 11 Enhanced GUI - Dynamic Backgrounds DLTX
--[DEV] INC - 11 Enhanced GUI - Call of Pripyat Elements
--[DEV] INC - 01 Enhanced GUI - [CORE]
--[DEV] Body Health System Realistic Overhaul
--[DEV] Groks Body Health System Redux
-Divergent - Developer Workspace_separator
+[DEV] Configuration Files
-Dvergent - Developer Addons_separator
@@ -27,19 +16,22 @@
-Divergent - Custom Addons_separator
-Maid's Vanilla HD Icons
-DynaHUD
+-Mark Switch
+-Parallax Reflex Sights
-Atmospherics
+-Aydins Grass Tweaks - SSS Terrain LOD Compatiblity
-Screen Space Shaders
-Beefs NVGs - Improved
-Shader Driven Scopes
-Enhanced Shaders and Color Grading
--Aydins Grass Tweaks - SSS Terrain LOD Compatiblity
--Aydin's Grass Tweaks
-Enhanced Graphical User Interface
-bhsro_surgerykit
-Body Health System Realistic Overhaul
-Groks Body Health System Redux
-Binocular Renaimation
-Last Load and Overrides_separator
+-New Levels - Arrival Patch
+-Patches and Compatibility_separator
-Usable Bar Doors
-Alternate Fake Start
-Redone Radar and Red Forest
@@ -58,6 +50,7 @@
-Hollywood FX
-Visuals and Effects_separator
-Footsies
+-Ledge Climbing Sounds Redone
-Anomaly Footstep Redone
-Gear Rustle Redone
-Return Menu Music
@@ -95,6 +88,7 @@
-TBs Angry Chimera Growls
-Fair Fast Travel
-Arszis Radiation Overhaul - Demonized Edition
+-Arrival
-Gameplay Overhauls_separator
-Glowsticks Reanimated
-Glowsticks
@@ -161,6 +155,7 @@
-Armor Rebalance
-TBs Coordinate Based Safe Zones
-Gameplay Tweaks_separator
+-Headlamp Reanimated
-Enjoy Cigarettes
-Asnens and Groks Better Cigarettes Animations
-FDDA Enhanced Animations - Medical and Exo
@@ -193,7 +188,7 @@
-Gewehr Reanimation
-M82 Reanimation
-Death Animations
--Bolt Reanimation
+-Haxs Bolt Reanimation
-Barrys Better Axes
-Barrys Better Knives
-Gunslinger PDA Animation
@@ -232,6 +227,7 @@
-Garbage Reworked
-Red Forest Reworked
-Pripyat Reworked
+-Aydin's Grass Tweaks
-Zone Reality Remade
-C.O.N.T.R.A.S.T.I.V.I.T.Y
-Models and Textures_separator
@@ -247,11 +243,8 @@
-High Resolution PDA Maps
-Display Campfires On Map
-Sorting Plus
--Mark Switch
--Parallax Reflex Sights
-Quick Action Wheel
-Device Selector Key
--Dialog Dynamic UI
-Anomaly Barter
-PDA Hacking
-The Collector