1
1
import Utils
2
2
from worlds .Files import APDeltaPatch
3
3
from .Aesthetics import generate_shuffled_header_data
4
- from .Levels import level_info_dict , full_bowser_rooms , standard_bowser_rooms
4
+ from .Levels import level_info_dict , full_bowser_rooms , standard_bowser_rooms , submap_boss_rooms , ow_boss_rooms
5
5
from .Names .TextBox import generate_goal_text , title_text_mapping , generate_text_box
6
6
7
7
USHASH = 'cdd3c8c37322978ca8669b34bc89c804'
@@ -743,7 +743,7 @@ def handle_bowser_rooms(rom, world, player):
743
743
rom .write_byte (chosen_rooms [len (chosen_rooms )- 1 ].exitAddress , 0xBD )
744
744
745
745
elif world .bowser_castle_rooms [player ] == "random_five_room" :
746
- chosen_rooms = world .random .sample (standard_bowser_rooms )
746
+ chosen_rooms = world .random .sample (standard_bowser_rooms , 5 )
747
747
748
748
rom .write_byte (0x3A680 , chosen_rooms [0 ].roomID )
749
749
rom .write_byte (0x3A684 , chosen_rooms [0 ].roomID )
@@ -779,7 +779,50 @@ def handle_bowser_rooms(rom, world, player):
779
779
for i in range (0 , len (bowser_rooms_copy ) - 1 ):
780
780
rom .write_byte (bowser_rooms_copy [i ].exitAddress , bowser_rooms_copy [i + 1 ].roomID )
781
781
782
- rom .write_byte (chosen_rooms [len (chosen_rooms )- 1 ].exitAddress , 0xBD )
782
+ rom .write_byte (bowser_rooms_copy [len (bowser_rooms_copy )- 1 ].exitAddress , 0xBD )
783
+
784
+
785
+ def handle_boss_shuffle (rom , world , player ):
786
+ if world .boss_shuffle [player ] == "simple" :
787
+ submap_boss_rooms_copy = submap_boss_rooms .copy ()
788
+ ow_boss_rooms_copy = ow_boss_rooms .copy ()
789
+
790
+ world .random .shuffle (submap_boss_rooms_copy )
791
+ world .random .shuffle (ow_boss_rooms_copy )
792
+
793
+ for i in range (len (submap_boss_rooms_copy )):
794
+ rom .write_byte (submap_boss_rooms [i ].exitAddress , submap_boss_rooms_copy [i ].roomID )
795
+
796
+ for i in range (len (ow_boss_rooms_copy )):
797
+ rom .write_byte (ow_boss_rooms [i ].exitAddress , ow_boss_rooms_copy [i ].roomID )
798
+
799
+ if ow_boss_rooms [i ].exitAddressAlt is not None :
800
+ rom .write_byte (ow_boss_rooms [i ].exitAddressAlt , ow_boss_rooms_copy [i ].roomID )
801
+
802
+ elif world .boss_shuffle [player ] == "full" :
803
+ for i in range (len (submap_boss_rooms )):
804
+ chosen_boss = world .random .choice (submap_boss_rooms )
805
+ rom .write_byte (submap_boss_rooms [i ].exitAddress , chosen_boss .roomID )
806
+
807
+ for i in range (len (ow_boss_rooms )):
808
+ chosen_boss = world .random .choice (ow_boss_rooms )
809
+ rom .write_byte (ow_boss_rooms [i ].exitAddress , chosen_boss .roomID )
810
+
811
+ if ow_boss_rooms [i ].exitAddressAlt is not None :
812
+ rom .write_byte (ow_boss_rooms [i ].exitAddressAlt , chosen_boss .roomID )
813
+
814
+ elif world .boss_shuffle [player ] == "singularity" :
815
+ chosen_submap_boss = world .random .choice (submap_boss_rooms )
816
+ chosen_ow_boss = world .random .choice (ow_boss_rooms )
817
+
818
+ for i in range (len (submap_boss_rooms )):
819
+ rom .write_byte (submap_boss_rooms [i ].exitAddress , chosen_submap_boss .roomID )
820
+
821
+ for i in range (len (ow_boss_rooms )):
822
+ rom .write_byte (ow_boss_rooms [i ].exitAddress , chosen_ow_boss .roomID )
823
+
824
+ if ow_boss_rooms [i ].exitAddressAlt is not None :
825
+ rom .write_byte (ow_boss_rooms [i ].exitAddressAlt , chosen_ow_boss .roomID )
783
826
784
827
785
828
def patch_rom (world , rom , player , active_level_dict ):
@@ -794,6 +837,7 @@ def patch_rom(world, rom, player, active_level_dict):
794
837
rom .write_bytes (0x2A5D9 , intro_text )
795
838
796
839
handle_bowser_rooms (rom , world , player )
840
+ handle_boss_shuffle (rom , world , player )
797
841
798
842
# Prevent Title Screen Deaths
799
843
rom .write_byte (0x1C6A , 0x80 )
0 commit comments