add game&rawdata
This commit is contained in:
parent
0133cd976c
commit
49b34b5546
45731 changed files with 709831 additions and 0 deletions
121
gamedata/scripts/mob_jump.script
Normal file
121
gamedata/scripts/mob_jump.script
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
----------------------------------------------------------------------------------------------------
|
||||
-- Mob Jump
|
||||
----------------------------------------------------------------------------------------------------
|
||||
-- Ðàçðàáîò÷èê: Jim
|
||||
----------------------------------------------------------------------------------------------------
|
||||
|
||||
local STATE_START_LOOK = 1
|
||||
local STATE_WAIT_LOOK_END = 2
|
||||
local STATE_JUMP = 3
|
||||
|
||||
class "mob_jump"
|
||||
|
||||
----------------------------------------------------------------------------------------------------
|
||||
-- CONSTRUCTION SCHEME
|
||||
----------------------------------------------------------------------------------------------------
|
||||
function mob_jump:__init(obj, storage)
|
||||
self.object = obj
|
||||
self.st = storage
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------------------------
|
||||
-- RESET SCHEME
|
||||
----------------------------------------------------------------------------------------------------
|
||||
function mob_jump:reset_scheme()
|
||||
printf("Jump: reset_scheme: %s", self.object:name())
|
||||
xr_logic.mob_capture (self.object, true)
|
||||
|
||||
-- reset signals
|
||||
self.st.signals = {}
|
||||
|
||||
-- initialize jump point
|
||||
self.jump_path = nil
|
||||
if self.st.jump_path_name then
|
||||
self.jump_path = patrol(self.st.jump_path_name)
|
||||
else
|
||||
self.st.jump_path_name = "[not defined]"
|
||||
end
|
||||
|
||||
if not self.jump_path then
|
||||
abort("object '%s': unable to find jump_path '%s' on the map",
|
||||
self.object:name(), self.st.jump_path_name)
|
||||
end
|
||||
|
||||
|
||||
self.point = vector().add(self.jump_path:point(0), self.st.offset)
|
||||
|
||||
self.state_current = STATE_START_LOOK
|
||||
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------------------------
|
||||
-- UPDATE
|
||||
----------------------------------------------------------------------------------------------------
|
||||
|
||||
function mob_jump:update(delta)
|
||||
--[[
|
||||
if xr_logic.try_switch_to_another_section(self.object, self.st, db.actor) then
|
||||
return
|
||||
end
|
||||
]]
|
||||
if (self.state_current == STATE_START_LOOK) then
|
||||
if not self.object:action() then
|
||||
action( self.object,
|
||||
look(look.point, self.point),
|
||||
cond(cond.look_end)
|
||||
)
|
||||
|
||||
self.state_current = STATE_WAIT_LOOK_END
|
||||
end
|
||||
elseif (self.state_current == STATE_WAIT_LOOK_END) then
|
||||
if not self.object:action() then
|
||||
self.state_current = STATE_JUMP
|
||||
end
|
||||
end
|
||||
|
||||
if self.state_current == STATE_JUMP then
|
||||
self.object:jump(self.point, self.st.ph_jump_factor)
|
||||
self.st.signals["jumped"] = true
|
||||
xr_logic.mob_release(self.object)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------------------------------------------------------
|
||||
-- ADD_TO_BINDER
|
||||
----------------------------------------------------------------------------------------------------
|
||||
function add_to_binder(npc, ini, scheme, section, storage)
|
||||
printf("DEBUG: add_to_binder: npc:name()='%s', scheme='%s', section='%s'", npc:name(), scheme, section)
|
||||
|
||||
local new_action = mob_jump(npc, storage)
|
||||
|
||||
-- Çàðåãèñòðèðîâàòü âñå actions, â êîòîðûõ äîëæåí áûòü âûçâàí ìåòîä reset_scheme ïðè èçìåíåíèè íàñòðîåê ñõåìû:
|
||||
xr_logic.subscribe_action_for_events(npc, storage, new_action)
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------------------------
|
||||
-- SET_SCHEME
|
||||
----------------------------------------------------------------------------------------------------
|
||||
|
||||
function set_scheme(npc, ini, scheme, section, gulag_name)
|
||||
local storage = xr_logic.assign_storage_and_bind(npc, ini, scheme, section)
|
||||
|
||||
storage.logic = xr_logic.cfg_get_switch_conditions(ini, section, npc)
|
||||
|
||||
storage.jump_path_name = utils.cfg_get_string(ini, section, "path_jump", npc, false, gulag_name)
|
||||
storage.ph_jump_factor = utils.cfg_get_number(ini, section, "ph_jump_factor", npc, false, 1.8)
|
||||
|
||||
local offset_str = utils.cfg_get_string(ini, section, "offset", npc, true, "")
|
||||
printf( "offset_str=%s", offset_str )
|
||||
|
||||
local elems = parse_names(offset_str)
|
||||
printf( "elems = %s | %s | %s", tostring(elems[1]), tostring(elems[2]), tostring(elems[3]) )
|
||||
|
||||
storage.offset = vector():set(tonumber(elems[1]), tonumber(elems[2]), tonumber(elems[3]))
|
||||
|
||||
if not ini:line_exist( section, "on_signal" ) then
|
||||
utils.abort("Bad jump scheme usage! `on_signal` line must be specified")
|
||||
end
|
||||
end
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue