SoC. Критическое ранение — S.T.A.L.K.E.R. Inside Wiki

SoC. Критическое ранение

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск

Эффект критического ранения ГГ в "Тень Чернобыля"

1. Создать файл effect_blood.script и записать следущее(желательно не закомментаривать):



lite_treshold = 0.05 ;насколько должно уменьшиться здоровье с предыдущего обновления чтоб экран окрасился в красный

crit_treshold = 0.30 ;насколько должно уменьшиться здоровье с предыдущего обновления чтоб ГГ начало шатать

drop_item_on_crit_prob = 0.20 ;вероятность того что ГГ выронит оружие

effector_power_coeff = 0.7

prev_health = -1

chk_h_t = 0

function wounded_pp_update()

 if (chk_h_t or 0) < time_global() then
   chk_h_t = time_global()+1000
   if prev_health > (db.actor.health + lite_treshold) then
     level.add_pp_effector("fire_hit.ppe", 2011, false)
     local effector_power = (prev_health - db.actor.health)*100*effector_power_coeff
     level.set_pp_effector_factor(2011, effector_power)
     if prev_health > db.actor.health + crit_treshold then
       level.add_cam_effector("camera_effects\\fusker.anm", 999, false, "")    
       local snd_obj = xr_sound.get_safe_sound_object(actor\pain_3)
       snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
       if math.random() < drop_item_on_crit_prob then
         local active_item = db.actor:active_item()
         if active_item and active_item:section() ~= "bolt" and active_item:section()~= "wpn_knife" then
           db.actor:drop_item(active_item)
         end
       end
     end
   end
   prev_health = db.actor.health
 end

end



2. Далее открываем bind_stalker.script: после строчек:

function actor_binder:update(delta)

 object_binder.update(self, delta)
 local time = time_global()
 game_stats.update (delta, self.object)

пишем: effect_blood.wounded_pp_update()

Другие места
LANGUAGE