# script_fill_tournament_participants_troop
# Input: arg1 = center_no, arg2 = player_at_center
# Output: none (fills trp_tournament_participants)
("fill_tournament_participants_troop",
[(store_script_param, ":center_no", 1),
(store_script_param, ":player_at_center", 2),
(assign, ":cur_slot", 0),
(try_begin), # player companions
(eq, ":player_at_center", 1),
(party_get_num_companion_stacks, ":num_stacks", "p_main_party"),
(try_for_range, ":stack_no", 0, ":num_stacks"),
(party_stack_get_troop_id, ":cur_troop", "p_main_party", ":stack_no"),
(troop_is_hero, ":cur_troop"),
(neq, ":cur_troop", "trp_kidnapped_girl"),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", ":cur_troop"),
(val_add, ":cur_slot", 1),
(try_end),
(try_end),
(party_collect_attachments_to_party, ":center_no", "p_temp_party"),
(party_get_num_companion_stacks, ":num_stacks", "p_temp_party"),
(try_for_range, ":stack_no", 0, ":num_stacks"), # center lords
(party_stack_get_troop_id, ":cur_troop", "p_temp_party", ":stack_no"),
(troop_is_hero, ":cur_troop"),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", ":cur_troop"),
(val_add, ":cur_slot", 1),
(try_end),
# arena champions
(try_begin), # xerina
(store_random_in_range, ":random_no", 0, 100),
(lt, ":random_no", 50),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_xerina"),
(val_add, ":cur_slot", 1),
(try_end),
(try_begin), # dranton
(store_random_in_range, ":random_no", 0, 100),
(lt, ":random_no", 50),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_dranton"),
(val_add, ":cur_slot", 1),
(try_end),
(try_begin), # kradus
(store_random_in_range, ":random_no", 0, 100),
(lt, ":random_no", 50),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_kradus"),
(val_add, ":cur_slot", 1),
(try_end),
(try_for_range, ":stack_no", 0, ":num_stacks"), # center soldiers
(party_stack_get_troop_id, ":cur_troop", "p_temp_party", ":stack_no"),
(neg|troop_is_hero, ":cur_troop"),
(party_stack_get_size, ":stack_size", "p_temp_party", ":stack_no"),
(try_for_range, ":unused", 0, 8), # max 8 of each troop type
(lt, ":cur_slot", 56), # at least 8 slots reserved for commoners (but the garrison gets dibs over player soldiers)
(store_random_in_range, ":random_no", 0, 100),
(lt, ":random_no", ":stack_size"),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", ":cur_troop"),
(val_add, ":cur_slot", 1),
(try_end),
(try_end),
(try_begin), # player soldiers
(eq, ":player_at_center", 1),
(party_get_num_companion_stacks, ":num_stacks", "p_main_party"),
(try_for_range, ":stack_no", 0, ":num_stacks"),
(party_stack_get_troop_id, ":cur_troop", "p_main_party", ":stack_no"),
(neg|troop_is_hero, ":cur_troop"),
(party_stack_get_size, ":stack_size", "p_main_party", ":stack_no"),
(try_for_range, ":unused", 0, 8), # max 8 of each troop type
(lt, ":cur_slot", 56), # at least 8 slots reserved for commoners
(store_random_in_range, ":random_no", 0, 100),
(lt, ":random_no", ":stack_size"),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", ":cur_troop"),
(val_add, ":cur_slot", 1),
(try_end),
(try_end),
(try_end),
(assign, ":begin_slot", ":cur_slot"), # random peasants, manhunters, and mercenaries
(try_for_range, ":cur_slot", ":begin_slot", 64),
(store_random_in_range, ":random_no", 0, 100),
(try_begin), # expanded list of tournament troops
(le, ":random_no", 3),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_peasant_woman"),
(else_try),
(le, ":random_no", 8),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_farmer"),
(else_try),
(le, ":random_no", 12),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_caravan_master"),
(else_try),
(le, ":random_no", 20),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_manhunter"),
(else_try),
(le, ":random_no", 28),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_slave_driver"),
(else_try),
(le, ":random_no", 34),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_slave_hunter"),
(else_try),
(le, ":random_no", 38),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_slave_crusher"),
(else_try),
(le, ":random_no", 40),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_slaver_chief"),
(else_try),
(le, ":random_no", 44),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_townsman"),
(else_try),
(le, ":random_no", 50),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_watchman"),
(else_try),
(le, ":random_no", 58),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_caravan_guard"),
(else_try),
(le, ":random_no", 66),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_mercenary_swordsman"),
(else_try),
(le, ":random_no", 72),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_hired_blade"),
(else_try),
(le, ":random_no", 80),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_mercenary_crossbowman"),
(else_try),
(le, ":random_no", 88),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_mercenary_horseman"),
(else_try),
(le, ":random_no", 92),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_mercenary_cavalry"),
(else_try),
(le, ":random_no", 94),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_follower_woman"),
(else_try),
(le, ":random_no", 96),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_hunter_woman"),
(else_try),
(le, ":random_no", 98),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_fighter_woman"),
(else_try),
(le, ":random_no", 99),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_refugee"),
(else_try),
(troop_set_slot, "trp_tournament_participants", ":cur_slot", "trp_sword_sister"),
(try_end),
(try_end),
]),