コード例 #1
0
ファイル: randomizer.py プロジェクト: cheuer/wwrando
    def apply_necessary_tweaks(self):
        tweaks.apply_patch(self, "custom_funcs")
        tweaks.apply_patch(self, "necessary_fixes")
        tweaks.skip_wakeup_intro_and_start_at_dock(self)
        tweaks.start_ship_at_outset(self)
        tweaks.fix_deku_leaf_model(self)
        tweaks.allow_all_items_to_be_field_items(self)
        tweaks.remove_shop_item_forced_uniqueness_bit(self)
        tweaks.remove_forsaken_fortress_2_cutscenes(self)
        tweaks.make_items_progressive(self)
        tweaks.add_ganons_tower_warp_to_ff2(self)
        tweaks.add_chest_in_place_medli_grappling_hook_gift(self)
        tweaks.add_chest_in_place_queen_fairy_cutscene(self)
        #tweaks.add_cube_to_earth_temple_first_room(self)
        tweaks.add_more_magic_jars_to_dungeons(self)
        tweaks.remove_title_and_ending_videos(self)
        tweaks.modify_title_screen_logo(self)
        tweaks.update_game_name_icon_and_banners(self)
        tweaks.allow_dungeon_items_to_appear_anywhere(self)
        #tweaks.remove_ballad_of_gales_warp_in_cutscene(self)
        tweaks.fix_shop_item_y_offsets(self)
        tweaks.shorten_zephos_event(self)
        tweaks.update_korl_dialogue(self)
        tweaks.set_num_starting_triforce_shards(self)
        tweaks.add_pirate_ship_to_windfall(self)
        tweaks.remove_makar_kidnapping_event(self)
        tweaks.increase_player_movement_speeds(self)
        tweaks.add_chart_number_to_item_get_messages(self)

        tweaks.change_starting_clothes(self)
        customizer.replace_link_model(self)
        customizer.change_player_clothes_color(self)
コード例 #2
0
ファイル: randomizer.py プロジェクト: firesly1/betterww
    def randomize(self):
        options_completed = 0
        yield ("Modifying game code...", options_completed)

        if not self.dry_run:
            self.apply_necessary_tweaks()

            if self.options.get("instant_text_boxes"):
                tweaks.make_all_text_instant(self)
            if self.options.get("reveal_full_sea_chart"):
                tweaks.apply_patch(self, "reveal_sea_chart")
            if self.options.get("invert_camera_x_axis"):
                tweaks.apply_patch(self, "invert_camera_x_axis")
            if self.options.get("swift_sail"):
                tweaks.make_sail_behave_like_swift_sail(self)
            if self.options.get("increase_player_movement_speeds"):
                tweaks.increase_player_movement_speeds(self)
            if self.options.get("increase_grapple_animation_speed"):
                tweaks.increase_grapple_animation_speed(self)
            if self.options.get("increase_block_moving_animation"):
                tweaks.increase_block_moving_animation(self)
            if self.options.get("increase_misc_animations"):
                tweaks.increase_misc_animations(self)
            if self.options.get("tingle_chests_without_tuner"):
                tweaks.apply_patch(self, "tingle_chests_without_tuner")
            if self.options.get("KORL_control"):
                tweaks.apply_patch(self, "KORL_control")
            if self.options.get("song_no_replay"):
                tweaks.apply_patch(self, "song_no_replay")
            if self.options.get("swing_turn"):
                tweaks.apply_patch(self, "swing_turn")
            if self.options.get("remove_title_and_ending_videos"):
                tweaks.remove_title_and_ending_videos(self)
                tweaks.apply_patch(self, "skipintro")
            if self.options.get("ballad"):
                tweaks.apply_patch(self, "ballad")
            if self.options.get("titlelogo"):
                tweaks.modify_title_screen_logo(self)
            if self.options.get("memorylogo"):
                tweaks.update_game_name_icon_and_banners(self)
            if self.options.get("brisk_sail"):
                tweaks.make_sail_behave_like_brisk_sail(self)
            if self.options.get("brisk_sail2"):
                tweaks.make_sail_behave_like_brisk_sail2(self)
            if self.options.get("swift_sail2"):
                tweaks.make_sail_behave_like_swift_sail2(self)

        options_completed += 1
        yield ("Patching...", options_completed)

        options_completed += 2
        options_completed += 7
        yield ("Saving patched ISO...", options_completed)

        if not self.dry_run:
            self.save_randomized_iso()

        options_completed += 9

        yield ("Done", -1)
コード例 #3
0
    def apply_necessary_tweaks(self):
        tweaks.apply_patch(self, "custom_funcs")
        tweaks.apply_patch(self, "necessary_fixes")
        tweaks.skip_wakeup_intro_and_start_at_dock(self)
        tweaks.start_ship_at_outset(self)
        tweaks.fix_deku_leaf_model(self)
        tweaks.allow_all_items_to_be_field_items(self)
        tweaks.remove_shop_item_forced_uniqueness_bit(self)
        tweaks.remove_forsaken_fortress_2_cutscenes(self)
        tweaks.make_items_progressive(self)
        tweaks.add_ganons_tower_warp_to_ff2(self)
        tweaks.add_chest_in_place_medli_grappling_hook_gift(self)
        tweaks.add_chest_in_place_queen_fairy_cutscene(self)
        #tweaks.add_cube_to_earth_temple_first_room(self)
        tweaks.add_more_magic_jars(self)
        tweaks.remove_title_and_ending_videos(self)
        tweaks.modify_title_screen_logo(self)
        tweaks.update_game_name_icon_and_banners(self)
        tweaks.allow_dungeon_items_to_appear_anywhere(self)
        #tweaks.remove_ballad_of_gales_warp_in_cutscene(self)
        tweaks.fix_shop_item_y_offsets(self)
        tweaks.shorten_zephos_event(self)
        tweaks.update_korl_dialogue(self)
        tweaks.set_num_starting_triforce_shards(self)
        tweaks.add_pirate_ship_to_windfall(self)
        tweaks.remove_makar_kidnapping_event(self)
        tweaks.increase_player_movement_speeds(self)
        tweaks.add_chart_number_to_item_get_messages(self)
        tweaks.increase_grapple_animation_speed(self)
        tweaks.increase_block_moving_animation(self)
        tweaks.increase_misc_animations(self)
        tweaks.shorten_auction_intro_event(self)
        tweaks.disable_invisible_walls(self)
        tweaks.add_hint_signs(self)
        tweaks.prevent_door_boulder_softlocks(self)
        tweaks.update_tingle_statue_item_get_funcs(self)
        tweaks.apply_patch(self, "tingle_chests_without_tuner")
        tweaks.make_tingle_statue_reward_rupee_rainbow_colored(self)
        tweaks.show_seed_hash_on_name_entry_screen(self)
        tweaks.fix_ghost_ship_chest_crash(self)
        tweaks.implement_key_bag(self)
        tweaks.add_chest_in_place_of_jabun_cutscene(self)
        tweaks.add_chest_in_place_of_master_sword(self)
        tweaks.update_beedle_spoil_selling_text(self)
        tweaks.fix_totg_warp_out_spawn_pos(self)
        tweaks.remove_phantom_ganon_requirement_from_eye_reefs(self)

        customizer.replace_link_model(self)
        tweaks.change_starting_clothes(self)
        customizer.change_player_clothes_color(self)
コード例 #4
0
    def randomize(self):
        options_completed = 0
        yield ("Modifying game code...", options_completed)

        customizer.decide_on_link_model(self)

        if not self.dry_run:
            self.apply_necessary_tweaks()

            if self.options.get("swift_sail"):
                tweaks.make_sail_behave_like_swift_sail(self)
            if self.options.get("instant_text_boxes"):
                tweaks.make_all_text_instant(self)
            if self.options.get("reveal_full_sea_chart"):
                tweaks.apply_patch(self, "reveal_sea_chart")
            if self.options.get("add_shortcut_warps_between_dungeons"):
                tweaks.add_inter_dungeon_warp_pots(self)
            if self.options.get("invert_camera_x_axis"):
                tweaks.apply_patch(self, "invert_camera_x_axis")
            tweaks.update_skip_rematch_bosses_game_variable(self)
            tweaks.update_sword_mode_game_variable(self)
            if self.options.get("sword_mode") == "Swordless":
                tweaks.apply_patch(self, "swordless")
                tweaks.update_text_for_swordless(self)
            if self.options.get("randomize_entrances") not in [
                    "Disabled", None, "Dungeons"
            ]:
                tweaks.disable_ice_ring_isle_and_fire_mountain_effects_indoors(
                    self)
            tweaks.update_starting_gear(self)
            if self.options.get("disable_tingle_chests_with_tingle_bombs"):
                tweaks.apply_patch(self,
                                   "disable_tingle_bombs_on_tingle_chests")
            if self.options.get("remove_title_and_ending_videos"):
                tweaks.remove_title_and_ending_videos(self)
            if self.options.get("remove_music"):
                tweaks.apply_patch(self, "remove_music")
            if self.map_select:
                tweaks.apply_patch(self, "map_select")
            if IS_RUNNING_FROM_SOURCE:
                tweaks.enable_developer_mode(self)

            if self.test_room_args is not None:
                tweaks.test_room(self)
        options_completed += 1

        yield ("Randomizing...", options_completed)

        if self.options.get("randomize_charts"):
            charts.randomize_charts(self)

        if self.options.get("randomize_starting_island"):
            starting_island.randomize_starting_island(self)

        if self.options.get("randomize_entrances") not in ["Disabled", None]:
            entrances.randomize_entrances(self)

        if self.options.get("randomize_music"):
            music.randomize_music(self)

        options_completed += 1

        # Enemies must be randomized before items in order for the enemy logic to properly take into account what items you do and don't start with.
        if self.options.get("randomize_enemies"):
            yield ("Randomizing enemy locations...", options_completed)
            enemies.randomize_enemies(self)

        if self.options.get("randomize_enemy_palettes"):
            yield ("Randomizing enemy colors...", options_completed)
            palettes.randomize_enemy_palettes(self)
            options_completed += 10

        # Reset RNG before doing item randomization so other randomization options don't affect item layout.
        self.rng = self.get_new_rng()

        yield ("Randomizing items...", options_completed)
        if self.randomize_items:
            items.randomize_items(self)

        options_completed += 2

        yield ("Saving items...", options_completed)
        if self.randomize_items and not self.dry_run:
            items.write_changed_items(self)

        if not self.dry_run:
            self.apply_necessary_post_randomization_tweaks()
        options_completed += 7

        yield ("Saving randomized ISO...", options_completed)
        if not self.dry_run:
            self.save_randomized_iso()
        options_completed += 9
        yield ("Writing logs...", options_completed)

        if self.randomize_items:
            if not self.options.get("do_not_generate_spoiler_log"):
                self.write_spoiler_log()
            self.write_non_spoiler_log()

        yield ("Done", -1)
コード例 #5
0
 def randomize(self):
   options_completed = 0
   yield("Modifying game code...", options_completed)
   
   customizer.decide_on_link_model(self)
   
   if not self.dry_run:
     self.apply_necessary_tweaks()
     
     if self.options.get("swift_sail"):
       tweaks.make_sail_behave_like_swift_sail(self)
     if self.options.get("instant_text_boxes"):
       tweaks.make_all_text_instant(self)
     if self.options.get("reveal_full_sea_chart"):
       patcher.apply_patch(self, "reveal_sea_chart")
     if self.options.get("add_shortcut_warps_between_dungeons"):
       tweaks.add_inter_dungeon_warp_pots(self)
     if self.options.get("invert_camera_x_axis"):
       patcher.apply_patch(self, "invert_camera_x_axis")
     tweaks.update_skip_rematch_bosses_game_variable(self)
     tweaks.update_sword_mode_game_variable(self)
     if self.options.get("sword_mode") == "Swordless":
       patcher.apply_patch(self, "swordless")
       tweaks.update_text_for_swordless(self)
     if self.options.get("randomize_entrances") not in ["Disabled", None, "Dungeons"]:
       tweaks.disable_ice_ring_isle_and_fire_mountain_effects_indoors(self)
     tweaks.update_starting_gear(self)
     if self.options.get("disable_tingle_chests_with_tingle_bombs"):
       patcher.apply_patch(self, "disable_tingle_bombs_on_tingle_chests")
     if self.options.get("remove_title_and_ending_videos"):
       tweaks.remove_title_and_ending_videos(self)
     if self.options.get("remove_music"):
       patcher.apply_patch(self, "remove_music")
     if self.map_select:
       patcher.apply_patch(self, "map_select")
     if IS_RUNNING_FROM_SOURCE or "BETA" in VERSION_WITHOUT_COMMIT:
       tweaks.enable_developer_mode(self)
     if self.heap_display:
       tweaks.enable_heap_display(self)
     
     if self.test_room_args is not None:
       tweaks.test_room(self)
   options_completed += 1
   
   yield("Randomizing...", options_completed)
   
   if self.options.get("randomize_charts"):
     self.reset_rng()
     charts.randomize_charts(self)
   
   if self.options.get("randomize_starting_island"):
     self.reset_rng()
     starting_island.randomize_starting_island(self)
   
   if self.options.get("randomize_entrances") not in ["Disabled", None]:
     self.reset_rng()
     entrances.randomize_entrances(self)
   
   if self.options.get("randomize_music"):
     self.reset_rng()
     music.randomize_music(self)
   
   options_completed += 1
   
   # Enemies must be randomized before items in order for the enemy logic to properly take into account what items you do and don't start with.
   if self.options.get("randomize_enemies"):
     yield("Randomizing enemy locations...", options_completed)
     self.reset_rng()
     enemies.randomize_enemies(self)
   
   if self.options.get("randomize_enemy_palettes"):
     yield("Randomizing enemy colors...", options_completed)
     self.reset_rng()
     palettes.randomize_enemy_palettes(self)
     options_completed += 10
   
   yield("Randomizing items...", options_completed)
   if self.randomize_items:
     self.reset_rng()
     items.randomize_items(self)
   
   options_completed += 2
   
   yield("Saving items...", options_completed)
   if self.randomize_items and not self.dry_run:
     items.write_changed_items(self)
     tweaks.randomize_and_update_hints(self)
   
   if not self.dry_run:
     self.apply_necessary_post_randomization_tweaks()
   options_completed += 7
   
   yield("Saving randomized ISO...", options_completed)
   if not self.dry_run:
     generator = self.save_randomized_iso()
     while True:
       # Need to use a while loop to go through the generator instead of a for loop, as a for loop would silently exit if a StopIteration error ever happened for any reason.
       next_progress_text, files_done = next(generator)
       if files_done == -1:
         break
       percentage_done = files_done/len(self.gcm.files_by_path)
       yield("Saving randomized ISO...", options_completed+int(percentage_done*9))
   options_completed += 9
   yield("Writing logs...", options_completed)
   
   if self.randomize_items:
     if not self.options.get("do_not_generate_spoiler_log"):
       self.write_spoiler_log()
     self.write_non_spoiler_log()
   
   yield("Done", -1)