allow remote_items to be set via AutoWorld
This commit is contained in:
parent
bc83dfa9e2
commit
62a6cdc9f7
|
@ -68,7 +68,6 @@ class MultiWorld():
|
|||
self.fix_palaceofdarkness_exit = self.AttributeProxy(lambda player: self.shuffle[player] not in ['vanilla', 'simple', 'restricted', 'dungeonssimple'])
|
||||
self.fix_trock_exit = self.AttributeProxy(lambda player: self.shuffle[player] not in ['vanilla', 'simple', 'restricted', 'dungeonssimple'])
|
||||
self.NOTCURSED = self.AttributeProxy(lambda player: not self.CURSED[player])
|
||||
self.remote_items = self.AttributeProxy(lambda player: self.game[player] != "A Link to the Past")
|
||||
|
||||
for player in range(1, players + 1):
|
||||
def set_player_attr(attr, val):
|
||||
|
|
4
Main.py
4
Main.py
|
@ -525,8 +525,8 @@ def main(args, seed=None):
|
|||
"games": games,
|
||||
"names": parsed_names,
|
||||
"connect_names": connect_names,
|
||||
"remote_items": {player for player in range(1, world.players + 1) if
|
||||
world.remote_items[player]},
|
||||
"remote_items": {player for player in world.player_ids if
|
||||
world.worlds[player].remote_items},
|
||||
"locations": locations_data,
|
||||
"checks_in_area": checks_in_area,
|
||||
"server_options": get_options()["server_options"],
|
||||
|
|
|
@ -58,6 +58,12 @@ class World(metaclass=AutoWorldRegister):
|
|||
|
||||
hint_blacklist: Set[str] = frozenset() # any names that should not be hintable
|
||||
|
||||
# if a world is set to remote_items, then it just needs to send location checks to the server and the server
|
||||
# sends back the items
|
||||
# if a world is set to remote_items = False, then the server never sends an item where receiver == finder,
|
||||
# the client finds its own items in its own world.
|
||||
remote_items: bool = True
|
||||
|
||||
def __init__(self, world: MultiWorld, player: int):
|
||||
self.world = world
|
||||
self.player = player
|
||||
|
|
|
@ -790,7 +790,7 @@ def patch_rom(world, rom, player, team, enemized):
|
|||
itemid = 0x33
|
||||
elif location.item.compass:
|
||||
itemid = 0x25
|
||||
if world.remote_items[player]:
|
||||
if world.worlds[player].remote_items: # remote items does not currently work
|
||||
itemid = list(location_table.keys()).index(location.name) + 1
|
||||
assert itemid < 0x100
|
||||
rom.write_byte(location.player_address, 0xFF)
|
||||
|
@ -1647,7 +1647,8 @@ def patch_rom(world, rom, player, team, enemized):
|
|||
|
||||
write_strings(rom, world, player, team)
|
||||
|
||||
rom.write_byte(0x18637C, 1 if world.remote_items[player] else 0)
|
||||
# remote items flag, does not currently work
|
||||
rom.write_byte(0x18637C, int(world.worlds[player].remote_items))
|
||||
|
||||
# set rom name
|
||||
# 21 bytes
|
||||
|
|
|
@ -18,6 +18,8 @@ class ALTTPWorld(World):
|
|||
item_name_to_id = {name: data.item_code for name, data in item_table.items() if type(data.item_code) == int}
|
||||
location_name_to_id = lookup_name_to_id
|
||||
|
||||
remote_items: bool = False
|
||||
|
||||
def collect(self, state: CollectionState, item: Item) -> bool:
|
||||
if item.name.startswith('Progressive '):
|
||||
if 'Sword' in item.name:
|
||||
|
|
Loading…
Reference in New Issue