import math from BaseClasses import MultiWorld, Region, Location, Entrance, ItemClassification from .Locations import DLCQuestLocation, location_table from .Rules import create_event from . import Options DLCQuestRegion = ["Movement Pack", "Behind Tree", "Psychological Warfare", "Double Jump Left", "Double Jump Behind the Tree", "The Forest", "Final Room"] def add_coin_freemium(region: Region, Coin: int, player: int): number_coin = f"{Coin} coins freemium" location_coin = f"{region.name} coins freemium" location = DLCQuestLocation(player, location_coin, None, region) region.locations.append(location) location.place_locked_item(create_event(player, number_coin)) def add_coin_dlcquest(region: Region, Coin: int, player: int): number_coin = f"{Coin} coins" location_coin = f"{region.name} coins" location = DLCQuestLocation(player, location_coin, None, region) region.locations.append(location) location.place_locked_item(create_event(player, number_coin)) def create_regions(world: MultiWorld, player: int, World_Options: Options.DLCQuestOptions): Regmenu = Region("Menu", player, world) if World_Options[Options.Campaign] == Options.Campaign.option_basic or World_Options[ Options.Campaign] == Options.Campaign.option_both: Regmenu.exits += [Entrance(player, "DLC Quest Basic", Regmenu)] if World_Options[Options.Campaign] == Options.Campaign.option_live_freemium_or_die or World_Options[ Options.Campaign] == Options.Campaign.option_both: Regmenu.exits += [Entrance(player, "Live Freemium or Die", Regmenu)] world.regions.append(Regmenu) if World_Options[Options.Campaign] == Options.Campaign.option_basic or World_Options[ Options.Campaign] == Options.Campaign.option_both: Regmoveright = Region("Move Right", player, world, "Start of the basic game") Locmoveright_name = ["Movement Pack", "Animation Pack", "Audio Pack", "Pause Menu Pack"] Regmoveright.exits = [Entrance(player, "Moving", Regmoveright)] Regmoveright.locations += [DLCQuestLocation(player, loc_name, location_table[loc_name], Regmoveright) for loc_name in Locmoveright_name] add_coin_dlcquest(Regmoveright, 4, player) if World_Options[Options.CoinSanity] == Options.CoinSanity.option_coin: coin_bundle_needed = math.floor(825 / World_Options[Options.CoinSanityRange]) for i in range(coin_bundle_needed): item_coin = f"DLC Quest: {World_Options[Options.CoinSanityRange] * (i + 1)} Coin" Regmoveright.locations += [ DLCQuestLocation(player, item_coin, location_table[item_coin], Regmoveright)] if 825 % World_Options[Options.CoinSanityRange] != 0: Regmoveright.locations += [ DLCQuestLocation(player, "DLC Quest: 825 Coin", location_table["DLC Quest: 825 Coin"], Regmoveright)] world.regions.append(Regmoveright) Regmovpack = Region("Movement Pack", player, world) Locmovpack_name = ["Time is Money Pack", "Psychological Warfare Pack", "Armor for your Horse Pack", "Shepherd Sheep"] if World_Options[Options.ItemShuffle] == Options.ItemShuffle.option_shuffled: Locmovpack_name += ["Sword"] Regmovpack.exits = [Entrance(player, "Tree", Regmovpack), Entrance(player, "Cloud", Regmovpack)] Regmovpack.locations += [DLCQuestLocation(player, loc_name, location_table[loc_name], Regmovpack) for loc_name in Locmovpack_name] add_coin_dlcquest(Regmovpack, 46, player) world.regions.append(Regmovpack) Regbtree = Region("Behind Tree", player, world) Locbtree_name = ["Double Jump Pack", "Map Pack", "Between Trees Sheep", "Hole in the Wall Sheep"] if World_Options[Options.ItemShuffle] == Options.ItemShuffle.option_shuffled: Locbtree_name += ["Gun"] Regbtree.exits = [Entrance(player, "Behind Tree Double Jump", Regbtree), Entrance(player, "Forest Entrance", Regbtree)] Regbtree.locations += [DLCQuestLocation(player, loc_name, location_table[loc_name], Regbtree) for loc_name in Locbtree_name] add_coin_dlcquest(Regbtree, 60, player) world.regions.append(Regbtree) Regpsywarfare = Region("Psychological Warfare", player, world) Locpsywarfare_name = ["West Cave Sheep"] Regpsywarfare.exits = [Entrance(player, "Cloud Double Jump", Regpsywarfare)] Regpsywarfare.locations += [DLCQuestLocation(player, loc_name, location_table[loc_name], Regpsywarfare) for loc_name in Locpsywarfare_name] add_coin_dlcquest(Regpsywarfare, 100, player) world.regions.append(Regpsywarfare) Regdoubleleft = Region("Double Jump Total Left", player, world) Locdoubleleft_name = ["Pet Pack", "Top Hat Pack", "North West Alcove Sheep"] Regdoubleleft.locations += [DLCQuestLocation(player, loc_name, location_table[loc_name], Regdoubleleft) for loc_name in Locdoubleleft_name] Regdoubleleft.exits = [Entrance(player, "Cave Tree", Regdoubleleft), Entrance(player, "Cave Roof", Regdoubleleft)] add_coin_dlcquest(Regdoubleleft, 50, player) world.regions.append(Regdoubleleft) Regdoubleleftcave = Region("Double Jump Total Left Cave", player, world) Locdoubleleftcave_name = ["Top Hat Sheep"] Regdoubleleftcave.locations += [DLCQuestLocation(player, loc_name, location_table[loc_name], Regdoubleleftcave) for loc_name in Locdoubleleftcave_name] add_coin_dlcquest(Regdoubleleftcave, 9, player) world.regions.append(Regdoubleleftcave) Regdoubleleftroof = Region("Double Jump Total Left Roof", player, world) Locdoubleleftroof_name = ["North West Ceiling Sheep"] Regdoubleleftroof.locations += [DLCQuestLocation(player, loc_name, location_table[loc_name], Regdoubleleftroof) for loc_name in Locdoubleleftroof_name] add_coin_dlcquest(Regdoubleleftroof, 10, player) world.regions.append(Regdoubleleftroof) Regdoubletree = Region("Double Jump Behind Tree", player, world) Locdoubletree_name = ["Sexy Outfits Pack", "Double Jump Alcove Sheep", "Sexy Outfits Sheep"] Regdoubletree.locations += [DLCQuestLocation(player, loc_name, location_table[loc_name], Regdoubletree) for loc_name in Locdoubletree_name] Regdoubletree.exits = [Entrance(player, "True Double Jump", Regdoubletree)] add_coin_dlcquest(Regdoubletree, 89, player) world.regions.append(Regdoubletree) Regtruedoublejump = Region("True Double Jump Behind Tree", player, world) Loctruedoublejump_name = ["Double Jump Floating Sheep", "Cutscene Sheep"] Regtruedoublejump.locations += [DLCQuestLocation(player, loc_name, location_table[loc_name], Regtruedoublejump) for loc_name in Loctruedoublejump_name] add_coin_dlcquest(Regtruedoublejump, 7, player) world.regions.append(Regtruedoublejump) Regforest = Region("The Forest", player, world) Locforest_name = ["Gun Pack", "Night Map Pack"] Regforest.exits = [Entrance(player, "Behind Ogre", Regforest), Entrance(player, "Forest Double Jump", Regforest)] Regforest.locations += [DLCQuestLocation(player, loc_name, location_table[loc_name], Regforest) for loc_name in Locforest_name] add_coin_dlcquest(Regforest, 171, player) world.regions.append(Regforest) Regforestdoublejump = Region("The Forest whit double Jump", player, world) Locforestdoublejump_name = ["The Zombie Pack", "Forest Low Sheep"] Regforestdoublejump.exits = [Entrance(player, "Forest True Double Jump", Regforestdoublejump)] Regforestdoublejump.locations += [ DLCQuestLocation(player, loc_name, location_table[loc_name], Regforestdoublejump) for loc_name in Locforestdoublejump_name] add_coin_dlcquest(Regforestdoublejump, 76, player) world.regions.append(Regforestdoublejump) Regforesttruedoublejump = Region("The Forest whit double Jump Part 2", player, world) Locforesttruedoublejump_name = ["Forest High Sheep"] Regforesttruedoublejump.locations += [ DLCQuestLocation(player, loc_name, location_table[loc_name], Regforesttruedoublejump) for loc_name in Locforesttruedoublejump_name] add_coin_dlcquest(Regforesttruedoublejump, 203, player) world.regions.append(Regforesttruedoublejump) Regfinalroom = Region("The Final Boss Room", player, world) Locfinalroom_name = ["Finish the Fight Pack"] Regfinalroom.locations += [DLCQuestLocation(player, loc_name, location_table[loc_name], Regfinalroom) for loc_name in Locfinalroom_name] world.regions.append(Regfinalroom) loc_win = DLCQuestLocation(player, "Winning Basic", None, world.get_region("The Final Boss Room", player)) world.get_region("The Final Boss Room", player).locations.append(loc_win) loc_win.place_locked_item(create_event(player, "Victory Basic")) world.get_entrance("DLC Quest Basic", player).connect(world.get_region("Move Right", player)) world.get_entrance("Moving", player).connect(world.get_region("Movement Pack", player)) world.get_entrance("Tree", player).connect(world.get_region("Behind Tree", player)) world.get_entrance("Cloud", player).connect(world.get_region("Psychological Warfare", player)) world.get_entrance("Cloud Double Jump", player).connect(world.get_region("Double Jump Total Left", player)) world.get_entrance("Cave Tree", player).connect(world.get_region("Double Jump Total Left Cave", player)) world.get_entrance("Cave Roof", player).connect(world.get_region("Double Jump Total Left Roof", player)) world.get_entrance("Forest Entrance", player).connect(world.get_region("The Forest", player)) world.get_entrance("Behind Tree Double Jump", player).connect( world.get_region("Double Jump Behind Tree", player)) world.get_entrance("Behind Ogre", player).connect(world.get_region("The Final Boss Room", player)) world.get_entrance("Forest Double Jump", player).connect( world.get_region("The Forest whit double Jump", player)) world.get_entrance("Forest True Double Jump", player).connect( world.get_region("The Forest whit double Jump Part 2", player)) world.get_entrance("True Double Jump", player).connect(world.get_region("True Double Jump Behind Tree", player)) if World_Options[Options.Campaign] == Options.Campaign.option_live_freemium_or_die or World_Options[ Options.Campaign] == Options.Campaign.option_both: Regfreemiumstart = Region("Freemium Start", player, world) Locfreemiumstart_name = ["Particles Pack", "Day One Patch Pack", "Checkpoint Pack", "Incredibly Important Pack", "Nice Try", "Story is Important", "I Get That Reference!"] if World_Options[Options.ItemShuffle] == Options.ItemShuffle.option_shuffled: Locfreemiumstart_name += ["Wooden Sword"] Regfreemiumstart.exits = [Entrance(player, "Vines", Regfreemiumstart)] Regfreemiumstart.locations += [DLCQuestLocation(player, loc_name, location_table[loc_name], Regfreemiumstart) for loc_name in Locfreemiumstart_name] add_coin_freemium(Regfreemiumstart, 50, player) if World_Options[Options.CoinSanity] == Options.CoinSanity.option_coin: coin_bundle_needed = math.floor(889 / World_Options[Options.CoinSanityRange]) for i in range(coin_bundle_needed): item_coin_freemium = f"Live Freemium or Die: {World_Options[Options.CoinSanityRange] * (i + 1)} Coin" Regfreemiumstart.locations += [ DLCQuestLocation(player, item_coin_freemium, location_table[item_coin_freemium], Regfreemiumstart)] if 889 % World_Options[Options.CoinSanityRange] != 0: Regfreemiumstart.locations += [ DLCQuestLocation(player, "Live Freemium or Die: 889 Coin", location_table["Live Freemium or Die: 889 Coin"], Regfreemiumstart)] world.regions.append(Regfreemiumstart) Regbehindvine = Region("Behind the Vines", player, world) Locbehindvine_name = ["Wall Jump Pack", "Health Bar Pack", "Parallax Pack"] if World_Options[Options.ItemShuffle] == Options.ItemShuffle.option_shuffled: Locbehindvine_name += ["Pickaxe"] Regbehindvine.exits = [Entrance(player, "Wall Jump Entrance", Regbehindvine)] Regbehindvine.locations += [DLCQuestLocation(player, loc_name, location_table[loc_name], Regbehindvine) for loc_name in Locbehindvine_name] add_coin_freemium(Regbehindvine, 95, player) world.regions.append(Regbehindvine) Regwalljump = Region("Wall Jump", player, world) Locwalljump_name = ["Harmless Plants Pack", "Death of Comedy Pack", "Canadian Dialog Pack", "DLC NPC Pack"] Regwalljump.exits = [Entrance(player, "Harmless Plants", Regwalljump), Entrance(player, "Pickaxe Hard Cave", Regwalljump)] Regwalljump.locations += [DLCQuestLocation(player, loc_name, location_table[loc_name], Regwalljump) for loc_name in Locwalljump_name] add_coin_freemium(Regwalljump, 150, player) world.regions.append(Regwalljump) Regfakeending = Region("Fake Ending", player, world) Locfakeending_name = ["Cut Content Pack", "Name Change Pack"] Regfakeending.exits = [Entrance(player, "Name Change Entrance", Regfakeending), Entrance(player, "Cut Content Entrance", Regfakeending)] Regfakeending.locations += [DLCQuestLocation(player, loc_name, location_table[loc_name], Regfakeending) for loc_name in Locfakeending_name] world.regions.append(Regfakeending) Reghardcave = Region("Hard Cave", player, world) add_coin_freemium(Reghardcave, 20, player) Reghardcave.exits = [Entrance(player, "Hard Cave Wall Jump", Reghardcave)] world.regions.append(Reghardcave) Reghardcavewalljump = Region("Hard Cave Wall Jump", player, world) Lochardcavewalljump_name = ["Increased HP Pack"] Reghardcavewalljump.locations += [ DLCQuestLocation(player, loc_name, location_table[loc_name], Reghardcavewalljump) for loc_name in Lochardcavewalljump_name] add_coin_freemium(Reghardcavewalljump, 130, player) world.regions.append(Reghardcavewalljump) Regcutcontent = Region("Cut Content", player, world) Loccutcontent_name = [] if World_Options[Options.ItemShuffle] == Options.ItemShuffle.option_shuffled: Loccutcontent_name += ["Humble Indie Bindle"] Regcutcontent.locations += [DLCQuestLocation(player, loc_name, location_table[loc_name], Regcutcontent) for loc_name in Loccutcontent_name] add_coin_freemium(Regcutcontent, 200, player) world.regions.append(Regcutcontent) Regnamechange = Region("Name Change", player, world) Locnamechange_name = [] if World_Options[Options.ItemShuffle] == Options.ItemShuffle.option_shuffled: Locnamechange_name += ["Box of Various Supplies"] Regnamechange.exits = [Entrance(player, "Behind Rocks", Regnamechange)] Regnamechange.locations += [DLCQuestLocation(player, loc_name, location_table[loc_name], Regnamechange) for loc_name in Locnamechange_name] world.regions.append(Regnamechange) Regtopright = Region("Top Right", player, world) Loctopright_name = ["Season Pass", "High Definition Next Gen Pack"] Regtopright.exits = [Entrance(player, "Blizzard", Regtopright)] Regtopright.locations += [DLCQuestLocation(player, loc_name, location_table[loc_name], Regtopright) for loc_name in Loctopright_name] add_coin_freemium(Regtopright, 90, player) world.regions.append(Regtopright) Regseason = Region("Season", player, world) Locseason_name = ["Remove Ads Pack", "Not Exactly Noble"] Regseason.exits = [Entrance(player, "Boss Door", Regseason)] Regseason.locations += [DLCQuestLocation(player, loc_name, location_table[loc_name], Regseason) for loc_name in Locseason_name] add_coin_freemium(Regseason, 154, player) world.regions.append(Regseason) Regfinalboss = Region("Final Boss", player, world) Locfinalboss_name = ["Big Sword Pack", "Really Big Sword Pack", "Unfathomable Sword Pack"] Regfinalboss.locations += [DLCQuestLocation(player, loc_name, location_table[loc_name], Regfinalboss) for loc_name in Locfinalboss_name] world.regions.append(Regfinalboss) loc_wining = DLCQuestLocation(player, "Winning Freemium", None, world.get_region("Final Boss", player)) world.get_region("Final Boss", player).locations.append(loc_wining) loc_wining.place_locked_item(create_event(player, "Victory Freemium")) world.get_entrance("Live Freemium or Die", player).connect(world.get_region("Freemium Start", player)) world.get_entrance("Vines", player).connect(world.get_region("Behind the Vines", player)) world.get_entrance("Wall Jump Entrance", player).connect(world.get_region("Wall Jump", player)) world.get_entrance("Harmless Plants", player).connect(world.get_region("Fake Ending", player)) world.get_entrance("Pickaxe Hard Cave", player).connect(world.get_region("Hard Cave", player)) world.get_entrance("Hard Cave Wall Jump", player).connect(world.get_region("Hard Cave Wall Jump", player)) world.get_entrance("Name Change Entrance", player).connect(world.get_region("Name Change", player)) world.get_entrance("Cut Content Entrance", player).connect(world.get_region("Cut Content", player)) world.get_entrance("Behind Rocks", player).connect(world.get_region("Top Right", player)) world.get_entrance("Blizzard", player).connect(world.get_region("Season", player)) world.get_entrance("Boss Door", player).connect(world.get_region("Final Boss", player))