("setup_random_scene",
[
(party_get_current_terrain, ":current_terrain_main_party", "p_main_party"),
(assign, ":value", "scn_random_scene"),
(call_script, "script_get_closest_center", "p_main_party"),
(party_get_slot, ":reg0_center_original_faction", reg0, slot_center_original_faction),
(try_begin),
(eq, ":current_terrain_main_party", 2),
(assign, ":value", "scn_random_scene_steppe"),
(else_try),
(eq, ":current_terrain_main_party", 3),
(assign, ":value", "scn_random_scene_plain"),
(else_try),
(eq, ":current_terrain_main_party", 4),
(assign, ":value", "scn_random_scene_snow"),
(else_try),
(eq, ":current_terrain_main_party", 5),
(assign, ":value", "scn_random_scene_desert"),
(else_try),
(eq, ":current_terrain_main_party", 10),
(assign, ":value", "scn_random_scene_steppe_forest"),
(else_try),
(eq, ":current_terrain_main_party", 11),
(assign, ":value", "scn_random_scene_plain_forest"),
(else_try),
(eq, ":current_terrain_main_party", 12),
(assign, ":value", "scn_random_scene_snow_forest"),
(else_try),
(eq, ":current_terrain_main_party", 13),
(assign, ":value", "scn_random_scene_desert_forest"),
(else_try),
(eq, ":current_terrain_main_party", 0),
(assign, ":value", "scn_water"),
(else_try),
(eq, ":current_terrain_main_party", 7),
(assign, ":value", "scn_scene_sea"),
(try_end),
(try_begin),
(assign, "$tom_generate_swamp", 0),
(assign, "$tom_generate_desert", 0),
(assign, "$tom_generate_desertv2", 0),
(assign, "$tom_generate_desertv3", 0),
(assign, "$tom_generate_iberian", 0),
(assign, "$tom_generate_iberian2", 0),
(assign, "$tom_generate_snow", 0),
(eq, "$tom_use_battlefields", 1),
(try_begin),
(eq, ":current_terrain_main_party", 11),
(store_random_in_range, ":random_in_range_0_101", 0, 101),
(ge, ":random_in_range_0_101", 60),
(store_random_in_range, ":value", "scn_test_combat_swamp_0", "scn_test_combat_rocky_desert_0"),
(assign, "$tom_generate_swamp", 1),
(try_end),
(try_begin),
(eq, ":current_terrain_main_party", 4),
(store_random_in_range, ":random_in_range_0_101", 0, 101),
(ge, ":random_in_range_0_101", 20),
(assign, "$tom_generate_snow", 1),
(store_random_in_range, ":value", "scn_test_combat_snow_0", "scn_manor"),
(try_end),
(try_begin),
(eq, ":current_terrain_main_party", 12),
(store_random_in_range, ":random_in_range_0_101", 0, 101),
(ge, ":random_in_range_0_101", 20),
(assign, "$tom_generate_snow", 2),
(store_random_in_range, ":value", "scn_test_combat_snow_0", "scn_manor"),
(try_end),
(try_begin),
(eq, ":current_terrain_main_party", 3),
(store_random_in_range, ":random_in_range_0_101", 0, 101),
(ge, ":random_in_range_0_101", 80),
(store_random_in_range, ":value", "scn_test_combat_euro_0", "scn_test_combat_iberian_hillside_0"),
(try_end),
(try_begin),
(this_or_next|eq, ":current_terrain_main_party", 5),
(eq, ":current_terrain_main_party", 13),
(store_random_in_range, ":random_in_range_0_101", 0, 101),
(try_begin),
(ge, ":random_in_range_0_101", 80),
(assign, "$tom_generate_desert", 1),
(assign, ":value", "scn_test_combat_rocky_desert_0"),
(else_try),
(ge, ":random_in_range_0_101", 30),
(assign, "$tom_generate_desertv2", 1),
(assign, ":value", "scn_test_combat_rocky_desert_0"),
(try_end),
(try_end),
(try_begin),
(this_or_next|eq, ":current_terrain_main_party", 10),
(eq, ":current_terrain_main_party", 2),
(try_begin),
(this_or_next|eq, ":reg0_center_original_faction", "fac_kingdom_3"),
(this_or_next|eq, ":reg0_center_original_faction", "fac_kingdom_5"),
(eq, ":reg0_center_original_faction", "fac_kingdom_15"),
(store_random_in_range, ":value", "scn_test_combat_steppe_0", "scn_test_combat_euro_0"),
(else_try),
(eq, ":current_terrain_main_party", 10),
(assign, "$tom_generate_iberian2", 1),
(assign, ":value", "scn_test_combat_iberian_0"),
(else_try),
(assign, "$tom_generate_iberian", 1),
(assign, ":value", "scn_test_combat_iberian_0"),
(try_end),
(try_end),
(set_fixed_point_multiplier, 100),
(party_get_position, 15, "p_main_party"),
(position_get_x, ":position_x_15", 15),
(position_get_y, ":position_y_15", 15),
(try_begin),
(assign, ":value_2", 0),
(try_begin),
(lt, ":position_x_15", 18036),
(lt, ":position_y_15", -20834),
(gt, ":position_x_15", 15890),
(gt, ":position_y_15", -25502),
(assign, ":value_2", 1),
(else_try),
(lt, ":position_x_15", 22720),
(lt, ":position_y_15", -18627),
(gt, ":position_x_15", 21597),
(gt, ":position_y_15", -20013),
(assign, ":value_2", 1),
(try_end),
(eq, ":value_2", 1),
(store_random_in_range, ":value", "scn_sitd_battle_nile_1", "scn_test_combat_snow_0"),
(assign, "$tom_generate_desertv3", 1),
(else_try),
(lt, ":position_x_15", -18195),
(lt, ":position_y_15", 13475),
(gt, ":position_x_15", -19389),
(gt, ":position_y_15", 10326),
(store_random_in_range, ":value", "scn_test_combat_euro_hillside_0", "scn_test_combat_euro_hillside_4"),
(assign, "$tom_generate_euro_hillside", 1),
(assign, "$tom_generate_iberian2", 0),
(assign, "$tom_generate_iberian", 0),
(assign, "$tom_generate_swamp", 0),
(else_try),
(lt, ":position_x_15", 21714),
(lt, ":position_y_15", -13331),
(gt, ":position_x_15", 14265),
(gt, ":position_y_15", -14667),
(store_random_in_range, ":value", "scn_test_combat_mountain_0", "scn_test_combat_river_0"),
(assign, "$tom_generate_iberian2", 0),
(assign, "$tom_generate_iberian", 0),
(assign, "$tom_generate_swamp", 0),
(else_try),
(lt, ":position_x_15", 27256),
(lt, ":position_y_15", -7255),
(gt, ":position_x_15", 4818),
(gt, ":position_y_15", -14562),
(store_random_in_range, ":value", "scn_test_combat_iberian_hillside_0", "scn_test_combat_euro_hillside_0"),
(try_begin),
(this_or_next|eq, ":current_terrain_main_party", 10),
(eq, ":current_terrain_main_party", 11),
(assign, "$tom_generate_iberian2", 1),
(assign, "$tom_generate_iberian", 0),
(assign, "$tom_generate_swamp", 0),
(else_try),
(assign, "$tom_generate_iberian", 1),
(assign, "$tom_generate_iberian2", 0),
(assign, "$tom_generate_swamp", 0),
(try_end),
(else_try),
(lt, ":position_x_15", -1149),
(lt, ":position_y_15", -2543),
(gt, ":position_x_15", -5458),
(gt, ":position_y_15", -5934),
(store_random_in_range, ":value", "scn_test_combat_iberian_hillside_0", "scn_test_combat_euro_hillside_0"),
(try_begin),
(this_or_next|eq, ":current_terrain_main_party", 10),
(eq, ":current_terrain_main_party", 11),
(assign, "$tom_generate_iberian2", 1),
(assign, "$tom_generate_iberian", 0),
(assign, "$tom_generate_swamp", 0),
(else_try),
(assign, "$tom_generate_iberian", 1),
(assign, "$tom_generate_iberian2", 0),
(assign, "$tom_generate_swamp", 0),
(try_end),
(else_try),
(lt, ":position_x_15", 1953),
(lt, ":position_y_15", 405),
(gt, ":position_x_15", -8779),
(gt, ":position_y_15", -6290),
(store_random_in_range, ":value", "scn_test_combat_mountain_0", "scn_test_combat_river_0"),
(assign, "$tom_generate_iberian2", 0),
(assign, "$tom_generate_iberian", 0),
(assign, "$tom_generate_swamp", 0),
(else_try),
(lt, ":position_x_15", -9696),
(lt, ":position_y_15", -2732),
(gt, ":position_x_15", -11853),
(gt, ":position_y_15", -4263),
(store_random_in_range, ":value", "scn_test_combat_mountain_0", "scn_test_combat_river_0"),
(assign, "$tom_generate_iberian2", 0),
(assign, "$tom_generate_iberian", 0),
(assign, "$tom_generate_swamp", 0),
(else_try),
(lt, ":position_x_15", -11549),
(lt, ":position_y_15", -5660),
(gt, ":position_x_15", -16034),
(gt, ":position_y_15", -6883),
(store_random_in_range, ":value", "scn_test_combat_mountain_0", "scn_test_combat_river_0"),
(assign, "$tom_generate_iberian2", 0),
(assign, "$tom_generate_iberian", 0),
(assign, "$tom_generate_swamp", 0),
(else_try),
(lt, ":position_x_15", 10894),
(lt, ":position_y_15", 2023),
(gt, ":position_x_15", 4719),
(gt, ":position_y_15", 450),
(store_random_in_range, ":value", "scn_test_combat_mountain_0", "scn_test_combat_river_0"),
(assign, "$tom_generate_iberian2", 0),
(assign, "$tom_generate_iberian", 0),
(assign, "$tom_generate_swamp", 0),
(else_try),
(lt, ":position_x_15", 11784),
(lt, ":position_y_15", 253),
(gt, ":position_x_15", 8089),
(gt, ":position_y_15", -3882),
(store_random_in_range, ":value", "scn_test_combat_mountain_3", "scn_test_combat_mountain_4"),
(assign, "$tom_generate_iberian2", 0),
(assign, "$tom_generate_iberian", 0),
(assign, "$tom_generate_swamp", 0),
(else_try),
(lt, ":position_x_15", -17860),
(lt, ":position_y_15", -5638),
(gt, ":position_x_15", -21620),
(gt, ":position_y_15", -7779),
(store_random_in_range, ":value", "scn_test_combat_iberian_hillside_0", "scn_test_combat_euro_hillside_0"),
(try_begin),
(this_or_next|eq, ":current_terrain_main_party", 10),
(eq, ":current_terrain_main_party", 11),
(assign, "$tom_generate_iberian2", 1),
(assign, "$tom_generate_iberian", 0),
(assign, "$tom_generate_swamp", 0),
(else_try),
(assign, "$tom_generate_iberian", 1),
(assign, "$tom_generate_iberian2", 0),
(assign, "$tom_generate_swamp", 0),
(try_end),
(else_try),
(lt, ":position_x_15", -4636),
(lt, ":position_y_15", -6318),
(gt, ":position_x_15", -5807),
(gt, ":position_y_15", -8170),
(store_random_in_range, ":value", "scn_test_combat_iberian_hillside_0", "scn_test_combat_euro_hillside_0"),
(try_begin),
(this_or_next|eq, ":current_terrain_main_party", 10),
(eq, ":current_terrain_main_party", 11),
(assign, "$tom_generate_iberian2", 1),
(assign, "$tom_generate_iberian", 0),
(assign, "$tom_generate_swamp", 0),
(else_try),
(assign, "$tom_generate_iberian", 1),
(assign, "$tom_generate_iberian2", 0),
(assign, "$tom_generate_swamp", 0),
(try_end),
(else_try),
(lt, ":position_x_15", 439),
(lt, ":position_y_15", -5315),
(gt, ":position_x_15", -1729),
(gt, ":position_y_15", -8618),
(store_random_in_range, ":value", "scn_test_combat_iberian_hillside_0", "scn_test_combat_euro_hillside_0"),
(try_begin),
(this_or_next|eq, ":current_terrain_main_party", 10),
(eq, ":current_terrain_main_party", 11),
(assign, "$tom_generate_iberian2", 1),
(else_try),
(assign, "$tom_generate_iberian", 1),
(try_end),
(else_try),
(lt, ":position_x_15", 2532),
(lt, ":position_y_15", -8630),
(gt, ":position_x_15", 1002),
(gt, ":position_y_15", -11365),
(store_random_in_range, ":value", "scn_test_combat_iberian_hillside_0", "scn_test_combat_euro_hillside_0"),
(try_begin),
(this_or_next|eq, ":current_terrain_main_party", 10),
(eq, ":current_terrain_main_party", 11),
(assign, "$tom_generate_iberian2", 1),
(assign, "$tom_generate_iberian", 0),
(assign, "$tom_generate_swamp", 0),
(else_try),
(assign, "$tom_generate_iberian", 1),
(assign, "$tom_generate_iberian2", 0),
(assign, "$tom_generate_swamp", 0),
(try_end),
(else_try),
(lt, ":position_x_15", 954),
(lt, ":position_y_15", -12249),
(gt, ":position_x_15", -537),
(gt, ":position_y_15", -13150),
(store_random_in_range, ":value", "scn_test_combat_iberian_hillside_0", "scn_test_combat_euro_hillside_0"),
(try_begin),
(this_or_next|eq, ":current_terrain_main_party", 10),
(eq, ":current_terrain_main_party", 11),
(assign, "$tom_generate_iberian2", 1),
(else_try),
(assign, "$tom_generate_iberian", 1),
(try_end),
(try_end),
(try_end),
(jump_to_scene, ":value")
]),
###### DATA SCRIPTS ##########################################################################################################
#
# used to copy parties from SP to registers and temp casualty parties from MP to registers
# script_coop_copy_parties_to_file_sp
# Input: arg1 = party_no
("coop_copy_parties_to_file_sp",
[
(try_begin),
(neg|is_vanilla_warband),
(dict_create, "$coop_dict"),
(dict_save, "$coop_dict", "@coop_battle"), #clear battle file
(dict_set_int, "$coop_dict", "@battle_state", coop_battle_state_setup_sp),
(call_script, "script_coop_copy_settings_to_file"), #copy game settings here
#SP ONLY MISC DATA
#store scene
(assign, ":scene_to_use", 0),
(assign, ":scene_castle", 0),
(assign, ":scene_street", 0),
(assign, ":scene_party", 0),
(assign, ":encountered_party", "$g_encountered_party"),
(try_begin),
(this_or_next|eq, "$coop_battle_type", coop_battle_type_siege_player_defend),
(eq, "$coop_battle_type", coop_battle_type_siege_player_attack),
(try_begin),
(party_slot_eq, ":encountered_party", slot_party_type, spt_town),
(party_get_slot, ":scene_to_use", ":encountered_party", slot_town_walls),
(party_get_slot, ":scene_castle", ":encountered_party", slot_town_castle),
(party_get_slot, ":scene_street", ":encountered_party", slot_town_center),
(assign, ":scene_party", ":encountered_party"),
(else_try),
(party_slot_eq, ":encountered_party", slot_party_type, spt_castle),
(party_get_slot, ":scene_to_use", ":encountered_party", slot_castle_exterior),
(party_get_slot, ":scene_castle", ":encountered_party", slot_town_castle),
(assign, ":scene_party", ":encountered_party"),
(try_end),
(else_try),
(this_or_next|eq, "$coop_battle_type", coop_battle_type_village_player_attack),
(eq, "$coop_battle_type", coop_battle_type_village_player_defend),
(try_begin),
(party_slot_eq, ":encountered_party", slot_party_type, spt_village),
(party_get_slot, ":scene_to_use", ":encountered_party", slot_castle_exterior),
(assign, ":scene_party", ":encountered_party"),
(else_try),
(assign, ":encountered_party", "$g_encounter_is_in_village"),
(party_get_slot, ":scene_to_use", ":encountered_party", slot_castle_exterior),
(assign, ":scene_party", ":encountered_party"),
(try_end),
(else_try),
(eq, "$coop_battle_type", coop_battle_type_bandit_lair),
(party_slot_eq, ":encountered_party", slot_party_type, spt_bandit_lair),
(party_stack_get_troop_id, ":bandit_type", "$g_encountered_party", 0),
(try_begin),
(eq, ":bandit_type", "trp_desert_bandit"),
(assign, ":scene_to_use", "scn_lair_desert_bandits"),
(else_try),
(eq, ":bandit_type", "trp_mountain_bandit"),
(assign, ":scene_to_use", "scn_lair_mountain_bandits"),
(else_try),
(eq, ":bandit_type", "trp_forest_bandit"),
(assign, ":scene_to_use", "scn_lair_forest_bandits"),
(else_try),
(eq, ":bandit_type", "trp_taiga_bandit"),
(assign, ":scene_to_use", "scn_lair_taiga_bandits"),
(else_try),
(eq, ":bandit_type", "trp_steppe_bandit"),
(assign, ":scene_to_use", "scn_lair_steppe_bandits"),
(else_try),
(eq, ":bandit_type", "trp_sea_raider"),
(assign, ":scene_to_use", "scn_lair_sea_raiders"),
(try_end),
(else_try),
# if field battle or we did not find one
(party_get_current_terrain, ":current_terrain_main_party", "p_main_party"),
#(assign, ":scene_to_use", "scn_coop_random_med_plain"), # Safeguard
(store_random_in_range, ":offset", 0, 2), # Actual index of the random scene (returns 0-9) (0 Counts as well
(assign, ":scene_to_use_large", "scn_test_combat_rocky_desert_0"), # Safeguard does not require terrain type.
(val_add, ":scene_to_use_large", ":offset"),
(store_random_in_range, ":offset", 0, 2), # Actual index of the random scene (returns 0-9) (0 Counts as well)
(try_begin),
(eq, ":current_terrain_main_party", rt_desert),
#(assign, ":scene_to_use", "scn_test_combat_rocky_desert_0"),
(assign, ":scene_to_use_large", "scn_test_combat_rocky_desert_0"),
(val_add, ":scene_to_use_large", ":offset"),
(else_try),
#Add multiple scenes by editing
# (assign, ":scene_to_use_large)", "scn_coop_random_lrg_plain"), # Safeguard
# (store_random_in_range, ":offsetsnow", 0, 10), # Actual index of the random scene (returns 0-9) (0 Counts as well)
# (val_add, ":scene_to_use_large", ":offset"),
# If you got 9 scenes, then use 0, 10 if you got 6 scenes then use 0, 7 always one number is spare.
(eq, ":current_terrain_main_party", rt_steppe),
#(assign, ":scene_to_use", "scn_coop_random_lrg_steppe"),
(assign, ":scene_to_use_large", "scn_coop_random_lrg_steppe"),
# ... "And on and on and on..." -- Blind Guardian, "Precious Jerusalem"
# In other words, repeat these for all terrain types you've got covered.
# READY SET GO
(else_try),
(eq, ":current_terrain_main_party", rt_plain),
(assign, ":scene_to_use", "scn_coop_random_med_plain"),
(assign, ":scene_to_use_large", "scn_coop_random_lrg_plain"),
(else_try),
(eq, ":current_terrain_main_party", rt_snow),
(assign, ":scene_to_use", "scn_coop_random_med_snow"),
(assign, ":scene_to_use_large", "scn_coop_random_lrg_snow"),