diff --git a/source/enemizer/Enemizer.py b/source/enemizer/Enemizer.py index c71fed59..32af161e 100644 --- a/source/enemizer/Enemizer.py +++ b/source/enemizer/Enemizer.py @@ -3,7 +3,7 @@ from Utils import snes_to_pc from source.dungeon.EnemyList import SpriteType, EnemySprite, sprite_translation from source.dungeon.RoomList import Room010C -from source.enemizer.SpecialEnemyModes import get_enemy_map_uw, get_enemy_map_ow +from source.enemizer.SpecialEnemyModes import get_enemy_map_uw, get_enemy_map_ow, write_mimic_changes from source.enemizer.SpriteSheets import sub_group_choices from source.enemizer.SpriteSheets import randomize_underworld_sprite_sheets, randomize_overworld_sprite_sheets from source.enemizer.TilePattern import tile_patterns @@ -521,13 +521,16 @@ def write_enemy_shuffle_settings(world, player, rom): # rom.write_byte(snes_to_pc(0x368108), 0xc4) # rom.write_byte(snes_to_pc(0x0DB237), 4) # health value - randomize it if killable, maybe - # mimic room barriers - data_tables = world.data_tables[player] - mimic_room = data_tables.room_list[0x10c] = Room010C - mimic_room.layer1[40].data[0] = 0x54 # rail adjust - mimic_room.layer1[40].data[1] = 0x9C - mimic_room.layer1[45].data[1] = 0xB0 # block adjust 1 - mimic_room.layer1[47].data[1] = 0xD0 # block adjust 2 + if world.enemy_shuffle[player] == 'mimics': + write_mimic_changes(rom) + else: + # mimic room barriers + data_tables = world.data_tables[player] + mimic_room = data_tables.room_list[0x10c] = Room010C + mimic_room.layer1[40].data[0] = 0x54 # rail adjust + mimic_room.layer1[40].data[1] = 0x9C + mimic_room.layer1[45].data[1] = 0xB0 # block adjust 1 + mimic_room.layer1[47].data[1] = 0xD0 # block adjust 2 # random tile pattern pattern_name, tile_pattern = random.choice(tile_patterns) diff --git a/source/enemizer/SpecialEnemyModes.py b/source/enemizer/SpecialEnemyModes.py index 8e0df1cb..1e075464 100644 --- a/source/enemizer/SpecialEnemyModes.py +++ b/source/enemizer/SpecialEnemyModes.py @@ -1,3 +1,6 @@ +import RaceRandom as random +from Utils import snes_to_pc + from source.dungeon.EnemyList import EnemySprite, SpriteType, sprite_translation, enemy_names def can_combine_req(req1, req2): @@ -28,7 +31,10 @@ def get_enemy_map(mode, reqs, vanilla_map): break continue if req.killable: - data[room_id][idx] = 'GreenMimic' + if random.random() > 0.1: + data[room_id][idx] = 'GreenMimic' + else: + data[room_id][idx] = 'RedMimic' else: data[room_id][idx] = enemy_names[sprite.kind] if len(data[room_id]) == 0: @@ -44,3 +50,9 @@ def get_enemy_map_uw(mode, data_tables): reqs = data_tables.sprite_requirements return get_enemy_map(mode, reqs, data_tables.uw_enemy_table.room_map) +def write_mimic_changes(rom): + rom.write_bytes(snes_to_pc(0x1EC71B), + [0x00, 0xF0, 0x10, 0x00, 0x00, 0xF3, 0x0D, 0x00, + 0x00, 0xF3, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00]) + rom.write_bytes(snes_to_pc(0x1EC75C), [0x01, 0x00]) +