function zat_b30_owl_stalker_trader_actor_has_item_to_sell(first_speaker, second_speaker)
local items_table = {
"zat_b20_noah_pda",
"zat_b40_notebook",
"zat_b40_pda_1",
"zat_b40_pda_2",
"pri_b36_monolith_hiding_place_pda",
"pri_b306_envoy_pda",
"jup_b46_duty_founder_pda",
"jup_b207_merc_pda_with_contract",
"device_pda_zat_b5_dealer",
"jup_b10_notes_01",
"jup_b10_notes_02",
"jup_b10_notes_03",
"jup_a9_evacuation_info",
"jup_a9_meeting_info",
"jup_a9_losses_info",
"jup_a9_delivery_info",
"zat_b12_documents_1",
"zat_b12_documents_2",
"device_flash_snag",
"jup_b202_bandit_pda",
"device_pda_port_bandit_leader",
"jup_b10_ufo_memory_2",
-- no sell
"jup_b1_half_artifact",
"af_quest_b14_twisted",
"af_oasis_heart",
"detector_scientific",
}
local info_table = {
["jup_b1_half_artifact"] = "zat_b30_owl_stalker_about_halfart_jup_b6_asked",
["af_quest_b14_twisted"] = "zat_b30_owl_stalker_about_halfart_zat_b14_asked",
["af_oasis_heart"] = "zat_b30_owl_stalker_trader_about_osis_art",
["detector_scientific"] = "zat_b30_owl_detectors_approached",
}
for k,v in pairs(items_table) do
if db.actor:object(v) ~= nil then
if v == "detector_scientific" and not has_alife_info("zat_b30_second_detector") then
else
if info_table[v] then
if not has_alife_info(info_table[v]) then
return true
end
else
return true
end
end
end
end
return false
end
function zat_b30_owl_can_say_about_heli(first_speaker, second_speaker)
local cnt = 3
local table = {
[1] = "zat_b28_heli_3_searched",
[2] = "zat_b100_heli_2_searched",
[3] = "zat_b101_heli_5_searched",
}
local table2 = {
[1] = "zat_b30_owl_scat_1",
[2] = "zat_b30_owl_scat_2",
[3] = "zat_b30_owl_scat_3",
}
for k = 1, #table do
if has_alife_info(table[k]) or has_alife_info(table2[k]) then
cnt = cnt - 1
end
end
return cnt > 0
end
function zat_b30_actor_has_1000(first_speaker, second_speaker)
return db.actor:money() >= 1000
end
function zat_b30_actor_has_200(first_speaker, second_speaker)
return db.actor:money() >= 200
end
function zat_b30_actor_has_pri_b36_monolith_hiding_place_pda(first_speaker, second_speaker)
return db.actor:object("pri_b36_monolith_hiding_place_pda") ~= nil
end
function zat_b30_actor_has_pri_b306_envoy_pda(first_speaker, second_speaker)
return db.actor:object("pri_b306_envoy_pda") ~= nil
end
function zat_b30_actor_has_jup_b10_strelok_notes_1(first_speaker, second_speaker)
return db.actor:object("jup_b10_notes_01") ~= nil
end
function zat_b30_actor_has_jup_b10_strelok_notes_2(first_speaker, second_speaker)
return db.actor:object("jup_b10_notes_02") ~= nil
end
function zat_b30_actor_has_jup_b10_strelok_notes_3(first_speaker, second_speaker)
return db.actor:object("jup_b10_notes_03") ~= nil
end
function zat_b30_actor_has_detector_scientific(first_speaker, second_speaker)
return db.actor:object("detector_scientific") ~= nil
end
function zat_b30_actor_has_device_flash_snag(first_speaker, second_speaker)
return db.actor:object("device_flash_snag") ~= nil
end
function zat_b30_actor_has_device_pda_port_bandit_leader(first_speaker, second_speaker)
return db.actor:object("device_pda_port_bandit_leader") ~= nil
end
function zat_b30_actor_has_jup_b10_ufo_memory(first_speaker, second_speaker)
return db.actor:object("jup_b10_ufo_memory_2") ~= nil
end
function zat_b30_actor_has_jup_b202_bandit_pda(first_speaker, second_speaker)
return db.actor:object("jup_b202_bandit_pda") ~= nil
end
function zat_b30_transfer_1000(first_speaker, second_speaker)
dialogs.relocate_money_from_actor(first_speaker, second_speaker, 1000)
end
function zat_b30_transfer_200(first_speaker, second_speaker)
dialogs.relocate_money_from_actor(first_speaker, second_speaker, 200)
end
function zat_b30_sell_pri_b36_monolith_hiding_place_pda(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "pri_b36_monolith_hiding_place_pda")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2000)
end
function zat_b30_sell_pri_b306_envoy_pda(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "pri_b306_envoy_pda")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1500)
end
function zat_b30_sell_jup_b207_merc_pda_with_contract(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b207_merc_pda_with_contract")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
db.actor:give_info_portion("jup_b207_merc_pda_with_contract_sold")
end
function zat_b30_sell_jup_b10_strelok_notes_1(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b10_notes_01")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 250)
end
function zat_b30_sell_jup_b10_strelok_notes_2(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b10_notes_02")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 250)
end
function zat_b30_sell_jup_b10_strelok_notes_3(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b10_notes_03")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 250)
end
function jup_a9_owl_stalker_trader_sell_jup_a9_evacuation_info(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_a9_evacuation_info")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
db.actor:give_info_portion("jup_a9_evacuation_info_sold")
end
function jup_a9_owl_stalker_trader_sell_jup_a9_meeting_info(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_a9_meeting_info")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
db.actor:give_info_portion("jup_a9_meeting_info_sold")
end
function jup_a9_owl_stalker_trader_sell_jup_a9_losses_info(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_a9_losses_info")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
db.actor:give_info_portion("jup_a9_losses_info_sold")
end
function jup_a9_owl_stalker_trader_sell_jup_a9_delivery_info(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_a9_delivery_info")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
db.actor:give_info_portion("jup_a9_delivery_info_sold")
end
function zat_b30_owl_stalker_trader_sell_device_flash_snag(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "device_flash_snag")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 200)
db.actor:give_info_portion("device_flash_snag_sold")
end
function zat_b30_owl_stalker_trader_sell_device_pda_port_bandit_leader(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "device_pda_port_bandit_leader")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 750)
db.actor:give_info_portion("device_pda_port_bandit_leader_sold")
end
function zat_b30_owl_stalker_trader_sell_jup_b10_ufo_memory(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b10_ufo_memory_2")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
db.actor:give_info_portion("jup_b10_ufo_memory_2_sold")
end
function zat_b30_owl_stalker_trader_sell_jup_b202_bandit_pda(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b202_bandit_pda")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
end
-------- B14
function zat_b14_bar_transfer_money(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
end
function zat_b14_transfer_artefact(first_speaker, second_speaker)
local npc = dialogs.who_is_npc(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "af_quest_b14_twisted")
end
function actor_has_artefact(first_speaker, second_speaker)
return first_speaker:object("af_quest_b14_twisted") ~= nil
end
function actor_hasnt_artefact(first_speaker, second_speaker)
return not actor_has_artefact(first_speaker, second_speaker)
end
--Zaton B7
function zat_b7_give_bandit_reward_to_actor(first_speaker, second_speaker)
local amount = math.random(5, 10)*100
dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
treasure_manager.get_treasure_manager():give_treasure("zat_hiding_place_30")
end
function zat_b7_give_stalker_reward_to_actor(first_speaker, second_speaker)
local reward = math.random(1,3)
if reward == 1 then
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bandage", 2)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "vodka", 1)
end
if reward == 2 then
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "medkit", 1)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "vodka", 2)
end
if reward == 3 then
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "antirad",1)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "vodka", 2)
end
treasure_manager.get_treasure_manager():give_treasure("zat_hiding_place_29")
end
function zat_b7_give_stalker_reward_2_to_actor(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bandage", 2)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "medkit", 1)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "antirad",1)
end
function zat_b7_rob_actor(first_speaker, second_speaker)
local amount = math.floor(db.actor:money()*math.random(75,100)/100)
if db.actor:money() < amount then
amount = db.actor:money()
end
dialogs.relocate_money_from_actor(first_speaker, second_speaker, amount)
end
function zat_b7_killed_self_precond(first_speaker, second_speaker)
if has_alife_info("zat_b7_stalkers_raiders_meet") or has_alife_info("zat_b7_victims_disappeared") then
return false
end
if xr_conditions.squad_exist(nil,nil, {"zat_b7_stalkers_victims_1"}) then
return false
end
return true
end
function zat_b7_squad_alive(first_speaker, second_speaker)
if xr_conditions.squad_exist(nil,nil, {"zat_b7_stalkers_victims_1"}) then
return true
end
return false
end
function zat_b103_transfer_merc_supplies(first_speaker, second_speaker)
local npc = dialogs.who_is_npc(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
local i = 6
local j = 0
local section
local item_sections = {
[1] = "conserva",
[2] = "kolbasa",
[3] = "bread",
[4] = "pie_sr",
[5] = "conserva1_sr",
[6] = "conserva2_sr",
[7] = "stew_sr"
}
local function transfer_object_item(temp, item)
if (item:section() == section and i ~= 0) then
actor:transfer_item(item, npc)
i = i - 1
end
end
for k,v in pairs(item_sections) do
section = v
j = i
actor:iterate_inventory(transfer_object_item, nil)
if ((j - i) ~= 0) then
news_manager.relocate_item(actor, "out", section, j - i)
end
-- printf("?zat_b103_transfer_merc_supplies? : section [%s] lasts [%s] from 6", tostring(v), tostring(i))
end
end
function zat_b103_transfer_mechanic_toolkit_2(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "toolkit_2")
end
-- ďî ěĺđĺ ďî˙âëĺíč˙ íîâűő ěĺőŕíčęîâ, â ýňó ôóíęöčţ ńëĺäóĺň ďđîďčńűâŕňü čő čěĺíŕ! ďđîâĺđęŕ íŕ ţçŕáĺëüíîńňü stalker_toolkit_dialog.(redstain)
function check_npc_name_mechanics (first_speaker, second_speaker)
return (not xr_conditions.check_npc_name(first_speaker, second_speaker, {"mechanic"})
and not xr_conditions.check_npc_name(first_speaker, second_speaker, {"zat_b103_lost_merc"})
and not xr_conditions.check_npc_name(first_speaker, second_speaker, {"tech"})
and not xr_conditions.check_npc_name(first_speaker, second_speaker, {"zulus"})
and xr_conditions.check_npc_name(first_speaker, second_speaker, {"stalker"}))
end
-- zaton b33
function zat_b33_set_counter_10(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
xr_effects.set_counter(actor, nil, {"zat_b33_items",10})
end
function zat_b33_counter_ge_2(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
return xr_conditions.counter_greater(actor, nil, {"zat_b33_items",1})
end
function zat_b33_counter_ge_4(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
return xr_conditions.counter_greater(actor, nil, {"zat_b33_items",3})
end
function zat_b33_counter_ge_8(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
return xr_conditions.counter_greater(actor, nil, {"zat_b33_items",7})
end
function zat_b33_counter_le_2(first_speaker, second_speaker)
return not zat_b33_counter_ge_2(first_speaker, second_speaker)
end
function zat_b33_counter_le_4(first_speaker, second_speaker)
return not zat_b33_counter_ge_4(first_speaker, second_speaker)
end
function zat_b33_counter_le_8(first_speaker, second_speaker)
return not zat_b33_counter_ge_8(first_speaker, second_speaker)
end
function zat_b33_counter_de_2(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
return xr_effects.dec_counter(actor, nil, {"zat_b33_items",2})
end
function zat_b33_counter_de_4(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
return xr_effects.dec_counter(actor, nil, {"zat_b33_items",4})
end
function zat_b33_counter_de_8(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
return xr_effects.dec_counter(actor, nil, {"zat_b33_items",8})
end
function zat_b33_counter_eq_10(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
return xr_conditions.counter_equal(actor, nil, {"zat_b33_items",10})
end
function zat_b33_counter_ne_10(first_speaker, second_speaker)
return not zat_b33_counter_eq_10(first_speaker, second_speaker)
end
function zat_b33_transfer_first_item(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
dialogs.relocate_item_section(actor,"wpn_fort_snag","in")
end
function zat_b33_transfer_second_item(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
dialogs.relocate_item_section(actor,"medkit_scientic","in",1)
dialogs.relocate_item_section(actor,"antirad","in",1)
dialogs.relocate_item_section(actor,"bandage","in",2)
end
function zat_b33_transfer_third_item(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
dialogs.relocate_item_section(actor,"wpn_ak74u_snag","in")
end
function zat_b33_transfer_fourth_item(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
dialogs.relocate_item_section(actor,"af_soul","in")
end
function zat_b33_transfer_fifth_item(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
dialogs.relocate_item_section(actor,"helm_hardhat_snag","in")
end
function zat_b33_transfer_safe_container(first_speaker, second_speaker)
local npc = dialogs.who_is_npc(first_speaker, second_speaker)
dialogs.relocate_item_section(npc,"zat_b33_safe_container","out")
end
function zat_b33_aractor_has_habar(first_speaker, second_speaker)
return db.actor:object("zat_b33_safe_container") ~= nil
end
function zat_b33_actor_hasnt_habar(first_speaker, second_speaker)
return not zat_b33_aractor_has_habar(first_speaker, second_speaker)
end
function zat_b33_actor_has_needed_money(first_speaker, second_speaker)
local zat_b33_tech_money = 500
return db.actor:money() >= zat_b33_tech_money
end
function zat_b33_actor_hasnt_needed_money(first_speaker, second_speaker)
return not zat_b33_actor_has_needed_money(first_speaker, second_speaker)
end
function zat_b33_relocate_money(first_speaker, second_speaker)
local zat_b33_tech_money = 500
if zat_b33_actor_has_needed_money(first_speaker, second_speaker) then
dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b33_tech_money)
end
end
-- Zaton B29
zat_b29_af_table = {
--[[
[1] = "af_cristall",
[2] = "af_blood",
[3] = "af_electra_sparkler",
[4] = "af_cristall_flower",
[5] = "af_medusa",
[6] = "af_fireball",
[7] = "af_mincer_meat",
[8] = "af_electra_flash",
[9] = "af_night_star",
[10] = "af_dummy_glassbeads",
[11] = "af_soul",
[12] = "af_electra_moonlight",
[13] = "af_dummy_battery",
[14] = "af_vyvert",
[15] = "af_fuzz_kolobok",
]]--
[16] = "af_gravi",
[17] = "af_eye",
[18] = "af_baloon",
[19] = "af_dummy_dummy",
[20] = "af_gold_fish",
[21] = "af_fire",
[22] = "af_glass",
[23] = "af_ice",
}
zat_b29_af_names_table = {
--[[
[1] = "st_af_cristall_name",
[2] = "st_af_blood_name",
[3] = "st_af_electra_sparkler_name",
[4] = "st_af_cristall_flower_name",
[5] = "st_af_medusa_name",
[6] = "st_af_fireball_name",
[7] = "st_af_mincer_meat_name",
[8] = "st_af_electra_flash_name",
[9] = "st_af_night_star_name",
[10] = "st_af_dummy_glassbeads_name",
[11] = "st_af_soul_name",
[12] = "st_af_electra_moonlight_name",
[13] = "st_af_dummy_battery_name",
[14] = "st_af_vyvert_name",
[15] = "st_af_fuzz_kolobok_name",
]]--
[16] = "st_af_gravi_name",
[17] = "st_af_eye_name",
[18] = "st_af_baloon_name",
[19] = "st_af_dummy_dummy_name",
[20] = "st_af_gold_fish_name",
[21] = "st_af_fire_name",
[22] = "st_af_glass_name",
[23] = "st_af_ice_name",
}
zat_b29_infop_table = {
[16] = "zat_b29_af_16",
[17] = "zat_b29_af_17",
[18] = "zat_b29_af_18",
[19] = "zat_b29_af_19",
[20] = "zat_b29_af_20",
[21] = "zat_b29_af_21",
[22] = "zat_b29_af_22",
[23] = "zat_b29_af_23",
}
zat_b29_infop_bring_table = {
[16] = "zat_b29_bring_af_16",
[17] = "zat_b29_bring_af_17",
[18] = "zat_b29_bring_af_18",
[19] = "zat_b29_bring_af_19",
[20] = "zat_b29_bring_af_20",
[21] = "zat_b29_bring_af_21",
[22] = "zat_b29_bring_af_22",
[23] = "zat_b29_bring_af_23",
}
function zat_b29_create_af_in_anomaly(first_speaker, second_speaker)
local anom_tbl = {
[16] = "gravi",
[17] = "thermal",
[18] = "acid",
[19] = "electra",
[20] = "gravi",
[21] = "thermal",
[22] = "acid",
[23] = "electra",
}
local anomalies_names_tbl = {
["gravi"] = {
[1] = "zat_b14_anomal_zone",
[2] = "zat_b55_anomal_zone",
[3] = "zat_b44_anomal_zone_gravi",
},
["thermal"] = {
[1] = "zat_b20_anomal_zone",
[2] = "zat_b53_anomal_zone",
[3] = "zaton_b56_anomal_zone",
},
["acid"] = {
[1] = "zat_b39_anomal_zone",
[2] = "zat_b101_anomal_zone",
[3] = "zat_b44_anomal_zone_acid",
},
["electra"] = {
[1] = "zat_b54_anomal_zone",
[2] = "zat_b100_anomal_zone",
},
}
local zone = ""
local zone_name = ""
local key
for k,v in pairs(zat_b29_infop_bring_table) do
if has_alife_info(v) then
key = k
zone = anom_tbl[key]
break
end
end
zone_name = anomalies_names_tbl[zone][math.random(1, #anomalies_names_tbl[zone])]
db.anomaly_by_name[zone_name]:set_forced_override(zat_b29_af_table[key])
end
function zat_b29_linker_give_adv_task(first_speaker, second_speaker)
local result
local f_first = true
for i = 16, 23 do
disable_info(zat_b29_infop_bring_table[i])
if has_alife_info(zat_b29_infop_table[i]) then
if f_first then
result = game.translate_string(zat_b29_af_names_table[i])
f_first = false
else
result = result..", "..game.translate_string(zat_b29_af_names_table[i])
end
end
end
result = result.."."
return result
end
function zat_b29_actor_do_not_has_adv_task_af(first_speaker, second_speaker)
for i = 16, 23 do
if (has_alife_info(zat_b29_infop_bring_table[i]) and db.actor:object(zat_b29_af_table[i])) then
return false
end
end
return true
end
function zat_b29_actor_has_adv_task_af(first_speaker, second_speaker)
for i = 16, 23 do
if (has_alife_info(zat_b29_infop_bring_table[i]) and db.actor:object(zat_b29_af_table[i])) then
return true
end
end
return false
end
function zat_b29_actor_do_not_has_adv_task_af_1(first_speaker, second_speaker)
if has_alife_info(zat_b29_infop_table[16]) and not db.actor:object(zat_b29_af_table[16]) then
return true
end
return false
end
function zat_b29_actor_do_not_has_adv_task_af_2(first_speaker, second_speaker)
if has_alife_info(zat_b29_infop_table[17]) and not db.actor:object(zat_b29_af_table[17]) then
return true
end
return false
end
function zat_b29_actor_do_not_has_adv_task_af_3(first_speaker, second_speaker)
if has_alife_info(zat_b29_infop_table[18]) and not db.actor:object(zat_b29_af_table[18]) then
return true
end
return false
end
function zat_b29_actor_do_not_has_adv_task_af_4(first_speaker, second_speaker)
if has_alife_info(zat_b29_infop_table[19]) and not db.actor:object(zat_b29_af_table[19]) then
return true
end
return false
end
function zat_b29_actor_do_not_has_adv_task_af_5(first_speaker, second_speaker)
if has_alife_info(zat_b29_infop_table[20]) and not db.actor:object(zat_b29_af_table[20]) then
return true
end
return false
end
function zat_b29_actor_do_not_has_adv_task_af_6(first_speaker, second_speaker)
if has_alife_info(zat_b29_infop_table[21]) and not db.actor:object(zat_b29_af_table[21]) then
return true
end
return false
end
function zat_b29_actor_do_not_has_adv_task_af_7(first_speaker, second_speaker)
if has_alife_info(zat_b29_infop_table[22]) and not db.actor:object(zat_b29_af_table[22]) then
return true
end
return false
end
function zat_b29_actor_do_not_has_adv_task_af_8(first_speaker, second_speaker)
if has_alife_info(zat_b29_infop_table[23]) and not db.actor:object(zat_b29_af_table[23]) then
return true
end
return false
end
function zat_b29_actor_has_adv_task_af_1(first_speaker, second_speaker)
if has_alife_info(zat_b29_infop_table[16]) and db.actor:object(zat_b29_af_table[16]) then
return true
end
return false
end
function zat_b29_actor_has_adv_task_af_2(first_speaker, second_speaker)
if has_alife_info(zat_b29_infop_table[17]) and db.actor:object(zat_b29_af_table[17]) then
return true
end
return false
end
function zat_b29_actor_has_adv_task_af_3(first_speaker, second_speaker)
if has_alife_info(zat_b29_infop_table[18]) and db.actor:object(zat_b29_af_table[18]) then
return true
end
return false
end
function zat_b29_actor_has_adv_task_af_4(first_speaker, second_speaker)
if has_alife_info(zat_b29_infop_table[19]) and db.actor:object(zat_b29_af_table[19]) then
return true
end
return false
end
function zat_b29_actor_has_adv_task_af_5(first_speaker, second_speaker)
if has_alife_info(zat_b29_infop_table[20]) and db.actor:object(zat_b29_af_table[20]) then
return true
end
return false
end
function zat_b29_actor_has_adv_task_af_6(first_speaker, second_speaker)
if has_alife_info(zat_b29_infop_table[21]) and db.actor:object(zat_b29_af_table[21]) then
return true
end
return false
end
function zat_b29_actor_has_adv_task_af_7(first_speaker, second_speaker)
if has_alife_info(zat_b29_infop_table[22]) and db.actor:object(zat_b29_af_table[22]) then
return true
end
return false
end
function zat_b29_actor_has_adv_task_af_8(first_speaker, second_speaker)
if has_alife_info(zat_b29_infop_table[23]) and db.actor:object(zat_b29_af_table[23]) then
return true
end
return false
end
function zat_b29_linker_get_adv_task_af(first_speaker, second_speaker)
for i = 16, 23 do
if has_alife_info(zat_b29_infop_bring_table[i])then
disable_info("zat_b29_adv_task_given")
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, zat_b29_af_table[i])
if i < 20 then
if has_alife_info("zat_b29_linker_take_af_from_rival") then
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1200)
else
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1800)
end
elseif i > 19 then
if has_alife_info("zat_b29_linker_take_af_from_rival") then
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1800)
else
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2400)
end
end
break
end
end
end
local actor_wpn_table = {}
function is_good_gun(npc, item)
local section = item:section()
local wpn_table = {
[1] = "wpn_sig550",
[2] = "wpn_g36",
[3] = "wpn_val",
[4] = "wpn_groza",
[5] = "wpn_vintorez",
[6] = "wpn_fn2000",
}
for k,v in pairs(wpn_table) do
if section == v then
table.insert(actor_wpn_table,v)
break
end
end
end
function zat_b29_actor_has_exchange_item(first_speaker, second_speaker)
db.actor:iterate_inventory(is_good_gun, nil)
if #actor_wpn_table > 0 then
db.actor.good_gun = actor_wpn_table[math.random(1,#actor_wpn_table)]
end
if (db.actor.good_gun ~= nil) then
return true
end
return false
end
function zat_b29_actor_exchange(first_speaker, second_speaker)
for i = 16, 23 do
if has_alife_info(zat_b29_infop_bring_table[i]) then
--db.actor:iterate_inventory(is_good_gun, nil)
if (db.actor.good_gun ~= nil) then
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, db.actor.good_gun)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, zat_b29_af_table[i])
db.actor.good_gun = nil
break
end
end
end
end
-- Zaton B30
function zat_b30_transfer_detector_to_actor(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "detector_scientific")
end
function zat_b30_give_owls_share_to_actor(first_speaker, second_speaker)
local amount = 1500
dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
end
function zat_b30_actor_has_compass(first_speaker, second_speaker)
return db.actor:object("af_compass") ~= nil
end
function zat_b30_transfer_af_from_actor(first_speaker, second_speaker)
local amount = 10000
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "af_compass")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
treasure_manager.get_treasure_manager():give_treasure("zat_hiding_place_49")
treasure_manager.get_treasure_manager():give_treasure("zat_hiding_place_15")
end
function zat_b30_barmen_has_percent(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
local cnt = xr_logic.pstor_retrieve(actor, "zat_b30_days_cnt", 0)
return cnt > 0
end
function zat_b30_barmen_do_not_has_percent(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
local cnt = xr_logic.pstor_retrieve(actor, "zat_b30_days_cnt", 0)
return cnt < 1
end
function zat_b30_transfer_percent(first_speaker, second_speaker)
local amount = math.random(5,25)*100
local days = xr_logic.pstor_retrieve(db.actor, "zat_b30_days_cnt", 0)
amount = amount * days
dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
xr_logic.pstor_store(db.actor, "zat_b30_days_cnt", 0)
end
function zat_b30_npc_has_detector(first_speaker, second_speaker)
local npc = dialogs.who_is_npc(first_speaker, second_speaker)
if npc:object("detector_scientific") then
return true
end
return false
end
function zat_b30_actor_exchange(first_speaker, second_speaker)
if (db.actor.good_gun ~= nil) then
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, db.actor.good_gun)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "detector_scientific")
db.actor.good_gun = nil
end
if xr_conditions.check_npc_name(first_speaker, second_speaker, {"zat_b29_stalker_rival_1"}) then
db.actor:give_info_portion("zat_b30_rival_1_wo_detector")
elseif xr_conditions.check_npc_name(first_speaker, second_speaker, {"zat_b29_stalker_rival_2"}) then
db.actor:give_info_portion("zat_b30_rival_2_wo_detector")
end
end
function zat_b30_actor_has_two_detectors(first_speaker, second_speaker)
local cnt = 0
local function zat_b30_count(npc, item)
--printf("item:section: %s", item:section())
if item:section() == "detector_scientific" then
cnt = cnt + 1
end
end
db.actor:iterate_inventory(zat_b30_count, nil)
if cnt > 1 then
return true
end
return false
end
function zat_b30_actor_second_exchange(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "detector_scientific")
end
--Zaton B52
function actor_has_nimble_weapon(first_speaker, second_speaker)
return db.actor:object("wpn_redux_abakan_nimble") ~= nil or
db.actor:object("wpn_redux_vintorez_nimble") ~= nil or
db.actor:object("wpn_redux_colt1911_nimble") ~= nil or
db.actor:object("wpn_redux_lr300_nimble") ~= nil or
db.actor:object("wpn_redux_val_nimble") ~= nil or
db.actor:object("wpn_redux_protecta_nimble") ~= nil or
db.actor:object("wpn_redux_mp5_nimble") ~= nil or
db.actor:object("wpn_redux_pb_nimble") ~= nil or
db.actor:object("wpn_redux_toz34_nimble") ~= nil or
db.actor:object("wpn_redux_beretta_nimble") ~= nil or
db.actor:object("wpn_redux_svu_nimble") ~= nil or
db.actor:object("wpn_redux_svd_nimble") ~= nil
end
function zat_b51_robbery(first_speaker, second_speaker)
local amount = math.floor(db.actor:money()*math.random(35,50)/100)
if amount > db.actor:money() then
amount = db.actor:money()
end
local need_item = {}
need_item["wpn_usp"] = true
need_item["wpn_desert_eagle"] = true
need_item["wpn_protecta"] = true
need_item["wpn_sig550"] = true
need_item["wpn_fn2000"] = true
need_item["wpn_g36"] = true
need_item["wpn_val"] = true
need_item["wpn_vintorez"] = true
need_item["wpn_groza"] = true
need_item["wpn_svd"] = true
need_item["wpn_svu"] = true
need_item["wpn_pkm"] = true
need_item["wpn_sig550_luckygun"] = true
need_item["wpn_pkm_zulus"] = true
need_item["wpn_wincheaster1300_trapper"] = true
need_item["wpn_gauss"] = true
need_item["wpn_redux_lr300_nimble"] = true
need_item["wpn_redux_beretta_nimble"] = true
need_item["wpn_redux_abakan_nimble"] = true
need_item["wpn_redux_val_nimble"] = true
need_item["wpn_redux_protecta_nimble"] = true
need_item["wpn_redux_mp5_nimble"] = true
need_item["wpn_redux_pb_nimble"] = true
need_item["wpn_redux_toz34_nimble"] = true
need_item["wpn_redux_colt1911_nimble"] = true
need_item["wpn_redux_vintorez_nimble"] = true
need_item["wpn_redux_svu_nimble"] = true
need_item["wpn_redux_svd_nimble"] = true
for k,v in pairs(need_item) do
if db.actor:object(k) ~= nil then
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, k, "all")
end
end
dialogs.relocate_money_from_actor(first_speaker, second_speaker, amount)
end
function zat_b51_rob_nimble_weapon(first_speaker, second_speaker)
local need_item = {}
local actor_has_item = {}
need_item["wpn_redux_lr300_nimble"] = true
need_item["wpn_redux_beretta_nimble"] = true
need_item["wpn_redux_abakan_nimble"] = true
need_item["wpn_redux_val_nimble"] = true
need_item["wpn_redux_protecta_nimble"] = true
need_item["wpn_redux_mp5_nimble"] = true
need_item["wpn_redux_pb_nimble"] = true
need_item["wpn_redux_toz34_nimble"] = true
need_item["wpn_redux_colt1911_nimble"] = true
need_item["wpn_redux_vintorez_nimble"] = true
need_item["wpn_redux_svu_nimble"] = true
need_item["wpn_redux_svd_nimble"] = true
for k,v in pairs(need_item) do
if db.actor:object(k) ~= nil then
table.insert(actor_has_item, k)
end
if db.actor:item_in_slot(2)~= nil and db.actor:item_in_slot(2):section() == k then
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, k)
return
elseif db.actor:item_in_slot(3)~= nil and db.actor:item_in_slot(3):section() == k then
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, k)
return
end
end
if #actor_has_item > 0 then
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, actor_has_item[math.random(1, #actor_has_item)])
end
end
-- Zaton B18
function give_compass_to_actor(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "af_compass")
end
-- b51
local item_count_by_category = {}
item_count_by_category[1] = 3
item_count_by_category[2] = 3
item_count_by_category[3] = 3
item_count_by_category[4] = 3
item_count_by_category[5] = 1
item_count_by_category[6] = 1
item_count_by_category[7] = 1
local zat_b51_costs_table = {}
zat_b51_costs_table[1] = {prepay_agreed = 700, prepay_refused = 1400, cost = 1400}
zat_b51_costs_table[2] = {prepay_agreed = 1300, prepay_refused = 2000, cost = 1700}
zat_b51_costs_table[3] = {prepay_agreed = 2000, prepay_refused = 2700, cost = 3000}
zat_b51_costs_table[4] = {prepay_agreed = 2500, prepay_refused = 3200, cost = 3500}
zat_b51_costs_table[5] = {prepay_agreed = 3000, prepay_refused = 6000, cost = 12000}
zat_b51_costs_table[6] = {prepay_agreed = 5000, prepay_refused = 10000, cost = 20000}
zat_b51_costs_table[7] = {prepay_agreed = 6500, prepay_refused = 11500, cost = 25000}
local zat_b51_buy_item_table = {}
zat_b51_buy_item_table[1] = { [1] = {item = {"wpn_redux_colt1911_nimble"}},
[2] = {item = {"wpn_redux_pb_nimble"}},
[3] = {item = {"wpn_redux_beretta_nimble"}}
}
zat_b51_buy_item_table[2] = { [1] = {item = {"wpn_redux_mp5_nimble"}},
[2] = {item = {"wpn_redux_toz34_nimble"}},
[3] = {item = {"wpn_redux_protecta_nimble"}}
}
zat_b51_buy_item_table[3] = { [1] = {item = {"wpn_redux_val_nimble"}},
[2] = {item = {"wpn_redux_abakan_nimble"}},
[3] = {item = {"wpn_redux_lr300_nimble"}}
}
zat_b51_buy_item_table[4] = { [1] = {item = {"wpn_redux_vintorez_nimble"}},
[2] = {item = {"wpn_redux_svu_nimble"}},
[3] = {item = {"wpn_redux_svd_nimble"}}
}
zat_b51_buy_item_table[5] = { [1] = {item = {"helm_tactic", "cs_heavy_outfit"}}
}
zat_b51_buy_item_table[6] = { [1] = {item = {"scientific_outfit"}}
}
zat_b51_buy_item_table[7] = { [1] = {item = {"exo_outfit"}}
}
function zat_b51_randomize_item(first_speaker, second_speaker)
for i = 1,7 do
if has_alife_info("zat_b51_processing_category_"..tostring(i)) then
local zat_b51_available_items_table = {}
for j = 1, item_count_by_category[i] do
if not has_alife_info("zat_b51_done_item_"..tostring(i).."_"..tostring(j)) then
table.insert(zat_b51_available_items_table, j)
end
end
give_info("zat_b51_ordered_item_"..tostring(i).."_"..tostring(zat_b51_available_items_table[math.random(1,#zat_b51_available_items_table)]))
end
end
end
function zat_b51_give_prepay(first_speaker, second_speaker)
for i = 1,7 do
if has_alife_info("zat_b51_processing_category_"..tostring(i)) then
if not has_alife_info("zat_b51_order_refused") then
dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b51_costs_table[i].prepay_agreed)
return
end
dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b51_costs_table[i].prepay_refused)
return
end
end
end
function zat_b51_has_prepay(first_speaker, second_speaker)
for i = 1,7 do
if has_alife_info("zat_b51_processing_category_"..tostring(i)) then
if not has_alife_info("zat_b51_order_refused") then
return db.actor:money() >= zat_b51_costs_table[i].prepay_agreed
end
return db.actor:money() >= zat_b51_costs_table[i].prepay_refused
end
end
end
function zat_b51_hasnt_prepay(first_speaker, second_speaker)
return not zat_b51_has_prepay(first_speaker, second_speaker)
end
function zat_b51_buy_item(first_speaker, second_speaker)
for i = 1,7 do
if has_alife_info("zat_b51_processing_category_"..tostring(i)) then
for j = 1,#zat_b51_buy_item_table[i] do
if has_alife_info("zat_b51_ordered_item_"..tostring(i).."_"..tostring(j)) then
for k,v in pairs(zat_b51_buy_item_table[i][j].item) do
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker,v)
end
dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b51_costs_table[i].cost)
disable_info("zat_b51_processing_category_"..tostring(i))
disable_info("zat_b51_ordered_item_"..tostring(i).."_"..tostring(j))
give_info("zat_b51_done_item_"..tostring(i).."_"..tostring(j))
break
end
end
local category_finishing = true
for j = 1,#zat_b51_buy_item_table[i] do
if not has_alife_info("zat_b51_done_item_"..tostring(i).."_"..tostring(j)) then
category_finishing = false
break
end
end
if category_finishing == true then
give_info("zat_b51_finishing_category_"..tostring(i))
end
return
end
end
end
function zat_b51_refuse_item(first_speaker, second_speaker)
for i = 1,7 do
if has_alife_info("zat_b51_processing_category_"..tostring(i)) then
for j = 1,#zat_b51_buy_item_table[i] do
if has_alife_info("zat_b51_ordered_item_"..tostring(i).."_"..tostring(j)) then
disable_info("zat_b51_processing_category_"..tostring(i))
disable_info("zat_b51_ordered_item_"..tostring(i).."_"..tostring(j))
give_info("zat_b51_done_item_"..tostring(i).."_"..tostring(j))
break
end
end
local category_finishing = true
for j = 1,#zat_b51_buy_item_table[i] do
if not has_alife_info("zat_b51_done_item_"..tostring(i).."_"..tostring(j)) then
category_finishing = false
break
end
end
if category_finishing == true then
give_info("zat_b51_finishing_category_"..tostring(i))
end
return
end
end
end
function zat_b51_has_item_cost(first_speaker, second_speaker)
for i = 1,7 do
if has_alife_info("zat_b51_processing_category_"..tostring(i)) then
return db.actor:money() >= zat_b51_costs_table[i].cost
end
end
return false
end
function zat_b51_hasnt_item_cost(first_speaker, second_speaker)
return not zat_b51_has_item_cost(first_speaker, second_speaker)
end
--b12
function zat_b12_actor_have_documents(first_speaker, second_speaker)
if db.actor:object("zat_b12_documents_1") ~= nil
or db.actor:object("zat_b12_documents_2") ~= nil then
return true
end
return false
end
function zat_b12_actor_transfer_documents(first_speaker, second_speaker)
local amount_doc1 = 1000
local amount_doc2 = 600
local amount_doc3 = 400
local amount_total = 0
local npc = dialogs.who_is_npc(first_speaker, second_speaker)
local cnt = 0
local cnt2 = 0
local function zat_b12_check_npc(temp, item)
if item:section() == "zat_b12_documents_2" then
cnt = cnt + 1
end
end
local function zat_b12_check_actor(temp, item)
if item:section() == "zat_b12_documents_2" then
cnt2 = cnt2 + 1
end
end
if db.actor:object("zat_b12_documents_1") ~= nil then
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b12_documents_1")
db.actor:give_info_portion("zat_b12_documents_sold_1")
amount_total = amount_total + amount_doc1
end
npc:iterate_inventory(zat_b12_check_npc, nil)
db.actor:iterate_inventory(zat_b12_check_actor, nil)
if db.actor:object("zat_b12_documents_2") ~= nil then
if cnt < 1 then
amount_total = amount_total + amount_doc2
if cnt2 > 1 then
amount_total = amount_total + amount_doc3*(cnt2-1)
db.actor:give_info_portion("zat_b12_documents_sold_2")
end
else
amount_total = amount_total + amount_doc3*cnt2
db.actor:give_info_portion("zat_b12_documents_sold_3")
end
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b12_documents_2", cnt2)
end
dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount_total)
return false
end
-- Zaton B3 functions -------------------------------------------------
function zat_b3_actor_got_toolkit(first_speaker, second_speaker)
local function is_toolkit(npc, item)
local section = item:section()
if(section=="toolkit_1" and not has_alife_info("zat_b3_tech_instrument_1_brought"))
or(section=="toolkit_2" and not has_alife_info("zat_b3_tech_instrument_2_brought"))
or(section=="toolkit_3" and not has_alife_info("zat_b3_tech_instrument_3_brought")) then
db.actor.toolkit = section
return
end
end
db.actor:iterate_inventory(is_toolkit, nil)
if (db.actor.toolkit ~= nil) then
return true
end
return false
end
function give_toolkit_1(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "toolkit_1")
db.actor.toolkit = nil
local amount = 1000
dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
end
function if_actor_has_toolkit_1(first_speaker, second_speaker)
return db.actor:object("toolkit_1") ~= nil
end
function give_toolkit_2(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "toolkit_2")
db.actor.toolkit = nil
local amount = 1200
dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
end
function if_actor_has_toolkit_2(first_speaker, second_speaker)
return db.actor:object("toolkit_2") ~= nil
end
function give_toolkit_3(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "toolkit_3")
db.actor.toolkit = nil
local amount = 1500
dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
end
function if_actor_has_toolkit_3(first_speaker, second_speaker)
return db.actor:object("toolkit_3") ~= nil
end
function give_vodka(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "vodka")
end
function if_actor_has_vodka(first_speaker, second_speaker)
return db.actor:object("vodka") ~= nil
end
function actor_has_more_then_need_money_to_buy_battery(first_speaker, second_speaker)
return db.actor:money() >= 2000
end
function actor_has_less_then_need_money_to_buy_battery(first_speaker, second_speaker)
return db.actor:money() < 2000
end
function relocate_need_money_to_buy_battery(first_speaker, second_speaker)
local money_to_buy_battery = 2000
dialogs.relocate_money_from_actor(first_speaker, second_speaker, money_to_buy_battery)
end
function give_actor_battery(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "ammo_gauss_cardan")
end
function give_actor_zat_a23_access_card(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "zat_a23_access_card")
end
function give_zat_a23_gauss_rifle_docs(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_a23_gauss_rifle_docs")
end
function return_zat_a23_gauss_rifle_docs(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "zat_a23_gauss_rifle_docs")
end
function if_actor_has_zat_a23_gauss_rifle_docs(first_speaker, second_speaker)
return first_speaker:object("zat_a23_gauss_rifle_docs") ~= nil
end
function if_actor_has_gauss_rifle(first_speaker, second_speaker)
return first_speaker:object("pri_a17_gauss_rifle") ~= nil
end
function give_tech_gauss_rifle(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "pri_a17_gauss_rifle")
end
function give_actor_repaired_gauss_rifle(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_gauss")
end
-- Zaton B 215 functions -------------------------------------------------
function zat_b215_actor_has_money_poor(first_speaker, second_speaker)
return db.actor:money() >= 3000
end
function zat_b215_actor_has_no_money_poor(first_speaker, second_speaker)
return db.actor:money() < 3000
end
function zat_b215_actor_has_money_poor_pripyat(first_speaker, second_speaker)
return db.actor:money() >= 13000
end
function zat_b215_actor_has_no_money_poor_pripyat(first_speaker, second_speaker)
return db.actor:money() < 13000
end
function zat_b215_actor_has_money_rich(first_speaker, second_speaker)
return db.actor:money() >= 5000
end
function zat_b215_actor_has_no_money_rich(first_speaker, second_speaker)
return db.actor:money() < 5000
end
function zat_b215_actor_has_money_rich_pripyat(first_speaker, second_speaker)
return db.actor:money() >= 15000
end
function zat_b215_actor_has_no_money_rich_pripyat(first_speaker, second_speaker)
return db.actor:money() < 15000
end
function zat_b215_relocate_money_poor(first_speaker, second_speaker)
local zat_b215_money_poor = 3000
dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b215_money_poor)
end
function zat_b215_relocate_money_rich(first_speaker, second_speaker)
local zat_b215_money_rich = 5000
dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b215_money_rich)
end
function zat_b215_relocate_money_poor_pripyat(first_speaker, second_speaker)
local zat_b215_money_poor = 13000
dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b215_money_poor)
end
function zat_b215_relocate_money_rich_pripyat(first_speaker, second_speaker)
local zat_b215_money_rich = 15000
dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b215_money_rich)
end
function zat_b215_counter_greater_3(first_speaker, second_speaker)
local npc = dialogs.who_is_npc(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
return xr_conditions.counter_greater(actor, npc, {"zat_a9_way_to_pripyat_counter",3})
end
function zat_b215_counter_less_4(first_speaker, second_speaker)
local npc = dialogs.who_is_npc(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
return not xr_conditions.counter_greater(actor, npc, {"jup_a9_way_gates_counter",4})
end
function zat_b30_actor_has_noah_pda(first_speaker, second_speaker)
return db.actor:object("zat_b20_noah_pda") ~= nil
end
function zat_b30_sell_noah_pda(first_speaker, second_speaker)
local amount = 1000
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b20_noah_pda")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
end
-------------------------------------b40------------------------------------
function zat_b40_actor_has_notebook(first_speaker, second_speaker)
return db.actor:object("zat_b40_notebook") ~= nil
end
function zat_b40_actor_has_merc_pda_1(first_speaker, second_speaker)
return db.actor:object("zat_b40_pda_1") ~= nil
end
function zat_b40_actor_has_merc_pda_2(first_speaker, second_speaker)
return db.actor:object("zat_b40_pda_2") ~= nil
end
function zat_b40_transfer_notebook(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b40_notebook")
db.actor:give_info_portion("zat_b40_notebook_saled")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1000)
end
function zat_b40_transfer_merc_pda_1(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b40_pda_1")
db.actor:give_info_portion("zat_b40_pda_1_saled")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1000)
if (db.actor:has_info("zat_b40_notebook_saled") and db.actor:has_info("zat_b40_pda_1_saled") and db.actor:has_info("zat_b40_pda_2_saled")) then
db.actor:give_info_portion("zat_b40_all_item_saled")
end
end
function zat_b40_transfer_merc_pda_2(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b40_pda_2")
db.actor:give_info_portion("zat_b40_pda_2_saled")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1000)
if (db.actor:has_info("zat_b40_notebook_saled") and db.actor:has_info("zat_b40_pda_1_saled") and db.actor:has_info("zat_b40_pda_2_saled")) then
db.actor:give_info_portion("zat_b40_all_item_saled")
end
end
--------------------------------B44------------------------------------------------
function zat_b44_actor_has_pda_global(first_speaker, second_speaker)
return ((db.actor:object("zat_b39_joker_pda") ~= nil) or (db.actor:object("zat_b44_barge_pda") ~= nil))
end
function zat_b44_actor_has_not_pda_global(first_speaker, second_speaker)
return ((db.actor:object("zat_b39_joker_pda") == nil) or (db.actor:object("zat_b44_barge_pda") == nil))
end
function zat_b44_actor_has_pda_barge(first_speaker, second_speaker)
return db.actor:object("zat_b44_barge_pda") ~= nil
end
function zat_b44_actor_has_pda_joker(first_speaker, second_speaker)
return db.actor:object("zat_b39_joker_pda") ~= nil
end
function zat_b44_actor_has_pda_both(first_speaker, second_speaker)
return ((db.actor:object("zat_b39_joker_pda") ~= nil) and (db.actor:object("zat_b44_barge_pda") ~= nil))
end
function zat_b44_transfer_pda_barge(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b44_barge_pda")
end
function zat_b44_transfer_pda_joker(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b39_joker_pda")
end
function zat_b44_transfer_pda_both(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b44_barge_pda")
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b39_joker_pda")
end
function zat_b44_frends_dialog_enabled(first_speaker, second_speaker)
local a = ((db.actor:has_info("zat_b3_tech_have_couple_dose")) and (db.actor:has_info("zat_b3_tech_discount_1")))
local b = zat_b44_actor_has_pda_global(first_speaker, second_speaker)
return a or b
end
---------------------- b53 ----------------------
function zat_b53_if_actor_has_detector_advanced(first_speaker, second_speaker)
return db.actor:object("detector_advanced") ~= nil or
db.actor:object("detector_elite") ~= nil or
db.actor:object("detector_scientific") ~= nil
end
function zat_b53_if_actor_hasnt_detector_advanced(first_speaker, second_speaker)
return not zat_b53_if_actor_has_detector_advanced(first_speaker, second_speaker)
end
function zat_b53_transfer_detector_advanced_to_actor(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(second_speaker, first_speaker, "detector_advanced")
end
function zat_b53_transfer_fireball_to_actor(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(second_speaker, first_speaker, "af_fireball")
end
function zat_b53_transfer_medkit_to_actor(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(second_speaker, first_speaker, "medkit")
end
function zat_b53_transfer_medkit_to_npc(first_speaker, second_speaker)
local section
if db.actor:object("medkit") ~= nil then
section = "medkit"
elseif db.actor:object("medkit_army") ~= nil then
section = "medkit_army"
elseif db.actor:object("medkit_scientic") ~= nil then
section = "medkit_scientic"
end
alife():release(alife():object(db.actor:object(section):id()), true)
news_manager.relocate_item(db.actor, "out", section, 1)
db.actor:change_character_reputation(10)
end
-------------------------- a23 -----------------------------
function zat_a23_actor_has_access_card(first_speaker, second_speaker)
return db.actor:object("zat_a23_access_card") ~= nil
end
function zat_a23_transfer_access_card_to_tech(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_a23_access_card")
dialogs.relocate_item_section_to_actor(second_speaker, first_speaker, "medkit_scientic",3)
end
----- b57 new ----
function zat_b57_stalker_reward_to_actor_detector(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "detector_elite")
treasure_manager.get_treasure_manager():give_treasure("zat_hiding_place_54")
end
function actor_has_gas(first_speaker, second_speaker)
return db.actor:object("zat_b57_gas") ~= nil
end
function actor_has_not_gas(first_speaker, second_speaker)
return not actor_has_gas(first_speaker, second_speaker)
end
function zat_b57_actor_has_money(first_speaker, second_speaker)
return db.actor:money() >= 2000
end
function zat_b57_actor_hasnt_money(first_speaker, second_speaker)
return not zat_b57_actor_has_money(first_speaker, second_speaker)
end
function zat_b57_transfer_gas_money(first_speaker, second_speaker)
dialogs.relocate_money_from_actor(first_speaker, second_speaker, 1000)
end
function is_zat_b106_hunting_time (first_speaker, second_speaker)
if level.get_time_hours() >= 2 and level.get_time_hours() < 5 then
if level.get_time_hours() > 2 then
return true
elseif level.get_time_minutes() >= 45 then
return true
end
end
return false
end
function is_not_zat_b106_hunting_time (first_speaker, second_speaker)
if level.get_time_hours() >= 2 and level.get_time_hours() < 5 then
if level.get_time_hours() > 2 then
return false
elseif level.get_time_minutes() >= 45 then
return false
end
end
return true
end
function zat_b106_transfer_weap_to_actor(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_spas12")
end
function zat_b106_soroka_reward(first_speaker, second_speaker)
if has_alife_info("jup_b25_flint_blame_done_to_duty") or has_alife_info("jup_b25_flint_blame_done_to_freedom") then
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
else
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1500)
end
end
function zat_b106_soroka_gone(first_speaker, second_speaker)
return (has_alife_info("jup_b25_flint_blame_done_to_duty") or has_alife_info("jup_b25_flint_blame_done_to_freedom"))
end
function zat_b106_soroka_not_gone(first_speaker, second_speaker)
return not zat_b106_soroka_gone(first_speaker, second_speaker)
end
function zat_b22_actor_has_proof(first_speaker, second_speaker)
return dialogs.actor_has_item(first_speaker, second_speaker, "zat_b22_medic_pda")
end
function zat_b22_transfer_proof(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b22_medic_pda")
end
function zat_b103_actor_has_needed_food(first_speaker, second_speaker)
local item_sections = {
[1] = "bread",
[2] = "kolbasa",
[3] = "conserva"
}
local needed = 6
local count = 0
local item_section
local function calc(temp, item)
if item:section() == item_section then
count = count + 1
end
end
for k,v in pairs(item_sections) do
item_section = v
get_story_object("actor"):iterate_inventory(calc, actor)
-- printf("?zat_b103_actor_has_needed_food? : section [%s] count [%s]", tostring(v), tostring(count))
end
return count >= needed
end
function zat_b5_stalker_transfer_money(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
treasure_manager.get_treasure_manager():give_treasure("zat_hiding_place_7")
end
function zat_b5_dealer_full_revard(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 6000)
end
function zat_b5_dealer_easy_revard(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 3000)
end
function zat_b5_bandits_revard(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 5000)
treasure_manager.get_treasure_manager():give_treasure("zat_hiding_place_20")
end
function zat_b106_give_reward(first_speaker, second_speaker)
treasure_manager.get_treasure_manager():give_treasure("zat_hiding_place_50")
end
function zat_b3_tech_drinks_precond(first_speaker, second_speaker)
if has_alife_info("zat_b3_gauss_repaired") and not has_alife_info("zat_b3_tech_drink_no_more") then
return true
elseif not has_alife_info("zat_b3_tech_see_produce_62") then
return true
end
return false
end
-- Zaton B 215 functions -------------------------------------------------
function zat_b215_actor_has_money_poor(first_speaker, second_speaker)
return db.actor:money() >= 1000
end
function zat_b215_actor_has_no_money_poor(first_speaker, second_speaker)
return db.actor:money() < 1000
end
function zat_b215_actor_has_money_poor_pripyat(first_speaker, second_speaker)
return db.actor:money() >= 4000
end
function zat_b215_actor_has_no_money_poor_pripyat(first_speaker, second_speaker)
return db.actor:money() < 4000
end
function zat_b215_actor_has_money_rich(first_speaker, second_speaker)
return db.actor:money() >= 3000
end
function zat_b215_actor_has_no_money_rich(first_speaker, second_speaker)
return db.actor:money() < 3000
end
function zat_b215_actor_has_money_rich_pripyat(first_speaker, second_speaker)
return db.actor:money() >= 6000
end
function zat_b215_actor_has_no_money_rich_pripyat(first_speaker, second_speaker)
return db.actor:money() < 6000
end
function zat_b215_relocate_money_poor(first_speaker, second_speaker)
local zat_b215_money_poor = 1000
dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b215_money_poor)
end
function zat_b215_relocate_money_poor_pripyat(first_speaker, second_speaker)
local zat_b215_money_poor = 4000
dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b215_money_poor)
end
function zat_b215_relocate_money_rich(first_speaker, second_speaker)
local zat_b215_money_rich = 3000
dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b215_money_rich)
end
function zat_b215_relocate_money_rich_pripyat(first_speaker, second_speaker)
local zat_b215_money_rich = 6000
dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b215_money_rich)
end
function zat_b215_counter_greater_3(first_speaker, second_speaker)
local npc = dialogs.who_is_npc(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
return xr_conditions.counter_greater(actor, npc, {"zat_a9_way_to_pripyat_counter",3})
end
function zat_b215_counter_less_4(first_speaker, second_speaker)
local npc = dialogs.who_is_npc(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
return not xr_conditions.counter_greater(actor, npc, {"jup_a9_way_gates_counter",4})
end
function zat_b30_actor_has_noah_pda(first_speaker, second_speaker)
return db.actor:object("zat_b20_noah_pda") ~= nil
end
function zat_b30_sell_noah_pda(first_speaker, second_speaker)
local amount = 1000
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b20_noah_pda")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
end
-------------------------------------b40------------------------------------
Powróć do Pytania i odpowiedzi
Użytkownicy przeglądający to forum: svt07 oraz 3 gości