#making-mods-general
1 messages Β· Page 602 of 1
literally just iterate through the matcher.Instructions and print it or log it
Gotcha
uhhhh what command is for events that makes the farmer disappear from the screen
you can warp them away
so warp farmer -1000 -1000
Emily's dream cutscene hides the farmer behind the alwaysfront layered tiles 
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
also please specify "didn't work"
does it happen when you debug ebi it
did you add an event file for his shop
as in like, a blank json
you need to load a blank file to any non-vanilla target you want to make edits to
can't edit something that doesn't exist
"Target": "Characters/Dialogue/{{ModId}}_SpeedyManny, Characters/schedules/{{ModId}}_SpeedyManny, Strings/schedules/{{ModId}}_SpeedyManny",
"FromFile": "assets/blank.json",
but i have it loaded
none of those are Data/Events/{{ModId}}_SpeedyShop
I'm trying to edit this map https://www.nexusmods.com/stardewvalley/mods/20843 but smapi keeps giving me an error https://smapi.io/log/71e71b8971fe4efb97b1a62bd2c710e8
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 84 C# mods and 92 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
ah
so i just add it there?
yep
!giderror
What does this mean?
You edited your map without one of the tilesheets present in the same folder as your tmx, causing the XML data to lose information about the tilesheet and recalculate the starting GID's for the other tilesets incorrectly.
And/Or
A tilesheet your map references no longer exists in the files, causing the same above problem.
How do I fix it?
Make sure all the tilesheets your map uses are in the same folder as your tmx, then make any small change to your map, and finally save your map.
This should cause Tiled to update the XML data and recalculate the starting GID's. You can then remove the change you made and save again.
Always make sure to have your tilesheets in the same folder as your tmx when editing your map (unless you're using tilesheetinator) in order to avoid invalid tile GID errors.
And/Or
If your map was using a tilesheet that no longer exists (several were removed in 1.6.9+), then you need to replace any reference to that tilesheet with one that does still exist or get a copy of it and ship it with your mod.
thank you
i have so many tabs open just for events π
Does anyone remember the command for baking [CP]'s auto-migrated changes to outdated packs?
it's gonna get worse, I had to group all of mine π and also keep the github for content patcher open cus it got some nice additional info for authors
afaik, CP will automatically migrate any mod with an outdated Format (<2.9.0), if that's what you mean?
Yes, but there's a command you can enter into the SMAPI console that "bakes" the chanegs and puts a reformatted pack in a folder somewhere so it doesn't need to keep migrating it every time.
ahhh cool i didn't know that existed!
I know it exists because someone said somewhere here, but I don't remember the command exactly.
Errr try the console commands wiki page
it would be a CP command, but I don't recall one existing and patch help doesn't seem to mention it
oh hi wem
havent heard anything of the sort; maybe you're thinking of "patch export and copy the updated data"
What is that command? Maybe that is what I'm thinking of?
patch export Data/Characters or whatever asset you want
then the game produces the asset as the game sees it
Uhh, then no, that's not it
if a mod still patches Data/NPCDispositions for example then you can grab the updated format from there
[CP] Auto migrates mods and I explicitly recall there was a command to export what it is that [CP] is doing to assist with true author-end migration. To improve load time.
the log message for automigrated packs just points to this url: https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-migration-guide.md
there was some third party tool that could run to do the migrations ahead of time but wasnt part of content patcher itself
I would ask Pathoschild but they're busy and probably don't have any time for me.
UGGGHHHH, is there an easier way of modifying fishing tackles so that they never lose durability?
another event done and dusted
if you mean for all of them, just FishingRod.maxTackleUses = int.MaxValue at launch might work 
since it's not a const, their durability is an upward counter, and it's checked by the display math
Gotcha
God my changelog has 200 lines. I've been doing too much, but I can't help it; it's fun to make things!
do u care about specific tackle or just all tackles last forever
I'm trying to create a book that, once read, prevents all tackles from losing durability
So I was hoping to have the fishing rod still use up bait. HOWEVER, at this point, I don't really care anymore π
I just need a win
what's the best visual mod?
That is entirely up to user preference
can i add mods on to a ongoing save?
I FIGURED IT OUT omg I feel so stupid. So last few days I couldnt figure out why none of my marriage dialogue changed for Seb/Abi/Sam were working or some of my conversation toipics. WELL AT SOME POINT instead of
Characters/Dialogue/MarriageDialogueNPC
my ass added and extra "Data" in there and
Data/Characters/Dialogue/MarriageDialogueNPC
BIG FACEPALM FOR ME
Yes, though this is probably a discussion for #modded-stardew
So, going through the check list, I still have to do the following books:
- Pickle Power
- Keg Power
- Pig Power (Probably version 2)
- At least 2 books that edits Lewis' basement
- Ancient Fruit Power
- Bonemill Power
- Calico Cat Power (Definitely version 2 since the feature creep is real)
And add the books to the shop
I've technically already done the first two on the list via CP, I just need to redo them in C#
Do u care about overlap with other book mods 
I think there was some kind of keg power in button extra books
There is, and this does something completely different than that book
IIRC, button's books just decreases the processing time. My book will have kegs produce silver quality wine
Ah that one may bonk all those artisian goods keep quality mods 
I don't think it's a big deal though, you just need to make ur mod modular enough
I also let people turn this off entirely if they want
Every single book and power (with the exception of mayor lewis' basement books) can be disabled
And the only reasons why the basement books can't be toggled is bc:
- They are going to be sequential (think step of the wind)
- Disabling the power would almost certainly cause you to lose whatever you've placed in Lewis' basement
- It's Lewis' basement... there aren't a lot of mods that mess with it.
TBH, I may just make that set of books (I currently have 4, only 2 of which are going into this initial version) special items akin to the town key
Tried compiling aseprite myself today, only to find out that I need to update my mac to use Xcode 
And ofc it's been too long since I've backed up my laptop, so I'll need to do that first
I like my current mac version
what do i type here for the large logs to spawn?
does anyone know?
just "Log"
there's a list of others here if needed
https://github.com/Esca-MMC/FarmTypeManager#large-object-spawn-settings
This might be a reading comprehension issue on my part (because I've seen the tile edits section on content patcher readme I just can't make much of it) but is there a way to use a custom tileset without making a custom map to copy parts from in the way of map edits? It doesn't seem efficient to use a whole map in order to paste the very small edits I need across multiple instances.
It's recommended to start with a vanilla map to avoid issues like breaking base game tile animations or tilesheet names in the "new" map. You can restrict how much of your new map is used to make patches on existing maps through the FromArea and ToArea parts of the EditMap action, and you can reduce your custom map in size to only contain your patched area afterwards if you really wanted
Unless you are only overriding a vanilla tileset (like how a recolor mod behaves) then you will need to create a TMX or TBIN file in Tiled with your desired placement of those custom tiles, and in order to make sure that your layers and settings match, it is easier to start from a vanilla map and then add your custom tilesheet and resize it as needed.
Thanks π Very sad to hear though I really don't like doing all that π
"Crazy woman" π
That not nice
I'm curious to see what you cook up
Where dose the game Store the Remix bundles? Bundles.json only has the normal once
Data/RandomBundles
Are Remix Bundles not translated? or dose it work differently there since the Normal onces have a .json per language
I believe the translations are stored elsewhere
if I mod the Bundles,json dose the game load it no matter what language I use or do I have to play in english for it to be loaded?
in Strings/BundleNames.json
well you can just mod your language as the default
but I might play with other people that don't use same language
are you changing the bundle names? or are you changing what the bundles contain?
Contain and add new basically cramming all the Remix and Normal Bundles Together is my goal
then if you're language is one of the ones provided by base stardew you'll have no issues playing with your language and your friends theirs
So the game will load the modified english bundle file even on other languages?
yeah you are only editing what the bundles contain so it'll automatically be translated
oh ok if its that simple given the for example Bundles.de-DE.json basically is a copy of the english one with just the name changed I tought it would not be able to easily translate the name
You just edit Bundles.json, and if the person is playing in German it would take your i18n/de.json and apply it to Bundles.de-DE.json, I think
I'm not sure what happens if you don't provide a translation file?
i just checked to be certain and the only part that might need i18n is the display name (which seems optional? )
Apologies for butting in without actually knowing the answers. I am curious, too. I recently edited Strings/Objects.json, and tested that if I had an i18n/fr.json it would work for the game in French, which it did.
Maybe I'll test without the i18n and see if they get the unedited French or the edited English.
yeah translation stuff is always something which gets me confused, the name part of the bundles seems to get auto translated but the display part on the wiki says it's shown in english i'm just unsure if that part is necessary or if it is left out that it will just default to the player's language
It gives the edited english text rather than the original French! Good to know.
I love i18n cuz I can just do something like this and it works
I spent ages the other night trying to figure out if I had to edit the localised assets individually. It's hard to put all the information from different places together.
I think it's a 'tokenisable string'
you mean like {{Season}} for example?
I assume you can
don't see why not yeah
the main reason not to is that most random CP tokens are always in english, but you can, yes
you can tokenize anything, really
anyway just to confirm, adding new bundles to Data/Bundles should look like this, if you want i18n support (as far as I know, anyway)
using one of the existing bundles' data as an example
{
"Action": "EditData",
"Target": "Data/Bundles",
"Entries": {
"{{ModId}}_NewBundle1": "{{ModId}}_NewBundle1/O 465 20/24 1 0 188 1 0 190 1 0 192 1 0/0///{{i18n: this bundle's key in your i18n json}}",
}
}
}```
Ah good point
the game itself loads whichever translated version of Data/Bundles the local user needs, but CP will edit them anyway (unless you use a When condition with language)
so just use i18n in anything that should be* translated
oooh bundles
@gentle sorrel here's an example of how to structure your bundle
would this just add it as a bundle option or does it just, say which category its in
that said, idk anything about how the game uses the bundle data
setting up random replacement data or something might be more technical
there are mods that add bundles i think? or does might use unlockable bundles framework
uhhh
there's that, and adding the old bundles to RandomBundles instead might be a better option if the goal is just to combine them
having skimmed the convo a bit
Data/Bundles might just check known keys only
https://www.nexusmods.com/stardewvalley/mods/26789 aha! examples
perhaps this can shed light on how bundles are selectedβ’
There is in fact a mod that does just that, but I don't know if you're allowed to look at it if you're doing the same thing :?
it even lists the items in full in comments that's so nice
I think that depends on the licence
true
looking is fine mostly. copying is the issue. if you're just taking a peak to see the general idea of the code i don't think most authors would have an issue
omg that is so cute
Erin be the mod maker of all time
https://www.nexusmods.com/stardewvalley/mods/15121
https://www.nexusmods.com/stardewvalley/mods/26998
@gentle sorrel here are two examples (with open permissions) that do what you are looking to do (albeit possibly in different ways to how you intend to), you could see what they do.
This mod add both regular and remixed vanilla bundles to the community center. The bundles cames with minor changes and slightly reworked rewards.It allows players to enjoy all the bundle at onc
nm?
nexus mods
oooh π€¦ββοΈ
Oh Thanks I only found the first one but the Second one seems to actually do what I wanted to do require every single item
I downloaded that and put it in a "hard mode" folder I may never use ^^
it even puts the Christmas and Hallowen Bundle in the Boiler room like I wanted to do
Ok Home Cook is less crazy then I wanted to make it but I will just edit it from here
Since requiring just the Group Egg and Group Milk is not requiring everything in my eyes
I would have may even required every wine and jelly but I don't think you can really track that
ooh neat
speaking of numbers, I'm nearly at a nice big round number myself, admittedly it's just normal downloads and not unique... but still.. π
How am i supposed to make a sprite where he looks collapsed with such a tight space?
do you want him sideways?
actually wait i have an idea
Define "collapsed"
it does
Yeah, that works
yippee
Though IDK if you need the red border around the ear
that's his ponytail
Oooh
yeee
I didn't realize he had a ponytail
I'm gonna have to figure out how to disable Manny for a certain amount of days, like Shane
after an event
https://www.youtube.com/watch?v=7nRdaszt3JQ better movement physics
nope no interactions
ooh ok
Though i need to plan out if i want him unconscious in the Hospital or Rasmodius's tower
he won't fix his heat problem unless if Rasmodius casts a cold spell that makes him immune to heat
does he have a connection with rasmodius?
i think they just interact a bit, not much
though Rasmodius would probably be interested in the fact that he's an anthro bear with human properties
unlike anything else in the valley...?
though to be fair they have a talking wild bear
i always see this random fisher guy as having a dog face
looks more like a capybara
that also works
xd
Balloons on pets next?
It's already ready for NPCs to carry balloons
ah π
"no longer will you have to hunt for your cat in the grass, just give it a red balloon.."
Does anyone know how to make a mod that adds a custom animation to an npcs existing schedule? I've been trying to make one for the past few days and its not working π
if you know how please feel free to dm me!
even has a chance to make prismatic balloons!
show us what you have tried... it's just a job of adding your animations to Data/animationDescriptions then editing/replacing the NPC's schedule
I'd look so rad with my prismatic balloon on my skateboard...
Here's my animationDescriptions:
"Format": "2.9.0",
"Changes": [
{
"Action": "EditData",
"Target": "Content/Data/animationDescriptions",
"Entries": {
"content": {
"sam_smoking": "56/56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 57 58 59 60 61 61 61 61 61 61 61 61 61 62 63 56 56 56 56 56 56 56 56 56 56 56/56"
}
}
}
]
}```
Heres my content.json:
"Format": "2.9.0",
"Changes": [
{
"Action": "Load",
"Target": "Characters/Sam",
"FromFile": "assets/Sam_Smoke.png",
"When": {
"Season": "Spring, Summer, Fall"
}
},
{
"Action": "Load",
"Target": "Characters/Sam",
"FromFile": "assets/Sam_Smoke_Winter.png",
"When": {
"Season": "Winter"
}
},
{
"Action": "EditData",
"Target": "Characters/schedules/Sam",
"Entries": {
"Sat": "1800 Town 12 94 3 animate sam false true 200 56 56 56 56 56 56 56 56 56 56 56 56 57 58 59 60 61 61 61 61 60 62 62 63",
"winter_Sat": "1800 Town 12 94 3 animate sam false true 200 56 56 56 56 56 56 56 56 56 56 56 56 57 58 59 60 61 61 61 61 60 62 62 63"
}
}
]
}```
Maybe have him kneel down like the when the farmer passes out
and heres my two sprite sheets:
Or that also works fine
that's not how you tell an NPC to use an animation in their schedule
ive tried multiple methods
look at one of Sam's vanilla schedule:
thats my most recent attempt
"Sat": "800 Town 25 98 2/1100 Town 18 94 3 sam_gameboy/1230 SamHouse 17 15 2 sam_guitar/1500 SamHouse 19 13 3/1800 Town 12 94 3/1940 SamHouse 22 13 1 sam_sleep",
at 1100 go to Town 18 94 3 and then use sam_gameboy animation when you get there
the game reads what is in animationdescriptions to use for the animation
my other method was: "Sat": "1800 Town 12 94 3 sam_smoking",
you need more than one schedule point
should i put his entire schedule in or just the saturday line
depends what you are wanting to change, but remember you might not be the only one altering someone's schedule
if you're only changing one entry, then just edit that one entry
"Format": "2.9.0",
"Changes": [
{
"Action": "Load",
"Target": "Characters/Sam",
"FromFile": "assets/Sam_Smoke.png",
"When": {
"Season": "Spring, Summer, Fall"
}
},
{
"Action": "Load",
"Target": "Characters/Sam",
"FromFile": "assets/Sam_Smoke_Winter.png",
"When": {
"Season": "Winter"
}
},
{
"Action": "EditData",
"Target": "Characters/schedules/Sam",
"Entries": {
"Sat": "800 Town 25 98 2/1100 Town 18 94 3 sam_gameboy/1230 SamHouse 17 15 2 sam_guitar/1500 SamHouse 19 13 3/1800 Town 12 94 3 sam_smoking/1940 SamHouse 22 13 1 sam_sleep"
}
}
]
}```
how does this look?
a quick glance, it looks fine..
all text files are json
ok thank you
heres my main folder
and within assets i have my two sprite sheets
and within content i have a Data folder
and then within that i have the animationDescriptions.json
thats all correct?
At minimum you have a content.json and a manifest.json, how everything else is utterly depends on how you structure it.
ill let you know if it works
Thinking about scrapping the chef outfit
kinda no point in it being there if it's for one area only 
I'll just keep my 5 outfits
wait why would it have no point?
Agreed. Cooking in the buff isn't a good idea. Keep the chef outfit for sure. There's nothing wrong with a sprite only being used once. Look at Krobus for example; he's only ever lifted by the sea monster one time.
well 1 it's for the bakery specifically so it wouldn't have any other use
and 2 it would make switching tilesheets kinda annoying
I gave Pierre a balloon
Hmmm, I'll have to think about it more
i mean you can just specify that within your bakery he wears that
Can we pop his balloon and ruin his day?
Mmm, true
I'll leave it for last, maybe
gotta get everything out first
would be a waste of effort otherwise imo
Does anyone know how the showFrame command in events works with a 32 x 32 character sprite?
just count each 32x32 starting at zero
and he'll just claim he made it himself and charge triple
ACK- STARTING FROM 0, RIGHT-
Maybe I should've made this sprite for every direction despite only needing it for one π
Only triple? We ARE talking about Pierre, right?
Hmm.. maybe I should make a few special orders in a future update that make use of the berries from my mod? π€
More reasons to grow the berries is never a bad thing
still not working :/
any errors?, use patch summary or patch export to check your patches are being applied correctly
no errors and patch summary says its being applied
patch export (asset) to have a look and see what is in the game
also how about a :
Yall, I just had an idea for the absolute worst mod ever...
... What if each time you use the minecarts to go from point a to point b, you had to beat a level of Junimo Kart?
oh no
Easy way for the mod to never be downloaded lol
It looks great! I'd recommend making the white highlight on the shorts a light purple or pink though
funny how someone said the same thing some time ago
might as well have to beat a level of junimo kart to load the game π
I love how you even added the balloon shine lol
If lucky purple shorts balloon is memed into reality, it must make Lewis angry if he sees it
could add a balloon tag to make custom balloons
As someone who absolutely despises that mini game, I'm kinda tempted to make it as an April fools joke
Is there any way to play an animated Mega Bomb in an event?
You don't understand, I'm currently concurrently working on no less than 3 different mods at a time rn. I don't need more mods to work on rn
Harvey (or whoever saves you) has to beat a level of Junimo Kart as well to reach you
do you want it shown in the event or just a simple blackout + explosion cause that might be easier
Oh, no I mean the shaking and flashing of the bomb, I've got the explosion handled
Something so it's not just a static object sprite with a fuse sound going on
i exported both the sprite sheet and the schedule and the exports shows my changes
you may be able to make it a temporary actor and animate it?
my only guess is temporaryAnimatedSprite but i would have no clue what you'd actually do
would it make sense to make more events in y2 after Manny gets immunity to heat? like his weakness is gone so it doesn't affect his events anymore
but the player would have to finish it within y1 for it to make sense
more events in y2 is always nice
Your target should be Data/animationDescriptions, not Content/Data/animationDescriptions
Can temporary actor call the sprite of an object? Wiki says it can only search from Character|Animal|Monster
could make the final event a requirement for the others so you dont have to wait for year numbers (not that you cant restrict it)
hmmm
yeah
i think nassi is suggesting that you make a temporary actor with just the mega bomb
10 heart then after that other ones for y2
target for what?
Oh lol I forgor
but yeah temp animated sprites probably works just more annoying to me
your target for this
Oh right. all of this... 
Rip farmer
yea 
yeah and rip everyone who has to attempt junimo kart
OH
also for some reason these can't loop forever??? why isnt that an option??? π
just set the loop number extremely high
So what does "Asset Name" mean and how do i set it for Mega Bomb π
i know but like grr
Wait I think I get what it means actually
ok i fixed that and ill test that now
I wish I could tell you cus I always give up and just use temp actors π
Anyone know where the animation sprites for the Mega Bomb are because they don't seem to be in animations.png? 
I'm absolutely sure more than one person has asked this, but anyway, hi! This is my first time moding (well, I'm tinkering a bit with the code from a mod that already exists because, im on Android, so i can't access SDV's internal files..) the thing is, I want to add dialogue to characters, But I don't understand why it has to be restricted to a parameter, i mean: mon10, mon8, and so on (I don't quite understand those parameters tbh), Is there a way to make the text appear randomly? π
the 8 or 10 refer to a characters heart level
You might be able to work something with a conditional "RANDOM" GameStateQuery, though the specifics of doing such a thing I'm not sure
I think you just gotta write the asset name if its unique??? or maybe the filepath O_O honestly they shoudve specified
ok yeah i think it needs filepath π€
Yee, then I gotta specify the pixel position and width/height of the sprite sheet I wanna use
Still searching for it
My first thought after Animations.png was Cursors.png cuz there seems to be a bunch of random bullshit in there 
But I'm not seeing it
It would suck if the bombs are actually hardcoded effects rather than a repeating animation
OHHH I THOUGHT HE WAS REFERRING TO NΒ° OF THE DAY π₯Ή
Like
megabomb is in the springobjects file i think
Mon8 πππ₯Ή
a lot of random stuff is in springobjects honestly lmao
it doesnt have animation tho, maybe they used tint and movement
which will be annoying in an event
Well yes the the bomb is there but not any of its animations
Oh you said that oops-
I saw something like that on Reddit just now, I might try it!
bomb animation is just the sprite shaking and flashing
Thanks for clarifying about mon8-10 btw ππ©·
since it fills the whole 16x16 sprite box it probably isn't an animation sheet just code stuff ya
I mean you can make your own spritesheet of it shaking but its gonna look funky
I manually drew a carp swimming
its real laggy in game but it work
Would I be better off making a mega bomb NPC and applying the shake effect to it in the event
this might be of help https://stardewvalleywiki.com/Modding:Dialogue, also i'd really advise unpacking the game if you're able
Oohhh TYSM ππ©·
i18n is great to use with RANDOM, too
that's what I'd do but you can make it change color in temporaryanimatedsprite
I mean I guess I could just make my own animated sprite too
i fixed it and it still isnt working
also what does attachCharacterToTempSprite do, i mean i can guess from the name but the wiki isnt very clear on the specifics
do they move together, where do they attach, who is above who
Oh wow that has literally no explanation on the wiki of what it means 
Is your animationDescriptions edit in the main content.json?
Maybe I sound stupid, but what is i18n supposed to be? π
yeah some parts i find could be useful on the wiki has it just be like. "it attches to the actor" like BUT HOWWW 
Because I don't think you are actually running that code. The EditData patch either needs to be in your content.json, OR in another .json that you include using an "Action":"Include" patch in your content.json. If you do that, the format is a little different (it doesn't have the CP format number at the top)
ohh okay
i put it in there now
i had it in a seperate folder
in the main mod folder i had content/data/animationsDescriptions.json
and my content.json was just in the main folder
It's the system for making translations. You put all the strings in your mod (like the actual dialogue lines) in a separate file.
"Format": "2.9.0",
"Changes": [
{
"Action": "Load",
"Target": "Characters/Sam",
"FromFile": "assets/Sam_Smoke.png",
"When": {
"Season": "Spring, Summer, Fall"
}
},
{
"Action": "Load",
"Target": "Characters/Sam",
"FromFile": "assets/Sam_Smoke_Winter.png",
"When": {
"Season": "Winter"
}
},
{
"Action": "EditData",
"Target": "Characters/schedules/Sam",
"Entries": {
"Sat": "800 Town 25 98 2/1100 Town 18 94 3 sam_gameboy/1230 SamHouse 17 15 2 sam_guitar/1500 SamHouse 19 13 3/1800 Town 12 94 3 sam_smoking/1940 SamHouse 22 13 1 sam_sleep"
}
},
{
"Action": "EditData",
"Target": "Data/animationDescriptions",
"Entries": {
"sam_smoking": "56/56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 57 58 59 60 61 61 61 61 61 61 61 61 61 62 63 56 56 56 56 56 56 56 56 56 56 56/56"
}
}
]
}```
how is this?
!json next time you want to share your .jsons you can do that via these steps
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
@krunk it's fine to have .json in other folders, you just have to use this "Action":"Include" to get CP to load the file.
Oh, no pings
@waxen thorn
they have krunkus_ as the full name thingy
oh okay is it easier to just put it in the same file?
then you dont have to do that?
Well, if it's for personal use, I can just use my native language, right? There's no need to use translation or something like that
you can you don't need to, you have to have (if you want it in separate files)
"FromFile": "Your File Location"```
Of course!!
with your file location probably being content/your .json in your case
Yes, for a single patch like that it's easier to put it int he same file π
ok thank you so much
hopefully this works π€
you guys have been a huge help
i really REALLY appreciate it β€οΈ
Question regarding animals; I want to set up a coop animal whose egg can only be produced if you have two specific coop animals in the same coop, more or less like crossbreeding. Is this easily doable?
is there an entry for making a character warp to somewhere and then immediately change outfits
i used to make little dialogue swap mods back in the day but this is a whole other league π
pretty much the same thing, swapping a schedule and just adding an animation
Extra Animal Config has some GSQs that can help
Ooh. I'll look into that then, thanks.
Unless back in the day means .xnb....
D=
yeah i was doing xnb
selph.ExtraAnimalConfig_ANIMAL_HOUSE_COUNT Target should work
this was like 2019?
the before times
like i want Manny to immediately change into his chef outfit when he enters the bakery
Although that would mean he'd sleep with his shoes on....shudders
you want to use their dispo to use a different sprite in a different location
ah, so Appearances
should probably finish the sprites first before anything
Would I put this as a condition in an entry under ProduceItemIds? Or elsewhere? The goal being an egg item, not a live birth animal (yet, anyway)
you can look at Maru's for a vanilla example
{
"Id": "WorkOutfit",
"Condition": "LOCATION_NAME Target Hospital",
"Season": null,
"Indoors": true,
"Outdoors": true,
"Portrait": "Portraits/Maru_Hospital",
"Sprite": "Characters/Maru_Hospital",
"IsIslandAttire": false,
"Precedence": -1000,
"Weight": 1
},
Hmmm...
Is there a way to add a timeduration
if it's a produce then yes (Deluxe)ProduceItemIds
Okay cool. Just making sure. Appreciate it!
Let's say that like, i want him to have the outfit from 9 AM to 4 PM
if he's outside at 4 PM he'll keep the outfit but as soon as he warps to ANY area, it immediately switches back to his seasonal
, TIME 900 1600 after the Hospital
ah
CP has so much customization it's insane 
thank you
uhhh one issue though
when he wakes up at 6 he's already in the bakery
IT WORKS
then change the time?? lol
does it just immediately swap out his outfit when it hits 9?
I don't think it's a good idea to wake up with his bakery outfit
in bed
unless someone is just stalking him/warping directly.. not many people will notice or care
π
but yeah it'll change at 9
not all
you can just move him to (for example) his dresser and have him change when it's 9 no need for 6 am
@orchid glade @verbal glacier @golden spire ITS WORKING!!!! thank you guys so much for your help!! β€οΈ
Actually hmm, I'll just remove the dresser and add a non-interactable door
i mean it's just a schedule entry change and setting the time to 900
That way he just warps to nowhere for 10 ingame minutes and immediately warps back
i think I've been burnt out from the 3 events i made
that's why
should probably take a break

oh wait a minute I put an _ instead of a /
Do I even need the mod Id?
well I def need more than just the name of the file 
The documentation on the wiki is really not clear what I need. It just says "asset name". does that include the file extension? what about filepaths? 
Am I supposed to do my target? I'd think so, but how do I do that when it uses a / like the rest of the event script?
My guess would be \" \" but I feel like that could be explained on the page?
asset name is whatever you loaded the image into in the Target field
if the target has slashes i think replacing them with \\ works
I'll try that then
Okay it loaded! However-
how do I make these do nothing 
i think it's specifically the change that's just messed it up
Just set as 0?
Ohh I think I see what my issue now is
Alright, I don't think this is necessarily very complicated, but the wiki could probably use some better explanation for each field?
I actually got temporaryAnimatedSprite to work properly! 
Hi! This is a personal use mod, but I edited the farmer sprite sheet in Fashion Sense assets, and everything works except I can't make the blinking stop.
I deleted all the pixels in the top right corner (pic 1) but it still blinks
I think the blinking might be hardcoded
Oh damn, so much work editing lol. Ok, thanks!
is there any way to make a portrait sheet conditional to an event? I want Sylvia's portraits to change after the player sees her 8-heart event
yes
how do i do that
depends how you want to do it/handle it.. can use game state queries in your npc appearance to just check if the player has seen xxxx event and then use the different asset
https://stardewvalleywiki.com/Modding:Game_state_queries#Player_info_.26_progress
(keep in mind that the NPC Appearance system only checks for changes when the location is changed, so you may have a brief period where they do not use the new portrait unless you work around that)
I don't recall if it's when the player changes locations or the NPC that matters in this case
NPCs recheck their appearance when they change locations (not the player)
Thanks ichor!
is there a tool for converting something more easily readable by a human (i.e. a .json at the very least) to dialogue that can be read by the game?
Are you talking about Content Patcher?
no, i want an interface that takes care of the shorthand for me
if it does not exist, that is okay, i will make one
So you want a GUI for making CP mods essentially?
well that would definitely be something to look at, does that exist?
Not that I'm aware of
ah, kk
there are NPC makers (no idea how accurate it is nowaday), but nothing generic
I think there is a thing for schedules or animations too? I can't remember
but nah, what i want is the ability to input a season, day/date, heart level, or acceptgift (yadda yadda), then the string w/ options to make it a question
all without looking at the .json
this is doable, i just wanted to know if someone else had done the work for me lol
there is no such tool to my knowledge no
maybe the NPC makers implement something similar, but again they may be outdated
You could put that as a string in your i18n json folder, but IDK how you'd go about avoiding json entirely.
Though, with that said, I'd love it if we could have multi-line dialogs in the json files.
TIME TO BOOT UP THE OLLLLL' ELECTRON FOR A CRUD EDITOR
That wouldn't be difficult to put up a web GUI that will output 2 jsons, one with the i18n and the other with the applied dialogues
I've done things like that to convert files
eventually you'd have to compile it all into something content patcher could read (or repack the XNB 8D) for sure, but the actual creating dialogue part does not seem hard
:O XNB mentioned >:(
dude the last time i modded this game, there was no content patcher
back in my day...!
!xnb >:(
XNB mods often break the game and are not recommended. See:
- using XNB mods for more info and a list of Content Patcher alternatives;
- reset your content files to fix problems caused by XNB mods.
For mod creators, see editing XNB files for help unpacking & editing them (including for use with Content Patcher).
I know. Tbh, I've been tempted to do that myself. But I don't feel like it if I'm being honest π
bad XNB >:(
to me what would be more interesting is something that can check dialogue for lines that just can never fire/or rarely fire
the number of times i had to reinstall sdv because i messed up with a mod i was making was very high and i only made 2
as I am sure some people with large dialogue files have lines that just never happen.
the thing is that this is what using json to declare a content patcher mod is
i'm not communicating clearly and that's my bad, i'm gonna drop it
quick question about dialogue:
here's a vanilla abigail dialogue line from the wiki
"winter_1": "Well, fall is over...$s#$e#But I like winter, too!$h"
would this only proc on the first year without _*? so does abigail on winter 1 year 2 not have this line?
(I think you dropped a few \ to stop formatting)
there we go
that's just day 1 of winter
the wiki gives a warning against not using _* because it catches people out when they are new
!npc my sheet linked at the end of this command does do some of that for the Data/Characters entry with formulas to put in the code based on the input on the boxes.
Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:
-
Tiakall has a great tutorial on making a custom NPC for 1.6.
-
NPCs no longer use dispositions, check the wiki page for the new NPC data.
-
Feel free to jump into the https://discord.com/channels/137344473976799233/1277457201077813280 thread for more interactive feedback and help!
-
Fireredlily has a WIP NPC Builder Please do report any errors you get with it into the NPC thread!
Dialogue does get tricker because of the different dialogue commands and potential keys though
seems like the answer to this is "she does only have unique winter_1 dialogue in year 1" lol
sweet, i'll take a look, ty
look at what TheLimeyDragon said
Not sure if I've asked this before but if I'm trying to patch some keys added/altered by another mod, and their patch has Update OnLocationChange, do I also need to have that update rate set on my patch? I'm unsure if load order alone would give my patch priority or not in this
i interpreted what they said as "just winter 1 [in general]"
Winter_1 should be every Winter 1
The y1 only stuff is from a different thing. Keep reading on that wiki page
Specifically it's season_number not dayofmonth
it's winter something
like winter_1_*
damnit discord
that happens only on the 1st of winter
For the years, the key only works when applied to a day of week or day of month, not when the season is added
This comment is found on dayofthemonth stuff, not season_day
<dayOfMonth>_<firstOrLaterYear> and <dayOfWeek>_<firstOrLaterYear> are given examples in the wiki
So winter_1 will be for every Winter 1
If I move /skippable in my events, will that change when in the event it actually becomes skippable?
If you want specific dialogue on the specific day of a season in a specific year, you can do that using a When condition to edit the line per season
the event becomes skippable when the event gets to the skippable part
They were asking about Abigail's Winter_1 dialog
Ah, I see! I missed that part and thought they were trying to make dialogue happen on Winter 1 only in year 1
Sorry for the confusion, LOL
S'alright, it happens!
first of all, i believe you, second, how on earth is this supposed to be read?
<season>_<key> = one of the variations above
<dayofmonth> is a <key> format
checking the actual json i get it now, but i am left worried that i do not understand other things now lol
Always check the examples, took me a bit to grasp it too. Dayofmonth is just a number
So the key would be 14 for day 14. No month or anything in it
sure, but the way it's written, is it not valid to understand summer_14 as <season>_<key>?
i guess i'm just frustrated, not really productive lol, mb
every 14 would apply to all 14's of each month (for year 1), summer_14 applies to the 14th of summer
people will also use content patcher itself to go beyond what the base game can do with dialogue
The whole summer_14 would be the key in the dialogue
can use content patcher to have a specific dialogue in town map on spring 23, year 5, with an exact heart level of 7 with Abigail, and 4 with Pierre whilst it's raining
Season _ Day is farther down the page, not sure what you're asking. There's a season_key bit above the bit you were reading, but it's talking about the order things are checked in. The comment about y1 was specifically on day keys
If I understand the point of confusion right
where is it further down?
because i think you might be looking at the marriage dialogue section
see? it's confusing as heck lol
Four inches of readable screen, one sec
the confusion comes from the fact that the wiki has <season> as a "season name" which links to just the names of the season, but says that "season_14" is, altogether, <season>
or at least that's the only way i can figure out how the wording is consistent with reality
in the end, i blame concernedape anyway :p
I am also confused about this page now.
SEE?!
"winter_25_2": "{{i18n:dialogue.winter_25_2}}"```
from mine winter_25 will occured in the first year winter_25 winter_25_2 will occur on 2nd,3rd,4th year
yes, i understand how it works now, just trying to grok how the wiki is phrasing things
oh i guess that's an ai now, can't use it as a verb
that's a verb?
I mean, I know how it works, I think I am just confused how this page is telling me this.
means understand
it's not
well anyone can edit the wiki so fixing any issue isnt out of scope
It is, coined by Heinlein
https://en.wikipedia.org/wiki/Grok if you meant me :p
the page is saying use
<season>_<key> and the <key> is whatever is in the key format section
Stolen by you know who
where is this page?
Learned something new today
yes, but <season>_<key> implies that if you put in a date as a key, you need _* to make it work every year
with how it is currently worded
yes
winter 1 year 3, because she has no winter_1 dialogue for year2+ it defaults to winter_mon
has anyone written anything on adding raising & lowering doors to new buildings, and hiding animals (the horse) behind them?
(it's not saying that is altogether the season, it is giving an example of what to write for a season when using it in a key, with spring_14 being an example of <season>_<key> where <key> is the dayOfMonth key)
yeah, i am on the other side of like 15 layers of confusion here
i tested it wrong and found the dialogue in year 2 winter 1 somehow and just went with the flow
i think i and a couple other people were feedback looping confusion lol
What even is a dialogue anymore
a dialogue is a dialogue
words
Fish
Speedy, your beach portrait issue. I wonder if you need to set the precedence to be a lower number than the summer outfit. Are you using precedence?
can you share your .json again?
I'm not at my laptop unfortunately
ah
I edited the map in Tiled using the Action Message "β¦β¦", but the displayed text always comes with an extra string of characters as shown in the screenshot. Is there any way to fix this?
do you have a patch to add your labels in Strings/StringsFromMaps?
Sorry, I don't understand what is that
using content patcher have you added any keys to Strings/StringsFromMaps?
//Map Labels
{
"LogName": "Map Labels",
"Action": "EditData",
"Target": "Strings/StringsFromMaps",
"Entries": {
"TheLimeyDragon.Ayeisha1": "{{i18n:Ayeisha.MapLabel01}}",
"TheLimeyDragon.Ayeisha2": "{{i18n:Ayeisha.MapLabel02}}",
....
},
key being whatever you are using in the map
ok, I will try this, thank you
burukesi.text1 or whatever
it works! Thank you!
no problemo
I'm stuck on something I've been trying to do , I'm trying to make a simple question, answer, and reply interaction work, And I think the problem is in how it's written,
"spring_Fri":
"Creo que irΓ© de camping maΓ±ana"
#$q 67/68 "campinhquestion_followup"#"quisieras venir conmigo?"
#$r 67 15"campingquestion_yes"#"Claro! Me encantarΓa!"
#$r 68 0"campingquestion_sorry"#"ughh lo siento, ya hice planes...a la prΓ³xima si?"
",
"campingquestion_yes": "bien! Es una cita! Bueno...cita cita no jeje".$h", "campingquestion_no": "Oh, estΓ‘ bien".$6",
},
},
I don't know what to do Since it's literally my first day of modding (I got most of the code from the wiki)
Nvm i did It, It was exactly what I feared, It was malformed, And the Syntax Poorly closed
Can a GSQ check a mod's config value? And if so, how?
you can pass a token into it as long as it turns into either TRUE or FALSE when evaluated
Trying to replace the snowy footsteps sounds with the grassy footstep sound that already exists in game. Problem is, I don't know what to put for the file path. Here's what I got so far:
"Action": "EditData",
"Target": "Data/AudioChanges",
"Entries": {
"WinterFootstepSoundReplacement": {
"Id": "snowyStep",
"Category": "Footsteps",
"FilePaths": [
"???"
],
"StreamedVorbis": true
}
}
},```
the wiki has an example you can copy
"FilePaths": [ "{{AbsoluteFilePath: assets/music.ogg}}" ],
Wouldn't that just pull from the ogg I'd have in my assets folder?
which I don't see the sense in doing because it already exists in game
ah you meant changing a sound cue to another sound cut
I have questions, but first I need to fix a thing.
Basically, I have a "ModConfig" class that contains config values. I'm trying to modify the cask machine rules based on a specific stat of the player and whether a certain config value is "true".
in that case I don't think AudioChanges support it
you can't re direct a sound cue no
ugh. I guess I'll have to add it into assets. Which I don't know how to do because I can't find it
https://www.nexusmods.com/stardewvalley/mods/14767 could work though
I don't want to add a dependency for this mod. So I'm just gonna find an audio track for what I want and add it in myself
Is this not how you edit machine data in C#?
you want to be careful with the ids as they have to be unique otherwise they might conflict with another mod
I was assuming you're doing things in CP; if you're doing it in C# you can just selectively change the rule yes
aka that code looks fine to me; run patch export to confirm that your changes are/are not being applied
I've checked it and there doesn't seem to be a conflict, but since it's such a low number I might increase it just in case
also make sure to invalidate the machine data if you want the changes to apply immediately
I know for a fact they aren't working. Give me a sec and I can give you the error log (also, how and where would I invalidate the machine data? The trigger should only activate once the player has read a certain book)
if it works after you restart the game then the issue is most likely you did not invalidate
Right now, I'm getting the following error when trying to launch the game:
[Money Sinks - Books for Dark Offerings] Mod crashed when editing asset 'Data/Machines', which may cause errors in-game. Error details:
NullReferenceException: Object reference not set to an instance of an object.
With that said, I think I just saw what's causing the error
the ol NRE, gets em everytime
OMG, finally the game launched without errors
Now its time to see if the changes actually did anything
Thoughts on this machine shed?
CustomData is null yeah by default
That and a bunch of other things π
yeah that looks cool!
Take 2
Yes, it took the item!
And just like that, the pickle power book is officially finished
Yes. The book allows you to age pickles
Though I still need to figure out how to change the popup message via SPU
It sounds like dinner is ready. After I eat I'm going to do one of the following:
- Modify ancient fruit
- Modify kegs
- Modify bone mills
Which will mark off all of my basic books planned for version 1, which would leave me with 2 books left (I've been referring to them as "Lewis Books")
I also need to update a different mod. UGHH IT NEVER ENDS π
Hello I have a Custom LostItem quest issue NPC always uses fallback (LostItemQuest DefaultThankYou) instead of my reaction textβeven with plain text (no i18n).
"QuestC": "LostItem/{{i18n:quest2.title}}/{{i18n:quest2.description}}/{{i18n:quest2.objective}}/CustomNPCName (O)CustomItem Forest 29 94/-1/700/-1/true/DialogueText",```
How would I modify kegs to output silver quality wine if a player has a certain stat in C#?
QualityModifiers
Gotcha
Is there a better way of finding the "Default_Wine" output rule other than iterating through the machine rules until you find it?
well you can make it cleaner with LINQ
Iteration it is then!
eww
It's fine
is there a way to make an event trigger when you go to sleep?
nah we should all be Functional Programmersβ’ when possible
We should all be functional humans? Sign me up
The mod More Nightly Events is a framework for overnight events (like the junimo cutscenes and such) but otherwise, no. At best, you can have it happen mostly reliably when they wake up in the farmhouse.
alright, that about tracks
tysm, was wondering if i was missing something
the other alternative i was thinking of was having it trigger if you enter the farmhouse after 1 am and call end newday, but i hate when games do that lol
My issue was resolved. The game just likes to spit out errors for no reason it seems
Was able to use debug quest command to test the quest
Been reloading an old save in year 3 for testing purposes
Now I need to figure out how to implement it... :/
And just like that, I'm on to the bonemill!
I also just remembered that I need to actually add the powers
I've been asking in making-mods sporadically how to implement it's pull-down door (like the livestock buildings) and have not received a reply.
you can look at the vanilla building for examples?
but honestly I'm not 100% sure what you want is completely possible
Gonna add "bone_item" to bone swords
the art is done. It's the coding that I need help with
hmm it probably is with some tweaking of the passable tiles field
and I know it can be done because flashshifter has done just that in SVE
Actually, there's probably a better way
but like I said reference the vanilla coops/barns as well as building data
hahh... making recipes is fun except for the actual recipe part... sometimes i kinda miss JA formatting.
I just wanna be able to mill those dang swords if I'm honest. I feel like I get far too many of them
Whelp, look out for "Money Sinks: Books for Dark Offerings" - a mod coming to a nexus near you sometime soon!
Though I may honestly make another mod that just makes those dang swords millable for those who don't want to go through the whole rigamaroll of that mod
i think that would be a good idea lol
im sure theres plenty of us who hate the bone sword
Hii I want to make a little cutscene/event, The typical thing is to put the screen to black with a fade, maybe 4 hours pass and the screen returns to normal, After accepting a response, And after the transition, have the NPC say a few lines...Saying it like that makes it sound easy for someone who's been doing modding for a while, but I literally just started ππ
Screw it, I'm just gonna make a quick CP bone sword mod after I have dessert. I already know how to do it.
Time to begin!
4 hours is really long, like really long... are you sure you don't just want to say "4 hours passed" and pretend it actually did
I mean, i think i dont mind, but maybe like, 2 hours (Obviously in Game)
even 2 in game hours is long
Time to test
you'd basically be staring at a black screen for several minutes
I think they mean progress the in game time 4 hours
Yeah yeah
π€ not sure how you'd do that tbh
well, you can just make the event as is and worry about the passing time part later
[[modding:events]]
wow
um you didnt see that
[[modding:event_data]]
(There is no command for it)
Can we leave here ideas for a mod? Asking here cus I myself am no programmer nor have any other kind of experience of making a mod
UPDATE: im broke, i dont have money at all, so i only wanted to give some ideas, not commission a mod T_T
the credits will go to the dev of course
sorry for not mentioning it at the start
I believe ichor maybe has one in hat mouse lucy
!modideas
If you have a mod idea that you aren't planning to make yourself, you can put it in the mod ideas github: https://github.com/StardewModders/mod-ideas
However, this does not mean anyone is guaranteed to work on your ideaβmodders who are looking for ideas sometimes go through and work on what they find interesting off this list. If you want to pay someone to make your mod idea, there are a few people who do commissions (mostly art, sometimes code); you can ask around, search usernames for the word comms, or see !commissions.
hat mouse lucy...
I saw it, the thing is that I find the wiki a bit complicated to understand ππ
Lacey
I usually try to watch videos or something like that
The closest you can get in vanilla is end newDay which will, yknow, end the day
well we dont have videos
Thank you Mr governor
and i dont even know if that forces it to actually end in multiplayer anyway (and if you could just arbitrarily set time, you'd be screwing over the farmhands)
Hmm, I think that might work. I don't really mind spending a day
(It does not)
In multiplayer that is ignored
then yeah in multiplayer it wont work then
Also I hate events that do that lol and personally will get annoyed
(same)
My crops! That i haven't finished gathering!
what specifically do you find complicated?
dont have to cater your event to what players prefer but if you plan on publishing it, it is worth keeping in mind that you may get some less than nice comments about it
(not in this server i mean! but on nexus)
(knowing me, if i made an event like that i would forget about it and then catch myself in the trap XD)
I dont know, everything π? Today is literally my first day of modding lol, Besides, I'm not used to the content patcher for now
I mean, At least I've been able to add dialogues with questions and answers, that's progress
i can suggest taking a look at the vanilla event data, to see how the commands are used π€
Is there anywhere I can get the data? The problem is I'm on Android, so accessing the Stardew Valley files is difficult for me; the most I can do is modify Existing mods that already affect the vanilla game
... do I need to set it as an animal door for the animaldoor animations to trigger? Also, the animal doors layer over the livestock, right?
ooh....
android..
!androidsmapi
We are not able to provide support if you run into trouble or compatibility issues with Android SMAPI; please use the discord linked on the Android SMAPI github.
IMPORTANT: This is a highly experimental build and may be prone to glitches, bugs, or incompatibilities. Please see the wiki instructions for more information regarding installing the unofficial Android port of SMAPI for Stardew Valley 1.6.
Do not harass mod authors to make Android specific compatibility patches.
I'm not sure how android modders usually unpack their files, to be honest. The android smapi server might know?
Some of the wiki pages for specific data types do have unpacked examples on them, such as the event data page at the very top
I'm supposed to have access to the data. The problem? They've reduced the file display to only the save files
Nothing appears other than save files
I'll try to use one of them; I hope to at least get something out of it
Unfortunately this server isnt really able to support android like the command says and we cannot recommend/allow other means of obtaining game files besides the usual unpack instructions, so hopefully what you do have access to will be enough
Aside from the fact that I can't easily access the game's vanilla files, using Android isn't such a crazy idea
Well yeah, we just don't know how
We're not saying it is, just that this server can't support it due to the lack of knowledge from near everyone in here
so we can't really help
Ik ik
I don't even own the right kind of device to test if my mods work on Android.
I'll try to get something from the wiki in case it works
Picture this: an android device
On top of that, smapi can only be used with Stardew Valley purchased from the Play Store
Can't do it, it is a mystery
Time to make the mod post
@ocean pagoda continuing in the correct channel, those aren't bold in english though, so why make them bold in bulgarian?
publish
Dope
oops that only got half of what i wanted in frame but oh well LOL
I think that's the fastest I've ever made and published a mod π
Got the part I missed before mis-tapping enter because my cat wants pets LOL
Can you no longer add notes to the requirements in the new upload form?
Looks better bold - and if they are not bold the default Loading... is shown as not bold
I haven't messed with it much, but that'd be odd
I couldn't see any options to provide one
I don't think that's bold in English either
in my experience usually translations aim to portray the original as-is rather than attempting to make stylistic decisions
If you use legacy requirements, you can edit one to add a note from what I can tell?
Huh. Weird
Adding one also lets you add a note
But it's just in Legacy, I dunno about non-Legacy
Back to the actual mod
This is from a mod edit page, not the new mod page
My mod showcase wardrobe has grown this day
they are bold - check the russian as well
so as comparison here - it seems i have to enlarge it even more - and it seems the glyphs are missing the tails - Copare the K in Clint in Russian and Bulgarian - mine is gone π ... anyway it needs more work it seems
it's definitely not a carbon copy π I've tried ... but as it takes time to draw them perfectly and I'm not that patient - it's fine for me - if someone want's to make them better - it will be published soon - so anyone can type any text with SDV font (Latin/Cyrillic)
repeat:
... do I need to set it as an animal door for the animaldoor animations to trigger? Also, the animal doors layer over the livestock, right?
I'm still confused about why not use the russian font then π
unless it's missing some of the letters you need?
yes
So I should be able to get the horse behind the (animal/garage) door.
Good.
(trying for yourself to see if it works is definitely more informative than asking if it works)
(And thanking people for their help is nice, by the way ^_^)
@languid knoll lacey does in fact have a traction to advance the world time, and uses it in two events. it's in my (yet to be published) event commands mod, too, but as people mentioned it is to be used with caution
things commonly forgotten when in "the flow": manners.
facepalm.
alr, thanks for the help :), I finally gave up a bit; I'll try making the screen go black after a response tomorrow
To at least give the impression that they did what the answer says
I just want my old man Yaoi event where they spend the day camping π₯Ήπ
needed to know if it was possible before committing to more coding, ty!
-# (admittedly because building code has surprised me before)
Bulgarian has an additional character βΡβ (i with grave accent) that Russian Cyrillic doesnβt include.
Itβs used for grammatical forms like βto herβ, so I keep it for correctness instead of replacing it.
this case though I think it works
in"complete" fonts are a pain in the butt.
indoor map: field left blank
that's why I "made" mine π
THANK YOU
This is most probably the case, but I'm asking just to be sure: the sequence of Lewis checking the Fair grange display one by one is hardcoded, right?
yes. it's an event command string but it's baked into the C#
this.setUpAdvancedMove(ArgUtility.SplitBySpace("advancedMove Lewis False 2 0 0 7 8 0 4 3000 3 0 4 3000 3 0 4 3000 3 0 4 3000 -14 0 2 1000"), lewisDoneJudgingGrange);
Aw. Alright then, thank you!
SVE managed to extend it, if that's any help whatsoever
Yar, probably part of its C#.
what's the condition/token thing for the day/night cycle? Hoping to be able to go "when": [is night]
There's nothing like that, AFAIK. You could use Time instead.
how do you combine conditions, then?
The only place with something like that is when you define DayTiles and NightTiles in map making.
Combine conditions? What do you have in mind?
so what time night starts at (for night and day tile purposes) changes by season. Therefore, if I want to properly go about having a background (rear layer) that changes with the time for day and synchs with the other tile changes, I need to set it up to rely on two conditions - or figure out how to set a condition that has a different value in most seasons.
I'd use day tiles and night tiles but this is for an elaborate horse makeover, so...
(I don't think I can use that on the stable)
You can do it with ontimechange yes, mmap also provides conditional draw layers
Honestly, I'm still not sure about the exact conditions you want, but you can do patch with multiple conditions like so:
"Time": "{{Range: 1700, 2600}}",
"Season": "winter",
}```
of course, I could also take the easy way out and erase the opaque window panes in my background but I'd prefer to learn more
would you stack the seasons inside the "When"':'s {} or have several "When":s?
If you have multiple seasons, then "When": { "Time": "{{Range: 0600, 2600}}", "Season": "winter, fall", }
Ughh, nothing I do seems to be modifying the bone mill. I'm going to come back to this tomorrow when its not almost the middle of the night. If I don't see anything immediately wrong, I'm probably gonna shoot my shot over here.
You can't have several "When" in one action, and you can't have several "Season" in "When".
how would you specify different ranges for different seasons in that last example?
You mean if you want Fall to have different range than Winter?
I have a question please. The github documentation and google have not been really helpful in finding the answer. Can I use the config schema values to directly put them into a dynamic token, without having to use multiple when conditions?
Make another "EditImage" patch.
As a Dynamic Token condition? Yes you can.
So if I do in the config schema: "Grass Spring" and the values are none, light_green, dark_green. Can I then do a dynamic token with "Value": "grass"Grass Spring""? Or do I put it as grass{{Grass Spring}}
I'm trying to avoid writing tenthousand lines of codes with When to set my dynamic tokens.
Config values are, by default, a dynamic token and you can use them as such
Yeah, in that case just directly use the config token, I feel.
{{Grass Spring}} will resolve as whatever the value they pick
I need to put "grass_ " in front of the config token. Because I also need cliff and dirt and want to use the config menu only with the color names.
You can do Grass_{{Grass Spring}}
how do i copy and paste code here in the code box format? So i can show. I forgot how to do it
Three `
would that also apply for "drawlayers", or is that the wrong way to go about this? For reference, the sprite sheet I am using is below:
(there are three layers in play - the front of the buidling, the "interior" of the building, and the animal-style door sandwiched between them)
Uh, if it's small code anyway. If you're about to show a lot of code, put it on smapi.io
If you use EditImage, then you skip layer info altogether and just directly edit the exact pixel area you want to edit on the tilesheet.
"Grass Spring": {
"AllowValues": "none, light_green, dark_green",
"Default": "light_green",
"Description": "Select the grass color in spring.",
"Section": "Grass Color:"
},
},
"DynamicTokens": [
{
Name: "grass_spring",
"Value": "grass_{{Grass Spring}}",
"When": {
!{{Grass Spring}}: "none"
},
]
{
"Action": "EditImage",
"Target": "Maps/{{season}}_outdoorsTileSheet, Maps/{{season}}_outdoorsTileSheet2, Maps/{{season}}_outdoorTileSheet_extra, Maps/{{season}}_town, Maps/{{season}}_island_tilesheet_1, Maps/{{season}}_monsterGraveTiles, Maps/{{season}}_beach",
"FromFile": "assets/{{Target}}_{{grass_{{season}}}}.png",
"PatchMode": "Overlay"
"When": {
!{{Grass {{Season}}}}: "none"
},
},
Does that look about right?
So you're advising I do that instead of having seasonal drawlayers, correct?
That isss pretty messy, I'm not sure why you are doing it like that and I'm not sure my brain is wrapping around how it'd work out
and I don't think ! in the when work like that at all
(they dont, nor is it valid json without the quotes)
Okay, this is just in spring? And you want to have "Apply light green or light green when selected via config, but don't do anything if none is selected?
also you'd need to remove the outer braces
I didnt put the "changes" this is just a small part of the whole code.
i have more config menu and tokens set up for all seasons. SPring, summer , fall, winter. But I only posted one spring as example.
Alright, but roughly, is that what you want to do? Apply only when "none" is not selected?
ALso, how do you name your image files?
I'm sorry but I'm not sure what you mean by seasonal drawlayers.
Yes. I have pngs set up that are named with _grass_light_green.png and stuff at the end. But if they select None I dont want to patch the grass.
Okay, so you don't need the Dynamic Token, actually.
I also have a problem with the filename I just noticed but that is another story.....
Just put your When condition as "When": { "Grass {{season}} |contains= none": false },
I only have one png named season_outdoortilesheet etc. for all seasons so I can't even use the {{Target}} I just realized.... I don't want to use spring summer etc in the filenames. But then I need more code q.q
Okay I will change that, thank you!
Then all that matters is for you to put the right "FromFile" name scheming, which I admit I am unable to parse from your code. π
season_outdoorsTileSheet_grass_light_green this is the filename
I have only 1 tilesheet that I want to be able to apply via config to all seasons
This will not work.
You cannot use tokens to construct the name of another token like that
Aw, really? Sorry about that Seerafroggie.
Are you sure? I dont want to have to do a editImage for each Season q.q
(for a simpler example, thats like doing {{Sea{{mytoken}}}} and expecting it to work when {{mytoken}} = son. CP will bonk you for trying)
Doing a separate edit image for each season is just a matter of copy paste at least
{
Name: "snow",
"Value": "snow_{{Snow Color}}",
"When": {
"Snow Color |contains= none": false
},
{
Name: "snow",
"Value": "{{snow}}_dark",
"When": {
"Darker Snow": "true"
},
Can I build up a dynamic token like that? Or is that also a nono?
If not I'll just use different whens
You can use a previous version of a dynamic token in its own value, yeah. So long as there is actually one above it that applies.
If that first When condition there was ever invalid, I believe the 2nd dynamic token below it would then cause errors.
(because thre is no fallback default value above them both)
(im not 100% on that part though)
i can put the when condition of the first one in the second one as well
two background drawlayers per season and no editimages vs one editimage per season and one background drawlayer
re: day/night tile functionality
edit: numerical correction
I'm trying to recode my whole recolor, to make the colors chooseable for all seasons and trying to keep the code slim. (Feel like throwing it outta the window q.q)
I applaud efficient code, but there's something to be said for functioning code that is easy to read and write and tweak if needed. Doing one editimage per season isn't that bad
I love tokens, but tokening too close to the sun can really bog you down
π Will do this
Oh I was talking to SeeraFroggie uhhh LOL I should have been clearer
Okay π Thank you guys for the help!
got a one-problem-at-a-time level of brain function here
Okay. Where is that coming from all of a sudden?
the most efficient code is of course the code that uses no tokens at all, if possible for your usecase
I am saying that I can't think of your problem and Skylark's at once and things have gotten confused
Ahhh okay, I thought you were saying I have a one problem at a time brain.....
π₯Ί
good news! the advice also works perfectly for my situation as well!
Hey if it works, it works
Indeedy!
Thank you for helping! I'll try to rewrite my code per season and leave out the layered tokens!
It would be possible but then I have to make so many editimages for all color variants and it will get confusing. So I'm hoping tokens make it a lot easier.
(For me)
extreme convenience is a very valid reason to use tokens. they are there to be used, after all
You know what, I think you were right! I might not even need the dynamic tokens....
I need sleep and look at it again tommorow. I can just put _grass in the From File and then the config menu token propably.
Does anyone know how SMAPI events work and where they are called from?
I'm talking of stuff like Helper.Events.GameLoop.DayEnding and the likes. My usual tools to track it down haven't found anything.
I need to try to learn more about these to fix a conflict between my mod and another mod
what is the conflict? all of those events are handled in smapi's own internal code like SCore.RunInteractively()
or some Run function. might be confusing it with like PlayerInstanceUpdated or smth
Apparently, when players are using my MultiSleep mod (which automatically sleeps for a given number of days), some other mods' DayEnding (and, presumably, other events) are not being called and not running, which can cause trouble in their code
I'm trying to figure out a good way to remedy this
but I kinda need to understand how these events are called, usually, to figure out why they aren't called properly in my case, and hopefully, fix it
i believe it does also use the games ModHooks stuff StardewValley.Mods.ModHooks but im not sure in what way it does, but may be helpful for you to look around there
Is there a way to write custom EventPriority values?
The fact that the presets are -1000 and 1000, instead of -1 and 1, suggests we can have custom values in-between, but it seems like the attributes are strongly typed to this enum specifically?
cast it to EventPriority
Dynamic Map Tiles can now trigger makeover outfits (replacing, swapping, or just giving a new outfit)
https://www.nexusmods.com/stardewvalley/mods/33900
If I want a particular crafting recipe to require less material right after seeing a particular event, is it possible to do an "Update": "OnTimeChange" on a patch to Data/CraftingRecipes?
And if so, is it reasonable to do so?
It's probably slightly more performance friendly to do OnLocationChange and force the event to warp them out of the shop so they have to reenter the location, but using a Condition might be an ever better solution (I do not know when Conditions are checked)
Does recipe data have a Condition field specifically for changing its data?
I got mixed up because of the Unlock Conditions field, which is pretty limited in scope, so unfortunately not, but there might be an Event command to add the recipe directly?
Lemme check
Okay, so if you wanted it immediately at the end of the event, you can use one of the event commands to add the recipe to the player directly
addCookingRecipe <recipe> Adds the specified cooking recipe to the player.
addCraftingRecipe <recipe> Adds the specified crafting recipe to the player.
Oh it's not a new recipe. I want to make kegs and casks cheaper to craft after the event.
The only other way to use a Condition would likely be a Trigger Action, which would run into the same update check issue, probably
Ah, I see
what if you faked it by nulling out the original recipe after having seen the event and adding a new cheaper one
Hmm, that could work. Concerned about compatibility, though.
And honestly I do fret about using OnLocationChange ot OnTimeChange for something like this. Maybe I'd just instead give a message like After a night's rest, casks, kegs, and preserve jars will require less wood to craft.
It's definitely easier to make it sound like it will only take effect the next morning.
I honestly would be concerned about a potential issue with Perfection score if you removed a recipe and then added a new one
@gentle rose here you go - https://github.com/AcTePuKc/stardew-cyrillic-fonts
This uses my own BMFont to generate those for the game YourFont.fnt as I've got pissed on the OG BMFont at some point - that I had to click 101 things to generate with different fonts - while testing which font could be good - but yeah - it's not 1:1 SDV, but is to my liking, the previews are in the repo - to not spam the people here - I've attached just one.
nice! I always love seeing new localisations. I feel like I know what was causing your issues with seemingly needing to use a bold font but I wonβt know for SURE until I have time to go check the code again, which wonβt be any time soon, so in the meantime your solution is perfect
I would not label that official if it is not an official project
it's official for Bulgarian
I have a question about loading events... I have an event that happens in a random location and I am doing a low priority load for that location in case there is no events entry for it. It looks like maybe that is causing it to overwrite vanilla events? Is that a thing that could happen on a low priority load?
if it's not endorsed or created by ConcernedApe LLC, then it is not official
If vanilla has events, I don't think you should load it
Vanilla is the default, it has no priority. ANY load will overwrite vanilla
OK yikes time to push out a patch
Unless you are 100% certain that the vanilla location does not have an Events file (which can be checked in the unpack), you should always EditData
Yeah I had always done that in the past but I was doing an editdata on {{randomMap}} and got an error that I saw I needed to load it first. So I added a load on {{randomMap}} and didn't realize that would cause a problem with vanilla maps when {{randomMap}} was one that had vanilla events
If you still want to do it, what I did with mine was if the conditions to trigger the event matches that day (very specific) I include the file with the on location change patch, which will be removed the next day due to me making sure some conditions no longer match :P
So I have two conditions but one uses on location change and the other is a regular patch
On location change is just the one-day thing
What's worse is now that I'm reviewing the code I think I took out the randomMap that needed a loadData in the first place
easy fix at least
Thanks for the suggestion! I'd normally also do something like that. However, I'm currently making some sort of a modding example for newbie modders (with annotations and stuff), so I try to not make things too tangled.
Nod nod yeah
That thing was funky to make and think about despite being the one to do it
Is that Pikachu
Wdym that is definitely pikachu
also hi wem
Hi wem
:(
omg pikachu!
auuughfuhughfuuhghg
hi speedy 

you guys are mistaken that's obviously Raichu
i gotta finish the spritesheet before events
Would it make sense to give a character more arcs after their "main" arc has already been fixed?
yeah
now that your character has been through this arc, what they are like afterwards is always worth exploring
characters aren't exactly perfect
so technically they could have infinite arcs
if your character is immortal or a one piece character
π
just need to add cliff shadows (already have the detection working well) and finalize things around the rest of town / ginger island, getting close to a release
and some minor bug fixes, like that bench in the top left lol
I will probably be asking for some people to help test at some point in the future
it looks so good!! 
Hey guys, I have a question about FarmTypeManager. Is it possible to spawn my own stone/ore types in? I added the stone in the Objects json and while this is enough to spawn them using C#, it seems like for FTM, something is missing. It is giving me the message "type does not match any known ore types"
I could spawn them in using C#, but I would like to have all the settings that FTM gives me
how would I format a GSQ for when the greenhouse is unlocked?


