add game&rawdata
This commit is contained in:
parent
0133cd976c
commit
49b34b5546
45731 changed files with 709831 additions and 0 deletions
122
gamedata/scripts/sim_faction_brain_mutant.script
Normal file
122
gamedata/scripts/sim_faction_brain_mutant.script
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
--'******************************************************
|
||||
--'* Îáúåêò ãðóïïèðîâêè.
|
||||
--'******************************************************
|
||||
|
||||
-- Â äíåâíîå âðåìÿ ñòàðàåòñÿ äåðæàòüñÿ ñâîåãî ëîãîâà
|
||||
--  íî÷íîå âðåìÿ íàïàäàåò íà îòðÿäû ñòàëêåðîâ
|
||||
|
||||
class "faction_brain_mutant"
|
||||
function faction_brain_mutant:__init(faction)
|
||||
self.faction = faction
|
||||
|
||||
self.human = false
|
||||
self.use_issue_order = false
|
||||
self.use_cover_attack = false
|
||||
|
||||
if self.faction.player_name == "monster" then
|
||||
self.use_delay_attack = true
|
||||
self.use_prepare_phase = false
|
||||
else
|
||||
self.use_delay_attack = false
|
||||
self.use_prepare_phase = true
|
||||
end
|
||||
|
||||
self.use_counter_attack = false
|
||||
end
|
||||
|
||||
function faction_brain_mutant:calculate_current_expansion()
|
||||
local faction = self.faction
|
||||
--callstack()
|
||||
--printf("faction [%s] brain update %s", faction.player_name, relative_power)
|
||||
for k, expansion in pairs(faction.expansion_level) do
|
||||
--printf("check %s, current %s", k, faction.current_expansion_level)
|
||||
if faction.current_expansion_level > k then
|
||||
-- Åñëè ïðîâåðÿåìûé óðîâåíü ýêñïàíñèè íèæå, ÷åì òåêóùèé
|
||||
local cond_valid = xr_logic.pick_section_from_condlist(db.actor, self, expansion.precondition_cond) == "true"
|
||||
|
||||
-- Ïðîâåðÿåì âñå ëè óñëîâèÿ âûïîëíÿþòñÿ
|
||||
if not cond_valid then
|
||||
faction.current_expansion_level = k
|
||||
break
|
||||
end
|
||||
|
||||
elseif faction.current_expansion_level == k then
|
||||
-- Åñëè ïðîâåðÿåìûé óðîâåíü ðàâåí òåêóùåìó.
|
||||
-- Ïðîâåðÿåì, âñå ëè óñëîâèÿ âûïîëíÿþòñÿ.
|
||||
local cond_valid = xr_logic.pick_section_from_condlist(db.actor, self, expansion.precondition_cond) == "true"
|
||||
|
||||
if not cond_valid then
|
||||
-- Åñëè íå âûïîëíÿþòñÿ - ïðåêðàùàåì ðàáîòó öèêëà.
|
||||
break
|
||||
end
|
||||
else
|
||||
-- Åñëè ïðîâåðÿåìûé óðîâåíü âûøå òåêóùåãî.
|
||||
faction.current_expansion_level = k
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
self:calculate_expansion_targets()
|
||||
end
|
||||
--' Ïðîñ÷åò ìîçãîâ.
|
||||
function faction_brain_mutant:calculate_expansion_targets()
|
||||
local faction = self.faction
|
||||
faction.target_smart_value = {}
|
||||
|
||||
printf("faction [%s] brain update", faction.player_name)
|
||||
if faction.current_expansion_level == 0 then
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
-- if level.name() ~= nil then
|
||||
-- if (level.get_time_hours() >= 5 and level.get_time_hours() < 21) then
|
||||
-- self:register_day_point()
|
||||
-- else
|
||||
self:register_night_point()
|
||||
-- end
|
||||
-- end
|
||||
|
||||
--' Ñ÷èòàåì ìàêñèìàëüíûé ïîòîëîê îòðÿäîâ.
|
||||
faction:calculate_total_squads()
|
||||
-- Ðàçäàåì öåëè
|
||||
faction:calculate_squad_tasks()
|
||||
end
|
||||
-- Íî÷íîé âûáîð ðàáîò. Îõîòèìñÿ íà ñòàëêåðîâ
|
||||
function faction_brain_mutant:register_night_point()
|
||||
--printf("NIGHT")
|
||||
-- Èòåðèðóåìñÿ ïî ñìàðòàì, ãäå åñòü îòðÿäû - ÷åëîâåêè.
|
||||
for k,v in pairs(self.faction.board.smarts) do
|
||||
if v.smrt.player_name ~= "none" and self.faction.board.players[v.smrt.player_name].brain.human == true then
|
||||
-- Ïî êàæäîé òî÷êå ñîçäàåì çàäàíèå.
|
||||
self:register_target_point(v.smrt)
|
||||
end
|
||||
end
|
||||
end
|
||||
-- Äíåâíîé âûáîð ðàáîò. Òÿãîòååì ê ëîãîâó.
|
||||
function faction_brain_mutant:register_day_point()
|
||||
--printf("DAY")
|
||||
for k,v in pairs(self.faction.board.mutant_lair) do
|
||||
self:register_target_point(self.faction.board.smarts[k].smrt)
|
||||
end
|
||||
end
|
||||
|
||||
-- Ðåãèñòðèò òàðãåò ñìàðò. Ïðè ýòîì ìîæåò èçìåíèòü åãî êàïàñèòè
|
||||
function faction_brain_mutant:register_target_point(smart_obj)
|
||||
if not sim_board.is_point_avail(smart_obj, self.faction.player_name) then
|
||||
return
|
||||
end
|
||||
|
||||
local point_capacity = smart_obj.squad_capacity
|
||||
|
||||
if smart_obj.player_name == self.faction.player_name or smart_obj.player_name == "none" then
|
||||
-- Åñëè òî÷êà - ìåñòî ïîÿâëåíèÿ îòðÿäà, òî îñòàâëÿåì îêîøêî â 1, ÷òîáû ìîã ïîÿâèòüñÿ íîâûé îòðÿä.
|
||||
if smart_obj.respawn_sector ~= nil then
|
||||
point_capacity = point_capacity - 1
|
||||
end
|
||||
end
|
||||
-- Ñïåöèàëüíî óâåëè÷èâàåì êàïàñèòè, ÷òîáû äàæå åñëè â ëîãîâå íåò ìåñò - ìîíñòðû òÿãîòåëè ê ëîãîâó.
|
||||
self.faction.target_smart_value[smart_obj.id] = {smart = smart_obj, cap = 2*point_capacity, num = 0, smart_name = smart_obj:name(), smart_id = smart_obj.id}
|
||||
|
||||
--printf("register target point %s", smart_obj:name())
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue