Add 146 ice trap messages (#4281)

* Add ice trap message suggestions

* Split messages by language

* Re-run build

* Apply Pepper0ni's patch with fixes
This commit is contained in:
Pepe20129 2024-09-17 19:43:06 +02:00 committed by GitHub
parent cd92e70b84
commit 9c11718341
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 244 additions and 84 deletions

View File

@ -2826,86 +2826,251 @@ void CreateNaviRandoMessages() {
} }
} }
void CreateIceTrapRandoMessages() { CustomMessage Randomizer::GetIceTrapMessage() {
CustomMessage IceTrapMessages[NUM_ICE_TRAP_MESSAGES] = { static const char* const englishIceTrapMessages[169] = {
{ "You are a %bFOOL%w!", "Du bist ein %bDUMMKOPF%w!", "%bPauvre fou%w..." }, "You are a #FOOL#!",
"You are a #FOWL#!",
{ "You are a %bFOWL%w!", "Du bist eine %bFrostbeule%w!", "Tu es un %bglaçon%w, Harry!" }, "#FOOL#!",
"You just got #PUNKED#!",
{ "%bFOOL%w!", "%bDUMMKOPF%w!", "%bSot%w que tu es." }, "Stay #frosty#, @.",
"Take a #chill pill#, @.",
{ "You just got %bPUNKED%w!", "Du wurdest %beiskalt%w erwischt!", "Ça me %bglace%w le sang!" }, "#Winter# is coming.",
"#ICE# to see you, @.",
{ "Stay %bfrosty%w, @.", "Es läuft Dir %beiskalt%w den Rücken&hinunter, @.", "%bReste au frais%w, @." }, "Feeling a little %rhot%w under the collar? #Let's fix that#.",
"It's a #cold day# in the Evil Realm.",
{ "Take a %bchill pill%w, @.", "Bleib %bcool%w, @.", "Et c'est la douche %bfroide%w!" }, "Getting #cold feet#?",
"Say hello to the #Zoras# for me!",
{ "%bWinter%w is coming.", "Der %bWinter%w naht.", "L'%bhiver%w vient." }, "Can you keep a #cool head#?",
"Ganondorf used #Ice Trap#!&It's super effective!",
{ "%bICE%w to see you, @.", "Alles %bcool%w im Pool?", "%bGlacier%w!" }, "Allow me to break the #ice#!",
"#Cold pun#.",
{ "Feeling a little %rhot%w under the collar?&%bLet's fix that%w.", "%bAbkühlung gefällig%w?", "The #Titanic# would be scared of you, @.",
"%Ça en jette un %bfroid%w." }, "Oh no!",
"Uh oh!",
{ "It's a %bcold day%w in the Evil Realm.", "Es ist ein %kalter%w Tag im Herzen&von Hyrule.", "What killed the dinosaurs?&The #ICE# age!",
"Est-ce que tu as déjà eu des sueurs&%bfroides%w?" }, "Knock knock. Who's there? Ice. Ice who? Ice see that you're a #FOOL#.",
"Never gonna #give you up#. Never gonna #let you down#. Never gonna run around and #desert you#.",
{ "Getting %bcold feet%w?", "Bekommst Du etwa %bkalte%w Füße?", "Thank you #@#! But your item is in another castle!",
"La vengeance est un plat qui se mange&%bfroid%w!" }, "#FREEZE#! Don't move!",
"Wouldn't it be #ice# if we were colder?",
{ "Say hello to the %bZoras%w for me!", "Sag den %bZoras%w viele Grüße von mir!", "Greetings from #Snowhead#! Wish you were here",
"Dit bonjour aux %bZoras%w pour moi!" }, "Too #cool# for you?",
"#Ice#, #ice#, baby...",
{ "Can you keep a %bcool head%w?", "Bewahre einen %bkühlen%w! Kopf.", "Time to break the #ice#.",
"Il faut parfois savoir garder la tête&%bfroide%w!" }, "We wish that you would read this... We wish that you would read this... But we set our bar low.",
"#Freeze# and put your hands in the air!",
{ "Ganondorf used %bIce Trap%w!&It's super effective!", "#Ice# to meet you!",
"Ganondorf setzt %bEisstrahl%w ein.&Das ist sehr effektiv!", "Do you want to #freeze# a snowman?",
"Ganondorf utilise %bPiège de Glace%w!&C'est super efficace!" }, "Isn't there a #mansion# around here?",
"Now you know how #King Zora# feels",
{ "Allow me to break the %bice%w!", "Ein Lächeln ist der beste Weg,&um das %bEis%w zu brechen!", "May the #Frost# be with you.",
"Laisse moi briser la %bglace%w!" }, "Carpe diem. #Freeze# the day.",
"There #snow# place like home.",
{ "%bCold pun%w.", "%bEiskalt%w lässt du meine Seele&erfrier'n.", "That'll do, #ice#. That'll do.",
"Balance man...,&Cadence man...,&Trace la %bglace%w...,&c'est le Cooooolllll Rasta!" }, "All that is #cold# does not glitter, Not all those who wander are #frost#.",
"I Used To Be An Adventurer Like You. Then I Took An #Icetrap# To The Knee.",
{ "The %bTitanic%w would be scared of you,&@.", "Die %bTitanic%w hätte Angst vor Dir,&@.", "Would you like #ice# with that?",
"Le %bTitanic%w aurait peur de toi,&@." }, "You have obtained the #Ice# Medallion!",
"Quick, do a #Zora# impression!",
{ "Oh no!", "Oh nein!", "Oh non!" }, "One item #on the rocks#!",//would be better if it could display the name of the item
"How much does a polar bear weigh?&Enough to break the #ice#.",
{ "What killed the dinosaurs?&The %bICE%w age!", "Was die Dinosaurier getötet hat?&Die %bEiszeit%w!", "You got Din's #Ice#!",
"Qu'est-ce qui a tué les dinosaures?&L'ère %bglacière%w!" }, "You got Nayru's #Cold#!",
"You got Farore's #Freeze#!",
{ "Knock knock. Who's there? Ice. Ice&who? Ice see that you're a %bFOOL%w.", "KEKW",
"Nachts ist es %bkälter%w als draußen.", "You just got #ICE TRAPPED#! Tag your friends to totally #ICE TRAP# them!",
"L'imbécile réfléchit uniquement quand il&s'observe dans la %bglace%w." }, "Are you okay, @? You're being #cold# today.",
"In a moment, your game might experience some #freezing#.",
{ "Never gonna %bgive you up%w. Never&gonna %blet you down%w. Never gonna&run around and %bdesert you%w.", "Breeze? Trees? Squeeze? No, it's a #freeze#!",
"Never gonna %bgive you up%w. Never&gonna %blet you down%w. Never gonna&run around and %bdesert you%w.", "After collecting this item, @ was assaulted in #cold# blood.",
"Never gonna %bgive you up%w. Never&gonna %blet you down%w. Never gonna&run around and %bdesert you%w." }, "Only #chill# vibes around here!",
"Here's a #cool# gift for you!",
{ "Thank you %b@%w!&But your item is in another castle!", "Aha! You THOUGHT.",
"Danke %b@%w!&Aber der Gegenstand ist in&einem anderem Schloß!", "Stay hydrated and brush your teeth!",
"Merci %b@%w!&Mais ton objet est dans un autre&château!" }, "Isn't it too hot here? Let's turn the #AC# on.",
"One serving of #cold# @, coming right up!",
{ "%bFREEZE%w! Don't move!", " Kalt. Kalt. Kälter. %bEISKALT%w!", "Is it #cold# in here is that just me?",
"J'espère que ça ne te fait ni chaud, ni&%bfroid%w." }, "Yahaha! You found me!",
"You'd made a great #ice#-tronaut!",
"That's just the tip of the #iceberg#!",
"It's the triforce!&No, just kidding, it's an #ice trap#.",
"WINNER!",
"LOSER!",
"Greetings from #Cold Miser#!",
"Pardon me while I turn up the #AC#.",
"If you can't stand the #cold#, get out of the #freezer#.",
"Oh, goodie! #Frozen @# for the main course!",
"You have #freeze# power!",
"You obtained the #Ice Beam#! No wait, wrong game.",
"Here's to another lousy millenium!",
"You've activated my #trap card#!",
"I love #refrigerators#!",
"You expected an item,&BUT IT WAS I, AN #ICE TRAP#!",
"It's dangerous to go alone! Take #this#!",
"soh.exe has #stopped responding#.",
"Enough! My #Ice Trap# thaws in the morning!",
"Nobody expects the span-#ice# inquisition!",
"This is one #cool# item!",
"Say hello to my #little friend#!",
"We made you an offer you #can't refuse#.",
"Hyrule? More like #Hycool#!",
"Ice puns are #snow# problem!",
"This #ice# is #snow# joke!",
"There's no business like #snow# business!",
"no, dude",
"N#ice# trap ya got here!",
"Quick do your best impression of #Zoras Domain#!",
"Ganon used #ice beam#, it's super effective!",
"I was #frozen# today.",
"You're not in a #hurry#, right?",
"It's a #trap#!",
"At least it's not a VC crash and only Link is #frozen#!",
"Oh no! #BRAIN FREEZE#!",
"Looks like your game #froze#! Nope just you!",
"PK #FREEZE#!",
"May I interest you in some #iced# Tea?",
"Time for some Netflix and #chill#.",
"I know, I know... #FREEZE#!",
"#Ice# of you to drop by!",
"STOP!&You violated the #Thaw#!",
"I wanted to give you a treasure, but it looks like you got #cold feet#",
"You told me you wanted to deliver #just ice# to Ganondorf!",
"You got the triforce!&This ancient artifact of divine power can grant any- wait, no, sorry, it's just an ice trap. My bad",
"Time to #cool off#!",
"The #Ice Cavern# sends its regards.",
"Loading item, please #wait#...",
"Mash A+B to not #die#.",
"Sorry, your item is in another location.", //would be better if it could have the name of the item
"You only wish this was %gGreg%w.",
"Do you want to drink a hot chocolate?",
"The #cold# never bothered me anyway",
"Hope you're too school for #cool#!",
"Be thankful this isn't #absolute zero#.",
"Did you know the F in ZFG stands for #Freeze#?",
"You got #Ice Age (2002)#!",
"Now you can cast a #spell# you don't know",
"How's about a hero #on the rocks#?",
"Ain't no tunic for #this#!",
"I knew you were #part metroid#!",
"That's just the #icing on the cake#!",
"You're so #cool#, @!",
"You found #disappointment#!",
"You got #FOOLED#!",
"Start Mashing.",
"This item will #self-destruct# in 5 seconds...",
"Remember, there may be some momentary #discomfort#.",
"In a perfect world #ice traps# like me would not exist, but this is not a perfect world.",
"Gee, it sure is #cold# around here.",
"You tested the item with your #ice detector#, it beeped.", //would be better if it could have the name of the item
"You have found the way of the zero. The #sub-zero#.",
"Mweep... mweep... mweep...",
"Scum, #freezebag#! I mean #freeze#, scumbag!",
"Is it #chilly# in here or is it just #you#?",
"#Proceed#",
"WHAT'S SHE GONNA DO, MAKE ME AN #[Ice Cream]#!?",
"You've met with a #terrible fate#, haven't you?",
"So I heard you like the Shining, here's how it #ends#.",
"Minor routing mistake. #I win#.",
"Hold this #L#, @.",
"#SKILL ISSUE#",
"All you heat are belong to us",
"Wait a second, don't you already have #this item#?",
"#Freeze#! We have you surrounded!",
"Error 404 - Item not #found#.",
"Hydration break! Hey, who #froze# my water?",
"Oops, wrong #item model#.",
"Whoops! You have to put the item #in your inventory#.",
"You dropped the item, shattering it into #shards of ice#!", //would be better if it could have the name of the item
"Is this... golden age Simpsons?&BECAUSE I'M ABOUT TO #CHOKE A CHILD#.",
"You are the weakest @, #goodbye#!",
"Ugh... Why did we even randomize #this item#?",
"The #Frost Moon# is rising...",
"According to all known laws of physics and biology, there is no way that @ should be able to survive #getting fully encased in ice#. The cells in @'s body would all die by the time they #unthaw#. Of course, this is a video game, so @ survives anyway... #Probably#.",
"Okay, so stop me if you've heard this one - a gamer and a bottle of #liquid nitrogen# walk into a milk bar...",
"Lástima, es una #trampa de hielo#...&&Nobody expects the Spanish #ice trap#!",
"Gee, it sure is #BURR#ing around here.",
"Navi? Oh! I thought she was called #Névé#!",
"It's fine, @ knew this was a #trap#, they're just using it to take damage intentionally to manipulate RNG.",
"Unfortunately, the item has #stopped#.", //would be better if it could have the name of the item
"This item is #not available# in your country.", //would be better if it could have the name of the item
"#Ice# try. #;)#",
"D'oh, I #missed#!",
"Where is my #super suit#?",
"#Titanic's revenge#.",
}; };
CustomMessageManager* customMessageManager = CustomMessageManager::Instance;
customMessageManager->AddCustomMessageTable(Randomizer::IceTrapRandoMessageTableID); static const char* const germanIceTrapMessages[23] = {
for (u8 i = 0; i <= (NUM_ICE_TRAP_MESSAGES - 1); i++) { "Du bist ein #DUMMKOPF#!",
customMessageManager->CreateMessage(Randomizer::IceTrapRandoMessageTableID, i, "Du bist eine #Frostbeule#!",
IceTrapMessages[i]); "#DUMMKOPF#!",
"Du wurdest #eiskalt# erwischt!",
"Es läuft Dir #eiskalt# den Rücken hinunter, @.",
"Bleib #cool#, @.",
"Der #Winter# naht.",
"Alles #cool# im Pool?",
"#Abkühlung gefällig#?",
"Es ist ein %kalter%w Tag im Herzen von Hyrule.",
"Bekommst Du etwa #kalte# Füße?",
"Sag den #Zoras# viele Grüße von mir!",
"Bewahre einen #kühlen#! Kopf.",
"Ganondorf setzt #Eisstrahl# ein. Das ist sehr effektiv!",
"Ein Lächeln ist der beste Weg, um das #Eis# zu brechen!",
"#Eiskalt# lässt du meine Seele erfrier'n.",
"Die #Titanic# hätte Angst vor Dir, @.",
"Oh nein!",
"Was die Dinosaurier getötet hat?&Die #Eiszeit#!",
"Nachts ist es #kälter# als draußen.",
"Never gonna #give you up#. Never gonna #let you down#. Never gonna run around and #desert you#.",
"Danke #@#! Aber der Gegenstand ist in einem anderem Schloß!",
"Kalt. Kalt. Kälter. #EISKALT#!",
};
static const char* const frenchIceTrapMessages[23] = {
"#Pauvre fou#...",
"Tu es un #glaçon#, Harry!",
"#Sot# que tu es.",
"Ça me #glace# le sang!",
"#Reste au frais#, @.",
"Et c'est la douche #froide#!",
"L'#hiver# vient.",
"#Glacier#!",
"Ça en jette un #froid#.",
"Est-ce que tu as déjà eu des sueurs #froides#?",
"La vengeance est un plat qui se mange #froid#!",
"Dit bonjour aux #Zoras# pour moi!",
"Il faut parfois savoir garder la tête #froide#!",
"Ganondorf utilise #Piège de Glace#! C'est super efficace!",
"Laisse moi briser la #glace#!",
"Balance man..., Cadence man..., Trace la #glace#..., c'est le Cooooolllll Rasta!",
"Le #Titanic# aurait peur de toi, @.",
"Oh non!",
"Qu'est-ce qui a tué les dinosaures?&L'ère #glacière#!",
"L'imbécile réfléchit uniquement quand il s'observe dans la #glace#.",
"Never gonna #give you up#. Never gonna #let you down#. Never gonna run around and #desert you#.",
"Merci #@#! Mais ton objet est dans un autre château!",
"J'espère que ça ne te fait ni chaud, ni #froid#.",
};
CustomMessage msg;
if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) {
msg = CustomMessage(
/*english*/ "This year for Christmas, all you get is #COAL#!",
/*german*/ "This year for Christmas, all you get is #COAL#!",
/*french*/ "Pour Noël, cette année, tu n'auras que du #CHARBON#! %rJoyeux Noël%w!",
{ QM_BLUE }
);
} else {
msg = CustomMessage(
RandomElement(englishIceTrapMessages),
RandomElement(germanIceTrapMessages),
RandomElement(frenchIceTrapMessages),
{ QM_BLUE, QM_BLUE, QM_BLUE }
);
} }
// We only use this ice trap message for christmas, so we don't want it in the normal ice trap messages rotation msg.AutoFormat();
customMessageManager->CreateMessage( return msg;
Randomizer::IceTrapRandoMessageTableID, NUM_ICE_TRAP_MESSAGES + 1,
CustomMessage("This year for Christmas, all&you get is %BCOAL%w!",
"This year for Christmas, all&you get is %BCOAL%w!",
"Pour Noël, cette année, tu&n'auras que du %BCHARBON!&%rJoyeux Noël%w!"));
} }
static int goronIDs[9] = { 0x3052, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070 }; static int goronIDs[9] = { 0x3052, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070 };
@ -3290,7 +3455,6 @@ void Randomizer::CreateCustomMessages() {
CreateRupeeMessages(); CreateRupeeMessages();
CreateTriforcePieceMessages(); CreateTriforcePieceMessages();
CreateNaviRandoMessages(); CreateNaviRandoMessages();
CreateIceTrapRandoMessages();
CreateFireTempleGoronMessages(); CreateFireTempleGoronMessages();
} }

View File

@ -20,7 +20,6 @@
#define MAX_SEED_STRING_SIZE 1024 #define MAX_SEED_STRING_SIZE 1024
#define NUM_TRIFORCE_PIECE_MESSAGES 6 #define NUM_TRIFORCE_PIECE_MESSAGES 6
#define NUM_NAVI_MESSAGES 19 #define NUM_NAVI_MESSAGES 19
#define NUM_ICE_TRAP_MESSAGES 23
#define NUM_GORON_MESSAGES 9 #define NUM_GORON_MESSAGES 9
class Randomizer { class Randomizer {
@ -68,6 +67,7 @@ class Randomizer {
CustomMessage GetMapGetItemMessageWithHint(GetItemEntry itemEntry); CustomMessage GetMapGetItemMessageWithHint(GetItemEntry itemEntry);
static void CreateCustomMessages(); static void CreateCustomMessages();
static CustomMessage GetRupeeMessage(u16 rupeeTextId); static CustomMessage GetRupeeMessage(u16 rupeeTextId);
static CustomMessage GetIceTrapMessage();
static CustomMessage GetTriforcePieceMessage(); static CustomMessage GetTriforcePieceMessage();
bool CheckContainsVanillaItem(RandomizerCheck randoCheck); bool CheckContainsVanillaItem(RandomizerCheck randoCheck);
}; };

View File

@ -2519,11 +2519,7 @@ extern "C" int CustomMessage_RetrieveIfExists(PlayState* play) {
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);
if (textId == TEXT_RANDOMIZER_CUSTOM_ITEM) { if (textId == TEXT_RANDOMIZER_CUSTOM_ITEM) {
if (player->getItemEntry.getItemId == RG_ICE_TRAP) { if (player->getItemEntry.getItemId == RG_ICE_TRAP) {
u16 iceTrapTextId = Random(0, NUM_ICE_TRAP_MESSAGES); messageEntry = Randomizer::GetIceTrapMessage();
messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::IceTrapRandoMessageTableID, iceTrapTextId);
if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) {
messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::IceTrapRandoMessageTableID, NUM_ICE_TRAP_MESSAGES + 1);
}
} else if (player->getItemEntry.getItemId == RG_TRIFORCE_PIECE) { } else if (player->getItemEntry.getItemId == RG_TRIFORCE_PIECE) {
messageEntry = Randomizer::GetTriforcePieceMessage(); messageEntry = Randomizer::GetTriforcePieceMessage();
} else { } else {