Added New Mods and Profiles Folders

This is a complete rebuild of the modpack, with all new mods and updates for 1.5.3 of Anomaly.
This commit is contained in:
2025-01-14 05:07:53 -05:00
parent 85c665b107
commit 376b4b9689
21217 changed files with 546254 additions and 0 deletions
@@ -0,0 +1,611 @@
;===================================================================================================================
; Changes Made For New Device Models, Animations & Functionality
;
; Requires Moded Exes Dated October 17th 2023 or Newer
;
; Made by BarryBogs & Diolator
;===================================================================================================================
![tch_detector]
!snd_draw
!snd_holster
;===================================================================================================================
;============================================= ECHO DETECTOR =======================================================
;===================================================================================================================
![detector_simple]
!hud_fov
!snd_draw
!snd_holster
scripted_snd_show = new_detectors\echo\echo_draw_2h, true
scripted_snd_show_fast = new_detectors\echo\echo_draw, true
scripted_snd_hide = new_detectors\echo\echo_holster_2h, true
scripted_snd_hide_fast = new_detectors\echo\echo_holster, true
scripted_snd_zoom_hide = new_detectors\echo\echo_holster, true
scripted_snd_zoom_show = new_detectors\echo\echo_draw, true
scripted_snd_show_quick = new_detectors\shared\quick_hide, true
scripted_snd_show_fast_quick = new_detectors\shared\quick_hide, true
scripted_snd_hide_quick = new_detectors\shared\quick_hide, true
scripted_snd_hide_fast_quick = new_detectors\shared\quick_hide, true
scripted_snd_zoom_hide_fast = new_detectors\shared\quick_hide, true
visual = dynamics\devices\dev_detector_1\dev_diolator_detector_echo.ogf
![detector_simple_hud]
lh_lead_gun = true
item_visual = dynamics\devices\dev_detector_1\dev_diolator_detector_1_hud
aim_hud_offset_pos = -0.175, 0.08, 0.06
aim_hud_offset_pos_16x9 = -0.175, 0.08, 0.06
aim_hud_offset_rot = 0.0005, 0.09, -0.015
aim_hud_offset_rot_16x9 = 0.0005, 0.09, -0.015
hands_orientation = 5.90644, 11.97178, -2.881194
hands_orientation_16x9 = 5.90644, 11.97178, -2.881194
hands_position = -0.027539, -0.116984, 0.111619
hands_position_16x9 = -0.027539, -0.116984, 0.111619
item_orientation = 0, 0, 0
item_position = 0, 0, 0
;-------Main Anims
anm_show = barry_echo_draw_2hands_alt, barry_echo_draw_2h_alt
anm_show_fast = barry_echo_draw_hands_alt, barry_echo_draw_alt
anm_hide = barry_echo_holster_hands_2h, barry_echo_holster_2h
anm_hide_fast = barry_echo_holster_hands, barry_echo_holster
anm_idle = barry_echo_idle_hands, barry_echo_idle
anm_idle_moving = barry_echo_walk_hands, barry_echo_walk, 1.15
anm_idle_moving_crouch = barry_echo_walk_hands, barry_echo_walk
anm_idle_sprint = barry_echo_sprint_hands, barry_echo_sprint, 1.4
;-------While Aiming
anm_idle_zoom = barry_echo_idle_zoom_hands, barry_echo_idle
anm_zoom_in = barry_echo_zoom_in_hands, barry_echo_zoom_in
anm_zoom_out = barry_echo_zoom_out_hands, barry_echo_zoom_out
anm_zoom_show = barry_echo_draw_hands_zoom, barry_echo_draw_alt
anm_zoom_hide = barry_echo_holster_hands_zoom, barry_echo_holster
;------- Quick Version
anm_zoom_hide_fast = barry_echo_holster_hands_quick, barry_echo_holster_quick
anm_hide_fast_quick = barry_echo_holster_hands_quick, barry_echo_holster_quick
anm_hide_quick = barry_echo_holster_hands_quick, barry_echo_holster_quick
anm_show_quick = barry_echo_draw_hands_quick, barry_echo_draw_quick
anm_show_fast_quick = barry_echo_draw_hands_quick, barry_echo_draw_quick
;-------While Throwing
anm_throw_start = barry_echo_throw_start_hands, barry_echo_throw_start
anm_throw = barry_echo_idle_throw_hands, barry_echo_idle_throw
anm_throw_end = barry_echo_throw_end_hands, barry_echo_throw_end
freelook_z_offset_mul = 0.6
;===================================================================================================================
;============================================= BEAR DETECTOR =======================================================
;===================================================================================================================
![detector_advanced]
!hud_fov
!snd_draw
!snd_holster
scripted_snd_show = new_detectors\bear\bear_draw_2h, true
scripted_snd_show_fast = new_detectors\bear\bear_draw, true
scripted_snd_hide = new_detectors\bear\bear_holster_2h, true
scripted_snd_hide_fast = new_detectors\bear\bear_holster, true
scripted_snd_zoom_hide = new_detectors\bear\bear_holster, true
scripted_snd_zoom_hide_fast = new_detectors\bear\bear_holster, true
scripted_snd_zoom_show = new_detectors\bear\bear_draw, true
scripted_snd_show_quick = new_detectors\shared\quick_hide, true
scripted_snd_show_fast_quick = new_detectors\shared\quick_hide, true
scripted_snd_hide_quick = new_detectors\shared\quick_hide, true
scripted_snd_hide_fast_quick = new_detectors\shared\quick_hide, true
scripted_snd_zoom_hide_fast = new_detectors\shared\quick_hide, true
scripted_snd_show_dead = new_detectors\bear\bear_draw_2h_dead, true
visual = dynamics\devices\dev_detector_2\dev_diolator_detector_bear.ogf
![detector_advanced_hud]
lh_lead_gun = true
item_visual = dynamics\devices\dev_detector_2\dev_diolator_detector_2_hud
item_orientation = 0, 0, 0
item_position = 0, 0, 0
aim_hud_offset_pos = -0.175, 0.08, 0.06
aim_hud_offset_pos_16x9 = -0.175, 0.08, 0.06
aim_hud_offset_rot = 0.0005, 0.09, -0.015
aim_hud_offset_rot_16x9 = 0.0005, 0.09, -0.015
hands_orientation = 4.609228, 9.570553, 0.523029
hands_orientation_16x9 = 4.609228, 9.570553, 0.523029
hands_position = -0.015012, -0.092392, 0.080609
hands_position_16x9 = -0.015012, -0.092392, 0.080609
;-------Main Anims
anm_show = barry_bear_draw_2hands, barry_bear_draw_2h
anm_show_fast = barry_bear_draw_hands, barry_bear_draw
anm_hide = barry_bear_holster_2hands, barry_bear_holster_2h
anm_hide_fast = barry_bear_holster_hands, barry_bear_holster
anm_idle = barry_bear_idle_hands, barry_bear_idle
anm_idle_moving = barry_bear_walk_hands, barry_bear_walk, 1.15
anm_idle_moving_crouch = barry_bear_walk_hands, barry_bear_walk
anm_idle_sprint = barry_bear_sprint_hands, barry_bear_sprint, 1.4
;-------While Aiming
anm_idle_zoom = barry_bear_idle_zoom_hands, barry_bear_idle_zoom
anm_zoom_in = barry_bear_zoom_in_hands, barry_bear_zoom_in
anm_zoom_out = barry_bear_zoom_out_hands, barry_bear_zoom_out
anm_zoom_show = barry_bear_draw_zoom_hands, barry_bear_draw_zoom
anm_zoom_hide = barry_bear_holster_zoom_hands, barry_bear_holster_zoom
;------- Quick Version
anm_zoom_hide_fast = barry_bear_holster_hands_quick, barry_bear_holster_quick
anm_hide_fast_quick = barry_bear_holster_hands_quick, barry_bear_holster_quick
anm_hide_quick = barry_bear_holster_hands_quick, barry_bear_holster_quick
anm_show_quick = barry_bear_draw_hands_quick, barry_bear_draw_quick
anm_show_fast_quick = barry_bear_draw_hands_quick, barry_bear_draw_quick
;-------While Throwing
anm_throw_start = barry_bear_throw_start_hands, barry_bear_throw_start
anm_throw = barry_bear_throw_idle_hands, barry_bear_throw_idle
anm_throw_end = barry_bear_throw_end_hands, barry_bear_throw_end
;-------While Dead
anm_show_dead = barry_bear_draw_2hands_dead, barry_bear_draw_2h_dead, 0.95
freelook_z_offset_mul = 0.6
;===================================================================================================================
;============================================= VELES DETECTOR ======================================================
;===================================================================================================================
![detector_elite]
!hud_fov
!snd_draw
!snd_holster
scripted_snd_show = new_detectors\veles\veles_draw, true
scripted_snd_show_fast = new_detectors\veles\veles_draw, true
scripted_snd_hide = new_detectors\veles\veles_holster_2h, true
scripted_snd_hide_fast = new_detectors\veles\veles_holster, true
scripted_snd_zoom_hide = new_detectors\veles\veles_holster, true
scripted_snd_zoom_hide_fast = new_detectors\veles\veles_holster, true
scripted_snd_zoom_show = new_detectors\veles\veles_draw, true
scripted_snd_show_quick = new_detectors\shared\quick_hide, true
scripted_snd_show_fast_quick = new_detectors\shared\quick_hide, true
scripted_snd_hide_quick = new_detectors\shared\quick_hide, true
scripted_snd_hide_fast_quick = new_detectors\shared\quick_hide, true
scripted_snd_zoom_hide_fast = new_detectors\shared\quick_hide, true
; side2side,up/down,close/far
ui_p = -0.0281, 0.0123, 0.0006
ui_r = 0, 180, 0
visual = dynamics\devices\dev_detector_3\dev_diolator_detector_elite.ogf
![detector_elite_hud]
detector_ui_bone = cover_power
lh_lead_gun = true
item_visual = dynamics\devices\dev_detector_3\dev_diolator_detector_3_hud
item_orientation = 0, 0, 0
item_position = 0, 0, 0
aim_hud_offset_pos = -0.24, 0.06, 0.06
aim_hud_offset_pos_16x9 = -0.24, 0.06, 0.06
aim_hud_offset_rot = 0.0005, 0.09, -0.015
aim_hud_offset_rot_16x9 = 0.0005, 0.09, -0.015
hands_orientation = 4.609228, 9.570553, 0.523029
hands_orientation_16x9 = 4.609228, 9.570553, 0.523029
hands_position = -0.028831, -0.090758, 0.10164
hands_position_16x9 = -0.028831, -0.090758, 0.10164
;-------Main Anims
anm_show = barry_veles_draw_hands, barry_veles_draw
anm_show_fast = barry_veles_draw_hands, barry_veles_draw
anm_hide = barry_veles_holster_2hands, barry_veles_holster_2h
anm_hide_fast = barry_veles_holster_hands, barry_veles_holster
anm_idle = barry_veles_idle_hands, barry_veles_idle
anm_idle_moving = barry_veles_walk_hands, barry_veles_walk, 1.15
anm_idle_moving_crouch = barry_veles_walk_hands, barry_veles_walk
anm_idle_sprint = barry_veles_sprint_hands, barry_veles_sprint, 1.4
;-------While Aiming
anm_idle_zoom = barry_veles_idle_hands_zoom, barry_veles_idle_zoom
anm_zoom_in = barry_veles_hands_zoom_in, barry_veles_zoom_in
anm_zoom_out = barry_veles_hands_zoom_out, barry_veles_zoom_out
anm_zoom_show = barry_veles_draw_hands_zoom, barry_veles_draw_zoom
anm_zoom_hide = barry_veles_holster_hands_zoom, barry_veles_holster_zoom
;------- Quick Version
anm_zoom_hide_fast = barry_veles_holster_hands_quick, barry_veles_holster_quick
anm_hide_fast_quick = barry_veles_holster_hands_quick, barry_veles_holster_quick
anm_hide_quick = barry_veles_holster_hands_quick, barry_veles_holster_quick
anm_show_quick = barry_veles_draw_hands_quick, barry_veles_draw_quick
anm_show_fast_quick = barry_veles_draw_hands_quick, barry_veles_draw_quick
;-------While Throwing
anm_throw_start = barry_veles_throw_start_hands, barry_veles_throw_start
anm_throw = barry_veles_throw_idle_hands, barry_veles_throw_idle
anm_throw_end = barry_veles_throw_end_hands, barry_veles_throw_end
freelook_z_offset_mul = 0.6
;===================================================================================================================
;============================================= SVAROG DETECTOR =====================================================
;===================================================================================================================
![detector_scientific]
!hud_fov
!snd_draw
!snd_holster
scripted_snd_show = new_detectors\veles\veles_draw, true
scripted_snd_show_fast = new_detectors\veles\veles_draw, true
scripted_snd_hide = new_detectors\veles\veles_holster_2h, true
scripted_snd_hide_fast = new_detectors\veles\veles_holster, true
scripted_snd_zoom_hide = new_detectors\veles\veles_holster, true
scripted_snd_zoom_hide_fast = new_detectors\veles\veles_holster, true
scripted_snd_zoom_show = new_detectors\veles\veles_draw, true
scripted_snd_show_quick = new_detectors\shared\quick_hide, true
scripted_snd_show_fast_quick = new_detectors\shared\quick_hide, true
scripted_snd_hide_quick = new_detectors\shared\quick_hide, true
scripted_snd_hide_fast_quick = new_detectors\shared\quick_hide, true
scripted_snd_zoom_hide_fast = new_detectors\shared\quick_hide, true
ui_p = -0.0281, 0.0123, 0.0006
ui_r = 0, 180, 0
visual = dynamics\devices\dev_detector_4\dev_diolator_detector_scientific.ogf
![detector_scientific_hud]
detector_ui_bone = cover_power
lh_lead_gun = true
item_visual = dynamics\devices\dev_detector_4\dev_diolator_detector_4_hud
item_orientation = 0, 0, 0
item_position = 0, 0, 0
aim_hud_offset_pos = -0.24, 0.06, 0.06
aim_hud_offset_pos_16x9 = -0.24, 0.06, 0.06
aim_hud_offset_rot = 0.0005, 0.09, -0.015
aim_hud_offset_rot_16x9 = 0.0005, 0.09, -0.015
hands_orientation = 4.609228, 9.570553, 0.523029
hands_orientation_16x9 = 4.609228, 9.570553, 0.523029
hands_position = -0.028831, -0.090758, 0.10164
hands_position_16x9 = -0.028831, -0.090758, 0.10164
;-------Main Anims
anm_show = barry_veles_draw_hands, barry_veles_draw
anm_show_fast = barry_veles_draw_hands, barry_veles_draw
anm_hide = barry_veles_holster_2hands, barry_veles_holster_2h
anm_hide_fast = barry_veles_holster_hands, barry_veles_holster
anm_idle = barry_veles_idle_hands, barry_veles_idle
anm_idle_moving = barry_veles_walk_hands, barry_veles_walk, 1.15
anm_idle_moving_crouch = barry_veles_walk_hands, barry_veles_walk
anm_idle_sprint = barry_veles_sprint_hands, barry_veles_sprint, 1.4
;-------While Aiming
anm_idle_zoom = barry_veles_idle_hands_zoom, barry_veles_idle_zoom
anm_zoom_in = barry_veles_hands_zoom_in, barry_veles_zoom_in
anm_zoom_out = barry_veles_hands_zoom_out, barry_veles_zoom_out
anm_zoom_show = barry_veles_draw_hands_zoom, barry_veles_draw_zoom
anm_zoom_hide = barry_veles_holster_hands_zoom, barry_veles_holster_zoom
;------- Quick Version
anm_zoom_hide_fast = barry_veles_holster_hands_quick, barry_veles_holster_quick
anm_hide_fast_quick = barry_veles_holster_hands_quick, barry_veles_holster_quick
anm_hide_quick = barry_veles_holster_hands_quick, barry_veles_holster_quick
anm_show_quick = barry_veles_draw_hands_quick, barry_veles_draw_quick
anm_show_fast_quick = barry_veles_draw_hands_quick, barry_veles_draw_quick
;-------While Throwing
anm_throw_start = barry_veles_throw_start_hands, barry_veles_throw_start
anm_throw = barry_veles_throw_idle_hands, barry_veles_throw_idle
anm_throw_end = barry_veles_throw_end_hands, barry_veles_throw_end
freelook_z_offset_mul = 0.6
;===================================================================================================================
;============================================= ANOMALY DETECTOR ====================================================
;===================================================================================================================
![detector_anomaly]
!hud_fov
!snd_draw
!snd_holster
scripted_snd_show_quick = new_detectors\shared\quick_hide, true
scripted_snd_show_fast_quick = new_detectors\shared\quick_hide, true
scripted_snd_hide_quick = new_detectors\shared\quick_hide, true
scripted_snd_hide_fast_quick = new_detectors\shared\quick_hide, true
scripted_snd_zoom_hide_fast = new_detectors\shared\quick_hide, true
scripted_snd_show = new_detectors\anomalous\anomalous_draw, true
scripted_snd_show_fast = new_detectors\anomalous\anomalous_draw, true
scripted_snd_hide = new_detectors\anomalous\anomalous_holster, true
scripted_snd_hide_fast = new_detectors\anomalous\anomalous_holster, true
visual = dynamics\devices\dev_detector_8\diolator_anomaly_detector.ogf
; side2side, up/down, close/far
custom_ui_pos = -0.021, 0.0212, 0
custom_ui_rot = 0, 180, 0
custom_ui_bone = light_bone_1
![detector_anomaly_hud]
lh_lead_gun = true
item_visual = dynamics\devices\dev_detector_8\diolator_anomaly_detector_hud
item_position = 0, 0, 0
item_orientation = 0, 0, 0
aim_hud_offset_pos = -0.24, 0.06, 0.06
aim_hud_offset_pos_16x9 = -0.24, 0.06, 0.06
aim_hud_offset_rot = 0.0005, 0.09, -0.015
aim_hud_offset_rot_16x9 = 0.0005, 0.09, -0.015
hands_orientation = -1.836848, 10.10987, 0.860951
hands_orientation_16x9 = -1.836848, 10.10987, 0.860951
hands_position = -0.036028, -0.063657, 0.096323
hands_position_16x9 = -0.036028, -0.063657, 0.096323
;-------Main Anims
anm_show = barry_anomalous_draw_2hands, barry_anomalous_draw_2h
anm_show_fast = barry_anomalous_draw_hands, barry_anomalous_draw
anm_hide = barry_anomalous_holster_hands, barry_anomalous_holster
anm_hide_fast = barry_anomalous_holster_hands, barry_anomalous_holster
anm_idle = barry_anomalous_idle_hands, barry_anomalous_idle
anm_idle_moving = barry_anomalous_walk_hands, barry_anomalous_idle, 1.15
anm_idle_moving_crouch = barry_anomalous_walk_hands, barry_anomalous_idle
anm_idle_sprint = barry_anomalous_sprint_hands, barry_anomalous_idle, 1.4
;-------While Aiming
anm_idle_zoom = barry_anomalous_idle_zoom_hands, barry_anomalous_idle
anm_zoom_in = barry_anomalous_zoom_in_hands, barry_anomalous_idle
anm_zoom_out = barry_anomalous_zoom_out_hands, barry_anomalous_idle
anm_zoom_show = barry_anomalous_draw_hands_zoom, barry_anomalous_draw_zoom
anm_zoom_hide = barry_anomalous_holster_hands_zoom, barry_anomalous_holster_zoom
anm_zoom_hide_fast = barry_anomalous_holster_hands_zoom, barry_anomalous_holster_zoom
;------- Quick Version
anm_zoom_hide_fast = barry_anomalous_holster_quick_hands, barry_anomalous_idle
anm_hide_fast_quick = barry_anomalous_holster_quick_hands, barry_anomalous_idle
anm_hide_quick = barry_anomalous_holster_quick_hands, barry_anomalous_idle
anm_show_quick = barry_anomalous_draw_quick_hands, barry_anomalous_idle
anm_show_fast_quick = barry_anomalous_draw_quick_hands, barry_anomalous_idle
;-------While Throwing
anm_throw_start = barry_anomalous_throw_start_hands, barry_anomalous_idle
anm_throw = barry_anomalous_throw_idle_hands, barry_anomalous_idle
anm_throw_end = barry_anomalous_throw_end_hands, barry_anomalous_idle
freelook_z_offset_mul = 0.6
;===================================================================================================================
;================================================== RF-RECEIVER ====================================================
;===================================================================================================================
![detector_radio]
!hud_fov
!snd_draw
!snd_holster
scripted_snd_show_quick = new_detectors\shared\quick_hide, true
scripted_snd_show_fast_quick = new_detectors\shared\quick_hide, true
scripted_snd_hide_quick = new_detectors\shared\quick_hide, true
scripted_snd_hide_fast_quick = new_detectors\shared\quick_hide, true
scripted_snd_zoom_hide_fast = new_detectors\shared\quick_hide, true
scripted_snd_show = new_detectors\radio\radio_draw_2h, true
scripted_snd_show_fast = new_detectors\radio\radio_draw, true
scripted_snd_hide = new_detectors\radio\radio_holster_2h, true
scripted_snd_hide_fast = new_detectors\radio\radio_holster, true
visual = dynamics\devices\dev_detector_09\dev_radio_diolator.ogf
; side2side, up/down, close/far
custom_ui_pos = -0.032, 0.0105, 0.00245
custom_ui_rot = 0, 180, 0
custom_ui_bone = screen_bone
![detector_radio_hud]
lh_lead_gun = true
item_visual = dynamics\devices\dev_detector_09\dev_radio_diolator_hud
item_orientation = 0, 0, 0
item_position = 0, 0, 0
aim_hud_offset_pos = -0.24, 0.06, 0.06
aim_hud_offset_pos_16x9 = -0.24, 0.06, 0.06
aim_hud_offset_rot = 0.1005, 0.09, -0.015
aim_hud_offset_rot_16x9 = 0.1005, 0.09, -0.015
hands_orientation = 6.58, 2.892408, -1.333825
hands_orientation_16x9 = 6.58, 2.892408, -1.333825
hands_position = 0.005339, -0.045116, 0.146432
hands_position_16x9 = 0.005339, -0.045116, 0.146432
;-------Main Anims
anm_show = barry_radio_draw_2hands, barry_radio_draw_2h
anm_show_fast = barry_radio_draw_hands, barry_radio_draw
anm_hide = barry_radio_holster_2hands, barry_radio_holster_2h
anm_hide_fast = barry_radio_holster_hands, barry_radio_holster
anm_idle = barry_radio_idle_hands, barry_radio_idle
anm_idle_moving = barry_radio_walk_hands, barry_radio_idle_short, 1.15
anm_idle_moving_crouch = barry_radio_walk_hands, barry_radio_idle_short
anm_idle_sprint = barry_radio_sprint_hands, barry_radio_idle_short, 1.4
;-------While Aiming
anm_idle_zoom = barry_radio_zoom_idle_hands, barry_radio_idle_short
anm_zoom_in = barry_radio_zoom_in_hands, barry_radio_idle_short
anm_zoom_out = barry_radio_zoom_out_hands, barry_radio_idle_short
anm_zoom_show = barry_radio_draw_hands_zoom, barry_radio_idle_short
anm_zoom_hide = barry_radio_holster_hands_zoom, barry_radio_idle_short
anm_zoom_hide_fast = barry_radio_holster_hands_zoom, barry_radio_idle_short
;------- Quick Version
anm_hide_fast_quick = barry_radio_holster_hands_quick, barry_radio_idle_short
anm_hide_quick = barry_radio_holster_hands_quick, barry_radio_idle_short
anm_show_quick = barry_radio_draw_hands_quick, barry_radio_idle_short
anm_show_fast_quick = barry_radio_draw_hands_quick, barry_radio_idle_short
;-------While Throwing
anm_throw_start = barry_radio_throw_start_hands, barry_radio_idle_short
anm_throw = barry_radio_throw_idle_hands, barry_radio_idle_short
anm_throw_end = barry_radio_throw_end_hands, barry_radio_idle_short
freelook_z_offset_mul = 0.6
;===================================================================================================================
;============================================= DOSIMETER DEVICE ====================================================
;===================================================================================================================
![detector_geiger]
!hud_fov
!snd_draw
!snd_holster
visual = dynamics\devices\dev_dosimeter\dosimeter_diolator.ogf
scripted_snd_show = new_detectors\dosimeter\dosimeter_draw_2h, true
scripted_snd_show_fast = new_detectors\dosimeter\dosimeter_draw, true
scripted_snd_hide = new_detectors\dosimeter\dosimeter_holster_2h, true
scripted_snd_hide_fast = new_detectors\dosimeter\dosimeter_holster, true
scripted_snd_zoom_hide = new_detectors\dosimeter\dosimeter_holster, true
scripted_snd_zoom_hide_fast = new_detectors\dosimeter\dosimeter_holster, true
scripted_snd_zoom_show = new_detectors\dosimeter\dosimeter_draw, true
scripted_snd_show_quick = new_detectors\shared\quick_hide, true
scripted_snd_show_fast_quick = new_detectors\shared\quick_hide, true
scripted_snd_hide_quick = new_detectors\shared\quick_hide, true
scripted_snd_hide_fast_quick = new_detectors\shared\quick_hide, true
scripted_snd_zoom_hide_fast = new_detectors\shared\quick_hide, true
; side2side,close/far,up/down
custom_ui_pos = -0.015, -0.0017, 0.032
custom_ui_rot = 0, 90, 0
![detector_geiger_hud]
item_visual = dynamics\devices\dev_dosimeter\dosimeter_diolator_hud
lh_lead_gun = true
item_orientation = 0, 0, 0
item_position = 0, 0, 0
aim_hud_offset_pos = -0.24, 0.06, 0.06
aim_hud_offset_pos_16x9 = -0.24, 0.06, 0.06
aim_hud_offset_rot = 0.1005, 0.09, -0.015
aim_hud_offset_rot_16x9 = 0.1005, 0.09, -0.015
hands_orientation = 6.58, 2.892408, -1.333825
hands_orientation_16x9 = 6.58, 2.892408, -1.333825
hands_position = 0.005339, -0.045116, 0.146432
hands_position_16x9 = 0.005339, -0.045116, 0.146432
;-------Main Anims
anm_show = barry_dosimeter_draw_2hands, barry_dosimeter_draw_2h
anm_show_fast = barry_dosimeter_draw_hands, barry_dosimeter_draw
anm_hide = barry_dosimeter_holster_2hands, barry_dosimeter_holster_2h
anm_hide_fast = barry_dosimeter_holster_hands, barry_dosimeter_holster
anm_idle = barry_dosimeter_idle_hands, barry_dosimeter_idle
anm_idle_moving = barry_dosimeter_walk_hands, barry_dosimeter_idle, 1.15
anm_idle_moving_crouch = barry_dosimeter_walk_hands, barry_dosimeter_idle
anm_idle_sprint = barry_dosimeter_sprint_hands, barry_dosimeter_idle, 1.4
;-------While Aiming
anm_idle_zoom = barry_dosimeter_zoom_idle_hands, barry_dosimeter_idle
anm_zoom_in = barry_dosimeter_zoom_in_hands, barry_dosimeter_idle
anm_zoom_out = barry_dosimeter_zoom_out_hands, barry_dosimeter_idle
anm_zoom_show = barry_dosimeter_draw_hands_zoom, barry_dosimeter_draw_zoom
anm_zoom_hide = barry_dosimeter_holster_hands_zoom, barry_dosimeter_holster_zoom
;------- Quick Versions
anm_show_quick = barry_dosimeter_draw_hands_quick, barry_dosimeter_idle
anm_show_fast_quick = barry_dosimeter_draw_hands_quick, barry_dosimeter_idle
anm_hide_quick = barry_dosimeter_holster_hands_quick, barry_dosimeter_idle
anm_hide_fast_quick = barry_dosimeter_holster_hands_quick, barry_dosimeter_idle
anm_zoom_hide_fast = barry_dosimeter_holster_hands_quick, barry_dosimeter_idle
;-------While Throwing
anm_throw_start = barry_dosimeter_throw_start_hands, barry_dosimeter_idle
anm_throw = barry_dosimeter_throw_idle_hands, barry_dosimeter_idle
anm_throw_end = barry_dosimeter_throw_end_hands, barry_dosimeter_idle
freelook_z_offset_mul = 0.6
;===================================================================================================================
;================================================ Flashlight =======================================================
;===================================================================================================================
![device_flashlight]
!hud_fov
!snd_draw
!snd_holster
visual = dynamics\devices\dev_tactical_torch\dev_diolator_flashlight.ogf
scripted_snd_show = new_detectors\flashlight\flashlight_draw, true
scripted_snd_show_fast = new_detectors\flashlight\flashlight_draw, true
scripted_snd_hide = new_detectors\flashlight\flashlight_holster, true
scripted_snd_hide_fast = new_detectors\flashlight\flashlight_holster, true
scripted_snd_zoom_hide = new_detectors\flashlight\flashlight_holster, true
scripted_snd_zoom_hide_fast = new_detectors\flashlight\flashlight_holster, true
scripted_snd_zoom_show = new_detectors\flashlight\flashlight_draw, true
scripted_snd_show_quick = new_detectors\shared\quick_hide, true
scripted_snd_show_fast_quick = new_detectors\shared\quick_hide, true
scripted_snd_hide_quick = new_detectors\shared\quick_hide, true
scripted_snd_hide_fast_quick = new_detectors\shared\quick_hide, true
scripted_snd_zoom_hide_fast = new_detectors\shared\quick_hide, true
scripted_snd_show_fast_variant1 = new_detectors\flashlight\flashlight_draw, true
scripted_snd_show_fast_variant2 = new_detectors\flashlight\flashlight_draw, true
scripted_snd_show_fast_variant3 = new_detectors\flashlight\flashlight_draw, true
scripted_snd_show_fast_variant4 = new_detectors\flashlight\flashlight_draw_rare, true
scripted_snd_show_variant1 = new_detectors\flashlight\flashlight_draw, true
scripted_snd_show_variant2 = new_detectors\flashlight\flashlight_draw, true
scripted_snd_show_variant3 = new_detectors\flashlight\flashlight_draw, true
scripted_snd_show_variant4 = new_detectors\flashlight\flashlight_draw_rare, true
attach_angle_offset = 3.062, 0.008, -1.532
attach_position_offset = 0.134, -0.007, 0.09
![device_flashlight_hud]
item_visual = dynamics\devices\dev_tactical_torch\dev_diolator_flashlight_hud
lh_lead_gun = true
fire_bone = light_source
fire_direction = 0,0,1
fire_point = 0,0,0 ;-0.25
item_orientation = 0, 0, 0
item_position = 0, 0, 0
aim_hud_offset_pos = -0.24, 0.06, 0.06
aim_hud_offset_pos_16x9 = -0.24, 0.06, 0.06
aim_hud_offset_rot = 0.1005, 0.09, -0.015
aim_hud_offset_rot_16x9 = 0.1005, 0.09, -0.015
hands_orientation = 0.747048, 1.929285, -1.333825
hands_orientation_16x9 = 0.747048, 1.929285, -1.333825
hands_position = -0.027341, 0.006008, 0.142452
hands_position_16x9 = -0.027341, 0.006008, 0.142452
;-------Main Anims
anm_show = barry_flashlight_draw_hands, barry_flashlight_draw
anm_show_fast = barry_flashlight_draw_hands, barry_flashlight_draw
anm_hide = barry_flashlight_holster_hands, barry_flashlight_holster
anm_hide_fast = barry_flashlight_holster_hands, barry_flashlight_holster
anm_idle = barry_flashlight_idle_hands, barry_flashlight_idle
anm_idle_moving = barry_flashlight_walk_hands, barry_flashlight_idle, 1.15
anm_idle_moving_crouch = barry_flashlight_walk_hands, barry_flashlight_idle
anm_idle_sprint = barry_flashlight_sprint_hands, barry_flashlight_idle, 1.4
;-------While Aiming
anm_idle_zoom = barry_flashlight_zoom_idle_hands, barry_flashlight_idle
anm_zoom_in = barry_flashlight_zoom_in_hands, barry_flashlight_idle
anm_zoom_out = barry_flashlight_zoom_out_hands, barry_flashlight_idle
anm_zoom_show = barry_flashlight_draw_hands_quick, barry_flashlight_idle
anm_zoom_hide = barry_flashlight_holster_hands_quick, barry_flashlight_idle
;------- Quick Versions
anm_show_quick = barry_flashlight_draw_hands_quick, barry_flashlight_idle
anm_show_fast_quick = barry_flashlight_draw_hands_quick, barry_flashlight_idle
anm_hide_quick = barry_flashlight_holster_hands_quick, barry_flashlight_idle
anm_hide_fast_quick = barry_flashlight_holster_hands_quick, barry_flashlight_idle
anm_zoom_hide_fast = barry_flashlight_holster_hands_quick, barry_flashlight_idle
;-------While Throwing
anm_throw_start = barry_flashlight_throw_start_hands, barry_flashlight_idle
anm_throw = barry_flashlight_throw_idle_hands, barry_flashlight_idle
anm_throw_end = barry_flashlight_throw_end_hands, barry_flashlight_idle
;-------Random Variants
anm_show_variant1 = barry_flashlight_draw_hands, barry_flashlight_draw
anm_show_variant2 = barry_flashlight_draw_hands, barry_flashlight_draw
anm_show_variant3 = barry_flashlight_draw_hands, barry_flashlight_draw
anm_show_variant4 = barry_flashlight_draw_hands_rare, barry_flashlight_draw_rare
anm_show_fast_variant1 = barry_flashlight_draw_hands, barry_flashlight_draw
anm_show_fast_variant2 = barry_flashlight_draw_hands, barry_flashlight_draw
anm_show_fast_variant3 = barry_flashlight_draw_hands, barry_flashlight_draw
anm_show_fast_variant4 = barry_flashlight_draw_hands_rare, barry_flashlight_draw_rare
freelook_z_offset_mul = 0.6
@@ -0,0 +1,93 @@
;===================================================================================================================
; Changes Made For New Device Models, Animations & Functionality
;
; Requires Moded Exes Dated October 17th 2023 or Newer
;
; Made by BarryBogs & Diolator
;
; 2-Wide Icons
;===================================================================================================================
;============================================= ECHO DETECTOR =======================================================
;===================================================================================================================
![detector_simple]
inv_grid_width = 2
inv_grid_height = 1
inv_grid_x = 0
inv_grid_y = 0
icons_texture = ui\ui_icon_barrydevices
;===================================================================================================================
;============================================= BEAR DETECTOR =======================================================
;===================================================================================================================
![detector_advanced]
inv_grid_width = 2
inv_grid_height = 1
inv_grid_x = 0
inv_grid_y = 1
icons_texture = ui\ui_icon_barrydevices
;===================================================================================================================
;============================================= VELES DETECTOR ======================================================
;===================================================================================================================
![detector_elite]
inv_grid_width = 2
inv_grid_height = 1
inv_grid_x = 0
inv_grid_y = 2
icons_texture = ui\ui_icon_barrydevices
;===================================================================================================================
;============================================= SVAROG DETECTOR =====================================================
;===================================================================================================================
![detector_scientific]
inv_grid_width = 2
inv_grid_height = 1
inv_grid_x = 0
inv_grid_y = 3
icons_texture = ui\ui_icon_barrydevices
;===================================================================================================================
;============================================= ANOMALY DETECTOR ====================================================
;===================================================================================================================
![detector_anomaly]
inv_grid_width = 2
inv_grid_height = 1
inv_grid_x = 2
inv_grid_y = 1
icons_texture = ui\ui_icon_barrydevices
;===================================================================================================================
;============================================= RF-RECEIVER =========================================================
;===================================================================================================================
![detector_radio]
inv_grid_width = 2
inv_grid_height = 1
inv_grid_x = 0
inv_grid_y = 4
icons_texture = ui\ui_icon_barrydevices
;===================================================================================================================
;============================================= FLASHLIGHT ==========================================================
;===================================================================================================================
![device_flashlight]
inv_grid_width = 2
inv_grid_height = 1
inv_grid_x = 4
inv_grid_y = 4
icons_texture = ui\ui_icon_barrydevices
;===================================================================================================================
;============================================= DOSIMETER ===========================================================
;===================================================================================================================
![detector_geiger]
inv_grid_width = 2
inv_grid_height = 1
inv_grid_x = 2
inv_grid_y = 0
icons_texture = ui\ui_icon_barrydevices
@@ -0,0 +1,3 @@
![config_defaults]
path_sound_on = $nosound
path_sound_off = $nosound
@@ -0,0 +1,13 @@
; **** DO NOT MODIFY THIS FILE ****
;
; This file loads all of the others that store
; various general settings, and definitions for
; how sound effects are loaded. It will load any
; files in this folder that are named in the pattern
; "rfcfg_<name>.ltx".
;
; If compatibility with another addon requires you
; to make changes, modify or add the individual
; rfcfg files instead, not this one.
#include "rfcfg_*.ltx"
@@ -0,0 +1,3 @@
[config_sfx_bgnoise]
; The following line MUST point at a valid functor or no background static will play
sfx_functor = item_radio.sfx_background_noise
@@ -0,0 +1,5 @@
[config_sfx_gsm]
sfx_path = catspaw
sfx_filename = nerfs_cellnoise
sfx_max = 12
insert_silence = 8 ; insert this many entries of silence also
@@ -0,0 +1,6 @@
[config_sfx_chatter]
; Cut content from Anomaly, here for compatibility only
; To enable, see rfsrc_cut_content.ltx
sfx_filename = talk_
sfx_path = detectors\RF\talk
sfx_max = 33
@@ -0,0 +1,11 @@
[config_defaults]
path_default_noise = detectors\RF\noise
path_default_beep = detectors\RF\beep_02
path_sound_on = detectors\RF\on
path_sound_off = detectors\RF\off
rf_scan_time = 5000 ; time in ms between RF signal scans
rf_min_gap = 400 ; minimum time in ms between beeps so the sound doesn't get spammed
rf_min_flash_time = 100
rf_freq_max = 999 ; just a default, MCM will override this if installed
tb_beep = detectors\tb_detector_radio_beep
indicator_file = rax_rf_indicator.xml
@@ -0,0 +1,6 @@
[config_sfx_emission]
sfx_filename = noise_emission_
sfx_path = detectors\RF\emission
sfx_max = 8
; The following line must point at a valid functor
sfx_functor = item_radio.sfx_emission
@@ -0,0 +1,5 @@
[config_sfx_psy]
sfx_path = catspaw
sfx_filename = nerfs_psynoise
sfx_max = 15
insert_random = 5 ; insert this many entries of random noise also
@@ -0,0 +1,7 @@
; Random radio noise
; This table of sounds is also used to populate certain other
; sound effect tables, to inject random noise into their rotation
[config_sfx_random]
sfx_path = detectors\RF\random
sfx_filename = random_
sfx_max = 13
@@ -0,0 +1,108 @@
; Added by NERFS
; Aside from adding electrical and psy anomalies to the
; list of objects that the RF receiver can pick up, this
; file also serves as an example of how to add your
; own signal sources.
[class_anom_electro_s]
exact_match = true
; The above flag tells NERFS that it should match more
; than just the clsid--it needs an exact match for some
; other field. Currently supported are section and RFID
; (for tagged stashes in the RF_stashes list).
match_by = section
clsid = zone_mbald_s
; A base entry with the clsid (class ID) must be present,
; it is the first criteria the script looks for.
dist = 25
; Range of the signal
snd = func
; Sound effect, or func if calling a functor
; Valid (default) sound effects are:
; noise: background static
; rfid_beep: stash signal
; random: random noise, default anomalous signal
; emission: emission noise
; chatter: stalker radio chatter
; gsm: cellular RF interference
; psy: different-sounding interference for psy
; silence: exactly what it says
; See the rfcfg_*.ltx files for sound effect defs
func = item_radio.sfx_random_noise
; If snd = func, the script will instead call this
; functor and use the value it returns as the path
; to the sound effect to use e.g.:
; detectors\\RF\\noise
[rfss_zone_mine_electric]
match_key = true
match_by = section
; Once it matches the clsid, if exact_match is true the
; script then searches for a record that is keyed by
; the value in said field.
section = zone_mine_electric
; In this case, if it matches clsid.zone_mbald_s, it
; then checks to see whether there is a source entry
; with a section of "zone_mine_electric"
dist = 25
snd = func
func = item_radio.sfx_random_noise
freq = 491
; If it finds that match, it uses these values instead.
; If it doesn't, it assumes this is not a valid source.
[rfss_zone_mine_electric_weak]
; And then because the section must be an exact match,
; repeat for any variants.
match_key = true
match_by = section
section = zone_mine_electric_weak
dist = 25
snd = func
func = item_radio.sfx_random_noise
freq = 491
[rfss_zone_mine_electric_average]
match_key = true
match_by = section
section = zone_mine_electric_average
dist = 25
snd = func
func = item_radio.sfx_random_noise
freq = 491
[rfss_zone_mine_electric_strong]
match_key = true
match_by = section
section = zone_mine_electric_strong
dist = 25
snd = func
func = item_radio.sfx_random_noise
freq = 491
[class_tesla_anomaly]
; Same for this one. If it matches clsid.zone_torrid_s,
; it checks whether the anomaly's section is equal to
; "fireball_electric_zone"
exact_match = true
match_by = section
clsid = zone_torrid_s
dist = 25
snd = func
func = item_radio.sfx_random_noise
[rfss_fireball_electric_zone]
match_key = true
match_by = section
section = fireball_electric_zone
dist = 25
snd = func
func = item_radio.sfx_random_noise
freq = 522
@@ -0,0 +1,23 @@
; RF interference from GSM-750, 810, 850,
; and 900 cellular signals given off by
; the PDAs of nearby stalkers
;
; If you don't want this feature, you can
; safely delete this file or comment it out.
[rfint_gsm_noise]
clsid = script_stalker
dist = 50
snd = func
func = item_radio.sfx_gsm_noise
freq = 762,810,869,915
action = item_radio.new_stalker_contact
variance = 15
; The first time a stalker comes into range while
; the player has the RF Receiver out, NERFS will
; assign their PDA a frequency by picking one of
; the comma-separated bands listed in freq, then
; randomizing it +/- 1 to N, where N is the value
; above in variance.
;
; Variance has no effect on any other signal.
@@ -0,0 +1,38 @@
; Base signal source classes - don't edit this unless
; you need to add new classes of artifact/stash box
; that NERFS isn't recognizing. This should almost
; never be necessary.
[class_artifact]
exact_match = true
match_by = section
clsid = artefact
dist = 50
snd = func
func = item_radio.sfx_random_noise
action = item_radio.signal_active_artifact
[class_script_artifact]
exact_match = true
match_by = section
clsid = artefact_s
dist = 50
snd = func
func = item_radio.sfx_random_noise
action = item_radio.signal_active_artifact
[class_inventory_box]
exact_match = true
match_by = rfid
clsid = inventory_box
dist = 70
snd = rfid_beep
action = item_radio.signal_stash_rfid
[class_inventory_box_s]
exact_match = true
match_by = rfid
clsid = inventory_box_s
dist = 70
snd = rfid_beep
action = item_radio.signal_stash_rfid
@@ -0,0 +1,28 @@
; CUT CONTENT
; These definitions are in the vanilla script, but are
; normally commented out. They may not work and I can't
; support them.
;[psysucker]
;clsid = psysucker_s
;dist = 150
;snd = func
;func = item_radio.sfx_random_noise_psy
;freq = 67
;[karlik]
;clsid = karlik_s
;dist = 150
;snd = func
;func = item_radio.sfx_random_noise_psy
;freq = 244
; Disabled by default. For picking up nearby stalkers,
; see rfsrc_cellnoise.ltx.
;
;[stalkers]
;clsid = script_stalker
;dist = 150
;snd = func
;func = item_radio.sfx_radio_chatter
@@ -0,0 +1,79 @@
; Vanilla RF signal sources
; All of these should behave precisely as they do in vanilla Anomaly
; If you want to add new signal sources, don't edit this file
; Instead, make your own rfsrc_yourname.ltx file and add them there
; See rfsrc_anomalies.ltx for an explanation of the fields
; Artifacts
[rfss_af_ring]
section = af_ring
dist = 50
snd = func
func = item_radio.sfx_random_noise
freq = 23
action = item_radio.signal_active_artifact
[rfss_af_electra_flash]
section = af_electra_flash
dist = 50
snd = func
func = item_radio.sfx_random_noise_psy
freq = 124
action = item_radio.signal_active_artifact
[rfss_af_electra_moonlight]
section = af_electra_moonlight
dist = 50
snd = func
func = item_radio.sfx_random_noise
freq = 57
action = item_radio.signal_active_artifact
[rfss_af_black_spray]
section = af_black_spray
dist = 50
snd = func
func = item_radio.sfx_random_noise_psy
freq = 89
action = item_radio.signal_active_artifact
[rfss_af_full_empty]
section = af_full_empty
dist = 50
snd = func
func = item_radio.sfx_random_noise_psy
freq = 236
action = item_radio.signal_active_artifact
[rfss_af_ice]
section = af_ice
dist = 50
snd = func
func = item_radio.sfx_random_noise_psy
freq = 178
action = item_radio.signal_active_artifact
[rfss_af_soul]
section = af_soul
dist = 50
snd = func
func = item_radio.sfx_random_noise_psy
freq = 302
action = item_radio.signal_active_artifact
[rfss_af_compass]
section = af_compass
dist = 100
snd = func
func = item_radio.sfx_random_noise
freq = 285
action = item_radio.signal_active_artifact
[rfss_af_death_lamp]
section = af_death_lamp
dist = 200
snd = func
func = item_radio.sfx_random_noise_psy
freq = 321
action = item_radio.signal_active_artifact
@@ -0,0 +1,41 @@
; Vanilla RF signal sources
; All of these should behave precisely as they do in vanilla Anomaly
; If you want to add new signal sources, don't edit this file
; Instead, make your own rfsrc_yourname.ltx file and add them there
; See rfsrc_anomalies.ltx for an explanation of the fields
; Psy Mutants
[controller]
clsid = controller_s
dist = 150
snd = func
func = item_radio.sfx_random_noise_psy
freq = 145
[burer]
clsid = burer_s
dist = 150
snd = func
func = item_radio.sfx_random_noise_psy
freq = 106
[poltergeist]
clsid = poltergeist_s
dist = 150
snd = func
func = item_radio.sfx_random_noise_psy
freq = 219
[psy_dog]
clsid = psy_dog_s
dist = 150
snd = func
func = item_radio.sfx_random_noise_psy
freq = 190
[psy_dog_phantom]
clsid = psy_dog_phantom_s
dist = 150
snd = func
func = item_radio.sfx_random_noise_psy
freq = 197
@@ -0,0 +1,8 @@
; **** DO NOT MODIFY THIS FILE ****
;
; To customize signal sources, create a file
; named "rfsrc_<yourname>.ltx" and place it
; in this folder. NERFS will attempt to load
; any file named in that pattern.
;
#include "rfsrc_*.ltx"
@@ -0,0 +1,228 @@
<!-- ====================================================================
New Extensible RF Sources
Author: Catspaw
Source: https://www.moddb.com/members/catspawmods/addons
Permission granted to freely translate into any language.
===================================================================== -->
<string_table>
<string id="ui_mcm_menu_nerfs">
<text>NERF Sources</text>
</string>
<string id="ui_mcm_menu_nerfmain">
<text>Main Settings</text>
</string>
<string id="ui_mcm_menu_nerfwidget">
<text>Accessibility</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_enable_rrfr">
<text>Enable Reworked RF Receiver compatibility</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_enable_rrfr_desc">
<text>If you have Coverdrave's Reworked RF Receiver addon installed, checking this option will make NERFS use that addon's MCM settings for equip state, beeps, and frequency changes. All other RRFR improvements are included in NERFS.</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_debuglogs">
<text>Enable debug logging</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_debuglogs_desc">
<text>Noisy, but contains useful debugging information. If you are reporting an issue, please FIRST:\n\n
1. Enable this setting\n
2. Exit the game completely\n
3. Reload the game and reproduce the issue - without other addons, if possible\n
4. Exit the game\n\n
Then zip up the game log from [anomaly_folder]/appdata/logs and put it somewhere online</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_max_freq">
<text>Maximum RF frequency</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_max_freq_desc">
<text>The RF Receiver can display a maximum of three digits, but is clamped to VHF ranges (30-300 Mhz). However, some vanilla signal sources are outside of that range. This setting expands both the frequency range of the detector, and the range that the game uses when giving out tasks.</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_header_dar">
<text>Minimal framework version for inclusion in Devices of Anomaly Redone</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_header1">
<text>New Extensible RF Sources improves the RF Detector in multiple ways:\n
• Expands the frequency range from 300 to 999 (configurable below)\n
• Adds interesting new sources of RF noise\n
• Moves all RF sources into an extensible LTX-based framework designed to be moddable and conflict-free\n
• Adds lootable notes (with accompanying encyclopedia articles) that can be randomly found on dead stalkers, allowing players to learn about useful frequencies through gameplay (full version only - link below)\n
• Adds an optional HUD indicator of signal strength, for accessibility or preference\n
• Includes support for Reworked RF Receiver and TB's RF Tasks
</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_header2">
<text>For more information, or to download the full version of NERFS, see the Moddb page:\nhttps://www.moddb.com/mods/stalker-anomaly/addons/new-extensible-rf-sources
</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_header1">
<text>The accessibility widget is a simple HUD visual indicator for RF signal strength. It is intended for deaf and hearing-impaired persons, but can be used by anyone who finds the the audio cues hard to tell apart from the background noise. Position and colors of the indicator can be customized for preference or color-blindness. The widget will ONLY appear when the player has the RF Detector device out.\n</text>
</string>
<string id="ui_mcm_nerfs_scrolldown">
<text>** Scroll down for more settings **</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_show">
<text>Show accessibility widget</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_lo_header">
<text>\n\nThe indicator will flash this color when signal strength is low.\nDefault (grey): 255,50,50,50\n\n</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_hi_header">
<text>\n\nThe indicator will flash this color when signal strength is high.\nDefault (green): 255,0,250,0</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_em_header">
<text>\n\nThe indicator will flash this color during emissions.\nDefault (red): 128,200,0,0\n\n</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_clr_a">
<text>Alpha</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_clr_r">
<text>Red</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_clr_g">
<text>Green</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_clr_b">
<text>Blue</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_headerxy">
<text>XY position of the upper left corner of the widget:</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_headerxy_desc">
<text>0,0 is the upper left corner, 1024,768 is the lower right. The game converts this to whatever your resolution is. The default (lower center) is 491,670.</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_pos_x">
<text>X (horizontal, left to right) coordinate</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_pos_y">
<text>Y (vertical, top to bottom) coordinate</text>
</string>
<!-- Added in 1.2 -->
<string id="ui_mcm_nerfs_nerfmain_use_mwheel">
<text>Use mouse wheel to change frequency</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_use_mwheel_desc">
<text>If enabled, the mouse wheel can be scrolled up and down to change frequency. Just as in vanilla, holding Shift or Alt will change the increment to 10 or 50, respectively. These go by much more quickly when scrolling!\n
This feature requires modded binaries version 20230701 or newer. It is not currently supported by GAMMA.</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_binaries">
<text>Modded binaries by demonized: https://github.com/themrdemonized/STALKER-Anomaly-modded-exes/
</text>
</string>
<!-- Added in 1.3 -->
<string id="ui_mcm_menu_nerfpresets">
<text>Presets</text>
</string>
<string id="ui_mcm_nerfpresets_header1">
<text>You can define up to nine preset frequencies, and assign a different hotkey to each.</text>
</string>
<string id="ui_mcm_nerfpresets_header2">
<text>If mousewheel support is enabled, you can also hold Ctrl while scrolling in order to cycle through the presets below.</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_preset1_freq">
<text>Preset Frequency 1</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_kb_preset1">
<text>Keybind for Preset 1</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_preset2_freq">
<text>Preset Frequency 2</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_kb_preset2">
<text>Keybind for Preset 2</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_preset3_freq">
<text>Preset Frequency 3</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_kb_preset3">
<text>Keybind for Preset 3</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_preset4_freq">
<text>Preset Frequency 4</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_kb_preset4">
<text>Keybind for Preset 4</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_preset5_freq">
<text>Preset Frequency 5</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_kb_preset5">
<text>Keybind for Preset 5</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_preset6_freq">
<text>Preset Frequency 6</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_kb_preset6">
<text>Keybind for Preset 6</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_preset7_freq">
<text>Preset Frequency 7</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_kb_preset7">
<text>Keybind for Preset 7</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_preset8_freq">
<text>Preset Frequency 8</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_kb_preset8">
<text>Keybind for Preset 8</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_preset9_freq">
<text>Preset Frequency 9</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_kb_preset9">
<text>Keybind for Preset 9</text>
</string>
<string id="st_nerfs_freq_preset">
<text>Preset Frequency %s: %s Mhz</text>
</string>
</string_table>
@@ -0,0 +1,229 @@
<!-- ====================================================================
New Extensible RF Sources
Author: Catspaw
Source: https://www.moddb.com/members/catspawmods/addons
Permission granted to freely translate into any language.
===================================================================== -->
<string_table>
<string id="ui_mcm_menu_nerfs">
<text>NERF Sources</text>
</string>
<string id="ui_mcm_menu_nerfmain">
<text>Основные настройки</text>
</string>
<string id="ui_mcm_menu_nerfwidget">
<text>Виджет доступности</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_enable_rrfr">
<text>Включить совместимость с модификацией "Reworked RF Receiver"</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_enable_rrfr_desc">
<text>Если у вас установлена модификация "Reworked RF Receiver" от Coverdrave, то данная опция активирует использование настроек звукового сигнала и частот из этого мода. Все остальные улучшения из модификации RRFR уже включены в NERFS.</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_debuglogs">
<text>Включить ведение журнала отладки</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_debuglogs_desc">
<text>Файл будет содержать много лишнего, но также предоставит информацию, полезную для разбора багов. Если вы хотите сообщить о проблеме с модификацией, то следуйте инструкции:\n\n
1. Включите данную опцию\n
2. Выйдите из игры на рабочий стол\n
3. Загрузите сохранение и воспроизведите проблемную ситуацию. По возможности без посторонних модификаций\n
4. Выйдите из игры на рабочий стол\n\n
Найдите файл лога в директории [anomaly_folder]/appdata/logs, заархивируйте его и затем выложите на какой-нибудь файлообменник</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_max_freq">
<text>Максимальный диапазон радиочастот RF-ресивера</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_max_freq_desc">
<text>RF-ресивер способен отображать трёхзначные числа, но его рабочий диапазон ограничен игрой в рамках ОВЧ (очень высоких частот; 30-300 МГц). Тем не менее, некоторые источники сигнала в стандартной игре находятся за пределами этого диапазона. Данная опция расширяет сразу 2 параметра: диапазон рабочих частот у ресивера и диапазон частот, используемый игрой при выдаче игроку заданий на поиск сигналов.</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_header_dar">
<text>Минимальная версия фреймворка для включения в Devices of Anomaly Redone</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_header1">
<text>Модификация NERFS (Новые и расширяемые источники RF-сигналов) предлагает несколько улучшений для RF-ресивера, а именно она:\n
• Расширяет верхнюю границу диапазона частот с 300 до 999 (можно настроить ниже)\n
• Добавляет новые интересные источники шума, который распознаёт RF-ресивер\n
• Переносит все источники RF-сигналов в расширяемый и дополняемый фреймворк, основанный на LTX-файлах. Это сделано для поддержки модификаций и исключения возможных конфликтов\n
• Добавляет заметки с информацией о полезных частотах (также добавляет соответствующие статьи в справочник), которые игрок может изучить в ходе игрового процесса. Заметки которые можно найти случайным образом на трупах сталкеров (только полная версия - ссылка ниже)\n
• Добавляет в HUD опциональный индикатор мощности сигнала RF-ресивера для игроков с ограниченными возможностями или же для пущего удобства\n
• Включает в себя поддержку модификаций "Reworked RF Receiver" и "TB's RF Tasks"
</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_header2">
<text>Более подробная информация на странице модификации на Moddb:\nhttps://www.moddb.com/members/catspawmods/addons
</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_header1">
<text>Виджет доступности - это простой визуальный индикатор для вашего HUD'а, который показывает мощность RF-сигнала. В первую очередь он предназначен для использования глухими людьми и теми, у кого наблюдаются проблемы со слухом. Также виджет может быть полезен тем, кому сложно отличить звуковые подсказки от фонового шума. Цвет индикатора и его позицию на экране можно изменить по вашему желанию, что также может быть полезно при дальтонизме. Виджет доступности появится на экране ТОЛЬКО при условии, что игрок держит в руке RF-ресивер.\n</text>
</string>
<string id="ui_mcm_nerfs_scrolldown">
<text>** Прокрутите вниз, чтобы увидеть дополнительные настройки **</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_show">
<text>Показывать виджет доступности</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_lo_header">
<text>\n\nИндикатор будет мигать этим цветом при низком уровне сигнала.\nПо умолчанию (серый): 255,50,50,50\n\n</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_hi_header">
<text>\n\nИндикатор будет мигать этим цветом при высоком уровне сигнала.\nПо умолчанию (зеленый): 255,0,250,0</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_em_header">
<text>\n\nИндикатор будет мигать этим цветом во время выбросов.\nПо умолчанию (красный): 128,200,0,0\n\n</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_clr_a">
<text>Прозрачность</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_clr_r">
<text>Красный</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_clr_g">
<text>Зелёный</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_clr_b">
<text>Синий</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_headerxy">
<text>Координаты XY, по которым размещается левый верхний угол виджета доступности:</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_headerxy_desc">
<text>0,0 - это левый верхний угол экрана; 1024,768 - правый нижний. Игра конвертирует эти значения, чтобы подстроиться под разрешение вашего монитора. Значение по умолчанию (по центру внизу) - 491,670.</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_pos_x">
<text>Координата X (по горизонтали, слева направо)</text>
</string>
<string id="ui_mcm_nerfs_nerfwidget_pos_y">
<text>Координата Y (по вертикали, сверху вниз)</text>
</string>
<!-- Added in 1.2 -->
<string id="ui_mcm_nerfs_nerfmain_use_mwheel">
<text>Смена радиочастоты колесом мыши</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_use_mwheel_desc">
<text>Когда эта функция включена, колесо мыши можно прокручивать вверх и вниз для изменения частоты RF-ресивера. Как и в стандартной игре, удерживание Shift или Alt изменит приращение частоты на 10 или 50 соответственно. Прокрутка стала намного быстрее!\n
Для этой функции требуются модифицированные EXE-файлы версии 20230701 или новее. В настоящий момент эта функция не поддерживается модификацией GAMMA.</text>
</string>
<string id="ui_mcm_nerfs_nerfmain_binaries">
<text>Модифицированные EXE-файлы от demonized: https://github.com/themrdemonized/STALKER-Anomaly-modded-exes/
</text>
</string>
<!-- Added in 1.3 - переведено Google Translate -->
<string id="ui_mcm_menu_nerfpresets">
<text>Пресеты</text>
</string>
<string id="ui_mcm_nerfpresets_header1">
<text>Вы можете указать до девяти предустановленных частот и назначить для каждой свою горячую клавишу.</text>
</string>
<string id="ui_mcm_nerfpresets_header2">
<text>Если у вас включена опция смены радиочастоты колесом мыши, то вы также можете удерживать Ctrl во время прокрутки, чтобы переключаться между предустановками ниже.</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_preset1_freq">
<text>Предустановленная частота 1</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_kb_preset1">
<text>Клавиша для предустановки 1</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_preset2_freq">
<text>Предустановленная частота 2</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_kb_preset2">
<text>Клавиша для предустановки 2</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_preset3_freq">
<text>Предустановленная частота 3</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_kb_preset3">
<text>Клавиша для предустановки 3</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_preset4_freq">
<text>Предустановленная частота 4</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_kb_preset4">
<text>Клавиша для предустановки 4</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_preset5_freq">
<text>Предустановленная частота 5</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_kb_preset5">
<text>Клавиша для предустановки 5</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_preset6_freq">
<text>Предустановленная частота 6</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_kb_preset6">
<text>Клавиша для предустановки 6</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_preset7_freq">
<text>Предустановленная частота 7</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_kb_preset7">
<text>Клавиша для предустановки 7</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_preset8_freq">
<text>Предустановленная частота 8</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_kb_preset8">
<text>Клавиша для предустановки 8</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_preset9_freq">
<text>Предустановленная частота 9</text>
</string>
<string id="ui_mcm_nerfs_nerfpresets_kb_preset9">
<text>Клавиша для предустановки 9</text>
</string>
<string id="st_nerfs_freq_preset">
<text>Предустановленная частота %s: %s МГц</text>
</string>
</string_table>
@@ -0,0 +1,8 @@
<w>
<indicator x="0" y="0" width="50" height="50" stretch="1">
<!-- The 0,0 in the indicator line above is used as a starting point for the position that you can customize in MCM. You don't need to hardcode this. -Catspaw -->
<!-- x is the location of the left edge of the indicator, y is the top edge. x is 0 to 1024 y is 0 to 768 no matter your dispaly resulution. 0,0 is top left. 512,384 is the middle of the screen(ish), 1024,768 will put the top left of the texture at the bottom right if the screen meaning the texture will be off screen. -RavenAscendant /!-->
<texture>ui\nerfs\circle.dds</texture>
</indicator>
</w>
@@ -0,0 +1,7 @@
<w>
<file name="ui\nerfs\ui_nerfs_img">
<texture id="ui_mcm_nerfs_main_headerimg_new" x="0" y="0" width="512" height="220" />
<texture id="ui_mcm_nerfs_presets_headerimg" x="0" y="462" width="512" height="50" />
<texture id="ui_mcm_nerfs_widget_headerimg" x="0" y="512" width="512" height="288" />
</file>
</w>
@@ -0,0 +1,271 @@
<w>
<file name="ui\ui_ingame2_common">
<!-- final - 99% ;) -->
<!-- <texture id="ui_inGame2_inventory_back" x="299" y="0" width="725" height="768" />
<texture id="ui_inGame2_left_side" x="693" y="0" width="331" height="768" /> -->
<texture id="ui_inGame2_character_border" x="0" y="0" width="123" height="87" />
<texture id="ui_inGame2_left_top" x="693" y="0" width="331" height="142" />
<!-- temp -->
<texture id="ui_inGame2_delimiter_01a" x="688" y="768" width="5" height="39" />
<texture id="ui_inGame2_delimiter_01b" x="693" y="768" width="331" height="39" />
<texture id="ui_inGame2_delimiter_02" x="688" y="768" width="336" height="47" />
<texture id="ui_inGame2_bt_mech_e" x="0" y="303" width="71" height="39" />
<texture id="ui_inGame2_bt_mech_h" x="0" y="342" width="71" height="39" />
<texture id="ui_inGame2_bt_mech_d" x="0" y="381" width="71" height="39" />
<texture id="ui_inGame2_bt_mech_s" x="0" y="420" width="71" height="39" />
<texture id="ui_inGame2_bt_mech_u" x="0" y="459" width="71" height="39" />
<texture id="ui_inGame2_bt_mech_t" x="0" y="498" width="71" height="39" />
<!--texture id="ui_temp_item_01" x="0" y="537" width="71" height="39" />
<texture id="ui_temp_item_02" x="0" y="576" width="71" height="39" />
<texture id="ui_temp_item_03" x="0" y="615" width="71" height="39" /-->
<!-- mechanic -->
<texture id="ui_bt_repair_e" x="70" y="325" width="56" height="57" />
<texture id="ui_bt_repair_h" x="126" y="325" width="56" height="57" />
<texture id="ui_bt_repair_t" x="182" y="325" width="56" height="57" />
<texture id="ui_bt_repair_d" x="238" y="325" width="56" height="57" />
<!-- layouts - horizontal: 41, 49, 90, 180, vertical: 98 -->
<texture id="ui_bt_upgrade_border" x="0" y="229" width="105" height="56" />
<texture id="ui_bt_upgrade_chain" x="105" y="229" width="105" height="56" />
<!-- RGBA - unknown: 22,30,35,231 , dissabled: 28,14,14,231 , not_allowed: 72,0,0,128 , taken: 10,63,41,128 -->
<texture id="ui_bt_upgrade_base" x="0" y="325" width="70" height="40" />
<texture id="ui_bt_upgrade_unknown" x="0" y="285" width="70" height="40" />
<texture id="ui_bt_upgrade_dissabled" x="140" y="285" width="70" height="40" />
<texture id="ui_bt_upgrade_not_allowed" x="70" y="285" width="70" height="40" />
<texture id="ui_bt_upgrade_taken" x="210" y="285" width="70" height="40" />
<texture id="ui_bt_noice_01" x="0" y="654" width="71" height="39" />
<texture id="ui_inGame2_bt_mech_h2" x="0" y="579" width="71" height="39" />
<texture id="ui_temp_chars_info_progress" x="0" y="149" width="247" height="2" />
<texture id="ui_temp_mech_tips_icon_01" x="0" y="749" width="19" height="19" />
<texture id="ui_temp_mech_tips_icon_02" x="19" y="749" width="19" height="19" />
<texture id="ui_temp_mech_tips_icon_03" x="38" y="749" width="19" height="19" />
<texture id="ui_temp_frame_lt" x="904" y="812" width="50" height="50" />
<texture id="ui_temp_frame_l" x="904" y="847" width="50" height="50" />
<texture id="ui_temp_frame_lb" x="904" y="882" width="50" height="50" />
<texture id="ui_temp_frame_t" x="939" y="812" width="50" height="50" />
<texture id="ui_temp_frame_b" x="939" y="882" width="50" height="50" />
<texture id="ui_temp_frame_rb" x="974" y="882" width="50" height="50" />
<texture id="ui_temp_frame_r" x="974" y="847" width="50" height="50" />
<texture id="ui_temp_frame_rt" x="974" y="812" width="50" height="50" />
<texture id="ui_temp_frame_back" x="939" y="847" width="50" height="50" />
<texture id="ui_char_arrow_shadow" x="877" y="840" width="9" height="39" />
<texture id="ui_char_arrow" x="887" y="840" width="9" height="39" />
<texture id="ui_char_resist_fire" x="759" y="903" width="31" height="27" />
<texture id="ui_char_resist_acid" x="794" y="903" width="31" height="27" />
<texture id="ui_char_resist_psi" x="829" y="903" width="31" height="27" />
<texture id="ui_char_resist_rad" x="864" y="903" width="31" height="27" />
<texture id="ui_char_stamina" x="815" y="934" width="209" height="9" />
<texture id="ui_char_health" x="815" y="946" width="209" height="9" />
<texture id="ui_char_armor" x="815" y="958" width="209" height="9" />
<texture id="ui_char_bleeding" x="852" y="873" width="22" height="22" />
<!-- x-y 3x718 -->
<texture id="ui_watch_back" x="736" y="850" width="108" height="47" />
<texture id="ui_inv_flogo_over" x="916" y="971" width="108" height="48" />
<!-- items -->
<texture id="ui_item_count_back" x="865" y="821" width="29" height="16" />
<texture id="ui_grid_blank" x="822" y="975" width="41" height="41" />
<texture id="ui_grid_selected" x="866" y="975" width="41" height="41" />
<texture id="ui_closed_af_slot" x="745" y="947" width="58" height="58" />
<!-- anomaly detector -->
<texture id="ui_temp_ad1_back" x="0" y="227" width="193" height="38" />
<texture id="ui_temp_ad2_back" x="0" y="265" width="193" height="38" />
<texture id="ui_temp_ad12_freq_line" x="166" y="45" width="23" height="20" />
<texture id="ui_temp_ad3_back" x="0" y="151" width="193" height="75" />
<texture id="ui_temp_ad3_artefact" x="194" y="152" width="5" height="5" />
<texture id="ui_temp_ad3_radar_glow" x="166" y="1" width="88" height="43" />
<texture id="ui_temp_ad4_mine_thermal" x="210" y="156" width="19" height="19" />
<texture id="ui_temp_ad4_mine_acidic" x="210" y="177" width="19" height="19" />
<texture id="ui_temp_ad4_mine_electric" x="210" y="198" width="19" height="19" />
<texture id="ui_temp_ad4_mine_gravitational" x="210" y="219" width="19" height="19" />
<texture id="ui_inv_delimiter_b" x="0" y="110" width="19" height="19" />
<texture id="ui_inv_delimiter_back" x="19" y="110" width="30" height="19" />
<texture id="ui_inv_delimiter_e" x="160" y="129" width="19" height="19" />
<texture id="ui_det_wave_b" x="166" y="45" width="23" height="20" />
<texture id="ui_det_wave_back" x="166" y="45" width="23" height="20" />
<texture id="ui_det_wave_e" x="166" y="45" width="23" height="20" />
<!-- weapon - upgrades -->
<texture id="ui_wp_upgrade_01" x="0" y="784" width="70" height="40" />
<texture id="ui_wp_upgrade_02" x="0" y="824" width="70" height="40" />
<texture id="ui_wp_upgrade_03" x="0" y="864" width="70" height="40" />
<texture id="ui_wp_upgrade_04" x="0" y="904" width="70" height="40" />
<texture id="ui_wp_upgrade_05" x="0" y="944" width="70" height="40" />
<texture id="ui_wp_upgrade_06" x="0" y="984" width="70" height="40" />
<texture id="ui_wp_upgrade_07" x="70" y="784" width="70" height="40" />
<texture id="ui_wp_upgrade_08" x="70" y="824" width="70" height="40" />
<texture id="ui_wp_upgrade_09" x="70" y="864" width="70" height="40" />
<texture id="ui_wp_upgrade_10" x="70" y="904" width="70" height="40" />
<texture id="ui_wp_upgrade_11" x="70" y="944" width="70" height="40" />
<texture id="ui_wp_upgrade_12" x="70" y="984" width="70" height="40" />
<texture id="ui_wp_upgrade_13" x="140" y="784" width="70" height="40" />
<texture id="ui_wp_upgrade_14" x="140" y="824" width="70" height="40" />
<texture id="ui_wp_upgrade_15" x="140" y="864" width="70" height="40" />
<texture id="ui_wp_upgrade_16" x="140" y="904" width="70" height="40" />
<texture id="ui_wp_upgrade_17" x="140" y="944" width="70" height="40" />
<texture id="ui_wp_upgrade_18" x="140" y="984" width="70" height="40" />
<texture id="ui_wp_upgrade_19" x="210" y="784" width="70" height="40" />
<texture id="ui_wp_upgrade_20" x="210" y="824" width="70" height="40" />
<texture id="ui_wp_upgrade_21" x="210" y="864" width="70" height="40" />
<texture id="ui_wp_upgrade_22" x="210" y="904" width="70" height="40" />
<texture id="ui_wp_upgrade_23" x="210" y="944" width="70" height="40" />
<texture id="ui_wp_upgrade_24" x="210" y="984" width="70" height="40" />
<texture id="ui_wp_upgrade_25" x="280" y="784" width="70" height="40" />
<texture id="ui_wp_upgrade_26" x="280" y="824" width="70" height="40" />
<texture id="ui_wp_upgrade_27" x="280" y="864" width="70" height="40" />
<texture id="ui_wp_upgrade_28" x="280" y="904" width="70" height="40" />
<texture id="ui_wp_upgrade_29" x="280" y="944" width="70" height="40" />
<texture id="ui_wp_upgrade_30" x="280" y="984" width="70" height="40" />
<texture id="ui_wp_upgrade_31" x="350" y="784" width="70" height="40" />
<texture id="ui_wp_upgrade_32" x="350" y="824" width="70" height="40" />
<texture id="ui_wp_upgrade_33" x="350" y="864" width="70" height="40" />
<texture id="ui_wp_upgrade_34" x="350" y="904" width="70" height="40" />
<texture id="ui_wp_upgrade_35" x="350" y="944" width="70" height="40" />
<texture id="ui_wp_upgrade_36" x="350" y="984" width="70" height="40" />
<texture id="ui_wp_upgrade_37" x="420" y="784" width="70" height="40" />
<texture id="ui_wp_upgrade_38" x="420" y="824" width="70" height="40" />
<texture id="ui_wp_upgrade_39" x="420" y="864" width="70" height="40" />
<texture id="ui_wp_upgrade_40" x="420" y="904" width="70" height="40" />
<texture id="ui_wp_upgrade_41" x="420" y="944" width="70" height="40" />
<texture id="ui_wp_upgrade_42" x="420" y="984" width="70" height="40" />
<texture id="ui_wp_upgrade_43" x="490" y="784" width="70" height="40" />
<texture id="ui_wp_upgrade_44" x="490" y="824" width="70" height="40" />
<texture id="ui_wp_upgrade_45" x="490" y="864" width="70" height="40" />
<texture id="ui_wp_upgrade_46" x="490" y="904" width="70" height="40" />
<texture id="ui_wp_upgrade_47" x="490" y="944" width="70" height="40" />
<texture id="ui_wp_upgrade_48" x="490" y="984" width="70" height="40" />
<texture id="ui_wp_upgrade_49" x="560" y="784" width="70" height="40" />
<texture id="ui_wp_upgrade_50" x="560" y="824" width="70" height="40" />
<texture id="ui_wp_upgrade_51" x="560" y="864" width="70" height="40" />
<texture id="ui_wp_upgrade_52" x="560" y="904" width="70" height="40" />
<texture id="ui_wp_upgrade_53" x="560" y="944" width="70" height="40" />
<texture id="ui_wp_upgrade_54" x="560" y="984" width="70" height="40" />
<texture id="ui_wp_upgrade_55" x="0" y="624" width="70" height="40" />
<texture id="ui_wp_upgrade_56" x="0" y="664" width="70" height="40" />
<texture id="ui_wp_upgrade_57" x="0" y="704" width="70" height="40" />
<texture id="ui_wp_upgrade_58" x="0" y="744" width="70" height="40" />
<texture id="ui_wp_upgrade_59" x="70" y="704" width="70" height="40" />
<texture id="ui_wp_upgrade_60" x="70" y="744" width="70" height="40" />
<texture id="ui_wp_upgrade_61" x="70" y="744" width="70" height="40" />
<texture id="ui_wp_upgrade_62" x="70" y="744" width="70" height="40" />
<!-- armor - upgrades -->
<texture id="ui_am_upgrade_01" x="630" y="904" width="70" height="40" />
<texture id="ui_am_upgrade_02" x="630" y="864" width="70" height="40" />
<texture id="ui_am_upgrade_03" x="630" y="824" width="70" height="40" />
<texture id="ui_am_upgrade_04" x="210" y="744" width="70" height="40" />
<texture id="ui_am_upgrade_05" x="210" y="704" width="70" height="40" />
<texture id="ui_am_upgrade_06" x="210" y="664" width="70" height="40" />
<texture id="ui_am_upgrade_07" x="210" y="624" width="70" height="40" />
<texture id="ui_am_upgrade_08" x="210" y="584" width="70" height="40" />
<texture id="ui_am_upgrade_09" x="210" y="544" width="70" height="40" />
<texture id="ui_am_upgrade_10" x="210" y="504" width="70" height="40" />
<texture id="ui_am_upgrade_11" x="210" y="464" width="70" height="40" />
<texture id="ui_am_upgrade_12" x="210" y="424" width="70" height="40" />
<texture id="ui_am_upgrade_13" x="210" y="384" width="70" height="40" />
<texture id="ui_am_upgrade_14" x="140" y="744" width="70" height="40" />
<texture id="ui_am_upgrade_15" x="140" y="704" width="70" height="40" />
<texture id="ui_am_upgrade_16" x="140" y="664" width="70" height="40" />
<texture id="ui_am_upgrade_17" x="140" y="624" width="70" height="40" />
<texture id="ui_am_upgrade_18" x="140" y="464" width="70" height="40" />
<texture id="ui_am_upgrade_19" x="140" y="424" width="70" height="40" />
<texture id="ui_am_upgrade_20" x="140" y="384" width="70" height="40" />
<texture id="ui_am_upgrade_21" x="70" y="664" width="70" height="40" />
<texture id="ui_am_upgrade_22" x="70" y="624" width="70" height="40" />
<texture id="ui_am_upgrade_23" x="70" y="464" width="70" height="40" />
<texture id="ui_am_upgrade_24" x="70" y="424" width="70" height="40" />
<texture id="ui_am_upgrade_25" x="70" y="384" width="70" height="40" />
<texture id="ui_am_upgrade_26" x="0" y="584" width="70" height="40" />
<texture id="ui_am_upgrade_27" x="0" y="544" width="70" height="40" />
<texture id="ui_am_upgrade_28" x="0" y="504" width="70" height="40" />
<texture id="ui_am_upgrade_29" x="0" y="464" width="70" height="40" />
<texture id="ui_am_upgrade_30" x="0" y="424" width="70" height="40" />
<texture id="ui_am_upgrade_31" x="0" y="384" width="70" height="40" />
<!-- weapon - properties -->
<texture id="ui_wp_propery_01" x="78" y="524" width="19" height="19" />
<texture id="ui_wp_propery_02" x="78" y="543" width="19" height="19" />
<texture id="ui_wp_propery_03" x="78" y="562" width="19" height="19" />
<texture id="ui_wp_propery_04" x="78" y="581" width="19" height="19" />
<texture id="ui_wp_propery_05" x="78" y="600" width="19" height="19" />
<texture id="ui_wp_propery_06" x="97" y="524" width="19" height="19" />
<texture id="ui_wp_propery_07" x="97" y="543" width="19" height="19" />
<texture id="ui_wp_propery_08" x="97" y="562" width="19" height="19" />
<texture id="ui_wp_propery_09" x="97" y="581" width="19" height="19" />
<texture id="ui_wp_propery_10" x="97" y="600" width="19" height="19" />
<texture id="ui_wp_propery_11" x="116" y="524" width="19" height="19" />
<texture id="ui_wp_propery_12" x="116" y="543" width="19" height="19" />
<texture id="ui_wp_propery_13" x="116" y="562" width="19" height="19" />
<texture id="ui_wp_propery_14" x="116" y="581" width="19" height="19" />
<!-- armor - properties -->
<texture id="ui_am_propery_01" x="135" y="524" width="19" height="19" />
<texture id="ui_am_propery_02" x="135" y="543" width="19" height="19" />
<texture id="ui_am_propery_03" x="135" y="562" width="19" height="19" />
<texture id="ui_am_propery_04" x="135" y="581" width="19" height="19" />
<texture id="ui_am_propery_05" x="135" y="600" width="19" height="19" />
<texture id="ui_am_propery_06" x="154" y="524" width="19" height="19" />
<texture id="ui_am_propery_07" x="154" y="543" width="19" height="19" />
<texture id="ui_am_propery_08" x="154" y="562" width="19" height="19" />
<texture id="ui_am_propery_09" x="154" y="581" width="19" height="19" />
<texture id="ui_am_propery_10" x="154" y="600" width="19" height="19" />
<texture id="ui_am_propery_11" x="173" y="524" width="19" height="19" />
<!-- new wound_protection -->
<texture id="ui_am_prop_wound" x="78" y="505" width="19" height="19" />
<texture id="ui_am_prop_wound_minus" x="135" y="505" width="19" height="19" />
<!-- explosion -->
<texture id="ui_am_prop_explo" x="97" y="505" width="19" height="19" />
<texture id="ui_am_prop_explo_minus" x="154" y="505" width="19" height="19" />
<!-- new strike -->
<texture id="ui_am_prop_strike" x="116" y="505" width="19" height="19" />
<texture id="ui_am_prop_strike_minus" x="173" y="505" width="19" height="19" />
</file>
</w>
@@ -0,0 +1,3 @@
[z_beefs_nvgs]
mc_anm_time_1
torch_anm_time
@@ -0,0 +1,120 @@
-- Might want to extend this to track flags based on IDs since detectors have animations too
-- Likely overkill unless someone implements custom anims for them
FLAGS = {}
local active_flags = {}
-- Export: Flags
function get_flag(flag)
return active_flags[flag]
end
function set_flag(flag)
active_flags[flag] = true
end
function remove_flag(flag)
active_flags[flag] = nil
end
function add_flag(flag)
-- Exit early if it already exists
if FLAGS[flag] then return end
FLAGS[flag] = #FLAGS
end
local anim_mutators = {}
-- Export: Animation Mutators
function add_anim_mutator(functor, priority)
-- Add mutator func to list of mutators
table.insert(anim_mutators, {functor=functor, priority=priority})
-- Sort anim_mutators again
table.sort(anim_mutators, function(a,b) return a.priority < b.priority end)
end
function has_animation(section, anm)
local hud_section = ini_sys:r_string_ex(section,"hud") or section
return SYS_GetParam(0, hud_section, anm)
end
function mutate_anim(anm_table, anm_suffix, section)
local new_anm = anm_table.anm_name .. anm_suffix
if has_animation(section, new_anm) then
anm_table.anm_name = new_anm
return true
end
return false
end
-- Sounds
local sound_object_by_sec_by_path = {}
function get_safe_sound_object(path, sec)
assert(path, "path to sound file was nil")
assert(sec, "item section was nil")
if sound_object_by_sec_by_path[sec] == nil then
sound_object_by_sec_by_path[sec] = {}
end
local snd_obj = sound_object(path)
sound_object_by_sec_by_path[sec][path] = snd_obj
return snd_obj
end
function stop_all_sound_object(sec)
-- printf("stop_all_sound_object(sec): %s", sec)
for section, list in pairs(sound_object_by_sec_by_path) do
for path, v in pairs(list) do
if section == sec and v:playing() then
-- printf("sec: %s| Stopping: %s", sec, path)
v:stop()
end
end
sound_object_by_sec_by_path[sec] = nil
end
end
function get_sound_from_anm(anm_name) -- TODO: allow sound volume to be defined in config
return anm_name:gsub("anm_", "scripted_snd_")
end
-- Probably worth adding an ordered list of functions with conditions that can mutate anm_table
-- and use this script as source of truth for about-to-be-played animations since callback order is random between scripts
function actor_on_hud_animation_play(anm_table, item)
if not item then return end
stop_all_sound_object(item:section())
local section = item:section()
-- Execute each mutator functor in turn, ordered by priority
for i, mutator in ipairs(anim_mutators) do
local stop = mutator.functor(anm_table, item)
if stop then break end
end
-- Sound: Check if weapon has a valid scripted sound in config
local anm_name = anm_table.anm_name
local snd_name = get_sound_from_anm(anm_name)
local snd_value = SYS_GetParam(0, section, snd_name)
if not snd_value then return end
local snd_values = str_explode(snd_value,",")
local snd_path = snd_values[1]
local never_cancel = snd_values[2]
-- Play sound
local snd_obj = get_safe_sound_object( snd_path, item:section() )
if not snd_obj then return end
if never_cancel then
snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0, 1.0)
else
snd_obj:play(db.actor, 0, sound_object.s2d)
end
end
function on_game_start()
RegisterScriptCallback("actor_on_hud_animation_play",actor_on_hud_animation_play)
end
@@ -0,0 +1,156 @@
--[[ New Extensible RF Sources
MCM initialization script
Author: Catspaw (CatspawMods @ ModDB)
Source: https://www.moddb.com/mods/stalker-anomaly/addons/new-extensible-rf-sources/
Tweaked for redistribution with Devices of Anomaly Redone
--]]
item_radio.load_me = function() end
ui_rf_widget.load_me = function() end
function on_mcm_load()
-- Trap if another addon has overwritten item_radio.script
local nerfs_installed = item_radio and item_radio.script_version
local dar_installed = (dar_rf_noise ~= nil)
local headerstring = nerfs_installed and "header" or "loadfailed"
local headercolor = nerfs_installed and {220,220,220,220} or {255,255,0,0}
local headerimg = dar_installed and "ui_mcm_nerfs_main_headerimg_new" or "ui_mcm_nerfs_main_headerimg"
op = { id= "nerfs", gr={
{ id = "nerfmain", sh=true, gr={
{id = "headerimg", type = "slide", link = headerimg, size = {512,235}, spacing = 0},
{id = "header1", type = "desc", clr = headercolor, text = "ui_mcm_nerfs_nerfmain_"..headerstring.."1"},
{id = "header2", type = "desc", clr = headercolor, text = "ui_mcm_nerfs_nerfmain_"..headerstring.."2"},
{id = "max_freq", type = "track", val = 2, min = 300, max = 999, step = 1, def = 300},
{id = "enable_rrfr", type = "check", val = 1, def = false},
{id = "use_mwheel", type = "check", val = 1, def = true},
{id = "binaries", type = "desc", text = "ui_mcm_nerfs_nerfmain_binaries"},
{id = "header3", type = "desc", text = "ui_mcm_nerfs_scrolldown"},
{id = "debuglogs", type = "check", val = 1, def = false},
},
},
{ id = "nerfpresets", sh=true, gr={
{id = "headerimg", type = "slide", link = "ui_mcm_nerfs_presets_headerimg", size = {512,50}, spacing = 20},
{id = "header1", type = "desc", clr = {255,255,255,0}, text = "ui_mcm_nerfpresets_header1"},
{id = "header2", type = "desc", clr = {255,200,200,200}, text = "ui_mcm_nerfpresets_header2"},
{id = "preset1_freq", type = "input", val = 2, min = 1, max = 999, def = 1},
{id = "kb_preset1", type = "key_bind", val = 2, def = DIK_keys.DIK_1},
{id = "mk_preset1", 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 = "preset2_freq", type = "input", val = 2, min = 1, max = 999, def = 145},
{id = "kb_preset2", type = "key_bind", val = 2, def = DIK_keys.DIK_2},
{id = "mk_preset2", 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 = "preset3_freq", type = "input", val = 2, min = 1, max = 999, def = 300},
{id = "kb_preset3", type = "key_bind", val = 2, def = DIK_keys.DIK_3},
{id = "mk_preset3", 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 = "preset4_freq", type = "input", val = 2, min = 1, max = 999, def = 400},
{id = "kb_preset4", type = "key_bind", val = 2, def = DIK_keys.DIK_4},
{id = "mk_preset4", 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 = "preset5_freq", type = "input", val = 2, min = 1, max = 999, def = 500},
{id = "kb_preset5", type = "key_bind", val = 2, def = DIK_keys.DIK_5},
{id = "mk_preset5", 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 = "preset6_freq", type = "input", val = 2, min = 1, max = 999, def = 762},
{id = "kb_preset6", type = "key_bind", val = 2, def = DIK_keys.DIK_6},
{id = "mk_preset6", 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 = "preset7_freq", type = "input", val = 2, min = 1, max = 999, def = 810},
{id = "kb_preset7", type = "key_bind", val = 2, def = DIK_keys.DIK_7},
{id = "mk_preset7", 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 = "preset8_freq", type = "input", val = 2, min = 1, max = 999, def = 869},
{id = "kb_preset8", type = "key_bind", val = 2, def = DIK_keys.DIK_8},
{id = "mk_preset8", 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 = "preset9_freq", type = "input", val = 2, min = 1, max = 999, def = 915},
{id = "kb_preset9", type = "key_bind", val = 2, def = DIK_keys.DIK_9},
{id = "mk_preset9", 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"}
}},
},
},
},
}
local widgetmenu =
{ id = "nerfwidget", sh=true, gr={
{id = "headerimg", type = "slide", link = "ui_mcm_nerfs_widget_headerimg", size = {512,288}, spacing = 20},
{id = "header", type = "desc", text = "ui_mcm_nerfs_nerfwidget_header1"},
{id = "show", type = "check", val = 1, def = false},
{id = "header", type = "desc", text = "ui_mcm_nerfs_nerfwidget_headerxy"},
{id = "pos_x", type = "input", val = 2, min = 0, max = 1024, def = 491},
{id = "pos_y", type = "input", val = 2, min = 0, max = 768, def = 670},
{id = "header", type = "desc", text = "ui_mcm_nerfs_scrolldown"},
{id = "header", type = "desc", text = "ui_mcm_nerfs_nerfwidget_lo_header"},
{id = "lo_a", type = "input", val = 2, min = 0, max = 255, def = 255, hint = "nerfs_nerfwidget_clr_a"},
{id = "lo_r", type = "input", val = 2, min = 0, max = 255, def = 50, hint = "nerfs_nerfwidget_clr_r"},
{id = "lo_g", type = "input", val = 2, min = 0, max = 255, def = 50, hint = "nerfs_nerfwidget_clr_g"},
{id = "lo_b", type = "input", val = 2, min = 0, max = 255, def = 50, hint = "nerfs_nerfwidget_clr_b"},
{id = "header", type = "desc", text = "ui_mcm_nerfs_nerfwidget_hi_header"},
{id = "hi_a", type = "input", val = 2, min = 0, max = 255, def = 255, hint = "nerfs_nerfwidget_clr_a"},
{id = "hi_r", type = "input", val = 2, min = 0, max = 255, def = 50, hint = "nerfs_nerfwidget_clr_r"},
{id = "hi_g", type = "input", val = 2, min = 0, max = 255, def = 250, hint = "nerfs_nerfwidget_clr_g"},
{id = "hi_b", type = "input", val = 2, min = 0, max = 255, def = 50, hint = "nerfs_nerfwidget_clr_b"},
{id = "header", type = "desc", text = "ui_mcm_nerfs_nerfwidget_em_header"},
{id = "em_a", type = "input", val = 2, min = 0, max = 255, def = 128, hint = "nerfs_nerfwidget_clr_a"},
{id = "em_r", type = "input", val = 2, min = 0, max = 255, def = 200, hint = "nerfs_nerfwidget_clr_r"},
{id = "em_g", type = "input", val = 2, min = 0, max = 255, def = 0, hint = "nerfs_nerfwidget_clr_g"},
{id = "em_b", type = "input", val = 2, min = 0, max = 255, def = 0, hint = "nerfs_nerfwidget_clr_b"},
},
}
if ui_rf_widget then
-- Add the accessibility widget menu if that script is present
table.insert(op.gr,widgetmenu)
end
return op
end
@@ -0,0 +1,31 @@
-- Removes background noise from the draw & holster of the RF-Receiver
local debuglogs = false
no_sound_states = {
anm_show = true,
anm_show_fast = true,
anm_hide_fast = true,
anm_hide = true,
}
sound_currently_enabled = false
function actor_on_hud_animation_play(anm_table, item)
if not item then return end
local parent_section = SYS_GetParam(0, item:section(), "parent_section", item:section())
if not (parent_section == "detector_radio") then return end
sound_currently_enabled = no_sound_states[anm_table.anm_name] == nil
if debuglogs then printf("<DAR> sound_currently_enabled %s | item section %s | anm_name %s",sound_currently_enabled, parent_section, anm_table and anm_table.anm_name) end
end
local has_valid_device = item_radio.actor_has_valid_device
function item_radio.actor_has_valid_device(mba)
local valid_dev = has_valid_device(mba)
if debuglogs then printf("<DAR> sound_currently_enabled is %s | valid device %s",sound_currently_enabled,valid_dev) end
return sound_currently_enabled and valid_dev
end
function on_game_start()
RegisterScriptCallback("actor_on_hud_animation_play", actor_on_hud_animation_play)
end
@@ -0,0 +1,28 @@
-- Out of Battery Draw Script
function actor_on_hud_animation_play(anm_table, item)
if not item then return end
if not animation_common.has_animation(item:section(), "anm_show_dead") then return end
if anm_table.anm_name == "anm_show" and item:condition() <= 0.05 then
anm_table.anm_name = "anm_show_dead"
end
end
function actor_on_update()
local actor = db.actor
local det = actor:active_detector()
if (det and string.find(det:section(), "flashlight")) then return end
zz_glowstick_mcm.actor_on_update()
end
function on_game_start()
RegisterScriptCallback("actor_on_hud_animation_play", actor_on_hud_animation_play)
if (zz_glowstick_mcm ~= nil) then
UnregisterScriptCallback("actor_on_update", zz_glowstick_mcm.actor_on_update)
RegisterScriptCallback("actor_on_update", actor_on_update)
end
end
@@ -0,0 +1,43 @@
-- Script by Utjan for Barry's Detector Remodel and Reanimations
-- Table of detectors to handle, and which light bones to toggle
valid_detectors = {
["detector_simple"] = {["light_bone_1"] = true, ["light_bone_3"] = true},
["detector_advanced"] = {["light_bone_1"] = true, ["light_bone_2"] = true, ["screen_bone_1"] = true, ["screen_bone"] = true},
["detector_elite"] = {["light_bone_1"] = true, ["light_bone_2"] = true, ["light_bone_3"] = true, ["light_bone_4"] = true, ["light_bone_5"] = true, ["light_bone_6"] = true, ["light_bone_7"] = true, ["light_bone_8"] = true, ["light_bone_9"] = true, ["cover_power"] = true},
["detector_scientific"] = {["light_bone_1"] = true, ["light_bone_2"] = true, ["light_bone_3"] = true, ["light_bone_4"] = true, ["light_bone_5"] = true, ["light_bone_6"] = true, ["light_bone_7"] = true, ["light_bone_8"] = true, ["light_bone_9"] = true, ["cover_power"] = true},
["detector_radio"] = {["light_bone"] = true, ["light_bone.001"] = true, ["screen_bone"] = true},
["detector_anomaly"] = {["light_bone_1"] = true},
["detector_geiger"] = {["cover"] = true},
["device_flashlight"] = {["light_bone_1"] = true},
}
function on_game_start()
RegisterScriptCallback("actor_on_update", actor_on_update)
end
function actor_on_update()
local active_device = db.actor:active_detector()
if not active_device then return end
if active_device:get_state() == 2 then return end -- Thank you Lucy and Aoldri for this fix
local det_bones = valid_detectors[active_device:section()] or nil
if not det_bones then return end
if active_device:condition() <= 0.05 then
for bone_name, v in pairs(det_bones) do
if active_device:bone_visible(bone_name, true) then
active_device:set_bone_visible(bone_name, false, false, true)
--printf("Hidden bone " .. bone_name)
end
end
else
for bone_name, v in pairs(det_bones) do
if not active_device:bone_visible(bone_name, true) then
active_device:set_bone_visible(bone_name, true, false, true)
---printf("Shown bone " .. bone_name)
end
end
end
end
@@ -0,0 +1,10 @@
if not z_beefs_nvgs then return end
function actor_on_first_update()
z_beefs_nvgs.mc_anm_time_1 = game.get_motion_length("anim_mask_clean", "anm_hide_hand", 1.5) -- hardcoded since they're local and don't change in script at all anyways
z_beefs_nvgs.torch_anm_time = game.get_motion_length("anim_headlamp", "anm_switch", 1)
end
function on_game_start()
RegisterScriptCallback("actor_on_first_update", actor_on_first_update)
end
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,107 @@
local dosimeter_ui = nil
local workIndicatorTimer = 0
local updateTimer = 0
local updateFreq = 555 -- in milliseconds
class "ui_dosimeter" (CUIScriptWnd)
function ui_dosimeter:__init() super()
self:Show (true)
self:Enable (true)
local xml = CScriptXmlInit()
self.xml = xml
xml:ParseFile ("ui_dosimeter.xml")
xml:InitWindow ("dosimeter", 0, self)
self.m_wrk_area = xml:InitStatic("dosimeter:wrk_area", self)
self.m_seg1 = xml:InitStatic("dosimeter:seg1", self)
self.m_seg2 = xml:InitStatic("dosimeter:seg2", self)
self.m_seg3 = xml:InitStatic("dosimeter:seg3", self)
self.m_seg4 = xml:InitStatic("dosimeter:seg4", self)
-- self.m_workIndicator = xml:InitStatic("dosimeter:work", self)
end
function ui_dosimeter:__finalize()
dosimeter_ui = nil
end
function ui_dosimeter:Update()
CUIScriptWnd.Update(self)
local tg = time_global()
-- if (tg > workIndicatorTimer + 1000) then
-- workIndicatorTimer = tg
-- self.m_workIndicator:Show(not self.m_workIndicator:IsShown())
-- end
if (tg < updateTimer) then
return
else
updateTimer = tg + updateFreq
end
local rads = item_device.dosimeter_env_rads_mode and math.floor(level.get_env_rads()*2500) or math.floor(db.actor.radiation*10000*0.387)
-- Emissions: the closer the wave, the higher the psi influnces
if GetEvent("surge", "state") then
local surge_time = GetEvent("surge", "time") or 0
local val_glitch = (surge_time > 168) and normalize(surge_time, 220, 168) or normalize(surge_time, 20, 168)
rads = (rads + 500) * math.random(0.5, 10) * clamp(val_glitch,0,1)
-- Psi-storms: huge spike when a vortex hits the ground
elseif GetEvent("psi_storm", "state") then
if GetEvent("psi_storm", "vortex") then
rads = (rads + 1000) * math.random(0.7, 1.3)
else
rads = rads * math.random(0.9, 1.1)
end
end
local s_rads = tostring(rads)
local seg1, seg2, seg3, seg4
if (rads > 999) then
seg1 = strformat("green_%s", s_rads:sub(1, 1))
seg2 = strformat("green_%s", s_rads:sub(2, 2))
seg3 = strformat("green_%s", s_rads:sub(3, 3))
seg4 = strformat("green_%s", s_rads:sub(4, 4))
elseif (rads > 99) then
seg1 = "green_0"
seg2 = strformat("green_%s", s_rads:sub(1, 1))
seg3 = strformat("green_%s", s_rads:sub(2, 2))
seg4 = strformat("green_%s", s_rads:sub(3, 3))
elseif (rads > 9) then
seg1 = "green_0"
seg2 = "green_0"
seg3 = strformat("green_%s", s_rads:sub(1, 1))
seg4 = strformat("green_%s", s_rads:sub(2, 2))
elseif (rads > 0) then
seg1 = "green_0"
seg2 = "green_0"
seg3 = "green_0"
seg4 = strformat("green_%s", s_rads:sub(1, 1))
else
seg1 = "green_0"
seg2 = "green_0"
seg3 = "green_0"
seg4 = "green_0"
end
self.m_seg1:InitTextureEx(seg1, "hud\\p3d")
self.m_seg2:InitTextureEx(seg2, "hud\\p3d")
self.m_seg3:InitTextureEx(seg3, "hud\\p3d")
self.m_seg4:InitTextureEx(seg4, "hud\\p3d")
end
function get_UI()
if(dosimeter_ui==nil) then
dosimeter_ui = ui_dosimeter()
end
return dosimeter_ui
end
@@ -0,0 +1,116 @@
-- ======================================================================
--[[ RF accessibility widget
Author: Catspaw
Credits: based on code by RavenAscendant
-- ======================================================================
This file is required for the RF receiver accessibility widget
included with NERFS.
It takes no action of its own unless called, and will not conflict
with anything whatsoever--but if you don't need it, you can safely
delete this file without any ill effects to NERFS.
-- ===================================================================--]]
class "UIRFWidget" (CUIScriptWnd)
function UIRFWidget:__init(xmlfile,element,texture,pos) super()
self:InitControls(xmlfile,element,texture,pos)
RegisterScriptCallback("actor_on_net_destroy", self)
end
function UIRFWidget:__finalize()
end
function UIRFWidget:InitControls(xmlfile,element,texture,pos)
self.colors = {
em = {r = 200, g = 0, b = 0, a = 128},
lo = {r = 50, g = 50, b = 50, a = 255},
hi = {r = 50, g = 250, b = 50, a = 255},
}
local clr = self.colors
self.signal_pulse_fade = 10
self.int_alpha_loss_max = 0.5
self.pos = pos or {x=491,y=670}
self:SetAutoDelete(true)
self.xml = CScriptXmlInit()
self.xml:ParseFile(xmlfile or "rax_rf_indicator.xml")
self.indicator = self.xml:InitStatic(element or "indicator",self)
if texture then self.indicator:InitTexture(texture) end
self.indicator:SetTextureColor(GetARGB(clr.lo.a, clr.lo.r, clr.lo.g, clr.lo.b))
self.indicator:SetWndPos(vector2():set(self.pos.x, self.pos.y))
self.indicator:EnableHeading(true)
self:ShowIndicator(false)
end
function UIRFWidget:SetSignalColor(sigstr,colors)
if colors and self.colors[sigstr] then
self.colors[sigstr] = colors
end
end
function UIRFWidget:Destroy()
get_hud():RemoveDialogToRender(self)
end
function UIRFWidget:actor_on_net_destroy()
get_hud():RemoveDialogToRender(self)
end
function UIRFWidget:ShowIndicator(onoff)
self.indicator:Show(onoff)
end
function UIRFWidget:SetPos(x,y)
self.pos.x = x or self.pos.x
self.pos.y = y or self.pos.y
self.indicator:SetWndPos(vector2():set(self.pos.x, self.pos.y))
end
function UIRFWidget:SetIndicatorColor(signal, interference,emission, tg)
local tg_emission_noise = math.random(100,400)
local emission_str = 0
local colors = self.colors
local red = colors.lo.r
local green = colors.lo.g
local blue = colors.lo.b
local alpha = colors.lo.a
red = ((colors.lo.r + (colors.hi.r - colors.lo.r) * signal) + red * self.signal_pulse_fade) / (self.signal_pulse_fade + 1)
green = ((colors.lo.g + (colors.hi.g - colors.lo.g) * signal) + green * self.signal_pulse_fade) / (self.signal_pulse_fade + 1)
blue = ((colors.lo.b + (colors.hi.b - colors.lo.b) * signal) + blue * self.signal_pulse_fade) / (self.signal_pulse_fade + 1)
alpha = (((colors.lo.a + (colors.hi.a - colors.lo.a) * signal) - 255 * self.int_alpha_loss_max * interference) + alpha * self.signal_pulse_fade) / (self.signal_pulse_fade +1)
local clr = GetARGB(alpha,red,green,blue)
if emission then
if tg > tg_emission_noise then
emission_str = clamp(emission_str+ math.random(-0.1,0.2),0,1) or 0
tg_emission_noise = math.random(100,400)
end
local r = clamp(red + colors.em.r * emission_str, 0, 255)
local g = clamp(green + colors.em.g * emission_str, 0, 255)
local b = clamp(blue + colors.em.b * emission_str, 0, 255)
local a = clamp(alpha + colors.em.a * emission_str, 0, 255)
clr = GetARGB(a,r,g,b)
else
emission_str = 0
end
self.indicator:SetTextureColor(clr)
end
function UIRFWidget:Update()
if not db.actor then return end
CUIScriptWnd.Update(self)
end
@@ -0,0 +1,198 @@
-- Animation: Append with '_quick' for detectors if:
-- - weapon in main hand is reloading or unjamming
-- - player is climbing
-- - switching to PDA
-- - quick throwing grenades
-- - wiping mask
-- - toggling headlamp
-- - playing an FDDA animation
local common = animation_common
common.add_flag("QUICK_DETECTOR")
-- Flag to force _quick when hiding detectors
force_quick = false
-- Compatibility for FDDA: Use '_quick' if an FDDA animation is about to play
if enhanced_animations then
fdda_anim_prepare = enhanced_animations.anim_prepare
function enhanced_animations.anim_prepare()
force_quick = true
fdda_anim_prepare()
end
fdda_call_my_slot_back = enhanced_animations.call_my_slot_back
function enhanced_animations.call_my_slot_back()
local result = fdda_call_my_slot_back()
if result == true then
force_quick = false
end
return result
end
fdda_bp_call_my_slot_back = zzz_ea_addon_backpack.call_my_slot_back
function zzz_ea_addon_backpack.call_my_slot_back()
local result = fdda_bp_call_my_slot_back()
if result == true then
force_quick = false
end
return result
end
end
-- Switching to PDA (PDA keybind)
-- Beefs nvg switch
function on_key_press(dik)
local bind = dik_to_bind(dik)
-- Quickhide detector when switching on beefs nvgs
if z_beefs_nvgs and bind == key_bindings.kNIGHT_VISION and db.actor:active_detector() then
force_quick = true
return
end
-- PDA keybind
if bind ~= key_bindings.kACTIVE_JOBS then return end
-- Detector drawn
if not db.actor:active_detector() then return end
-- PDA equipped
if not db.actor:item_in_slot(8) then return end
force_quick = true
end
-- Switching to PDA (Map keybind)
function actor_on_first_update()
local activate_slot = db.actor.activate_slot
db.actor.activate_slot = function(self, slot_num)
if slot_num == 8 and db.actor:active_detector() then
force_quick = true
end
activate_slot(self, slot_num)
end
end
-- Toggling headlamp
local Hit_TorchToggle = actor_effects.Hit_TorchToggle
function actor_effects.Hit_TorchToggle()
-- Check if headlamp is equipped. No need for battery check
if (not actor_effects.allow_animation()) or (not item_device.can_toggle_torch()) then
return
end
force_quick = true
Hit_TorchToggle()
end
-- Wiping Mask
local Hit_MaskCleaning = actor_effects.Hit_MaskCleaning
function actor_effects.Hit_MaskCleaning()
-- Check if mask overlay is ON
if (not actor_effects.allow_animation()) or (not actor_effects.is_mask_on()) then
return
end
force_quick = true
Hit_MaskCleaning()
end
-- Quick throw grenade
local Hit_GrenadeQuickthrow = actor_effects.Hit_GrenadeQuickthrow
function actor_effects.Hit_GrenadeQuickthrow()
if (not actor_effects.allow_animation())
or (not db.actor:item_in_slot(4))
or db.actor:get_current_holder() ~= nil
then
return
end
force_quick = true
Hit_GrenadeQuickthrow()
end
---@param item game_object
local function is_item_valid(item)
-- valid if item is equipped detector
local player_detector = db.actor:active_detector()
if player_detector and item:id() == player_detector:id() then
return true
end
return false
end
---@param anm_table any
---@param item game_object
local function anm_quick_detector(anm_table, item)
-- cancel if parent is not player
local parent = item:parent()
if not parent then return end
if parent:id() ~= AC_ID then return end
-- cancel if not valid item
if not is_item_valid(item) then return end
-- Add 'quick' if previous anim was also quick (intended for holster-draw pairs)
if common.get_flag("QUICK_DETECTOR") then
if string.find(anm_table.anm_name, "show") then
common.mutate_anim(anm_table, "_quick", item:section())
end
common.remove_flag("QUICK_DETECTOR")
return
end
local is_state_valid = {
[4] = true, -- inspect
[7] = true, -- reload
[8] = true, -- misfire
}
-- Add 'quick' suffix if above conditions are fulfilled
local player_wpn = db.actor:active_item()
if (
string.find(anm_table.anm_name, "hide")
and (
player_wpn and is_state_valid[player_wpn:get_state()]
or IsMoveState("mcClimb")
or force_quick
)
) then
common.mutate_anim(anm_table, "_quick", item:section())
common.set_flag("QUICK_DETECTOR")
force_quick = false
end
end
common.add_anim_mutator(anm_quick_detector, 5)
-- Use anim mutator to hide detector during inspect animations (added by Utjan)
local inspected_wpn
---@param anm_table any
---@param item game_object
local function inspect_hides_detector(anm_table, item)
-- cancel if parent is not player
local parent = item:parent()
if not parent then return end
if parent:id() ~= AC_ID then return end
if string.find(anm_table.anm_name, "bore") then
local active_det = db.actor:active_detector()
if active_det then
active_det:switch_state(2)
inspected_wpn = item
end
elseif inspected_wpn and inspected_wpn:id() == item:id() then
inspected_wpn = nil
db.actor:show_detector(true)
end
end
common.add_anim_mutator(inspect_hides_detector, 6)
function on_game_start()
RegisterScriptCallback("actor_on_first_update", actor_on_first_update)
RegisterScriptCallback("on_key_press", on_key_press)
end
@@ -0,0 +1,110 @@
local common = animation_common
do_ammo_check_anim = nil
wpn_checking, det_active = nil
if ammo_check_mcm then
base_check_Ammo = ammo_check_mcm.check_Ammo
function ammo_check_mcm.check_Ammo()
if ammo_check_mcm.busy_hands_fix then
base_check_Ammo()
return
end
if ammo_check_mcm.actor_on_hud_animation_play then
printf("!Old mag check script (ammo_check_mcm) detected. Remove it to get full features of mag checks")
base_check_Ammo()
return
end
local weapon = db.actor:active_item()
-- ends if no weapon is in hand etc.
if (weapon == nil or (not IsWeapon(weapon)) or IsItem("fake_ammo_wpn", nil, weapon)) then
base_check_Ammo()
return
end
local currentState = weapon:get_state()
if not (currentState == 0 or weapon:weapon_in_grenade_mode()) then
base_check_Ammo()
return
end
-- if magazine weapon
local currentAmmo = weapon:get_ammo_in_magazine()
if (currentAmmo == nil) then
base_check_Ammo()
return
end
local anm_ammo_check = common.has_animation(weapon:section(), "anm_ammo_check")
if not anm_ammo_check then
base_check_Ammo()
return
end
if do_ammo_check_anim then return end -- If an ammo check is already happening, don't do anything
if ammo_check_mcm.busy_hands_fix ~= nil then -- If busy_hands_fix is unlocalized
local prev_hands_fix = ammo_check_mcm.busy_hands_fix
ammo_check_mcm.busy_hands_fix = true
base_check_Ammo()
ammo_check_mcm.busy_hands_fix = prev_hands_fix
else -- Else fall back to workaround
local prev_hands_fix = ui_mcm.get("rax_ammo_check/busy_hands_fix")
ui_mcm.set("rax_ammo_check/busy_hands_fix", true)
ammo_check_mcm.on_option_change()
base_check_Ammo()
ui_mcm.set("rax_ammo_check/busy_hands_fix", prev_hands_fix)
ammo_check_mcm.on_option_change()
end
do_ammo_check_anim = 1
weapon:switch_state(4)
det_active = db.actor:active_detector() or nil
if det_active then
det_active:switch_state(2)
end
--[[ CreateTimeEvent("mag_check", "mag_check_reset", 3, function()
do_ammo_check_anim = nil
return true
end) ]]
end
end
-- Catch the inspect weapon state switch and do the ammo check animation instead
function mag_check_animation(anm_table, obj)
if wpn_checking and obj and wpn_checking:id() == obj:id() and do_ammo_check_anim == 2 then
wpn_checking = nil
do_ammo_check_anim = nil
if det_active then
db.actor:show_detector(true)
end
det_active = nil
end
if do_ammo_check_anim == 1 and obj and obj:get_state() == 4 then
wpn_checking = obj
local is_supported, has_mag_data
if magazine_binder then
is_supported = magazine_binder.is_supported_weapon(obj:section())
has_mag_data = magazine_binder.get_mag_loaded(obj:id())
end
if is_supported and not has_mag_data and common.has_animation(obj:section(), "anm_ammo_check_no_mag") then
anm_table.anm_name = "anm_ammo_check_no_mag"
else
anm_table.anm_name = "anm_ammo_check"
end
do_ammo_check_anim = 2
end
end
if ammo_check_mcm and ammo_check_mcm.actor_on_hud_animation_play then
printf("!Old mag check script (ammo_check_mcm) detected. Remove it to get full features of mag checks")
else
common.add_anim_mutator(mag_check_animation, 0.1)
end
@@ -0,0 +1,7 @@
-- Script to remove the blinking light from the rf-receiver made by utjan
-- This fuction overwrites another one inside the item_radio.script
base_radio_update = item_radio.UI3D_RF.Update
function item_radio.UI3D_RF:Update()
base_radio_update(self)
self.m_led:Show(false)
end

Some files were not shown because too many files have changed in this diff Show More