# script_create_kingdom_hero_party
# Input: arg1 = troop_no, arg2 = center_no
# Output: $pout_party = party_no
("create_kingdom_hero_party",
[
(store_script_param, ":troop_no", 1),
(store_script_param, ":center_no", 2),
(store_troop_faction, ":troop_faction_no", ":troop_no"),
(assign, "$pout_party", -1),
(try_begin),
(eq, "$g_there_is_no_avaliable_centers", 0),
(set_spawn_radius, 0),
(else_try),
(set_spawn_radius, 15),
(try_end),
(spawn_around_party, ":center_no", "pt_kingdom_hero_party"),
(assign, "$pout_party", reg0),
(party_set_faction, "$pout_party", ":troop_faction_no"),
(party_set_slot, "$pout_party", slot_party_type, spt_kingdom_hero_party),
(call_script, "script_party_set_ai_state", "$pout_party", spai_undefined, -1),
(troop_set_slot, ":troop_no", slot_troop_leaded_party, "$pout_party"),
(party_add_leader, "$pout_party", ":troop_no"),
(str_store_troop_name, s5, ":troop_no"),
(party_set_name, "$pout_party", "str_s5_s_party"),
(party_set_slot, "$pout_party", slot_party_commander_party, -1), #we need this because 0 is player's party!
#Setting the flag icon
#normal_banner_begin
(troop_get_slot, ":cur_banner", ":troop_no", slot_troop_banner_scene_prop),
(try_begin),
(gt, ":cur_banner", 0),
(val_sub, ":cur_banner", banner_scene_props_begin),
(val_add, ":cur_banner", banner_map_icons_begin),
(party_set_banner_icon, "$pout_party", ":cur_banner"),
#custom_banner_begin
#(troop_get_slot, ":flag_icon", ":troop_no", slot_troop_custom_banner_map_flag_type),
#(try_begin),
# (ge, ":flag_icon", 0),
# (val_add, ":flag_icon", custom_banner_map_icons_begin),
# (party_set_banner_icon, "$pout_party", ":flag_icon"),
(try_end),
(try_begin),
#because of below two lines, lords can only hire more than one party_template(stack) at game start once a time during all game.
(troop_slot_eq, ":troop_no", slot_troop_spawned_before, 0),
(troop_set_slot, ":troop_no", slot_troop_spawned_before, 1),
(assign, ":num_tries", 20),
(try_begin),
(store_troop_faction, ":troop_kingdom", ":troop_no"),
(faction_slot_eq, ":troop_kingdom", slot_faction_leader, ":troop_no"),
(assign, ":num_tries", 50),
(try_end),
#(str_store_troop_name, s0, ":troop_no"),
#(display_message, "{!}str_debug__hiring_men_to_party_for_s0"),
(try_for_range, ":unused", 0, ":num_tries"),
(call_script, "script_hire_men_to_kingdom_hero_party", ":troop_no"),
(try_end),
(assign, "
p_rounds", 0),
(game_get_reduce_campaign_ai, ":reduce_campaign_ai"),
(try_begin),
(this_or_next|eq, ":troop_faction_no", "$players_kingdom"),
(eq, ":troop_faction_no", "fac_player_supporters_faction"),
(assign, "
p_rounds", 0),
(else_try),
(eq, ":reduce_campaign_ai", 0), #hard
(assign, "
p_rounds", 2),
(else_try),
(eq, ":reduce_campaign_ai", 1), #moderate
(assign, "
p_rounds", 1),
(else_try),
(eq, ":reduce_campaign_ai", 2), #easy
(assign, "
p_rounds", 0),
(try_end),
(troop_get_slot, ":renown", ":troop_no", slot_troop_renown),
(store_div, ":renown_xp_rounds", ":renown", 100),
(val_add, "
p_rounds", ":renown_xp_rounds"),
(try_for_range, ":unused", 0, "
p_rounds"),
(call_script, "script_upgrade_hero_party", "$pout_party", 4000),
(try_end),
(try_end),
]),
# script_create_kingdom_party_if_below_limit
# Input: arg1 = faction_no, arg2 = party_type (variables beginning with spt_)
# Output: reg0 = party_no
("create_kingdom_party_if_below_limit",
[
(store_script_param_1, ":faction_no"),
(store_script_param_2, ":party_type"),
(call_script, "script_count_parties_of_faction_and_party_type", ":faction_no", ":party_type"),
(assign, ":party_count", reg0),
(assign, ":party_count_limit", 0),
(faction_get_slot, ":num_towns", ":faction_no", slot_faction_num_towns),
(try_begin),
## (eq, ":party_type", spt_forager),
## (assign, ":party_count_limit", 1),
## (else_try),
## (eq, ":party_type", spt_scout),
## (assign, ":party_count_limit", 1),
## (else_try),
## (eq, ":party_type", spt_patrol),
## (assign, ":party_count_limit", 1),
## (else_try),
## (eq, ":party_type", spt_messenger),
## (assign, ":party_count_limit", 1),
## (else_try),
(eq, ":party_type", spt_kingdom_caravan),
(try_begin),
(eq, ":num_towns", 0),
(assign, ":party_count_limit", 0),
(else_try),
(eq, ":num_towns", 1),
(assign, ":party_count_limit", 1),
(else_try),
(eq, ":num_towns", 2),
(assign, ":party_count_limit", 3),
(else_try),
(assign, ":party_count_limit", 5),
(try_end),
## (else_try),
## (eq, ":party_type", spt_prisoner_train),
## (assign, ":party_count_limit", 1),
(try_end),
(assign, reg0, -1),
(try_begin),
(lt, ":party_count", ":party_count_limit"),
(call_script,"script_cf_create_kingdom_party", ":faction_no", ":party_type"),
(try_end),
]),