function give_weapon_from_trader(trader, actor)
dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
dialogs.relocate_item_section(trader, "wpn_bizon", "in")
dialogs.relocate_item_section(trader, "wpn_knife", "in")
dialogs.relocate_item_section(first_speaker, "medkit", "in")
dialogs.relocate_item_section(first_speaker, "bandage", "in")
dialogs.relocate_item_section(first_speaker, "medkit", "in")
dialogs.relocate_item_section(first_speaker, "bandage", "in")
dialogs.relocate_item_section(first_speaker, "grenade_f1", "in")
dialogs.relocate_item_section(first_speaker, "grenade_f1", "in")
ammo_manager.give_loaded("mag_64_9x18_fmj")
ammo_manager.give_loaded("mag_64_9x18_fmj")
end
--------------------------------------------------------------------------------------------------------
-- Trader Repair
--------------------------------------------------------------------------------------------------------
local weapon_profit_margin = 1.3
local armor_profit_margin = 1.2
function trader_repair_precond(trader, actor)
local item_in_slot_1 = db.actor:item_in_slot(1)
local item_in_slot_2 = db.actor:item_in_slot(2)
local item_in_slot_6 = db.actor:item_in_slot(6)
if item_in_slot_1 ~= nil and 1 > item_in_slot_1:condition() + 0.01 then return true
elseif item_in_slot_2 ~= nil and 1 > item_in_slot_2:condition() + 0.01 then return true
elseif item_in_slot_6 ~= nil and 1 > item_in_slot_6:condition() + 0.01 then return true
else return false
end
end
function trader_check_money_s1(trader, actor)
local item_in_slot = db.actor:item_in_slot(1)
if item_in_slot ~= nil then
local item_repair_cost = math.floor( (1-item_in_slot:condition()) * item_in_slot:cost() * weapon_profit_margin )
if item_repair_cost > 0 and db.actor:money() >= item_repair_cost and 1 > item_in_slot:condition() then
return true
end
end
return false
end
function trader_check_money_s2(trader, actor)
local item_in_slot = db.actor:item_in_slot(2)
if item_in_slot ~= nil then
local item_repair_cost = math.floor( (1-item_in_slot:condition()) * item_in_slot:cost() * weapon_profit_margin )
if item_repair_cost > 0 and db.actor:money() >= item_repair_cost and 1 > item_in_slot:condition() then
return true
end
end
return false
end
function trader_check_money_s6(trader, actor)
local item_in_slot = db.actor:item_in_slot(6)
if item_in_slot ~= nil then
local item_repair_cost = math.floor( (1-item_in_slot:condition()) * item_in_slot:cost() * armor_profit_margin )
if item_repair_cost > 0 and db.actor:money() >= item_repair_cost and 1 > item_in_slot:condition() then
return true
end
end
return false
end
function trader_repiar_weapon_s1(trader, actor)
local item_in_slot = db.actor:item_in_slot(1)
if item_in_slot ~= nil then
local item_repair_cost = math.floor( (1-item_in_slot:condition()) * item_in_slot:cost() * weapon_profit_margin )
item_in_slot:set_condition(1)
dialogs.relocate_money(actor, item_repair_cost, "out")
end
end
function trader_repiar_weapon_s2(trader, actor)
local item_in_slot = db.actor:item_in_slot(2)
if item_in_slot ~= nil then
local item_repair_cost = math.floor( (1-item_in_slot:condition()) * item_in_slot:cost() * weapon_profit_margin )
item_in_slot:set_condition(1)
dialogs.relocate_money(actor, item_repair_cost, "out")
end
end
function trader_repiar_armor_s6(trader, actor)
local item_in_slot = db.actor:item_in_slot(6)
if item_in_slot ~= nil then
local item_repair_cost = math.floor( (1-item_in_slot:condition()) * item_in_slot:cost() * armor_profit_margin )
amk_mod.repair_armor(1)
dialogs.relocate_money(actor, item_repair_cost, "out")
end
end
function repair_costs(first_speaker, second_speaker)
local task_texture, task_rect = get_texture_info("ui_iconsTotal_lost_money")
local item_name_and_price = ""
local item_repair_cost = 0
if db.actor ~= nil then
local item_in_slot_1 = db.actor:item_in_slot(1)
local item_in_slot_2 = db.actor:item_in_slot(2)
local item_in_slot_6 = db.actor:item_in_slot(6)
if item_in_slot_1 ~= nil then
item_repair_cost = math.floor( (1-item_in_slot_1:condition()) * item_in_slot_1:cost() * weapon_profit_margin )
if item_repair_cost > 0 then
item_name_and_price = game.translate_string("list_trader_repair_0").." %c[255,238,155,23]"..item_repair_cost.." rubli%c[default]"
db.actor:give_talk_message(item_name_and_price, task_texture, task_rect, "iconed_trade_info")
end
end
if item_in_slot_2 ~= nil then
item_repair_cost = math.floor( (1-item_in_slot_2:condition()) * item_in_slot_2:cost() * weapon_profit_margin )
if item_repair_cost > 0 then
item_name_and_price = game.translate_string("list_trader_repair_1").." %c[255,238,155,23]"..item_repair_cost.." rubli%c[default]"
db.actor:give_talk_message(item_name_and_price, task_texture, task_rect, "iconed_trade_info")
end
end
if item_in_slot_6 ~= nil then
item_repair_cost = math.floor( (1-item_in_slot_6:condition()) * item_in_slot_6:cost() * armor_profit_margin )
if item_repair_cost > 0 then
item_name_and_price = game.translate_string("list_trader_repair_2").." %c[255,238,155,23]"..item_repair_cost.." rubli%c[default]"
db.actor:give_talk_message(item_name_and_price, task_texture, task_rect, "iconed_trade_info")
end
end
end
end
function trader_miniquest_precond(trader, actor)
local zz = false
-- ×čňŕĺě customdata
local obj = alife():story_object(3)
if (obj) then
local t = amk.get_trader_data(obj)
local cd = amk.parse_custom_data(t.custom)
if (cd.microquest and cd.microquest.reward_money and cd.microquest.reward_items and tonumber(cd.microquest.reward_money) > 0 and cd.microquest.reward_items ~= "") then
zz = true
end
end
return zz
end
function trader_check_money_miniquest(trader, actor)
local zz = false
if (db.actor:money() >= 100) then
zz = true
end
return zz
end
function trader_miniquest_transfer(trader, actor)
dialogs.relocate_money(actor, 100, "out")
news_main.on_miniquest_reward(trader)
end
function trader_miniquest_free_transfer(trader, actor)
news_main.on_miniquest_reward(trader)
end
function trader_check_miniquest_free(trader, actor)
if (has_alife_info("esc_trader_miniquest_free")) then
return true
end
return false
end
function trader_check_miniquest_free_neg(trader, actor)
if (has_alife_info("esc_trader_miniquest_free")) then
return false
end
return true
end
function trader_check_miniquest_free_all_neg(trader, actor)
if (has_alife_info("esc_trader_miniquest_free") or has_alife_info("esc_trader_miniquest_notfree")) then
return false
end
return true
end
--------------------------------------------------------------------------------------------------------
-- Dialog & InfoPortions Function
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
-- Trader
--------------------------------------------------------------------------------------------------------
function transfer_deneg(first_speaker, second_speaker)
dialogs.relocate_money(second_speaker, 300, "in")
dialogs.relocate_item_section(second_speaker, "detector_simple", "in")
dialogs.relocate_item_section(second_speaker, "amk_metka", "in")
dialogs.relocate_item_section(second_speaker, "treasure_item", "in")
end
function otday_art (first_speaker, second_speaker)
dialogs.relocate_item_section(second_speaker, "amk_af_night_star", "out")
end
function have_a_art()
local actor = db.actor
if actor ~= nil and actor:object("amk_af_night_star") ~= nil and actor:dont_has_info("test_quest_art_vziat") then
actor:give_info_portion("test_quest_art_vziat")
end
end
function have_a_art2 (stalker, player)
return stalker:object ("amk_af_night_star") ~= nil
end
function trader_alredy_give_job(trader, actor)
if (has_alife_info("agroprom_military_case") and not has_alife_info("agroprom_military_case_done")) or
(has_alife_info("escape_blockpost_case") and not has_alife_info("escape_blockpost_case_done")) or
(has_alife_info("tutorial_artefact_start") and not has_alife_info("tutorial_artefact_done")) or
(has_alife_info("tutorial_wounded_start") and not has_alife_info("esc_serious_talk"))
then
return true
end
return false
end
function trader_give_extra_job(trader, actor)
local actor = db.actor
if has_alife_info("escape_blockpost_case") and not has_alife_info("escape_blockpost_case_done")
then
return true
end
return false
end
function bandits_die(actor,npc)
local actor = db.actor
if has_alife_info("esc_kill_bandits_quest_kill") and not has_alife_info("esc_kill_bandits_noquest_kill")
then
return true
end
return false
end
function trader_need_extra_job(trader, actor)
if not has_alife_info("escape_blockpost_case") and
has_alife_info("esc_return")
then
return true
end
return false
end
function is_tutorial()
return not has_alife_info("tutorial_end")
end
function is_not_tutorial()
return has_alife_info("tutorial_end")
end
function is_not_tutorial_art(actor, trader)
local tutorial_artefact = db.actor:object("af_blood_tutorial")
if (has_alife_info("tutorial_artefact_start") and not has_alife_info("tutorial_artefact_done")
and tutorial_artefact ~= nil) or has_alife_info("tutorial_artefact_done")
then
return true
end
return false
end
function not_final_job(trader, actor)
local actor = db.actor
return not has_alife_info("escape_blockpost_case_done")
end
function trader_test(actor, npc)
printf ("!!!!!")
return true
end
function trader_dont_give_job(first_speaker, second_speaker)
return not trader_alredy_give_job(first_speaker, second_speaker)
end
function finalize_quests(first_speaker, second_speaker)
if tutorial_artefact_end(first_speaker, second_speaker) == true or
tutorial_wounded_end(first_speaker, second_speaker) == true
then
return true
end
return false
end
function not_finalize_quests(first_speaker, second_speaker)
return not this.finalize_quests(first_speaker, second_speaker)
end
function tutorial_artefact_end(first_speaker, second_speaker)
local actor = db.actor
local tutorial_artefact = first_speaker:object("af_blood_tutorial")
if has_alife_info("tutorial_artefact_start") and
not has_alife_info("tutorial_artefact_done") and
tutorial_artefact ~= nil
then
return true
end
return false
end
function tutorial_artefact_have_not(first_speaker, second_speaker)
local actor = db.actor
local tutorial_artefact = first_speaker:object("af_blood_tutorial")
if has_alife_info("tutorial_artefact_start") and
not has_alife_info("tutorial_artefact_done") and
tutorial_artefact == nil
then
return true
end
return false
end
function tutorial_wounded_end(first_speaker, second_speaker)
local actor = db.actor
-- local wounded_flash = first_speaker:object("esc_wounded_flash")
if has_alife_info("tutorial_wounded_start") and
has_alife_info("tutorial_wounded_give_info") and
not has_alife_info("esc_serious_talk")
-- and wounded_flash ~= nil
then
return true
end
return false
end
function trader_dont_has_job(first_speaker, second_speaker)
if trader_need_military_case(first_speaker, second_speaker) == false and
trader_need_blockpost_box(first_speaker, second_speaker) == false
then
return true
end
return false
end
--' Escape tutorial artefact
function have_tutorial_artefact(first_speaker, second_speaker)
return first_speaker:object("af_blood_tutorial") ~= nil
end
function give_medkit(first_speaker, second_speaker)
dialogs.relocate_item_section(first_speaker, "medkit", "in")
end
function give_tutorial_artefact(first_speaker, second_speaker)
dialogs.relocate_item_section(second_speaker, "af_blood_tutorial", "out")
end
--' Meet fox
function have_fox_info(first_speaker, second_speaker)
return first_speaker:object("fox_flash") ~= nil
end
--' fox help
function transfer_medikit_to_fox (player, wounded)
wounded:set_relation(game_object.friend, player)
db.actor:give_info_portion("escape_fox_heal")
end
function give_weapon_to_actor (trader, actor)
dialogs.relocate_item_section(trader, "wpn_pm", "in")
dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
dialogs.relocate_item_section(trader, "wpn_knife", "in")
ammo_manager.give_loaded("clip_8_9x18_fmj")
end
--' Escape blockpost box
function have_blockpost_case(first_speaker, second_speaker)
return first_speaker:object("quest_case_01") ~= nil
end
function give_blockpost_case(first_speaker, second_speaker)
dialogs.relocate_item_section(second_speaker, "quest_case_01", "out")
end
function give_blockpost_case_reward(first_speaker, second_speaker)
dialogs.relocate_money(first_speaker, 2000, "in")
end
--' Agroprom military case
function trader_need_military_case(first_speaker, second_speaker)
if has_alife_info("esc_serious_talk") and
not has_alife_info("agroprom_military_case")
then
return true
end
return false
end
--' Escape trader artefact
function have_artefact_from_fleshes(first_speaker, second_speaker)
local actor = db.actor
if actor ~= nil and
(actor:object("af_vyvert") ~= nil or
actor:object("af_gravi") ~= nil or
actor:object("af_gold_fish") ~= nil)
then
return true
end
return false
end
--' ßůčę ń áëîęďîńňŕ
function trader_need_blockpost_box(first_speaker, second_speaker)
if has_alife_info("tutorial_end") and
has_alife_info("esc_trader_speak") and
not has_alife_info("escape_blockpost_case")
then
return true
end
return false
end
--' tutorial wounded in vagon
function wounded_need_help(first_speaker, second_speaker)
local actor = db.actor
return actor ~= nil and not has_alife_info( "tutorial_wounded_help" )
end
--' trader needs military documents
function trader_need_military_document(first_speaker, second_speaker)
if has_alife_info("escape_blockpost_case_done") and
not has_alife_info("agroprom_military_case")
then
return true
end
return false
end
--' trader dialog about docs from labx18
function actor_has_documents (actor, npc)
if actor:object("dar_document4") then
return true
else
return false
end
end
--' Escape dynamite for Wolf
function transfer_wolf_reward(first_speaker, second_speaker)
dialogs.relocate_item_section(first_speaker, "af_medusa", "in")
end
function wolf_additional_reward(first_speaker, second_speaker)
dialogs.relocate_item_section(first_speaker, "medkit", "in")
dialogs.relocate_item_section(first_speaker, "bandage", "in")
dialogs.relocate_item_section(first_speaker, "medkit", "in")
dialogs.relocate_item_section(first_speaker, "bandage", "in")
dialogs.relocate_item_section(first_speaker, "grenade_f1", "in")
dialogs.relocate_item_section(first_speaker, "grenade_f1", "in")
dialogs.relocate_item_section(first_speaker, "wpn_tulip_scope", "in")
dialogs.relocate_item_section(first_speaker, "ammo_9x18_fmj", "in")
dialogs.relocate_item_section(first_speaker, "af_medusa", "in")
dialogs.relocate_money(first_speaker, 5000, "in")
end
--' Escape Wounded's flash
function wounded_give_flash(first_speaker, second_speaker)
dialogs.relocate_item_section(first_speaker, "esc_wounded_flash", "in")
end
function have_wounded_flash(first_speaker, second_speaker)
return first_speaker:object("esc_wounded_flash") ~= nil
end
function dont_have_wounded_flash(first_speaker, second_speaker)
return not have_wounded_flash(first_speaker, second_speaker)
end
function give_wounded_flash(first_speaker, second_speaker)
dialogs.relocate_item_section(second_speaker, "esc_wounded_flash", "out")
dialogs.relocate_money(second_speaker, 1500, "in")
end
function give_knife_to_actor(first_speaker, second_speaker)
dialogs.relocate_item_section(first_speaker, "wpn_knife", "in")
end
--' Escape bandits factory
function give_factory_reward_trader(first_speaker, second_speaker)
dialogs.relocate_money(first_speaker, 500, "in")
end
--' Give X-18 documents read
function give_documents_reward (first_speaker, second_speaker)
dialogs.relocate_money(first_speaker, 1000, "in")
end
--' Kill killers raid
function give_reward_killers(first_speaker, second_speaker)
dialogs.relocate_money(first_speaker, 2500, "in")
end
--' Soldiers on bridge
function has_soldiers_bribe(actor, npc)
return actor:money() >= 500
end
function give_soldiers_bribe(actor, npc)
dialogs.relocate_money(npc, 500, "out")
end
function fox_pay_money(actor, npc)
dialogs.relocate_money(npc, 1500, "in")
treasure_manager.get_treasure_manager():give_treasure("esc_secret_truck_goods")
end
function run_tutorial_pda(first_speaker, second_speaker)
printf("!-!-!")
first_speaker:stop_talk()
second_speaker:stop_talk()
game.start_tutorial("part_1_pda")
end
function wolf_precond_univ (actor, npc)
return has_alife_info("esc_kill_bandits_quest_done") or (has_alife_info("tutorial_wounded_give_info") and not has_alife_info("esc_kill_bandits_quest_have"))
end
scigacz1975 napisał(a):U mnie było wszystko ok. Może nie zwróciłeś uwagi bo mówi po rusku.
Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 3 gości