slot_troop_home применяется, как ячейка для идентификатора партии, при приближении к которой NPC рассказывает доп. часть своей истории.
(jump_to_scene, "scn_town_9_tavern"), - так получится, что из любого города на "scn_town_9_tavern".
Там в этом пункте меню дальше имеется цикл:
(try_for_range, ":companion_candidate", companions_begin, companions_end),
(troop_slot_eq, ":companion_candidate", slot_troop_occupation, 0),
(troop_slot_eq, ":companion_candidate", slot_troop_cur_center, "$current_town"),
(neg|troop_slot_ge, ":companion_candidate", slot_troop_prisoner_of_party, centers_begin),
(set_visitor, ":cur_entry", ":companion_candidate"),
(val_add, ":cur_entry", 1),
(try_end),Ежели надо привязать конкретного NPC к конкретному городу, можно, например, так:
(try_for_range, ":companion_candidate", companions_begin, companions_end),
(assign, ":end_cond, 0), # сбрасываем метку
(try_begin),
(this_or_next|troop_slot_ge, ":companion_candidate", slot_troop_prisoner_of_party, centers_begin), # компаньон в плену или ->
(neg|troop_slot_eq, ":companion_candidate", slot_troop_occupation, 0), # в отряде
(assign, ":end_cond, 1), # ставим метку
(try_end),
(try_begin),
(neq, ":end_cond, 1), # метка не поставлена (компаньон не в отряде и не пленник)
(eq, ":companion_candidate", "trp_<NPC>"), # это наш NPC
(assign, ":end_cond, 1), # ставим метку (дабы в случае провала следующей проверки не запустило следующую ветку)
(eq, "$current_town", "p_<NPC's_town>"), # и мы в его городе
(assign, ":end_cond, 0), # сбрасываем метку
(else_try),
(eq, ":end_cond, 0),
(neg|troop_slot_eq, ":companion_candidate", slot_troop_cur_center, "$current_town"),
(assign, ":end_cond, 1), # ставим метку
(try_end),
(neq, ":end_cond, 1), # спавним компаньона ежели метка не поставлена
(set_visitor, ":cur_entry", ":companion_candidate"),
(val_add, ":cur_entry", 1),
(try_end),