add game&rawdata
This commit is contained in:
parent
0133cd976c
commit
49b34b5546
45731 changed files with 709831 additions and 0 deletions
146
gamedata/scripts/sr_postprocess.script
Normal file
146
gamedata/scripts/sr_postprocess.script
Normal file
|
|
@ -0,0 +1,146 @@
|
|||
--[[------------------------------------------------------------------------------------------------
|
||||
Çîíû ïñè-èçëó÷åíèÿ. Îòûãðûâàþò ïîñòïðîöåññ è ôàíòîìîâ ïî íàñòðîéêàì èç custom_data
|
||||
--------------------------------------------------------------------------------------------------]]
|
||||
|
||||
----------------------------------------------------------------------------------------------------
|
||||
-- Êëàññ, îòâå÷àþùèé çà ïîñòïðîöåññ è ôàíòîìîâ
|
||||
----------------------------------------------------------------------------------------------------
|
||||
-------------------
|
||||
class "PPEffector" (effector)
|
||||
-------------------
|
||||
function PPEffector:__init(id_number) super(id_number, 10000000)
|
||||
self.params = effector_params();
|
||||
end
|
||||
-------------------
|
||||
function PPEffector:process(pp)
|
||||
pp:assign (self.params);
|
||||
effector.process(self,pp);
|
||||
return true;
|
||||
end
|
||||
-------------------
|
||||
|
||||
|
||||
-------------------
|
||||
class "action_postprocess"
|
||||
-------------------
|
||||
function action_postprocess:__init (obj, storage)
|
||||
self.object = obj
|
||||
self.st = storage
|
||||
self.actor_inside = false
|
||||
end
|
||||
-------------------
|
||||
function action_postprocess:reset_scheme()
|
||||
self.actor_inside = false
|
||||
-- ----------------------------------------------------------------------------------------
|
||||
-- postprocess
|
||||
-- ----------------------------------------------------------------------------------------
|
||||
self.gray_amplitude = 1.0 -- gray max intensity [0.0-1.0]
|
||||
self.gray_color = color (0.5, 0.5, 0.5); -- RGB [0.0-1.0]
|
||||
self.base_color = color (0.5, 0.5, 0.5); -- RGB [0.0-1.0]
|
||||
self.noise_var = noise (0.9, 0.5, 30); -- intensity, grain, fps [0.0-1.0,0.0-1.0,1-100]
|
||||
self.eff_time = 0;
|
||||
self.hit_time = 0;
|
||||
self.intensity = 0;
|
||||
self.intensity_base = self.st.intensity
|
||||
self.hit_power = 0
|
||||
|
||||
if self.intensity_base < 0.0 then
|
||||
self.intensity_inertion = -self.st.intensity_speed;
|
||||
else
|
||||
self.intensity_inertion = self.st.intensity_speed;
|
||||
end
|
||||
|
||||
self.pp = PPEffector (self.object:id () + 2000);
|
||||
self.pp.params.noise = noise ();
|
||||
self.pp:start ();
|
||||
|
||||
self.gray = 1
|
||||
self.noise = noise (1.0, 0.3, 30)
|
||||
end
|
||||
-------------------
|
||||
function action_postprocess:deactivate()
|
||||
if self.state == state_inside then
|
||||
self.pp:finish ()
|
||||
level.set_snd_volume (self.snd_volume)
|
||||
self:zone_leave ()
|
||||
end
|
||||
end
|
||||
-------------------
|
||||
function action_postprocess:update (delta)
|
||||
if xr_logic.try_switch_to_another_section (self.object, self.st, db.actor) then
|
||||
return
|
||||
end
|
||||
|
||||
self.actor_inside = self.object:inside (db.actor:position ())
|
||||
local c_time = delta * 0.001
|
||||
|
||||
if self.actor_inside == true then
|
||||
self.intensity = self.intensity + self.intensity_inertion * c_time
|
||||
if self.intensity_base < 0.0 then
|
||||
if self.intensity < self.intensity_base then self.intensity = self.intensity_base end
|
||||
else
|
||||
if self.intensity > self.intensity_base then self.intensity = self.intensity_base end
|
||||
end
|
||||
else
|
||||
if self.intensity_base < 0.0 then
|
||||
self.intensity = self.intensity - self.intensity_inertion * c_time
|
||||
if self.intensity > 0.0 then self.intensity = 0.0 end
|
||||
else
|
||||
self.intensity = self.intensity - self.intensity_inertion * c_time
|
||||
if self.intensity < 0.0 then self.intensity = 0.0 end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
self.pp.params.color_base = self.base_color
|
||||
self.pp.params.color_gray = color (self.gray_color.r + self.intensity, self.gray_color.g + self.intensity, self.gray_color.b + self.intensity)--color (0.5 + self.base_color.r * self.intensity, 0.5 + self.base_color.g * self.intensity, 0.5 + self.base_color.b * self.intensity)
|
||||
self.pp.params.gray = self.gray_amplitude * self.intensity;
|
||||
self.pp.params.noise = noise (self.noise_var.intensity * self.intensity, self.noise_var.grain, self.noise_var.fps);
|
||||
self:update_hit (delta)
|
||||
end
|
||||
-------------------
|
||||
function action_postprocess:update_hit (delta)
|
||||
if self.actor_inside == false then
|
||||
self.hit_power = 0
|
||||
return
|
||||
end
|
||||
self.hit_power = self.hit_power + (delta * 0.001) * self.st.hit_intensity
|
||||
if time_global () - self.hit_time < 1000 then
|
||||
return
|
||||
end
|
||||
printf ("HIT POWER = %f", self.hit_power)
|
||||
self.hit_time = time_global ();
|
||||
local h = hit ();
|
||||
h.power = self.hit_power
|
||||
h.direction = vector ():set (0, 0, 0);
|
||||
h.impulse = 0;
|
||||
h.draftsman = db.actor;
|
||||
h.type = hit.radiation;
|
||||
db.actor:hit (h);
|
||||
|
||||
h.type = hit.shock
|
||||
db.actor:hit (h)
|
||||
|
||||
end
|
||||
-------------------
|
||||
|
||||
|
||||
|
||||
---------------------------------------------------------------------------------------------------------------------
|
||||
function add_to_binder(npc, ini, scheme, section, storage)
|
||||
|
||||
local new_action = action_postprocess (npc, storage)
|
||||
|
||||
-- Çàðåãèñòðèðîâàòü âñå actions, â êîòîðûõ äîëæåí áûòü âûçâàí ìåòîä reset_scheme ïðè èçìåíåíèè íàñòðîåê ñõåìû:
|
||||
xr_logic.subscribe_action_for_events(npc, storage, new_action)
|
||||
end
|
||||
---------------------------------------------------------------------------------------------------------------------
|
||||
function set_scheme(npc, ini, scheme, section, gulag_name)
|
||||
local st = xr_logic.assign_storage_and_bind(npc, ini, scheme, section)
|
||||
st.logic = xr_logic.cfg_get_switch_conditions(ini, section, npc)
|
||||
|
||||
st.intensity = utils.cfg_get_number (ini, section, "intensity", npc, true) * 0.01
|
||||
st.intensity_speed = utils.cfg_get_number (ini, section, "intensity_speed", npc, true) * 0.01
|
||||
st.hit_intensity = utils.cfg_get_number (ini, section, "hit_intensity", npc, true)
|
||||
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue