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

126 lines
No EOL
4.4 KiB
Text

--' Ìåíòàëüíîå ñîñòîÿíèå òåëà
--' ìû óæå íàõîäèìñÿ â íåîáõîäèìîì ñîñòîÿíèè?
class "eva_state_mgr_mental" (property_evaluator)
function eva_state_mgr_mental:__init(name, st) super (nil, name)
self.st = st
end
function eva_state_mgr_mental:evaluate()
return (state_lib.states[self.st.target_state].mental == nil) or
(state_lib.states[self.st.target_state].mental == self.object:target_mental_state())
end
--' íóæíî ëè íàì áûòü â ñîñòîÿíèè FREE
class "eva_state_mgr_mental_free" (property_evaluator)
function eva_state_mgr_mental_free:__init(name, st) super (nil, name)
self.st = st
end
function eva_state_mgr_mental_free:evaluate()
return state_lib.states[self.st.target_state].mental == anim.free
end
--' íàõîäèìñÿ ëè ìû ñåé÷àñ âî FREE
class "eva_state_mgr_mental_free_now" (property_evaluator)
function eva_state_mgr_mental_free_now:__init(name, st) super (nil, name)
self.st = st
end
function eva_state_mgr_mental_free_now:evaluate()
return self.object:target_mental_state() == anim.free
end
--' íóæíî ëè íàì áûòü â ñîñòîÿíèè DANGER
class "eva_state_mgr_mental_danger" (property_evaluator)
function eva_state_mgr_mental_danger:__init(name, st) super (nil, name)
self.st = st
end
function eva_state_mgr_mental_danger:evaluate()
return state_lib.states[self.st.target_state].mental == anim.danger
end
--' íàõîäèìñÿ ëè ìû ñåé÷àñ â
class "eva_state_mgr_mental_danger_now" (property_evaluator)
function eva_state_mgr_mental_danger_now:__init(name, st) super (nil, name)
self.st = st
end
function eva_state_mgr_mental_danger_now:evaluate()
return self.object:target_mental_state() == anim.danger
end
--' íóæíî ëè íàì áûòü â ñîñòîÿíèè PANIC
class "eva_state_mgr_mental_panic" (property_evaluator)
function eva_state_mgr_mental_panic:__init(name, st) super (nil, name)
self.st = st
end
function eva_state_mgr_mental_panic:evaluate()
return state_lib.states[self.st.target_state].mental == anim.panic
end
--' íàõîäèìñÿ ëè ìû ñåé÷àñ â PANIC
class "eva_state_mgr_mental_panic_now" (property_evaluator)
function eva_state_mgr_mental_panic_now:__init(name, st) super (nil, name)
self.st = st
end
function eva_state_mgr_mental_panic_now:evaluate()
return self.object:target_mental_state() == anim.panic
end
--' Âêëþ÷àåì ñâîáîäíîå ñîñòîÿíèå
class "act_state_mgr_mental_free" (action_base)
function act_state_mgr_mental_free:__init(name) super (nil, name)
end
function act_state_mgr_mental_free:initialize()
action_base.initialize(self)
-- printf("BEFORE")
-- local sight_type = self.object:sight_params()
-- if sight_type.m_object ~= nil then
-- printf("@@@sight_obj %s", sight_type.m_object:id())
-- end
-- printf("@@@sight_vest %s %s %s", sight_type.m_vector.x, sight_type.m_vector.y, sight_type.m_vector.z)
-- printf("@@@sight_type %s", tostring(sight_type.m_sight_type))
self.object:set_mental_state(anim.free)
-- printf("AFTER")
local sight_type = self.object:sight_params()
if sight_type.m_object ~= nil then
-- printf("@@@sight_obj %s", sight_type.m_object:id())
end
-- printf("@@@sight_vest %s %s %s", sight_type.m_vector.x, sight_type.m_vector.y, sight_type.m_vector.z)
-- printf("@@@sight_type %s", tostring(sight_type.m_sight_type))
end
function act_state_mgr_mental_free:execute()
action_base.execute(self)
self.object:set_mental_state(anim.free)
end
function act_state_mgr_mental_free:finalize()
action_base.finalize(self)
end
--' Âêëþ÷àåì âîçáóæäåííîå ñîñòîÿíèå
class "act_state_mgr_mental_danger" (action_base)
function act_state_mgr_mental_danger:__init(name) super (nil, name)
end
function act_state_mgr_mental_danger:initialize()
action_base.initialize(self)
self.object:set_mental_state(anim.danger)
end
function act_state_mgr_mental_danger:execute()
action_base.execute(self)
self.object:set_mental_state(anim.danger)
end
function act_state_mgr_mental_danger:finalize()
action_base.finalize(self)
end
--' Âêëþ÷àåì ïàíè÷åñêîå ñîñòîÿíèå
class "act_state_mgr_mental_panic" (action_base)
function act_state_mgr_mental_panic:__init(name) super (nil, name)
end
function act_state_mgr_mental_panic:initialize()
action_base.initialize(self)
self.object:set_mental_state(anim.panic)
end
function act_state_mgr_mental_panic:execute()
action_base.execute(self)
self.object:set_mental_state(anim.panic)
end
function act_state_mgr_mental_panic:finalize()
action_base.finalize(self)
end