add game&rawdata
This commit is contained in:
parent
0133cd976c
commit
49b34b5546
45731 changed files with 709831 additions and 0 deletions
179
gamedata/scripts/xr_abuse.script
Normal file
179
gamedata/scripts/xr_abuse.script
Normal file
|
|
@ -0,0 +1,179 @@
|
|||
----------------------------------------------------------------------------------------------------------------------
|
||||
-- Ñõåìà ðåàêöèè ñòàëêåðîâ íà íàäîåäàíèÿ èãðîêà
|
||||
-- àâòîð: Äèäåíêî Ðóñëàí (Stohe)
|
||||
-- TODO:
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------------------------------------------------------------------
|
||||
--Evaluators
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
--' Íóæíî ëè ïíóòü êîãî òî â ëèöî
|
||||
class "evaluator_abuse" (property_evaluator)
|
||||
function evaluator_abuse:__init(name, storage) super (nil, name)
|
||||
self.a = storage
|
||||
end
|
||||
function evaluator_abuse:evaluate()
|
||||
return self.a.abuse_manager:update()
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
--Actions
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
--' Óäàð â ëèöî
|
||||
class "action_abuse_hit" (action_base)
|
||||
function action_abuse_hit:__init (npc_name,action_name, storage, char_ini) super (nil, action_name)
|
||||
self.a = storage
|
||||
end
|
||||
function action_abuse_hit:initialize()
|
||||
action_base.initialize(self)
|
||||
-- self.object:set_node_evaluator()
|
||||
-- self.object:set_path_evaluator()
|
||||
self.object:set_desired_position()
|
||||
self.object:set_desired_direction()
|
||||
|
||||
state_mgr.set_state(self.object, "punch", nil, nil, {look_object = db.actor}, {animation = true})
|
||||
-- xr_sound.set_sound_play(self.object:id(), "use_abuse")
|
||||
self.hit_done = true --' xStream 02.2008
|
||||
end
|
||||
function action_abuse_hit:execute ()
|
||||
action_base.execute(self)
|
||||
end
|
||||
function action_abuse_hit:finalize ()
|
||||
action_base.finalize(self)
|
||||
end
|
||||
|
||||
class "CAbuseManager"
|
||||
function CAbuseManager:__init(npc, storage)
|
||||
self.npc = npc
|
||||
self.a = storage
|
||||
self.enable = true
|
||||
self.abuse_rate = 2
|
||||
self.abuse_value = 0
|
||||
self.abuse_threshold = 5
|
||||
self.last_update = nil
|
||||
self.hit_done = false --' xStream 02.2008
|
||||
end
|
||||
function CAbuseManager:SetAbuseRate(rate)
|
||||
self.abuse_rate = rate
|
||||
end
|
||||
function CAbuseManager:abused()
|
||||
return self.abuse_value >= self.abuse_threshold
|
||||
end
|
||||
function CAbuseManager:update()
|
||||
if self.last_update == nil then
|
||||
self.last_update = time_global()
|
||||
end
|
||||
if self.abuse_value > 0 then
|
||||
self.abuse_value = self.abuse_value - (time_global() - self.last_update)*0.00005
|
||||
else
|
||||
self.abuse_value = 0
|
||||
end
|
||||
--xStream 02.2008--
|
||||
if self.abuse_value > self.abuse_threshold*1.1 then
|
||||
self.abuse_value = self.abuse_threshold*1.1
|
||||
end
|
||||
|
||||
if self.hit_done and self.abuse_value < self.abuse_threshold*2/3 then
|
||||
self.hit_done = false
|
||||
end
|
||||
--end--
|
||||
self.last_update = time_global()
|
||||
|
||||
--printf("*ABUSE* %s [%s]", self.npc:name(), self.abuse_value)
|
||||
if self:abused() then
|
||||
return true
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
function CAbuseManager:addAbuse(value)
|
||||
if self.enable == true then
|
||||
self.abuse_value = self.abuse_value + value*self.abuse_rate
|
||||
end
|
||||
end
|
||||
function CAbuseManager:clearAbuse()
|
||||
self.abuse_value = 0
|
||||
end
|
||||
function CAbuseManager:disableAbuse()
|
||||
self.enable = false
|
||||
end
|
||||
function CAbuseManager:enableAbuse()
|
||||
self.enable = true
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
-- binder
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
function add_to_binder(object, char_ini, scheme, section, st)
|
||||
local operators = {}
|
||||
local properties = {}
|
||||
|
||||
local manager = object:motivation_action_manager()
|
||||
|
||||
properties["abuse"] = xr_evaluators_id.abuse_base
|
||||
properties["wounded"] = xr_evaluators_id.sidor_wounded_base
|
||||
|
||||
operators["abuse"] = xr_actions_id.abuse_base
|
||||
|
||||
-- Evaluators
|
||||
manager:add_evaluator (properties["abuse"], evaluator_abuse("evaluator_abuse", st))
|
||||
|
||||
-- Actions
|
||||
local action = action_abuse_hit(object:name(),"action_abuse_hit", st, char_ini)
|
||||
action:add_precondition (world_property(stalker_ids.property_alive, true))
|
||||
action:add_precondition (world_property(stalker_ids.property_danger,false))
|
||||
action:add_precondition (world_property(properties["wounded"], false))
|
||||
action:add_precondition (world_property(properties["abuse"], true))
|
||||
action:add_effect (world_property(properties["abuse"], false))
|
||||
manager:add_action (operators["abuse"], action)
|
||||
|
||||
action = manager:action (xr_actions_id.alife)
|
||||
action:add_precondition (world_property(properties["abuse"], false))
|
||||
|
||||
st.abuse_manager = CAbuseManager(object, st)
|
||||
end
|
||||
|
||||
|
||||
|
||||
------------
|
||||
-- Âûçûâàåòñÿ òîëüêî â íà÷àëå íà ÷òåíèè ëîãèêè, ñîçäàåò ýêøåíû, ýâàëóàòîðû è ïðîèçâîäèò
|
||||
-- ïåðâè÷íóþ íàñòðîéêó.
|
||||
function set_abuse(npc, ini, scheme, section)
|
||||
local st = xr_logic.assign_storage_and_bind(npc, ini, scheme, section)
|
||||
end
|
||||
-- Âûçûâàåòñÿ ïðè ïåðåêëþ÷åíèè íà íîâóþ ñåêöèþ. Ïðîèçâîäèò âû÷èòûâàíèå íàñòðîåê èç òåêóùåé ñåêöèè.
|
||||
function reset_abuse(npc, scheme, st, section)
|
||||
end
|
||||
|
||||
|
||||
function add_abuse(npc, value)
|
||||
local t = db.storage[npc:id()].abuse
|
||||
if t then
|
||||
t.abuse_manager:addAbuse(value)
|
||||
end
|
||||
end
|
||||
function clear_abuse(npc)
|
||||
local t = db.storage[npc:id()].abuse
|
||||
if t then
|
||||
t.abuse_manager:clearAbuse()
|
||||
end
|
||||
end
|
||||
function disable_abuse(npc)
|
||||
local t = db.storage[npc:id()].abuse
|
||||
if t then
|
||||
t.abuse_manager:disableAbuse()
|
||||
end
|
||||
end
|
||||
function enable_abuse(npc)
|
||||
local t = db.storage[npc:id()].abuse
|
||||
if t then
|
||||
t.abuse_manager:enableAbuse()
|
||||
end
|
||||
end
|
||||
function is_abuse(npc)
|
||||
local t = db.storage[npc:id()].abuse
|
||||
if t == nil then
|
||||
return false
|
||||
end
|
||||
return t.abuse_manager.enable
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue