Difference between revisions of "Modding:Mail data"

From Stardew Valley Wiki
Jump to navigation Jump to search
(create page)
 
(→‎Format: move example inline)
Line 167: Line 167:
  
 
==Format==
 
==Format==
The following sections use this example:
+
===Key===
 +
Each mail entry has a unique key which identifies the message (e.g. to track whether the player already received it). For example, <tt>Robin</tt> at the start of this entry is the mail key:
 
<source lang="json">
 
<source lang="json">
 
"Robin": "Hey there!^I had some extra wood lying around... I thought maybe you could use it. Take care!  ^  -Robin %item object 388 50 %%[#]A Gift From Robin"
 
"Robin": "Hey there!^I had some extra wood lying around... I thought maybe you could use it. Take care!  ^  -Robin %item object 388 50 %%[#]A Gift From Robin"
 
</source>
 
</source>
 
===Key===
 
Each mail entry has a unique key which identifies the message (e.g. to track whether the player already received it). For example, <tt>Robin</tt> at the start of the example line above is the mail key.
 
  
 
The key can be one of these formats:
 
The key can be one of these formats:

Revision as of 00:13, 24 March 2020

Index

This page explains how the game stores and parses mail data. This is an advanced guide for mod developers.

Raw data

Object data is stored in Content\Data\Mail.xnb, which can be unpacked for editing. Here's the raw data as of 1.4.5 for reference:

Data 
{
  "Robin": "Hey there!^I had some extra wood lying around... I thought maybe you could use it. Take care!  ^   -Robin %item object 388 50 %%[#]A Gift From Robin",
  "Demetrius": "Dear @,^I was conducting a field study the other day, and I found this specimen. ^I hope you find it as interesting as I did.    ^   -Demetrius%item object 392 1 394 1 132 1 66 1 %%[#]A Gift From Demetrius",
  "Linus": "Hello, friend.^The mountain lake has been kind to me lately. I'd like to share my good fortune with you.  ^   -Linus %item object 136 1 143 1 202 1 227 1 228 1 %%[#]A Gift From Linus",
  "Pierre": "Dear valued customer,^Thanks for visiting 'Pierre's'! Enclosed is your 'Cash-back Rewards Program' rebate. See you soon! ^   -Pierre^  P.S. Sorry for the stock message, @. Enjoy! %item money 250 601  %%[#]A Gift From Pierre",
  "Caroline": "Dear @,^Here's a vegetable from the little garden I keep out back. You probably have more veggies than you know what to do with, but oh well.   ^   -Caroline%item object 190 1 192 1 24 1 %%[#]A Gift From Caroline",
  "George": "Found some good quality stone. ^Maybe you can build with it or something.  ^   -George %item object 390 35 %%[#]A Gift From George",
  "Evelyn": "Hello there, dear,  I hope your farm is doing well.^ I'm sending you a little something from my kitchen... I hope it didn't crumble in the mail.  ^   -Evelyn  %item object 216 1 220 1 223 1 %%[#]A Gift From Evelyn",
  "Pam": "Hey. ^I found this in a drawer somewhere. Thought you could use it.   ^   -Pam %item object 346 1 349 1 787 1 %%[#]A Gift From Pam",
  "Lewis": "@,^I'm really glad you've become part of our community! I've enclosed a 500g check from the Stardew Valley Agricultural Fund to help you continue your good work. ^Maybe you can buy some more seeds with it.  ^  Sincerely, Mr. Lewis%item money 500 501 %%[#]A Gift From Lewis",
  "Gus": "@!^I made you a little treat this morning in the saloon. Dig in!   ^   -Your friend, Gus%item object 224 1 213 1 211 1 207 1 200 1 195 1 198 1 %%[#]A Gift From Gus",
  "Clint": "Um, Hello...     ^Sorry, I'm not good at writing letters. I made one metal bar too many, and I thought you might need it.  ^   -Clint, the blacksmith %item object 334 1 335 1 336 1 %%[#]A Gift From Clint",
  "Jodi": "Dear @,^I ordered too much fertilizer for the garden!! I bet you can put it to some good use. Take care!  ^   -Jodi %item object 368 5 369 5 370 5 %%[#]A Gift From Jodi",
  "Kent": "Hello, @.^This item was collecting dust in the toolshed. I figured you might be able to use it.  ^   -Kent%item object 286 1 287 1 288 1 787 1 %%[#]A Gift From Kent",
  "Emily": "Hi!^How are you doing? I hope you enjoy the gift I've sent you... Well, goodbye! +   ^   -Emily %item object 397 1 428 1 440 1 %%[#]A Gift From Emily",
  "Marnie": "Dear @,^You're such a good neighbor I thought I'd send over some animal feed to make your job easier. Keep it up! ^   -Marnie %item object 178 30 %%[#]A Gift From Marnie",
  "Shane": "Hey,^I thought it would be fun to send you a letter. I don't really know what to write, though.^ Here, I've enclosed a treat for you. Don't tell anyone, but I snagged this from the back room of JojaMart ages ago.^Okay, see you soon. ^   -Shane %item object 215 1 206 1 %%[#]A Gift From Shane",
  "Wizard": "Greetings, young adept.^I have enclosed in this package an item of arcane significance. Use it wisely.   ^   -M. Rasmodius, Wizard%item object 422 1 82 1 84 1 70 1 %%[#]A Gift From the Wizard",
  "Sandy": "Greetings from Calico Desert!^Come visit me soon, I'm really bored out here :(. I've included a gift from the desert. You can come and thank me in person!   ^   -Sandy %item object 88 1 90 1 218 1 %%[#]A Gift From Sandy",
  "afterSamShow": "@,^the show was a rockin' success! I wanted to say thanks again for all your help in creating this amazing band. We couldn't have done it without you!   ^   -Sam[#]Sam's Thank-you Note",
  "afterArtShow": "Dear @,^Thanks again for coming to my art show. It was such a success! I sold nearly all of my sculptures, and everyone was so positive and encouraging! I hope to see you again soon.  ^   -Leah[#]Leah's Thank-you Note",
  "haleyGarden": "@,^I thought it would be fun to write you a note.^ I had so much fun with the cows yesterday... I'm starting to understand why you chose the farmer's life! Hope to see you soon.  ^   -Haley[#]Haley's Note",
  "PennyCleanTrailer": "Sorry about what happened at my place yesterday... My mom can get into bad moods sometimes.^Please just forget it happened.  ^   -Penny[#]Penny's Apology",
  "Duck": "Dear @,^You've proven your ability to raise chickens, so I'm now selling ducks at my shop!       ^   -Marnie[#]Ducks For Sale!",
  "Rabbits": "Dear @,^I now have rabbits in the animal shop! They will provide you with fluffy wool ...and more!       ^   -Marnie[#]Rabbits For Sale!",
  "Sheep": "Dear @,^You've proven your ability to raise cows, so I'm now selling sheep at my shop!       ^   -Marnie[#]Sheep For Sale!",
  "Goats": "Dear @,^I now have goats available for purchase at the animal shop. You've done well so far!       ^   -Marnie[#]Goats For Sale!",
  "Pigs": "Dear @,^You've come a long way since you first arrived. As a result, I've decided to start selling pigs at my shop. These pigs are trained at finding gourmet truffles!       ^   -Marnie[#]Pigs For Sale!",
  "SeaAmulet": "@,^I'm going to give you this advice because I like you and I want you to stay in Pelican Town. If there comes a day that you want to ask for someone's hand in marriage, you'll need to give them a 'Mermaid's Pendant'. Don't worry, everyone in Pelican Town understands the significance of the amulet. It's an ancient tradition in this region. Good luck! ^   -Lewis[#]About Mermaid's Pendants",
  "Bouquet": "@,^It seems like you're starting to get close with some of the townspeople. If you want to show someone that you're romantically interested, you've got to give them one of my beautiful flower bouquets. I'm selling them now, for a very fair price! If you want to start a family someday, this is the first step! ^   -Pierre[#]About Bouquets",
  "RobinCooking": "Dear @,^here is an old recipe that my grandma passed down to me. Enjoy!   ^   -Robin%item cookingRecipe %%[#]Robin's Family Recipe",
  "DemetriusCooking": "I wanted to say 'thanks' for taking an interest in my work. Here's a cooking recipe that I like. ^   -Demetrius%item cookingRecipe %%[#]Demetrius' Recipe",
  "LinusCooking": "@,^how are you doing? I've enclosed some instructions on how to make one of my favorite fish recipes. ^   -Linus%item cookingRecipe %%[#]Linus' Recipe",
  "PierreCooking": "TOP SECRET:^Here's the recipe for my famous blueberry tart.^Don't tell anyone! I'm giving it to you because we are such good friends. ^   -Pierre%item cookingRecipe %%[#]Pierre's Famous Tart",
  "CarolineCooking": "Dear @,^nothing is more satisfying than cooking with fresh vegetables from your own garden! I've enclosed a recipe to help you out. Take care, ^   -Caroline%item cookingRecipe %%[#]Caroline's Recipe",
  "GeorgeCooking": "Figured I'd give you this recipe I had laying around. Try not to burn it. ^   -George%item cookingRecipe %%[#]George's Recipe",
  "EvelynCooking": "Dear @,^I usually don't give out my recipes... but since you've been such a sweetheart to George and I, I've written this one down for you. ^   -Evelyn%item cookingRecipe %%[#]Evelyn's Recipe",
  "PamCooking": "Hey Kid,^here's the recipe for a little treat my pappy used to make. Cook it slow. ^   -Pam%item cookingRecipe %%[#]Pam's Recipe",
  "LewisCooking": "@,^remember to eat healthy, or you won't have enough energy to work hard! I'm including one of my favorite recipes. Make sure to use ripe tomatoes! ^   -Lewis%item cookingRecipe %%[#]Lewis's Recipe",
  "GusCooking": "Dear @,^Here's a recipe from my saloon. I only share this with my good friends! ^   -Gus%item cookingRecipe %%[#]Gus's Recipe",
  "ClintCooking": "Well, I know a couple of recipes.^I thought I'd send you one... maybe it'll help you mine more ore or something.^Take care. ^   -Clint%item cookingRecipe %%[#]Clint's Recipe",
  "JodiCooking": "@,^this recipe of mine won 1st place in a cooking competition! I hope you like it. Thanks for being a friend! ^   -Jodi%item cookingRecipe %%[#]Jodi's Recipe",
  "KentCooking": "Picked up this recipe overseas. Enjoy.^Want to say thanks for making me feel welcome. ^^   -Kent%item cookingRecipe %%[#]Kent's Recipe",
  "EmilyCooking": "@!^Flip this letter over for instructions on how to make a super-healthy meal!^You'll feel energized. See you soon. ^   -Emily%item cookingRecipe %%[#]Emily's Healthy Recipe",
  "MarnieCooking": "Dear neighbor,^when I'm not taking care of animals I like to experiment in the kitchen. Since we've become friends I want to share some recipes with you.^I hope you like this! ^   -Marnie%item cookingRecipe %%[#]Marnie's Recipe",
  "ShaneCooking": "@,^I found this recipe in a magazine and I thought it sounded interesting. Feel free to give me a taste if you make it. hehe. ^   -Shane%item cookingRecipe %%[#]Shane's Recipe",
  "SandyCooking": "Dear @,^I was so bored out here in the desert that I wrote you a letter. There's a recipe for a delicious soup enclosed. Come visit me soon! ^   -Sandy%item cookingRecipe %%[#]Sandy's Recipe",
  "WillyCooking": "Dear @,^I'd like to share an ol' cooking recipe my pappy used to make. It's important the fish is FRESH.  ^   -Willy%item cookingRecipe %%[#]Willy's Ol' Recipe",
  "mom1": "Dear @,^  How are you doing, sweety? I've missed you so much since you left. I hope the farming life is everything you hoped for. ^   Love, Mom.   ^   P.S. I sent your favorite cookies < %item object 223 1 %%[#]From Mom",
  "mom2": "\n        Dear @,^  It's been so long since I heard from you, dear. Things are the same as ever back home. I miss you very much. ^  Love, Mom ^ P.S. Found an envelope with some money Grandpa left for you. %item money 500 501 %%[#]From Mom #2",
  "mom3": "Dear @,^  I saw an article about you in the local paper! It sounds like the country life is a good fit for you! I'm so proud of you. Take care, sweety. Love, Mom[#]From Mom #3",
  "mom4": "Dear @,^ How are things going? You must really be making a fortune on that farm. Don't forget your dear old mother when you're a millionaire! ^  Love, Mom   ^   P.S. Enjoy the cake!%item object 221 1 %%[#]From Mom #4",
  "dad1": "Dear @,^  Have you settled into your new life yet? I can't believe you're all grown up now... Time sure flies. Now that you're gone I have all this extra money laying around, so I included a little gift.^  Love, Dad.%item money 500 501 %%[#]From Dad",
  "dad2": "Dear @,^  How is the country life going for you? It's been lonely here without you, but I'm proud of what you're doing.^  Love, Dad  ^  P.S. Found an envelope with some money Grandpa left for you. %item money 500 501 %%[#]From Dad #2",
  "dad3": "Dear @,^  I read an article about you in the local paper! I'm so impressed with your progress on the farm! Keep this up and dear old Dad might be retiring in a fern islands luxury bungalow after all ;).^  Love, Dad[#]From Dad #3",
  "dad4": "Dear @,^ I know you're busy on the farm and that's why you can't visit. I understand. You've been working so hard... keep it up and you can accomplish anything! ^ Love, Dad  ^  P.S. Included some quality stone %item object 390 30 %%[#]From Dad #4",
  "newsstory": "Greetings, @.^It is our pleasure to inform you that your farm will be featured in next week's 'up & coming' column of the Stardew Valley Tribune! Congratulations. We're impressed with your quick progress. ^   -SVT[#]News Story",
  "pierreBackpack": "ADVERTISEMENT:^\"I keep finding cool stuff, but my backpack is full!\"^^Does this sound like you? Well, Pierre's got you covered!^^Stop by Pierre's General Store TODAY and check out our affordable size 24 backpack!^ See you soon![#]Backpacks From Pierre's",
  "pierreHours": "ADVERTISEMENT:^^Pierre's General Store is now open 7 days a week![#]Pierre's Extended Hours",
  "robinKitchenLetter": "Dear Farmer @,^^I'd like to apologize for joking about your Grandpa's old cottage when we first met. It's really a nice little house!^^However, you might need some more space someday. That's where I can help. If you bring me some raw materials and pay a fee, I can expand your house.^(Continued on next page)^^The first expansion I offer includes a kitchen. With a kitchen, you'll be able to cook any recipes you've learned!^^Anyway, I hope you're starting to feel at home in Stardew Valley!^^    Your local carpenter,^        Robin[#]Robin's Services",
  "taxPassed": "Dear @,^the shipping tax passed. As of today, a 3% tax will be deducted from all your shipping profits. The reduced fee for public services is also in effect. See you soon! ^   -Mayor[#]Tax Approved",
  "taxRejected": "Dear @,^the shipping tax was rejected. Your shipping profits will remain as they are. Fees for public services will remain the same as well. See you soon. ^   -Mayor[#]Tax Rejected",
  "quest10": "@,^I've heard you've been giving some people a hand around town! Everyone seems really thankful. I'm awarding you this month's \"Best Neighbor\" award (with a small cash prize). Keep it up! ^   -Mayor%item money 500 501 %%[#]Best Neighbor",
  "quest35": "Dear @,^you've been such a help around town since you moved here... everyone keeps telling me all the wonderful things you've done for them! Please accept this thank-you prize. ^   -Mayor%item money 2500 2501 %%[#]Thank-you From Lewis",
  "quest100": "@,^I am pleased to announce that you've been chosen as \"Neighbor of the year\"! That comes with a 10,000g prize! Congratulations! Everyone in town wants to say 'thanks' for all you've done. ^   -Mayor%item money 10000 10001 %%[#]Neighbor Of The Year",
  "hero_update": "@,^it's time for the quarterly Stardew Hero rankings! I've enclosed them in a separate envelope. Good luck this season!  ^   -The Mayor[#]Stardew Hero Rankings",
  "hero_update1": "%update",
  "CF_Fish": "Dear @,^ Your angling skills surpass even my ol' Pappy's... I'm impressed. ^ This stardrop's been passed down from Willy Sr. to Willy Jr. for... oh, heck. Prob'ly a thousand years.^Seein' as I don't have any kids... I want you to have it.^^ -Willy   ^  %item object 434 1 %%[#]Willy's Family Heirloom",
  "adoptionLetter": "Dear @ and spouse,^Congratulations! Your adoption application has been approved.^We're working hard to choose the perfect baby to match your profile.^Your new family member will arrive in 2 weeks.^^-Ferngill Adoption Agency[#]Adoption Notice",
  "stardewHeroMine": "Secret Message: If you can reach the bottom of the mines one more time, a secret awaits you. Be careful, the mines have become more dangerous.[#]Secret Message",
  "fertilizers": "Dear neighbor,^I hope you are feeling settled in your new home. I am writing to let you know that Pierre's store is now selling fertilizers! Why don't you swing by and see if you can afford a few dozen boxes or so?  ^   -Pierre[#]Pierre's Fertilizers",
  "fertilizers2": "Dear @,^I am now selling higher quality fertilizers, as well as new crop selections! See you soon. ^   -Pierre[#]Pierre's High Quality Fertilizers",
  "abbySpiritBoard": "Hi @.^One of these days you should come to my room after dark... Maybe around 8pm. ^I want to show you something. ^   -Abby[#]Abby's Note",
  "pennySpa": "Meet me in the bath house after dark. ^   -Penny[#]Penny's Note",
  "incubator": "Dear @,^^Thank you for purchasing a coop upgrade! In addition to doubling the capacity of your coop, I've taken the liberty of installing an incubator. ^To use the incubator, simply place an egg inside. If you have space left in your coop, the egg will hatch in several days!^^As always, thanks for your business.^-Robin[#]About The Incubator",
  "hatter": "Hi.^^Me sell hats. Okay, poke?^^Come to old old old haus, poke. Bring coines.^^-hat mouse[#]Hiyo, Poke",
  "Beat_PK": "Congratulations!!^^You beat 'Journey Of The Prairie King', and were randomly selected in our exclusive winner's sweepstakes! ^You've won a Prairie King Arcade System of your very own!^Now you can enjoy 'Journey Of The Prairie King' from the comfort of your own home.^^You deserve it!^-Prairie King Development Team %item bigobject 141 %%[#]P.K. Congratulations!",
  "JunimoKart": "Congratulations!!^^You beat all the levels in 'JunimoKart'... you're actually the first person in the entire Ferngill Republic to do so!^Your prize: a home version of Junimo Kart!^^Have fun!^-Junimo Kart Development Team %item bigobject 159 %%[#]Junimo Kart Success!",
  "elliottReading": "@,^I have great news... my novel is finished!! I'm giving a public reading this afternoon at the library. Hope to see you there! ^   -Elliott[#]Elliott's Reading",
  "elliottBoat": "Meet me at the docks on a sunny morning. I've got something in mind. ^   -Elliott[#]Elliott's Note",
  "harveyBalloon": "@,^I have a surprise for you. Meet me by the railroad tracks. ^   -Harvey[#]Harvey's Surprise",
  "samMessage": "@,^meet me in front of my house tonight after dark. ^   -Sam[#]Sam's Note",
  "joshMessage": "@,^meet me at the saloon tonight after dark. ^   -Alex[#]Alex' Invitation",
  "lewisStatue": "@,^^In the future, I'd appreciate it very much if you refrained from placing my PRIVATE belongings in town for all to see!^^I'm very displeased!^^Take this money and never speak of my 'project' to anyone.%item money 750 751 %%[#]Lewis' Angry Letter",
  "marnieAutoGrabber": "@,^I've got a new item in stock... It's called the \"Auto-Grabber\".^^This thing can milk your cows and goats, shear your sheep, gather eggs, and pluck your wooly rabbits... all on its own!^^It's considered a 'luxury item', so I'm charging 25,000g.^^    -Marnie[#]Auto-Grabber Notice",
  "EmilyClothingTherapy": "@,^I have this crazy new idea that I want to involve you in... It's called \"Clothing Therapy\".^^Please come to the Mayor's house today to see what it's all about.^^ Love, Emily[#]Emily's Idea",
  "EmilyCamping": "@,^Let's go camping! ^^ Meet me in the secret woods after 10pm.^^ Love, Emily[#]Emily's Invitation",
  "EmilyDoneCamping": "Thanks for joining me last night... I had a great time.^I'm actually glad that bear showed up!^^See you soon^^  Love, Emily[#]Emily's Note",
  "foundLostTools": "Dear @,^Someone dropped your tools into the lost and found bin last night.^^I came in and set them next to your bed.^Hope I didn't wake you... ^^  -Mayor Lewis[#]Lost Tools",
  "fishing2": "I've got some new items in stock...^A deluxe fishing pole and some bait that you can attach to it!^You can use bait to make fish bite faster. Hope to see you soon! ^   -Willy[#]Willy's New Items",
  "fishing6": "Come by the shop and check out the new rods I'm selling.^They're the best money can buy... and you can customize them with different kinds of tackle!^Hope to see you soon! ^   -Willy[#]Willy's New Items #2",
  "wizardJunimoNote": "My sources tell me you've been poking around inside the old community center.^Why don't you pay me a visit?^My chambers are west of the forest lake, in the stone tower. I may have information concerning your... 'rat problem'.^   -M. Rasmodius, Wizard %item quest 1 true %%[#]Wizard's Summons",
  "winter_18": "Dear @,^I would like to give you some information about an upcoming event: the Feast of the Winter Star. It's a time for the community to come together and think back on all the good fortune we've had this year.^A favorite tradition is the \"secret gift exchange\", where everyone in town is randomly assigned to someone else. On the day of the festival, everyone brings a gift for their secret friend and surprise them with something special!^This year, your secret friend is:^    %secretsanta ^Don't tell anyone! The feast will take place on the 25th from 10AM to 2PM at the town square. See you then! ^   -Mayor Lewis[#]Secret Gift-Giver",
  "ccBulletinThankYou": "Dear @,^Everyone around town has been talking about your great generosity lately!^Apparently, packages have been appearing in people's houses containing items they posted about years ago on the community center bulletin! And the packages are all addressed from your farm!^Thanks for going out of your way to do something like that... all of us in town are delighted! ^   -Mayor Lewis[#]Bulletin Board Thank-you",
  "guildQuest": "I see you've been exploring the old mine. You've got the adventurer's spirit, that much I can tell.^If you can slay 10 slimes, you'll have earned your place in my adventurer's guild. ^Be careful.    -Marlon %item quest 15 true %%[#]Quest To Slay Slimes",
  "skullCave": "I see you've entered the Skull Cavern. Well done.^I've got a better challenge for you, kid. Make it at least 25 levels deep. I've got a mountain of $ to send if you can do it.^  Your friend, Mr. Qi %item quest 20 %%[#]Qi's Challenge",
  "robinWell": "Robin here!^I know there's a lot of stone scattered around your farm.^If you have a surplus, you might consider having me build a well for you.^Wells can be placed all over your farm, and serve as convenient places to refill your watering can.^^Just swing by my shop with 75 stones and 1000g when you're ready for it.^-Robin[#]Build A Well",
  "landslideDone": "To our valued JojaMart customers:^Our team members have removed the landslide caused by our drilling operation near the mountain lake. I'd like to remind you that our drilling operation is entirely legal (pursuant to init. L61091, JojaCo Amendment). Responsible stewardship of the local environment is our top priority! ^^We apologize for any inconvenience this accident may have caused.^As always, we value your continued support and patronage!^^-Morris,^Joja Customer Satisfaction Representative[#]Joja Removed Landslide",
  "QiChallengeComplete": "You did it.^ I'm very impressed.^ Enjoy your reward.^   -Qi. %item money 10000 %%[#]Qi Challenge Complete",
  "spring_2_1": "Hello there,^Just got back from a fishing trip. You should come down to the beach some time.^I've got something for ya.^-Willy %item quest 13 true %%[#]Willy's Invitation",
  "spring_12": "Dear @,^Tomorrow we're holding the Egg Festival in the town square. ^^You should arrive between 9 AM and 2 PM if you'd like to attend.^You wouldn't want to miss the annual egg hunt!^  -Mayor Lewis[#]Egg Festival Notice",
  "spring_15_1": "Hello, dear...^^I know you're just getting started as a gardener, so I wanted to give you a little tip.^^Most crops only grow in one season. When summer arrives, your spring crops will all die out. So plan ahead!^^-Granny Evelyn[#]Evelyn's Tip",
  "spring_23": "Dear @,^Tomorrow we're all getting together for the Flower Dance.^^If you can find a partner, you might even want to participate in the dance yourself!^There's a little clearing beyond the forest west of town where we hold the dance. Arrive between 9 AM and 2 PM if you're interested.^  -Mayor Lewis[#]Flower Dance Notice",
  "summer_10": "Dear @,^Tomorrow we're all gathering at the beach for the annual Pelican Town Luau.^^The highlight of the event is the communal potluck. Make sure you bring something good to contribute!^The governor himself is attending the event, so make sure you're on your best behavior.^Come to the beach sometime between 9 AM and 2 PM.^   -Mayor Lewis[#]Luau Notice",
  "summer_28": "Dear @,^Tonight at around 10 o'clock PM, a rare and beautiful event will take place.^^The moonlight jellies will be passing by Pelican Town on their long journey south for the winter.^^We're all gathering at the beach to watch. You don't want to miss this!^See you tonight,^ -Demetrius[#]Dance Of The Moonlight Jellies",
  "fall_9": "Dear @,^One week from today, we are holding the Stardew Valley Fair in the town square!^It's the biggest event of the year, drawing people from all across the country to our humble town.^If you'd like, you can set up a grange display for the event. Just bring up to 9 items that best showcase your talents. You'll be judged on the quality and diversity of your display.^The fair starts at 9 AM... don't miss it!^   -Mayor Lewis[#]Stardew Valley Fair Notice",
  "fall_15": "Dear @,^I just want to remind you that the Stardew Valley Fair is happening tomorrow.^Don't forget to bring your 9 items for the grange display.^Remember, the fair starts at 9AM in the town square. See you there!^   -Mayor Lewis[#]Stardew Valley Fair Reminder",
  "fall_26": "Dear @,^Notice a chill in the air? It could just be the approach of winter...^Or it could be the tingle of a dark specter, here to help us celebrate tomorrow's festival... the Spirit's Eve.^Come to town at 10 PM if you'd like to participate.^  -Mayor Lewis[#]Spirit's Eve Notice",
  "winter_7": "Dear @,^Tomorrow we're all gathering in front of Marnie's house for the Festival of Ice.^^It's a celebration of winter... there'll be snowmen, ice sculptures, and an ice fishing competition!^Arrive between 9 AM and 2 PM if you'd like to participate.^  -Mayor Lewis[#]Festival Of Ice Notice",
  "winter_14": "Starting tomorrow, a traveling merchant fleet will dock at Pelican Town for the yearly night market.^^The market starts at 5pm, and will be in port for the next three days.^^Please visit the beach after 5pm to join the festivities. There's free coffee![#]Night Market Notice",
  "spring_11_1": "MISSING:^I lost my favorite Axe! If you find it, please return ASAP. I'm having a tough time without it. There's 250g in it for whoever finds the thing.^   -Robin%item quest 100 %%[#]Robin Lost Her Axe",
  "spring_19_1": "Farmer @-^I have a request for you. I need fresh cauliflower for a recipe I want to make. Could you bring me one?^   -Jodi%item quest 101 %%[#]Jodi Asks For Cauliflower",
  "summer_3_1": "@-^This is embarrassing... I lost my lucky purple shorts. I'm telling you because I think I can trust you.^If you find them, bring them back to me DISCREETLY. I'll pay well.^Thanks.^   -Mayor Lewis%item quest 102 %%[#]Lewis Asks For A Favor",
  "summer_14_1": "Hey Kid,^My throat's about as dry as a desert bone. I'm real thirsty for a pale ale. You got one? Regular old beer won't do. I need a pale ale.^   -Pam%item quest 103 %%[#]Pam's Request",
  "summer_20_1": "@-^I'm gathering data on the correlation between soil alkalinity and crop fructose levels. Long story short, I need a fresh melon from your farm. If you brought me one I'd be very grateful.^   -Demetrius%item quest 104 %%[#]Demetrius Asks For A Sample",
  "summer_25_1": "To Farmer @:^My knee's acting up again, and you know what helps? ^Rubbing the darn thing with hot pepper.^ Trouble is, my supply's run dry. If you've got one to spare I'd be much obliged.^   -George %item quest 105 %%[#]George Needs A Pepper",
  "fall_3_1": "Dear @,^I'd like to give my cows a special treat. They're such good girls and hungry, too. Could you bring me one bunch of amaranth? They love the stuff. ^Thanks, Dear.^   -Marnie %item quest 106 %%[#]Marnie's Request",
  "fall_8_1": "Hello,^It's blackberry season right now. The bushes are full of them. I want to pick some, but I lost my basket. Can you help?^   -Linus%item quest 107 %%[#]Linus Lost His Basket",
  "fall_19_1": "@-^I'd like to buy a pumpkin from you. My daughter and I want to carve a jack-o-lantern for the upcoming Spirit's Eve festival. ^   -Caroline%item quest 108 %%[#]Caroline's Request",
  "winter_2_1": "Hey, I've got a little challenge for you:^    Catch me a squid.^You can fish them from the ocean at night. They only show up in the winter, though.^   -Willy%item quest 109 %%[#]Willy's Challenge",
  "winter_6_1": "I've got an unusual request. Could you keep this a secret?^ I want you to deliver an amethyst to Emily. It's her favorite stone. Tell her it's from me.^   -Clint %item quest 110 %%[#]Clint's Unusual Request",
  "winter_12_1": "@-^I am researching the forgotten art of shadow divination. I require an item known as 'Void Essence'. Bring it to me and you will be rewarded.^ -M. Rasmodius, Wizard %item quest 111 %%[#]Wizard's Request",
  "winter_17_1": "@,^Sorry to bother you again, but I need another favor.^I got a new hammer and I want to try it on a variety of metals.^Could you smelt an iron bar and bring it to me? ^Thanks.^ -Clint %item quest 112 %%[#]Clint's Request",
  "winter_21_1": "@-^How are you doing? Hope the winter hasn't been too hard on you.^Anyway, I'm writing to ask you for some hardwood. I need about ten pieces, if you've got it.^If not, no worries. Take Care!^  -Robin%item quest 113 %%[#]Robin's Request",
  "winter_26_1": "Dear @-^I want to make fish stew, but I need an albacore! I know they're almost out of season... sorry about the short notice. Could you catch one for me?^   -Gus%item quest 114 %%[#]Gus Needs A Certain Fish",
  "spring_1_2": "Notice:^^The price of raw materials at Robin's shop and Clint's shop has increased.[#]Raw Material Price Notice",
  "spring_6_2": "@-^I'm really craving a fresh apricot. I haven't been able to find one at the store, so I'm asking you. I'll pay you well for it!^   -Emily%item quest 115 %%[#]Emily's Request",
  "spring_15_2": "Dear @,^I'd like to surprise my husband with a gift. He's a big fan of leeks. Could you bring me one?^   -Granny Evelyn%item quest 116 %%[#]Evelyn's Surprise",
  "spring_21_2": "NOTICE^Pierre here... I really, really want a plate of sashimi. I'll pay top coin to whoever brings me some.^   -Pierre%item quest 117 %%[#]Pierre's Craving",
  "summer_6_2": "Fisherman Wanted^I need a good pufferfish specimen. I'm conducting an experiment on the toxin created by the pufferfish.^Reward: 1000g^ -Demetrius%item quest 118 %%[#]Demetrius' Study On Toxins",
  "summer_15_2": "Dear Farmer @,^I'd like to give my wife a starfruit for our anniversary. Are you growing any on your farm? If you brought me one, I'd be very grateful.^   -Kent%item quest 119 %%[#]Kent Needs A Gift",
  "summer_21_2": "@,^I need truffle oil. Don't ask me why.^ -Mayor Lewis%item quest 120 %%[#]Lewis' Request",
  "fall_6_2": "Wanted: 1 Fresh Lobster for a marvelous bisque I'm creating.^Who: Gus, proprietor of the Stardrop Saloon^Reward: 800g %item quest 121 %%[#]Gus Needs Lobster",
  "fall_19_2": "NOTICE^Does anybody have one of them battery packs? My TV remote died, and it's a real hassle getting off the couch to change the station.^  -Pam%item quest 122 %%[#]Pam Needs Help",
  "winter_5_2": "@,^I'm creating an enchanted staff of phenomenal power.^However, I'm missing something: an Iridium Bar.^I'm willing to pay 5x the market value for it. Bring it as soon as you can.^ -M. Rasmodius, Wizard %item quest 123 %%[#]Wizard Needs A Rare Item",
  "winter_13_2": "I've got another challenge for you: Catch me a Lingcod.^They don't go down easy, but I know you can do it.^  -Willy%item quest 124 %%[#]Willy's Challenge #2",
  "winter_19_2": "Dear @,^I'm at my wit's end. I desperately want to make a Coco-no-no at the saloon, but I have no way of getting a coconut!^Can you help me?^  -Gus%item quest 125 %%[#]Gus Needs A Coconut",
  "winter_24": "Dear @,^Tomorrow is the Feast of the Winter Star.^Did you get a gift for your 'secret friend'... %secretsanta?^The feast starts at 9 AM in the town square. See you then! ^   -Mayor Lewis[#]Feast Of The Winter Star Reminder",
  "passedOut1_Billed_Male": "Dear Mr. @,^Last night, a Joja team member found you incapacitated. A medical team was dispatched to bring you home safely.^We're glad you're okay!^^(You've been billed {0}g for this service)^^-Morris^Joja Customer Satisfaction Representative[#]Joja Invoice",
  "passedOut1_Billed_Female": "Dear Ms. @,^Last night, a Joja team member found you incapacitated. A medical team was dispatched to bring you home safely.^We're glad you're okay!^^(You've been billed {0}g for this service)^^-Morris^Joja Customer Satisfaction Representative[#]Joja Invoice",
  "passedOut1_NotBilled_Male": "Dear Mr. @,^Last night, a Joja team member found you incapacitated. A medical team was dispatched to bring you home safely.^We're glad you're okay!^^Since you have no money, we were obligated by law to provide this service free of charge.^^-Morris^Joja Customer Satisfaction Representative[#]Legally Required Notice",
  "passedOut1_NotBilled_Female": "Dear Ms. @,^Last night, a Joja team member found you incapacitated. A medical team was dispatched to bring you home safely.^We're glad you're okay!^^Since you have no money, we were obligated by law to provide this service free of charge.^^-Morris^Joja Customer Satisfaction Representative[#]Legally Required Notice",
  "passedOut2": "@, ^You're lucky I found you last night! You were unconscious, and someone was searching your pockets. I have no idea how much money they took... they ran away as soon as I approached. Be more careful!^^-Linus[#]Note From Linus",
  "passedOut3_Billed": "@,^Someone dropped you off at the clinic last night. You'd passed out from exhaustion!^You've got to take better care of yourself and go to bed at a reasonable hour.^I've billed you {0}g to cover your medical expenses.^^-Dr. Harvey[#]From The Office Of Dr. Harvey",
  "passedOut3_NotBilled": "@,^Someone dropped you off at the clinic last night. You'd passed out from exhaustion!^You've got to take better care of yourself and go to bed at a reasonable hour.^Since you have no money, I provided your medical care free of charge.^^-Dr. Harvey[#]Harvey's Free Medical Service",
  "passedOut4": "@, ^^Found you face-down in the mud during my 3:00 AM sweep.^^You should try to make it home a little earlier next time!^^     -Marlon[#]Note From Marlon",
  "elliottLetter1": "@, my love,^^I've just arrived in Grampleton, to start the tour. I've forgotten how hectic the city is! The streets are packed with people... they either seem in a mad hurry, or lost in a daze, unaware of their surroundings. I miss Pelican Town already!^^I begin the tour this evening, at a local bookstore. I must admit, I'm becoming a bit nervous at the thought of public speaking... my stomach feels as if it's been twisted into a soft pretzel and doused with spicy cheese dip. Wish me luck!^^-Love, Elliott^^P.S. I hope you had a peaceful night, and weren't too scared all alone in that big house! %item conversationTopic ElliottGone2 0 %%[#]Letter From My Husband",
  "elliottLetter2": "My dear @,^^The first reading went well, though the audience was a bit smaller than I'd hoped. Still, I sold enough copies of the book to pay for my (bug-infested) hotel room!^^In a few hours, I leave for Zuzu City. If yesterday's reading was a warm-up, this next one will be a true napalm blast...^^I miss you very much. Remember to eat well! Oh, and don't forget the leftover crab cakes I put in the fridge...^-Love, Elliott %item conversationTopic ElliottGone3 0 %%[#]Letter From My Husband 2",
  "elliottLetter3": "My sweet @,^^Last night in Zuzu City was quite the experience! It seems there's a large literary scene here... a few dozen people showed up at my reading!^^I even signed a couple of autographs... it's strange to be seen as someone important. It's all a matter of framing, a grand illusion... for truly I am no one special. Only your devoted Elliott, as always.^^Currently I'm alone, in my hotel room, 'ingesting' a Joja Value Meal...^^Should this be called 'food'?^Or 'edible matter'?^I needn't long brood^It must be the latter^^I look forward to returning home soon. Hope you enjoyed the crab cakes.^^-Love, Elliott %item conversationTopic ElliottGone4 0 %%[#]Letter From My Husband 3",
  "elliottLetter4": "In dreams, when graced with lofty view^I gaze upon the sunlit sea^What distant shores I've travelled to^But time now clouds my memory^^There is but one eternal place^Where I shall someday pass beyond^In Valley dear, where my love waits:^Our little home beside the pond^^-Elliott %item conversationTopic ElliottGone5 0 %%[#]Letter From My Husband 4",
  "elliottLetter5": "My dear @,^^I won't bore you with any more details about my readings. They are mostly the same.^^I'm sure your time has been much more exciting! I can't wait to return and see what progress has been made.^^On these long travels between towns, I amuse myself by closing my eyes and envisioning the farm... I see kegs pulsing with sweet wine, a furnace ablaze with precious ore, and our little kitchen with the smell of cinnamon and nutmeg. There's a lot to enjoy!^^Just don't stay out too late in the mines, my love. It's dangerous in there! If you must go... bring plenty of food.^^-Love, Elliott %item conversationTopic ElliottGone6 0 %%[#]Letter From My Husband 5",
  "elliottLetter6": "My dear @,^^This will be my last letter before I return home. I've had a fine trip... though nothing too exciting. It's been nice to meet people who enjoy my work, but I'm eager to return home.^^I look forward to the comfort of our little house, the satisfying farm work, a home-cooked meal, and most of all, cozying into the flannel sheets with you.^^See you soon!^-Love, Elliott %item conversationTopic ElliottGone7 0 %%[#]Letter From My Husband 6",
  "MarlonRecovery": "@,^Found your lost item.^^Be more careful next time!^   -Marlon%item itemRecovery %%[#]Marlon Found Your Item",
  "RarecrowSociety": "Dear @,^^Your dedication is truly impressive...^^Only a select few manage to acquire the complete Rarecrow collection!^^Please accept this blueprint to commemorate your achievement.^   -The Z.C. Rarecrow Society%item craftingRecipe Deluxe_Scarecrow %%[#]From The Rarecrow Society",
  "CarolineTea": "Dear @,^^Thanks for stopping by my sunroom yesterday. I usually drink tea alone, but it was fun to share with you!^^I've enclosed instructions on how to prepare and grow your own tea. No pressure, but if you do end up growing some, make sure to bring me a cup!^^-Caroline%item craftingRecipe Tea_Sapling %%[#]Caroline's Tea Note",
  "WoodChipper": "Hey @,^^Just wanted to let you know about a new item I'm carrying... it's called a 'Wood Chipper'.^^You can use it to break hardwood into several pieces of regular wood!^^I know wood can be hard to come by in the winter, so if your supply gets low, consider picking one up.^       -Robin[#]Wood Chipper Notice"
}

Format

Key

Each mail entry has a unique key which identifies the message (e.g. to track whether the player already received it). For example, Robin at the start of this entry is the mail key:

"Robin": "Hey there!^I had some extra wood lying around... I thought maybe you could use it. Take care!  ^   -Robin %item object 388 50 %%[#]A Gift From Robin"

The key can be one of these formats:

syntax description
<season>_<day of month>_<year> Sent on the given date.
Example: spring_15_3 applies on spring 15 in year 3.
<season>_<day of month> Sent on the given date in any year. This is ignored if mail was sent for the previous format.
Example: spring_15 applies on spring 15.
arbitrary key Anything else is just a unique letter ID, which can be sent in code or via an event script.

Value

The value for each letter entry has this format: <letter text>[#]<letter name>.

The <letter name> field is just a unique human-readable name for the letter, shown in the mail collections tab.

The <letter text> field is the text to show when the player opens the letter. This recognizes some special tokens:

token description
@ Replaced with the player name.
Example: Hello @!
¦ Switches between gendered versions of the letter. Male players see the text before ¦, and others see the text after it. Only the first instance is recognized. If the text doesn't contain it, all players see the same version.
%item object [<id> <count>]+ %% Attach a random item from the listed space-delimited item IDs and counts. For example, %item object 388 50 %% attaches 50 wood; %item object 388 50 390 10 %% attaches either 50 wood, or 10 stone. See Modding:Object data for a list of item IDs.
%item bigobject [<id>]+ %% Attach a random big craftable from the listed space-delimited IDs. For example, %item bigobject 144 163 %% attaches either a stone brazier or cask. See Modding:Big craftable data for a list of item IDs.
%item money <amount> %%
%item money <min> <max> %%
Attach the given amount of money, or a random amount between an inclusive <min> and exclusive <max> value. In either case, the value is rounded down to the nearest 10 (e.g. 156→150).
%item tools [<type>]+ %% Attach one or more base-quality tools. The valid types are Axe, Hoe, Can (watering can), Pickaxe, and Scythe. Invalid types are ignored. For example, %item tools Axe Scythe %% attaches both an axe and scythe.
%item conversationTopic <key> <days> %% Start an active dialogue event for the given number of days.
%item cookingRecipe %% Teach the player the cooking recipe whose requirement field starts with f <npc name>, where <npc name> is the mail key with 'Cooking' removed. For example, if the mail key is RobinCooking, this command would find a cooking recipe with a requirement starting with f Robin that the player doesn't already know.
%item craftingRecipe <key> %% Teach the player the crafting recipe with the given ID.
%item itemRecovery <key> %% Attach the item that the player asked Marlon to find in the mines, if any.
%item quest <quest ID> Attach the given quest ID to the letter, so the player can choose to accept it.
%item quest <quest ID> true Attach the given quest ID to the letter and add it automatically. (If the player has the NOQUEST_<quest id> mail flag set, it won't be added automatically.)
%secretsanta Replaced with a random town NPC name if the date is winter 18–25 inclusively, else replaced with ???.

Mail flags

Overview

The game tracks mail flags for each player. This is used for two purposes:

  • Tracking received letters. The key for each letter in Data\Mail is a mail flag; if the player has the flag for a letter, the game considers it to be received.
  • Tracking non-mail changes in the world. For example, artifactFound means the player has found at least one artifact, jojaMember means the player has a Joja membership, etc. These have no letter associated with them.

Mail flags are tracked in three main fields:

field description
Game1.player.mailForTomorrow Letters to add to the player's mailbox at the start of the next day.
Game1.player.mailbox Letters currently in the player's mailbox.
Game1.player.mailReceived All mail flags set for the player. That includes both letters and non-mail flags.

You need to check all three fields to know if a letter was sent or mail flag set, but the game provides a Game1.hasOrWillReceiveMail(string id) method for convenience.

List

There are far too many flags to list, but here are some useful non-mail flags:

flag meaning
artifactFound The player has found at least one artifact.
Beat_PK The player has beaten the Prairie King arcade game.
beenToWoods The player has entered the Secret Woods at least once.
canReadJunimoText The player can read the language of Junimos (i.e. the plaques in the Community Center).
ccIsComplete The player has completed the Community Center. Note that this isn't set reliably; if using Content Patcher, use the IsCommunityCenterComplete and IsJojaMartComplete tokens instead. See also flags for specific sections: ccBoilerRoom, ccBulletin, ccCraftsRoom, ccFishTank, ccPantry, and ccVault. The equivalent section flags for the Joja warehouse are jojaBoilerRoom, jojaCraftsRoom, jojaFishTank, jojaPantry, and jojaVault.
doorUnlockAbigail The player has unlocked access to Abigail's room. See also flags for other NPCs: doorUnlockAlex, doorUnlockCaroline, doorUnlockEmily, doorUnlockHaley, doorUnlockHarvey, doorUnlockJas, doorUnlockJodi, doorUnlockMarnie, doorUnlockMaru, doorUnlockPenny, doorUnlockPierre, doorUnlockRobin, doorUnlockSam, doorUnlockSebastian, doorUnlockVincent.
galaxySword The player has acquired the Galaxy Sword.
geodeFound The player has found at least one geode.
guildMember The player is a member of the Adventurer's Guild.
jojaMember The player bought a JojaMart membership.
JunimoKart The player has beaten the Junimo Kart arcade game.
landslideDone The landside blocking access to the mines has been cleared.
museumComplete The player has completed the Museum artifact collection.
openedSewer The player has unlocked the sewers.
qiChallengeComplete The player completed the Qi's Challenge quest by reaching level 25 in the Skull Cavern.