-
Notifications
You must be signed in to change notification settings - Fork 711
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Spelunker: Implement New Game #3282
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a few quick client improvements while I've got a few minutes. Didn't test any of the suggested changes.
return | ||
if "tags" not in args: | ||
return | ||
if "DeathLink" in args["tags"] and args["data"]["source"] != ctx.slot_info[ctx.slot].name: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This means that two players playing on the same slot won't send deathlinks to each other. If you don't care about supporting that, don't worry about it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll have to think on this one.
Co-authored-by: Bryce Wilson <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It looks like you've learned a lot from the Yoshi's Island one, every comment here is fairly minor.
option_cave_3 = 2 | ||
option_cave_4 = 3 | ||
default = 0 | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would recommend adding StartInventoryPool here too.
Add StartInventoryPool to your imports from Options, then put start_inventory_from_pool: StartInventoryPool
in your options dataclass.
Oh yeah, also update CODEOWNERS and the AP README |
I’ll address all these tonight! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a couple more things
edit: these couple more things were just resolved without comments or changes to the code
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Various suggestions, mostly small though __init__.py
has quite a few unneeded functions that could be cleaned up or commented out
def get_excluded_items(self) -> Set[str]: | ||
excluded_items: Set[str] = set() | ||
return excluded_items |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So this just always returns an empty set, so it can likely be removed or just commented out
def get_item_pool(self, excluded_items: Set[str]) -> List[Item]: | ||
pool: List[Item] = [] | ||
|
||
for name, data in item_table.items(): | ||
if name not in excluded_items: | ||
for _ in range(data.amount): | ||
item = self.create_item_with_correct_settings(name) | ||
pool.append(item) | ||
|
||
return pool |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could use a comprehension and just do this:
def get_item_pool(self, excluded_items: Set[str]) -> List[Item]: | |
pool: List[Item] = [] | |
for name, data in item_table.items(): | |
if name not in excluded_items: | |
for _ in range(data.amount): | |
item = self.create_item_with_correct_settings(name) | |
pool.append(item) | |
return pool | |
def get_item_pool(self) -> List[Item]: | |
return [self.create_item(name) for name, data in item_table.items() for _ in range(data.amount)] |
|
||
def generate_filler(self, pool: List[Item]) -> None: | ||
for _ in range(len(self.multiworld.get_unfilled_locations(self.player)) - len(pool) - 1): | ||
item = self.create_item_with_correct_settings(self.get_filler_item_name()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can do this instead:
item = self.create_item_with_correct_settings(self.get_filler_item_name()) | |
item = self.create_filler() |
world = self.multiworld | ||
player = self.player |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These are unused
world = self.multiworld | |
player = self.player |
rom_name = getattr(self, "rom_name", None) | ||
if rom_name: | ||
new_name = base64.b64encode(bytes(self.rom_name)).decode() | ||
multidata["connect_names"][new_name] = multidata["connect_names"][self.multiworld.player_name[self.player]] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can use the new helper function
multidata["connect_names"][new_name] = multidata["connect_names"][self.multiworld.player_name[self.player]] | |
multidata["connect_names"][new_name] = multidata["connect_names"][self.player_name] | |
Of course I immediately noticed something else... In |
Comments were addressed in some other branch or something, updates are waiting on PinkSwitch figuring out some conflicts and update stuff |
Shelving this for now, need to fix codeowner conflicts, fix some bugs and address comment |
What is this fixing or adding?
Implements 'Spelunker' for the NES into AP.
How was this tested?
Technically hasn't been run publicly yet, but I've done personal tests to make sure everything is working, and given how long it takes for PRs to get reviewed, I'm sure if any issues come up I'll be able to fix them while reviews come on. Overall, the world is very small so I don't expect there to be too many problems, if any, and I've already caught the major ones that I've found.
If this makes graphical changes, please attach screenshots.
Sprites courtesy of Seafo
Author's Note:
tis a silly game, made a micro apworld in a 3 day timespan lol