Allow setting of Glitching to Triforce from ganon in host.yaml.
This commit is contained in:
		
							parent
							
								
									9fe4fa1098
								
							
						
					
					
						commit
						4d99bb1429
					
				| 
						 | 
				
			
			@ -43,6 +43,7 @@ class World(object):
 | 
			
		|||
        # persistently running program with multiple worlds rolling concurrently
 | 
			
		||||
        self.players = players
 | 
			
		||||
        self.teams = 1
 | 
			
		||||
        self.glitch_triforce = False
 | 
			
		||||
        self.shuffle = shuffle.copy()
 | 
			
		||||
        self.logic = logic.copy()
 | 
			
		||||
        self.mode = mode.copy()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,6 +38,7 @@ def parse_arguments(argv, no_defaults=False):
 | 
			
		|||
                             No Logic: Distribute items without regard for
 | 
			
		||||
                                             item requirements.
 | 
			
		||||
                             ''')
 | 
			
		||||
    parser.add_argument('--glitch_triforce', help='Allow glitching to Triforce from Ganon\'s room', action='store_true')
 | 
			
		||||
    parser.add_argument('--mode', default=defval('open'), const='open', nargs='?', choices=['standard', 'open', 'inverted'],
 | 
			
		||||
                        help='''\
 | 
			
		||||
                             Select game mode. (default: %(default)s)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								Main.py
								
								
								
								
							
							
						
						
									
										1
									
								
								Main.py
								
								
								
								
							| 
						 | 
				
			
			@ -105,6 +105,7 @@ def main(args, seed=None):
 | 
			
		|||
    world.er_seeds = args.er_seeds.copy()
 | 
			
		||||
    world.restrict_dungeon_item_on_boss = args.restrict_dungeon_item_on_boss.copy()
 | 
			
		||||
    world.required_medallions = args.required_medallions.copy()
 | 
			
		||||
    world.glitch_triforce = args.glitch_triforce  # This is enabled/disabled globally, no per player option.
 | 
			
		||||
 | 
			
		||||
    world.rom_seeds = {player: random.Random(world.random.randint(0, 999999999)) for player in range(1, world.players + 1)}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,6 +49,7 @@ if __name__ == "__main__":
 | 
			
		|||
        enemizer_path = multi_mystery_options["enemizer_path"]
 | 
			
		||||
        player_files_path = multi_mystery_options["player_files_path"]
 | 
			
		||||
        target_player_count = multi_mystery_options["players"]
 | 
			
		||||
        glitch_triforce = multi_mystery_options["glitch_triforce_room"]
 | 
			
		||||
        race = multi_mystery_options["race"]
 | 
			
		||||
        plando_options = multi_mystery_options["plando_options"]
 | 
			
		||||
        create_spoiler = multi_mystery_options["create_spoiler"]
 | 
			
		||||
| 
						 | 
				
			
			@ -114,6 +115,8 @@ if __name__ == "__main__":
 | 
			
		|||
                command += " --skip_playthrough"
 | 
			
		||||
        if zip_diffs:
 | 
			
		||||
            command += " --create_diff"
 | 
			
		||||
        if glitch_triforce:
 | 
			
		||||
            command += " --glitch_triforce"
 | 
			
		||||
        if race:
 | 
			
		||||
            command += " --race"
 | 
			
		||||
        if os.path.exists(os.path.join(player_files_path, meta_file_path)):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -42,6 +42,7 @@ def mystery_argparse():
 | 
			
		|||
    parser.add_argument('--rom')
 | 
			
		||||
    parser.add_argument('--enemizercli')
 | 
			
		||||
    parser.add_argument('--outputpath')
 | 
			
		||||
    parser.add_argument('--glitch_triforce', action='store_true')
 | 
			
		||||
    parser.add_argument('--race', action='store_true')
 | 
			
		||||
    parser.add_argument('--meta', default=None)
 | 
			
		||||
    parser.add_argument('--log_output_path', help='Path to store output log')
 | 
			
		||||
| 
						 | 
				
			
			@ -106,6 +107,7 @@ def main(args=None, callback=ERmain):
 | 
			
		|||
    erargs.name = {x: "" for x in range(1, args.multi + 1)}  # only so it can be overwrittin in mystery
 | 
			
		||||
    erargs.create_spoiler = args.create_spoiler
 | 
			
		||||
    erargs.create_diff = args.create_diff
 | 
			
		||||
    erargs.glitch_triforce = args.glitch_triforce
 | 
			
		||||
    erargs.race = args.race
 | 
			
		||||
    erargs.skip_playthrough = args.skip_playthrough
 | 
			
		||||
    erargs.outputname = seedname
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								Rom.py
								
								
								
								
							
							
						
						
									
										2
									
								
								Rom.py
								
								
								
								
							| 
						 | 
				
			
			@ -1495,7 +1495,7 @@ def patch_rom(world, rom, player, team, enemized):
 | 
			
		|||
    rom.write_byte(0xEFD95, digging_game_rng)
 | 
			
		||||
    rom.write_byte(0x1800A3, 0x01)  # enable correct world setting behaviour after agahnim kills
 | 
			
		||||
    rom.write_byte(0x1800A4, 0x01 if world.logic[player] != 'nologic' else 0x00)  # enable POD EG fix
 | 
			
		||||
    rom.write_byte(0x186383, 0x00 if world.logic[player] != 'nologic' else 0x01)  # disable glitching to Triforce from Ganons Room
 | 
			
		||||
    rom.write_byte(0x186383, 0x01 if world.glitch_triforce or world.logic[player] == 'nologic' else 0x00)  # disable glitching to Triforce from Ganons Room
 | 
			
		||||
    rom.write_byte(0x180042, 0x01 if world.save_and_quit_from_boss else 0x00)  # Allow Save and Quit after boss kill
 | 
			
		||||
 | 
			
		||||
    # remove shield from uncle
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								Utils.py
								
								
								
								
							
							
						
						
									
										1
									
								
								Utils.py
								
								
								
								
							| 
						 | 
				
			
			@ -224,6 +224,7 @@ def get_default_options() -> dict:
 | 
			
		|||
                "zip_spoiler": 0,
 | 
			
		||||
                "zip_multidata": 1,
 | 
			
		||||
                "zip_format": 1,
 | 
			
		||||
                "glitch_triforce_room": 1,
 | 
			
		||||
                "race": 0,
 | 
			
		||||
                "cpu_threads": 0,
 | 
			
		||||
                "max_attempts": 0,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -101,6 +101,12 @@ multi_mystery_options:
 | 
			
		|||
  # 2 -> 7z is recommended for roms. All of them get the job done.
 | 
			
		||||
  # 3 -> bz2
 | 
			
		||||
  zip_format: 1
 | 
			
		||||
  # Glitch to Triforce room from Ganon
 | 
			
		||||
  # When disabled, you have to have a weapon that can hurt ganon (master sword or swordless/easy item functionality + hammer)
 | 
			
		||||
  # and have completed the goal required for killing ganon to be able to access the triforce room.
 | 
			
		||||
  # 1 -> Enabled.
 | 
			
		||||
  # 0 -> Disabled (except in no-logic)
 | 
			
		||||
  glitch_triforce_room: 1
 | 
			
		||||
  # Create encrypted race roms
 | 
			
		||||
  race: 0
 | 
			
		||||
  # List of options that can be plando'd. Can be combined, for example "bosses, items"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue