[logic] active = beh@base post_combat_time = 0,0 trade = items\trade\trade_companion.ltx level_spot = companion ;====================== ; default logic ;====================== [beh@general_no_companion] sound_idle = state behavior_state = beh_wait target = {=check_squad_name(hostage_companion_task_1)} task_target_hostage, waypoint walk_dist = 100 jog_dist = 220 wait_anim = {=check_squad_name(hostage_companion_task_1)} prisoner, {=is_wounded} wounded, guard walk_anim = patrol jog_anim = patrol run_anim = panic delay_anim = guard meet = meet combat_ignore_cond = {=actor_enemy =check_enemy_name(actor)} false, true combat_ignore_keep_when_attacked = true gather_items_enabled = false help_wounded_enabled = false corpse_detection_enabled = false use_camp = false invulnerable = true [beh@general] combat_ignore_keep_when_attacked = true combat_ignore_cond = {=check_enemy_name(actor)} true, {-npcx_beh_ignore_combat -npcx_beh_ignore_actor_enemies} false, {+npcx_beh_ignore_combat +npcx_beh_ignore_actor_enemies} true, {+npcx_beh_ignore_combat -npcx_beh_ignore_actor_enemies =is_enemy_fighting_actor} false, true meet = meet gather_items_enabled = {+npcx_beh_gather_items}true, false corpse_detection_enabled = {+npcx_beh_loot_corpses} true, false actor_dialogs = actor_dialogs behavior_state = {=surge_started} beh_move, {+npcx_beh_relax} beh_wait, {+npcx_beh_wait} beh_wait, beh_move target = {=surge_started} waypoint, {+npcx_beh_relax} waypoint, {!is_squad_commander} commander, actor use_camp = {+npcx_beh_relax} true, false walk_dist = {+npcx_beh_patrol_mode} 60, {=surge_started} 4, {+npcx_beh_relax} 8, 4 jog_dist = {+npcx_beh_patrol_mode} 120, {=surge_started} 8, {+npcx_beh_relax} 16, 8 run_dist = {+npcx_beh_patrol_mode} 240, {=surge_started} 32, {+npcx_beh_relax} 64, 90 keep_distance = {+npcx_beh_distance_far} far, near near_desired_dist = {+npcx_beh_patrol_mode =is_squad_commander} 1, {!is_squad_commander} 5, 2 far_desired_dist = {+npcx_beh_patrol_mode =is_squad_commander} 1, {!is_squad_commander} 5, 8 wait_anim = {=is_wounded} wounded, {+npcx_beh_substate_stealth} hide, guard walk_anim = {=is_wounded} wounded, {+npcx_beh_patrol_mode -npcx_beh_substate_stealth} patrol,{+npcx_beh_substate_stealth} sneak, patrol jog_anim = {=is_wounded} wounded, {+npcx_beh_substate_stealth} sneak_run, rush run_anim = {=is_wounded} wounded, {+npcx_beh_substate_stealth} panic, panic sprint_anim = {=is_wounded} wounded, {+npcx_beh_substate_stealth} panic, panic delay_anim = {=is_wounded} wounded, {+npcx_beh_substate_stealth} hide, guard ;out_restr = zat_a2_sr_noweap, jup_a6_sr_noweap, jup_b41_sr_noweap, bar_old_arena, bar_arena [meet] ;reset_distance = 2 abuse = false use = {=is_wounded} true, {!is_squad_commander} false, {=dist_to_actor_le(4)} true, false snd_on_use = {!is_squad_commander} meet_use_no_talk_leader close_distance = {=is_wounded} 1, {+npcx_beh_relax} 0, {!is_squad_commander} 0, 2 close_anim = {=is_wounded} nil, {+npcx_beh_relax} nil, {!is_squad_commander} nil, {+npcx_beh_substate_stealth -npcx_beh_substate_relax} hide_no_wpn, guard_na close_snd_hello = nil close_snd_bye = nil close_victim = {=is_wounded} nil, {!is_squad_commander} nil, actor far_distance = 0 far_anim = nil far_snd = nil far_victim = nil allow_break = true use_text = nil ; trade_enable = {=is_wounded} false, true trade_enable = false meet_dialog = {=is_wounded} axr_companion_medkit, nil [actor_dialogs] disable = dm_ordered_task_dialog, dm_traveler_dialog, dm_actor_become_guide_to_companion_dialog, dm_universal_dialog, about_quests_dialog_dolg, about_quests_dialog_freedom, about_quests_dialog_bandit, about_quests_dialog_stalkers ;=============================================== ; active sections ;=============================================== [beh@base]:beh@general on_info1 = {=check_squad_name(ecolog_companion_task_1)} beh@ecolog_companion_task_1, {=check_squad_name(ecolog_companion_task_2)} beh@ecolog_companion_task_2, {=check_squad_name(yan_ecolog_semenov_squad)} beh@yan_ecolog_semenov_task_1 on_info2 = {=check_squad_name(bandit_companion_task_1)} beh@bandit_companion_task_1 on_info3 = {=check_squad_name(hostage_companion_task_1)} beh@hostage_1 ;on_info4 = beh@general ;IMPORTANT: not a special task squad so use general section; Make sure it's always the last LINE in this section [meet@ecolog_companion_task_1]:meet meet_dialog = {=is_wounded} axr_companion_medkit, {=check_smart_dist_le(40:mar_smart_terrain_base)} ecolog_companion_task_1_dialog, nil [meet@ecolog_companion_task_2]:meet meet_dialog = {=is_wounded} axr_companion_medkit, {=check_smart_dist_le(40:jup_b41)} ecolog_companion_task_2_dialog, nil [beh@ecolog_companion_task_1]:beh@general meet = meet@ecolog_companion_task_1 on_info1 = {=dist_to_task_target_anomaly_le(15)} beh@task_target_anomaly_1, {=squad_commander_active_section(beh@task_target_anomaly_1)} beh@task_target_anomaly_1 on_info2 = {-ecolog_companion_task_1_force_started =dist_to_actor_le(3)} %+ecolog_companion_task_1_force_started =force_talk(true)% on_info3 = {=check_squad_name(ecolog_companion_task_2)} beh@ecolog_companion_task_2 [beh@ecolog_companion_task_2]:beh@general meet = meet@ecolog_companion_task_2 on_info1 = {=dist_to_task_target_anomaly_le(15)} beh@task_target_anomaly_1, {=squad_commander_active_section(beh@task_target_anomaly_1)} beh@task_target_anomaly_1 on_info2 = {-ecolog_companion_task_2_force_started =dist_to_actor_le(3)} %+ecolog_companion_task_2_force_started =force_talk(true)% on_info3 = {=check_squad_name(ecolog_companion_task_1)} beh@ecolog_companion_task_1 [beh@yan_ecolog_semenov_task_1]:beh@general mutant_corpse_analysis = {=is_squad_commander =check_task_stage(yan_ecolog_semenov_task_1:0)} true [meet@bandit_companion_task_1]:meet meet_dialog = {=is_wounded} axr_companion_medkit, bandit_companion_task_1_dialog ;TODO: Add logic to rob stalkers [beh@bandit_companion_task_1]:beh@general meet = meet@bandit_companion_task_1 ;on_info1 = on_info2 = {-bandit_companion_task_1_force_started =dist_to_actor_le(3)} %+bandit_companion_task_1_force_started =force_talk(true)% corpse_detection_enabled = true ;==================================================================== ; special scenario active sections ;==================================================================== [meet@hostage_companion_task_1]:meet meet_dialog = {=is_wounded} axr_companion_medkit, hostage_companion_task_1_dialog meet_on_talking = false [beh@hostage_1]:beh@general_no_companion target = task_target_hostage wait_anim = prisoner combat_ignore_cond = {=actor_enemy =check_enemy_name(actor)} false, true combat_ignore_keep_when_attacked = true gather_items_enabled = false help_wounded_enabled = false corpse_detection_enabled = false enemy_ignore_cond = true on_info1 = {+hostage_companion_task_1_hostage_rescued} beh@hostage_companion_task_1 meet = meet@hostage_companion_task_1 [beh@hostage_companion_task_1]:beh@general [beh@task_target_anomaly_1]:beh@general_no_companion target = task_target_anomaly wait_anim = scaner_crouch on_info1 = {=is_squad_commander} beh@task_target_anomaly_2 %=play_sound(jup_b6_stalker_1_first_measurement_begin)% on_info2 = {!has_task_target_anomaly =check_squad_name(ecolog_companion_task_1)} beh@ecolog_companion_task_1, {!has_task_target_anomaly =check_squad_name(ecolog_companion_task_2)} beh@ecolog_companion_task_2 [beh@task_target_anomaly_2]:beh@general_no_companion target = task_target_anomaly wait_anim = scaner_crouch on_game_timer = 900 | beh@task_target_anomaly_3 %=reset_task_target_anomaly =play_sound(jup_b6_stalker_1_measurements_done)% [beh@task_target_anomaly_3] on_info = {=check_squad_name(ecolog_companion_task_2)} beh@ecolog_companion_task_2, beh@ecolog_companion_task_1