577 lines
18 KiB
Text
577 lines
18 KiB
Text
-- run_string log("----->"..tostring(xr_statistic.actor_statistic.best_monster).." "..tostring(xr_statistic.actor_statistic.best_monster_rank))
|
||
actor_statistic = {
|
||
surges = 0,
|
||
completed_quests = 0,
|
||
killed_monsters = 0,
|
||
killed_stalkers = 0,
|
||
founded_secrets = 0,
|
||
artefacts_founded = 0,
|
||
best_monster = nil,
|
||
favorite_weapon_sect = nil,
|
||
best_monster_rank = 0,
|
||
}
|
||
|
||
monster_classes = {
|
||
[clsid.bloodsucker_s] = "bloodsucker",
|
||
[clsid.boar_s] = "boar",
|
||
[clsid.burer_s] = "burer",
|
||
[clsid.chimera_s] = "chimera",
|
||
[clsid.controller_s] = "controller",
|
||
[clsid.dog_s] = "dog",
|
||
[clsid.flesh_s] = "flesh",
|
||
[clsid.gigant_s] = "gigant",
|
||
[clsid.poltergeist_s] = "poltergeist",
|
||
[clsid.psy_dog_s] = "psy_dog",
|
||
[clsid.pseudodog_s] = "pseudodog",
|
||
[clsid.snork_s ] = "snork",
|
||
[clsid.tushkano_s ] = "tushkano",
|
||
}
|
||
|
||
weapons_table = {
|
||
abakan = 0,
|
||
ak74 = 0,
|
||
ak74u = 0,
|
||
beretta = 0,
|
||
bm16 = 0,
|
||
colt1911 = 0,
|
||
desert = 0,
|
||
f1 = 0,
|
||
fn2000 = 0,
|
||
fort = 0,
|
||
g36 = 0,
|
||
gauss = 0,
|
||
groza = 0,
|
||
hpsa = 0,
|
||
knife = 0,
|
||
l85 = 0,
|
||
lr300 = 0,
|
||
mp5 = 0,
|
||
pb = 0,
|
||
pkm = 0,
|
||
pm = 0,
|
||
protecta = 0,
|
||
rg = 0,
|
||
rgd5 = 0,
|
||
rpg7 = 0,
|
||
sig220 = 0,
|
||
sig550 = 0,
|
||
spas12 = 0,
|
||
svd = 0,
|
||
svu = 0,
|
||
toz34 = 0,
|
||
usp45 = 0,
|
||
val = 0,
|
||
vintorez = 0,
|
||
walther = 0,
|
||
wincheaster1300 = 0,
|
||
}
|
||
|
||
artefacts_table = {
|
||
af_cristall = false,
|
||
af_blood = false,
|
||
af_electra_sparkler = false,
|
||
af_cristall_flower = false,
|
||
af_medusa = false,
|
||
af_fireball = false,
|
||
af_mincer_meat = false,
|
||
af_electra_flash = false,
|
||
af_night_star = false,
|
||
af_dummy_glassbeads = false,
|
||
af_soul = false,
|
||
af_electra_moonlight = false,
|
||
af_dummy_battery = false,
|
||
af_vyvert = false,
|
||
af_fuzz_kolobok = false,
|
||
af_gravi = false,
|
||
af_eye = false,
|
||
af_baloon = false,
|
||
af_dummy_dummy = false,
|
||
af_gold_fish = false,
|
||
af_fire = false,
|
||
af_glass = false,
|
||
af_ice = false,
|
||
}
|
||
|
||
taken_artefacts = {}
|
||
|
||
function inc_surges_counter()
|
||
actor_statistic.surges = actor_statistic.surges + 1
|
||
end
|
||
function inc_completed_quests_counter()
|
||
actor_statistic.completed_quests = actor_statistic.completed_quests + 1
|
||
end
|
||
function inc_killed_monsters_counter()
|
||
actor_statistic.killed_monsters = actor_statistic.killed_monsters + 1
|
||
end
|
||
function inc_killed_stalkers_counter()
|
||
actor_statistic.killed_stalkers = actor_statistic.killed_stalkers + 1
|
||
end
|
||
function inc_founded_artefacts_counter(art_id)
|
||
if(taken_artefacts[art_id]==nil) then
|
||
actor_statistic.artefacts_founded = actor_statistic.artefacts_founded + 1
|
||
taken_artefacts[art_id] = art_id
|
||
local s_art = alife():object(art_id)
|
||
if(s_art and s_art:section_name()) then
|
||
artefacts_table[s_art:section_name()] = true
|
||
end
|
||
end
|
||
end
|
||
function inc_founded_secrets_counter()
|
||
actor_statistic.founded_secrets = actor_statistic.founded_secrets + 1
|
||
end
|
||
|
||
function set_best_monster(obj)
|
||
if IsStalker(obj) then
|
||
-- actor_statistic.best_monster = "stalker"
|
||
else
|
||
local community = monster_classes[get_clsid(obj)]
|
||
if not(community) then
|
||
abort("Statistic ERROR: cannot find monster class for [%s] clsid [%s]", obj:name(), tostring(get_clsid(obj)))
|
||
end
|
||
local s_obj = alife():object(obj:id())
|
||
if(s_obj) then
|
||
local rank = s_obj:rank()
|
||
if(community=="flesh") then
|
||
if(rank==3) then
|
||
community = community.."_strong"
|
||
else
|
||
community = community.."_weak"
|
||
end
|
||
elseif(community=="poltergeist") then
|
||
if(rank==12) then
|
||
community = community.."_flame"
|
||
else
|
||
community = community.."_tele"
|
||
end
|
||
elseif(community=="boar") then
|
||
if(rank==6) then
|
||
community = community.."_strong"
|
||
else
|
||
community = community.."_weak"
|
||
end
|
||
elseif(community=="pseudodog" or community=="psy_dog") then
|
||
if(rank==13) then
|
||
community = community.."_strong"
|
||
else
|
||
community = community.."_weak"
|
||
end
|
||
elseif(community=="bloodsucker") then
|
||
if(rank==16) then
|
||
community = community.."_strong"
|
||
elseif(rank==15) then
|
||
community = community.."_normal"
|
||
else
|
||
community = community.."_weak"
|
||
end
|
||
end
|
||
if(rank>actor_statistic.best_monster_rank) then
|
||
actor_statistic.best_monster_rank = rank
|
||
actor_statistic.best_monster = community
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
function set_best_weapon(hit_amount)
|
||
local active_item = db.actor:active_item()
|
||
if(active_item) then
|
||
local s_obj = alife():object(active_item:id())
|
||
if(s_obj) then
|
||
local s = s_obj:section_name()
|
||
for w in string.gfind(s, "%w+") do
|
||
if(weapons_table[w]~=nil) then
|
||
weapons_table[w] = weapons_table[w] + hit_amount
|
||
end
|
||
end
|
||
end
|
||
local amount = 0
|
||
for k,v in pairs(weapons_table) do
|
||
if(v>amount) then
|
||
amount = v
|
||
if(k=="rgd5" or k=="f1") then
|
||
actor_statistic.favorite_weapon_sect = "grenade_"..k
|
||
else
|
||
actor_statistic.favorite_weapon_sect = "wpn_"..k
|
||
end
|
||
if(k=="desert") then
|
||
actor_statistic.favorite_weapon_sect = "wpn_desert_eagle"
|
||
elseif(k=="rg") then
|
||
actor_statistic.favorite_weapon_sect = "wpn_rg-6"
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
function save(package)
|
||
package:w_u16(actor_statistic.surges)
|
||
package:w_u16(actor_statistic.completed_quests)
|
||
package:w_u32(actor_statistic.killed_monsters)
|
||
package:w_u32(actor_statistic.killed_stalkers)
|
||
package:w_u16(actor_statistic.founded_secrets)
|
||
package:w_u16(actor_statistic.artefacts_founded)
|
||
package:w_u32(actor_statistic.best_monster_rank)
|
||
package:w_stringZ(tostring(actor_statistic.best_monster))
|
||
package:w_stringZ(tostring(actor_statistic.favorite_weapon_sect))
|
||
local i = 0
|
||
for k,v in pairs(weapons_table) do
|
||
i = i + 1
|
||
end
|
||
package:w_u8(i)
|
||
for k,v in pairs(weapons_table) do
|
||
package:w_stringZ(tostring(k))
|
||
package:w_float(v)
|
||
end
|
||
i = 0
|
||
for k,v in pairs(artefacts_table) do
|
||
i = i + 1
|
||
end
|
||
package:w_u8(i)
|
||
for k,v in pairs(artefacts_table) do
|
||
package:w_stringZ(tostring(k))
|
||
package:w_bool(v)
|
||
end
|
||
i = 0
|
||
for k,v in pairs(taken_artefacts) do
|
||
i = i + 1
|
||
end
|
||
package:w_u8(i)
|
||
for k,v in pairs(taken_artefacts) do
|
||
package:w_u32(k)
|
||
end
|
||
end
|
||
|
||
function load(package)
|
||
actor_statistic = {}
|
||
actor_statistic.surges = package:r_u16()
|
||
actor_statistic.completed_quests = package:r_u16()
|
||
actor_statistic.killed_monsters = package:r_u32()
|
||
actor_statistic.killed_stalkers = package:r_u32()
|
||
actor_statistic.founded_secrets = package:r_u16()
|
||
actor_statistic.artefacts_founded = package:r_u16()
|
||
actor_statistic.best_monster_rank = package:r_u32()
|
||
local str = package:r_stringZ()
|
||
if(str~="nil") then
|
||
actor_statistic.best_monster = str
|
||
end
|
||
str = package:r_stringZ()
|
||
if(str~="nil") then
|
||
actor_statistic.favorite_weapon_sect = str
|
||
end
|
||
weapons_table = {}
|
||
local n = package:r_u8()
|
||
for i = 1,n do
|
||
local k = package:r_stringZ()
|
||
local v = package:r_float()
|
||
weapons_table[k] = v
|
||
end
|
||
artefacts_table = {}
|
||
n = package:r_u8()
|
||
for i = 1,n do
|
||
log("n "..tostring(n))
|
||
local k = package:r_stringZ()
|
||
local v = package:r_bool()
|
||
artefacts_table[k] = v
|
||
end
|
||
|
||
taken_artefacts = {}
|
||
n = package:r_u8()
|
||
for i = 1,n do
|
||
local k = package:r_u32()
|
||
taken_artefacts[k] = k
|
||
end
|
||
end
|
||
|
||
function pioneer_functor()
|
||
if not has_alife_info("pioneer_achievement_gained") then
|
||
if has_alife_info("zat_b14_give_item_linker")
|
||
and has_alife_info("jup_b1_complete_end")
|
||
and has_alife_info("jup_b206_anomalous_grove_done") then
|
||
db.actor:give_info_portion("pioneer_achievement_gained")
|
||
news_manager.send_tip(db.actor, "st_ach_pioneer", nil, "pioneer", nil, nil)
|
||
end
|
||
end
|
||
return has_alife_info("pioneer_achievement_gained")
|
||
end
|
||
|
||
function mutant_hunter_functor()
|
||
if not has_alife_info("mutant_hunter_achievement_gained") then
|
||
if has_alife_info("jup_b208_burers_hunt_done")
|
||
and has_alife_info("jup_b211_scene_done")
|
||
and has_alife_info("jup_b212_jupiter_chimera_hunt_done") then
|
||
db.actor:give_info_portion("mutant_hunter_achievement_gained")
|
||
news_manager.send_tip(db.actor, "st_ach_mutant_hunter", nil, "mutant_hunter", nil, nil)
|
||
end
|
||
end
|
||
return has_alife_info("mutant_hunter_achievement_gained")
|
||
end
|
||
|
||
function detective_functor()
|
||
if not has_alife_info("detective_achievement_gained") then
|
||
if has_alife_info("zat_b22_barmen_gave_reward") then
|
||
db.actor:give_info_portion("detective_achievement_gained")
|
||
news_manager.send_tip(db.actor, "st_ach_detective", nil, "detective", nil, nil)
|
||
end
|
||
end
|
||
return has_alife_info("detective_achievement_gained")
|
||
end
|
||
|
||
function one_of_the_lads_functor()
|
||
if not has_alife_info("one_of_the_lads_gained") then
|
||
if has_alife_info("zat_b30_sultan_loose") and has_alife_info("zat_b7_actor_help_stalkers") then
|
||
db.actor:give_info_portion("one_of_the_lads_gained")
|
||
news_manager.send_tip(db.actor, "st_ach_one_of_the_lads", nil, "one_of_the_lads", nil, nil)
|
||
end
|
||
end
|
||
return has_alife_info("one_of_the_lads_gained")
|
||
end
|
||
|
||
function kingpin_functor()
|
||
if not has_alife_info("kingpin_gained") then
|
||
if has_alife_info("zat_b30_barmen_under_sultan") and has_alife_info("zat_b7_actor_help_bandits") then
|
||
db.actor:give_info_portion("kingpin_gained")
|
||
news_manager.send_tip(db.actor, "st_ach_kingpin", nil, "kingpin", nil, nil)
|
||
end
|
||
end
|
||
return has_alife_info("kingpin_gained")
|
||
end
|
||
|
||
function herald_of_justice_functor()
|
||
if not has_alife_info("herald_of_justice_achievement_gained") then
|
||
if has_alife_info("jup_b25_flint_blame_done_to_duty")
|
||
or has_alife_info("jup_b25_flint_blame_done_to_freedom")
|
||
or has_alife_info("zat_b106_found_soroka_done") then
|
||
db.actor:give_info_portion("herald_of_justice_achievement_gained")
|
||
news_manager.send_tip(db.actor, "st_ach_herald_of_justice", nil, "herald_of_justice", nil, nil)
|
||
end
|
||
end
|
||
return has_alife_info("herald_of_justice_achievement_gained")
|
||
end
|
||
|
||
function seeker_functor()
|
||
if has_alife_info("sim_bandit_attack_harder") then
|
||
return true
|
||
end
|
||
for k,v in pairs(artefacts_table) do
|
||
if not v then
|
||
return false
|
||
end
|
||
end
|
||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
db.actor:give_info_portion("sim_bandit_attack_harder")
|
||
news_manager.send_tip(db.actor, "st_ach_seeker", nil, "seeker", nil, nil)
|
||
xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"stalker", 200})
|
||
return true
|
||
end
|
||
|
||
function battle_systems_master_functor()
|
||
if not has_alife_info("battle_systems_master_achievement_gained") then
|
||
if has_alife_info("zat_b3_all_instruments_brought") then
|
||
news_manager.send_tip(db.actor, "st_ach_battle_systems_master", nil, "battle_systems_master", nil, nil)
|
||
db.actor:give_info_portion("battle_systems_master_achievement_gained")
|
||
end
|
||
end
|
||
return has_alife_info("battle_systems_master_achievement_gained")
|
||
end
|
||
|
||
function high_tech_master_functor()
|
||
if not has_alife_info("high_tech_master_achievement_gained") then
|
||
if has_alife_info("jup_b217_tech_instrument_1_brought")
|
||
and has_alife_info("jup_b217_tech_instrument_2_brought")
|
||
and has_alife_info("jup_b217_tech_instrument_3_brought") then
|
||
news_manager.send_tip(db.actor, "st_ach_high_tech_master", nil, "high_tech_master", nil, nil)
|
||
db.actor:give_info_portion("high_tech_master_achievement_gained")
|
||
end
|
||
end
|
||
return has_alife_info("high_tech_master_achievement_gained")
|
||
end
|
||
|
||
function skilled_stalker_functor()
|
||
if not has_alife_info("skilled_stalker_achievement_gained") then
|
||
if has_alife_info("actor_was_in_many_bad_places") then
|
||
news_manager.send_tip(db.actor, "st_ach_skilled_stalker", nil, "skilled_stalker", nil, nil)
|
||
db.actor:give_info_portion("skilled_stalker_achievement_gained")
|
||
end
|
||
end
|
||
return has_alife_info("skilled_stalker_achievement_gained")
|
||
end
|
||
|
||
function leader_functor()
|
||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: pri_a21_base_restrictor.ltx
|
||
if not has_alife_info("leader_achievement_gained") then
|
||
if has_alife_info("jup_a10_vano_agree_go_und")
|
||
and has_alife_info("jup_b218_soldier_hired")
|
||
and has_alife_info("jup_b218_monolith_hired") then
|
||
news_manager.send_tip(db.actor, "st_ach_leader", nil, "leader", nil, nil)
|
||
db.actor:give_info_portion("leader_achievement_gained")
|
||
end
|
||
end
|
||
return has_alife_info("leader_achievement_gained")
|
||
end
|
||
|
||
function diplomat_functor()
|
||
if not has_alife_info("diplomat_achievement_gained") then
|
||
if has_alife_info("jup_a12_wo_shooting")
|
||
and (has_alife_info("jup_a10_bandit_take_all_money") or has_alife_info("jup_a10_bandit_take_money")) then
|
||
news_manager.send_tip(db.actor, "st_ach_diplomat", nil, "diplomat", nil, nil)
|
||
xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"stalker", 200})
|
||
xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"freedom", 200})
|
||
xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"dolg", 200})
|
||
xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"bandit", 200})
|
||
db.actor:give_info_portion("diplomat_achievement_gained")
|
||
end
|
||
end
|
||
return has_alife_info("diplomat_achievement_gained")
|
||
end
|
||
|
||
function research_man_functor()
|
||
if has_alife_info("research_man_gained") then
|
||
return true
|
||
end
|
||
local info_table = {
|
||
[1] = "jup_b16_task_done",
|
||
[2] = "jup_b1_task_done",
|
||
[3] = "jup_b46_task_done",
|
||
[4] = "jup_b47_task_end",
|
||
[5] = "jup_b32_task_done",
|
||
[6] = "jup_b6_task_done",
|
||
[7] = "jup_b206_task_done",
|
||
[8] = "jup_b209_task_done"
|
||
}
|
||
local count = 0
|
||
for k,v in pairs (info_table) do
|
||
if has_alife_info(v) then
|
||
count = count + 1
|
||
end
|
||
if count >= 4 then
|
||
db.actor:give_info_portion("research_man_gained")
|
||
news_manager.send_tip(db.actor, "st_ach_research_man", nil, "research_man", nil, nil)
|
||
return true
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
function friend_of_duty_functor()
|
||
if not has_alife_info("sim_duty_help_harder") then
|
||
if has_alife_info("jup_b4_monolith_squad_in_duty")
|
||
and has_alife_info("jup_b46_duty_founder_pda_to_duty")
|
||
and has_alife_info("jup_b207_sell_dealers_pda_duty")
|
||
and has_alife_info("jup_b25_flint_blame_done_to_duty") then
|
||
db.actor:give_info_portion("sim_duty_help_harder")
|
||
news_manager.send_tip(db.actor, "st_ach_friend_of_duty", nil, "friend_of_duty", nil, nil)
|
||
end
|
||
end
|
||
return has_alife_info("sim_duty_help_harder")
|
||
end
|
||
|
||
function friend_of_freedom_functor()
|
||
if not has_alife_info("sim_freedom_help_harder") then
|
||
if has_alife_info("jup_b4_monolith_squad_in_freedom")
|
||
and has_alife_info("jup_b46_duty_founder_pda_to_freedom")
|
||
and has_alife_info("jup_b207_sell_dealers_pda_freedom")
|
||
and has_alife_info("jup_b25_flint_blame_done_to_freedom") then
|
||
db.actor:give_info_portion("sim_freedom_help_harder")
|
||
news_manager.send_tip(db.actor, "st_ach_friend_of_freedom", nil, "friend_of_freedom", nil, nil)
|
||
end
|
||
end
|
||
return has_alife_info("sim_freedom_help_harder")
|
||
end
|
||
|
||
function balance_advocate_functor()
|
||
if not has_alife_info("balance_advocate_gained") then
|
||
if has_alife_info("jup_b46_duty_founder_pda_to_stalkers")
|
||
and has_alife_info("jup_b207_dealers_pda_sold_owl")
|
||
and has_alife_info("zat_b106_found_soroka_done") then
|
||
db.actor:give_info_portion("balance_advocate_gained")
|
||
news_manager.send_tip(db.actor, "st_ach_balance_advocate", nil, "balance_advocate", nil, nil)
|
||
end
|
||
end
|
||
return has_alife_info("balance_advocate_gained")
|
||
end
|
||
|
||
function wealthy_functor()
|
||
if db.actor:money() >= 100000 and not has_alife_info("actor_wealthy") then
|
||
db.actor:give_info_portion("actor_wealthy")
|
||
news_manager.send_tip(db.actor, "st_ach_wealthy", nil, "wealthy", nil, nil)
|
||
end
|
||
return has_alife_info("actor_wealthy")
|
||
end
|
||
|
||
function keeper_of_secrets_functor()
|
||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: pri_b305_logic.ltx
|
||
if not has_alife_info("keeper_of_secrets_achievement_gained") then
|
||
if has_alife_info("pri_b305_all_strelok_notes_given") then
|
||
db.actor:give_info_portion("keeper_of_secrets_achievement_gained")
|
||
news_manager.send_tip(db.actor, "st_ach_keeper_of_secrets", nil, "keeper_of_secrets", nil, nil)
|
||
end
|
||
end
|
||
return has_alife_info("keeper_of_secrets_achievement_gained")
|
||
end
|
||
|
||
function marked_by_zone_functor()
|
||
if has_alife_info("actor_marked_by_zone_3_times") then
|
||
return true
|
||
end
|
||
local counter_name = "actor_marked_by_zone_cnt"
|
||
local cnt_value = xr_logic.pstor_retrieve(db.actor, counter_name, 0)
|
||
if cnt_value > 2 then
|
||
db.actor:give_info_portion("actor_marked_by_zone_3_times")
|
||
news_manager.send_tip(db.actor, "st_ach_marked_by_zone", nil, "marked_by_zone", nil, nil)
|
||
return true
|
||
end
|
||
|
||
return false
|
||
end
|
||
|
||
function information_dealer_functor()
|
||
if has_alife_info("actor_information_dealer") then
|
||
return true
|
||
end
|
||
|
||
local info_table = {
|
||
[1] = "zat_b40_pda_1_saled",
|
||
[2] = "zat_b40_pda_2_saled",
|
||
[3] = "jup_b46_duty_founder_pda_sold",
|
||
[4] = "jup_b207_merc_pda_with_contract_sold",
|
||
[5] = "jup_b207_dealers_pda_sold",
|
||
[6] = "jup_a9_evacuation_info_sold",
|
||
[7] = "jup_a9_meeting_info_sold",
|
||
[8] = "jup_a9_losses_info_sold",
|
||
[9] = "jup_a9_delivery_info_sold",
|
||
[10] = "zat_b12_documents_sold_1",
|
||
[11] = "zat_b12_documents_sold_2",
|
||
[12] = "zat_b12_documents_sold_3",
|
||
[13] = "zat_b40_notebook_saled",
|
||
[14] = "device_flash_snag_sold",
|
||
[15] = "device_pda_port_bandit_leader_sold",
|
||
[16] = "jup_b10_ufo_memory_2_sold"
|
||
}
|
||
local count = 0
|
||
for k,v in pairs (info_table) do
|
||
if has_alife_info(v) then
|
||
count = count + 1
|
||
end
|
||
if count >= 10 then
|
||
news_manager.send_tip(db.actor, "st_ach_information_dealer", nil, "information_dealer", nil, nil)
|
||
db.actor:give_info_portion("actor_information_dealer")
|
||
return true
|
||
end
|
||
end
|
||
return has_alife_info("actor_information_dealer")
|
||
end
|
||
|
||
function friend_of_stalkers_functor()
|
||
if not has_alife_info("sim_stalker_help_harder") then
|
||
if has_alife_info("jup_b220_trapper_zaton_chimera_hunted_told")
|
||
and has_alife_info("jup_a12_stalker_prisoner_helped")
|
||
and has_alife_info("jup_a10_vano_give_task_end")
|
||
and has_alife_info("zat_b5_stalker_leader_end")
|
||
and has_alife_info("zat_b7_task_end") then
|
||
db.actor:give_info_portion("sim_stalker_help_harder")
|
||
news_manager.send_tip(db.actor, "st_ach_friend_of_stalkers", nil, "friend_of_stalkers", nil, nil)
|
||
xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"stalker", 100})
|
||
end
|
||
end
|
||
return has_alife_info("sim_stalker_help_harder")
|
||
end
|