Stardew Valley Modding Guide By Alpha_Omegasis Updated 3/7/16 *Note posted on 3/7/16 Welp there have been some big changes going around the modding forums lately. As a result this guide will eventually change to match the current reflection. Stay tuned for that. Also decided that I’ll finish up the .XNB documentation before moving on to the Storm API documentation/help section of this guide.
Disclaimer (Because this is super important) 1. I do not own the rights to Stardew Valley, those belong to Eric Barone, aka Concerned Ape which includes all game content, resources, etc. In no way/shape/form am I affiliated with Concerned Ape. 2. I do own a copy of Stardew Valley on Steam. 3. This modding guide is what I consider 100% unofficial. Concerned Ape has stated that he would like to add modding support in the future, and until then, this is to start up the modding community. 4. This guide was made with the purpose in mind as an entertaining side project and as a way to develop the modding community for Stardew Valley.
Credits (Because I could never have done this alone) Concerned Ape! For making Stardew Valley! Without him, there would be no amazing game! ChuckleFishFor publishing Stardew Valley! These guys helped to get the word out about Stardew Valley. Stardew form member cantorsdust (For organizing the thread that brought you here. Without him, our work would be scattered across the net probably.) Stardew form member Draivin (for making the all supercritical xnb_node.cmd application. Without it, none of the modding you see below would have been possible) Stardew form member Zoryn (for making the Stardew Valley API, which will be crucial in days to come) Modder Drogean from the SV forums for making the modding section on editing music/sounds! Modder SgtPineapple1stFor figuring out how to add new crops to the game, and making a great guide! All of you readers! Without you all, there would be no modding community and no interest in Stardew Valley. You all are just as important in this process as anybody else!
Change Log (So that way you can see what I’ve done) https://docs.google.com/document/d/1hIofusLwfHx8ALaIMN QE2KAqv7JED5zUIqT49m4c9E/edit?usp=sharing
Current Progress: In case you were wondering on all the things that need to be worked on, I compiled a list of what seems to be all of the editable files and my progress working with them. I’ll update this as I go along. The first goal is to complete the Data section. Hopefully life won’t be too busy and I’ll have this tackled within the month. https://docs.google.com/spreadsheets/d/1yJZ83E3zHmR5u_GP YzY_DZEQB55qArLoXkmnW4xrIoE/edit?usp=sharing
Questions and Feedback If you find anything off with the guide, or just have some general questions/things you discover post it here and I’ll be able to update the guide with lots more useful information. Trust me it’ll help everyone. Credit will go to you of course if anything is added in that you discovered/wrote up. http://community.playstarbound.com/threads/moddingguidefee dbackhelpthread.107390/
Final Notes: This guide is pretty incomplete, and is constantly being updated due to the fact that Stardew Valley just came out. I have also been made aware that there is currently a modding API in development. First this guide will cover basic .xnb file editing and how to do it, and once the modding API is further along, I’ll go through and make another guide that works through just how to use the API and make mods with that. Until then though, this modding guide will be continued to be updated incase you just want to edit the content files themselves. Happy Farming. Alpha_Omegasis
Table of Contents (This will be shuffled once I fix the ordering/format. It’s pretty crude right now). I.0XNB “Modding” .I Getting Started .II Photo Editing .III Editing NPC Dialogue .IV Weapons .V Crops .V.i Adding Crops .VI Fishing .VII Music/Sound Editing (Shoutout to Drogean on SV forums) .VIII Fruit Trees .VIV Bundles
I.0 XNB Modding ======================= A Not so Brief Note Hey there, welcome to the modding guide, it’s probably pretty important that you read this so listen up really quick. This modding guide started development DAY 1 from when Stardew Valley launched. Back then we (mostly me) believed that most if not all of the game’s content could be edited via .XNB files. We stand corrected today. Now we have many great modding api’s/tools that help us achieve a truer, much more indepth form of modding today which helps us create a much larger amount of content. As it stands .XNB modding IS NOT A GOOD WAY TO MAKE MODS FOR PUBLIC RELEASES. Don’t get me wrong, I’ve seen plenty of good .XNB mods out there that are great in content. Heck I’ve even made a few myself. The problem with .XNB modding is that people can only use your mod and not any other mods along with it of the same type. That means that I can only have one .XNB mod that edits fish at a time. The other issue is that is Concerned Ape makes an update that changes how fishing works, ALL MODS that edit fishing some way are now broken. That’s bad news for mod
developers and for players as every update runs the risk of breaking the fun for us. Now .XNB modding is a good method to simply get your feet wet. You can get a lot of inspiration from it and maybe even make something cool for personal use or for your friends, but making it a feasible mod to last the ages is probably not going to happen unless you want to maintain constant upkeep on it. I still recommend reading this section of the guide, as the amount of content here is still quite a bit just to get an idea of what you can mod, and then translate your desire into a more viable source of modding. When the time comes I’ll expand upon the guide on how to take the steps from .XNB modding, to actually writing actual programs that people can use alongside other mods. Even if you aren’t good with programing or have no clue how it works, we will go through some basic steps to get you to understand the basics of how things work. Until then, keep the .XNB’s coming. I’ll finish up all of the documentation on this part, and await the release of Storm Api, which will help further the Stardew Valley Modding Community. Until then, keep modding Alpha Omegasis.
.I Getting Started Hey there and welcome to a simple tutorial on modding Stardew Valley. As I have time I will update this with more findings on all sorts of things but for now let’s get you “Settled In” 1. First you will need to have Stardew Valley on your computer. You can buy this from multiple sources such as GOG, Humble Bundle, and Steam. 2. Locate your Stardew Valley “Content” folder as this is where all of our game files are stored. This depends on where you install yours, but mine is located in C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley 3. Download XnbNode by Dravin and extract the contents. You can find it on this thread here: http://community.playstarbound.com/threads/moddingprogress sofar.106868/ 3.1 Make sure you have .7zip installed in order to extract the contents! 3.2 It’s heavily recommended you have a text editing program such as notepad++ at this point in order to be able to edit your converted files
4. Open up a command prompt window. You can do this by shift+right clicking in the folder and selecting “Open Command Prompt Here” from the drop down menu. 5. From here it’s a matter of extracting and packaging your files. When having the command prompt open, type out any valid command as shown in the Examples and Usage fields directly below. You’ll want to make sure that the files/folders you wish to extract are in the same directory as xnb_node.cmd. Note: It is good practice to always copy files out of the Stardew/Content directory and store them in a separate folder and edit the files there. Make sure you also keep a backup of the original files incase something goes wrong as well. If something does go wrong, simply reinstall Stardew Valley. Taken directly from the forum post at http://community.playstarbound.com/threads/moddingprogress sofar.106868/ Usage: xnb_node.cmd
Commands: extract extract XNB file or all files in directory pack pack XNB file or all files in directory Options: h, help output usage information V, version output the version number Examples: xnb_node.cmd extract Content ExtContent xnb_node.cmd pack ExtContent Repacked
xnb_node.cmd extract Content/Characters/Abigail.xnb Abigail.yaml
6.Now that you have extracted your file .xnb file into a .png or .xml file editing will differ from here! Those guides will be written down below. 7. If you need to recompile your .xml file to a .xnb file when finished just type xnb_node.cmd pack filename.xml filename.xnb 8. Replace the .xnb file with the old file and run Stardew Valley! !!!Note, I have recently discovered that if you plan to use the SVAPI along with editing the .xnb files that all files will need to be placed in Stardew Valley\StardewModdingAPI\bin\Debug\Content instead of Stardew Valley\Content. for the changes to take effect. If you wish to edit .xnb files without using SVAPI at the same time then simply replace the corresponding files you edit in Stardew Valley\Content.
.II Photo Editing 1. Editing a .png file is as simple as opening it up with any sort of photo editing program (I use/recommend Paint.Net) and editing it however you please. Make sure you extracted the desired .png file using xnb_node running the command xnb_node.cmd extract my_picture.xnb my_picture.png
Where my_picture is actually the name of the file you want to extract. 2. Replace the old .xnb file with the new .xnb file. 3. Load up Stardew Valley and see the changes happen! Results:
.III Editing NPC Dialogue 1. Locate Stardew Valley\Content\Characters\Dialogue 2. Convert desired .xnb files using the methods described in the “Getting Started” section of this guide. a. Make sure that you convert the file to a .yaml file format. As example the command you would run would to convert Abigail’s dialogue would be (assuming xnb_node.cmd is in the same directory as . xnb_node.cmd extract the Dialogue) i. xnb_node.cmd extract Abigail.xnb Abigail.yaml 3.Now open up yoru desired dialogue file with any sort of text editor (such as NotePad++). Here you will see a bunch of value tokens and strings looking something like this. "Tue": "Ugh... I'm not in a good mood right now.$s#$e#I said I'm not in a good mood... what do you want?$a", The first thing in “quote” marks is what is called the Key value. This basically tells the game if this condition is true follow up by saying the string after it which in our case it is. “Key”: “Thing to say”. Notice how there are the symbols $s#$e# ? These are the symbols that separate the dialogue that is spoken each time you talk to the character and what emotion portrait will be displayed. In this case the $s symbol will display Abigail's “sad” portrait, and $e will break up the dialogues between the number of time
you talk to a character. The # between each pair of symbols tells the code to expect multiple pairs of symbols so this is crucial. So the first time you speak to Abigail on Tuesday would be "Ugh... I'm not in a good mood right now.” and the second time she would comment would be “ I said I'm not in a good mood... what do you want?” Now if we want to edit this, we can simply replace what she says with whatever else we want to put. As an example, I edited Penny’s dialogue file and replaced it with this message. "Wed": "Stardew Valley is now Moddable. Go have fun. Alpha_Omegasis.#$e#Every child deserves a chance to be successful.#$e#Jas is very good at math and reading. Vincent is good at... well, he has an active imagination!", the result?
4. Once you are done editing the dialogue to your heart’s content, simply save, recompile the .yaml file using
xnb_node.cmd as stated in the “Getting Started” section of this tutorial. 5.Replace the new .xnb file and load up Stardew Valley to see the changes! ============================================== Dialogue .yaml documentation. Format: “Key Value” : “Speech String”, Key Value: This here is the value that is checked to see if the string of dialogue following will be read. Speech String: This is what the NPC will actually say depending on the Key Value. Noted Key Values: Mon, Tues, Wed, Thurs, Fri, Sat , Sun. spring, summer, fall, winter event_ //further research needed 2, 4, 6, 8, 10 Examples: spring_Fri4 This key value will trigger during the spring time, on a friday, if the NPC’s affection value is at least at a value of 4. Mon This dialogue will trigger on a monday. Sat6 Dialogue will trigger on a Saturday if affection level is at least 6.
NOTE:Unless a piece of event dialogue is created, a date seems to always be necessary as a Key Value for triggers to be set. Further testing will be necessary. String Modifiers: ********************************* Dialouge_Notes/Documentation Extended Edited on 3/3/16 12:35 A.M. Tested with Penny's Dialogue. #$e# //end a section of dialogue, and allows a section to follow it. If no #$e# is stated after a string of dialogue, the character will not say anything else that day. $s //shows the sad character portrait $l // shows the blushing/love portrait $h // shows the happy portrait $b //shows the bashful/shy portrait. (Or at least that's what it looks like to me.) $a //shows the angry portrait
$010 //shows the character portrait at the corresponding location on the sheet. The order is sequential where the first row first picture is 0,first row second picture is 1, second row first picture is 2, etc. $q //Asks a question following the $q symbol. See example below. $r //seems to be a flag for the game to check that this is a dialogue option after the $q is asked. Also see the example below. $p //no noticeable change that I could discover $u //no noticeable change that I could discover $d //checks if a certain condition is set such as bus/cc(community center)/joja are true/ | //seems to be an or operation that checks a game variable that is checked by $d. This is probably coupled with events. @ //states the player's name. ^ // seems to only be accessible when used as part of an event's dialogue.
%fork //only used in events to state the dialogue after a decision must be made I believe. cc# //seems to check if the community center is built/restored bus# //seems to check if the bus has been put back into operation Examples how $q and $r work ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *sigh*... My mother definitely has a problem with going to the saloon too much.$s#$q 7/8 Mon_old#But it's best not to dwell on bad things, right?#$r 7 50 Mon_7#Right. It's best to be positive!#$r 8 10 Mon_8#I think it's good to be realistic." #!String *sigh*... My mother definitely has a problem with going to the saloon too much.$s#$q //This is the dialogue that comes before the question branch. 7/8 Mon_old#But it's best not to dwell on bad things, right?#$r //this is the part that is the question string and initiates dialogue options
7 50 Mon_7#Right. It's best to be positive!#$r //option 1. Calls the dialogue associated with Mon_7 //Also seems to add a bonus of 50 affection points with the NPC. 8 10 Mon_8#I think it's good to be realistic." #!String //option 2. Calls the dialogue associated with Mon_8. //Also seems to add a bonus of 10 affection points with the NPC/. Mon_7: "That's how I feel. I'm just going to focus on making the future better." #!String //associated dialogue for answer 1 Mon_8: "Maybe you're right. It's better to cope with reality.$u" #!String
//associated dialogue for answer 1
End Dialouge_Notes/Documentation Extended **************************************************** ************************************** Example “Key Value” : “Hi, welcome to the valley!”#String! //This will display a single dialogue box with the said text. “Key Value” : “Hey how is your farm going? #$e# If you need any help just let me know.”#!String NOTE: After every line of dialogue #!String must be added so that the entire .yaml file can be interpreted by the game properly. END Dialogue .yaml documentation. ==============================================
.IV Weapons Alright, time to get down to business. You are going to need to defend yourself in the mines after all and the only way to do that is to get you a new weapon. Let’s begin. 1.Locate Stardew Valley\Content\Data\weapons.xnb 2.Convert desired .xnb file using the methods described in the “Getting Started” section of this guide. b. Make sure that you convert the file to a .yaml file format. i.
xnb_node.cmd extract weapons.xnb weapons.yaml
3.Now open up your weapons file with any sort of text editor (such as NotePad++). You are going to see a bunch of text in the content field. An example of what you would see would be. "0": "Rusty Sword/A rusty, dull old sword./2/5/1/0/0/0/3/1/1/0/.02/3",
This is the format of how weapons work all values are “list_id”:“Item_Name/Item_Description/min_damage/max_dam age/knockback/speed/add_Precision/add_Defense/weapon_type/ added_area_of_effect/???/???/crit_chance/crit_multiplier” So, let’s edit some values!
changing "12": "Wooden Blade/ Not bad for a crafted sword./3/7/1/0/0/0/3/1/1/0/.02/3",
to "12": "Super Wooden Sword/A fantastic blade./10/17/1/0/0/0/0/3/1/0/.02/3",
4.Save the .yaml file 5.Recompile using xna_node.cmd 6. replace the old weapons.xnb file with the new weapons.xnb file Results?
Success!
============================================== Weapons .yaml Documentation Format: “list_id”:“Item_Name/Item_Description/min_damage/max_dam age/knockback/speed/add_Precision/add_Defense/weapon_type/ added_area_of_effect/???/???/crit_chance/crit_multiplier” Components: “list_id”This is the id_number of the list in weapons.yaml Item_Name The item’s in game name Item_DescriptionThe item’s in game description min_damage The minimum damage the weapon deals max_damageThe maximum damage the weapon deals knockback How much you knockback a foe. speed The speed added to swinging? Higher =faster? add_PrecisionUnknown effect as it stands. Needs more testing. add_Defense Add defense while weapon equipped. weapon_type The type of weapon it is. Not sure what this does. 0.Stabbing/Jabbing Sword/Rapier 1. Daggers. 2. Clubs 3. Slashing Sword added_area_of_effect ??? ???This parameter was not known/has unknown effects. ???This parameter was not known/has unknown effects.
crit_chance This is the chance to crit. Ex. 0.2 = 20% chance to crit?//needs more testing crit_multiplierthe amount of damage the attack is (multiplied/added) by is critical hit occurs. NOTE: I have tested that every game object has a unique existence in the world.An example would be buying a basic sword and modding it’s source code in the weapons.yaml file. This has no effect on the weapon if it is in the inventory since inventory items are bound to the character data. Instead any new instances of the item are created as new game objects. They can be removed via the trash can in the inventory though. an example would be trying to mod the “rusty sword” item. We can’t change the data of it if it is already in our inventory/chest, but say we had the opportunity to get a new “rusty sword”. If we modded the rusty sword and tried obtaining a new “rusty sword” we would received our modified sword instead! END Weapons .yaml Documentation ==============================================
V. Crops Alright, we’ve finally come to the point where you need some cash, and you are willing to get down and dirty. In that case let’s learn how crops work! 1.Locate Stardew Valley\Content\Data\crops.xnb 2.Convert desired .xnb file using the methods described in the “Getting Started” section of this guide. c. Make sure that you convert the file to a .yaml file format. i.
xnb_node.cmd extract crops.xnb crops.yaml
3.Now open up your weapons file with any sort of text editor (such as NotePad++). 4. Now looking crops.yaml you should see something like this. "475": "1 1 1 2 1/spring/3/192/1/0/true 1 2 8 .2/false/false", Looks like an absolute mess, but don’t worry, under closer inspection we find that the format here is. “Seed_index Number”: “Days till next phase (this is repeated as the values are 1, 1, 1, 2, 1)/Season(s) to grow in/index # in sprite sheet/index_of_harvest_object/regrow_days/harvest method/additional harvest values/min harvest/max harvest/max harvest increase per farming level/chance for extra crops/raised_seeds/random colors”
WOW that was something right? The number of parameters can get to be quite lengthy, but fear not, let’s test some stuff out. changing "475": "1 1 1 2 1/spring/3/192/1/0/true 1 2 8 .2/false/false", to "475": "1 1 1 2 1/spring/3/300/1/0/true 1 2 8 .2/false/false", Now time to test!
It’s kind of hard to tell from the data, but it seems like Potato seeds are the item I edited if I did my coding correctly.
Yup, I guessed correctly. Guess that finishes up the crops section of the guide. Now we can edit crops in tons of ways. Maybe we could even make plants that give us ore as a mod. ============================================== Crops.yaml Documentation “Seed_index Number”This is the seed number that the crop will map to. It seems 475 is potato seeds. “Days till next phase (this is repeated as the values are 1, 1, 1, 2, 1)Days until the next visible stage in the growth cycle is shown. Season(s) to grow in This is the list of seasons that the crop will survive in. Separate season names to have it grow in multiple seasons.
index # in sprite sheet the visual location in the sprite sheet. Thanks to SgtPineapple1st from SV forums for catching this. I provided his picture for reference!
index_of_harvest_objectthis is the game object that you will receive when your crop is ready to be harvested.
regrow_days a 1 value means the crop can’t regrow. Anything higher such as a 3 allows for the crop to regrow. //Needs testing to see if numerical value is associated with days to maturity or the stage it resets to harvest methodhow you harvest the crop. 0=hands/normal 1=with scythe additional harvest valuesif true min_harvest, max_harvest, max harvest increase per farming level, and chance for extra crops are valid variables for the crop. Set to “false” to ignore these parameters. min harvestthe minimum number of items to receive when harvesting. Default is 1 if additional_harvest_values=false max harvestthe maximum number of items to receive when harvesting. Default is 1 if additional_harvest_values=false max harvest increase per farming levelthe higher your farming level this is affected. // Needs more testing chance for extra crops the %*100 chance of getting more crops from the harvest. raised_seeds needs crop stands to grow?
random colors true/false. If this value=true any set of 3 values after it will allow the game to make a different color variation of the crop. Ex 123 242 185 152 85 99 will add two sets of random colors for the game to show for the crop. END Crops.yaml documentation ==============================================
.V.i Adding Crops Big thanks to SgtPineapple1st from the SV forums for figuring this out! His post is here, incase you were looking for it, but just incase I’ll post it in the guide as well. http://community.playstarbound.com/threads/moddingguidefee dbackhelpthread.107390/ Ok... are you ready? Here we go... Adding Crops A quick note that the Rice crop I added simply outputs the rice that's already in the game. I will be working today on adding a custom rice for harvest, and eventually there will be a machine to process this into the cooking rice. I will add images of my code later today as well. I'm pretty bad at explaining steps and stuff in text... 1.
There are 4 xnb files that you will need to extract. Under content\data extract both crops.xnb and objectinformation.xnb. Now go to content\tilesheets and extract springobjects.xnb and crops.xnb, but be sure to output it as something other than crops.yaml so that you don't get it confused with the crop data. I saved mine as cropTile.yaml. 2. On the Crops sprite sheet you will need to add your new crop. Each crop gets exactly 128px wide and 32px high. This area is divided into 8 spaces for each crop phase. The number of slots you use depends on how many phases your crop grows through. When you open the sprite sheet add 32px to the bottom. The crops are counted left to right. You can begin adding your crop sprites. 3. On the sptingobjects sprite sheet each object gets a 16x16 area. Add 16px to the height. If your seed packet corresponds to ID 792, you will want to make this sprite in left most column. Your harvest crop will be right next to it with an ID of 793.
4.
5.
Now you'll need to open up your ObjectInformation.yaml. Scroll yourself all the way to the bottom. Note how the IDs end at 790. Add a new line ID'ed 792 (Edit: 791 corresponds to the black missingtexture sprite so avoid it). I'd suggest copying the text from another crop seed (for mine I copied blackberry), and then edit it from there. (I will edit this post later to add the code layout) Make sure that this item is not named after your crop. This item will be your Crop's Seed. DO NOT FORGET TO ADD #!String. IF YOU DO NOT, IT WILL NOT REPACK objectinformation.xnb. Below is the code for my rice. To add your crop's harvested output, repeat these steps under a new ID (preferably the very next ID number) The Info layout is as follows: 6. Code: 7. ID#: "Item Name/Sell Price/Item Type (each item type has a corresponding number. I noticed seeds are usually
‐74. If you use a different number, you will be unable to plant the seeds)/Item Description" #!String
Now let's move to the crop.yaml for the crop data. Scroll to the bottom and add your crop. The ID will be the same as the one you added in ObjectInformation.yaml. The index number, if you did your sprite sheet correctly, will be 40 (if you add another crop, it's index will be 41). You will also need to add the ID of the output crop for example my rice crop output ID is the ID for Rice. Here is my (terribly made placeholder) rice crop phases on the sprite sheet with the corresponding crops.yaml (not the cropTile.yaml) code on the right
10. You will not need to touch the cropTile.yaml. Now repack all the yaml files and replace the content files. I'd highly suggest making backup copies of the vanilla xnb files. If you get any errors, let me know. I encountered a few that resulted from coding mistakes (like not adding #!String). I DID IT REDDIT! I... DID... IT! AND THIS IS WHAT YOU'LL SEE IN GAME! HOLY MOTHER I AM SO
EXCITED I DID THIS! (I've never modded a game before in my life)
Edit: If I get the chance to stream later today, I will stream my modding endeavors in Stardew Valley. If not today, then tomorrow. I will be streaming my modding endeavors in a few hours on twitch if anyone has questions, comments, or suggestions. SgtPineapple1st on twitch
.VI Fishing Many people have been talking about the fishing minigame and all of the difficulty associated with that. It’s time to change that, and you can edit it any way you desire. Time to get down to some fishy business. 1.Locate Stardew Valley\Content\Data\Fish.xnb 2.Convert desired .xnb file using the methods described in the “Getting Started” section of this guide. d. Make sure that you convert the file to a .yaml file format. i.
xnb_node.cmd extract fish.xnb fish.yaml
3.Now open up your weapons file with any sort of text editor (such as NotePad++). You are going to see a bunch of text in the content field. An example of what you would see would be. "129": "Anchovy/30/dart/1/16/600 2600/spring fall/both/682 .2/1/.25/.3/0",
Now the format for this data here is. “Key_Id” : “FishName/chance to dart/darting randomness/darting intensity/darting_duration/start time to find/end time to find/season(s) to find in/weather to find in/turn_frequency/turnSpeed/turnIntensity/minSpeed/maxSpeed. /speed change frequency/bobber difficulty Let’s edit some things, shall we?
Changing "142": "Carp/15/mixed/15/50/600 2600/spring summer fall/both/682 .2/1/.45/.1/0", "136": "Largemouth Bass/50/mixed/11/30/600 1900/spring summer fall winter/both/685 .35/3/.4/.2/0", "700": "Bullhead/46/smooth/12/30/600 2600/spring summer fall winter/both/681 .25/2/.35/.2/0", "702": "Chub/35/dart/12/24/600 2600/spring summer fall winter/both/684 .35/1/.45/.1/0",
To "142": "Carp/1/smooth/1/5/600 2600/spring summer fall/both/682 .1/1/.25/.1/0", "136": "Largemouth Bass/5/smooth/1/3/600 1900/spring summer fall winter/both/685 .20/1/.2/.1/0", "702": "Chub/3/smooth/1/2/600 2600/spring summer fall winter/both/684 .15/1/.25/.1/0", "700": "Bullhead/4/smooth/1/3/600 2600/spring summer fall winter/both/681 .15/1/.25/.1/0",
From what I can tell, editing the first four parameters after the fish’s name makes the fishing minigame much harder or much easier. As an example, I divided all of the values by 10 if possible, and changed the style of it’s dart pattern to smooth incase it does dart. This made it where the fish stay at the bottom of the meter the majority of the time. *Note that these fish can be found in the lake in the mountain in the spring. I will host my fish.xnb for the time being so that you can see the effect for itself.
Just insert the fish.xnb I provide into StardewValley/Content/Data and overwrite the old fish.xnb. !!! Make sure to backup your fish.xnb. Fish.xnb: https://drive.google.com/file/d/0Bz7ucDCzAILeTdmVDJJbG5r VHM/view?usp=sharing Fully Edited Mod: Easy Fishing (Makes all fish easy to catch) https://drive.google.com/folderview?id=0Bz7ucDCzAILX0pISj lMRkdCTzQ&usp=sharing Proof of concept: https://youtu.be/VmwG1zNzTi0 *Sorry about the awkward video position. My video software is kinda glitchy and I’m looking into some different types right now. ============================================== Fish.yaml documentation. “Key_Id”This is the object id_number of the fish. It’s believed that you can’t change this right now since it directly references the fishing object. However further testing might reveal otherwise.
FishNameThis didn’t actually change anything when I edited it. I believe this was more so knowing what fish was being fished corresponding to the Key_Id chance to dartThis is the chance that the fish will dart, aka move quickly. Higher numbers mean higher chance. darting randomnessThese seem to be name values for how the fish will dart. Smooth seems to be no darting whatsoever, while dart will rapidly change. Sinker and Float seem to dart in their respective direction and Mixed seems to be more random. darting intensityHow sharply the fish darts. darting_durationHow long the fish darts/sprints. Higher values=more time while darting. start time to find=This is a the time when you can start finding the fish. 600=6A.M game time. end time to findThe end time where the fish stops being found after words. 2600 is 2A.M. the next morning. Or as example 1400 is 2P.M game time so having this value at 1400 means the fish can’t be found after 2P.M.
season(s) to find in. The different seasons the fish can be found in. Multiple can be added so that the fish can be found in multiple seasons. having /spring summer fall winter/ means that the fish should be able to be found year round. weather to find inThe weather that the fish can be caught in. are all possible values. Only one of them though! turn_frequencyHow often the fish goes the other direction. (Don’t know why this value is soo high though) turnSpeedHow fast this fish changes speed when turning/changing directions. turnIntensityHow sharply the fish turns. minSpeedThe minimum amount of speed the fish’s speed changes when its speed changes. maxSpeedThe maximum amount of speed the fish’s speed changes when its speed changes. speed change frequencyHow frequent the fish’s speed changes.
bobber difficultyHow rare it is to find the fish. Higher values here mean that it is harder to find the fish. (In my experience making this value 100 made it impossible to find fish). !NOTE changing all of these numeric values to 0 caused the game to crash for me when I tried to fish. It is recommended to not change the values to 0 to avoid crashing, but feel free to experiment away! !!Note#2Changing the fish name here didn’t change the name of the fish itself. I will test further to see if it is possible to change the Key_ID values to fish different items. End Fishing Documentation ==============================================
.VII Music/Sound Editing Huge shoutout to Drogean from the Stardew Valley Forums for this one. I’ve also included some of the mods that he made as well. Ambient Music With Rain Mod
I have created a mod to fix the issue where rainy days had zero music. The rain was actually the music track. I created a modded file that adds music a rain track (rainy mood). It also loops so you hear it all day. Audio Preview Vanilla Rain Modded Rain
Installation 1. Make a copy of \Stardew Valley\Content\XACT\Wave Bank.xwb as a backup. 2. Extract to the same folder. 3. Play Download Here
SOUND\MUSIC MODDING GUIDE
Also here's a quick and dirty guide to sound/music modding, its similar to terraria . I have created a tools pack for easy install. Download my sound extracting tools pack here Download Direct X software Kit and ONLY install the Utilities portion to get XACT 1. Extract WaveBankExtractPack.zip somewhere. 2. Copy Stardew Valley\Content\XACT\Wave Bank.xwb to the folder you extracted the files to. 3. Run "Extract Wave Bank.bat" and it should extract all the files to the "NEW" folder, while automatically encoding them to a file format XACT can use.
4. At this point, you can change any of the .wav files using audacity or importing your own and converting to 16bit wav file audio. You can experiment with the bitrate and other settings. 5. Once your files are replaced/modified, its time to compile. With XACT already installed, open NEW\NEW.xap and it should already open the project ready to go. 6. All you need to do to compile is go to File > Build. The compiled sound package will be in the the New\Win folder, named "Wave bank.xwb" 6. Copy it back to the Stardew Valley\Content\XACT (making sure to back up your old copy first) and start the game. If the main menu music sounds right, everything should be working
.VII Fruit Trees Alright, it’s time to expand on the number of things that you can grow on your farm. Time to introduce fruit tree modding, so that your trees can give you a multitude of different things. Sounds peachy yea? (sorry for that awful joke.) Let’s begin. 1.Locate Stardew Valley\Content\Data\fruitTrees.xnb 2.Convert desired .xnb file using the methods described in the “Getting Started” section of this guide. e. Make sure that you convert the file to a .yaml file format. i.
xnb_node.cmd extract fruitTrees.xnb fruitTrees.yaml
3.Now open up your weapons file with any sort of text editor (such as NotePad++). You are going to see a bunch of text in the content field. An example of what you would see would be. 628: "0/spring/638/1700" Now the format for this is Item_ID :“Fruit_tree_list_index/season_to_harvest_fruit/object_id_to_get/???”
Let’s do some testing.
Changing 628: "0/spring/638/1700" #!String 629: "1/spring/634/1000" #!String 630: "2/summer/635/2000" #!String 631: "3/summer/636/3000" #!String 632: "4/fall/637/3000" #!String 633: "5/fall/613/2000" #!String
To 628: "0/spring/398/1700" #!String 629: "1/spring/398/1000" #!String 630: "2/summer/398/2000" #!String 631: "3/summer/398/3000" #!String 632: "4/fall/398/3000" #!String 633: "5/fall/398/2000" #!String //this should give me a grape if I do this right.
Now let’s test it out….
SUCCESS! I now have a tree that will grow me grapes! Looks like using this method, you could have trees that give you virtually anything in the game! Pretty cool if you ask me. ============================================== fruitTree Documentation Item_IDThis is the game_object id for the sapling that you are trying to plant. This can be found in Content/Data/ObjectInformation.xnb Fruit_tree_list_indexThis is a list of all the possible fruit trees. Each fruit tree has a unique list number. season_to_harvest_fruitThe season that the fruit can be harvested in. object_id_to_get The game_object_ID that will be harvested off of the fruit tree. Game_object_IDs can be found in Content/Data/ObjectInformation.xnb ???some variable that I couldn’t figure out for the time being. //More testing needed. End fruitTree Documentation ==============================================
I.VIV Bundles (Because some things need to go together.) Alright, you’ve all probably seen them by now (and if you haven’t go play some more). Bundles are the topic today, since they are pretty much the way to progress in the game, unless you side with Joja. Let’s begin. 1.Locate Stardew Valley\Content\Data\Bundles.xnb 2.Convert desired .xnb file using the methods described in the “Getting Started” section of this guide. f. Make sure that you convert the file to a .yaml file format. i.
xnb_node.cmd extract Bundles.xnb Bundles.yaml
3.Now open up your weapons file with any sort of text editor (such as NotePad++). You are going to see a bunch of text in the content field. An example of what you would see would be. Crafts Room/13: "Spring Foraging/O 495 30/16 1 0 18 1 0 20 1 0 22 1 0/0" #!String
Seems to be a bunch of number nonsense, but let’s break it down to what it actually means. Format: Bundle_ID+Location : "Bundle_Name/ String(BO/O/R) /Rewards list (Reward_ID/amount)
/Bundle Components(Object_ID/amount_needed/Component Filled?)/Area to bundle to)" If you want to figure what some of that stuff means, I recomend reading up on the documentation that will be directly below this section. Let’s start testing. Changing Crafts Room/14: "Summer Foraging/O 496 30/396 1 0 398 1 0 402 1 0/3" #!String To Crafts Room/14: "Summer Foraging/O 113 30/456 10 0 233 23 0 86 17 0/3" #!String Let’s see the result!
Success!
Now we can make bundles take anything as a reward. This could be made into a mod that makes bundles either easier or harder to complete incase you wanted to elongate the gameplay. As an added bonus I spent an additional minute making this list longer just to make sure it was a possibility. The result from this line of information: Crafts Room/14: "Summer Foraging/O 113 30/456 10 0 233 23 0 86 17 0 99 67 0 340 33 0 321 9 0/3" #!String
Yup, it’s confirmed folks. You can add/subtract the items necessary to complete a bundle. Go at it.
============================================== Bundles Documentation Bundle_ID=LocationBasically the room where you find the bundle. and the numerical value of it. Bundle NameThe name of the bundle that is shown when looking at the bundle screen. Note that this string does not include the word “Bundle” as that is added in automatically. SomeString(BO/O/R)Not too sure what this does at the moment of typing this. Possibly is what unlocks different things. Rewards ListThe goodies you get from completing a bundle. Rewards_IDThe object associated with the ID number in ObjectInformation.xnb. AmountHow many of the reward you get. I.E. 20 will give you 20 items as that reward. Bundle ComponentsThe list of items needed to complete a bundle. This always comes in pairs of 3 for each individual object, and this can be made longer/shorter by adding/deleting groups of 3 numbers. Object_IDThe object associated with the ID number in ObjectInformation.xnb. AmountHow many items of Object_ID are needed to complete the bundle
Component filled? Always seems to be a 0 value in the file. Probably sets the initial state of the bundle. Area to bundle toThis seems to be the location the bundle has to be placed. Not 100% sure. / /Needs more testing 0=pantry 1=Crafts Room 2=Fish Tank 3=Boiler Room 4=Vault 5=Bulletin Board End Bundle Documentation. ==============================================