From 045863fd89111b2dc8187bdd98def2fc4b239440 Mon Sep 17 00:00:00 2001 From: UmedMuzl Date: Thu, 9 Apr 2026 22:55:13 -0500 Subject: [PATCH 1/6] Aztec Done --- .../CBLocations/AngryAztecCBLocations.py | 144 +++++++++++------- randomizer/LogicClasses.py | 3 + randomizer/ShuffleCBs.py | 32 +++- 3 files changed, 121 insertions(+), 58 deletions(-) diff --git a/randomizer/Lists/CBLocations/AngryAztecCBLocations.py b/randomizer/Lists/CBLocations/AngryAztecCBLocations.py index b803b911f..56302dedc 100644 --- a/randomizer/Lists/CBLocations/AngryAztecCBLocations.py +++ b/randomizer/Lists/CBLocations/AngryAztecCBLocations.py @@ -2921,6 +2921,7 @@ region=Regions.BetweenVinesByPortal, logic=lambda l: l.pineapple, points=[[98, 195, 644], [38, 195, 592], [136, 195, 487], [38, 195, 592]], + banned_when_item_rando=True, # Over quicksand ), Balloon( id=2, @@ -2931,22 +2932,24 @@ region=Regions.BetweenVinesByPortal, logic=lambda l: l.pineapple, points=[[558, 195, 455], [527, 195, 587], [493, 195, 704]], + banned_when_item_rando=True, # Over quicksand ), Balloon( id=3, map_id=Maps.AngryAztec, - name="DK BP room over/under bridge", + name="Behind DK Stone Door", speed=6, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], - region=Regions.AngryAztecOasis, + item_rando_kong=[Kongs.donkey], + region=Regions.AztecTunnelBeforeOasis, logic=lambda l: l.hasMoveSwitchsanity(Switches.AztecBlueprintDoor, False), - item_logic=lambda l: l.strong, # item_logic inherits from logic + item_logic=lambda l: l.strong and l.donkey, points=[[1380, 190, 735], [1380, 160, 800], [1380, 130, 735], [1380, 160, 670]], ), Balloon( id=4, map_id=Maps.AngryAztec, - name="Oasis", + name="Center Oasis", speed=4, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.AngryAztecOasis, @@ -2955,7 +2958,7 @@ Balloon( id=5, map_id=Maps.AngryAztec, - name="In front of Candy", + name="In Frpnt of Candy", speed=4, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.AngryAztecOasis, @@ -2973,7 +2976,7 @@ Balloon( id=7, map_id=Maps.AngryAztec, - name="Behind Llama cage high up", + name="Behind Llama Cage", speed=5, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.AngryAztecOasis, @@ -2987,12 +2990,12 @@ konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.AngryAztecOasis, points=[[2218, 50, 1087], [2225, 80, 1080], [2230, 110, 1085], [2223, 140, 1092]], - banned_when_item_rando=True, # Bans this from being picked when Balloons are in the pool + banned_when_item_rando=True, # Goes out of bounds ), Balloon( id=9, map_id=Maps.AngryAztec, - name="Near Hunky Chunky barrel", + name="Near Hunky Chunky Barrel", speed=8, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.AngryAztecConnectorTunnel, @@ -3013,6 +3016,7 @@ konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.AngryAztecConnectorTunnel, points=[[3353, 180, 2186], [3363, 180, 2342], [3275, 180, 2434]], + banned_when_item_rando=True, # Over quicksand ), Balloon( id=11, @@ -3026,7 +3030,7 @@ Balloon( id=12, map_id=Maps.AngryAztec, - name="Behind Beetle Race Tower high up", + name="Behind Beetle Race Tower", speed=5, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.AngryAztecMain, @@ -3035,7 +3039,7 @@ Balloon( id=13, map_id=Maps.AngryAztec, - name="In front of Snide's", + name="In Front of Vulture Cage Shop", speed=5, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.AngryAztecMain, @@ -3044,10 +3048,12 @@ Balloon( id=14, map_id=Maps.AngryAztec, - name="Around feed me totem", + name="Around Feed Me Totem", speed=6, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], + # item_rando_kongs=[Kongs.donkey], region=Regions.AngryAztecMain, + item_logic=lambda l: l.strong and l.donkey, points=[ [3386, 200, 3944], [3428, 204, 3808], @@ -3060,9 +3066,11 @@ Balloon( id=15, map_id=Maps.AngryAztec, - name="Right side of 5DT", + name="Right Side of 5-Door Temple", speed=4, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], + # item_rando_kong=[Kongs.donkey], + item_logic=lambda l: l.strong and l.donkey, region=Regions.AngryAztecMain, points=[[2331, 400, 3430], [2084, 410, 3276]], ), @@ -3072,6 +3080,8 @@ name="Spiral around tree left side of 5DT", speed=8, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], + # item_rando_kong=[Kongs.donkey], + item_logic=lambda l: l.strong and l.donkey, region=Regions.AngryAztecMain, points=[ [1913, 140, 4070], @@ -3087,7 +3097,7 @@ Balloon( id=17, map_id=Maps.AztecDonkey5DTemple, - name="First dead end", + name="DK 5DT: First Dead End", speed=5, konglist=[Kongs.donkey], region=Regions.DonkeyTempleDeadEndRight, @@ -3096,7 +3106,7 @@ Balloon( id=18, map_id=Maps.AztecLanky5DTemple, - name="Dead end", + name="Lanky 5DT: Dead end", speed=6, konglist=[Kongs.lanky], region=Regions.LankyTemple, @@ -3105,7 +3115,7 @@ Balloon( id=19, map_id=Maps.AztecTiny5DTemple, - name="Dead end", + name="Tiny 5DT: Dead end", speed=5, konglist=[Kongs.tiny], region=Regions.TinyTemple, @@ -3114,7 +3124,7 @@ Balloon( id=20, map_id=Maps.AztecTinyTemple, - name="Mini Monkey alcove", + name="Tiny Temple: Mini Monkey Alcove", speed=5, konglist=[Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.TempleStart, @@ -3123,7 +3133,7 @@ Balloon( id=21, map_id=Maps.AztecLlamaTemple, - name="Matching game room right side", + name="Llama Temple: Matching Game Room (0)", speed=4, konglist=[Kongs.lanky], region=Regions.LlamaTempleMatching, @@ -3132,25 +3142,27 @@ Balloon( id=22, map_id=Maps.AztecLlamaTemple, - name="Above Llama", + name="Llama Temple: Above Lava Water", speed=5, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.LlamaTemple, + item_logic=lambda l: Events.AztecLlamaSpit in l.Events and l.swim, points=[[2100, 760, 2180], [2100, 760, 2620]], ), Balloon( id=23, map_id=Maps.AztecLlamaTemple, - name="Lava room", + name="Lava Room", speed=4, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.LlamaTempleBack, points=[[948, 490, 3779], [1058, 480, 4098], [1326, 490, 3994], [1214, 510, 3826]], + banned_when_item_rando=True, # Over Lava ), Balloon( id=24, map_id=Maps.AztecTinyTemple, - name="Tiny's room (Tiny)", + name="Tiny Temple: KONG Room (0)", speed=3, konglist=[Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.TempleKONGRoom, @@ -3160,7 +3172,7 @@ Balloon( id=25, map_id=Maps.AztecTinyTemple, - name="Tiny's room (Tiny)", + name="Tiny Temple: KONG Room (1)", speed=3, konglist=[Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.TempleKONGRoom, @@ -3170,7 +3182,7 @@ Balloon( id=26, map_id=Maps.AztecTinyTemple, - name="Vulture room (Chunky)", + name="Tiny Temple: Vulture Room", speed=4, konglist=[Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.TempleVultureRoom, @@ -3180,17 +3192,18 @@ Balloon( id=27, map_id=Maps.AztecLlamaTemple, - name="Above lava/water (Tiny)", + name="Tiny Temple: Above Water", speed=3, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.LlamaTemple, vanilla=True, + item_logic=lambda l: Events.AztecLlamaSpit in l.Events and l.swim, points=[[2295, 500, 2624], [2309, 496, 2452], [2326, 502, 2186]], ), Balloon( id=28, map_id=Maps.AztecLlamaTemple, - name="In Lanky's room (Lanky)", + name="Llama Temple: In Lanky's room (0)", speed=4, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.LlamaTemple, @@ -3201,7 +3214,7 @@ Balloon( id=29, map_id=Maps.AztecLlamaTemple, - name="In Lanky's room (Lanky)", + name="Llama Temple: In Lanky's room (1)", speed=3, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.LlamaTemple, @@ -3212,7 +3225,7 @@ Balloon( id=30, map_id=Maps.AztecDiddy5DTemple, - name="Right side (Diddy)", + name="Diddy 5DT: Right Side", speed=5, konglist=[Kongs.diddy], region=Regions.DiddyTemple, @@ -3222,7 +3235,7 @@ Balloon( id=31, map_id=Maps.AztecLanky5DTemple, - name="Middle (Lanky)", + name="Lanky 5DT: Middle", speed=7, konglist=[Kongs.lanky], region=Regions.LankyTemple, @@ -3232,7 +3245,7 @@ Balloon( id=32, map_id=Maps.AztecChunky5DTemple, - name="Left side (Chunky)", + name="Chunky 5DT: Left Side", speed=6, konglist=[Kongs.chunky], region=Regions.ChunkyTemple, @@ -3252,7 +3265,7 @@ Balloon( id=33, map_id=Maps.AztecChunky5DTemple, - name="Right side (Chunky)", + name="Chunky 5DT: Right Side", speed=5, konglist=[Kongs.chunky], region=Regions.ChunkyTemple, @@ -3268,11 +3281,12 @@ region=Regions.AngryAztecMain, vanilla=True, points=[[2870, 169, 2606], [2984, 191, 2547], [3010, 187, 2463]], + banned_when_item_rando=True, # Over quicksand ), Balloon( id=35, map_id=Maps.AngryAztec, - name="In front of Tiny Temple (Diddy)", + name="In front of Tiny Temple", speed=6, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.AngryAztecOasis, @@ -3282,9 +3296,11 @@ Balloon( id=36, map_id=Maps.AngryAztec, - name="Behind Llama Temple (Donkey)", + name="Behind Llama Temple", speed=4, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], + item_rando_kong = [Kongs.donkey], + item_logic=lambda l: l.strong and l.donkey, region=Regions.AngryAztecMain, vanilla=True, points=[[2999, 297, 2676], [2862, 304, 2706], [2672, 286, 2751]], @@ -3298,13 +3314,16 @@ region=Regions.AngryAztecMain, vanilla=True, points=[[2811, 196, 2402], [2873, 195, 2318], [2956, 189, 2247]], + banned_when_item_rando=True, # Over quicksand ), Balloon( id=38, map_id=Maps.AngryAztec, - name="Sealed Quicksand Tunnel (Diddy)", + name="Sealed Quicksand Tunnel", speed=4, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], + item_rando_kong=[Kongs.donkey], + item_logic=lambda l: l.strong and l.donkey, region=Regions.AztecDonkeyQuicksandCave, vanilla=True, points=[[3083, 177, 4696], [3099, 174, 4790]], @@ -3318,11 +3337,12 @@ konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.BetweenVinesByPortal, points=[[1154, 160, 1224], [934, 156, 1183], [823, 155, 1047], [791, 160, 563], [823, 155, 1047], [934, 156, 1183]], + banned_when_item_rando=True, # Over quicksnad ), Balloon( id=40, map_id=Maps.AngryAztec, - name="Oasis entrance", + name="Oasis Entrance", speed=4, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.AngryAztecOasis, @@ -3331,16 +3351,17 @@ Balloon( id=41, map_id=Maps.AngryAztec, - name="Quicksand near Candy", + name="Quicksand Near Candy", speed=5, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.AngryAztecOasis, points=[[2248, 110, 612], [2362, 115, 656], [2458, 110, 599], [2362, 110, 656]], + banned_when_item_rando=True, # Over quicksand ), Balloon( id=42, map_id=Maps.AngryAztec, - name="Around the llama's cage", + name="Around the Llama's Cage", speed=6, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.AngryAztecOasis, @@ -3349,7 +3370,7 @@ Balloon( id=43, map_id=Maps.AngryAztec, - name="Snake road", + name="Snake Road", speed=10, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.AngryAztecMain, @@ -3370,7 +3391,7 @@ Balloon( id=44, map_id=Maps.AngryAztec, - name="Around the Hunky cage", + name="Around the Hunky Cage", speed=6, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.AngryAztecMain, @@ -3379,7 +3400,7 @@ Balloon( id=45, map_id=Maps.AngryAztec, - name="Near the vulture cage", + name="Near the Vulture Cage", speed=4, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.AngryAztecMain, @@ -3388,7 +3409,7 @@ Balloon( id=46, map_id=Maps.AngryAztec, - name="Around warp 5", + name="Around Warp 5", speed=5, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.AngryAztecMain, @@ -3397,25 +3418,29 @@ Balloon( id=47, map_id=Maps.AngryAztec, - name="Poking in and out of the sealed quicksand tunnel", + name="Front of Quicksand Tunnel", speed=10, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], + item_rando_kong=[Kongs.donkey], + item_logic=lambda l: l.strong and l.donkey, region=Regions.AngryAztecMain, points=[[3212, 160, 4498], [3209, 150, 4277]], ), Balloon( id=48, map_id=Maps.AngryAztec, - name="Trees in front of 5DT", + name="Trees In Front of 5DT", speed=6, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], + item_rando_kong=[Kongs.donkey], + item_logic=lambda l: l.strong and l.donkey, region=Regions.AngryAztecMain, points=[[2161, 200, 4037], [2147, 230, 3890], [2559, 165, 3798], [2446, 185, 3659]], ), Balloon( id=49, map_id=Maps.AngryAztec, - name="In front of Llama temple", + name="In Front of Llama Temple", speed=7, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.AngryAztecMain, @@ -3424,16 +3449,18 @@ Balloon( id=50, map_id=Maps.AngryAztec, - name="Quicksand near Rocketbarrel", + name="Quicksand Near Rocketbarrel", speed=9, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], + item_rando_kong=[Kongs.donkey], + item_logic=lambda l: l.strong and l.donkey, region=Regions.AngryAztecMain, points=[[3865, 112, 3488], [3879, 250, 3607], [3886, 112, 3752], [3879, 0, 3488]], ), Balloon( id=51, map_id=Maps.AztecDonkey5DTemple, - name="Path to the second coconut switch", + name="DK 5DT: Path to the Second Coconut Switch", speed=5, konglist=[Kongs.donkey], region=Regions.DonkeyTemple, @@ -3442,7 +3469,7 @@ Balloon( id=52, map_id=Maps.AztecDiddy5DTemple, - name="Second peanut switch", + name="Diddy 5DT: Second Peanut Switch", speed=5, konglist=[Kongs.diddy], region=Regions.DiddyTemple, @@ -3451,7 +3478,7 @@ Balloon( id=53, map_id=Maps.AztecLanky5DTemple, - name="Next to the GB", + name="Lanky 5DT: End Reward", speed=5, konglist=[Kongs.lanky], region=Regions.LankyTemple, @@ -3460,7 +3487,7 @@ Balloon( id=54, map_id=Maps.AztecTiny5DTemple, - name="Left side", + name="Tiny 5DT: Left Side", speed=6, konglist=[Kongs.tiny], region=Regions.TinyTemple, @@ -3469,7 +3496,7 @@ Balloon( id=55, map_id=Maps.AztecChunky5DTemple, - name="Kasplat room", + name="Chunky 5DT: End Pineapple Switch Hall", speed=6, konglist=[Kongs.chunky], region=Regions.ChunkyTemple, @@ -3478,7 +3505,7 @@ Balloon( id=56, map_id=Maps.AztecLlamaTemple, - name="Entrance stairs", + name="Llama Temple: Entrance Stairs", speed=7, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.LlamaTemple, @@ -3487,7 +3514,7 @@ Balloon( id=57, map_id=Maps.AztecLlamaTemple, - name="Left side behind the llama", + name="Llama Temple: Right of Llama", speed=5, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.LlamaTemple, @@ -3496,7 +3523,7 @@ Balloon( id=58, map_id=Maps.AztecLlamaTemple, - name="Right side behind the llama", + name="Llama Temple: Left of Llama", speed=5, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.LlamaTemple, @@ -3505,16 +3532,17 @@ Balloon( id=59, map_id=Maps.AztecLlamaTemple, - name="Matching game", + name="Llama Temple: Matching Game", speed=7, konglist=[Kongs.lanky], region=Regions.LlamaTempleMatching, points=[[696, 666, 2510], [696, 860, 2510], [719, 640, 2292], [719, 888, 2292]], + banned_when_item_rando=True, # Over lava ), Balloon( id=60, map_id=Maps.AztecLlamaTemple, - name="Mini tunnel room arch", + name="Llama Temple: Arch to Lava Room", speed=5, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.LlamaTemple, @@ -3528,11 +3556,12 @@ konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.LlamaTempleBack, points=[[1202, 400, 3985], [1128, 500, 3954], [1070, 402, 3886], [1168, 290, 3927]], + banned_when_item_rando=True, # Over Lava ), Balloon( id=62, map_id=Maps.AztecTinyTemple, - name="Near the Chunky klaptrap room", + name="Tiny Temple: Near the Chunky Klaptrap Room", speed=5, konglist=[Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.TempleStart, @@ -3541,16 +3570,17 @@ Balloon( id=63, map_id=Maps.AztecTinyTemple, - name="Above the pool", + name="Tiny Temple: Above Pool", speed=8, konglist=[Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.TempleStart, + item_logic=lambda l: l.swim, points=[[1489, 148, 806], [1490, 260, 810], [1451, 340, 899], [1421, 434, 830], [1428, 530, 807]], ), Balloon( id=64, map_id=Maps.AztecTinyTemple, - name="Vulture path", + name="Tiny Temple: Vulture Path", speed=4, konglist=[Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.TempleVultureRoom, @@ -3559,7 +3589,7 @@ Balloon( id=65, map_id=Maps.AztecTinyTemple, - name="KONG above the cage", + name="Tiny Temple: KONG above the cage", speed=5, konglist=[Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.TempleKONGRoom, diff --git a/randomizer/LogicClasses.py b/randomizer/LogicClasses.py index f73e86ba8..2fc6fadf6 100644 --- a/randomizer/LogicClasses.py +++ b/randomizer/LogicClasses.py @@ -285,6 +285,7 @@ def __init__( region=None, logic=None, item_logic=None, + item_rando_konglist=None, vanilla=False, banned_when_item_rando=False, points=[], @@ -295,6 +296,8 @@ def __init__( self.map = map_id self.speed = speed self.kongs = konglist + # Override konglist when balloon items are shuffled (if specified) + self.item_rando_kongs = item_rando_konglist if item_rando_konglist is not None else konglist self.points = points # 3 numbers: [int x, y, z] self.region = region if logic is None: diff --git a/randomizer/ShuffleCBs.py b/randomizer/ShuffleCBs.py index 5d6d6f412..054fcdda1 100644 --- a/randomizer/ShuffleCBs.py +++ b/randomizer/ShuffleCBs.py @@ -8,6 +8,13 @@ import randomizer.CollectibleLogicFiles.FungiForest import randomizer.CollectibleLogicFiles.GloomyGalleon import randomizer.CollectibleLogicFiles.JungleJapes +import randomizer.LogicFiles.AngryAztec +import randomizer.LogicFiles.CreepyCastle +import randomizer.LogicFiles.CrystalCaves +import randomizer.LogicFiles.FranticFactory +import randomizer.LogicFiles.FungiForest +import randomizer.LogicFiles.GloomyGalleon +import randomizer.LogicFiles.JungleJapes import randomizer.Fill as Fill import randomizer.Lists.CBLocations.AngryAztecCBLocations import randomizer.Lists.CBLocations.CreepyCastleCBLocations @@ -50,6 +57,23 @@ def addBalloon(spoiler, balloon: Balloon, enum_val: int, name: str, level: Level spoiler.LocationList[enum_val].kong = kong +def removeBalloons(spoiler): + """Remove all vanilla balloons from Logic regions.""" + level_logic_regions = [ + randomizer.LogicFiles.JungleJapes.LogicRegions, + randomizer.LogicFiles.AngryAztec.LogicRegions, + randomizer.LogicFiles.FranticFactory.LogicRegions, + randomizer.LogicFiles.GloomyGalleon.LogicRegions, + randomizer.LogicFiles.FungiForest.LogicRegions, + randomizer.LogicFiles.CrystalCaves.LogicRegions, + randomizer.LogicFiles.CreepyCastle.LogicRegions, + ] + for level in level_logic_regions: + for region in level: + region_data = spoiler.RegionList[region] + region_data.locations = [x for x in region_data.locations if x.id < Locations.Balloon000 or x.id > Locations.Balloon103] + + level_data = { Levels.JungleJapes: { "cb": randomizer.Lists.CBLocations.JungleJapesCBLocations.ColoredBananaGroupList, @@ -198,7 +222,11 @@ def ShuffleCBs(spoiler): placed_balloons = 0 for balloon in balloon_lst: if placed_balloons < selected_balloon_count: - balloon_kongs = balloon.kongs.copy() + # Use item_rando_kongs if balloon items are shuffled, otherwise use normal kongs + if Types.Balloon in spoiler.settings.shuffled_location_types: + balloon_kongs = balloon.item_rando_kongs.copy() + else: + balloon_kongs = balloon.kongs.copy() for kong in kong_specific_left: if kong_specific_left[kong] < 10 and kong in balloon_kongs: # Not enough Colored Bananas to place a balloon: balloon_kongs.remove(kong) # Remove kong from permitted list @@ -346,6 +374,8 @@ def ShuffleCBs(spoiler): # Assign balloon locations if balloon items are shuffled if Types.Balloon in spoiler.settings.shuffled_location_types: + # Remove vanilla balloon logic before adding custom balloons + removeBalloons(spoiler) sorted_balloons = spoiler.balloon_placement.copy() sorted_balloons = sorted(sorted_balloons, key=lambda d: d["score"]) for balloon_index, balloon_data in enumerate(sorted_balloons): From 727c6c1e0477ca6e15ddf15aa457f6f7d8444895 Mon Sep 17 00:00:00 2001 From: UmedMuzl Date: Thu, 9 Apr 2026 22:59:31 -0500 Subject: [PATCH 2/6] typo --- .../Lists/CBLocations/AngryAztecCBLocations.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/randomizer/Lists/CBLocations/AngryAztecCBLocations.py b/randomizer/Lists/CBLocations/AngryAztecCBLocations.py index 56302dedc..6a00acf52 100644 --- a/randomizer/Lists/CBLocations/AngryAztecCBLocations.py +++ b/randomizer/Lists/CBLocations/AngryAztecCBLocations.py @@ -2940,7 +2940,7 @@ name="Behind DK Stone Door", speed=6, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], - item_rando_kong=[Kongs.donkey], + item_rando_konglist=[Kongs.donkey], region=Regions.AztecTunnelBeforeOasis, logic=lambda l: l.hasMoveSwitchsanity(Switches.AztecBlueprintDoor, False), item_logic=lambda l: l.strong and l.donkey, @@ -3051,7 +3051,7 @@ name="Around Feed Me Totem", speed=6, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], - # item_rando_kongs=[Kongs.donkey], + # item_rando_konglist=[Kongs.donkey], region=Regions.AngryAztecMain, item_logic=lambda l: l.strong and l.donkey, points=[ @@ -3069,7 +3069,7 @@ name="Right Side of 5-Door Temple", speed=4, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], - # item_rando_kong=[Kongs.donkey], + # item_rando_konglist=[Kongs.donkey], item_logic=lambda l: l.strong and l.donkey, region=Regions.AngryAztecMain, points=[[2331, 400, 3430], [2084, 410, 3276]], @@ -3080,7 +3080,7 @@ name="Spiral around tree left side of 5DT", speed=8, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], - # item_rando_kong=[Kongs.donkey], + # item_rando_konglist=[Kongs.donkey], item_logic=lambda l: l.strong and l.donkey, region=Regions.AngryAztecMain, points=[ @@ -3299,7 +3299,7 @@ name="Behind Llama Temple", speed=4, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], - item_rando_kong = [Kongs.donkey], + item_rando_konglist = [Kongs.donkey], item_logic=lambda l: l.strong and l.donkey, region=Regions.AngryAztecMain, vanilla=True, @@ -3322,7 +3322,7 @@ name="Sealed Quicksand Tunnel", speed=4, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], - item_rando_kong=[Kongs.donkey], + item_rando_konglist=[Kongs.donkey], item_logic=lambda l: l.strong and l.donkey, region=Regions.AztecDonkeyQuicksandCave, vanilla=True, @@ -3421,7 +3421,7 @@ name="Front of Quicksand Tunnel", speed=10, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], - item_rando_kong=[Kongs.donkey], + item_rando_konglist=[Kongs.donkey], item_logic=lambda l: l.strong and l.donkey, region=Regions.AngryAztecMain, points=[[3212, 160, 4498], [3209, 150, 4277]], @@ -3432,7 +3432,7 @@ name="Trees In Front of 5DT", speed=6, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], - item_rando_kong=[Kongs.donkey], + item_rando_konglist=[Kongs.donkey], item_logic=lambda l: l.strong and l.donkey, region=Regions.AngryAztecMain, points=[[2161, 200, 4037], [2147, 230, 3890], [2559, 165, 3798], [2446, 185, 3659]], @@ -3452,7 +3452,7 @@ name="Quicksand Near Rocketbarrel", speed=9, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], - item_rando_kong=[Kongs.donkey], + item_rando_konglist=[Kongs.donkey], item_logic=lambda l: l.strong and l.donkey, region=Regions.AngryAztecMain, points=[[3865, 112, 3488], [3879, 250, 3607], [3886, 112, 3752], [3879, 0, 3488]], From 7f1e829a5b41821009b16679cb750af8ae199589 Mon Sep 17 00:00:00 2001 From: UmedMuzl Date: Thu, 9 Apr 2026 23:00:45 -0500 Subject: [PATCH 3/6] Update AngryAztecCBLocations.py --- .../Lists/CBLocations/AngryAztecCBLocations.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/randomizer/Lists/CBLocations/AngryAztecCBLocations.py b/randomizer/Lists/CBLocations/AngryAztecCBLocations.py index 6a00acf52..25c8720b3 100644 --- a/randomizer/Lists/CBLocations/AngryAztecCBLocations.py +++ b/randomizer/Lists/CBLocations/AngryAztecCBLocations.py @@ -2943,7 +2943,7 @@ item_rando_konglist=[Kongs.donkey], region=Regions.AztecTunnelBeforeOasis, logic=lambda l: l.hasMoveSwitchsanity(Switches.AztecBlueprintDoor, False), - item_logic=lambda l: l.strong and l.donkey, + item_logic=lambda l: l.strongKong and l.donkey, points=[[1380, 190, 735], [1380, 160, 800], [1380, 130, 735], [1380, 160, 670]], ), Balloon( @@ -3053,7 +3053,7 @@ konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], # item_rando_konglist=[Kongs.donkey], region=Regions.AngryAztecMain, - item_logic=lambda l: l.strong and l.donkey, + item_logic=lambda l: l.strongKong and l.donkey, points=[ [3386, 200, 3944], [3428, 204, 3808], @@ -3070,7 +3070,7 @@ speed=4, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], # item_rando_konglist=[Kongs.donkey], - item_logic=lambda l: l.strong and l.donkey, + item_logic=lambda l: l.strongKong and l.donkey, region=Regions.AngryAztecMain, points=[[2331, 400, 3430], [2084, 410, 3276]], ), @@ -3081,7 +3081,7 @@ speed=8, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], # item_rando_konglist=[Kongs.donkey], - item_logic=lambda l: l.strong and l.donkey, + item_logic=lambda l: l.strongKong and l.donkey, region=Regions.AngryAztecMain, points=[ [1913, 140, 4070], @@ -3300,7 +3300,7 @@ speed=4, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], item_rando_konglist = [Kongs.donkey], - item_logic=lambda l: l.strong and l.donkey, + item_logic=lambda l: l.strongKong and l.donkey, region=Regions.AngryAztecMain, vanilla=True, points=[[2999, 297, 2676], [2862, 304, 2706], [2672, 286, 2751]], @@ -3323,7 +3323,7 @@ speed=4, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], item_rando_konglist=[Kongs.donkey], - item_logic=lambda l: l.strong and l.donkey, + item_logic=lambda l: l.strongKong and l.donkey, region=Regions.AztecDonkeyQuicksandCave, vanilla=True, points=[[3083, 177, 4696], [3099, 174, 4790]], @@ -3422,7 +3422,7 @@ speed=10, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], item_rando_konglist=[Kongs.donkey], - item_logic=lambda l: l.strong and l.donkey, + item_logic=lambda l: l.strongKong and l.donkey, region=Regions.AngryAztecMain, points=[[3212, 160, 4498], [3209, 150, 4277]], ), @@ -3433,7 +3433,7 @@ speed=6, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], item_rando_konglist=[Kongs.donkey], - item_logic=lambda l: l.strong and l.donkey, + item_logic=lambda l: l.strongKong and l.donkey, region=Regions.AngryAztecMain, points=[[2161, 200, 4037], [2147, 230, 3890], [2559, 165, 3798], [2446, 185, 3659]], ), @@ -3453,7 +3453,7 @@ speed=9, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], item_rando_konglist=[Kongs.donkey], - item_logic=lambda l: l.strong and l.donkey, + item_logic=lambda l: l.strongKong and l.donkey, region=Regions.AngryAztecMain, points=[[3865, 112, 3488], [3879, 250, 3607], [3886, 112, 3752], [3879, 0, 3488]], ), From 18584edeec55c04ad66b45d2893b9816b2291565 Mon Sep 17 00:00:00 2001 From: UmedMuzl Date: Thu, 9 Apr 2026 23:06:08 -0500 Subject: [PATCH 4/6] Update AngryAztecCBLocations.py --- randomizer/Lists/CBLocations/AngryAztecCBLocations.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/randomizer/Lists/CBLocations/AngryAztecCBLocations.py b/randomizer/Lists/CBLocations/AngryAztecCBLocations.py index 25c8720b3..2f7bf7227 100644 --- a/randomizer/Lists/CBLocations/AngryAztecCBLocations.py +++ b/randomizer/Lists/CBLocations/AngryAztecCBLocations.py @@ -2958,7 +2958,7 @@ Balloon( id=5, map_id=Maps.AngryAztec, - name="In Frpnt of Candy", + name="In Front of Candy", speed=4, konglist=[Kongs.donkey, Kongs.diddy, Kongs.lanky, Kongs.tiny, Kongs.chunky], region=Regions.AngryAztecOasis, From 8c372056bb6f849e15f722bcf873f2d41066fcfb Mon Sep 17 00:00:00 2001 From: UmedMuzl Date: Thu, 9 Apr 2026 23:18:21 -0500 Subject: [PATCH 5/6] Update ShuffleCBs.py --- randomizer/ShuffleCBs.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/randomizer/ShuffleCBs.py b/randomizer/ShuffleCBs.py index 054fcdda1..f9626bf80 100644 --- a/randomizer/ShuffleCBs.py +++ b/randomizer/ShuffleCBs.py @@ -48,10 +48,17 @@ def addBalloon(spoiler, balloon: Balloon, enum_val: int, name: str, level: Level Levels.CrystalCaves: "Caves", Levels.CreepyCastle: "Castle", } + kong_to_name = { + Kongs.donkey: "Donkey", + Kongs.diddy: "Diddy", + Kongs.lanky: "Lanky", + Kongs.tiny: "Tiny", + Kongs.chunky: "Chunky", + } # Combine base logic (to pop balloon) with item_logic (to reach the item after popping) combined_logic = lambda l: balloon.logic(l) and balloon.item_logic(l) spoiler.RegionList[balloon.region].locations.append(LocationLogic(enum_val, combined_logic)) - spoiler.LocationList[enum_val].name = f"{level_to_name[level]} Balloon ({name})" + spoiler.LocationList[enum_val].name = f"{level_to_name[level]} {kong_to_name[kong]} Balloon ({name})" spoiler.LocationList[enum_val].default_mapid_data[0].map = balloon.map spoiler.LocationList[enum_val].level = level spoiler.LocationList[enum_val].kong = kong From b3dfaaf07c179ecae84de498112f1a3ce8e9566e Mon Sep 17 00:00:00 2001 From: UmedMuzl <124306572+UmedMuzl@users.noreply.github.com> Date: Fri, 10 Apr 2026 07:46:20 -0500 Subject: [PATCH 6/6] Update ShuffleCBs.py --- randomizer/ShuffleCBs.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/randomizer/ShuffleCBs.py b/randomizer/ShuffleCBs.py index f9626bf80..4efc99765 100644 --- a/randomizer/ShuffleCBs.py +++ b/randomizer/ShuffleCBs.py @@ -8,6 +8,7 @@ import randomizer.CollectibleLogicFiles.FungiForest import randomizer.CollectibleLogicFiles.GloomyGalleon import randomizer.CollectibleLogicFiles.JungleJapes +import randomizer.LogicFiles.DKIsles import randomizer.LogicFiles.AngryAztec import randomizer.LogicFiles.CreepyCastle import randomizer.LogicFiles.CrystalCaves @@ -67,6 +68,7 @@ def addBalloon(spoiler, balloon: Balloon, enum_val: int, name: str, level: Level def removeBalloons(spoiler): """Remove all vanilla balloons from Logic regions.""" level_logic_regions = [ + randomizer.LogicFiles.DKIsles.LogicRegion, randomizer.LogicFiles.JungleJapes.LogicRegions, randomizer.LogicFiles.AngryAztec.LogicRegions, randomizer.LogicFiles.FranticFactory.LogicRegions,