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

Hints #84

Merged
merged 28 commits into from
Nov 20, 2023
Merged

Hints #84

merged 28 commits into from
Nov 20, 2023

Conversation

gymnast86
Copy link
Contributor

What does this PR do?

Several new settings have been created that allow for the creation of hints to help guide players on where to go in their playthroughs.

There are several types of hints that players can choose to create. Each hint type has its own setting where players can select anywhere between 0-7 of each type.

Types of Hints

Path Hints:

  • Will describe a hint region that has an item necessary to beat any required boss in the playthrough
  • Example: They say that Central Skyloft is on the path to Koloktos.

Barren Hints:

  • Will describe an area which has no useful items for the playthrough
  • Example: They say that visiting Lake Floria is a foolish choice.

Item Hints:

  • Will describe the area where a specific item can be found
  • Example: They say that the Clawshots can be found at Lanayru Desert.

Location Hints:

  • Will directly state what item is at a specific location
  • Example: They say that Skyloft Village - Sparrot's Crystals rewards Din's Power.

Hint Placement Options

There are two hint placement options that players can select for distributing the above kinds of hints.

Fi Hints:

  • Hints can be seen by calling Fi and selecting Advice and then Hint

Gossip Stone Hints:

  • Hints can be seen by talking to gossip stones around the overworld.
  • Hints will be duplicated until the number is evenly divisible by the number of available gossip stones. This way each gossip stone gets the same number of hints. Duplicate hints will never be on the same gossip stone.
  • Specific gossip stones can be excluded by specifying them in the excluded_locations list

Players can select none, one, or both hint placement options. If both are selected, the total number of hints will be divided equally between the placement options. So if there are 14 total hints, Fi will get 7, and the gossip stones as a whole will get 7.

Other Types of Hints

Song Hints:

  • Will give players a hint as to the item(s) that can be found in a silent realm. These hints will appear in the text when receiving the associated song and can be viewed in the songs inventory text if it's already in the inventory
  • With trial gate entrance randomizer enabled, the song will say which items are in the silent realm that it's associated trial gate is randomized to. If trial gate entrances are randomized and mixed, then song hints won't be generated.
  • Players can specify the level of directness they want the hints to convey. basic will only indicate if a major item can be found. advanced will indicate if a required item can be found. direct will directly state what major item(s) are in the silent realm.
  • If a silent realm has more than 1 major item, the direct setting will directly state what is believed to be the most useful item in the silent realm followed by how many other major items there are. Example: The realm beyond holds the Clawshots and 2 more items. This is done due to limited text space on the inventory screen not being able to show all the listed items if we listed them all individually.

Impa Stone of Trials Hint:

  • Impa will hint at the region the Stone of Trials resides in when you talk to her in the past.

Cryptic Hints:

  • Will change the item and location text in Item and Location hints to be cryptic instead of direct
  • Example: They say that the item check girl rewards a pair of orange chains.

Always Hints:

  • Will prioritize certain hard to reach locations for Location Hints instead of pulling from a more general pool

Text Data

This PR also changes how we internally handle the text for text patches and moves all current text data into data/text_data/english.yaml. For potential support of other languages in the future, we can add files such as spanish.yaml or japanese.yaml for supporting in-game text in other languages. Internally, all patches that need text must store the associated text in the text_table in util/text.py. This way, we can more easily patch multiple languages at once in the future if/when it becomes necessary.

How do you test this changes?

I generated a few seeds and read the text in-game and it all looked correct and matched with the generated Spoiler Log. A few more tests were also added to the pytest suite.

@CovenEsme CovenEsme added the suggestion ✨ New feature or request label Nov 16, 2023
@gymnast86 gymnast86 merged commit 587e05a into mint-choc-chip-skyblade:main Nov 20, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
suggestion ✨ New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants