#making-mods-general
1 messages ยท Page 612 of 1
Mm that means the wiki is kind of misleading. Should I edit it?
Well, try setting their social tab behaviour first to see if that's a workaround
Crossing fingers.
yeah im looking a bit in the code too and
It's also not wrong, they do still need gift tastes too
theres this check conditions field which always returns false if the npc cant socialize
They don't need to be able to socialize to check for location dialogue if something else creates their Friendship object.
if they don't want to socialise they have no interest in the location I guess ๐
Also if you change their social tab behaviour, either fully restart the game or view them in your social menu first, since it only creates the Friendship when a) the character is first added to the save or b) when viewed in that menu
i.e. a simple patch reload won't cut it
Yup! That does it! I'll add this bit to the wiki, then. Thank you for your help!
To be honest looking closer at it, I'm not actually sure if they need gift tastes if they have the friendship
Interesting little quirk either way
Aa yea I tested it and they indeed don't need gift taste.
Seems plausible to me that it was true at one point with how messy the function that controls this is
to be clear now that I've seen your edit, the social tab workaround will ALWAYS work for location dialogue, regardless of cansocialize
Oh so Social NPC doesn't need gift taste anymore?
this is only for location dialogue
Yea, I mean for location dialogue.
And conversation topics
It is not checking for gift tastes at all. it's checking whether or not the player has an internal Friendship object stored for that NPC
That usually gets created the first time you talk to someone
But you can't do that if you can't socialize
OKay, I get it.
Alternatively it's ALWAYS created in the social tab behavior case
Or a different C# mod can create one any time
(also it's this check that checks for gift tastes and socialization when you go to talk to them normally, which is why they need gift tastes otherwise)
Location dialogue and CTs are just handled in a different check entirely to regular dialogue
Which means for Social NPC, they instead need the SocialTab at least not set to HiddenAlways?
The social tab doesn't matter for social npcs
Because they have no problems getting a Friendship object created. It happens when you meet them
Oh then this is not relevant to Social NPC anymore?
I can try to explain better when I'm back at my desk in a few minutes if you'd like
I'd appreciate it! My current understanding is currently, Social NPC needs to either have a Gift Taste, or have their SocialTab set to AlwaysShown.
While the gift taste is irrelevant to non-socials.
that's... odd. Another one showcased just today had embeds
I'm back at my desk and will preface by really emphasizing that this is only relevant to location and CT dialogue. Consider it entirely separate from everything else RE: gift tastes and socialability.
the one before mine had no embeds as well
im wondering if its new thing
the embed itself lacks an image on the previous one, but I'm seeing it for yours on the desktop pc client
I think maybe Discord is being weird
embeds are pretty nonsense in general, so yeah 
it can help to manually include an image under the post and <> the link, etc
I can see the evelyn expansion embed but not the florence one (android)
When you go to right click on an NPC, the first thing it does is grab the Friendship object for the player for that NPC, which is just a Thing that holds all the information about your relationship with that person.
Then it does a check: Did that Friendship object exist yet (i.e. the NPC was unmet) and can this NPC receive gifts? We'll call this the "didFriendshipExist" variable.
It checks this regardless of whether or not you're actually giving the NPC a gift. It's just checking if it's possible. An NPC can only receive gifts if they are Social and have gift tastes defined and are a villager (the last part is not relevant to custom NPCS)
If it IS possible to give the NPCs gifts AND the Friendship did not exist yet, then it then creates a new Friendship object for that player and stores it. This is the end of this check. This check's entire purpose is to create that Friendship for you (with a hardcoded exception for Krobus, who also has some initial meeting dialogue forced onto you).
Sometime later on in the function there is an entirely separate check for marriage, location, and CT dialogue. All three of these dialogue checks REQUIRE that the Friendship object we checked for earlier exists. If it didnt exist but the NPC was giftable, then it was created back in that first check and so it DOES exist by this point. However, if the Friendship did NOT Exist and the NPC is not giftable, then nothing created that Friendship object and so it still doesn't exist by this point. Hence, there will be no marriage, location, or CT dialogue (however that should obviously never happen in the marriage case)
In order to make that Friendship object exist by that point without relying on them being giftable, something else has to have created that Friendship object by the time the player goes to click on the NPC. One of these things is setting the Social Tab Behaviour to AlwaysShown. If it's AlwaysShown, then the game creates that Friendship object at the same time the NPC is loaded into the save
(Ignore that "didFriendshipExist" variable bit, I meant to remove that when I removed the rest for being too confusing lol)
Alright. Thank you very much for the explanation.
Now I'm unsure on how to convey this practically on the wiki while still maintaining clarity...
how can I select emotions in cutscenes?
NOTE: For location dialogue to work, an NPC must have either gift tastes specified or the SocialTab field set to AlwaysShown. If CanSocialize is set to false, only "SocialTab": "AlwaysShown" matters. Is this understandable?
I would just say "If your NPC cannot socialize or does not have gift tastes, one workaround to allowing location dialogue to work is to set their SocialTab behaviour to AlwaysShown"
It's understandable just not accurate because the gift tastes, socialability, and social tab behaviour are closer to side effects than causes
I could make a mod that guarantees that every NPC has a Friendship object created when you go to click on em and then nothing else will matter because that's enough to make the location/CT dialogue work, even if your NPC is unsocial and no gift tastes and no social tab stuff
(and also because I wouldnt necessarily call this an intended behaviour of the SocialTab thing. It might even be a bug for all I know, it might be supposed to skip unsocial NPCs)
I understand that. But then to be very accurate I'd need to have a long explanation about Friendship object and how it relates to SocialTab and gift taste under the Locational dialogue section.
I mean what I suggested just now doesn't include any of that and would be accurate
Note: for location dialogue to work, your NPC must be able to socialize or have gift tastes. If your NPC cannot socialize or does not have gift tastes, one workaround to allowing location dialogue to work is to set their SocialTab behaviour to AlwaysShown. Like this, then?
Also one quirk to note is that you could have the AlwaysShown thing be conditional, as long as it was there on save load it'd be fine if it was hidden afterwards
I would tweak "must be able to socialize or have gift tastes" to "must be giftable, which requires them to be social and have gift tastes" since its an AND not an OR thing
i.e. "the npc must be both of these things. if they cant be both then do this workaround instead"
Note: for location dialogue to work, your NPC must be giftable. If your NPC is not giftable (either because they don't have gif tastes or is not social), one workaround to allowing location dialogue to work is to set their SocialTab behaviour to AlwaysShown. Alright, is this okay, then?
looks fine to me 
Bump. I can't figure it out. Is it even possible?
$?
have you made any normal dialogue?
Like changePortrait Lewis$1
yes
or is it in the speak command?
speak Lewis$1
speak Lewis \"Blah blah blah.$1\"
Dang, and that's how you change the expression? ๐
same way you do it in dialogue, yes
I have done dialogues - not with expressions
now you can go back and give them some too ๐
No way
That's exactly how I feel what that man speaks
change portrait is for changing the sprite sheet
Ahhh
I would like to clarify, would it change the expression of the full dialogue displayed BEFORE the "blah blah blah" or AFTER?
I'm thinking it's after
but I want to make sure
I meant not before the blah blah blah, meant THE blah blah blah
It only changes the dialogue it belongs to, which is the blah blah blah.
okay that's neat
speak Lewis \"Blah blah blah.$1#$b#hmmmmm$4#$b#I see...$2\"
What are the #'s and the b's?
Oh, the revelation that it's actually the famer who said "blah blah blah" and Lewis is just repeating it to ponder about its meaning.
Are these the ids?
yes, the first 6 to have letter ids too, but can just use the numbers
Dude I'm never finding the right things on that wiki lol
I don't know why I haven't thought about doing this much much sooner.
Just uploaded a batch of sprites for the next update. Now it's time to tackle the gosh dang robit
made this lil template thingy for portrait-making but it may be helpful for identifying placements?
-# sorry for pinging if that's not your preference!
aaaah I love that :)
I WANT TO EAT CLOUD!!!!
Ur name has cloud in it, what's your final words?
gay
How do I add a custom Monster class to whatever dictionary Monster.cs is using?
I'm currently getting the following error:
This mod failed in the GameLoop.DayStarted event. Technical details:
System.Collections.Generic.KeyNotFoundException: The given key 'Robot' was not present in the dictionary.
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at StardewValley.Monsters.Monster.parseMonsterInfo(String name) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Monsters\Monster.cs:line 414
Data/Monsters is where monster data is
it seems like you need something in there for your monster
if your class extends Monster then you'll need an entry for it in Data/Monsters, yes. the Monster constructor calls a function that parses the data out of it
hellooo would non-object item IDs still work for item delivery quests? the wiki just says this
specifically I want the player to deliver the trash catalogue to dwarf- shenanigans etc
as long as it can be gifted
I don't think you can gift furniture
dont know if furniture can without mods though
gotchaaaa
actually it might not matter idk try it
...could I do a conditional patch that makes the trash catalogue giftable for the duration of the quest?
maybe use spacecore so that only dwarf can accept it etc
actually scratch that "it might not matter" it has to be an Object
aww :(
there is no "giftability" setting for things. its determined by item type
aaah okay I see, thank you buttons 
Furniture is a subclass of Object but I don't think it can be the ActiveObject in code
but im not 100% sure what can or cannot be considered the ActiveObject
..I only know the CP stuffs and even there I'm not the best sooo
gotchaa
you can always try anyway just dont be surprised if it doesnt work with furniture
I have questions, but am getting pulled in several directions for IRL reasons 
@ivory plume hey there, is it fine to edit https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Content_Packs to point out that content pack integration via loading and editing assets (ala https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Content is a preferred option for integration with CP features? I'm asking since the general consensus of the community have moved in that direction given recent framework releases and updated best practices
Sure! It could be a good place to document the best ways to do that (e.g. naming conventions and how to detect when the asset is changed).
it's part of https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_Framework_Mods which we can link to
I'll add this paragraph to the content packs page, feel free to chime in (pinging @lucid iron as well as someone who also has strong feelings on the matter
)
Note that a custom content pack format is not required to provide integration with content mods; an alternate method is to provide a [[Modding:Modder_Guide/APIs/Content#Add_a_new_asset custom game asset]] that other mods (including Content Patcher packs) can edit. The advantage of custom assets is that both other C# mods and Content Patcher packs can edit them via the content pipeline, with the latter benefiting from convenient features such as tokens, conditional loading and targeted edits, removing the need to implement similar features in your mod.
should i be relieved or offended that my strong feelings were apparently not strong enough to be recognized /j
The objective part of me thinks it shouldn't be as focused on just Content Patcher since Any mod can choose to use it... but the practical part of me also knows that CP is the only one thats relevant here like 99% of the time anyway
I think it's kind of the important bit practically speaking
If CP doesn't exist in the shape it currently does I wouldn't feel as strong
Hence why that's how the practical part of me feels
But there's some integrations I've personally done with such frameworks via C# and not the intended CP route though so it's not 100% 
I think the C# part is also important (even though probably everyone who cares are already here) since AFAIK there's no easy way to do make a custom content pack for another mod in C# without raw JSONs?
There's fake content packs but I'm not really familiar with that
Yeah and while it's annoying as another C# mod, I'd say it actually hits impractical level if it's a content pack for 
I didn't mean making content packs via C#, I just meant that putting your stuff through the content pipeline isn't making it Content Patcher accessible, it's just making it content pipeline accessible, because it's also C# mods you're benefitting, is all I meant. Which is what you wrote ("both other C# mods and Content Patcher packs") but in my stronger feelings (/lh) should be more equally weighted ๐
But again though that's just in the "technically correct" portion of my brain. The practical portion of my brain agrees that all things considered, it's basically making it Content Patcher accessible
ah yeah I glanced over that part lol
but hey once Composer is released we can add it 
I think it might make sense to rephrase
an alternate method is to provide
to make it more clear that this alternate method is very common and not some niche choice
If I didn't know the value of making something available to the content pipeline (and that was me back when I first made a custom content pack) or of the utility of CP's tokens and other tools, I would be hesitant to consider "an alternate method"
I would agree with that
Maybe just "the most common method" instead of "an alternate method"
though tbh I'm just kinda assuming that its the most common at this point, I don't actually have the numbers of pipeline-integrated packs vs contentpackfor packs still when counting old contentpackfor frameworks
I assume that one wiki page listing them all would have the numbers but they're not in my brain ๐
next and hopefully final version (sneaking in some links to the frameworks page)
Note that a custom content pack format is not required to provide integration with content mods; the most common method is to provide a [Modding:Modder_Guide/APIs/Content#Add_a_new_asset|custom game asset] that other mods (including Content Patcher packs) can edit. The advantage of custom assets is that both other C# mods and Content Patcher packs can edit them via the content pipeline, with the latter benefiting from convenient features such as tokens, conditional loading and targeted edits, removing the need to implement similar features in your mod.
See the wiki page for [Modding:Modder_Guide/APIs/Content|loading and editing content], as well as the [https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_Framework_Mods |external tutorial for making framework mods] for more info. The rest of this page details instructions for defining custom content packs formats.
looks good to me boss
yeah, I like that
it is done
appreciate the Council's feedback
Need some assistance on spawning conditions of this fish I'm trying to mod... I would like for it to change locations depending on the season but I'm not sure how to go about doing that. I currently have " "Condition": LOCATION_SEASON "Forest spring", "Mountain summer", "Town fall", "Desert winter"," in the Location Data but it doesn't work so it's probably not correct..
What asset are you patching that onto?
that doesn't look at all like valid json as you've sent it. can you upload your actual json file to https://json.smapi.io/ ?
Sorry here is the full json file, that will also hopefully answer Dolphin's question, and I must iterate that I don't really know what I'm doing... https://smapi.io/json/none/3b1fe331f0ed48b7a1f9b2975e4bbee1
Okay, so, you probably want to target each Location in Data/Locations separately, you can't just throw them all into the Condition.
So have the whole section under "Entries" just copied 4 times, one for each location?
Also if you are only allowing the fish to be caught in each location for one season only, you can use "Season" instead of Conditions in your entry.
Is that going to be a problem if this is a Legendary fish with a max catch of 1? Like it won't count each entry as a separate fish?
In that case you also put the PLAYER_HAS_CAUGHT_FISH Condition.
Are you intending it to be as rare as a legendary, too?
If so, you may want to set the Precedence field as well.
alright sorry I am really struggling to understand, I know this isn't right because the json checker says it isn't but am I at least on the right track? https://smapi.io/json/none/dad8e92e87ee4420a70ac4d91bb9809d
You need 4 separate EditData actions, each with different TargetField.
Take a look at this instead: https://smapi.io/json/content-patcher/8c582e1b811e4e3e9cec7ee261879bd4
updated the link, per Dolphin's correction
Oooh okay, I gotcha. Lets see if I can fix it...
(you can exclude any fields that are null if the default is null)
(A bit of correction for the Condition field: !PLAYER_HAS_CAUGHT_FISH Current chatoyanttiger.possumfish)
Thanks Dolphin!
Current would be important to include so that only the player fishing got locked out of the fish. ๐
You can also remove the "Format" line if you're doing this JSON as an Include, I just added it so the syntax checker wouldn't yell at me
https://smapi.io/json/none/a10b306201fa450a9cd5d2c1eae8c6d6 ok I feel like I'm getting somewhere but its yelling at me about brackets now
You need a comma after each patch action to separate it from the next one.
https://smapi.io/json/none/6560fb72d70d4031a21a4857cd86ce30
no errors... this might work?
Looks more correct to my tired eyes
still no luck getting this thing to spawn in any season 
What's your Data/Fish entry look like?
and you've already checked that you're level 5 when you're trying to fish it up, since that's the minimum required level in your fish data?
Next thing is probably to do a patch export "Data/Locations" and patch export "Data/Fish" to make sure that your changes are in there.
yeah I cheated my skill up to level 10. I put those commands into SMAPI?
Yep!
It'll create a folder called patch export next to your Mods folder, and the JSON files will be in there
So you can open them up and check that the data got applied
hmm the locations one didn't go through but the fish one did. it told me "[Content Patcher] The 'patch expopatch' command isn't valid. Type 'patch help' for a list of valid commands." for Data/Locations
ah, you might have accidentally clicked your cursor in the middle of the command
o right I must've, my bad
You have a Data/Objects entry for the fish too?
It does look like "Name" in your fish entry needs to be identical to your ID, so that will need to change.
You would use the Data/Objects entry to change the Display Name of the fish when it's caught or in inventory
ye I do, it is here https://smapi.io/json/none/da35a2b5260d44cc89c36b72a7128fbb
oo alright I'll switch that, maybe that was the problem...
"chatoyanttiger.possumfish": "Ichthyodelphi/95/mixed/30/42/2100 2600/spring summer fall winter/both/683 .2 689 .4/4/.15/.15/5/false"
Ichtyodelphi needs to be chatoyantiger.possumfish here.
I don't know if SMAPI/CP is picky enough that DisplayName has to be capitalized correctly, either.
I suppose we'll see!
As a general rule, though, any time an entry is asking for "Id" or "Name", it needs to be the exact same as the internal ID of the data object you're using for the key
Still nothing... argh
I did look at the exported Fish and Locations, its on there and it looks correct..
Okay, and you are definitely there at the correct time and place?
yep, the forest pond during spring at 10PM
Can you give yourself the fish object at all, to make sure that the object did in fact get created?
Yeah I can search for it with the spawn item menu, can spawn it in and even put it in a fish tank fine
Hm
And you haven't caught the fish before at any point in this save, right? It doesn't show up as caught in your collections tab or anything?
Correct, I made a brand new test save after checking to see if I could spawn it in
Were there any errors in your SMAPI console?
Some yellow stuff for unrelated mods but no red and nothing that mentions the mod
going through everything for any spelling errors my dyslexia might have missed 
Wondering if it's something silly like us missing a qualified ID somewhere
Try putting (O) in front of the ItemId in your Data/Locations entry
To tell it to find the object
The wiki doesn't say it has to be a qualified ID, but the vanilla examples are
When I was gandering at some examples I did see some (O)s but yeah I didnt think they were necessary.. maybe they are
hey, i'm making an addon for a mod that uses a lot of aliases (AliasTokenNames in CP)
is there a way to access these aliases from mod?
still nothing
what are we missing
Have you temporarily turned the chance up for the Data/Fish entry as well?
Hmm I don't see where to do that, I'm looking at this section of the wiki
It's the 11th field in the slash delimited list item
ooh wait I do see that, I had to really squint (my brain is having a hard time sectioning out all the numbers in between the slashes) its currently set to "5" and I'm pretty sure when I set it to that I was just copying the difficulty of another mod's fish that was rare, I'll pick something else and see if it changes
thanks for all the help!!
How are you checking in game if the fish is present?
Manually fishing for it with Iridium Pole + bait, I also have Visible Fish and and um... another mod I don't remember the name of right off the bat that shows me catchable fish in the area
You should use Lookup Anything, it's more reliable
And are you checking this with other fish-adding mods installed?
Oh yeah, I did look it up in Lookup Anything as well. It showed weather and time green checkmarked, and the location was highlighted. and yeah I do have a few mods that add fish
Ok so LA is showing that the fish should be present?
Correct
Just to check are you using regular bait, or targeted bait from the bait maker cause that'll increase the odds of catching your fish
I was just using Deluxe Bait
Are there lots of other fish in the area?
could you spawn it in and put it in the bait maker and see if that works?
No at the current time this fish is supposed to appear, there are only 3 other available fish
Ye I could, or I could spawn the bait itself in
yeah even the bait isn't even working x.x
just catching trash and the other fish, and it still doesn't show up on the UI or with Visible Fish
I am reading this right, right? everything should be good Dx
i believe visible fish shows aquarium fish so you need that for it show up (could be wrong on that though)
Its got an aquarium sprite and everything, I spawned one in on a previous test save and checked it
Were you able to catch it before you added the !PLAYER_HAS_CAUGHT_FISH current chatoyanttiger.possumfish condition?
No it has never appeared
I feel like the multiple seasonal spawn locations might be bungling it but I really like that idea...
Your min and max distance from shore are the same which means that you have to land your bobber on the exact correct tile distance to catch it
Since the last json post I changed the min to 1
Try removing every requirement that makes it more difficult to catch. The times, the seasons, the min and max distance, the boss fish, the max catch, the condition, the minimum fishing level.
Alrighty
(I'm going back to my game and there's a good chance I will forget about discord so you may want to ping me when you have results)
Ok I changed my json to this and it finally appears https://smapi.io/json/none/0e210c035aec4117a28d3a717dbf3fa8
also unlike the last one, Lookup Anything actually has a little checkmark next to the location 
(That might just be because there's only one location here now, where before there were multiple?)
yeah very likely
I'll add one more location and see if it flips out
seems to work fine with two locations at least... I wonder what it's hangup is with the original json
Add each thing back in one by one until you find out
Hello, I'm trying to create a custom map as a mod and I need a little guidance how to setup a small quarry area?
Spent a lot of time in Tiled, learning as I go. Marked red is the area I wish to spawn quarry ore in. I undestand it has to be square
super cool design
i only know how by using ftm and i think its like this ""Areas": [
{
"UniqueAreaID": "MyCustomQuarry",
"MapName": "YourMapName",
"IncludeCoordinates": [],
"IncludeTileProperties": [
{
"Key": "MiningSpawn",
"Value": "Quarry"
}
],
"MinimumSpawnsPerDay": 2,
"MaximumSpawnsPerDay": 5,
"SpawnTiming": { /* Set your timing here */ }
}
]
after a lot of minor individual edits, save reloading, and brain hurting, it appears the Min and Max DistanceFromShore were problematic so I just did away with them.. I'm still testing but at least it's showing up now with the original json just without those two values
Thank you for your guidance and kind words : ) I understand you mean to put this code in [FTM] My mod/content.json file
I'm gonna lookup documentation for Farm Type Manager
Hi all, is there any guidance on do's and don'ts for optimisation when mod making, like what types of things had a large performance impact and what is negligible?
Many Ontimechanged
Many cursors edits
I have a machine that I want to look different from 9am to 3pm, and was using ontimechanged to do that, is that the right approach?
I don't think I do any cursor editz
Well if it's just one machine that's fine
It becomes a problem if you have a lot of things editing for example, a map and using ontimechanged to do so
I don't know if you've been told this already, but there's no reason to have a config retexture when you can just make both furniture since players will use catalogues anyway (so everything is free)
I thought about it but they canโt really be used together, ones vanilla style and the other is bog style
pretty!!!
would you consider making one that is VPR styled? or just desaturated. i love whimsical furniture,,, mushy good
kids room real cool now
Ahhh ty!! 
Hm, idk how much VPR differs from what I currently have, but if itโs something relatively simple to do then yeah I might :3
its generally just a bit of muted colors/less saturation. ๐ฉท

how did you get an entire room for kids?
ommgg
my house doesnt get that big : (
upgrades
you can expand it in robin's shop
yeah but like an entire room? :0
yes
i never seen it before
its vanilla
dang
is there a mod that lets u make even bigger thats stable?
ik a lot of them r great but some arent as stable
hmm
wrong channel to ask, elmme go to the other one
I'm checking my plan before implementing it. I know you can retrieve a mod given its id via the Nexus API. I know you can get this from the mod's manifest. Any reason I wouldn't be able to collect all the IDs and redownload them?
Writing a little export mod list, import mod list thing
Use case 1: given a mod folder, user exports list of IDs
Use case 2: given a list of IDs, user redownloads mod list, constructing new mod folder
Don't see why not
I've done this before
Script for a clean list of https://www.nexusmods.com/stardewvalley/mods/<id> that you go through and download (manually)
Do u have premium
Nexus only allows automated downloading for premium accounts and if you have a large enough mod list you'll be taking a very large chunk out of your API quota if you do it too much in one day. But you'd have to be downloading a ton for that, so it's mostly the premium thing.
is there a limit to BuildMenuDrawOffset ?
I think people have made stuff like HTML parser scripts for non-premium downloads
not a lawyer but I think it's technically against Nexus TOS; whether they care enough to enforce it is another matter (for small scale downloads, probably not, but do not quote me for it)
don't think so; do you have a problem with that field not working
Thank you! That's helpful.
from what I've heard they absolutely will enforce it
it doesn't want to go lower than this (112):
this may seem like an insane question
is it possible to change your map mid-game? I dont mind putting all my stuff inside my house, but i would really like a dif map (since im using frontier rn)
or is it impossible
i havnet really unlocked anything
but was curious
Farm Type Switcher lets you switch
o
do you have the code with a bigger offset that's not working?
also note that it's an object with X and Y coords
Ok hello
actually, I need to check that it's not behaving as if the (y) offset is 96 - should have said that the x offset is zero and the y offset is the troublemaker.
๐ฃ ok so.... Mizu updated her animal mods to dynamically pull the internalassetkey ids from the i18n for translation purposes.... how would one go about approaching that with content patcher now, because I can no longer target the ids the same way
So I wanna sorta upgrade sebastian to a nerdier flavour fitting what I think a software dev with an engineer sister should be like ๐๐๐
And wanna do that for my games not intending to publish or anything like that.
And I know how to code but havent used a game engine before to develop a game or smth
Where can I start from?
on my phone can you show an example
yeah one sec
"Common": {
"ID": "{{i18n:BlondeReindeer_name}}",
"Weight": 1,
"Texture": "{{InternalAssetKey: assets/BlondeReindeer.png}}",
"BabyTexture": "{{InternalAssetKey: assets/BabyReindeer.png}}"
}
}```
this is what the skin entry looks like now
in mizus mods
huh
is the string localized or it isn't and it's just an organizational thing
!startmodding
Making mods can be broadly divided into two categories:
- Content packs are formatted text files, and don't need any programming knowledge. They can add/edit NPCs, maps, new items, shops, and more. To get started, see the list of framework mods, the wiki tutorial for Content Patcher, and there might be relevant guides on the tutorial wiki.
- C# mods use programming code to change fundamental game mechanics. See getting started with C# modding.
Usually itโs easier to start with making content packs, since you don't need to learn programming.
Also y'all modding using engines or something else?
If you just want to edit his dialogue/events/sprites, all of this is doable with Content Patcher
actually maybe it's for displaying in the AT menu?
OH awesome command
Are there other commands I can use or like a reference manual ๐๐
oh yeah it seems like it is
The Stardew wiki has an excellent guide on mostly everything Content Patcher; there are several modding guides found here as well
Interested in making a mod for Stardew Valley? Then you've come to the right place! Check out the list for step-by-step tutorials to make your very own SDV mod.
Have you made a mod before and want to share what you learned? Awesome! Just create a new page on this wiki, call it "Tutorial: How to do a thing," and put in your advice, screenshots ...
I honestly have no idea what that means
but it broke my cp file
Oh wow I did not know that it's there
Thanks
okay with TargetField instead of targeting by name you can instead use something like "#0" to target the first entry in the list, "#1" for second entry and so on
And this one from Pathos himself
(but also consider reaching out to Mizu and request that the textures are loaded normally so other mods can more easily reskin them)
It pretty much lays down a lot of things you'll need to know about making CP mds. C# mods, on the other hand, change fundamental game mechanics. I'm not very knowledgeable of the latter but you have our awesome lovely C# nerds to guide you.
ok im just gonna ask cuz I can't keep up and people are complaining at me 
If editing an event to make another NPC involved and part of the dialogue, that works too?
Yep. Events and dialogue or even adding an entirely new NPC is doable with CP.
Is the game written in C#..
Yes
Yaaay awesome thank you
(honestly it's probably not a good idea to localize the IDs in the first place since it means the skins break if you switch languages but I understand that there's no good workaround)
someone made a chart of what mod use what,,, but it was lost to time i think
Also for the record, you don't need to publish your mod at all. It can just be your own personal mod and that's completely fine, too.
generally unless you're like, rewriting a mechanic of the game CP is used
What counts as a game mechanic?
uhhh, fishing, farming etc
Thank you
there's also frameworks to do specific things, but editing stuff is usually CP
it does depend on the hyperspecific thing you're doing
Lol ๐ uhh just have more robotics and software talks involved in the events
So yeah ig just CP
bump
oh editing events is just CP
-# or making new ones!
(If you're significantly altering an existing event you would be better off just writing a new one)
Tho if I want spouse doing stuff like fish and cook the fish (just an example), that will be editing game mechanics right?
you can just, do an event where do they do that
When they said "editing a game mechanic", it's more like "changing the fishing minigame" or "adding a step in crop cultivation"
Oh
Things that aren't already in the game
but if you want them to do that naturally uhhh well which spouse actually fishes
Okii okii
none of em. they can just have a dialogue saying they did, really
So making an event where an NPC fish is just an event with animations, and that would be simple since the game does that already :)
Copy paste some code from Willy's probably xD
Maybe..
also willy doesn't actually fish, he just looks like he is
OH ๐
I think spacecore (or another CP-style framework) allows for wide sprites without C#
god bless spacecore
yeah no character actually fishes like the player, they're implied to. the power of video games
Yeah ๐๐๐
can you show your code?
also try a big value like idk 1000 and see what happens
hypothetically, with configurable skin options, if someone had say.... the white reindeer turned on but not the blonde reindeer, would that jumble the number order?
https://smapi.io/json/content-patcher/31be5853837a456f885a274aa36ad79b it's under bikeshed implementation
probably lol
as a last last ditch effort you can follow what the mod does and roll a copy of the i18n
yeah that's what I thought, I retargeted JUST the grey reindeer and it patched in but to the wrong number id lmao
I'll talk to mizu tbh I think this might be too big a mess
thanks, this looks correct to me
at this point I'd test with various values like negative? nothing in the code points to the offset being clamped or limited
y offset is negative by default; setting it to 1000 removes the sprite from the menu
now try smaller numbers? it sounds like it's working fine and you just need to fine tune the values
(i'm on my phone for the next few hours so cant help beyond these posts)
I know, but the outcomes don't seen - quite right. headdesk back to more trial and error
on a mostly unrelated note, what would happen if I changed "TexturePath": "{{InternalAssetKey: assets/horse.png}}"
to "TexturePath": "{{ModId}}/Ducati" when using Custom Mounts? Asking because I want to do a group of image edits.
as long as it's the same png it shouldnt matter
The animation is hard coded to tell the game to use a specific frame size for that specific animation name(dick_fish), which limits you to frames in the same spot Willy has, but as mentioned spacecore lets you have freedom from beyond that
Thankye
Can I have a condition in content patcher identify when the Desert Festival isn't happening without just saying not days 16, 17, or 18? DayEvent in the docs only lists active festivals and not passive festivals, unless it's a custom festival name in FestivalDates?
I guess I could just disclude those days but my brain is being stubborn
I think only if you can use GSQs
But running GSQ's for Content Patcher conditions is inefficient or something, right?
you cant use GSQs in CP conditions
Alright yeah that too 
For when a map patch is active, It's got some pretty specific conditions but yeah I think just using the dates will be fine
(since theoretically a mod can change the desert festival dates)
There's no specific reason why not on festival dates other than just so it's not active for all of spring
So it should be fine, my brain was just being a little stubborn
What's y'all opinion on auto fishing, is it a big cheat or actually not so big
whatever, your game your rules
Oh god you made me remember that one indian meme
"My life, my rule"
one full of wisdom meme ๐โโ๏ธ
Gotta love realizing I only need the location to be a certain size after I've already made up the design at a certain scale 
At least this way I can remove fencing if I have more ideas for decoration (which I still need to add lol)
At the end of the day, if you are playing for fun and not in a competition, using any kind of mod is only cheating if you feel like you are cheating yourself.
There's nothing wrong with using a mod to make the game experience more enjoyable for yourself if fishing isn't your thing โค๏ธ
Hey does anyone know if there is a way to add custom music for 1.6?
Awesome thanks!
Can you do ChangeLocation on the same map?
cause i wanna move to a different part of the map, like the bottom left of the hospital instead of the topright
since its still the same location i doubt it? not completely sure tho
maybe just fade and change viewport?
yee thats probs the way to go. is it a big jump or more a "player/npc walks somewhere else on the map"?depending on that you can use diff viewport commands
just fades and switches the camera to like the bottom left of the screen
No walking, they get warped instead
oh yeah, then a simple viewport change should be enough probably
how do I make my fish in a fish pond not produce roe? Do I add roe as a ProducedItem but just make the chance 0?
Did you make a custom entry in Data/FishPondData.json for your fish? If not, it will probably just use the default, which produces roe.
Yeah I have a fish pond json and I got it to spawn the items I want but its also spitting out roe which I do not want
I tried setting the roe chance to 0, with 0 min and max quantity but that didn't work
share the JSON?
I was gonna try setting the required population to something absurd like 100 but if you have other insight I'd love to hear it
So, a few things to try:
- Remove the entry for 812 (roe) entirely from your ProducedItems section
- Change your ItemIds to be qualified IDs (with the O in parentheses)
- Add the
"Condition": "ITEM_ID Input (O)chatoyanttiger.possumfish",to each item's data model in the ProducedItem list
ok setting the required pop too 100 did not make it stop producing roe ๐ซ
Selph may know more
Alright I'll try that
o I do have aquarism.. is that forcing it to make roe? and sure https://smapi.io/json/none/b2383b02cd4b472599a78180f67afb59
Scaling roe production: Roe is handled separately from other items. Roe entries in FishPondData are ignored, and instead each fish species is given a roe production chance proportional to the inverse of its value; i.e., the higher the value of the fish, the lower its chance to produce roe.
oh, nice catch!
omg
glad I test things with my usual loadout so I can catch mod interactions... is there no way to stop it with aquarism?
afaik nope
though best bet is asking dalion
well it seems there's a workaround: ||make it an algae item with algae_item tag||
||probably would also make your fish randomly spawn in empty ponds||
It would be nice for there to be a specific tag or something that skips or disables Aquarism's roe production intentionally, but yeah, that'd be on Dalion's side.. xD
Lmao... alright well, maybe that can just be a special interaction if you have Aquarism, like you're so good at fishkeeping you can get eggs out of a live bearing animal...
That'd be a pretty funny request honestly: "My fish is a mammal, please help me turn off the roe production for it"
Not certain how active they are but I'll ask! I still wanna publish today so I suppose it'll just produce roe in the meantime. At least it's not a common occurance
I guess you can rename the roe/flavored to something else (you can rename flavored variants of items via strings/objects)
you can't change the sprite but that's probably good enough
hmm that's an idea. How might I do that?
just make em give you marbles
search for Cranberries in Strings/Objects
I don't recall if it's documented on the wiki
I still might keep it Roe, name it like Peculiar Roe or something like that
hm yeah I am really not sure how to go about doing that without some kind of documentation to gander at as a base ๐ซ i'm a very visual learner... so original plan, just let Aquarism do its thing while I leave a comment on the Aquarism mod page and maybe DaLion knows a way and if not oh well. at least it shouldn't give roe if you don't have the mod right?
ok it's stashed somewhere on the 1.6.9 page lol
(should have been "Cranberry" whoops)
you'd edit Strings/Objects with a new entry for Roe_Flavored_(O)YourCustomFishId
and AgedRoe_ for aged
there are examples but only for the Hungarian localization
man... I'm sorry, I just don't understand. i'm still really new to all this. I may just leave it but I thank you for investigating it
You'd also have to deal with the preserved version from throwing it in the Preserves Jar
that's agedroe as mentioned
is there a way I can change the 23% chance to a higher value?
only with C# wrong, see below
๐ okay
For all ponds besides Legendary Fish and Legendary Fish II ponds, the base chance that an item is possible ranges from 23% to 95% (base_chance = (population of pond ร 0.08) + 0.15).
For Legendary Fish and Legendary Fish II ponds, the base chance that an item is possible is 50%.[2]
The fish is tagged as a Legendary
Hii does anyone know if theres a mod that helps with mail that keeps repeating I keep getting this letter and I have had no luck finding which mod its from 
have you tried searching your entire mod folder for the string
wait ignore me, I misremembered; there's the BaseMinProduceChance field you can use
you can turn that up in your fish data
Lookup Anything may not take that into account though
In the fish pond data?
yes
Would that go in each produced item section?
sorry to ask, but what recolour mod do you use
oo I gotcha, I'll give it a try
id be willing to patch the bug, but sadly i dont own the mod 
I use vibrant pastoral redrawn!
tyty
Ofc!
Do u have Happy Birthday
Yes I do
how do you make it so that before you first meet your npc they show up in social tab with "???" like vanilla npc and also add them to the initial quest of meeting everyone?
this worked btw! just gotta better tweak the individual chances now but its good to go! thank you!
I removed it and the problem still persists 
set your NPC's home region to "Town"
i did that and still doesnt work. what should SocialTab be?
UnknownUntilMet, which should be the default if you don't set it
let me try that
I got this error ;-; :
[Content Patcher] Can't apply data patch "Osmar NPC > Include Osmar Data (from Data/NPCData.json) > Osmar's Disposition > entry #1" to Data/Characters: failed converting entry to the expected type 'StardewValley.GameData.Characters.CharacterData': Error converting value "UnkownUntilMet" to type 'StardewValley.GameData.Characters.SocialTabBehavior'. Path 'SocialTab'..
oh
thats embarassing
also make sure you started a new save to test
it says UnknownUntilMet is not valid
oh wait i saved the code again and it worked!
i have the mod that shows you where characters are on the map is there a way to make it so that until you meet the npc, their name also appears as ??? in the map?
seems like something that mod should change on their side
You can exclude characters from that mod temporarily
uhh hang on lemme find the thing
Well i do want the mod to work ;-; i just thought it was something it did
No, it's temporary, like "Don't show them until they have been met"
ouu okie
Okay so that's a setting in NPC Map Locations, it should hide NPCs until met by default. But if you want to set conditions for them being shown and stuff, here's the author guide
https://github.com/Bouhm/stardew-valley-mods/blob/main/NPCMapLocations/docs/author-guide.md
My mods for Stardew Valley. Contribute to Bouhm/stardew-valley-mods development by creating an account on GitHub.
There is a setting that just lets you see everyone
but it's on the user settings end
I'm trying to make an animation of a single entity that appears to roll across the map using map tiles and like... dear god I do not have the brain power to figure out the timings or positions to make this look good ๐ญ
I fixed it it was the more quests mod
I'm hoping to tackle the error I was getting yesterday after dinner.
I ended up being unable to work on it last night due to work reasons
I feel that pain... I have 21 unique eye layouts to manage ๐
Hey all, need some help regarding dialogue. I'm trying to change Penny's dialogue, and countless times I've opened the game and tried to see if it works, to no avail. In my save, Penny is married to me. She should say a few select lines. I set up the whole dialogue system like this data["Outdoor"] =
...
// INDOOR
data["Indoor"] =
...
// SEASONAL
data["spring_0"] =
...
data["summer_0"] =
...
data["fall_0"] =
...
data["winter_0"] =
...
// MARRIAGE-SPECIFIC
if (isPennyMarriage)
{
Monitor.Log("DEBUG: Applying marriage-specific dialogue.", LogLevel.Alert);
data["MarriageDialogue"] =
...
data["MarriageDialogueWinter"] =
...
I also set up a bunch of debug.
bool isPenny = name.Equals("Data/Characters/Dialogue/Penny", StringComparison.OrdinalIgnoreCase);
bool isPennyMarriage = name.Equals("Data/Characters/Dialogue/PennyMarriage", StringComparison.OrdinalIgnoreCase);
if (isPenny || isPennyMarriage)
{
Monitor.Log($"DEBUG: AssetRequested โ {name}", LogLevel.Alert);
e.Edit(asset =>
{
var data = asset.AsDictionary<string, string>().Data;
Monitor.Log($"DEBUG: Editing {name}. IsOccupied={State?.IsOccupied}", LogLevel.Alert);
if (State == null || !State.IsOccupied)
{
Monitor.Log("DEBUG: Occupation inactive โ NOT replacing dialogue.", LogLevel.Alert);
return;
}
Monitor.Log($"DEBUG: Replacing dialogue for {name}.", LogLevel.Alert);
It only sends these messages in the SMAPI log regarding the dialogue though
DEBUG: Invalidated Penny dialogue cache because occupation began.
DEBUG: Invalidated Penny dialogue cache on save load.
Even though these are sent, Penny's dialogue doesn't change.
Furthermore I invalidated her basic dialogue
private void InvalidatePennyDialogue()
{
Helper.GameContent.InvalidateCache("Data/Characters/Dialogue/Penny");
Continued
Helper.GameContent.InvalidateCache("Data/Characters/Dialogue/PennyMarriage");
It seems like its firing the InvalidateCache and sending it in debug but it doesnt actually work.
And then none of the new dialogue actually appears
If you use ````````` You can put your message in code blocks
```cs
oh.
ill keep that in mind. point is thats the code, and none of it really seems to work. I just sort of need help. Penny is just a starting point. If I know how to do this from now on, making the other characters dialogue should be smooth sailing
I bring this up bc it A) makes it easier to read code, and B) prevents auto formatting things like or statements (||)
okay hold on let me put it in code blocks
Thanks ๐
` // INDOOR
data["Indoor"] =
...
// SEASONAL
data["spring_0"] =
...
data["summer_0"] =
...
data["fall_0"] =
...
data["winter_0"] =
...
// MARRIAGE-SPECIFIC
if (isPennyMarriage)
{
Monitor.Log("DEBUG: Applying marriage-specific dialogue.", LogLevel.Alert);
data["MarriageDialogue"] =
...
data["MarriageDialogueWinter"] =
...
okay that didnt owrk
*work
It should be
TEXT
i might be a moron i dont use discord often for debugging ๐
TBF, it's a pain to do (at least on mobile, which I'm currently on ๐ )
` // INDOOR
data["Indoor"] =
...
// SEASONAL
data["spring_0"] =
...
data["summer_0"] =
...
data["fall_0"] =
...
data["winter_0"] =
...
// MARRIAGE-SPECIFIC
if (isPennyMarriage)
{
Monitor.Log("DEBUG: Applying marriage-specific dialogue.", LogLevel.Alert);
data["MarriageDialogue"] =
...
data["MarriageDialogueWinter"] =
...
`
there we go
Yay!
Helper.GameContent.InvalidateCache("Data/Characters/Dialogue/Penny"); Continued Helper.GameContent.InvalidateCache("Data/Characters/Dialogue/PennyMarriage");
it's probably better to post the full thing on somewhere like pastebin
I could be wrong, but would you really need to invalidate the cache if your editing the dialog like that?
the idea is that the dialogue will replace the vanilla dialogue for a while, not entirely replace it
But couldn't you use GSQs to limit how long they appear?
You do need to invalidate the cache if you want to undo your changes to an asset.
hmm
Not to make them in the first place, though, if your assetrequested handler is there from the time the game launches (bc theyll then be used on its initial load)
I'm just not really sure what's wrong with my code. I can't really figure it out. It's sending only two of the debug messages I programmed, and obviously Penny's dialogue doesn't change
But yeah like Selph says a full post somewhere like Pastebin would be best, real difficult to make sense of C# code in snippets in Discord like that
Or a link to a repo if you've got one
yeah hold on let me get it for you
That said, dialogue assets dont live in Data/
So you're not actually invalidating a real asset
I can answer the reason why not all of the debug statements are printing - you have a return statement after at least one of them
Or editing the right asset if you're using that to check as well (hard to tell)
Where are they?
I see. So essentially the whole reason this isn't working is because I'm an idiot and put it in the wrong folder.
It could still be a different issue entirely! /lh But no I wouldnt call that idiocvy
Don't be so hard on yourself! We've all been there ๐
Just a typo (and a common one at that)
alright let me see if that works. if it doesnt ill be back
Gonna make some dinner then try and fix the bug I encountered last night. Probably going to be back whenever I inevitably fail at fixing it and/or finding convos from last night.
i see
But to the player its platonic roommates
Would be pretty funny if krobus could gift farmer a shadow pendant and we could move to sewers with him
okay so it seems that after I fixed every instance of Data/Characters/Dialogue/Penny, like this, nothing changed.
bool isPenny = name.Equals("Content/Characters/Dialogue/Penny", StringComparison.OrdinalIgnoreCase); bool isPennyMarriage = name.Equals("Content/Characters/Dialogue/PennyMarriage", StringComparison.OrdinalIgnoreCase);
also you probably want to use IsEquivalentTo instead of Equals
it probably doesn't matter in this case? but still
Also make sure youre checking NameWithoutLocale
just a general good practice default
Alright. So the log sent these messages
[StardewOccupied] DEBUG: AssetRequested โ Characters/Dialogue/Penny [StardewOccupied] DEBUG: Editing Characters/Dialogue/Penny. IsOccupied=True [StardewOccupied] DEBUG: Replacing dialogue for Characters/Dialogue/Penny.
Which means my debug works fine. No change though :(
i didnt make any changes to the code apart from getting rid of the content in front.
again not really sure what happened here
you can run patch export Characters/Dialogue/Penny in the console to confirm that your changes got applied by inspecting the file it generates
When is that code running?
Its supposed to run pretty much instantly upon loading a save
Ah, okay i see. it needs a .json afterwards
I mean it says this anyway [Content Patcher] Exported asset 'Characters/Dialogue/Penny' to 'C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley\patch export\Characters_Dialogue_Penny.json'.
Forgive me, I'm fairly new to C#.
You dont need the .json
no it doesn't
I ask because dialogue is pretty cache happy
Okay so I don't need the .json
But without it, none of the dialogue changes
is it possible that maybe the way i specify when the dialogue should be said in the code is wrong?
data["fall_0" for example?
or if (isPennyMarriage)
does the json file show your changes
lemme check
Yes it does
but only five lines
oh wait
no im wrong
Yeah it has all my changes
All my lines are there. Weird.
probably some caching thing then (not familiar with dialogue lol)
make sure to check Characters/Dialogue/PennyMarriage too with the same method
and go to bed and test again
its only 7:15...
So, question here. What are you trying to achieve?
Like, what are the conditions you want your dialogue to appear?
The mod adds a new state to the game. So essentially, it checks "Is Occupation true?" and if it is, character dialogue will be replaced with my own. Dialogue will then play during certain times of the year, obviously. IT will also check if the player is married to an NPC. If so, that NPC will have unique dialogue.
Certain dialogue will also only play outdoors, vice versa with inside of an NPC's home.
I'm planning on adding dialogue for if the player has children, but that will come later.
So a couple things I noticed when doing this method. The debug "AssetRequested" stuff where it replaces stuff only happens when you talk to Penny, but it still shows the normal lines.
B: Upon trying to do the " patch export Characters/Dialogue/PennyMarriage method, it replies with this [Content Patcher] Couldn't load asset 'Characters/Dialogue/PennyMarriage' using a likely type (tried: System.Collections.Generic.Dictionary 2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Object). Try either specifying the type, or waiting until the game loads it before exporting it. See the SMAPI log for details.
ok the correct name is MarriageDialoguePenny
gotcha okay. I'm an idiot, i should really look at the file names!
see if fixing that in your code makes it work
(was on my phone so i didnt notice lol)
in case the suggestion confused you, I'm pretty sure that Selph meant go to bed in game so that the game can reload things with the new day
I genuinely don't know what I'm doing with this tile sheet ๐ญ
-# I mean I do but that's not important 
Mudkip
Time to see if I can properly animate this
the hell
https://stardewvalleywiki.com/Modding:Event_data#Deprecated
Is this not... able to be expanded for anyone else?
I know they are not recommended, but it's nice to be able to see what the depreciated aliases are, and it just isn't giving me the option to expand them
all three expand/collapse for me
I just tried it in two browsers, why the actual hell...
make sure you're clicking Expand and not elsewhere
Expand isn't there anymore- wait there, it came back
okay, computer acting weird false alarm
lol, sometimes that'll happen
Tileset animating across multiple tiles is pain ๐ญ
Smashing my face against the refresh button until it loaded right worked I guess
there's always ctrl+shift+r to force a reload of a page in case it's ever a caching issue
Actually, I'm sure this would be SO much easier if it wasn't a 2x2 sprite, especially just BARELY 2x2
Okay im back. so i changed it to marriagedialoguepenny, and I did the method of making sure its in the .json file thingy, meaning the patch has indeed been applied. But still, no change in dialogue.
THIS IS WHAT YOU GET PENNY
this bug is getting annoying i still dont know whats causing this.
These mudkips take up so much space on the tilesheet
hey there quic kquestion
do legendary fish require "!PLAYER_HAS_CAUGHT_FISH" inside their condition field?
so there isnt duplicate caught?
or is that already handled via other properties
can't get to 100 fish without laying a few eggs ๐โโ๏ธ
Other properties
they're usually handled by catch limits already
Are you using the bulk animation tool?
wait... no.. that's a thing??!
Yup, apparently the option to animate both right and down at once is broken but I've never used that and find the working parts to be very useful: https://github.com/lukas-shawford/tiled-bulk-animations
okay everyone. I just don't know what's happening. i'v efixed a bunch of errors, and it all seems to be working, but Penny's dialogue just doesn't change. Does anyone know any fixes that might work?
Currently it looks a little something like this. The following is for the dialogue.
` // OUTDOOR
data["Outdoor"] =
...
// INDOOR
data["Indoor"] =
...
// SEASONAL
data["spring_0"] =
"...
data["summer_0"] =
...
data["fall_0"] =
...
data["winter_0"] =
...
// MARRIAGE-SPECIFIC
if (isPennyMarriage)
{
Monitor.Log("DEBUG: Applying marriage-specific dialogue.", LogLevel.Alert);
...
data["MarriageDialogue"] =
...
data["MarriageDialogueWinter"] =
...
}`
bool isPenny = name.Equals("Characters/Dialogue/Penny", StringComparison.OrdinalIgnoreCase); bool isPennyMarriage = name.Equals("Characters/Dialogue/MarriageDialoguePenny", StringComparison.OrdinalIgnoreCase);
private void InvalidatePennyDialogue() { Helper.GameContent.InvalidateCache("Characters/Dialogue/Penny"); Helper.GameContent.InvalidateCache("Characters/Dialogue/MarriageDialoguePenny")
This is to invalidate the real dialogue and replace it with my own.
I had earlier help, but none of it seems to be working. It just sort of plays the same dialogue, and doesn't replace Penny's with my own.
If anyone has any ideas on how to fix this, please feel free to ping me.
is there a reason you donโt make a content patcher pack instead?
wdym
you can change npc dialogue without using C# (ie with a content pack for Content Patcher instead) but maybe there is a specific weird thing you are doing that required it to be C#?
so nic was asking if there was such a specific thing you were doing
I just put it into Visual Studio Insider. I thought that was what you were supposed to do.
For making a C# mod, yeah, you'd use something like visual studio
Insider is... an AI thing?
(i have no clue)
i couldnt tell based on a quick google which is why i asked but anyways
Not really
As in, it's not necessary to use C# unless you specifically need to use it
You can do just about anything with C# though
I explained it here
(Please do be aware though that if you ARE using any the AI integrated features of Visual Studio Insiders such as code generation or the like that that is against our rules here. Not saying you are or anything, just giving you a heads up just in case and so you don't attempt it as a solution.)
You can do dialogue changes completely with Content Patcher and no IDE at all though as Forsy says, but do you plan on adding any custom game mechanics or anything later on?
Because if not it would be a lot simpler to use CP instead
If you mean events like the game already has for like when you get high hearts with an NPC, that is also very easy in Content Patcher
What does "occupation" mean here? Like are you giving them jobs...? (Im curious)
Ah.
It's to do with the Gotoro war, right?
Well you've kinda forced my hand here
Dead on
(I saw the post on the stardew mods subreddit)
Ah yes
yeah thats me
I'm a new dev to Stardew.
anyway, i want to get this dialogue working
i wasnt aware you could use content patcher like that
Content Patcher can edit near any asset you can find in your unpacked folder
It accounts for literally the majority of every mod for Stardew across the main modding sites
Something like 56% of all mods I think, around there
If you have exported your dialogue asset and you do see the changes made, but the dialogue isn't showing, have you confirmed that the dialogue keys you are editing are actually the ones that are supposed to be used the day you are talking to the NPC in question?
i.e. not being overwritten by a higher priority dialogue key
All dialogue is supposed to be said on any day after Year 2 Spring 26 I believe
And the only dialogue Penny says is "Oh, I'm going into town!" you know the usual stuff
Though I'm not sure about being overwritten. How can i check that
This describes the priority of dialogue keys and when they're used.
spring_0 for example would be <season>_<dayOfMonth> which will only ever be shown in the first year.
spring_0 is the first year only?
Any <dayOfMonth> format key is first year only.
Though I actually don't think it'd be shown ever since there is no 0th day?
So essentially I've contradicted my own programming my telling my dialogue to ever appear
(I just took it from your screenshot up above)
the other problem i have is marriage dialogue. i dont have more than one save so i cant really confirm whether the other dialogue works, but i can confirm whether the marriage works and the answer to that is no. The marriage dialogue never appears. This is the code that sort of tells what the dialogue is.
Mind you, that debug does indeed fire
But she never says the dialogue
Where are you getting the MarriageDialogue and MarriageDialogueWinter keys from?
I kinda thought they were already defined. I guess they're not. should i change said keys
I'm not sure where you got that information from, but no, they do not exist
huh.
weird
I must be thinking of an older version or something
Anyway, is there an equivalent to said keys
How old /lh
I don't think they existed in past versions either. Regardless, the dialogue wiki page I linked you to explains how dialogue works and what the possible keys are as well as the specific asset for marriage dialogue.
okay thanks ill take a look :D
Alright looking at these keys, should each of these keys be applied to each line of dialogue?
actually, stupid question
It might be worth making a quick content patcher dialogue mod just to get the hang of formatting and resources first 
Hey Vin just as a reference point for the junimos, visual studio insider is basically VS's open beta that people can sign up for to try out/test new features before updates get released. It's not specifically to do with AI, though general VS updates can include AI features, and people with insider basically just get earlier access to it
Is it edible
huh
thanks for filling me in!
anything can be edible, the real question is whether it's milkable
weโre not doing the milk jokes anymore 
sadge
BAN SI!!!
Egg wine wins once again
Pockets
Is it tied to clothes or farmer?
what I showed isn't, but you can set custom pockets for specific shirts or pants
there's two sets, the default which is in the config, and clothes specific which uses CP
Here's the config:
{
"ModEnabled": true,
"Alpha": 0.25,
"DefaultPockets": {
"DefaultShirt": {
"ClothesType": "SHIRT",
"HotKey": "None",
"StartX": 16,
"StartY": 36,
"Width": 32,
"Height": 24,
"PocketSlots": 9,
"PocketRows": 3
},
"DefaultRightPants": {
"ClothesType": "PANTS",
"HotKey": "None",
"StartX": 16,
"StartY": 60,
"Width": 16,
"Height": 20,
"PocketSlots": 4,
"PocketRows": 2
},
"DefaultLeftPants": {
"ClothesType": "PANTS",
"HotKey": "None",
"StartX": 32,
"StartY": 60,
"Width": 16,
"Height": 20,
"PocketSlots": 4,
"PocketRows": 2
}
}
}
Hot key 
๐ญ
Next time if you wanna post a video then you may wanna send a media link for it and not video itself
Alright gentlemen. This is a basic setup for marriage dialogue. Though on setup, I walk outside. Penny is reading outside my farmhouse (she's married to me in that save) and she says a normal line. Is everything normal here? I looked pretty closely
i feel like a moron constantly asking
seems like that's the patio line, which does not look like part of your changes
what patio line?
When she reads, that's when she's in her spouse patio, and the spouses have a specific patio dialogue line
You have outdoor ones, which i think only covers the porch?
just in case I'm talking about this line
so i should change the outdoor lines to patio
or add a new one, your choice
the outdoor lines apply if she's just standing outside near the farmhouse entrance
I see okay
let me try it now
sigh... this is annoying
i was too lazy to find where she was so iw ent to sleep, shes in my kitche, says a line about being the first day of summer :DDDDDDD im dying
no more embed fail
There has to be a better way of doing this. Itโs clear writing dialogue inside visual studio isnt working
Making mods can be broadly divided into two categories:
- Content packs are formatted text files, and don't need any programming knowledge. They can add/edit NPCs, maps, new items, shops, and more. To get started, see the list of framework mods, the wiki tutorial for Content Patcher, and there might be relevant guides on the tutorial wiki.
- C# mods use programming code to change fundamental game mechanics. See getting started with C# modding.
Usually itโs easier to start with making content packs, since you don't need to learn programming.
Right but I still need to use C# to make game mechanics.
You can do both
Many mods have two folders inside the mod folder, one that loads c# stuff and the other that loads cp stuff
Okay cool thanks
if you need the dialogue to happen after a certain event, you can trigger it using a mailflag (mailflags are in the modding wiki mail data page)
Gotcha
Beloved content patcher can do a lot
I have completed my first event in quite some time
and tested it
huzzah
I have two more short and simple ones before I have to deal with fancier stuff. like making a squirrel hop out of a bush.
I will cross that bridge when I get there
!comission
!commissions
If you're looking for people who do mod commissions (either art or code), here's a wiki page with a non-comprehensive list of people who do them: https://stardewmodding.wiki.gg/wiki/Stardew_Mod_Commissions
Who to contact for map and buidlings and what does it usualy cost ๐
you can use control/command f on the page linked there and use maps as a search term, i have no clue about costs
Farm Type Manager config editor is amazing
thanks to it I managed to add stuff to my map without any coding experience: 1. quarry area 2. meadow growing seasonal flowers 3. wild meadow growing mushrooms after raining 4. small river basin spawning clay
@west thunder it's not rlly that hard to make new Express for vanilla chara, so long as you don't change their original ones. Just put them at the bottom of the portrait sheet, and write whatever dialogue you want to go with it. The issue comes from when other people decide to use a portrait mod since obviously they won't have those portraits
I guess issues can also come up if someone uses some kind of character expansion that adds their own expressions in
But tbh, i wouldn't worry about those things since it's impossible to account for every possibility
can just be for players who dont play with any modded portraits (me)
Even if you try and add built in compat there's always gonna be someone asking for compat with a mod you've never heard of
It's unending
I had a feeling for, like, all of those.
If I were to do that, I know full well people will ask for versions of it in the style of a million different hyper-realistic mods.
Hi, is there anyone who knows of an existing (open source) mod that has created a new minigame using the IMinigame interface using SMAPI?
IDK if they're open source, but there are two mods that come to mind:
- There's one that turns the fishing mini game into a bullet hell
- There's one that I believe modifies the calico jack minigame
I can try and look for them later, but I am about to start work ๐
There is the Stardew Arcade mod that does that: https://www.nexusmods.com/stardewvalley/mods/37938
aedenthorn also made a puzzle mini-game: https://www.nexusmods.com/stardewvalley/mods/41308
Only Jigsaw is open source, but you could decompile them anyway I think?
So, what are you looking for?
The existing minigames in the game are pretty decent examples as is
IMinigame is....pretty manual
what do you think would happen if I put a shirt in its own pocket?
I might also look at the puzzle mini game, thank you for replying.
It's probably pretty poorly coded
it's not a minigame I think just an IClickableMenu
The universe implodes /j
Good question tho 
lol I'm afraid to try
I am inexperienced with modding stardew, so I am looking around to see what can be done.
I have some ideas that pertains to making a minigame, but I might also look into the IClickableMenu
If you look at the actual minigames in the game, those are pretty good examples here.
On it right now ๐
If you have questions, feel free to ask!
Thank you!
I think you can theoretically put clothes with filled pockets inside pockets of clothes with pockets
but I draw the line on putting something in its own pocket... I still don't know what that would do lol
so, I force close the open pocket when you unequip an item with an open pocket
by default, every pants and shirts gets its own set of pockets based on the config file; you can change that so you have one set of pockets no matter what you are wearing
and can set specific pockets for specific shirts or pants
do you need to make festival animations (ex. flower dance) or does the game just do it? is there anywhere where you'd define this?
you don't have to define it, just draw the animations the game checks for the correct spots on your spritesheet https://stardewvalleywiki.com/Modding:NPC_data#Overworld_sprites
how does it know :0
it just knows that 44-47 are the dance sprites for male characters and plays the those sprites
oh that's good to know cus idk if they are at that spot
you just have to draw the sprites based on whichever gender your npc has, the link i send has the correct positions listed
what about events like spirits eve? how does the game know to change the outfits?
that's defined in appearances
oh okie
it's listed further up on the same page
Is there any way I can run the game faster when testing, such as instantly loading into a certain save?
!reload
- Content Patcher pack: enter
patch reload <your_mod_id>in the SMAPI console window. This will reload and reapply all your patches (but won't recalculate theConfigSchemaorDynamicTokensections if you use them). - Translation files: enter
reload_i18nin the SMAPI console window. If it's for a Content Patcher pack, also runpatch reloadafterwards. - C#: see the Visual Studio hot reload or Rider hot reload feature.
๐
I'm not at pc so can't check game code but can someone tell me if marnie sells you the milk pail and shears only once? Or can you buy infinite number of milk pails from her?
Has anyone ever modded new glasses into the game? I have the alignment right but I can see the player blink appearing over the glasses. Not sure how to disable it or if its a rendering layer issue.
you know how when you pass npc sometimes they'll like- talk to each other in text bubbles? is there a way to control what they say, to who,and when?
also do any of you guys know of like a good heart event planner or a planning method? it seems so overwhelming and hard ;-;
Hey listen, whatever ya'll do, don't post your mods on curseforge.
you can buy more than one of each!
dw, very few mod authors do so
Just REALLY don't. They're really scummy people
we know dw ^^
aaaa shooot okay, a chinese player has left a comment on my mod that they hope the chinese translation can be updated and aaaa I'd love to but I don't know chinese and there's no guarantees that the person who originally contributed the translations will come back, they were last on nexus in February this year
I sent them a message, though. Basically just saying the mod's been updated and if they want to come back to do translations they can but I'm not expecting it from them
And the person who contributed French translations hasn't been on since June 2024 (less than a month after they created their forums account which I find interesting) but I sent them the same message
Do you have the translation integrated in your mod?
Yes
I see. Yep, it's best to just inform them that it isn't your translation and be transparent.
This is also personally why I don't incorporate translations in my mod as a general rule.
Yup! I feel like I made it clear that I'm not expecting anything from them, just giving them the information that it could be done and the option if they want to
At least I hope I made it clear, I worry a lot about this sort of thing
Yep, good call. I know the struggle of wanting mod users to have the best experience (including having the privilege of enjoying a translated mod in its updated version) but there's just some things we can't control.
If your french translator is unavailable, I could translate your update if you want 
finalllyy sorry just want to say i made it!
Looks great! Congratulations! 
That would be awesome! Thank you!
Although it's worth noting I'm working on another update that'll end up adding more things to translate
It's alright dw ^^ You can ping me in my thread (link in my profile) or send me a DM whenever you need my help
oh, i feel this. one of my mods ships a turkish translation that someone PRed at me a long time ago, but now it's out of date and they don't seem to be around anymore and at this point it's been too long so i can't reasonably contact them without sounding weirdly desperate. so it's just... out of date and i'm powerless to fix it. but also i can't remove it because that's just strictly worse
you know how when you pass npc sometimes they'll like- talk to each other in text bubbles? is there a way to control what they say, to who,and when?
I'm like 99% certain you can buy an infinite number of them
C# is required for this
you should be able to edit the actual text with content patcher, but you can't control how it triggers, or for whom, and you can't add new lines
ohh okie
also, how do you do custom dialogue for when you gift npc a specific item
in your dialogue you add lines like this, AcceptGift_ItemID then whatever you want the dialogue to be
ohhh i was missing the part where i update the i18n
how does it work for when, for example, alex is working out and you try to talk to him and then the game tells you not to bother him because he's working out?
that's probably schedule dialogue
meaning, in the npc's schedule, the entry says "go to this location, play this animation, and show this text when spoken to (while at that location)"
sometimes that text is dialogue, and sometimes it's a % dialogue which hides the portrait box and is usually phrased like "haley is ignoring you" or similar
Agreeing with ichor. That oneโs just using % in your dialogue entry.
Hey there, I am working on my first mod, and was curious if anyone had any good links to tutorials or breakdowns of how to create new farm animals?
So far I've been looking at how other mods that add new farm animals are set up, but I'd like to have a better grasp on what needs to be added and why?
This might help if you haven't seen it already https://stardewvalleywiki.com/Modding:Animal_data
i believe that one doesn't use %
Much appreciated!
Wdym?
Wait, what are you disagreeing with?
the % part
Is this clear and easy to understand?
- DO NOT assemble this mod and then redistribute it in an assembled state, edited or otherwise! Doing so is a violation of the asset usage permissions set by clefairykid and MissCoriel. You may, however, make edits to their assets for your own use. I personally encourage users of this mod who do not like the up-and-down motion of the motorbike's sprite to use image editing software to merge "DucatiEdits.png" down onto "horse.png" and then move half of the Ducati sprites up or down one pixel to eliminate the bounce, making sure that the file retains its name and location (and that there is only one "horse.png"); then set the custom mount kit's only configuration option to a checked box, if using "Generic Mod Config Menu (GMCM)" (https://www.nexusmods.com/stardewvalley/mods/5098), or find the mod's "config.json" file, found in the main folder of "[CP] Ducati Motorbike Custom Mount Kit" after the game has been run with it in the "Mods" folder, and change "false" to "true" (quotation marks excluded). Again, DO NOT distribute your edited "horse.png" out of respect for clefairykid.
For Haleyโs specific Haley is ignoring you dialogue?
I was agreeing with Ichorโs example of that specific example of execution 
ah
Aka the descriptive one, but youโre right with Alexโs lines. It indeed doesnโt use % but that execution also works.
yeah i just want to point them in the right direction cause the animationDescriptions are defined in a different place compared to schedule strings
Thatโs completely fair 
oh god yeah my i18n file went from 390 lines (which is not including the 2 brackets at the start and end) to 1142 and counting
sounds like you need more
opinions, please?
I mean I'm fine with adding more but that's just more work for translators 
I really wish I kept track of old entries that I edited cuz that means the current translations will need to be skimmed over to make sure they're still accurate 
hi just in case, i believe this page can be very useful to you
https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC and how Alex's workout works is detailed under Schedule animations and string dialogue
is the bounceless version something you might be able to provide yourself?
Any tips or tricks on making your own skull cavern or mines?
Try looking at Spacecore dungeons?
That sounds like a video game in itself
No. "You are not allowed to use assets from this file under any circumstances." https://www.nexusmods.com/stardewvalley/mods/2918
And I am not up to adding a dozon or more conditional sprite edits rn.
I know this was posted for someone else, but this has a lot of good info to help me figure out my mod. Much appreciated! I only wish there was one on there for creating farm animals, but it still helps give me some info I was missing/not understanding.
you can always look at other mods and see what they are doing + use the page mailia sent, if you ever get stuck feel free to ask in this channel 
anyone run into this issue before and know what might be causing it?
Projectiles from farmhands duplicate and don't start at the correct x/y.
Like...
1st project spawns at the farmhand but only travels a short way before vanishing
2nd projectile spawns farther away from the farmhand but covers the whole screen.
and both projectiles are real, if a monster is in the "sweet spot" were the 1st one despawns and the 2nd one spawns. it does double damage.
yes what i meant is something like that. like the game telling you, not the npc
how do I add descriptions to the requirements list on nexus?
@round timber how does yours show up? mine just falls back to the regular loved dialogue
Click Actions, edit, then edit the Requirement note
can you show your json?
yes which one?
whichever one adds the dialogue
Under requirements
Like a descriptive dialogue?
so Osmar is the internal name of the NPC? what item are you testing with?
yes, like the one where theres no portrait and the game says "haley is ignoring you" for example
Yes, then % works just fine.
the very last line is an item of a mod, but my custom dialogue also doesnt work with stardrop tea
do you have an example of how it should be written in json?
%Omar is cooking eggs right now. Better not to disturb him.
is that what should be written in the i18n?
how?
@round timber tbh ive been having that issue for a while where i'd set a custom dialogue for stardrop tea and it just falls back to regular loved dialogue instead of the custom one
have you double checked youre actually including this json anywhere? it kind of sounds like the changes just arent being loaded into the game at all
Just had a look on my end, and I'm... not sure you can enter arbitrary notes using the new file-to-file requirements.
it only works for "old"-style global requirements, not per file ones
Wow, yeah, I had no idea they'd removed that functionality as part of it.
yes, this is my dialogue json and the actual dialogue is in i18n and the dialogue works fine. it's only these 2 specific ones
-# feel free to write a note of complaint to Nexus
bleh!
I still want them to understand some files have OPTIONAL requirements and this should be a thing you can show on the requirement popup
I opened mine too andโฆ eurgh
Requirements for specific files is nice, but it doesn't cover uses of optional requirements
Okay, they're looking at optional requirements for the new system at least.
it'd be nice if their new system was able to cover the uses of the old system before they launched the new system...
I am not a fan of this new system. Sigh lol
For sure!
Isn't that only if you're doing file specific requirements and not entire mod requirements?
@round dock how would you write a dialogue with an npc that only happens when you reach a number of hearts with another npc
like in terms of json
Ducati Motorbike Custom Mount Kit
Adds a Ducati Motorbike with engine sounds, three motorcycle helmets, a bike shed with working garage door, and reskins the horse flute to match the Ducati. Intended to supplant the vanilla horse. Some simple and easy assembly (moving files between folders) required, out of respect for clefairykid and MissCoriel.
Ooh, even a mask showing what came from where? I like that!
Things are going so well ya'll won't believe it
Yeah, town is fun
Is there a way to update the showcase post with a new thumbnail?
Game State Query is your friend
It's not letting me unpublish it (use any commands) in the showcase
No
And showcasing doesn't handle attached media as far as I know
@severe cairn in your mods do you have any special dialogue for specific items gifted
Just the resulting thumbnail from whatever link you put in it
boo! oh well.
ngl im very happy it crashed and burnt cus i changed a bunch of code relating to my file format and i took a lunch/dinner break and forgor everything i was doing
yep, its in modding:dialogues on the wiki
and a bunch of other dialogue stuff
i tried doing it and i think i did everything right but mine still defaults to default loved dialogue :(
then why does the pinned message say we can remove them?
Because it's a Discord permissions issue that has not yet been worked out. It's broken.
Theeeen update it to say so? 
how did you write it? :0
like normal ig? just like write the dialogue inside i18n then in dialogue refer to the dialogue made in i18n. but it just defaults to loved dialogue
(Intended tone of voice: Confused, trying to be helpful & a bit silly.)
oh i meant in the dialogue json! Like the code, can you copy paste it?
yes!:) here's the link: https://smapi.io/json/none/4bb7b413747c460e9890cb4877e0ace7
try removing the "Dialogue.Osmar." part
in the left string! not in the i18n or the right string
@severe cairn i got this from CP on smapi: [Content Patcher] Ignored Osmar NPC > Include Osmar Data (from Data/Dialogue/OsmarDialogue.json) > Osmar's Dialogue: Entries > 'AcceptGift_(O)MissAnaira.VanillaCookingRecipes_StrawberryCheesecake' value is invalid: '{{i18n.Dialogue.Osmar.AcceptGift_(O)MissAnaira.VanillaCookingRecipes_StrawberryCheesecake}}' can't be used as a token because that token could not be found.
you have i18n. which should be i18n:
Character design idea: Has anyone ever made a monster or character who faces only to the left and right? Like older games (80's-90's) would do this a lot, like faces left to move up and let, faces right to move down and right.
coding things fr ๐ reminds me of when nothing would work and i was crying dying only to realize i misread a comma as a period in the tutorial T_T (it was my first time doing Real Coding so I didnt realize that periods shouldnt go there)
