1365 lines
No EOL
48 KiB
Text
1365 lines
No EOL
48 KiB
Text
-- 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 |