Divergent/mods/Fort Reanimation/gamedata/scripts/vks_custom.script

86 lines
3.2 KiB
Plaintext
Raw Normal View History

2024-03-17 20:18:03 -04:00
-- Original Script By Aoldri, Majorly fucked up my BarryBogs.
function play_sound_from_anm(anm_name, section, sound_name)
local snd_path = SYS_GetParam(0, section, sound_name or anm_name:gsub("anm_", "snd_".. section .. "_"), "$no_sound")
if snd_path and ini_sys:section_exist(snd_path) then
n = ini_sys:line_count(snd_path) or 0
for i=0,n-1 do
result, id, value = ini_sys:r_line_ex(snd_path,i,"","")
local snd_layer = xr_sound.get_safe_sound_object( value )
if snd_layer then
--snd_layer:play(db.actor, 0, sound_object.s2d)
--snd_layer:play_at_pos(db.actor,db.actor:position(),0,sound_object.s2d) -- sound_object.s3d?
utils_obj.play_sound(value)
end
end
elseif snd_path then
local snd_obj = xr_sound.get_safe_sound_object( snd_path )
if snd_obj then
snd_obj:play(db.actor, 0, sound_object.s2d)
--snd_obj:play_at_pos(db.actor,db.actor:position(),0,sound_object.s2d)
end
end
end
local valid_anms = {
["anm_shot_l"] = true,
["anm_shots"] = true,
}
function actor_on_hud_animation_play(anm_table, item)
--local item = db.actor:active_item()
if not item then return end
local parent_section = SYS_GetParam(0, item:section(), "parent_section", item:section())
-- printf("parent_section: " .. parent_section )
if parent_section and parent_section == "wpn_vssk" then
--printf("Vssk anm: " .. anm_table.anm_name)
if valid_anms[anm_table.anm_name] then
--printf("playsound")
play_sound_from_anm(anm_table.anm_name, parent_section)
end
if anm_table.anm_name == "anm_reload_misfire" and item:get_ammo_in_magazine() == 0 then
anm_table.anm_name = "anm_reload_misfire_empty" -- Switches animation to the misfire_empty
play_sound_from_anm(anm_table.anm_name, parent_section)
elseif anm_table.anm_name == "anm_reload_misfire" then
play_sound_from_anm(anm_table.anm_name, parent_section)
-- Play variations of anm_bore animations
elseif anm_table.anm_name == "anm_bore" then
local bore_anims = {}
table.insert(bore_anims, {anm = "anm_bore"})
table.insert(bore_anims, {anm = "anm_ammo_check", snd = "snd_ammo_check"})
local picked_anim = bore_anims[math.random(#bore_anims)]
if picked_anim.anm ~= "anm_bore" then
anm_table.anm_name = picked_anim.anm
play_sound_from_anm(anm_table.anm_name, parent_section, picked_anim.snd)
end
-- Play variations of anm_bore_empty animations
elseif anm_table.anm_name == "anm_bore_empty" then
local bore_anims = {}
table.insert(bore_anims, {anm = "anm_bore_empty"})
table.insert(bore_anims, {anm = "anm_ammo_check_empty", snd = "snd_ammo_check"})
local picked_anim = bore_anims[math.random(#bore_anims)]
if picked_anim.anm ~= "anm_bore_empty" then
anm_table.anm_name = picked_anim.anm
play_sound_from_anm(anm_table.anm_name, parent_section, picked_anim.snd)
end
end
end
end
function on_key_press(key)
local weapon = db.actor:active_item()
if key == DIK_keys.MOUSE_2 and arti_jamming and weapon and weapon:get_state() == 4 then
weapon:switch_state(0)
end
end
function on_game_start()
-- RegisterScriptCallback("actor_on_weapon_fired",actor_on_weapon_fired)
RegisterScriptCallback("actor_on_hud_animation_play",actor_on_hud_animation_play)
RegisterScriptCallback("on_key_press", on_key_press)
end