Skip to content
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

LADX: Add more specific "item icon guessing" support for some games #4706

Open
wants to merge 31 commits into
base: main
Choose a base branch
from

Conversation

ironminer888
Copy link

What is this fixing or adding?

Added more specific "item icon guessing" support for some games, including:

  • DKC3: Petallus Pongus and Banana Birds are now HIBISCUS and ROOSTER graphics
  • Pokemon: Old Amber, Coin Case, Passes, Tickets, consumable drinks/heals, Itemfinder
  • Mario and Luigi Superstar Saga: Most items
  • Doom 1993 / Doom 2: Keycards, medpaks, ammo pickups, chainsaw
  • Ocarina of Time: Tunics, Wallet, dungeon rewards, magic
  • Inscryption: Some major items, currency
  • Minecraft: Some progressive items, archery, emeralds, brewing, spyglass
  • Super Mario 64: Castle Keys are now NIGHTMARE_KEY with the horns, they look a lot closer to SM64's keys now
  • V6: Trinkets are now PIECE_OF_POWER
  • Hat in Time: Time Pieces, Pons
  • KH1/KH2: Goal items, Equipment, magic, weapons
  • SA2B: Rings, Grapes (Chao food item), Pick Nails
    These fixes are mostly fluff, but the consistency for graphics between games is nice.

How was this tested?

This branch has not changed anything re: generating or playing, only how item icons are decided during generation. No errors were created by Python when I tried to run the changed file, so there should be no errors in formatting either.

@github-actions github-actions bot added the waiting-on: peer-review Issue/PR has not been reviewed by enough people yet. label Mar 7, 2025
@PoryGone
Copy link
Collaborator

PoryGone commented Mar 7, 2025

DKC3: Petallus Pongus and Banana Birds are now HIBISCUS and ROOSTER graphics

It doesn't really hurt to be here I guess, but fwiw, the flower item in DKC3 is never actually existent as an item, and very likely never will be.

@ironminer888
Copy link
Author

DKC3: Petallus Pongus...

It doesn't really hurt to be here I guess, but fwiw, the flower item in DKC3 is never actually existent as an item, and very likely never will be.

I saw the name in the DKC3 Items.py file, then I looked it up on MarioWiki and saw it was a flower. I just checked the actual Rules.py file for the DKC3 world now. It seems like the trade sequence got dummied out as check locations some time ago... I'm sorry, I didn't know!

@ScipioWright ScipioWright added is: enhancement Issues requesting new features or pull requests implementing new features. waiting-on: world-maintainer Issue/PR is waiting for feedback or approval by the maintainer of a world. labels Mar 7, 2025
@ScipioWright
Copy link
Collaborator

@threeandthreee

@KScl
Copy link
Contributor

KScl commented Mar 7, 2025

  • Doom 1993 / Doom 2: Keycards, medpaks, ammo pickups, chainsaw

I would recommend adding "skull key" -> NIGHTMARE_KEY (e.g. Unholy Cathedral (E3M5) - Blue skull key) for these games while you're at it, for a hint of extra flavor.

@threeandthreee
Copy link
Contributor

Looks good, I'll give it a quick test later

Comment on lines +409 to +413
"Wallet": "MAGIC_POWDER",
"Medallion": "PIECE_OF_POWER",
"Kokiri Emerald": "RUPEES_500",
"Goron Ruby": "RUPEES_500",
"Zora Sapphire": "RUPEES_500",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you explain these?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • The Wallets in OoT look like a bag in their item model, that's mostly my reason. I guess I tended to use more literal interpretations of the sprites.
  • The dungeon Medallions are big, progression-y dungeon rewards, so I felt it made sense to have them be rendered as PIECE_OF_POWER.
  • The RUPEES_500 sprite is also assigned to "GEM" and "JEWEL" items. The Spiritual Stones are also decently big progression items that open the Temple of Time in base OoT. Really it could go either way as RUPEES_500 or PIECE_OF_POWER; I have no qualms if you want to change it.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I support targeting look over function, that was my mindset for other mappings.

# Key Items

"Old Amber": "STONE_BEAK", # Aerodactyl's fossil should still be a fossil
"Coin Case": "MAGIC_POWDER", # This shouldn't spawn as RUPEES
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doesn't a Coin case make more sense as rupees? Why Magic Powder?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm using the MAGIC_POWDER as a generic "sack" sprite here. The Coin Case is for casino chips in the Celadon Game Corner, not full of immediately useful money.

"Bike Voucher": "TRADING_ITEM_LETTER",
"Oak's Parcel": "TRADING_ITEM_LETTER",
"Pass": "TRADING_ITEM_LETTER", # Safari Pass
"Ticket": "TRADING_ITEM_LETTER", # SS Ticket

This comment was marked as resolved.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Partial matching should still catch this, as @threeandthreee mentioned above.

# Key Items

"Old Amber": "STONE_BEAK", # Aerodactyl's fossil should still be a fossil
"Coin Case": "MAGIC_POWDER", # This shouldn't spawn as RUPEES
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's the same story here as Red/Blue: I feel like the "case" part is more important than the "coin" part.

Comment on lines 763 to 768
# Armor
"Bandana": "POWER_BRACELET",
"Belt": "POWER_BRACELET",
"Anklet": "POWER_BRACELET",
"Trinket": "POWER_BRACELET",
"Charm": "POWER_BRACELET",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is Armor a Power Bracelet and not Armor as in Blue Tunic / Red Tunic?

Copy link
Author

@ironminer888 ironminer888 Mar 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In my defense, "Armor" in Kingdom Hearts 2 is a bit of a misnomer here. Some of the names used for Armor in KH2 already hit the synonyms used for POWER_BRACELET (like BAND and BANGLE), and the armor items are more "accessories" than sets of armor.

Plus, "accessories" and "armor" are two separate classes of item in KH2. This change is more of a consistency thing to make sure all KH2 armor gets rendered as POWER_BRACELET.

Perhaps it would be more elegant to have all the "armor" render as BLUE_TUNIC and the "accessories" render as POWER_BRACELET?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just remembered I set the badges in Superstar Saga as TRADE_ITEM_RIBBON, maybe that would work better for "accessories"? And the "armor" could be rendered as BLUE_TUNIC?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds like a good change to me

"Three Wishes": "SWORD",
"Fairy Harp": "SWORD",
"Pumpkinhead": "SWORD",
"Crabclaw": "SWORD",

This comment was marked as resolved.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Crabclaw" is a Keyblade you obtain in Atlantica, it's more a sword than a claw in my opinion.

Copy link
Contributor

@threeandthreee threeandthreee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gave it a little test, seems good

@ScipioWright ScipioWright added waiting-on: core-review Issue/PR has been peer-reviewed and is ready to be merged or needs input from a core maintainer. and removed waiting-on: world-maintainer Issue/PR is waiting for feedback or approval by the maintainer of a world. waiting-on: peer-review Issue/PR has not been reviewed by enough people yet. labels Mar 8, 2025
Copy link
Collaborator

@ScipioWright ScipioWright left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just adding more names to the list, so no real issue here

Copy link
Contributor

@threeandthreee threeandthreee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, I'm pretty sure it's going to fail to match these because they aren't uppercase. You can either make them uppercase or in __init__.py change the phrase matching (line 445) to this:

for phrase, icon in phrases.items():
    if phrase.upper() in uppered:
        return icon

@NewSoupVi NewSoupVi added the waiting-on: author Issue/PR is waiting for feedback or changes from its author. label Mar 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
is: enhancement Issues requesting new features or pull requests implementing new features. waiting-on: author Issue/PR is waiting for feedback or changes from its author. waiting-on: core-review Issue/PR has been peer-reviewed and is ready to be merged or needs input from a core maintainer.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants