add game&rawdata
This commit is contained in:
parent
0133cd976c
commit
49b34b5546
45731 changed files with 709831 additions and 0 deletions
120
gamedata/scripts/smart_terrain_control.script
Normal file
120
gamedata/scripts/smart_terrain_control.script
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
-- Ñîñòîÿíèå ñìàðòòåððåéíà
|
||||
-- Ìîæåò áûòü òðåõ âèäîâ: normal, danger, alarm
|
||||
-- normal - âñå êàê îáû÷íî, áåç îãðàíè÷åíèé
|
||||
-- danger - â çîíå êîíòðîëÿ íàõîäèòñÿ èãðîê ñ îðóæèåì. Íóæíî çàïåðåòü äâåðè è ïðåäëîæèòü åìó óáèðàòüñÿ
|
||||
-- alarm - èãðîê àòàêîâàë ñìàðò. Íóæíî çàïåðåòü äâåðè è ïîäîæäàòü âðåìÿ.
|
||||
|
||||
NORMAL = 0
|
||||
DANGER = 1
|
||||
ALARM = 2
|
||||
|
||||
current_smart_id = nil
|
||||
|
||||
local ALARM_TIME = 2*60*60
|
||||
|
||||
|
||||
class "CBaseOnActorControl"
|
||||
function CBaseOnActorControl:__init(smart, ini, section)
|
||||
|
||||
self.noweap_zone = utils.cfg_get_string(ini, section, "noweap_zone", self, true, "")
|
||||
self.ignore_zone = utils.cfg_get_string(ini, section, "ignore_zone", self, false, "")
|
||||
|
||||
self.alarm_start_sound = xr_logic.parse_condlist(smart, section, "alarm_start_sound", utils.cfg_get_string(ini, section, "alarm_start_sound", self, false, "") )
|
||||
self.alarm_stop_sound = xr_logic.parse_condlist(smart, section, "alarm_stop_sound", utils.cfg_get_string(ini, section, "alarm_stop_sound", self, false, "") )
|
||||
|
||||
self.smart = smart
|
||||
|
||||
self.status = NORMAL
|
||||
end
|
||||
|
||||
function CBaseOnActorControl:update()
|
||||
--printf("%s alarm status [%s]", self.smart:name(), self.status)
|
||||
|
||||
if self.status == ALARM then
|
||||
if game.get_game_time():diffSec(self.alarm_time) < ALARM_TIME then
|
||||
--printf("TIME %s", game.get_game_time():diffSec(self.alarm_time))
|
||||
return
|
||||
end
|
||||
|
||||
local sound = xr_logic.pick_section_from_condlist(db.actor, self.smart, self.alarm_stop_sound)
|
||||
--printf("SOUND = %s", tostring(sound))
|
||||
--' Îçâó÷êà íà êîíåö àòàêè
|
||||
if sound ~= nil then
|
||||
xr_sound.set_sound_play(db.actor:id(), sound)
|
||||
end
|
||||
|
||||
for squad_id,squad in pairs(sim_board.get_sim_board().smarts[self.smart.id].squads) do
|
||||
game_relations.set_squad_goodwill(squad_id, "neutral")
|
||||
end
|
||||
end
|
||||
|
||||
if self:get_actor_treat() == true then
|
||||
self.status = DANGER
|
||||
else
|
||||
self.status = NORMAL
|
||||
end
|
||||
end
|
||||
|
||||
-- Âîçâðàùàåò ñòàòóñ óãðîæàåò ëè èãðîê ñìàðòó èëè íåò (íàõîäèòñÿ ëè ñ îðóæèåì â ïðåäåëàõ íîâåàïîí çîíû).
|
||||
function CBaseOnActorControl:get_actor_treat()
|
||||
local zone = db.zone_by_name[self.noweap_zone]
|
||||
if zone == nil then
|
||||
return false
|
||||
end
|
||||
|
||||
if not zone:inside(db.actor:position()) then
|
||||
if current_smart_id == self.smart.id then
|
||||
current_smart_id = nil
|
||||
end
|
||||
return false
|
||||
else
|
||||
current_smart_id = self.smart.id
|
||||
end
|
||||
|
||||
if isWeapon(db.actor:active_item()) then
|
||||
return true
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
-- Óñòàíàâëèâàåò, ÷òî èãðîê àòàêîâàë ñìàðò
|
||||
function CBaseOnActorControl:actor_attack()
|
||||
|
||||
if self.status ~= ALARM then
|
||||
local sound = xr_logic.pick_section_from_condlist(db.actor, self.smart, self.alarm_start_sound)
|
||||
--' Îçâó÷êà íà íà÷àëî àòàêè.
|
||||
if sound ~= nil then
|
||||
xr_sound.set_sound_play(db.actor:id(), sound)
|
||||
end
|
||||
for squad_id,squad in pairs(sim_board.get_sim_board().smarts[self.smart.id].squads) do
|
||||
game_relations.set_squad_goodwill(squad_id, "enemy")
|
||||
end
|
||||
end
|
||||
self.status = ALARM
|
||||
self.alarm_time = game.get_game_time()
|
||||
end
|
||||
|
||||
function CBaseOnActorControl:get_status()
|
||||
return self.status
|
||||
end
|
||||
|
||||
-- ÍÅ ÇÀÁÛÒÜ ÑÅÉÂ ËÎÀÄ
|
||||
function CBaseOnActorControl:save(packet)
|
||||
set_save_marker(packet, "save", false, "CBaseOnActorControl")
|
||||
|
||||
packet:w_u8(self.status)
|
||||
utils.w_CTime(packet, self.alarm_time)
|
||||
|
||||
set_save_marker(packet, "save", true, "CBaseOnActorControl")
|
||||
end
|
||||
|
||||
|
||||
function CBaseOnActorControl:load(packet)
|
||||
set_save_marker(packet, "load", false, "CBaseOnActorControl")
|
||||
|
||||
self.status = packet:r_u8()
|
||||
self.alarm_time = utils.r_CTime(packet)
|
||||
|
||||
set_save_marker(packet, "load", true, "CBaseOnActorControl")
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue