add game&rawdata
This commit is contained in:
parent
0133cd976c
commit
49b34b5546
45731 changed files with 709831 additions and 0 deletions
162
gamedata/scripts/se_actor.script
Normal file
162
gamedata/scripts/se_actor.script
Normal file
|
|
@ -0,0 +1,162 @@
|
|||
class "se_actor" (cse_alife_creature_actor)
|
||||
--------------------
|
||||
function se_actor:__init (section) super (section)
|
||||
self.m_registred = false
|
||||
self.start_position_filled = false
|
||||
end
|
||||
|
||||
function se_actor:on_register()
|
||||
cse_alife_creature_actor.on_register(self)
|
||||
story_objects.get_story_objects_registry():register(self.id, "actor", true)
|
||||
simulation_objects.get_sim_obj_registry():register(self)
|
||||
self.m_registred = true
|
||||
if not self.start_position_filled then
|
||||
sim_board.get_sim_board():fill_start_position()
|
||||
self.start_position_filled = true
|
||||
end
|
||||
end
|
||||
|
||||
function se_actor:on_unregister()
|
||||
cse_alife_creature_actor.on_unregister(self)
|
||||
unregister_story_object_by_id(self.id)
|
||||
simulation_objects.get_sim_obj_registry():unregister(self)
|
||||
end
|
||||
|
||||
--------------------
|
||||
function se_actor:STATE_Write(packet)
|
||||
cse_alife_creature_actor.STATE_Write(self, packet)
|
||||
-- if self.m_registred ~= true then
|
||||
-- return
|
||||
-- end
|
||||
set_save_marker(packet, "save", false, "se_actor")
|
||||
packet:w_bool(self.start_position_filled)
|
||||
-- story_objects.get_story_objects_registry():save(packet)
|
||||
set_save_marker(packet, "save", true, "se_actor")
|
||||
end
|
||||
--------------------
|
||||
function se_actor:STATE_Read(packet, size)
|
||||
cse_alife_creature_actor.STATE_Read(self, packet, size)
|
||||
-- ïîä LevelEditor íå ïûòàòüñÿ ÷èòàòü èç ïàêåòà íè÷åãî
|
||||
if editor() then
|
||||
return
|
||||
end
|
||||
-- if self.m_registred ~= true then
|
||||
-- return
|
||||
-- end
|
||||
if db.actor == nil then
|
||||
set_save_marker(packet, "load", false, "se_actor")
|
||||
self.start_position_filled = packet:r_bool()
|
||||
-- story_objects.get_story_objects_registry():load(packet)
|
||||
set_save_marker(packet, "load", true, "se_actor")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--***********************************************************************************************
|
||||
--* SIMULATION_TARGET_ACTOR *
|
||||
--***********************************************************************************************
|
||||
|
||||
-- Ïîëó÷èòü ïîçèöèþ, ëåâåë âåðòåêñ, ãåéì âåðòåêñ îáüåêòà.
|
||||
function se_actor:get_location()
|
||||
return self.position, self.m_level_vertex_id, self.m_game_vertex_id
|
||||
end
|
||||
|
||||
-- Äîñòèãíóò ëè ÿ îòðÿäîì âûáðàâøèì ìåíÿ êàê öåëü.
|
||||
function se_actor:am_i_reached(squad)
|
||||
return not level.object_by_id(self.id):alive()
|
||||
end
|
||||
|
||||
-- Âûçûâàåòñÿ 1 ðàç ïîñëå äîñòèæåíèÿ ìåíÿ îòðÿäîì âûáðàâøèì ìåíÿ êàê öåëü.
|
||||
function se_actor:on_after_reach(squad)
|
||||
--squad.current_target_id = squad.smart_id
|
||||
end
|
||||
|
||||
-- Âûçûâàåòñÿ 1 ðàç â ìîìåíò âûáîðà ìåíÿ êàê öåëè.
|
||||
function se_actor:on_reach_target(squad)
|
||||
squad:set_location_types()
|
||||
for k in squad:squad_members() do
|
||||
if db.offline_objects[k.id] ~= nil then
|
||||
db.offline_objects[k.id] = {}
|
||||
end
|
||||
end
|
||||
sim_board.get_sim_board():assign_squad_to_smart(squad, nil)
|
||||
end
|
||||
-- Âîçâðàùàåò CALifeSmartTerrainTask íà ìåíÿ, âûçûâàåòñÿ èç smart_terrain:task()
|
||||
function se_actor:get_alife_task()
|
||||
printf("Returning alife task for object [%s] game_vertex [%s] level_vertex [%s] position %s", self.id, self.m_game_vertex_id, self.m_level_vertex_id, vec_to_str(self.position))
|
||||
return CALifeSmartTerrainTask(self.m_game_vertex_id, self.m_level_vertex_id)
|
||||
end
|
||||
|
||||
local smarts_by_no_assault_zones = {
|
||||
["zat_a2_sr_no_assault"] = "zat_stalker_base_smart",
|
||||
["jup_a6_sr_no_assault"] = "jup_a6",
|
||||
["jup_b41_sr_no_assault"] = "jup_b41"
|
||||
}
|
||||
|
||||
function se_actor:sim_available()
|
||||
-- Ïðîâåðèòü íå íàõîäèòñÿ ëè èãðîê áëèæå ÷åì 50 ìåòðîâ ê ñìàðòó çàêðûòîìó äëÿ ñèìóëÿöèè.
|
||||
if smart_terrain.nearest_to_actor_smart.dist < 50
|
||||
and simulation_objects.get_sim_obj_registry().objects[smart_terrain.nearest_to_actor_smart.id] == nil then
|
||||
return false
|
||||
end
|
||||
for k,v in pairs (smarts_by_no_assault_zones) do
|
||||
local zone = db.zone_by_name[k]
|
||||
if zone and zone:inside(self.position) then
|
||||
local smart = sim_board.get_sim_board():get_smart_by_name(v)
|
||||
if smart and smart.base_on_actor_control ~= nil and smart.base_on_actor_control.status ~= smart_terrain_control.ALARM then
|
||||
return false
|
||||
end
|
||||
end
|
||||
end
|
||||
-- Ïðîâåðèòü íå íàõîäèòñÿ ëè èãðîê â ñåéôðåñòðèêòîðå ñìàðòà âî âðåìÿ òðåâîãè.
|
||||
if smart_terrain_control.current_smart_id == nil then
|
||||
return true
|
||||
end
|
||||
local smart = alife():object(smart_terrain_control.current_smart_id)
|
||||
if smart.base_on_actor_control ~= nil
|
||||
and smart.base_on_actor_control.status == smart_terrain_control.NORMAL
|
||||
and db.zone_by_name[smart.base_on_actor_control.noweap_zone]:inside(self.position) then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
local is_squad_monster =
|
||||
{
|
||||
["monster_predatory_day"] = true,
|
||||
["monster_predatory_night"] = true,
|
||||
["monster_vegetarian"] = true,
|
||||
["monster_zombied_day"] = true,
|
||||
["monster_zombied_night"] = true,
|
||||
["monster_special"] = true
|
||||
}
|
||||
|
||||
-- Ìîé ïðåêîíäèøí.
|
||||
function se_actor:target_precondition(squad)
|
||||
local squad_params = sim_board.simulation_activities[squad.player_id]
|
||||
if squad_params == nil or squad_params.actor == nil or squad_params.actor.prec(squad, self) == false then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
|
||||
--[[
|
||||
if squad.player_id == "killer" then
|
||||
return true
|
||||
end
|
||||
if is_squad_monster[squad.player_id] and in_time_interval(21, 8) and simulation_objects.sim_dist_to(squad, self) <= 900 then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
]]
|
||||
end
|
||||
|
||||
-- Ïîñ÷èòàòü ìîé ïðèîðèòåò äëÿ îòðÿäà.
|
||||
function se_actor:evaluate_prior(squad)
|
||||
return simulation_objects.evaluate_prior(self, squad)
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
--run_string xr_effects.teleport_squad(nil,nil,{"pri_a25_base_army_medic","pri_a16_pri_a25_medic_walk"})
|
||||
--run_string give_info("pl")
|
||||
Loading…
Add table
Add a link
Reference in a new issue