mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00
NL now uses the glitchless world graph, which enables entrance randomizer NL forces all logic tricks on, progression balancing off, minimal accessibility
151 lines
4.4 KiB
Python
151 lines
4.4 KiB
Python
import os
|
|
|
|
from .Dungeon import Dungeon
|
|
from .Utils import data_path
|
|
|
|
|
|
dungeon_table = [
|
|
{
|
|
'name': 'Deku Tree',
|
|
'hint': 'the Deku Tree',
|
|
'font_color': 'Green',
|
|
'boss_key': 0,
|
|
'small_key': 0,
|
|
'small_key_mq': 0,
|
|
'dungeon_item': 1,
|
|
},
|
|
{
|
|
'name': 'Dodongos Cavern',
|
|
'hint': 'Dodongo\'s Cavern',
|
|
'font_color': 'Red',
|
|
'boss_key': 0,
|
|
'small_key': 0,
|
|
'small_key_mq': 0,
|
|
'dungeon_item': 1,
|
|
},
|
|
{
|
|
'name': 'Jabu Jabus Belly',
|
|
'hint': 'Jabu Jabu\'s Belly',
|
|
'font_color': 'Blue',
|
|
'boss_key': 0,
|
|
'small_key': 0,
|
|
'small_key_mq': 0,
|
|
'dungeon_item': 1,
|
|
},
|
|
{
|
|
'name': 'Forest Temple',
|
|
'hint': 'the Forest Temple',
|
|
'font_color': 'Green',
|
|
'boss_key': 1,
|
|
'small_key': 5,
|
|
'small_key_mq': 6,
|
|
'dungeon_item': 1,
|
|
},
|
|
{
|
|
'name': 'Bottom of the Well',
|
|
'hint': 'the Bottom of the Well',
|
|
'font_color': 'Pink',
|
|
'boss_key': 0,
|
|
'small_key': 3,
|
|
'small_key_mq': 2,
|
|
'dungeon_item': 1,
|
|
},
|
|
{
|
|
'name': 'Fire Temple',
|
|
'hint': 'the Fire Temple',
|
|
'font_color': 'Red',
|
|
'boss_key': 1,
|
|
'small_key': 8,
|
|
'small_key_mq': 5,
|
|
'dungeon_item': 1,
|
|
},
|
|
{
|
|
'name': 'Ice Cavern',
|
|
'hint': 'the Ice Cavern',
|
|
'font_color': 'Blue',
|
|
'boss_key': 0,
|
|
'small_key': 0,
|
|
'small_key_mq': 0,
|
|
'dungeon_item': 1,
|
|
},
|
|
{
|
|
'name': 'Water Temple',
|
|
'hint': 'the Water Temple',
|
|
'font_color': 'Blue',
|
|
'boss_key': 1,
|
|
'small_key': 6,
|
|
'small_key_mq': 2,
|
|
'dungeon_item': 1,
|
|
},
|
|
{
|
|
'name': 'Shadow Temple',
|
|
'hint': 'the Shadow Temple',
|
|
'font_color': 'Pink',
|
|
'boss_key': 1,
|
|
'small_key': 5,
|
|
'small_key_mq': 6,
|
|
'dungeon_item': 1,
|
|
},
|
|
{
|
|
'name': 'Gerudo Training Grounds',
|
|
'hint': 'the Gerudo Training Grounds',
|
|
'font_color': 'Yellow',
|
|
'boss_key': 0,
|
|
'small_key': 9,
|
|
'small_key_mq': 3,
|
|
'dungeon_item': 0,
|
|
},
|
|
{
|
|
'name': 'Spirit Temple',
|
|
'hint': 'the Spirit Temple',
|
|
'font_color': 'Yellow',
|
|
'boss_key': 1,
|
|
'small_key': 5,
|
|
'small_key_mq': 7,
|
|
'dungeon_item': 1,
|
|
},
|
|
{
|
|
'name': 'Ganons Castle',
|
|
'hint': 'Ganon\'s Castle',
|
|
'boss_key': 1,
|
|
'small_key': 2,
|
|
'small_key_mq': 3,
|
|
'dungeon_item': 0,
|
|
},
|
|
]
|
|
|
|
|
|
def create_dungeons(ootworld):
|
|
ootworld.dungeons = []
|
|
for dungeon_info in dungeon_table:
|
|
name = dungeon_info['name']
|
|
hint = dungeon_info['hint'] if 'hint' in dungeon_info else name
|
|
font_color = dungeon_info['font_color'] if 'font_color' in dungeon_info else 'White'
|
|
|
|
if ootworld.logic_rules == 'glitchless' or ootworld.logic_rules == 'no_logic': # ER + NL
|
|
if not ootworld.dungeon_mq[name]:
|
|
dungeon_json = os.path.join(data_path('World'), name + '.json')
|
|
else:
|
|
dungeon_json = os.path.join(data_path('World'), name + ' MQ.json')
|
|
else:
|
|
if not ootworld.dungeon_mq[name]:
|
|
dungeon_json = os.path.join(data_path('Glitched World'), name + '.json')
|
|
else:
|
|
dungeon_json = os.path.join(data_path('Glitched World'), name + ' MQ.json')
|
|
|
|
|
|
ootworld.load_regions_from_json(dungeon_json)
|
|
|
|
boss_keys = [ootworld.create_item(f'Boss Key ({name})') for i in range(dungeon_info['boss_key'])]
|
|
if not ootworld.dungeon_mq[dungeon_info['name']]:
|
|
small_keys = [ootworld.create_item(f'Small Key ({name})') for i in range(dungeon_info['small_key'])]
|
|
else:
|
|
small_keys = [ootworld.create_item(f'Small Key ({name})') for i in range(dungeon_info['small_key_mq'])]
|
|
dungeon_items = [ootworld.create_item(f'Map ({name})'), ootworld.create_item(f'Compass ({name})')] * dungeon_info['dungeon_item']
|
|
if ootworld.shuffle_mapcompass in ['any_dungeon', 'overworld']:
|
|
for item in dungeon_items:
|
|
item.priority = True
|
|
|
|
ootworld.dungeons.append(Dungeon(ootworld, name, hint, font_color, boss_keys, small_keys, dungeon_items))
|
|
|