Add shop door ids to tables (used when shop locations are vanilla)
Do not replace Upgrade Fairy with retro shop
This commit is contained in:
parent
6b97cebec5
commit
0eed4bb527
|
@ -871,9 +871,10 @@ class ShopType(Enum):
|
|||
UpgradeShop = 2
|
||||
|
||||
class Shop(object):
|
||||
def __init__(self, region, room_id, type, shopkeeper_config, replaceable):
|
||||
def __init__(self, region, room_id, default_door_id, type, shopkeeper_config, replaceable):
|
||||
self.region = region
|
||||
self.room_id = room_id
|
||||
self.default_door_id = default_door_id
|
||||
self.type = type
|
||||
self.inventory = [None, None, None]
|
||||
self.shopkeeper_config = shopkeeper_config
|
||||
|
@ -893,6 +894,8 @@ class Shop(object):
|
|||
config = self.item_count
|
||||
if len(entrances) == 1 and entrances[0].addresses:
|
||||
door_id = entrances[0].addresses+1
|
||||
elif self.default_door_id is not None:
|
||||
door_id = self.default_door_id
|
||||
else:
|
||||
door_id = 0
|
||||
config |= 0x40 # ignore door id
|
||||
|
|
|
@ -302,16 +302,16 @@ def create_inverted_regions(world, player):
|
|||
create_cave_region(player, 'The Sky', 'A Dark Sky', None, ['DDM Landing','NEDW Landing', 'WDW Landing', 'SDW Landing', 'EDW Landing', 'DD Landing', 'DLHL Landing'])
|
||||
]
|
||||
|
||||
for region_name, (room_id, shopkeeper, replaceable) in shop_table.items():
|
||||
for region_name, (room_id, default_door_id, shopkeeper, replaceable) in shop_table.items():
|
||||
region = world.get_region(region_name, player)
|
||||
shop = Shop(region, room_id, ShopType.Shop, shopkeeper, replaceable)
|
||||
shop = Shop(region, room_id, default_door_id, ShopType.Shop, shopkeeper, replaceable)
|
||||
region.shop = shop
|
||||
world.shops.append(shop)
|
||||
for index, (item, price) in enumerate(default_shop_contents[region_name]):
|
||||
shop.add_inventory(index, item, price)
|
||||
|
||||
region = world.get_region('Capacity Upgrade', player)
|
||||
shop = Shop(region, 0x0115, ShopType.UpgradeShop, 0x04, True)
|
||||
shop = Shop(region, 0x0115, 0x5D, ShopType.UpgradeShop, 0x04, True)
|
||||
region.shop = shop
|
||||
world.shops.append(shop)
|
||||
shop.add_inventory(0, 'Bomb Upgrade (+5)', 100, 7)
|
||||
|
@ -373,18 +373,18 @@ def mark_dark_world_regions(world):
|
|||
seen.add(exit.connected_region)
|
||||
queue.append(exit.connected_region)
|
||||
|
||||
# (room_id, shopkeeper, replaceable)
|
||||
# (room_id, default_door_id, shopkeeper, replaceable)
|
||||
shop_table = {
|
||||
'Cave Shop (Dark Death Mountain)': (0x0112, 0xC1, True),
|
||||
'Red Shield Shop': (0x0110, 0xC1, True),
|
||||
'Dark Lake Hylia Shop': (0x010F, 0xC1, True),
|
||||
'Dark World Lumberjack Shop': (0x010F, 0xC1, True),
|
||||
'Village of Outcasts Shop': (0x010F, 0xC1, True),
|
||||
'Dark World Potion Shop': (0x010F, 0xC1, True),
|
||||
'Light World Death Mountain Shop': (0x00FF, 0xA0, True),
|
||||
'Kakariko Shop': (0x011F, 0xA0, True),
|
||||
'Cave Shop (Lake Hylia)': (0x0112, 0xA0, True),
|
||||
'Potion Shop': (0x0109, 0xFF, False),
|
||||
'Cave Shop (Dark Death Mountain)': (0x0112, 0x6E, 0xC1, True),
|
||||
'Red Shield Shop': (0x0110, 0x75, 0xC1, True),
|
||||
'Dark Lake Hylia Shop': (0x010F, 0x74, 0xC1, True),
|
||||
'Dark World Lumberjack Shop': (0x010F, 0x57, 0xC1, True),
|
||||
'Village of Outcasts Shop': (0x010F, 0x60, 0xC1, True),
|
||||
'Dark World Potion Shop': (0x010F, 0x6F, 0xC1, True),
|
||||
'Light World Death Mountain Shop': (0x00FF, None, 0xA0, True),
|
||||
'Kakariko Shop': (0x011F, 0x46, 0xA0, True),
|
||||
'Cave Shop (Lake Hylia)': (0x0112, 0x58, 0xA0, True),
|
||||
'Potion Shop': (0x0109, 0x4C, 0xFF, False),
|
||||
# Bomb Shop not currently modeled as a shop, due to special nature of items
|
||||
}
|
||||
# region, [item]
|
||||
|
|
|
@ -246,7 +246,7 @@ def set_up_take_anys(world, player):
|
|||
entrance = world.get_region(reg, player).entrances[0]
|
||||
connect_entrance(world, entrance, old_man_take_any, player)
|
||||
entrance.target = 0x58
|
||||
old_man_take_any.shop = Shop(old_man_take_any, 0x0112, ShopType.TakeAny, 0xE2, True)
|
||||
old_man_take_any.shop = Shop(old_man_take_any, 0x0112, None, ShopType.TakeAny, 0xE2, True)
|
||||
world.shops.append(old_man_take_any.shop)
|
||||
old_man_take_any.shop.active = True
|
||||
|
||||
|
@ -269,7 +269,7 @@ def set_up_take_anys(world, player):
|
|||
entrance = world.get_region(reg, player).entrances[0]
|
||||
connect_entrance(world, entrance, take_any, player)
|
||||
entrance.target = target
|
||||
take_any.shop = Shop(take_any, room_id, ShopType.TakeAny, 0xE3, True)
|
||||
take_any.shop = Shop(take_any, room_id, None, ShopType.TakeAny, 0xE3, True)
|
||||
world.shops.append(take_any.shop)
|
||||
take_any.shop.active = True
|
||||
take_any.shop.add_inventory(0, 'Blue Potion', 0, 0)
|
||||
|
@ -337,7 +337,7 @@ def set_up_shops(world, player):
|
|||
|
||||
# Randomized changes to Shops
|
||||
if world.retro:
|
||||
for shop in random.sample([s for s in world.shops if s.replaceable and s.region.player == player], 5):
|
||||
for shop in random.sample([s for s in world.shops if s.replaceable and s.type == ShopType.Shop and s.region.player == player], 5):
|
||||
shop.active = True
|
||||
shop.add_inventory(0, 'Single Arrow', 80)
|
||||
shop.add_inventory(1, 'Small Key (Universal)', 100)
|
||||
|
|
2
Main.py
2
Main.py
|
@ -270,7 +270,7 @@ def copy_dynamic_regions_and_locations(world, ret):
|
|||
# Note: ideally exits should be copied here, but the current use case (Take anys) do not require this
|
||||
|
||||
if region.shop:
|
||||
new_reg.shop = Shop(new_reg, region.shop.room_id, region.shop.type, region.shop.shopkeeper_config, region.shop.replaceable)
|
||||
new_reg.shop = Shop(new_reg, region.shop.room_id, region.shop.default_door_id, region.shop.type, region.shop.shopkeeper_config, region.shop.replaceable)
|
||||
ret.shops.append(new_reg.shop)
|
||||
|
||||
for location in world.dynamic_locations:
|
||||
|
|
28
Regions.py
28
Regions.py
|
@ -293,16 +293,16 @@ def create_regions(world, player):
|
|||
create_dw_region(player, 'Pyramid Ledge', None, ['Pyramid Entrance', 'Pyramid Drop'])
|
||||
]
|
||||
|
||||
for region_name, (room_id, shopkeeper, replaceable) in shop_table.items():
|
||||
for region_name, (room_id, default_door_id, shopkeeper, replaceable) in shop_table.items():
|
||||
region = world.get_region(region_name, player)
|
||||
shop = Shop(region, room_id, ShopType.Shop, shopkeeper, replaceable)
|
||||
shop = Shop(region, room_id, default_door_id, ShopType.Shop, shopkeeper, replaceable)
|
||||
region.shop = shop
|
||||
world.shops.append(shop)
|
||||
for index, (item, price) in enumerate(default_shop_contents[region_name]):
|
||||
shop.add_inventory(index, item, price)
|
||||
|
||||
region = world.get_region('Capacity Upgrade', player)
|
||||
shop = Shop(region, 0x0115, ShopType.UpgradeShop, 0x04, True)
|
||||
shop = Shop(region, 0x0115, 0x5D, ShopType.UpgradeShop, 0x04, True)
|
||||
region.shop = shop
|
||||
world.shops.append(shop)
|
||||
shop.add_inventory(0, 'Bomb Upgrade (+5)', 100, 7)
|
||||
|
@ -364,18 +364,18 @@ def mark_light_world_regions(world):
|
|||
seen.add(exit.connected_region)
|
||||
queue.append(exit.connected_region)
|
||||
|
||||
# (room_id, shopkeeper, replaceable)
|
||||
# (room_id, default_door_id, shopkeeper, replaceable)
|
||||
shop_table = {
|
||||
'Cave Shop (Dark Death Mountain)': (0x0112, 0xC1, True),
|
||||
'Red Shield Shop': (0x0110, 0xC1, True),
|
||||
'Dark Lake Hylia Shop': (0x010F, 0xC1, True),
|
||||
'Dark World Lumberjack Shop': (0x010F, 0xC1, True),
|
||||
'Village of Outcasts Shop': (0x010F, 0xC1, True),
|
||||
'Dark World Potion Shop': (0x010F, 0xC1, True),
|
||||
'Light World Death Mountain Shop': (0x00FF, 0xA0, True),
|
||||
'Kakariko Shop': (0x011F, 0xA0, True),
|
||||
'Cave Shop (Lake Hylia)': (0x0112, 0xA0, True),
|
||||
'Potion Shop': (0x0109, 0xFF, False),
|
||||
'Cave Shop (Dark Death Mountain)': (0x0112, 0x6E, 0xC1, True),
|
||||
'Red Shield Shop': (0x0110, 0x75, 0xC1, True),
|
||||
'Dark Lake Hylia Shop': (0x010F, 0x74, 0xC1, True),
|
||||
'Dark World Lumberjack Shop': (0x010F, 0x57, 0xC1, True),
|
||||
'Village of Outcasts Shop': (0x010F, 0x60, 0xC1, True),
|
||||
'Dark World Potion Shop': (0x010F, 0x6F, 0xC1, True),
|
||||
'Light World Death Mountain Shop': (0x00FF, None, 0xA0, True),
|
||||
'Kakariko Shop': (0x011F, 0x46, 0xA0, True),
|
||||
'Cave Shop (Lake Hylia)': (0x0112, 0x58, 0xA0, True),
|
||||
'Potion Shop': (0x0109, 0x4C, 0xFF, False),
|
||||
# Bomb Shop not currently modeled as a shop, due to special nature of items
|
||||
}
|
||||
# region, [item]
|
||||
|
|
Loading…
Reference in New Issue