add game&rawdata

This commit is contained in:
Vasily Petrov 2026-06-17 23:06:51 +03:00
parent 0133cd976c
commit 49b34b5546
45731 changed files with 709831 additions and 0 deletions

View file

@ -0,0 +1,130 @@
----------------------------------------------------------------------------------------------------
-- Mob Home
----------------------------------------------------------------------------------------------------
-- Ðàçðàáîò÷èê: Jim
----------------------------------------------------------------------------------------------------
local def_min_radius = 10
local def_mid_radius = 20
local def_max_radius = 70
class "mob_home"
----------------------------------------------------------------------------------------------------
-- CONSTRUCTION SCHEME
----------------------------------------------------------------------------------------------------
function mob_home:__init(obj, storage)
self.object = obj
self.st = storage
end
----------------------------------------------------------------------------------------------------
-- RESET SCHEME
----------------------------------------------------------------------------------------------------
function mob_home:reset_scheme()
printf("DEBUG: reset_scheme: npc:name()='%s'", self.object:name())
--[[
Äîáàâëåíî: Haron
Îïèñàíèå: Òåïåðü ìîæíî çàäàâàòü ðàäèóñû home_min_radius è home_max_radius âî ôëàãàõ
ïóòè path_home. Äëÿ ýòîãî ââåäåíû ôëàãè minr, maxr. Îíè äîëæíû áûòü
ïðîïèñàíû â ïåðâîé òî÷êå ïóòè. Ó ðàäèóñîâ çàäàíûõ â ñåêöèè ïðèîðèòåò
áîëüøèé ÷åì äëÿ òåõ ÷òî çàäàíû âî ôëàãàõ, ò.å. åñëè çàäàíî è òàì è òàì, òî
áåðóòñÿ çíà÷åíèÿ èç ñåêöèè (ñäåëàíî äëÿ îáðàòíîé ñîâìåñòèìîñòè).
--]]
mob_state_mgr.set_state (self.object, db.actor, self.st.state)
local minr, maxr, midr = def_min_radius, def_max_radius, def_mid_radius
local ptr
local path_info
local r = 0
if self.st.home ~= nil then
ptr = patrol(self.st.home)
path_info = utils.parse_waypoint_data(self.st.home, ptr:flags(0), ptr:name(0))
end
if self.st.home_min_radius then
minr = self.st.home_min_radius
else
r = path_info.minr
if r then
r = tonumber(r)
if r then
minr = r
end
end
end
if self.st.home_max_radius then
maxr = self.st.home_max_radius
else
r = path_info.maxr
if r then
r = tonumber(r)
if r then
maxr = r
end
end
end
-- check min and max radius
if minr > maxr then
abort("Mob_Home : Home Min Radius MUST be < Max Radius. Got: min radius = %d, max radius = %d.", minr, maxr)
end
--printf("DEBUG: reset_scheme: [%s] setting home path [%s]", self.object:name(), self.st.home)
if self.st.home_mid_radius then
midr = self.st.home_mid_radius
if midr <= minr or midr >= maxr then
midr = minr + (maxr - minr)/2
end
else
midr = minr + (maxr - minr)/2
end
if self.st.gulag_point then
local smrttrn = alife():object(alife():object(self.object:id()).m_smart_terrain_id)
local lvid = smrttrn and smrttrn.m_level_vertex_id
self.object:set_home(lvid, minr, maxr, self.st.aggressive, midr)
else
self.object:set_home(self.st.home, minr, maxr, self.st.aggressive, midr)
end
--self.object:set_home(self.st.home, minr, maxr, self.st.aggressive)
end
----------------------------------------------------------------------------------------------------
-- UPDATE
----------------------------------------------------------------------------------------------------
function mob_home:update(delta)
end
function mob_home:deactivate()
self.object:remove_home()
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_home(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)
--printf("DEBUG: set_scheme: npc:name()='%s', scheme='%s', section='%s', gulag_name='%s'", npc:name(), 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.state = mob_state_mgr.get_state (ini, section, npc)
storage.home = utils.cfg_get_string (ini, section, "path_home", npc, false, gulag_name,nil)
storage.gulag_point = utils.cfg_get_bool (ini, section, "gulag_point", npc, false, false)
storage.home_min_radius = utils.cfg_get_number (ini, section, "home_min_radius", npc, false) --, 20)
storage.home_mid_radius = utils.cfg_get_number (ini, section, "home_mid_radius", npc, false) --, 0)
storage.home_max_radius = utils.cfg_get_number (ini, section, "home_max_radius", npc, false) --, 40)
storage.aggressive = utils.cfg_get_bool (ini, section, "aggressive", npc, false, false)
end