-
Notifications
You must be signed in to change notification settings - Fork 366
/
HintList.py
383 lines (369 loc) · 39.7 KB
/
HintList.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
import random
class Hint(object):
name = ""
text = ""
type = ""
def __init__(self, name, text, type, choice=None):
self.name = name
self.type = type
if isinstance(text, str):
self.text = text
else:
if choice == None:
self.text = random.choice(text)
else:
self.text = text[choice]
def getHint(name, clearer_hint=False):
hint = name
if name not in hintTable:
hint = 'KeyError'
textOptions, clearText, type = hintTable[hint]
if clearer_hint:
if clearText == None:
return Hint(name, textOptions, type, 0)
return Hint(name, clearText, type)
else:
return Hint(name, textOptions, type)
def getHintGroup(group, world):
ret = []
for name in hintTable:
hint = getHint(name, world.clearer_hints)
if hint.type == group and not (name in hintExclusions(world)):
ret.append(hint)
return ret
#table of hints, format is (name, hint text, clear hint text, type of hint) there are special characters that are read for certain in game commands:
# ^ is a box break
# & is a new line
# @ will print the player name
# # sets color to white (currently only used for dungeon reward hints).
hintTable = {
'Magic Meter': (["mystic training", "pixie dust", "a green rectangle"], "a Magic Meter", 'item'),
'Double Defense': (["a white outline", "damage decrease", "strengthened love"], "Double Defense", 'item'),
'Slingshot': (["a seed shooter", "a rubberband", "a child's catapult"], "a Slingshot", 'item'),
'Boomerang': (["a banana", "a stun stick"], "the Boomerang", 'item'),
'Bow': (["an archery enabler", "a danger dart launcher"], "a Bow", 'item'),
'Bomb Bag': (["an explosive container", "a blast bag"], "a Bomb Bag", 'item'),
'Progressive Hookshot': (["Dampe's keepsake", "the Grapple Beam", "the BOING! chain"], "a Hookshot", 'item'),
'Progressive Strength Upgrade': (["power gloves", "metal mittens", "the heavy lifty"], "a Strength Upgrade", 'item'),
'Progressive Scale': (["a deeper dive", "a piece of Zora"], "a Zora Scale", 'item'),
'Hammer': (["the dragon smasher", "the metal mallet", "the heavy hitter"], "the Megaton Hammer", 'item'),
'Iron Boots': (["sink shoes", "clank cleats"], "the Iron Boots", 'item'),
'Hover Boots': (["butter boots", "sacred slippers", "spacewalkers"], "the Hover Boots", 'item'),
'Kokiri Sword': (["a butter knife", "a starter slasher", "a switchblade"], "the Kokiri Sword", 'item'),
'Biggoron Sword': (["the biggest blade", "a colossal cleaver"], "the Biggoron Sword", 'item'),
'Master Sword': (["evil's bane"], "the Master Sword", 'item'),
'Deku Shield': (["a wooden ward", "a burnable barrier"], "a Deku Shield", 'item'),
'Hylian Shield': (["a steel safeguard", "Like Like's metal meal"], "a Hylian Shield", 'item'),
'Mirror Shield': (["the reflective rampart", "Medusa's weakness", "a silvered surface"], "the Mirror Shield", 'item'),
'Farores Wind': (["teleportation", "a relocation rune", "a green ball", "a green gust"], "Farore's Wind", 'item'),
'Nayrus Love': (["a safe space", "an impregnable aura", "a blue barrier", "a blue crystal"], "Nayru's Love", 'item'),
'Dins Fire': (["an inferno", "a heat wave", "a red ball"], "Din's Fire", 'item'),
'Fire Arrows': (["the furnace firearm", "the burning bolts", "a magma missile"], "the Fire Arrows", 'item'),
'Ice Arrows': (["the refrigerator rocket", "the frostbite bolts", "an iceberg maker"], "the Ice Arrows", 'item'),
'Light Arrows': (["the shining shot", "the luminous launcher", "Ganondorf's bane", "the lighting bolts"], "the Light Arrows", 'item'),
'Lens of Truth': (["a lie detector", "a ghost tracker", "true sight", "a detective's tool"], "the Lens of Truth", 'item'),
'Ocarina': (["a flute", "a music maker"], "an Ocarina", 'item'),
'Fairy Ocarina': (["a brown flute", "a forest instrument"], "the Fairy Ocarina", 'item'),
'Ocarina of Time': (["a blue flute", "a royal instrument"], "the Ocarina of Time", 'item'),
'Goron Tunic': (["ruby robes", "fireproof fabric", "cooking clothes"], "a Goron Tunic", 'item'),
'Zora Tunic': (["a sapphire suit", "scuba gear", "a swimsuit"], "a Zora Tunic", 'item'),
'Epona': (["a horse", "a four legged friend"], "Epona", 'item'),
'Zeldas Lullaby': (["a song of royal slumber", "a triforce tune"], "Zelda's Lullaby", 'item'),
'Eponas Song': (["an equestrian etude", "Malon's melody", "a ranch song"], "Epona's Song", 'item'),
'Sarias Song': (["a song of dancing Gorons", "Saria's phone number"], "Saria's Song", 'item'),
'Suns Song': (["Sunny Day", "the ReDead's bane", "the Gibdo's bane"], "the Sun's Song", 'item'),
'Song of Time': (["a song 7 years long", "the tune of ages"], "the Song of Time", 'item'),
'Song of Storms': (["Rain Dance", "a thunderstorm tune", "windmill acceleration"], "the Song of Storms", 'item'),
'Minuet of Forest': (["the song of tall trees", "an arboreal anthem", "a green spark trail"], "the Minuet of Forest", 'item'),
'Bolero of Fire': (["a song of lethal lava", "a red spark trail", "a volcanic verse"], "the Bolero of Fire", 'item'),
'Serenade of Water': (["a song of a damp ditch", "a blue spark trail", "the lake's lyric"], "the Serenade of Water", 'item'),
'Requiem of Spirit': (["a song of sandy statues", "an orange spark trail", "the desert ditty"], "the Requiem of Spirit", 'item'),
'Nocturne of Shadow': (["a song of spooky spirits", "a graveyard boogie", "a haunted hymn", "a purple spark trail"], "the Nocturne of Shadow", 'item'),
'Prelude of Light': (["a luminous prologue melody", "a yellow spark trail", "the temple traveler"], "the Prelude of Light", 'item'),
'Bottle': (["a glass container", "an empty jar", "encased air"], "a Bottle", 'item'),
'Bottle with Letter': (["a call for help", "the note that Mweeps", "an SOS call", "a fishy stationery"], "Ruto's Letter", 'item'),
'Bottle with Milk': (["cow juice", "a white liquid", "a baby's breakfast"], "a Milk Bottle", 'item'),
'Bottle with Red Potion': (["a vitality vial", "a red liquid"], "a Red Potion Bottle", 'item'),
'Bottle with Green Potion': (["a magic mixture", "a green liquid"], "a Green Potion Bottle", 'item'),
'Bottle with Blue Potion': (["an ailment antidote", "a blue liquid"], "a Blue Potion Bottle", 'item'),
'Bottle with Fairy': (["an imprisoned fairy", "an extra life", "Navi's cousin"], "a Fairy Bottle", 'item'),
'Bottle with Fish': (["an aquarium", "a deity's snack"], "a Fish Bottle", 'item'),
'Bottle with Blue Fire': (["a conflagration canteen", "an icemelt jar"], "a Blue Fire Bottle", 'item'),
'Bottle with Bugs': (["an insectarium", "Skulltula finders"], "a Bug Bottle", 'item'),
'Bottle with Poe': (["a spooky ghost", "a face in the jar"], "a Poe Bottle", 'item'),
'Bottle with Big Poe': (["the spookiest ghost", "a sidequest spirit"], "a Big Poe Bottle", 'item'),
'Stone of Agony': (["the shake stone", "the Rumble Pak (TM)"], "the Stone of Agony", 'item'),
'Gerudo Membership Card': (["a girl club membership", "a desert tribe's pass"], "the Gerudo Card", 'item'),
'Progressive Wallet': (["a mo' money holder", "a gem purse", "a portable bank"], "a Wallet", 'item'),
'Deku Stick Capacity': (["a lumber rack", "more flammable twigs"], "Deku Stick Capacity", 'item'),
'Deku Nut Capacity': (["more nuts", "flashbang storage"], "Deku Nut Capacity", 'item'),
'Heart Container': (["a lot of love", "a Valentine's gift", "a boss's organ"], "a Heart Container", 'item'),
'Piece of Heart': (["a little love", "a broken heart"], "a Piece of Heart", 'item'),
'Piece of Heart (Treasure Chest Game)': ("a victory valentine", "a Piece of Heart", 'item'),
'Recovery Heart': (["a free heal", "a hearty meal", "a Band-Aid"], "a Recovery Heart", 'item'),
'Rupee (Treasure Chest Game)': ("the dollar of defeat", 'a Green Rupee', 'item'),
'Deku Stick (1)': ("a breakable branch", 'a Deku Stick', 'item'),
'Rupee (1)': (["a unique coin", "a penny", "a green gem"], "a Green Rupee", 'item'),
'Rupees (5)': (["a common coin", "a blue gem"], "a Blue Rupee", 'item'),
'Rupees (20)': (["couch cash", "a red gem"], "a Red Rupees", 'item'),
'Rupees (50)': (["big bucks", "a purple gem", "wealth"], "a Purple Rupee", 'item'),
'Rupees (200)': (["a juicy jackpot", "a yellow gem", "a giant gem", "great wealth"], "a Huge Rupee", 'item'),
'Weird Egg': (["a chicken dilemma"], "the Weird Egg", 'item'),
'Zeldas Letter': (["an autograph", "royal stationery", "royal snail mail"], "Zelda's Letter", 'item'),
'Pocket Egg': (["a Cucco container", "a Cucco, eventually", "a fowl youth"], "the Pocket Egg", 'item'),
'Pocket Cucco': (["a little clucker"], "the Pocket Cucco", 'item'),
'Cojiro': (["a cerulean capon"], "Cojiro", 'item'),
'Odd Mushroom': (["a powder ingredient"], "an Odd Mushroom", 'item'),
'Odd Potion': (["Granny's goodies"], "an Odd Potion", 'item'),
'Poachers Saw': (["a tree killer"], "the Poacher's Saw", 'item'),
'Broken Sword': (["a shattered slicer"], "the Broken Sword", 'item'),
'Prescription': (["a pill pamphlet", "a doctor's note"], "the Prescription", 'item'),
'Eyeball Frog': (["a perceiving polliwog"], "the Eyeball Frog", 'item'),
'Eyedrops': (["a vision vial"], "the Eyedrops", 'item'),
'Claim Check': (["a three day wait"], "the Claim Check", 'item'),
'Map': (["a dungeon atlas", "blueprints"], "a Map", 'item'),
'Compass': (["a treasure tracker", "a magnetic needle"], "a Compass", 'item'),
'BossKey': (["a master of unlocking", "a dungeon's master pass"], "a Boss Key", 'item'),
'SmallKey': (["a tool for unlocking", "a dungeon pass", "a lock remover", "a lockpick"], "a Small Key", 'item'),
'FortressSmallKey': (["a get out of jail free card"], "a Jail Key", 'item'),
'KeyError': (["something mysterious", "an unknown treasure"], "An Error (Please Report This)", 'item'),
'Arrows (5)': (["a few danger darts", "a few sharp shafts"], "Arrows (5 pieces)", 'item'),
'Arrows (10)': (["some danger darts", "some sharp shafts"], "Arrows (10 pieces)", 'item'),
'Arrows (30)': (["plenty of danger darts", "plenty of sharp shafts"], "Arrows (30 pieces)", 'item'),
'Bombs (5)': (["a few explosives", "a few blast balls"], "Bombs (5 pieces)", 'item'),
'Bombs (10)': (["some explosives", "some blast balls"], "Bombs (10 pieces)", 'item'),
'Bombs (20)': (["lots-o-explosives", "plenty of blast balls"], "Bombs (20 pieces)", 'item'),
'Ice Trap': (["a gift from Ganon", "a chilling discovery", "frosty fun"], "an Ice Trap", 'item'),
'Magic Bean': (["wizardly legumes"], "a Magic Bean", 'item'),
'Bombchus': (["mice bombs", "proximity mice", "wall crawlers", "trail blazers"], "Bombchus", 'item'),
'Bombchus (5)': (["a few mice bombs", "a few proximity mice", "a few wall crawlers", "a few trail blazers"], "Bombchus (5 pieces)", 'item'),
'Bombchus (10)': (["some mice bombs", "some proximity mice", "some wall crawlers", "some trail blazers"], "Bombchus (10 pieces)", 'item'),
'Bombchus (20)': (["plenty of mice bombs", "plenty of proximity mice", "plenty of wall crawlers", "plenty of trail blazers"], "Bombchus (20 pieces)", 'item'),
'Deku Nuts (5)': (["some nuts", "some flashbangs", "some scrub spit"], "Deku Nuts (5 pieces)", 'item'),
'Deku Nuts (10)': (["lots-o-nuts", "plenty of flashbangs", "plenty of scrub spit"], "Deku Nuts (10 pieces)", 'item'),
'Deku Seeds (30)': (["catapult ammo", "lots-o-seeds"], "Deku Seeds (30 pieces)", 'item'),
'Gold Skulltula Token': (["proof of destruction", "an arachnid chip", "spider remains", "one percent of a curse"], "a Gold Skulltula Token", 'item'),
'10 Big Poes': (["#Big Poes# leads to", "#ghost hunters# will be rewarded with"], None, 'alwaysLocation'),
'Deku Theater Mask of Truth': ("the #Mask of Truth# yields", None, 'alwaysLocation'),
'20 Gold Skulltula Reward': ("slaying #20 Gold Skulltulas# reveals", None, 'location'),
'30 Gold Skulltula Reward': ("slaying #30 Gold Skulltulas# reveals", None, 'alwaysLocation'),
'40 Gold Skulltula Reward': ("slaying #40 Gold Skulltulas# reveals", None, 'alwaysLocation'),
'50 Gold Skulltula Reward': ("slaying #50 Gold Skulltulas# reveals", None, 'alwaysLocation'),
'Ocarina of Time': ("They say the #treasure thrown by Princess Zelda# is", None, 'alwaysLocation'),
'Song from Ocarina of Time': ("the #Ocarina of Time# teaches", None, 'alwaysLocation'),
'Biggoron': ("#Biggoron# crafts", None, 'alwaysLocation'),
'Child Fishing': ("#fishing in youth# bestows", None, 'location'),
'Adult Fishing': ("#fishing in maturity# bestows", None, 'location'),
'Treasure Chest Game': (["#gambling# grants", "there is a #1/32 chance# to win"], "the #treasure chest game# grants", 'location'),
'Darunias Joy': ("#Darunia's dance# leads to", None, 'location'),
'Frog Ocarina Game': (["The #Frogs of Zora River# hold", "the #musical amphibians# have found"], None, 'location'),
'Horseback Archery 1500 Points': ("mastery of #horseback archery# grants", "scoring 1500 in #horseback archery# grants", 'location'),
'Lake Hylia Sun': ("staring into #the sun# grants", "shooting #the sun# grants", 'location'),
'Heart Piece Grave Chest': ("playing #Sun's Song# in a grave spawns", None, 'location'),
'Goron City Leftmost Maze Chest': ("in #Goron City# the hammer unlocks", None, 'location'),
'GS Hyrule Castle Grotto': ("a #storm near the castle# reveals", None, 'location'),
'GS Hyrule Field Near Gerudo Valley': ("buried near #the valley# a spider holds", None, 'location'),
'GS Zora\'s Fountain Hidden Cave': ("a spider high above the #icy waters# holds", None, 'location'),
'Forest Temple Floormaster Chest': ("deep in #the forest#, shadows guard a chest containing", "a Floormaster in #Forest Temple# guards", 'location'),
'Fire Temple Scarecrow Chest': ("high in the #Fire Temple#, Pierre hid", None, 'location'),
'Fire Temple Megaton Hammer Chest': ("high in the #Fire Temple#, Flare Dancers hid", None, 'location'),
'Fire Temple MQ West Tower Top Chest': ("high in the #Fire Temple#, Flare Dancers hid", None, 'location'),
'Water Temple River Chest': ("deep under #the lake#, beyond the currents, hides", "the #Water Temple River Chest# holds", 'location'),
'Water Temple Boss Key Chest': ("deep under #the lake#, the gilded chest contains", "the #Water Temple Gilded Chest# holds", 'location'),
'Water Temple MQ Boss Key Chest': ("deep under #the lake#, the gilded chest contains", "the #Water Temple Gilded Chest# holds", 'location'),
'Water Temple MQ Freestanding Key': ("deep under #the lake#, the apparent key is really", None, 'location'),
'GS Water Temple MQ North Basement': ("deep under #the lake#, the locked spider holds", None, 'location'),
'Gerudo Training Grounds Underwater Silver Rupee Chest': ("those who seek #sunken silver rupees# will find", None, 'location'),
'Gerudo Training Grounds MQ Underwater Silver Rupee Chest': ("those who seek #sunken silver rupees# will find", None, 'location'),
'Gerudo Training Grounds Maze Path Final Chest': ("the final prize of #the thieves\' training# is", None, 'location'),
'Gerudo Training Grounds MQ Ice Arrows Chest': ("the final prize of #the thieves\' training# is", None, 'location'),
'Bottom of the Well Defeat Boss': ("#Dead Hand# holds", "#Dead Hand# in the well holds", 'location'),
'Bottom of the Well MQ Compass Chest': ("#Dead Hand# holds", "#Dead Hand# in the well holds", 'location'),
'Silver Gauntlets Chest': ("upon the #Colossus's right hand# is", None, 'location'),
'Mirror Shield Chest': ("upon the #Colossus's left hand# is", None, 'location'),
'Spirit Temple MQ Child Center Chest': ("within #the Colossus# a temporal paradox yields", None, 'location'),
'Spirit Temple MQ Lower Adult Right Chest': ("within #the Colossus# a symphony yields", None, 'location'),
'GS Spirit Temple MQ Lower Adult Right': ("within #the Colossus# a spider's symphony yields", None, 'location'),
'Shadow Temple Hidden Floormaster Chest': (["shadows in an #invisible maze# guard", "after a free #boat ride# comes"], None, 'location'),
'Shadow Temple MQ Bomb Flower Chest': (["shadows in an #invisible maze# guard", "after a free #boat ride# comes"], None, 'location'),
'Haunted Wasteland Structure Chest': (["deep in the #Wasteland# is", "beneath #the sands#, flames reveal"], None, 'location'),
'Composer Grave Chest': (["in the #Composers' Grave#, darkness hides", "the #Composer Brothers# hid"], None, 'location'),
'Song from Composer Grave': (["in the #Composers' Grave#, ReDead guard", "the #Composer Brothers# wrote"], None, 'location'),
'Sheik Forest Song': ("deep in #the forest# Sheik teaches", None, 'location'),
'Sheik at Temple': ("Sheik waits at a #monument to time# to teach", None, 'location'),
'Sheik in Crater': ("the #crater's melody# is", None, 'location'),
'Sheik in Ice Cavern': ("the #frozen cavern# echoes with", None, 'location'),
'Sheik in Kakariko': ("a #ravaged village# mourns with", None, 'location'),
'Sheik at Colossus': ("a hero ventures beyond #the Wasteland# to learn", None, 'location'),
'Zoras Fountain Bottom Freestanding PoH': ("under the #icy waters# lies", None, 'location'),
'Colossus Freestanding PoH': ("riding a #beanstalk in the desert# leads to", None, 'location'),
'DM Crater Volcano Freestanding PoH': ("riding a #beanstalk in the crater# leads to", None, 'location'),
'Goron City Pot Freestanding PoH': ("spinning #Goron pottery# contains", None, 'location'),
'Deku Tree MQ After Spinning Log Chest': ("within #a tree#, a temporal stone contains", None, 'location'),
'GS Jabu Jabu MQ Invisible Enemies Room': ("in the #belly of a deity#, a spider surrounded by shadows holds", None, 'location'),
'1001': ("Ganondorf 2020!", None, 'junkHint'),
'1002': ("They say that monarchy is a terrible system of governance.", None, 'junkHint'),
'1003': ("They say that Zelda is a poor leader.", None, 'junkHint'),
'1004': ("These hints can be quite useful. This is an exception.", None, 'junkHint'),
'1006': ("They say that all the Zora drowned in Wind Waker.", None, 'junkHint'),
'1007': ("They say that PJ64 is a terrible emulator.", None, 'junkHint'),
'1008': ("'Member when Ganon was a blue pig?^I 'member.", None, 'junkHint'),
'1009': ("One who does not have Triforce can't go in.", None, 'junkHint'),
'1010': ("Save your future, end the Happy Mask Salesman.", None, 'junkHint'),
'1012': ("I'm stoned. Get it?", None, 'junkHint'),
'1013': ("Hoot! Hoot! Would you like me to repeat that?", None, 'junkHint'),
'1014': ("Gorons are stupid. They eat rocks.", None, 'junkHint'),
'1015': ("They say that Lon Lon Ranch prospered under Ingo.", None, 'junkHint'),
'1016': ("The single rupee is a unique item.", None, 'junkHint'),
'1017': ("Without the Lens of Truth, the Treasure Chest Mini-Game is a 1 out of 32 chance.^Good luck!", None, 'junkHint'),
'1018': ("Use bombs wisely.", None, 'junkHint'),
'1021': ("I found you, faker!", None, 'junkHint'),
'1022': ("You're comparing yourself to me?^Ha! You're not even good enough to be my fake.", None, 'junkHint'),
'1023': ("I'll make you eat those words.", None, 'junkHint'),
'1024': ("What happened to Sheik?", None, 'junkHint'),
'1025': ("L2P @.", None, 'junkHint'),
'1026': ("I heard @ isn't very good at Zelda.", None, 'junkHint'),
'1027': ("I'm Lonk from Pennsylvania.", None, 'junkHint'),
'1028': ("I bet you'd like to have more bombs.", None, 'junkHint'),
'1029': ("When all else fails, use Fire.", None, 'junkHint'),
'1030': ("Here's a hint, @. Don't be bad.", None, 'junkHint'),
'1031': ("Game Over. Return of Ganon.", None, 'junkHint'),
'1032': ("May the way of the Hero lead to the Triforce.", None, 'junkHint'),
'1033': ("Can't find an item? Scan an Amiibo.", None, 'junkHint'),
'1034': ("They say this game has just a few glitches.", None, 'junkHint'),
'1035': ("BRRING BRRING This is Ulrira. Wrong number?", None, 'junkHint'),
'1036': ("Tingle Tingle Kooloo Limpah", None, 'junkHint'),
'1037': ("L is real 2041", None, 'junkHint'),
'1038': ("They say that Ganondorf will appear in the next Mario Tennis.", None, 'junkHint'),
'1039': ("Medigoron sells the earliest Breath of the Wild demo.", None, 'junkHint'),
'1040': ("There's a reason why I am special inquisitor!", None, 'junkHint'),
'1041': ("You were almost a @ sandwich.", None, 'junkHint'),
'1042': ("I'm a helpful hint Gossip Stone!^See, I'm helping.", None, 'junkHint'),
'1043': ("Dear @, please come to the castle. I've baked a cake for you.&&Yours truly, princess Zelda.", None, 'junkHint'),
'1044': ("They say all toasters toast toast.", None, 'junkHint'),
'1045': ("They say that Okami is the best Zelda game.", None, 'junkHint'),
'1046': ("They say that quest guidance can be found at a talking rock.", None, 'junkHint'),
'1047': ("They say that the final item you're looking for can be found somewhere in Hyrule", None, 'junkHint'),
'1048': ("Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.", None, 'junkHint'),
'1049': ("They say that Barinade fears Deku Nuts.", None, 'junkHint'),
'1050': ("They say that Flare Dancers do not fear Goron-crafted blades.", None, 'junkHint'),
'1051': ("They say that Morpha is easily trapped in a corner.", None, 'junkHint'),
'1052': ("They say that Bongo Bongo really hates the cold.", None, 'junkHint'),
'1053': ("They say that crouch stabs mimic the effects of your last attack.", None, 'junkHint'),
'1054': ("They say that bombing the hole Volvagia last flew into can be rewarding.", None, 'junkHint'),
'1055': ("They say that invisible ghosts can be exposed with Deku Nuts.", None, 'junkHint'),
'1056': ("They say that the real Phantom Ganon is bright and loud.", None, 'junkHint'),
'1057': ("They say that walking backwards is very fast.", None, 'junkHint'),
'1058': ("They say that leaping above the Castle Town entrance enriches most children.", None, 'junkHint'),
#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx handy marker for how long one line should be in a text box
'Deku Tree': ("an ancient tree", "Deku Tree", 'dungeon'),
'Dodongos Cavern': ("an immense cavern", "Dodongo's Cavern", 'dungeon'),
'Jabu Jabus Belly': ("the belly of a deity", "Jabu Jabu's Belly", 'dungeon'),
'Forest Temple': ("a deep forest", "Forest Temple", 'dungeon'),
'Fire Temple': ("a high mountain", "Fire Temple", 'dungeon'),
'Water Temple': ("a vast lake", "Water Temple", 'dungeon'),
'Shadow Temple': ("the house of the dead", "Shadow Temple", 'dungeon'),
'Spirit Temple': ("the goddess of the sand", "Spirit Temple", 'dungeon'),
'Ice Cavern': ("a frozen maze", "Ice Cavern", 'dungeon'),
'Bottom of the Well': ("a shadow\'s prison", "Bottom of the Well", 'dungeon'),
'Gerudo Training Grounds': ("the test of thieves", "Gerudo Training Grounds", 'dungeon'),
'Ganons Castle': ("a conquered citadel", "Ganon's Castle", 'dungeon'),
#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx handy marker for how long one line should be in a text box
'Queen Gohma': ("One inside an #ancient tree#...^", "One in the #Deku Tree#...^", 'boss'),
'King Dodongo': ("One within an #immense cavern#...^", "One in #Dodongo's Cavern#...^", 'boss'),
'Barinade': ("One in the #belly of a deity#...^", "One in #Jabu Jabu's Belly#...^", 'boss'),
'Phantom Ganon': ("One in a #deep forest#...^", "One in the #Forest Temple#...^", 'boss'),
'Volvagia': ("One on a #high mountain#...^", "One in the #Fire Temple#...^", 'boss'),
'Morpha': ("One under a #vast lake#...^", "One in the #Water Temple#...^", 'boss'),
'Bongo Bongo': ("One within the #house of the dead#...^", "One in the #Shadow Temple#...^", 'boss'),
'Twinrova': ("One inside a #goddess of the sand#...^", "One in the #Spirit Temple#...^", 'boss'),
'Links Pocket': ("One in #@'s pocket#...^", "One #@ already has#...^", 'boss'),
'Spiritual Stone Text Start': ("Ye who owns 3 Spiritual Stones...^", None, 'boss'),
'Spiritual Stone Text End': ("Stand with the Ocarina of Time&and play the Song of Time.", None, 'boss'),
'Medallion Text End': ("Together with the Hero of Time,&the awakened ones will bind the&evil and return the light of peace&to the world.", None, 'boss'),
#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx handy marker for how long one line should be in a text box
'Validation Line': ("Hmph... Since you made it this far,&I'll let you know what glorious&prize of Ganon's you likely&missed out on in my tower.^Behold...^", None, 'validation line'),
'Light Arrow Location': ("Ha ha ha... You'll never beat me by&reflecting my lightning bolts&and unleashing the arrows from&", None, 'Light Arrow Location'),
'2001': ("Oh! It's @.&I was expecting someone called&Sheik. Do you know what&happened to them?", None, 'ganonLine'),
'2002': ("I knew I shouldn't have put the key&on the other side of my door.", None, 'ganonLine'),
'2003': ("Looks like it's time for a&round of tennis.", None, 'ganonLine'),
'2004': ("You'll never deflect my bolts of&energy with your sword,&then shoot me with those Light&Arrows you happen to have.", None, 'ganonLine'),
'2005': ("Why did I leave my trident&back in the desert?", None, 'ganonLine'),
'2006': ("Zelda is probably going to do&something stupid, like send you&back to your own timeline.^So this is quite meaningless.&Do you really want&to save this moron?", None, 'ganonLine'),
'2007': ("What about Zelda makes you think&she'd be a better ruler than I?^I saved Lon Lon Ranch,&fed the hungry,&and my castle floats.", None, 'ganonLine'),
'2008': ("I've learned this spell,&it's really neat,&I'll keep it later&for your treat!", None, 'ganonLine'),
'2009': ("Many tricks are up my sleeve,&to save yourself&you'd better leave!", None, 'ganonLine'),
'2010': ("After what you did to&Koholint Island, how can&you call me the bad guy?", None, 'ganonLine'),
'2011': ("Today, let's begin down&'The Hero is Defeated' timeline.", None, 'ganonLine'),
}
# This specifies which hints will never appear due to either having known or known useless contents or due to the locations not existing.
def hintExclusions(world):
expected_skulltulas = world.logic_skulltulas
exclusions = []
if world.logic_no_trade_skull_mask:
exclusions.append('Deku Theater Skull Mask')
if world.logic_no_trade_mask_of_truth:
exclusions.append('Deku Theater Mask of Truth')
if world.logic_no_trade_biggoron:
exclusions.append('Biggoron')
if world.logic_no_child_fishing:
exclusions.append('Child Fishing')
if world.logic_no_adult_fishing:
exclusions.append('Adult Fishing')
if world.logic_no_big_poes:
exclusions.append('10 Big Poes')
if expected_skulltulas < 50:
exclusions.append('50 Gold Skulltula Reward')
if expected_skulltulas < 40:
exclusions.append('40 Gold Skulltula Reward')
if expected_skulltulas < 30:
exclusions.append('30 Gold Skulltula Reward')
if expected_skulltulas < 20:
exclusions.append('20 Gold Skulltula Reward')
if expected_skulltulas < 10:
exclusions.append('10 Gold Skulltula Reward')
if not world.shuffle_ocarinas:
exclusions.append('Ocarina of Time')
if world.tokensanity != 'all':
exclusions.append('GS Hyrule Castle Grotto')
exclusions.append('GS Hyrule Field Near Gerudo Valley')
exclusions.append('GS Zora\'s Fountain Hidden Cave')
if not world.dungeon_mq['DT']:
exclusions.append('Deku Tree MQ After Spinning Log Chest')
if world.tokensanity == 'off' or not world.dungeon_mq['JB']:
exclusions.append('GS Jabu Jabu MQ Invisible Enemies Room')
if world.dungeon_mq['FoT']:
exclusions.append('Forest Temple Floormaster Chest')
if world.dungeon_mq['FiT']:
exclusions.append('Fire Temple Scarecrow Chest')
exclusions.append('Fire Temple Megaton Hammer Chest')
else:
exclusions.append('Fire Temple MQ West Tower Top Chest')
if world.dungeon_mq['WT']:
exclusions.append('Water Temple River Chest')
exclusions.append('Water Temple Boss Key Chest')
else:
exclusions.append('Water Temple MQ Boss Key Chest')
exclusions.append('Water Temple MQ Freestanding Key')
if world.tokensanity == 'off' or not world.dungeon_mq['WT']:
exclusions.append('GS Water Temple MQ North Basement')
if world.dungeon_mq['GTG']:
exclusions.append('Gerudo Training Grounds Underwater Silver Rupee Chest')
exclusions.append('Gerudo Training Grounds Maze Path Final Chest')
else:
exclusions.append('Gerudo Training Grounds MQ Underwater Silver Rupee Chest')
exclusions.append('Gerudo Training Grounds MQ Ice Arrows Chest')
if world.dungeon_mq['BW']:
exclusions.append('Bottom of the Well Defeat Boss')
else:
exclusions.append('Bottom of the Well MQ Compass Chest')
if not world.dungeon_mq['SpT']:
exclusions.append('Spirit Temple MQ Child Center Chest')
exclusions.append('Spirit Temple MQ Lower Adult Right Chest')
if world.tokensanity == 'off' or not world.dungeon_mq['SpT']:
exclusions.append('GS Spirit Temple MQ Lower Adult Right')
if world.dungeon_mq['ShT']:
exclusions.append('Shadow Temple Hidden Floormaster Chest')
else:
exclusions.append('Shadow Temple MQ Bomb Flower Chest')
return exclusions