e4s-sdk/gamedata/scripts/dialogs_jupiter.script
2026-06-17 23:06:51 +03:00

1365 lines
No EOL
48 KiB
Text
Raw Permalink Blame History

-- b208
function jup_b208_give_reward(first_speaker, second_speaker)
local amount = 5000
dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
treasure_manager.get_treasure_manager():give_treasure("jup_hiding_place_18")
treasure_manager.get_treasure_manager():give_treasure("jup_hiding_place_35")
treasure_manager.get_treasure_manager():give_treasure("jup_hiding_place_45")
end
-- a9
function jupiter_a9_actor_hasnt_all_mail_items(first_speaker, second_speaker)
return not jupiter_a9_actor_has_all_mail_items(first_speaker, second_speaker)
end
function jupiter_a9_actor_has_all_mail_items(first_speaker, second_speaker)
return ((db.actor:object("jup_a9_conservation_info") ~= nil) and (db.actor:object("jup_a9_power_info") ~= nil) and (db.actor:object("jup_a9_way_info") ~= nil))
end
function jupiter_a9_actor_has_any_items(first_speaker, second_speaker)
return db.actor:object("jup_a9_delivery_info") ~= nil or
db.actor:object("jup_a9_evacuation_info") ~= nil or
db.actor:object("jup_a9_losses_info") ~= nil or
db.actor:object("jup_a9_power_info") ~= nil or
db.actor:object("jup_a9_conservation_info") ~= nil or
db.actor:object("jup_a9_way_info") ~= nil or
db.actor:object("jup_a9_meeting_info") ~= nil
end
function jupiter_a9_actor_has_any_mail_items(first_speaker, second_speaker)
return db.actor:object("jup_a9_conservation_info") ~= nil or
db.actor:object("jup_a9_power_info") ~= nil or
db.actor:object("jup_a9_way_info") ~= nil
end
function jupiter_a9_actor_has_any_secondary_items(first_speaker, second_speaker)
return db.actor:object("jup_a9_delivery_info") ~= nil or
db.actor:object("jup_a9_evacuation_info") ~= nil or
db.actor:object("jup_a9_losses_info") ~= nil or
db.actor:object("jup_a9_meeting_info") ~= nil
end
function jupiter_a9_actor_hasnt_any_mail_items(first_speaker, second_speaker)
return db.actor:object("jup_a9_conservation_info") == nil or
db.actor:object("jup_a9_power_info") == nil or
db.actor:object("jup_a9_way_info") == nil
end
function jupiter_a9_freedom_leader_jupiter_delivery(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
end
function jupiter_a9_freedom_leader_jupiter_evacuation(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
end
function jupiter_a9_freedom_leader_jupiter_losses(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
end
function jupiter_a9_freedom_leader_jupiter_meeting(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
end
---------------------------------------------
function jupiter_a9_dolg_leader_jupiter_delivery(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
end
function jupiter_a9_dolg_leader_jupiter_evacuation(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
end
function jupiter_a9_dolg_leader_jupiter_losses(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
end
function jupiter_a9_dolg_leader_jupiter_meeting(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
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, 750)
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, 750)
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, 750)
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, 750)
db.actor:give_info_portion("jup_a9_delivery_info_sold")
end
function jupiter_a9_dolg_leader_jupiter_sell_all_secondary_items(first_speaker, second_speaker)
if jup_a9_actor_has_evacuation_info(first_speaker, second_speaker) then
actor_relocate_evacuation_info(first_speaker, second_speaker)
jupiter_a9_dolg_leader_jupiter_evacuation(first_speaker, second_speaker)
end
if jup_a9_actor_has_meeting_info(first_speaker, second_speaker) then
actor_relocate_meeting_info(first_speaker, second_speaker)
jupiter_a9_dolg_leader_jupiter_meeting(first_speaker, second_speaker)
end
if jup_a9_actor_has_losses_info(first_speaker, second_speaker) then
actor_relocate_losses_info(first_speaker, second_speaker)
jupiter_a9_dolg_leader_jupiter_losses(first_speaker, second_speaker)
end
if jup_a9_actor_has_delivery_info(first_speaker, second_speaker) then
actor_relocate_delivery_info(first_speaker, second_speaker)
jupiter_a9_dolg_leader_jupiter_delivery(first_speaker, second_speaker)
end
end
function jupiter_a9_freedom_leader_jupiter_sell_all_secondary_items(first_speaker, second_speaker)
if jup_a9_actor_has_evacuation_info(first_speaker, second_speaker) then
actor_relocate_evacuation_info(first_speaker, second_speaker)
jupiter_a9_freedom_leader_jupiter_evacuation(first_speaker, second_speaker)
end
if jup_a9_actor_has_meeting_info(first_speaker, second_speaker) then
actor_relocate_meeting_info(first_speaker, second_speaker)
jupiter_a9_freedom_leader_jupiter_meeting(first_speaker, second_speaker)
end
if jup_a9_actor_has_losses_info(first_speaker, second_speaker) then
actor_relocate_losses_info(first_speaker, second_speaker)
jupiter_a9_freedom_leader_jupiter_losses(first_speaker, second_speaker)
end
if jup_a9_actor_has_delivery_info(first_speaker, second_speaker) then
actor_relocate_delivery_info(first_speaker, second_speaker)
jupiter_a9_freedom_leader_jupiter_delivery(first_speaker, second_speaker)
end
end
function jup_a9_actor_has_conservation_info(first_speaker, second_speaker)
return db.actor:object("jup_a9_conservation_info") ~= nil
end
function jup_a9_actor_hasnt_conservation_info(first_speaker, second_speaker)
return not jup_a9_actor_has_conservation_info(first_speaker, second_speaker)
end
function actor_relocate_conservation_info(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_a9_conservation_info")
end
function jup_a9_actor_has_power_info(first_speaker, second_speaker)
return db.actor:object("jup_a9_power_info") ~= nil
end
function jup_a9_actor_hasnt_power_info(first_speaker, second_speaker)
return not jup_a9_actor_has_power_info(first_speaker, second_speaker)
end
function actor_relocate_power_info(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_a9_power_info")
end
function jup_a9_actor_has_way_info(first_speaker, second_speaker)
return db.actor:object("jup_a9_way_info") ~= nil
end
function jup_a9_actor_hasnt_way_info(first_speaker, second_speaker)
return not jup_a9_actor_has_way_info(first_speaker, second_speaker)
end
function actor_relocate_way_info(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_a9_way_info")
end
--------------------------------------------------
function jup_a9_actor_has_evacuation_info(first_speaker, second_speaker)
return db.actor:object("jup_a9_evacuation_info") ~= nil
end
function jup_a9_actor_hasnt_evacuation_info(first_speaker, second_speaker)
return not jup_a9_actor_has_evacuation_info(first_speaker, second_speaker)
end
function actor_relocate_evacuation_info(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_a9_evacuation_info")
db.actor:give_info_portion("jup_a9_evacuation_info_sold")
end
function jup_a9_actor_has_meeting_info(first_speaker, second_speaker)
return db.actor:object("jup_a9_meeting_info") ~= nil
end
function jup_a9_actor_hasnt_meeting_info(first_speaker, second_speaker)
return not jup_a9_actor_has_meeting_info(first_speaker, second_speaker)
end
function actor_relocate_meeting_info(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_a9_meeting_info")
db.actor:give_info_portion("jup_a9_meeting_info_sold")
end
function jup_a9_actor_has_delivery_info(first_speaker, second_speaker)
return db.actor:object("jup_a9_delivery_info") ~= nil
end
function jup_a9_actor_hasnt_delivery_info(first_speaker, second_speaker)
return not jup_a9_actor_has_delivery_info(first_speaker, second_speaker)
end
function actor_relocate_delivery_info(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_a9_delivery_info")
db.actor:give_info_portion("jup_a9_delivery_info_sold")
end
function jup_a9_actor_has_losses_info(first_speaker, second_speaker)
return db.actor:object("jup_a9_losses_info") ~= nil
end
function jup_a9_actor_hasnt_losses_info(first_speaker, second_speaker)
return not jup_a9_actor_has_losses_info(first_speaker, second_speaker)
end
function actor_relocate_losses_info(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_a9_losses_info")
db.actor:give_info_portion("jup_a9_losses_info_sold")
end
-- b206
function actor_has_plant(first_speaker, second_speaker)
return db.actor:object("jup_b206_plant") ~= nil
end
function actor_relocate_plant(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b206_plant")
end
-- b212
function actor_relocate_trapper_reward(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_wincheaster1300_trapper")
end
function zat_b106_trapper_reward(first_speaker, second_speaker)
if has_alife_info("zat_b106_one_hit") then
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 3000)
else
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2000)
end
end
-- Jupiter a10, by alex
function jup_a10_proverka_wpn(first_speaker, second_speaker)
local table = {
"wpn_desert_eagle",
"wpn_desert_eagle_nimble",
"wpn_sig550",
"wpn_g36",
"wpn_g36_nimble",
"wpn_fn2000",
"wpn_fn2000_nimble",
"wpn_groza",
"wpn_groza_nimble",
"wpn_val",
"wpn_vintorez",
"wpn_vintorez_nimble",
"wpn_svd",
"wpn_svu",
"wpn_pkm",
"wpn_spas12",
"wpn_spas12_nimble",
"wpn_protecta",
"wpn_protecta_nimble",
"wpn_gauss",
"wpn_rpg7",
"wpn_rg-6",
"wpn_pkm_zulus",
}
for k,v in pairs(table) do
if db.actor:item_in_slot(2)~= nil and db.actor:item_in_slot(2):section() == v then
return true
elseif db.actor:item_in_slot(3)~= nil and db.actor:item_in_slot(3):section() == v then
return true
end
end
return false
end
function jup_a10_proverka_wpn_false(first_speaker, second_speaker)
return not jup_a10_proverka_wpn(first_speaker, second_speaker)
end
function jup_a10_actor_has_money(first_speaker, second_speaker)
if has_alife_info("jup_a10_debt_wo_percent") then
return db.actor:money() >= 5000
else
return db.actor:money() >= 7000
end
end
function jup_a10_actor_has_not_money(first_speaker, second_speaker)
return not jup_a10_actor_has_money(first_speaker, second_speaker)
end
function jup_a10_actor_give_money(first_speaker, second_speaker)
if has_alife_info("jup_a10_debt_wo_percent") then
dialogs.relocate_money_from_actor(first_speaker, second_speaker, 5000)
db.actor:give_info_portion("jup_a10_bandit_take_money")
else
dialogs.relocate_money_from_actor(first_speaker, second_speaker, 7000)
db.actor:give_info_portion("jup_a10_bandit_take_all_money")
end
end
function jup_a10_vano_give_money(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 5000)
end
function jup_a10_actor_give_outfit_money(first_speaker, second_speaker)
dialogs.relocate_money_from_actor(first_speaker, second_speaker, 5000)
end
function jup_a10_actor_has_outfit_money(first_speaker, second_speaker)
return db.actor:money() >= 5000
end
function jup_a10_actor_has_not_outfit_money(first_speaker, second_speaker)
return not jup_a10_actor_has_outfit_money(first_speaker, second_speaker)
end
-- Jupiter b16, by alex
function if_actor_has_jup_b16_oasis_artifact(first_speaker, second_speaker)
return first_speaker:object("af_oasis_heart") ~= nil
end
function if_actor_hasnt_jup_b16_oasis_artifact(first_speaker, second_speaker)
return not if_actor_has_jup_b16_oasis_artifact(first_speaker, second_speaker)
end
function jupiter_b16_reward(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 7000)
end
function give_jup_b16_oasis_artifact(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "af_oasis_heart")
end
-- Jupiter A12, by yojig
function jup_a12_actor_has_15000_money(first_speaker, second_speaker)
return db.actor:money() >= 15000
end
function jup_a12_actor_do_not_has_15000_money(first_speaker, second_speaker)
return db.actor:money() < 15000
end
local jup_a12_af_table = {
[1] = "af_fire",
[2] = "af_gold_fish",
[3] = "af_glass",
[4] = "af_ice",
}
function jup_a12_actor_has_artefacts(first_speaker, second_speaker)
for k,v in pairs(jup_a12_af_table) do
if db.actor:object(v) ~= nil then
return true
end
end
return false
end
function jup_a12_actor_do_not_has_artefacts(first_speaker, second_speaker)
for k,v in pairs(jup_a12_af_table) do
if db.actor:object(v) ~= nil then
return false
end
end
return true
end
function jup_a12_actor_has_artefact_1(first_speaker, second_speaker)
return db.actor:object(jup_a12_af_table[1]) ~= nil
end
function jup_a12_actor_has_artefact_2(first_speaker, second_speaker)
return db.actor:object(jup_a12_af_table[2]) ~= nil
end
function jup_a12_actor_has_artefact_3(first_speaker, second_speaker)
return db.actor:object(jup_a12_af_table[3]) ~= nil
end
function jup_a12_actor_has_artefact_4(first_speaker, second_speaker)
return db.actor:object(jup_a12_af_table[4]) ~= nil
end
function jup_a12_transfer_ransom_from_actor(first_speaker, second_speaker)
if has_alife_info("jup_a12_ransom_by_money") then
dialogs.relocate_money_from_actor(first_speaker, second_speaker, 15000)
return
end
local jup_a12_info_table = {
[1] = "jup_a12_af_fire",
[2] = "jup_a12_af_gold_fish",
[3] = "jup_a12_af_glass",
[4] = "jup_a12_af_ice",
}
for i = 1,4 do
if has_alife_info(jup_a12_info_table[i]) then
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, jup_a12_af_table[i])
return
end
end
end
function jup_a12_transfer_5000_money_to_actor(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 5000)
treasure_manager.get_treasure_manager():give_treasure("jup_hiding_place_40")
treasure_manager.get_treasure_manager():give_treasure("jup_hiding_place_34")
end
function jup_a12_transfer_artefact_to_actor(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "af_gold_fish")
if has_alife_info("jup_a12_stalker_prisoner_free_dialog_done") then
treasure_manager.get_treasure_manager():give_treasure("jup_hiding_place_40")
treasure_manager.get_treasure_manager():give_treasure("jup_hiding_place_34")
end
end
function jup_a12_transfer_cashier_money_from_actor(first_speaker, second_speaker)
local amount = math.random(20, 50)*100
if db.actor:money() < amount then
amount = db.actor:money()
end
dialogs.relocate_money_from_actor(first_speaker, second_speaker, amount)
end
function who_is_actor(first_speaker, second_speaker)
local npc = second_speaker
if db.actor:id() ~= npc:id() then
npc = first_speaker
end
return npc
end
-- Zaton B30 on Jupiter part
function zat_b30_transfer_detectors(first_speaker, second_speaker)
local amount = 3
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "detector_elite", amount)
end
function zat_b30_actor_has_transfer_items(first_speaker, second_speaker)
local cnt = 0
local function zat_b30_count(npc, item)
if item:section() == "detector_elite" then
cnt = cnt + 1
end
end
db.actor:iterate_inventory(zat_b30_count, nil)
if cnt > 2 then
return true
end
return false
end
function zat_b30_actor_do_not_has_transfer_items(first_speaker, second_speaker)
return not zat_b30_actor_has_transfer_items(first_speaker, second_speaker)
end
--- Jupiter B32
function jup_b6_scientist_nuclear_physicist_scan_anomaly_precond(first_speaker, second_speaker)
if not has_alife_info("jup_b6_b32_quest_active") then
return false
elseif has_alife_info("jup_b6_give_task") and has_alife_info("jup_b32_task_addon_start") then
return false
elseif has_alife_info("jup_b6_task_fail") and has_alife_info("jup_b32_task_addon_start") then
return false
end
return true
end
function jup_b32_task_give_dialog_precond(first_speaker, second_speaker)
if has_alife_info("jup_b32_task_start") and not has_alife_info("jup_b32_task_end") then
return false
end
return true
end
function jup_b32_transfer_scanners(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "jup_b32_scanner_device", 3)
end
function jup_b32_transfer_scanners_2(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "jup_b32_scanner_device", 2)
end
function jup_b32_give_reward_to_actor(first_speaker, second_speaker)
local amount = 5000
dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
end
function jup_b32_anomaly_has_af(first_speaker, second_speaker)
local az_table = {
[1] = "jup_b32_anomal_zone",
[2] = "jup_b201_anomal_zone",
[3] = "jup_b209_anomal_zone",
[4] = "jup_b211_anomal_zone",
[5] = "jup_b10_anomal_zone",
}
local infop_table = {
[1] = "jup_b32_anomaly_1",
[2] = "jup_b32_anomaly_2",
[3] = "jup_b32_anomaly_3",
[4] = "jup_b32_anomaly_4",
[5] = "jup_b32_anomaly_5",
}
local index = 0
for i = 1, #infop_table do
if has_alife_info(infop_table[i]) then
index = i
break
end
end
if index == 0 then
return false
end
local anomal_zone = db.anomaly_by_name[az_table[index]]
if anomal_zone == nil then
return false
end
if anomal_zone.spawned_count > 0 then
disable_info(infop_table[index])
give_info("jup_b32_anomaly_true")
return true
end
return false
end
function jup_b32_anomaly_do_not_has_af(first_speaker, second_speaker)
if has_alife_info("jup_b32_anomaly_true") then
disable_info("jup_b32_anomaly_true")
return false
end
local az_table = {
[1] = "jup_b32_anomal_zone",
[2] = "jup_b201_anomal_zone",
[3] = "jup_b209_anomal_zone",
[4] = "jup_b211_anomal_zone",
[5] = "jup_b10_anomal_zone",
}
local infop_table = {
[1] = "jup_b32_anomaly_1",
[2] = "jup_b32_anomaly_2",
[3] = "jup_b32_anomaly_3",
[4] = "jup_b32_anomaly_4",
[5] = "jup_b32_anomaly_5",
}
local index = 0
for i = 1, #infop_table do
if has_alife_info(infop_table[i]) then
index = i
break
end
end
if index == 0 then
return true
end
local anomal_zone = db.anomaly_by_name[az_table[index]]
if anomal_zone == nil then
disable_info(infop_table[index])
return true
end
if anomal_zone.spawned_count > 0 then
return false
end
disable_info(infop_table[index])
return true
end
--- Jupiter 209
function jup_b209_get_monster_scanner (first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "jup_b209_monster_scanner", 1)
end
function jup_b209_return_monster_scanner (first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b209_monster_scanner", 1)
end
--- Jupiter 207
function jup_b207_generic_decrypt_need_dialog_precond(first_speaker, second_speaker)
if db.actor:object("jup_b9_blackbox") ~= nil then
return true
end
if xr_conditions.check_npc_name(first_speaker, second_speaker, {"mechanic"})
or xr_conditions.check_npc_name(first_speaker, second_speaker, {"tech"}) then
return false
end
return false
end
function jup_b207_actor_has_dealers_pda(first_speaker, second_speaker)
return db.actor:object("device_pda_zat_b5_dealer") ~= nil
end
function jup_b207_sell_dealers_pda(first_speaker, second_speaker)
local amount = 4000
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "device_pda_zat_b5_dealer")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
db.actor:give_info_portion("jup_b207_dealers_pda_sold")
end
function jup_b207_give_dealers_pda(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "device_pda_zat_b5_dealer")
end
function jup_b207_actor_has_merc_pda_with_contract(first_speaker, second_speaker)
return db.actor:object("jup_b207_merc_pda_with_contract") ~= nil
end
function jup_b207_sell_merc_pda_with_contract(first_speaker, second_speaker)
local amount = 1000
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, amount)
db.actor:give_info_portion("jup_b207_merc_pda_with_contract_sold")
end
function jup_b207_transfer_blackmail_reward(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b207_merc_pda_with_contract")
end
function jup_b207_transfer_blackmail_reward_for_pda(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b207_merc_pda_with_contract")
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_abakan")
end
---B1----
function give_jup_b1_art(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b1_half_artifact")
end
function if_actor_has_jup_b1_art(first_speaker, second_speaker)
return db.actor:object("jup_b1_half_artifact") ~= nil
end
function jup_b1_actor_have_good_suit(first_speaker, second_speaker)
local actor_true = false
local suits_tbl = {
["scientific_outfit"] = true,
["military_outfit"] = true,
["dolg_heavy_outfit"] = true,
["exo_outfit"] = true,
["svoboda_light_outfit"] = true,
["svoboda_heavy_outfit"] = true,
["cs_heavy_outfit"] = true,
}
local helmets_tbl = {
["helm_battle"] = true,
["helm_tactic"] = true,
["helm_protective"] = true,
}
if db.actor:item_in_slot(7) ~= nil and suits_tbl[db.actor:item_in_slot(7):section()] then
actor_true = true
end
if db.actor:item_in_slot(12) ~= nil and helmets_tbl[db.actor:item_in_slot(12):section()] then
actor_true = true
end
return actor_true
end
function jup_b1_actor_do_not_have_good_suit(first_speaker, second_speaker)
return not jup_b1_actor_have_good_suit(first_speaker, second_speaker)
end
function jup_b1_reward_actor(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 6000)
end
---B6----
function jup_b6_actor_outfit_cs(first_speaker, second_speaker)
if db.actor:item_in_slot(7) ~= nil and db.actor:item_in_slot(7):section() == "cs_heavy_outfit" then
return true
end
return false
end
function jup_b6_first_reward_for_actor(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2500)
end
function jup_b6_second_reward_for_actor(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2500)
end
function jup_b6_all_reward_for_actor(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 5000)
end
function jup_b6_first_reward_for_actor_extra(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 3500)
end
function jup_b6_second_reward_for_actor_extra(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 3500)
end
function jup_b6_all_reward_for_actor_extra(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 7000)
end
function jup_b6_reward_actor_by_detector(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "detector_elite")
end
function jup_b6_actor_can_start(first_speaker, second_speaker)
if has_alife_info("jup_b1_squad_is_dead") and
not (has_alife_info("jup_b6_freedom_employed") or
has_alife_info("jup_b6_duty_employed") or
has_alife_info("jup_b6_gonta_employed") or
has_alife_info("jup_b6_exprisoner_work_on_sci")) then
return false
end
return true
end
function jup_b6_actor_can_not_start(first_speaker, second_speaker)
return not jup_b6_actor_can_start(first_speaker, second_speaker)
end
function jup_b6_stalker_dialog_precond(first_speaker, second_speaker)
local npc = dialogs.who_is_npc(first_speaker, second_speaker)
npc = alife():object(npc:id())
if not(npc) then
return false
end
if alife():object(npc.group_id) == nil then
return false
end
local squad_name = alife():object(npc.group_id):section_name()
if squad_name ~= nil and squad_name ~= "" then
if not has_alife_info("jup_b1_squad_is_dead") and squad_name == "jup_b1_stalker_squad" then
return true
elseif has_alife_info("jup_b6_freedom_employed") and squad_name == "jup_b6_stalker_freedom_squad" then
return true
elseif has_alife_info("jup_b6_duty_employed") and squad_name == "jup_b6_stalker_duty_squad" then
return true
elseif has_alife_info("jup_b6_gonta_employed") and squad_name == "jup_b6_stalker_gonta_squad" then
return true
elseif has_alife_info("jup_b6_exprisoner_work_on_sci") and squad_name == "jup_b6_stalker_exprisoner_squad" then
return true
end
end
return false
end
function jup_b1_stalker_squad_thanks(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "medkit_scientic", 3)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "antirad", 5)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "drug_psy_blockade", 2)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "drug_antidot", 2)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "drug_radioprotector", 2)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "drug_anabiotic")
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "helm_protective")
end
-- Jupiter B217 functions -------------------------------------------------
function jup_b217_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("jup_b217_tech_instrument_1_brought"))
or(section=="toolkit_2" and not has_alife_info("jup_b217_tech_instrument_2_brought"))
or(section=="toolkit_3" and not has_alife_info("jup_b217_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
---------------------- b200
function jupiter_b200_tech_materials_relocate(first_speaker, second_speaker)
local need_items = {
["jup_b200_tech_materials_wire"] = true,
["jup_b200_tech_materials_acetone"] = true,
["jup_b200_tech_materials_textolite"] = true,
["jup_b200_tech_materials_transistor"] = true,
["jup_b200_tech_materials_capacitor"] = true}
local count = 0
local items_to_relocate = {}
local function relocate_and_inc_count(npc, item)
if need_items[item:section()] == true then
count = count + 1
if items_to_relocate[item:section()] == nil then
items_to_relocate[item:section()] = 1
else
items_to_relocate[item:section()] = items_to_relocate[item:section()] + 1
end
end
end
db.actor:iterate_inventory(relocate_and_inc_count, nil)
xr_effects.inc_counter(db.actor, nil, {"jup_b200_tech_materials_brought_counter",tostring(count)})
for k,v in pairs (items_to_relocate) do
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, k, v)
end
end
---------------------- b4 ----------------------
function npc_in_b4_smart(first_speaker, second_speaker)
return dialogs.is_npc_in_current_smart(first_speaker, second_speaker, "jup_b4")
end
---------------------- b202 ----------------------
function jup_b202_transfer_medkit(first_speaker, second_speaker)
-- local npc = dialogs.who_is_npc(first_speaker, second_speaker)
-- local actor = dialogs.who_is_actor(first_speaker, second_speaker)
-- if db.actor:object("medkit") ~= nil then
-- dialogs.relocate_item_section(npc,"medkit","out")
-- elseif db.actor:object("medkit_army") ~= nil then
-- dialogs.relocate_item_section(npc,"medkit_army","out")
-- elseif db.actor:object("medkit_scientic") ~= nil then
-- dialogs.relocate_item_section(npc,"medkit_scientic","out")
-- end
if db.actor:object("medkit") ~= nil then
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "medkit")
elseif db.actor:object("medkit_army") ~= nil then
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "medkit_army")
elseif db.actor:object("medkit_scientic") ~= nil then
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "medkit_scientic")
end
end
function jup_b202_actor_has_medkit(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
return (actor:object("medkit") ~= nil) or (actor:object("medkit_army") ~= nil) or (actor:object("medkit_scientic") ~= nil)
end
function jup_b202_hit_bandit_from_actor(first_speaker, second_speaker)
local npc = dialogs.who_is_npc(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
db.actor:give_info_portion("jup_b202_bandit_hited")
db.actor:give_info_portion("jup_b202_bandit_hited_by_actor")
xr_effects.set_squad_goodwill(actor, npc, {"jup_b202_bandit_squad", "enemy"})
--xr_effects.hit_npc_from_actor(actor,npc,{"jup_b202_bandit"})
end
function jup_b202_medic_dialog_precondition(first_speaker, second_speaker)
if has_alife_info("jup_b218_gather_squad_complete") then
return not has_alife_info("jup_b202_polustanok")
else
return not has_alife_info("jup_b52_medic_testimony")
end
end
---------------------- b220 ----------------------
function jupiter_b220_all_hunted(first_speaker, second_speaker)
if has_alife_info("jup_b220_trapper_bloodsucker_lair_hunted_told")
and has_alife_info("jup_b220_trapper_zaton_chimera_hunted_told")
and has_alife_info("jup_b211_swamp_bloodsuckers_hunt_done")
and has_alife_info("jup_b208_burers_hunt_done")
and has_alife_info("jup_b212_jupiter_chimera_hunt_done")
then
return false
end
return true
end
function jupiter_b220_no_one_hunted(first_speaker, second_speaker)
if has_alife_info("jup_b220_trapper_about_himself_told")
and has_alife_info("zat_b57_den_of_the_bloodsucker_tell_stalkers_about_destroy_lair_give")
and not has_alife_info("jup_b220_trapper_bloodsucker_lair_hunted_told") then
return false
elseif has_alife_info("zat_b106_chimera_dead")
and not has_alife_info("jup_b220_trapper_zaton_chimera_hunted_told") then
return false
elseif has_alife_info("jup_b6_all_hunters_are_dead")
and not has_alife_info("jup_b211_swamp_bloodsuckers_hunt_done") then
return false
elseif has_alife_info("jup_b208_burers_dead")
and not has_alife_info("jup_b208_burers_hunt_done") then
return false
elseif has_alife_info("jup_b212_jupiter_chimera_dead")
and not has_alife_info("jup_b212_jupiter_chimera_hunt_done") then
return false
end
return true
end
---------------------- b9 ----------------------
local money_count_table = { [0] = 3000,
[1] = 2850,
[2] = 2700,
[3] = 2550,
[4] = 2400,
[5] = 2250,
[6] = 2100,
[7] = 1950,
[8] = 1800,
[9] = 1650
}
function jup_b9_actor_has_money(first_speaker, second_speaker)
local money_count = money_count_table[0]
for i=1,9 do
if has_alife_info("jup_b200_tech_materials_brought_counter_"..i) then
money_count = money_count_table[i]
end
end
return db.actor:money() >= money_count
end
function give_jup_b9_blackbox(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b9_blackbox")
end
function jup_b9_actor_has_not_money(first_speaker, second_speaker)
return not jup_b9_actor_has_money(first_speaker, second_speaker)
end
function jupiter_b9_relocate_money(first_speaker, second_speaker)
local money_count = money_count_table[0]
for i=1,9 do
if has_alife_info("jup_b200_tech_materials_brought_counter_"..i) then
money_count = money_count_table[i]
end
end
dialogs.relocate_money_from_actor(first_speaker, second_speaker, money_count)
end
function if_actor_has_jup_b9_blackbox(first_speaker, second_speaker)
return db.actor:object("jup_b9_blackbox") ~= nil
end
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> jup_b9_blackbox
---------------------- b43 ----------------------
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
function if_actor_has_af_mincer_meat(first_speaker, second_speaker)
return first_speaker:object("af_mincer_meat") ~= nil
end
function if_actor_has_af_fuzz_kolobok(first_speaker, second_speaker)
return first_speaker:object("af_fuzz_kolobok") ~= nil
end
function actor_has_first_or_second_artefact(first_speaker, second_speaker)
return first_speaker:object("af_mincer_meat") ~= nil or first_speaker:object("af_fuzz_kolobok") ~= nil
end
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
function transfer_af_mincer_meat(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "af_mincer_meat")
end
function transfer_af_fuzz_kolobok(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "af_fuzz_kolobok")
end
-- <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
function pay_cost_to_guide_to_pripyat(first_speaker, second_speaker)
dialogs.relocate_money_from_actor(first_speaker, second_speaker, 5000)
end
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
function jup_b43_actor_has_5000_money(first_speaker, second_speaker)
return db.actor:money() >= 5000
end
function jup_b43_actor_do_not_has_5000_money(first_speaker, second_speaker)
return db.actor:money() < 5000
end
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
function jup_b43_reward_for_first_artefact(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2500)
end
function jup_b43_reward_for_second_artefact(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 3500)
end
function jup_b43_reward_for_both_artefacts(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 6000)
end
-- Jupiter B15 functions -------------------------------------------------
function jup_b15_dec_counter(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_effects.dec_counter(actor, npc, {"jup_b15_full_drunk_count", 1})
end
-- Jupiter B46 ------------------------------------------------------------
function jup_b46_transfer_duty_founder_pda(first_speaker, second_speaker)
local npc = dialogs.who_is_npc(first_speaker, second_speaker)
if db.actor:object("jup_b46_duty_founder_pda") ~= nil then
dialogs.relocate_item_section(npc,"jup_b46_duty_founder_pda","out")
end
end
function jup_b46_sell_duty_founder_pda_to_owl(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b46_duty_founder_pda")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2500)
db.actor:give_info_portion("jup_b46_duty_founder_pda_sold")
db.actor:give_info_portion("jup_b46_duty_founder_pda_to_stalkers")
end
function jup_b46_actor_has_founder_pda(first_speaker, second_speaker)
return db.actor:object("jup_b46_duty_founder_pda") ~= nil
end
function jup_b46_sell_duty_founder_pda(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
if has_alife_info("jup_b46_duty_founder_pda_to_freedom") then
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 4000)
dialogs.relocate_item_section(actor,"wpn_sig550","in",1)
dialogs.relocate_item_section(actor,"ammo_5.56x45_ss190","in",5)
elseif has_alife_info("jup_b46_duty_founder_pda_to_duty") then
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 4000)
dialogs.relocate_item_section(actor,"wpn_groza","in",1)
dialogs.relocate_item_section(actor,"ammo_9x39_ap","in",2)
dialogs.relocate_item_section(actor,"ammo_vog-25","in",2)
end
end
-- Jupiter B218 functions ---------------------------------------------------
function jup_b218_counter_not_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 not xr_conditions.counter_equal(actor, npc, {"jup_b218_squad_members_count",3})
end
function jup_b218_counter_equal_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_equal(actor, npc, {"jup_b218_squad_members_count",3})
end
function jup_b218_counter_not_0(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_equal(actor, npc, {"jup_b218_squad_members_count",0})
end
--function jup_b218_actor_outfit_check_not(first_speaker, second_speaker)
-- if db.actor:item_in_slot(7) ~= nil and db.actor:item_in_slot(7):section() == "scientific_outfit" then
-- return false
-- end
-- return true
--end
--function jup_b218_actor_outfit_check(first_speaker, second_speaker)
-- if db.actor:item_in_slot(7) ~= nil and db.actor:item_in_slot(7):section() == "scientific_outfit" then
-- return true
-- end
-- return false
--end
-- Jupiter B4 -------------------------------------------------------------
function jup_b4_is_actor_not_enemies_to_freedom(first_speaker, second_speaker)
return not jup_b4_is_actor_enemies_to_freedom(first_speaker, second_speaker)
end
function jup_b4_is_actor_enemies_to_freedom(first_speaker, second_speaker)
return game_relations.get_npcs_relation(first_speaker, second_speaker) == game_object.enemy
end
function jup_b4_is_actor_friend_to_freedom(first_speaker, second_speaker)
return game_relations.get_npcs_relation(first_speaker, second_speaker) == game_object.friend
end
function jup_b4_is_actor_neutral_to_freedom(first_speaker, second_speaker)
return game_relations.get_npcs_relation(first_speaker, second_speaker) == game_object.neutral
end
function jup_b4_is_actor_not_enemies_to_dolg(first_speaker, second_speaker)
return not jup_b4_is_actor_enemies_to_dolg(first_speaker, second_speaker)
end
function jup_b4_is_actor_enemies_to_dolg(first_speaker, second_speaker)
return game_relations.get_npcs_relation(first_speaker, second_speaker) == game_object.enemy
end
function jup_b4_is_actor_friend_to_dolg(first_speaker, second_speaker)
return game_relations.get_npcs_relation(first_speaker, second_speaker) == game_object.friend
end
function jup_b4_is_actor_neutral_to_dolg(first_speaker, second_speaker)
return game_relations.get_npcs_relation(first_speaker, second_speaker) == game_object.neutral
end
--------------------------- Jupiter b25 -------------------------------------
function jup_b25_frase_count_inc(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_effects.inc_counter(actor, npc,{"jup_b25_frase",1})
end
-------------------------- Jupiter b47 --------------------------------------
function jup_b47_jupiter_docs_enabled(first_speaker, second_speaker)
local a = false
local b = false
local c = false
local items_table = {
"jup_a9_conservation_info",
"jup_a9_power_info",
"jup_a9_way_info",
"jup_a9_evacuation_info",
"jup_a9_meeting_info",
"jup_a9_losses_info",
"jup_a9_delivery_info"
-- "jup_b47_jupiter_products_info"
}
for k,v in pairs(items_table) do
if db.actor:object(v) ~= nil then
a = true
break
end
end
b = ((not has_alife_info("jup_b47_jupiter_products_start")) and (db.actor:object("jup_b47_jupiter_products_info") ~= nil))
c = (has_alife_info("jup_b6_scientist_nuclear_physicist_jupiter_docs_talked"))
return (a or b) and (not c)
end
function jup_b47_jupiter_products_info_enabled(first_speaker, second_speaker)
return db.actor:object("jup_b47_jupiter_products_info") ~= nil
end
function jup_b47_jupiter_products_info_disabled(first_speaker, second_speaker)
return db.actor:object("jup_b47_jupiter_products_info") == nil
end
function jup_b47_jupiter_products_info_revard(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(npc,"jup_b47_jupiter_products_info","out")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 7000)
dialogs.relocate_item_section(actor,"medkit_scientic","in",3)
dialogs.relocate_item_section(actor,"antirad","in",5)
dialogs.relocate_item_section(actor,"drug_psy_blockade","in",2)
dialogs.relocate_item_section(actor,"drug_antidot","in",2)
dialogs.relocate_item_section(actor,"drug_radioprotector","in",2)
end
function jup_b47_actor_has_merc_pda(first_speaker, second_speaker)
return db.actor:object("jup_b47_merc_pda") ~= nil
end
function jup_b47_actor_has_not_merc_pda(first_speaker, second_speaker)
return not jup_b47_actor_has_merc_pda(first_speaker, second_speaker)
end
function jup_b47_merc_pda_revard(first_speaker, second_speaker)
local npc = dialogs.who_is_npc(first_speaker, second_speaker)
dialogs.relocate_item_section(npc,"jup_b47_merc_pda","out")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2500)
end
function jup_b47_actor_can_take_task(first_speaker, second_speaker)
local a = has_alife_info("jup_b6_task_done") and (not has_alife_info("jup_b6_task_fail"))
local b = has_alife_info("jup_b6_task_fail") and (not has_alife_info("jup_b6_task_done"))
return a or b
end
function jup_b47_employ_squad(first_speaker, second_speaker)
local a = has_alife_info("jup_b47_bunker_guards_started") and (not has_alife_info("jup_b47_bunker_guards_done"))-- or has_alife_info("jup_b6_employ_stalker")
local b = has_alife_info("jup_b6_employ_stalker") and (not has_alife_info("jup_b6_employed_stalker"))--not (has_alife_info("jup_b47_bunker_guards_done") and has_alife_info("jup_b6_employed_stalker"))
return a or b
end
function jup_b47_bunker_guard_revard(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 4000)
dialogs.relocate_item_section(actor,"drug_psy_blockade","in",2)
dialogs.relocate_item_section(actor,"drug_antidot","in",3)
dialogs.relocate_item_section(actor,"drug_radioprotector","in",3)
end
function jup_b47_gauss_rifle_revard(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 12000)
end
function jup_b47_actor_has_hauss_rifle_docs(first_speaker, second_speaker)
return db.actor:object("zat_a23_gauss_rifle_docs") ~= nil
end
-- Jupiter B10 --------------------------------------------------------------
function jup_b10_ufo_memory_give_to_npc(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b10_ufo_memory")
end
function jup_b10_ufo_memory_give_to_actor(first_speaker, second_speaker)
return first_speaker:object("jup_b10_ufo_memory") ~= nil
end
function jup_b10_ufo_memory_2_give_to_actor(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "jup_b10_ufo_memory_2")
end
function jup_b10_ufo_has_money_1000(first_speaker, second_speaker)
return db.actor:money() >= 1000
end
function jup_b10_ufo_has_money_3000(first_speaker, second_speaker)
return db.actor:money() >= 2000
end
function jup_b10_ufo_hasnt_money_1000(first_speaker, second_speaker)
return not jup_b10_ufo_has_money_1000(first_speaker, second_speaker)
end
function jup_b10_ufo_hasnt_money_3000(first_speaker, second_speaker)
return not jup_b10_ufo_has_money_3000(first_speaker, second_speaker)
end
function jup_b10_ufo_relocate_money_1000(first_speaker, second_speaker)
dialogs.relocate_money_from_actor(first_speaker, second_speaker, 1000)
end
function jup_b10_ufo_relocate_money_3000(first_speaker, second_speaker)
dialogs.relocate_money_from_actor(first_speaker, second_speaker, 2000)
end
function jup_b10_actor_has_ufo_memory(first_speaker, second_speaker)
return db.actor:object("jup_b10_ufo_memory") ~= nil
end
-------------- jup_b211 ---------------------
function jup_b211_kill_bludsuckers_reward(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(second_speaker, first_speaker, 3000)
end
function jup_b19_transfer_conserva_to_actor(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "conserva")
end
----------------------------------
function jupiter_b6_sell_halfartefact (first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2000)
end
-----------------------------------
function pri_a15_sokolov_actor_has_note(first_speaker, second_speaker)
return db.actor:object("jup_b205_sokolov_note") ~= nil
end
function pri_a15_sokolov_actor_has_not_note(first_speaker, second_speaker)
return not pri_a15_sokolov_actor_has_note(first_speaker, second_speaker)
end
function pri_a15_sokolov_actor_give_note(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b205_sokolov_note")
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "medkit_army")
end
function jup_b47_actor_not_enemy_to_freedom(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.is_faction_enemy_to_actor(actor, npc, {"freedom"})
end
function jup_b47_actor_not_enemy_to_dolg(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.is_faction_enemy_to_actor(actor, npc, {"dolg"})
end
function jup_b15_actor_sci_outfit(first_speaker, second_speaker)
return (db.actor:object("scientific_outfit") ~= nil)
end
function jup_b15_no_actor_sci_outfit(first_speaker, second_speaker)
return (db.actor:object("scientific_outfit") == nil)
end
function jup_b19_reward(first_speaker, second_speaker)
treasure_manager.get_treasure_manager():give_treasure("jup_hiding_place_38")
end