#script_agent_troop_get_banner_mesh
# INPUT: agent_no, troop_no
# OUTPUT: banner_mesh
("agent_troop_get_banner_mesh",
[
(store_script_param, ":agent_no", 1),
(store_script_param, ":troop_no", 2),
(assign, ":banner_troop", -1),
(assign, ":banner_mesh", "mesh_banners_default_b"),
(try_begin),
(lt, ":agent_no", 0),
(try_begin),
(ge, ":troop_no", 0),
(this_or_next|troop_slot_ge, ":troop_no", slot_troop_banner_scene_prop, 1),
(eq, ":troop_no", "trp_player"),
(assign, ":banner_troop", ":troop_no"),
(else_try),
(is_between, ":troop_no", companions_begin, companions_end),
(assign, ":banner_troop", "trp_player"),
(else_try),
(assign, ":banner_mesh", "mesh_banners_default_a"),
(try_end),
(else_try),
(eq, "$g_is_quick_battle", 1),
(agent_get_team, ":agent_team", ":agent_no"),
(try_begin),
(eq, ":agent_team", 0),
(assign, ":banner_mesh", "$g_quick_battle_team_0_banner"),
(else_try),
(assign, ":banner_mesh", "$g_quick_battle_team_1_banner"),
(try_end),
(else_try),
(game_in_multiplayer_mode),
(agent_get_group, ":agent_group", ":agent_no"),
(try_begin),
(neg|player_is_active, ":agent_group"),
(agent_get_player_id, ":agent_group", ":agent_no"),
(try_end),
(try_begin),
#if player banners are not allowed, use the default banner mesh
(eq, "$g_multiplayer_allow_player_banners", 1),
(player_is_active, ":agent_group"),
(player_get_banner_id, ":player_banner", ":agent_group"),
(ge, ":player_banner", 0),
(store_add, ":banner_mesh", ":player_banner", arms_meshes_begin),
(assign, ":already_used", 0),
(try_for_range, ":cur_faction", npc_kingdoms_begin, npc_kingdoms_end), #wrong client data check
(faction_slot_eq, ":cur_faction", slot_faction_banner, ":banner_mesh"),
(assign, ":already_used", 1),
(try_end),
(eq, ":already_used", 0), #otherwise use the default banner mesh
(else_try),
(agent_get_team, ":agent_team", ":agent_no"),
(team_get_faction, ":team_faction_no", ":agent_team"),
(try_begin),
(agent_is_human, ":agent_no"),
(faction_get_slot, ":banner_mesh", ":team_faction_no", slot_faction_banner),
(else_try),
(agent_get_rider, ":rider_agent_no", ":agent_no"),
#(agent_get_position, pos1, ":agent_no"),
#(position_get_x, ":pos_x", pos1),
#(position_get_y, ":pos_y", pos1),
#(assign, reg0, ":pos_x"),
#(assign, reg1, ":pos_y"),
#(assign, reg2, ":agent_no"),
#(display_message, "@{!}agent_no:{reg2}, pos_x:{reg0} , posy:{reg1}"),
(try_begin),
(ge, ":rider_agent_no", 0),
(agent_is_active, ":rider_agent_no"),
(agent_get_team, ":rider_agent_team", ":rider_agent_no"),
(team_get_faction, ":rider_team_faction_no", ":rider_agent_team"),
(faction_get_slot, ":banner_mesh", ":rider_team_faction_no", slot_faction_banner),
(else_try),
(assign, ":banner_mesh", "mesh_banners_default_c"),
(try_end),
(try_end),
(try_end),
(else_try),
(agent_get_troop_id, ":troop_id", ":agent_no"),
(this_or_next|troop_slot_ge, ":troop_id", slot_troop_banner_scene_prop, 1),
(eq, ":troop_no", "trp_player"),
(assign, ":banner_troop", ":troop_id"),
(else_try),
(agent_get_party_id, ":agent_party", ":agent_no"),
(try_begin),
(lt, ":agent_party", 0),
(is_between, ":troop_id", companions_begin, companions_end),
(main_party_has_troop, ":troop_id"),
(assign, ":agent_party", "p_main_party"),
(try_end),
(ge, ":agent_party", 0),
(party_get_template_id, ":party_template", ":agent_party"),
(try_begin),
(eq, ":party_template", "pt_deserters"),
(assign, ":banner_mesh", "mesh_banners_default_c"),
(else_try),
(is_between, ":agent_party", centers_begin, centers_end),
(is_between, ":troop_id", companions_begin, companions_end),
(neq, "$talk_context", tc_tavern_talk),
#this should be a captured companion in prison
(assign, ":banner_troop", "trp_player"),
(else_try),
(is_between, ":agent_party", centers_begin, centers_end),
(party_get_slot, ":town_lord", "$g_encountered_party", slot_town_lord),
(ge, ":town_lord", 0),
(assign, ":banner_troop", ":town_lord"),
(else_try),
(this_or_next|party_slot_eq, ":agent_party", slot_party_type, spt_kingdom_hero_party),
(eq, ":agent_party", "p_main_party"),
(party_get_num_companion_stacks, ":num_stacks", ":agent_party"),
(gt, ":num_stacks", 0),
(party_stack_get_troop_id, ":leader_troop_id", ":agent_party", 0),
(this_or_next|troop_slot_ge, ":leader_troop_id", slot_troop_banner_scene_prop, 1),
(eq, ":leader_troop_id", "trp_player"),
(assign, ":banner_troop", ":leader_troop_id"),
(try_end),
(else_try), #Check if we are in a tavern
(eq, "$talk_context", tc_tavern_talk),
(neq, ":troop_no", "trp_player"),
(assign, ":banner_mesh", "mesh_banners_default_d"),
(else_try), #can't find party, this can be a town guard
(neq, ":troop_no", "trp_player"),
(is_between, "$g_encountered_party", walled_centers_begin, walled_centers_end),
(party_get_slot, ":town_lord", "$g_encountered_party", slot_town_lord),
(ge, ":town_lord", 0),
(assign, ":banner_troop", ":town_lord"),
(try_end),
(try_begin),
(ge, ":banner_troop", 0),
(try_begin),
(neg|troop_slot_ge, ":banner_troop", slot_troop_banner_scene_prop, 1),
(assign, ":banner_mesh", "mesh_banners_default_b"),
(else_try),
(troop_get_slot, ":banner_spr", ":banner_troop", slot_troop_banner_scene_prop),
(store_add, ":banner_scene_props_end", banner_scene_props_end_minus_one, 1),
(is_between, ":banner_spr", banner_scene_props_begin, ":banner_scene_props_end"),
(val_sub, ":banner_spr", banner_scene_props_begin),
(store_add, ":banner_mesh", ":banner_spr", arms_meshes_begin),
(try_end),
(try_end),
(assign, reg0, ":banner_mesh"),
]),