176 lines
6.6 KiB
Text
176 lines
6.6 KiB
Text
--'*************************************************************************************
|
|
--' Функторы тайтла и описания квеста (должны возвращать строку)
|
|
--'*************************************************************************************
|
|
|
|
function condlist(id, field, p, cached_condlist) -- MTB-marek.siemieniuk: cached condlist
|
|
local cond_string = p
|
|
|
|
-- MTB-marek.siemieniuk Start: cached condlist
|
|
local parsed_condlist = cached_condlist[cond_string];
|
|
if parsed_condlist == nil then
|
|
parsed_condlist = xr_logic.parse_condlist(nil, "task", "task_condlist", cond_string)
|
|
cached_condlist[cond_string] = parsed_condlist
|
|
end
|
|
-- MTB-marek.siemieniuk End
|
|
|
|
return xr_logic.pick_section_from_condlist(get_story_object("actor"), nil, parsed_condlist)
|
|
end
|
|
|
|
function zat_b29_adv_title(id, field, p, cached_condlist) -- MTB-marek.siemieniuk: cached condlist
|
|
local actor = get_story_object("actor")
|
|
for i = 16, 23 do
|
|
if (has_alife_info(dialogs_zaton.zat_b29_infop_bring_table[i]) and actor:object(dialogs_zaton.zat_b29_af_table[i])) then
|
|
title = "zat_b29_simple_bring_title_"..i
|
|
break
|
|
elseif has_alife_info(dialogs_zaton.zat_b29_infop_bring_table[i]) then
|
|
title = "zat_b29_simple_find_title_"..i
|
|
break
|
|
end
|
|
end
|
|
|
|
return title
|
|
end
|
|
|
|
function zat_b29_adv_descr(id, field, p, cached_condlist) -- MTB-marek.siemieniuk: cached condlist
|
|
local descr
|
|
local f_af = 0
|
|
local actor = get_story_object("actor")
|
|
|
|
for i = 16, 23 do
|
|
if (has_alife_info(dialogs_zaton.zat_b29_infop_bring_table[i]) and actor:object(dialogs_zaton.zat_b29_af_table[i])) then
|
|
f_af = 1
|
|
descr = "zat_b29_simple_bring_text_5"
|
|
if has_alife_info("zat_b29_stalker_rival_1_found_af") and has_alife_info("zat_b29_first_rival_taken_out") and f_af ~= 0 then
|
|
return descr
|
|
elseif has_alife_info("zat_b29_stalker_rival_2_found_af") and has_alife_info("zat_b29_second_rival_taken_out") and f_af ~= 0 then
|
|
return descr
|
|
elseif has_alife_info("zat_b29_linker_take_af_from_rival") then
|
|
descr = "zat_b29_simple_bring_text_4"
|
|
elseif has_alife_info("zat_b29_stalkers_rivals_found_af") then
|
|
descr = "zat_b29_simple_bring_text_3"
|
|
elseif has_alife_info("zat_b29_rivals_search") and has_alife_info("zat_b29_exclusive_conditions") then
|
|
descr = "zat_b29_simple_bring_text_1"
|
|
elseif has_alife_info("zat_b29_rivals_search") then
|
|
descr = "zat_b29_simple_bring_text_2"
|
|
end
|
|
break
|
|
elseif has_alife_info(dialogs_zaton.zat_b29_infop_bring_table[i]) then
|
|
descr = "zat_b29_simple_find_text_5"
|
|
if has_alife_info("zat_b29_stalker_rival_1_found_af") and has_alife_info("zat_b29_first_rival_taken_out") and f_af ~= 0 then
|
|
return descr
|
|
elseif has_alife_info("zat_b29_stalker_rival_2_found_af") and has_alife_info("zat_b29_second_rival_taken_out") and f_af ~= 0 then
|
|
return descr
|
|
elseif has_alife_info("zat_b29_linker_take_af_from_rival") then
|
|
descr = "zat_b29_simple_find_text_4"
|
|
elseif has_alife_info("zat_b29_stalkers_rivals_found_af") then
|
|
descr = "zat_b29_simple_find_text_3"
|
|
elseif has_alife_info("zat_b29_rivals_search") and has_alife_info("zat_b29_exclusive_conditions") then
|
|
descr = "zat_b29_simple_find_text_1"
|
|
elseif has_alife_info("zat_b29_rivals_search") then
|
|
descr = "zat_b29_simple_find_text_2"
|
|
end
|
|
break
|
|
end
|
|
end
|
|
|
|
return descr
|
|
end
|
|
|
|
function surge_task_title(id, field, p, cached_condlist) -- MTB-marek.siemieniuk: cached condlist
|
|
if(surge_manager.actor_in_cover()) then
|
|
return "hide_from_surge_name_2"
|
|
else
|
|
return "hide_from_surge_name_1"
|
|
end
|
|
end
|
|
|
|
function surge_task_descr(id, field, p, cached_condlist) -- MTB-marek.siemieniuk: cached condlist
|
|
return surge_manager.get_task_descr()
|
|
end
|
|
--'*************************************************************************************
|
|
--' Функторы цели квеста (должны возвращать id персонажа)
|
|
--'*************************************************************************************
|
|
|
|
function target_condlist(id, field, p, cached_condlist) -- MTB-marek.siemieniuk: cached condlist
|
|
local cond_string = p
|
|
|
|
-- MTB-marek.siemieniuk Start: cached condlist
|
|
local parsed_condlist = cached_condlist[cond_string];
|
|
if parsed_condlist == nil then
|
|
parsed_condlist = xr_logic.parse_condlist(nil, "task", "task_condlist", cond_string)
|
|
cached_condlist[cond_string] = parsed_condlist
|
|
end
|
|
-- MTB-marek.siemieniuk End
|
|
|
|
local value = xr_logic.pick_section_from_condlist(get_story_object("actor"), nil, parsed_condlist)
|
|
|
|
if value == nil then
|
|
return nil
|
|
end
|
|
|
|
local target_obj_id = get_story_object_id(value)
|
|
|
|
if target_obj_id == nil then
|
|
-- abort("There is no object with story_id %s", value)
|
|
end
|
|
|
|
return target_obj_id
|
|
end
|
|
|
|
function zat_b29_adv_target(id, field, p, cached_condlist) -- MTB-marek.siemieniuk: cached condlist
|
|
local target_obj_id = "zat_a2_stalker_barmen"
|
|
local af = nil
|
|
local actor = get_story_object("actor")
|
|
|
|
|
|
for i = 16, 23 do
|
|
if (has_alife_info(dialogs_zaton.zat_b29_infop_bring_table[i])
|
|
and actor:object(dialogs_zaton.zat_b29_af_table[i])) then
|
|
af = dialogs_zaton.zat_b29_af_table[i]
|
|
break
|
|
end
|
|
end
|
|
|
|
if (not has_alife_info("zat_b29_linker_take_af_from_rival") and has_alife_info("zat_b29_stalkers_rivals_found_af")) then
|
|
if has_alife_info("zat_b29_stalker_rival_1_found_af") then
|
|
if not has_alife_info("zat_b29_first_rival_taken_out") then
|
|
if has_alife_info("zat_b29_exclusive_conditions") then
|
|
target_obj_id = "zat_b29_stalker_rival_1"
|
|
else
|
|
target_obj_id = "zat_b29_stalker_rival_default_1"
|
|
end
|
|
elseif af == nil then
|
|
if has_alife_info("zat_b29_exclusive_conditions") then
|
|
target_obj_id = "zat_b29_stalker_rival_1"
|
|
else
|
|
target_obj_id = "zat_b29_stalker_rival_default_1"
|
|
end
|
|
end
|
|
elseif has_alife_info("zat_b29_stalker_rival_2_found_af") then
|
|
if not has_alife_info("zat_b29_second_rival_taken_out") then
|
|
if has_alife_info("zat_b29_exclusive_conditions") then
|
|
target_obj_id = "zat_b29_stalker_rival_2"
|
|
else
|
|
target_obj_id = "zat_b29_stalker_rival_default_2"
|
|
end
|
|
elseif af == nil then
|
|
if has_alife_info("zat_b29_exclusive_conditions") then
|
|
target_obj_id = "zat_b29_stalker_rival_2"
|
|
else
|
|
target_obj_id = "zat_b29_stalker_rival_default_2"
|
|
end
|
|
end
|
|
end
|
|
return get_story_object_id(target_obj_id)
|
|
end
|
|
|
|
if af ~= nil then
|
|
return get_story_object_id(target_obj_id)
|
|
end
|
|
|
|
return nil
|
|
end
|
|
|
|
function surge_task_target(id, field, p, cached_condlist) -- MTB-marek.siemieniuk: cached condlist
|
|
return surge_manager.get_task_target()
|
|
end
|