e4s-sdk/gamedata/scripts/outro_cond.script
2026-06-17 23:06:51 +03:00

222 lines
No EOL
5.4 KiB
Text

-- Preconditions for Outro of STALKER: Call Of Pripyat (see game_tutorials->outro_game)
-- 4a
function skadovsk_bad_cond()
return has_alife_info("kingpin_gained")
end
-- 4b
function skadovsk_good_cond()
return has_alife_info("one_of_the_lads_gained")
end
-- 4c
function skadovsk_neutral_cond()
return ( not has_alife_info("kingpin_gained") ) and ( not has_alife_info("one_of_the_lads_gained") )
end
-- 5a
function bloodsucker_live_cond()
return not has_alife_info("zat_b57_bloodsucker_lair_clear")
end
-- 5b
function bloodsucker_dead_cond()
return has_alife_info("zat_b57_bloodsucker_lair_clear")
end
-- 6a
function dolg_die_cond()
return has_alife_info("sim_freedom_help_harder")
end
-- 6b
function freedom_die_cond()
return has_alife_info("sim_duty_help_harder")
end
-- 6c
function dolg_n_freedom_cond()
return ( not has_alife_info("sim_freedom_help_harder") ) and ( not has_alife_info("sim_duty_help_harder") )
end
-- 7a
function scientist_good_cond()
return has_alife_info("research_man_gained")
end
-- 7b
function scientist_bad_cond()
return not has_alife_info("research_man_gained")
end
-- 8a
function garik_good_cond()
return has_alife_info("pri_a28_army_leaved_alive")
end
-- 8b
function garik_bad_cond()
return not has_alife_info("pri_a28_army_leaved_alive")
end
-- 9
function oasis_cond()
return has_alife_info("jup_b16_oasis_artefact_to_scientist")
end
-- 10
function mercenarys_cond()
return has_alife_info("pri_b35_task_running")
end
-- 11a
function yanov_good_cond()
return has_alife_info("mutant_hunter_achievement_gained")
end
-- 11b
function yanov_bad_cond()
return not has_alife_info("mutant_hunter_achievement_gained")
end
-- 12a
function zuluz_good_cond()
return has_alife_info("pri_b301_save_zulus_complete")
end
-- 12b
function zuluz_bad_cond()
return not has_alife_info("pri_b301_save_zulus_complete")
end
-- 13a
function vano_good_cond()
return has_alife_info("jup_a10_vano_agree_go_und") and has_alife_info("pri_a16_vano_was_alive_when_removed")
end
-- 13b
function vano_bad_cond()
return has_alife_info("jup_a10_vano_agree_go_und") and ( not has_alife_info("pri_a16_vano_was_alive_when_removed") )
end
-- 14a
function brodyaga_good_cond()
return has_alife_info("jup_b218_monolith_hired") and has_alife_info("pri_a16_wanderer_was_alive_when_removed")
end
-- 14b
function brodyaga_bad_cond()
return has_alife_info("jup_b218_monolith_hired") and ( not has_alife_info("pri_a16_wanderer_was_alive_when_removed") )
end
-- 15a
function sokolov_good_cond()
return has_alife_info("jup_b218_soldier_hired") and has_alife_info("pri_a28_sokolov_left_alive")
end
-- 15b
function sokolov_bad_cond()
return has_alife_info("jup_b218_soldier_hired") and ( not has_alife_info("pri_a28_sokolov_left_alive") )
end
-- 16
function sich_cond()
return has_alife_info("balance_advocate_gained")
end
-- 17
function noahs_ark_cond()
return has_alife_info("zat_b18_noah_met") and ( not has_alife_info("zat_b18_noah_dead") )
end
-- 18a
function kardan_good_cond()
return has_alife_info("zat_b44_tech_buddies_both_told")
end
-- 18b
function kardan_bad_cond()
return not has_alife_info("zat_b44_tech_buddies_both_told")
end
--19a
function strelok_live_cond()
return not has_alife_info("pri_a28_strelok_dead")
end
-- 19b
function strelok_die_cond()
return has_alife_info("pri_a28_strelok_dead")
end
-- 20a
function kovalski_live_cond()
return not has_alife_info("pri_a28_koval_dead")
end
-- 20b
function kovalski_die_cond()
return has_alife_info("pri_a28_koval_dead")
end
class "outro_sound"
function outro_sound:__init()
end
function outro_sound:start()
self.snd = sound_object("music\\outro")
self.snd:play (nil, 0.0, sound_object.s2d)
self:set_volume (1.0)
end
function outro_sound:stop()
self.snd:stop ()
end
function outro_sound:set_volume(vol)
self.snd.volume = vol
end
function start_bk_sound()
g_outro_sound = outro_sound()
g_outro_sound:start()
local hud = get_hud()
hud:AddCustomStatic("blackscreen", true)
xr_effects.disable_ui_only(db.actor, nil)
end
function stop_bk_sound()
if g_outro_sound ~= nil then
g_outro_sound:stop()
end
g_outro_sound = nil
xr_effects.game_disconnect()
xr_effects.game_credits()end
volume_max = 1.0
volume_min = 0.3
function calc_fade(factor, fade1_pos, fade2_pos, fade1_volume, fade2_volume)
local f = ((factor-fade1_pos)*(fade2_volume-fade1_volume))/(fade2_pos-fade1_pos) + fade1_volume
local min_vol = 0.0
local max_vol = 1.0
if fade1_volume > fade2_volume then
max_vol = fade1_volume
min_vol = fade2_volume
else
max_vol = fade2_volume
min_vol = fade1_volume
end
if f>max_vol then
f = max_vol
elseif f<min_vol then
f = min_vol
end
-- printf("%f - %f", factor, f)
return f
end
function update_bk_sound_fade_start(factor)
local start_pt = 0.6
local stop_pt = 1.0
f = calc_fade(factor, start_pt, stop_pt, volume_max, volume_min)
g_outro_sound:set_volume(f)
end
function update_bk_sound_fade_stop(factor)
local f = 1.0
if factor < 0.5 then
local start_pt = 0.0
local stop_pt = 0.12
f = calc_fade(factor, start_pt, stop_pt, volume_min, volume_max)
else
local start_pt2 = 0.7
local stop_pt2 = 0.95
f = calc_fade(factor, start_pt2, stop_pt2, volume_max, 0.0)
end
printf("%f - %f", factor, f)
g_outro_sound:set_volume(f)
end
function start_outro()
game.start_tutorial("outro_game")
end