#making-mods-general
1 messages · Page 20 of 1
Given the game's mechanics, that does make sense; friendship decays, NPCs forget about your gifts. Does the game have a system for marking dialogue as "heard", e.g. to add it back to pending at the end of the day if not "heard", or does that involve a whole bunch of extra complexities around event keys and so on?
(....i have to do an append to gift tastes for all of my mushroom themed items because wHy are you giving a poisonous mushroom to someone)
demetrius would enjoy it
yeah a few people would be fascinated, but most will be like "whAT"
there's that one logic somewhere that clears eventMemory iirc
though i don't think that's really reasonable since it's a gift
? or maybe the same logic for the dialogue when you sell to pierre's would be better?
i dont think i know of anything that checks whether a specific dialogue line has been heard before (someone else might?) besides just setting a mail flag from within the dialogue itself
i suppose you could make your own list to track seen dialogue keys, though that seems like a rather ancillary feature for a mod like this
Oh yeah, mail flags. Well, I like this idea though I think I'll get a V1 out first to see what the reactions are.
If the basic mechanics seem solid then I can add little immersion tweaks like that.
(It's almost there, I think. Just have to do the day-end/day-start logic to receiveGift or return it back... and test it... and add a console command to test so I don't have to keep restarting... and probably a few other things)
there is an Action Dialogue.onFinish that you could set in the dialogue that you append to the NPC yourself
so you could mark an NPC who received a gift as "pendingResponse = true" or something and have that Action set that to false, so you know it was read
if they dont talk to the NPC and see the dialogue, that Action never fires, so the NPC will still be pending and you can set the dialogue again on the next day start
(or yknow, probably better to just add the NPC to a list and remove them from the list with an action, rather than iterating over every NPC to check if they have a response pending, but i was just trying to get the core concept wreitten)
No worries, it was clear enough. I've never dealt with dialogue at all though so there'd be some reading involved.
creating a Dialogue is super easy, just need an NPC, a string, or a translation key (Strings/StringsFromCSFiles:blabla etc) and then NPC's have a setNewDialogue command that will take that dialogue and add it to their daily dialogue
either by overwrite or by putting it in front of their usual daily dialogue
So if there's that item flag for giftability, what's the spacecore function do differently?
i dont know what spacecore function you mean
i didnt know it had one for giftability
So setNewDialogue = "Daily dialogue"? That's useful.
sorry, not command, a function. so like NPC.setNewDialogue(Dialogue, bool, bool)
Oh the giftable disallow?
one of those bools is the overwrite thing and i f orget the other one, i dont have ilspy open atm
Right, I can see it. The second is add, third is clearOnMovement (no idea).
oh thats for schedules probably
GiftableToNpcDisallowList - A dictionary of NPC names to messages that should show when you try to gift the item to them, instead of them receiving the gift.
if they move to another location that dialogue should get removed probably
if thats set to true
The other question would be how to trigger a mail flag or other thing when the dialogue is spoken.
Oh, so you can be very specific with spacecore vs a boolean with core.
you can set the onFinish field on the Dialogue instance itself
And the other other question would be how to combine custom "received by mail" dialog with the vanilla gift responses.
or you can use trigger action actions as a dialogue command
the latter goes in the dialogue string itself though and relies on whoever writes that dialogue to remember to include it
NPCs also have a TryGetDialogue function that will return a dialogue instance if you give them a dialogue key like RejectItem_ whatever
so i was thinking you could check for a custom key you define, like gotGiftInMail and if they have dialogue for that, load it as the dialogue to add
if they dont, then, idk. either they dont respond to the mail or they use a fallback (like maybe the usual gift response)
TryGetDialogue returns the dialogue and doesnt add it to their daily dialogue so you can add the onFinish stuff first
Is this last train of logic all related to trigger actions? I don't use those either (thought they were just a CP thing).
Of course I know about TryGetDialogue since I'm using it for the gift-disabling for rejected gifts from earlier.
the onFinish thing is a System.Action action
not a trigger action action
so a delegate or something i presume
its a field on the Dialogue instance itself and not within the dialogue string
I get it, just didn't follow where the whole thing about custom dialogue keys or gotGiftInMail came in.
i was just saying that so you could have custom responses for getting a gift in the mail specifically
if you wanted
That would be covered by setNewDialogue, no?
but how would you know what dialogue to load to add to setNewDialogue?
What I meant was that the custom responses would probably have to be a hybrid of the NPC's vanilla response and the mail stuff.
I don't really want to write custom got-by-mail dialogue for every vanilla NPC, and every modded NPC, haha
thats why i was suggesting the custom dialogue key. if they dont have that, then you can load whatever dialogue you already had in mind
So it'd be some generic personality-based template like "Hey, I got the {X} you sent: {vanilla response}"
but trying to load the custom dialogue key first would let people who did wanna write got-by-mail dialogue do so
Why a custom key, though? Why does it need a key at all?
Oh, you're picturing some future world where a half-dozen other modders want to write custom NPC responses for this action.
or responses for the vanilla NPCs, if they want
but i do know id use this for my NPC if it existed
its one extra dialogue string in their already long list of dialogue, it aint much to add for a neat feature
(for the npc maker i mean)
I'm not anticipating that myself, but we will see. I'm always open to adding APIs and other moddability stuff if people ask for it, but trying to anticipate everything that they might want to do can burn up a lot of time.
itd just be a single extra if statement to support it, though
Perhaps. Or perhaps not. What if they want it conditional? Different for specific items, or for universals? Random responses depending only on gift taste? Hard to predict what precise combination any given NPC or other mod author would want.
That's why I'd rather wait 'til someone asks. Then I can interrogate what they really want to do.
Having code anywhere (including in a mod) that is not exercised/tested is a net negative for maintenance.
dont you already have to check for different responses based on gift taste anyway?
or specific items?
to get the vanilla response dialogue
The game does; I don't.
oh, i see, i forgot you could just call GetGiftReaction
okay, i concede it is more work than i expected
i guess you could check the Dialogue.temporaryDialogueKey or Dialogue.TranslationKey and then just append "_Mail" to it, and check if that exists? and if it doesnt, just dont do anything, since the original dialogue the game got is still there
Don't take my reluctance the wrong way, my philosophy is tempered by far too many years (I won't say how many) of learning and reinforcing the lessons that "nothing is ever as easy as it seems" and "every temporary feature/workaround is actually permanent". I will definitely get to that if people want it; if it really is a simple change, then it is after all only 5-10 minutes of work to make that change and push a new version of the mod.
thatd let someone add mail specific dialogue to any of the already existing universla, specific, taste-dependent etc dialogue keys
nah, im not taking it the wrong way, you were correct that it was not as easy as i initially thought it was
thats a #1272025932932055121 question i think
Sorry lol looking up "permissions" put me here
i am in... scary unknown territory
"Operation": "Append",
"Target": [ "Fields", "Demetrius", "2" ],
"Value": "{{ModId}}_VeiledLady {{ModId}}_VeiledLadyGleba {{ModId}}_Chora {{ModId}}_ChoraMilk {{ModId}}_PanellusStypic {{ModId}}_TomYueaPhai",
"Delimiter": " "
}```
if i'm gonna append these to his "liked" category, i know that that's the value at index 2, but how would i go about it 
(*squints to self, i think i did it, i guess i'll have to test after labor day dinner with family*)
no
it'll be 3, but almost here
{
"Operation": "Append",
"Target": [
"Fields",
"Abigail",
1
],
"Value": "Lumisteria.MtVapius_Amethyst_Polished Lumisteria.MtVapius_CrystalRose Lumisteria.MtVapius_Cooking_JamPie",
"Delimiter": " "
},```
here its 1 (loved), so you'll as "why 3?", well it's because it's an alternate of the string ("i love this!!" and the numbers)
so 2 would be "i like this.")
many thanks
i am too lazy to add regular dialogue right now so i'm just gonna throw it into the liked generics
if you wanted to add regular dialogues to a vanilla npc you would do it by gift taste reaction unless you wanted to overwrite the generic liked dialogue
i was gonna read more into attempting dialogue based on age, but if that's unfeasible i'll just get away with being lazy (why are you giving strange mushrooms to anyone except demetrius and linus?)
oh i forgot the wizard too
you need to add the dialogue line to the character dialogue so you can't target everyone included modded, but you can have lines for each npc you want if you add them
nyeh too much work
{
"LogName": "Caroline Dialogue Gift Taste",
"Action": "EditData",
"Target": "Characters/Dialogue/Caroline",
"Entries": {
"AcceptGift_(O){{ModID}}_ButterflyLavender": "{{i18n: SereneMeadowCarolineDialogueAcceptGift_(O){{ModID}}_ButterflyLavender{{Random:R01, R02}}}}",
},
},```
here for ex. Possibly you can have that being targetting several npcs at once
Hi all! Anybody know how to create custom conditions for swapping sprites/portraits? Like if I want a different indoor/outdoor sprite?
appearance system does that pretty solidly
I tried this:
{
"Action": "Load",
"Target": "Portraits/Sebastian",
"FromFile": "assets/Portraits/Boy.png",
"When": {
"Season": "Summer",
"Weather": "Sun",
"IsOutdoors": "True"
},
"Priority": "High",
"Update": "OnLocationChange"
},
{
"Action": "Load",
"Target": "Portraits/Sebastian",
"FromFile": "assets/Portraits/Boy_nohat.png",
"Priority": "Low",
"Update": "OnLocationChange"
},
it circumvents the need for 'onlocationchange'
In Data/Characters, you can set the Appearance field to change following conditions.
Here's the vanilla example for Abigail's winter clothing, if you navigate to Data/Characters and Abigail for the entry:
{
"Id": "Winter",
"Condition": null,
"Season": "Winter",
"Indoors": true,
"Outdoors": true,
"Portrait": "Portraits/Abigail_Winter",
"Sprite": "Characters/Abigail_Winter",
"IsIslandAttire": false,
"Precedence": -100,
"Weight": 0
}```
ok, schedules in my custom location work fine, but location based dialog doesn't seem to work at all in the custom space, to be clear, when the wiki says <location><x><y> it's talking about the tile x/y right? (like i'd find in tiled)
like this:
"mytigio.DarkestDepthsAssets.Location.BaseCamp_19_38": "{{i18n: NPC.Jakan.Dialogue.PleaseShop}}",
"mytigio.DarkestDepthsAssets.Location.BaseCamp_27_6": "{{i18n: NPC.Jakan.Dialogue.DwarfKing}}",
"mytigio.DarkestDepthsAssets.Location.BaseCamp_5_44": "{{i18n: NPC.Jakan.Dialogue.Fishing}}",
"Mon": "{{i18n: NPC.Jakan.Dialogue.Mon}}",
Somebody in my mod comments has found an error in the wiki I think. The wiki page for pig states they can dig up truffles, whereas reading the code, makes it seem this is not the case (for reference: Pig uses Utility.spawnObjectAround which in turn uses Item.CanItemBePlacedHere the parameters here check collisionmask.all and thus doesn't support spawning on flooring)
hmm what's the error?
This line, on the Pig wiki page under Produce -> location
Yes
But they also pass ignore passable
Then why doesn't it work?
It's actually an earlier part of the code actually
Oh, so it happens even before it hits DigUpProduce, interesting. Doesn't this still mean that they can't dig up truffles on flooring though?
I feel that (< Should be going to bed by now too, but got invested)
I'll just keep a link to the messages and look at it tomorrow

Past atra seemed to think that code was worth yeeting though
I trust past atra
Current atra should go make coffee
Thanks for help current atra
feel better
is "mytigio.DarkestDepthsAssets.Location.BaseCamp" exactly what you have your Location defined as in Data/Locations? Everything I see indicates it is talking about the Tile Coordinates for the <x>_<y> portion.
yeah, it used to be mytigio.DarkestDepthsAssets_Location_BaseCamp but i thought the underscores in the name might be confusing the dialog logic so i changed it
going to try just the location without a specific tile as a troubleshooting step
hrmm, that doesn't seem to work either
I suppose I do use the {{ModId}} syntax in the location key, I'll try hand entering the whole thing to validate
alas
Is your map name identical to the location name? If not, have you tried using the map name instead of the location name?
Tired of JSON?
Try Yet Another Content Patcher!
Powered by human-readable YAML.
https://www.nexusmods.com/stardewvalley/mods/27472/
oooh
it's not and I haven't tried that, good idea
I'll give it a shot
do you want me to publish this to #mod-showcase?
(posting on account of @pine ermine)
Tired of JSON?
Try Yet Another Content Patcher!
Powered by human-readable YAML.
https://www.nexusmods.com/stardewvalley/mods/27472/
no joy
Anyone know if SMAPI defaults to explicitly having a 120-character console width, or if just uses whatever the OS default is?
there's a limit?
anyway you can specify the console program SMAPI uses
it defaults to xterm on Linux, which isn't the most good looking
I set it to kitty
Not a "limit" of course, lines simply wrap when they're longer, but the default width.
You might be able to add it as an argument?
Essentially "if I draw a table in the console and try to use more than 80 chars, is it going to look like monkey butt on many people's machines"
It's 120 chars on my computer but I don't know why.
smapi doesn't default to anything afaik, its just a standard terminal
Drat. If you want to share your json for your dialogue and your data/locations we can have a look in case of typos that you're missing or something?
(can i have my json file checked for typos
my eyes are so unreliable and i keep forgetting to add a #)
sure, let me put the dialog back to the location real quick
The location is in this file here:
https://github.com/mytigio/DarkestDepths/blob/main/DarkestDepths/[CP] DarkestDepthsAssets/content.json
the dialog (one of th efiles at least) is here: https://github.com/mytigio/DarkestDepths/blob/main/DarkestDepths/[CP] DarkestDepthsAssets/assets/Jakan/Dialogue.json
atm I've got a few of the lines commented out to make sure it's not a priority thing
What is gift taste 7? It seems to add a full heart but it's not described anywhere that I can find.
might be stardrop tea
Artisan category 7?
Hi I'm hoping someone can help me: how do you modify Data/ChairTiles?
I want to make a custom tile sittable
Hm, Stardrop tea is consistent with the friendship points, yes.
(it is indeed stardrop tea and hardcoded)
Interesting that in this one instance they decided not to actually hardcode the item ID... heh
afaik the only thing that uses it ever
wdym? they hardcoded to check for the item ID to decide if the gift taste is 7 or not
I mean, it's not hardcoded in receiveGift - which it could have been.
There's actually a special taste defined for it.
ahh
I have no idea how to name that so I'm just going to call it "special"
that is also exactly what i did for my GiftGiven trigger
(I await your own thread in the art section so we can wax and wane whenever though)
there is hardcoded behavior in NPC.tryToReceiveActiveObject for stardrop tea though (which calls recieveGift) as stardrop tea ignores gift limits in addition to its 'special' gift tier
and its hardcoded in getGiftTasteForThisItem to give stardrop tea tier7, as NPCGiftTastes does not have a way to make items that tier (in either universal or npc specific setting) and was never uplifted to become objects and stays in its annoying slash seperated form
In general 1.6 native content only nicely used data models, and left the older slash seperated forms alone for modding compatibility
can someone help me out with altering an existing location's map? i used tiled to create an expansion for the secret forest, and cant seem to figure out how to get it working. its been a couple days since i looked at it and i do need to check over the wiki again, just asking in advance cause i know ill still be confused haha
Don't I know it. tryToReceiveActiveObject is nothing but a giant mountain of hardcoded behavior. I'm trying not to let the perfect be the enemy of the good-enough.
its less hardcoded than 1.5.6 at least
many of the dialog flags were originally just hardcoded behavior for a specific item that got moved to conditionally on dialogue instead so modded items can have the same behaviour
For sure, modding seemed a lot harder in the pre-1.6 days.
Even today there are still XNB mods going out...
Well, I think the estimations are correct. Only thing left to do now is run receiveGift and pray that it doesn't all blow up.
What ya doing here?
Gift mailing mod. Been talking about it on and off since yesterday (so to avoid spamming people, I'm omitting details; can scroll up if you want 'em).
Subs? Me? What did I update?
Oh sorry, my English is bad. I'm still learning.
Cool mod though
You should add a mailer NPC
Not touching NPCs with a ten-foot pole right now. By far the most laborious task in Stardew modding.
So, for those folks who do mail stuff, my brain is tired; is there some way to add a specific message with a specific item to the player's mailbox, or do I have to essentially register a temporary item in the global mail data and then add the mail "key"?
I think the LetterViewerMenu constructor allows you to pass any text and title missed the part where you want it in the mailbox, sorry. ignore this
as far as i know, mail is only stored on the player's Farmer object as three NetStringHashSets containing the IDs of mail entries in Data/mail, so to send new mail you need to add it to that asset
if the goal is to have it appear in the mailbox
So I'd have to override the asset loader and do some weird dynamic key system, since the mail doesn't actually exist (and can't be known) before the sendback actually happens.
LetterViewerMenu is actually interesting, I wonder if I can patch the mailbox to do a custom LetterViewerMenu for a mail key that is not actually in the mail data. But... I also wonder if that's easier than just fiddling with the data.
It seems like one consequence of having to define a mail is that any item won't have a quality associated. So if the player sends an Iridium X, and it gets sent back, it will be a Base X in the mail.
yeah that still needs Mail Framework mod
Why MFM? Lets you specify quality?
yes
I don't want to depend on MFM, but maybe I write my own patch and disable it if MFM is installed. Have to see what it does.
patching the mailbox is probably a reasonable approach if you are defining dynamic, temporary mail. it's really set up for predefined ones, as i'm sure is becoming apparent
I think stack and size quality attachment is the only feature MFM still has over vanilla mail? that and a saner content pack format
you can send stacks in at least some vanilla mail, but MFM may have more features about it (i do not know)
Can you do custom mail bg in vanilla?
yes
I can't find where MFM does this. I see that it has an explicit Items for a Letter, but... it doesn't seem to use that.
oh yeah there are stack in vanilla lol, guess that leaves quality
you can technically do both stack size and quality in mail but it wont be shown as an attachment
mail strings have an %action command to run trigger action actions and there is an AddItem action
Oh, I see it, there's a ShowLetter that's Harmony-patched.
you could also technically do multiple %item commands for stack size and theyd just show as separate items you grab one by one, which would be weird but it works
actually apparently the %item command also just accepts a [count] parameter anyway
I can probably do this. Funny how I said earlier today "It's always more difficult than you expect" , and here's another case. But I'm already transpiling mailbox() so this is just adding a bit. And it seems like MFM just opens the menu and then fiddles with what's inside the menu.
kinda strange that it didnt get a quality one added to it
Looks like LetterViewerMenu.itemsToGrab is the key. So:
- Add a real letter without an item, whose key includes some unique ID (patch the asset loader to provide dynamic text for it)
- Let it run the
Game1.activeClickableMenu = new LetterViewMenu(...)inmailbox() - Insert a line after that adds the real object to
itemsToGrab
Hopefully that does what I think it will.
Oh wait, I can't do a true dynamic asset loader, can I? I can only modify the entire dictionary. Can I tell the game to invalidate the mail asset and force the asset loader to run again?
Never mind, I shouldn't ask questions that take 30 seconds to look up. Can see there's an invalidation API.
Really? That's nice to know
Didn't know there was a difficulty involving NPCs.
Why is that?
Not difficult, laborious. Just a lot of very tedious things to do.
None of them are hard (afaik), it's just a long time-consuming list.
But then you should probably ask the ones here who actually make NPCs, like ichor. I'm just relaying secondhand info.
(I also was about to ask why not modify the mail dict, and then I looked up and learnt that mail data is one of the assets that isn't cached into Game1)
(so there's no dict to modify)
Will definitely try making one. Sounds fun.
Yes NPCs are very labour-intensive and also slow. Especially if you are me.
Mail data isn't cached? Weird. It's loaded as a Dictionary<string, string> though. What I meant by "not dynamic" is that I can't make it so "when you get this mail key, generate the mail text on the fly". Instead I can only "add known mail string with known key". But cache invalidation should cover it.
It looks to me like DataLoader.Mail is cached like everything else in DataLoader but I could be missing something.
it is cached, but not in a variable, so you have to postfix the Mail function which isn't as pretty
compare to say Game1.farmAnimalData
Postfixing would catch people who load it directly
It’s better to use an asset editor
I don't think postfix is necessary, just have to add an asset loader that adds a special key.
Wouldn’t *
(and by asset loader, I do in fact mean asset editor, would never replace the entire dictionary like some people do)
Not related to current mail talk, but some expansions add NPC who are only in town for certain days of the week, do you care to do anything for that 
I can't really think of easy way to check besides magical knowledge of what the name of their hidden warp room is
The question is for me? As in, do I care to do anything about it with this particular mod (such as...?) Or is there some problem to hypothetically be fixed with a new/different mod?
Yeah question for your mail gift mod
Why would their schedule matter?
You normally can't talk or gift to them on off days, but since it is send mail ignoring that restriction seems fine
(i don't have anything to add; you nailed it. not meaningfully more difficult than most content mods, just a ton of work)
I suppose some users may have a different opinion, but IMO that's really the whole idea. Well, not the whole idea but a big part of it. Mailing gifts is so you don't have to fuss over their schedules and chase them around the map.
it is fun! but for context, i am a programmer and it took me five months of my spare time to make my NPC (going from "i'm going to make this NPC" to "the mod is published and available for download"). and i've also been releasing updates for the year (!) since her debut
Literally the only reason I am even considering my Zelda NPC mod is because most of the NPCs are just being reskinned from the vanilla ones and some lines of dialogue changed
oh is that going to convert vanilla characters to zelda characters?
i previously thought it was going to be "add princess zelda" type of crossover npc mod
yep
Gonna replace all the vanilla characters with Zelda characters (52 at last count, and I'm moving along on the portraits at least)
And there might be 2-3 that are new custom NPCs
The art is my only slow-down right now, honestly, I wrote most of the code ages ago and the last coding to tackle will be custom events/modifications for 1.6
There is the "simple non-villager NPC" flag/system which is easier to work with. Or so I assume, since I keep running into it.
Non-social villagers are MUCH easier, to be sure
My romance replacements are going to be a pain because of the heart events
Aren't there a lot fewer than 52 vanilla characters?
34 I think? Not counting the non giftable ones.
i have a love-hate relationship with events. they're so fun to make but they're so jank and replaying them over and over to do debugging is tedious
(made worse, as many things in my NPC mod are, by C#ing my way around roadblocks)
Does the event replay mod with a patch reload work to do fast replays?
<insert advertisement for my yarn event script thing I did the other day> (though that really only helps with formatting)
i usually use debug runtestevent (debug rte), which avoids needing to reload at all, but requires you to convert your finished script since it doesn't use quite the same format as the actual event data
fortunately, text editors are good at mechanical conversions like that
I'm including the non-social ones, like the Governor, Gunther, Marlon, Gil, Morris, etc.
There's a roadmap document I'm using to track the number remaining xD
This sounds like a 6+ month project, which I suppose is what you meant by having written the code "ages ago".
Technically with my yarn script thing it doesn’t cache the event, so if you only edit the yarn part you can edit save and rerun
Yeah, I started the code before the 1.6 update, so there's more stuff I have to go back and edit but the bulk of the dialogue was already finished
Let's see, I have listed here: 12 romance, 22 social, 15 nonsocial or major event only, and anywhere from 2-5 custom NPCs
And I did take a few out, so my original number was higher
34+15 is already at 49, so the planned custom ones that don't fit as replacements took it to 52.
art progress check:
Whew that is a lot.
I've got the neutral portraits done for 2 more of the romance options, just don't have their expressions yet, so I've definitely made some progress!
Sprites will be easier, my struggle is on the portraits
i have suffered so much just for one action "heavy" event
I think I knocked out all 18 of those sprites in a single month, whereas I'm lucky if I get 4 portraits done in a month
Makes sense, 4x the rez and more stylized.
mhm, they need to be a lot more faithful to the source material for recognition
There do seem to be some very prolific portrait artists in the commissions, but I guess that's the part you really want to do yourself.
There's also the fact that commissions cost money and I'm not exactly sitting on any disposable income
and I CAN do them myself, so, drawing it myself it is
Just doing patch reload and then debug ebi is fast enough for replaying an event for me. The tedium comes from having to make a tiny tweak and then watch it again, then again, then again. Even though I comment out most of the event when I'm tweaking it's still so boring.
Aba, I feel like I'd just find new ways to make the dialogue flow better in the process of fixing the technical things, so I'd find a way to not get bogged down in boredom with the events.
So I guess it depends on how polished your event is when you start testing
Now I have to sort out the bizarre mail string syntax... ssssiiiighhh
Have not forgotten this. Had to be a support person for a specialist medical appointment and now I need a couple of hours to recover from the fatigue before I can hop on my computer to check more thoroughly for you, sorry.
So much yak-shaving in this one
tbh i get to a certain "stopping point" in my events, where i'm like, "is this playing the way i want it to?" i can't physically write the whole thing or else i'mma self destruct
I've already finished the script by the time I start writing commands so by the time I'm wrestling with the stupid fade commands and stuff I've got nothing else to change.
Not without risk of paralysing myself with self-critical perfection-seeking, anyway.
i wish i could be disciplined like this. every time i code an event, i end up redoing at least one line, because when the sprites are actually moving around something about it changes and the lines don't work (or, just as often, a better take on the line comes to me during debug)
do you get the, "this could be a textabovehead command" itch?
i like to think of it as the actors ad-libbing a little bit and getting the director to allow little differences to creep into the script 
Bear in mind I also don't like events much as a player so I'm not seeking to create masterpieces. Most of my tweaking is actually about how to make the event move faster lol
Interesting... I'm not a fan of events either, but I thought you said that interacting with NPCs was your favorite part of the game.
It is! But not via events unless they are quick lol
Does anyone have any experience with farm (not farmhouse) events? When I debug ebi the event plays without bugs but I can't get it to naturally trigger.
I originally had the reqs only as: 40180020/e 40180019 but that didn't work, so tried copying vanillas and made added time like most of them have 40180020/e 40180019/t 600 1130 but it still just... Won't trigger naturally. Might anyone have some wisdom?
how may I trigger a cutscene/event in C#?
i've never really had issues with farm events except for maps with strange viewports, can you throw your json here?
since you're not using a <StringEvent> i imagine it's not because of the /
Has anybody made a mod where you have to eat
Thank you! https://smapi.io/json/none/b1b09a9b39a64ef197a30dcb13b2bf93
It's the second box: Farm Story events
Survivalist and Yet Another Hunger Mod (outdated I think) are two.
Any that aren't outdated
Survivalist should be current.
okay gimme a sec i'm throwing in mine to test
i removed the when condition and the preexisting because i don't have access to it, and it triggered just fine, i assume you're trying to debug on new days?
(when you do debug ebi, it does mark the event as 'seen', so you'd have to return to title to get it to trigger properly)
did you save after viewing it? debug ebi skips all checks for the event, including whether you have seen it before
I actually tried triggering it before I ever tested/ran it for the first time. I debugged ebi the 19 one (preceding event), went out to the farm, nothing, slept, nothing, tried changing the reqs around abit (like adding time), nothing
so then I finally debugged ebi'ed it directly to see if it worked at all
i assume the when command isn't something going wrong with it since that is the correct syntax
though, i generally do O <NPC> if it's marriage required in the <event ID> code bit
Yeah! and all my other marriage events run with no problems. As you can see they all work by only being viewable by preceding each other. Normally when I debug ebi one, I can trigger the next event whether I've seen it a million times or not since the req is viewing the other one before
So I'm surprised I can't trigger it by just doing my usual "view the preceding event"
Where would this go? 
where your uh 40180020/e 40180019/t 600 1130 goes: so it looks like 40180020/e 40180019/t 600 1130/O Sterling
also yeah that's just
strange, my heart events are written the same way in that it's a chain command
i'mma be honest i've never used the relationship when condition on events though, but if all of your other ones work then i'm stumped 
I'll try removing it tomorrow morning and using 0 Sterling 
but yeah me too
like worse comes to worse I'll just switch to the farmhouse and see if that works
but I already have 3 marriage farmhouse events so I was hoping to do something different 
what is this for?
when the tree gets chopped it gives off debris i think 
hmm i see 
(i personally skip it because i'm lazy)
thank you! ill give it a test xd
Hmmm is there a way to load a vanilla texture to another target? I'm trying to make something that masquarades as a vanilla item until it's nighttime, at which point its texture changes
I can't get it working with a conditional edit
(though, i dont know if the item will automatically update its appearance anyway)
its not a thing you can do with night tile right
i know that just changing the sprite index wont update it but im not sure about the texture
Changing the texture isn't working either, no
to make timed edits like that you have to do on time changed update rate
or at least location changed
which is kinda not great 
i dont think the update rate matters
it does if you are check for time though
when i added that reloaditemfield action to BETAS even if i manually changed the fields on the item, it didnt update unless i also called ResetParentSheetIndex() on it
for something like a texture at night vs texture at day
One message removed from a suspended account.
i don't know how it works outside of trees, since trees has a natural "condition" and the time gsq worked there
im not saying the data for an object wont change at night, but if you already have an item in your inventory, i do not think it will change
hm i remember texture being from parseditemdata
newly spawned items will change ofc
sprint index prob stored yea
(dont forget to have your timed patch only edit the specific thing you want and not nuke the entire data model in the process)
sprite index i know 100% for sure will not change with a reload unless you call ResetParentSheetIndex afterwards bc that is the exact issue i was running into
however i did not test the texture field itself
cooking
https://stardewvalleywiki.com/Modding:Console_commands#Cooking_and_crafting as hilarious as that is
in the various draw methods of object something like this is called to get texture
ParsedItemData itemData = ItemRegistry.GetDataOrErrorItem(base.QualifiedItemId);
Texture2D texture = itemData.GetTexture();
so that is why i believe texture change will work
looking at Object.draw it seems like it would call the texture correctly, but it uses the current item's parentsheetindex
so if your item is at the same sprite index, then thatll work
this does mean u gotta make a texture as big as springobjects 
One message removed from a suspended account.
if you're in C#, you can also update the spriteindex manually
can u like, load a blank texture and use fromarea toarea?
I have made item textures in a lot of sizes
this has turned into a rabbit hole
i feel that unfortunately wouldnt work cus blank texture would be 0x0 right
making just a giant image thats mostly transparent except for the one spot would work
but you'd have an ugly giant image thats mostly transparent except for the one spot
yea unfort 
that would bug me but it might not bug you
Not keen on it 😅 I'll poke around some more and ask for more help after I think
you're already using C# for parts anyway arent you? or is this for a different mod
Different mod, not opposed to pulling out the C# though
ah, then yeah, with CP your only options are that big image thing or the BETAS action i made
yea and then you can use the spacecore timed trigger
to avoid ontimechanged update rate
with C# its easy bc theres already a utility function to iterate over every item in the world
that said
if it's a vanilla item then you would need to update both the texture and the sprite index right 
One message removed from a suspended account.
coooking
debug cooking
if its borrowing the texture of a vanilla item but then turning into a modded one then usually it would need to change both the texture and spriteindex yeah
unless its changing from one vanilla item to another vanilla item
One message removed from a suspended account.
no output is normal
One message removed from a suspended account.
Hello, i want to code a mod in stardew, for the first time ever (codding) so i use stardew wiki, and i want to know if the modding wiki is uptade to 1.6 ?
some of it is, some of it isn't, your best bet is https://stardewvalleywiki.com/Modding:Migrate_to_Stardew_Valley_1.6
the .gg wiki has guides for older versions too, make sure you look at something for 1.6
what kind of mod are you hoping to make?
just add an npc
NPCs are a lot of work
an NPC is never a "just" thing
Well, good ones are. I imagine you could make a crappy one pretty quickly and easily.
Disposition is deprecated in 1.6
even a crappy one takes a lot just to get them spawned in and moving
that wiki link does not point to a deprecated thing
that's just what my history always links me to, lmao
i will try i camoeback when i give up ou need more information lol
that wiki link is correct avi dont worry
I suppose since I know how to do it now it feels like just getting them in game doing basic stuff feels easy lol
I strongly recomend following the example of how to make an NPC from another mod. (PolyamorySweet has Lantana, in the CP portion, if you copy that, it will help tremendously to save on time and effort getting things started.
hi again! im trying to figure out how the game shows the fruit textures whenever its ready to harvest. none of it seems to be in its folder.
the fruits are just objects placed on the tree
Those r just items
they just kinda, plop the fruits on the trees so they needa be objects
If u want special texture then u can make a wild tree instead
@warm tulip here's the link, the CP folder is where you want to look.
i do it with Alecto Npc and follow the basecode
Cornucopia has one
if you want crazy trees, tree size framework
Ok! As long as Alecto is up to 1.6, that will work great!
hmm okiii thank youu guysuu
ok thx and honestly the serv is really prompt to answer, it's insane
oh y'know, probably the reason why it's tagged disposition is because of all of the times we've said dispo is depreciated
i mean it still defines a disposition
its just not in an asset called NPCDispositions anymore
yeah, my history is just like, "you typed in npc you want this link SPECIFICALLY, right?" 
Is it a command
i don't think so?
honestly i had to fight my inner demons to not make an npc alongside my mycology mod
Does anyone know if there's an events file for the gourmand frog's cave?
I don't see one but just want to be sure it's not under a random name or something
Event data appears to be hardcoded on IslandFarmCave.OnGourmandResponse.
Thanks!
Hi, I was wondering how to make a new status (like that invisibility potion mod) basically the idea is after you consume the item, nearby enemies take chip based on your combat level + attack buffs and are confused (only attack you 50% of the time)
I am planning out an ant livestock mod and plan on adding a few ants who create chemicals that cause confusion on their target
New buffs for the player can be added to Data\\Buffs, though for custom effects you need to write your own code with C#
Understood Thks
I was digging around the decompiled files and found an easter egg that made me sad :(
There's a bird house furniture item that was added in 1.6 and if I'm not stupid, it looks like doves might visit your birdhouse if you've turned any kids into doves :((
Starting to think I need to make myself a mod that lets you take care of a dove or something
I've been tossing about the idea of a kid -> bird retexture that's also compatible with LittleNPCs

Mod suggestion: as soon as a player turns their child into a dove, save file corrupted.
So true
You turn your kids into doves and then every day doves attack your crops
They're hungry 
Scarecrows can't stop them
Doves spawn on every map and attack you
I just wanna be able to hug the dove babies now :(
Ogh suddenly dove NPC idea where the lore is that they were someone's child
I wanna adopt them and give them hugs
One message removed from a suspended account.
Ahoj!
I am Blue, part of the mod making team for Stardew Valley and Cattails: Wildwood Story ^^
We are just starting to mod SV but we have a lot of fun with it
So far we have published one mod but more is on the way!
I am the person that works on the pixel art and manages our socials ^^
nice to meet you all!
it's nice to meet you too Blue !
Hello!
Good morning, I'm hoping someone can help me with making a chair sittable? Ive gotten this far but it doesn't seem to work and I have a couple questions:
{
"Action": "EditData",
"Target": "Data/ChairTiles",
"Entries": {
"X_furniture_set/7/1/": "1/1/left/couch/0/0/false"
}
},
I don't understand how you derive the X, Y (currently written as 0/0/ here)
and I am not sure but it looks like the .png is supposed to be stored in the TileSheets folder despite all tilesheets for Maps being in the Maps folder
When I say "doesn't work" I mean this line of code is correctly added to the Data/ChairTiles list in this format but I clearly have some part of my actual entry wrong
if anyone could help resolve this I'd appreciate it 😅
hello ! here's a wiki page I refer to all the time when Im making sittable chairs
https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_Sitting_to_Custom_Map_Chairs
[This tutorial is a WIP by Majickian and should not be considered a finished product at this time.]
This is a tutorial for adding the ability to sit on custom chair tiles place on a custom map.
in all my chairs that area where you put 0/0 is also the same for me, i wonder if the reason your chairs arent sittable have something to do with name
if you havent already, make sure your file name has the same name as the tilesheet in Tiled
its easier to keep track of that way 😭
might also be worth mentioning make sure the sitting part of your chairs is in the Buildings layer in Tiled

I think the part I was missing was loading the .png in Content.json
ahh, that'll do it
always load your textures and put them in an area you can easily see
do you know what the Target for loading tilesheets is supposed to be? Is it just "Mods/{{Your Mod}}/TileSheets"?
its the same way like any other load for textures c:
Here's mine for example
"LogName": "Load Shop Interior Textures",
"Action": "Load",
"Target": "assets/Maps/Tilesheets/ShopInteriors",
"FromFile": "assets/Maps/Tilesheets/{{TargetWithoutPath}}.png"
},```
{{TargetWithoutPath}} is the last item in a file path
if it helps
lemme find the github entry about their difference
Ah bet
What was getting me was I didn't know "Tilesheets" was in Maps
because there's a tilesheets folder
Ohhh, well if you're doing your own tilesheets it doesnt really matter where you put yours (Though I do like mine to be consistent with vanilla)
as long as you targetted the file correctly, it will load c:
common practice of course is having assets/(whatever other folders you have)
just to keep things tidy
I left the folder structure as-is
although my unpacked content didn't have a folder labeled "Tilesheets" in Maps
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.
how do I use patch export to check if the textures loaded?
!patchsummary is better to check that
Can you do these steps to provide more info?
- Load your save and view the content that should be patched.
- Type
patch summarydirectly into the SMAPI window and press enter. - Upload your SMAPI log to https://smapi.io/log (see instructions on that page).
- Post the log link here.
[X] | [X] | [ ] | Exclusive | Adding Tilesheets for Maps (Load TileSheets/ShipsAhoy_SRoom)
It is loading the tilesheet
It's not applying it to anything, though, if it needed to
Data/ChairTiles | changed entries
ChairTiles successfully changed
I'll have to figure it out later
if you are using the tilesheet directly on a map, you probably need to load it to Maps/YourFileName
(assuming you are using the plain filename in the actual .tmx, i.e. your file is referencing YourFileName without any path parts)
okay let me try that real quick before work 🤣
if your tmx is loading TileSheets/ShipsAhoy_SRoom, then you probably want Maps/TileSheets/ShipsAhoy_SRoom (i don't know if that works; i've only done it with no subdir)
the stuff in TileSheets is used for tools, placeable furniture, etc., and counterintuitively not for map tilesheets
I didn't know what target to send the texture to
and it seems to complain if I do Maps/ShipsAhoy_SRoom
Don't worry about it, I appreciate you looking it over when you get a minute, but I'll just keep plugging away either way!
utterly unrelated, i wish to celebrate my NPC reaching 256 endorsements 
her popularity can no longer be contained in 8 bits. this is important to me for some reason
I tried both ways, but nothing works 😅 thank you for trying to help me though!
we'll figure it out next time! 
is there a way to teleport characters off screen as part of a schedule (but not using path finding, I want them to just be "gone". I considered just making a map space as a holding area for them but i would have to make an actual warp point for that to work I think (which i can do if thats the only choice, i just wasn't sure if Ic ould warp them away)
That's what most mods do, place them in a hidden room.
yeah, i'm not aware of any other way, albeit i'd love for a mod to add a warp schedule feature but well, schedules are risky
You could also set their sprites to be invisible but they'd still have collision/be interactable, so warp room is the better solution imho
It's doable. Would require an entire overhaul of schedules
Probably breaking compat with a bunch of other things
(This I think would be worthwhile.)
thanks all! secret warp room it is
"you can do it, you basically will just summon the apocalypse back"
while you're here Lumina, do any of your NPCs in VMV use location based dialog in a custom location? I cannot for the life of me to get it to work in my custom location and I'd like a working example to look at
the couple of your NPCs I've looked at so far all use date or season based dialog as far as I could tell
i don't remember using that, no
if you have trouble and the hivemind here cant help you, you still have the last recourse of "making a small repro pack and send it to pathos"
darn, I'll keep looking! (or I'll just use schedule strings instead :P)
yeah, true, maybe thats a good idea, and actually that would let me rule out a few additional items if I used an existing NPC
Doesn't Helia have different dialogue depending on whether she's at Glimsap or Faycombe? Or is that not what mytigo meant?
so she would have if the query was working but it's fixed in 1.6.9, but it's a query thing, not a location dialogue
mytigio want the saloon thing
wait
isn't the saloon thing broken at the moment with some stuff already?
so depending of what mytigio tested, maybe
and so far in my testing anything location based for my custom area (location_x_y as well as just location), I haven't tried with hearts yet because these new NPCs aren't really meant to be befriended
hmm
(schedule strings work through, so I could just fall back to those!)
Hm, pretty sure mine works for Wren using location_x_y. Are you using the map name that's loaded into the game?
lot of custom locations have underscore so maybe the dialogue thing does't like that
but yeah, we'll need to see more of what you use to rule out things
I renamed my location to remove the underscores, i assumed that was the issue
I even renamed it just "dwarfBaseCamp" to make sure it wasn't the periods either
(Wren's uses underscores, that should be fine)
When you say you renamed it, you mean in the CP code and not the .TMX file, yes?
yeah, I didn't touch the map file

I'll try a vanilla NPC in the custom area and a custom NPC in a vanilla area and maybe a vanilla NPC in a vanilla area to make sure all of those work, maybe something somewhere is hard coded
but, overall, i think I can do everything I was trying to do with schedule strings instead, so we'll see how far I want to take the troubleshooting 😛
My custom location dialogues works okay for my NPC. 🙇♀️
It's working for my custom NPC in a vanilla location and a custom location, so it's not broken in general.
oh, what mods are those? I can just look at working samples I might spot what I did wrong
Unfortunately I'm at work so I can't pull up my files to compare (Wren isn't released yet).
If you're still having issues this evening (~8 hours from now) ping me and I can grab my files/look at yours and compare.
will do (y) danke
https://smapi.io/json/none/8e5443ffa4b148ee91d0337161fe1a82
I cut and paste the code here, I'm not very good at explaining 🙇♀️
hrmm, ok so item 1 I notice is you're loading your location based purely on the map file, I'm using the new 1.6 custom location structure
maybe I'll try loading the location from the tmx, then editing it
Is it possible to somehow make a double harvest from trees? For example, I need to be able to collect limes and leaves from a lime tree. And how to do the same with ordinary seeds. I didn't find anything like that with cornucopia.
Hi, I'm not quite making a mod, but considering this is where all the discussion about interfacing with modding things go, I figured i'd ask:
I'm trying to create a python script which parses the JSON information extracted from the XNB files to get some rough statistics about which fish are catchable where. I thought I was doing pretty well so far, because I've been making a bunch of simple python objects out of the name/id fields just to make sure I understand the landscape. However, I've been hitting roadblocks with stuff like
LOCATION_FISH Forest BOBBER_X BOBBER_Y WATER_DEPTH, which has just popped up for an item ID. I have no idea how to parse this outside of the game, there's a lot of these queries, so I'd like to know if I have to manually implement the query/response behavior myself or if there's any tool outside the game to try this.
Seems kind of painful to handle bobber x/y, but im sure i can think of something, its just 
that is an item query: https://stardewvalleywiki.com/Modding:Item_queries
the game uses it in place of a specific id in order to generate items randomly
To be clear, you want the same tree to drop 2 things? Is this like a fruit tree or do you want it to drop 2 things when chopped down/shaken?
so to directly answer your question, you will have to implement some version of the game's item queries yourself in order to fill in the list
Oh hmm, if its just evenly distributed I suppose that's not the worst thing ever
Good to know though, thank you 🫡
It shouldnt be too bad since it's just fish in the area, I already get that so I can just pick from everything that has a concrete ID, since otherwise it'd return none
Yes, 2 fruit wood items. Not at the same time, but with probability.
https://stardewvalleywiki.com/Modding:Fruit_trees <--- so you should just need to add them both as options in the list (if you want them to have different chances of appearing) under the "Fruit" list
Thanks ))
(VMV has some trees like that.
It's fine, making mods is just a hobby for most of us, I don't do reverse engineering professionally, so it's fair to say you want to make an NPC mod.
I don't know... nothing good for release comes from a one week project mostly.
NPC mod is on the list after my big one is done, but it's probably 8 months down the line before I even get started. Make it an optional addon to the profession mod.
Two day game jams are fun to get something actually out of your head and onto code but then the months after that make it good.
I never participated in one but I wish. I mostly can't finish any games, so imagine in 2 days, hats off.
I also want to do an optional dungeon/extra map for the profession mod but every time that urge hits you have to write that down in a design doc and get back to your original scope.
In the middle of trying to do something really simple and my brain says "wouldn't it be cool if you could do...." and you have to keep saying "shut up, make this one little thing work first".
But it's just like the NPC thing, I add stuff according to my own playthrough, like most of us.
Do you have a design doc template I can use?
I wish we were having another mod jam here. They're always a good time.
In my case, I'm in the middle of the game and I come to these conclusions lol
towards stuff I add mostly
ah, memories of joining the server (while working on a hat mouse mod) during the hat mouse event/mod jam by pure luck
I do not have a template, I just started writing and organized it later, but I feel it's mod specific. Then off that design doc I separate out specific tech things I need to do and append it as a checklist.
Good thing you're even writing. I usually don't write stuff down for my mods, need to change that habit.
Just started modding Stardew Valley, and I see that I can't just throw random garbage into this perfect lil cozy game
Studying pixel art standards and shit
@tiny zealot didn't see if you saw my question earlier: is there a soft/hard character limit on Secret Note Framework notes?
All terrain features for me at least, MUST have a darker outline like every other terrain feature for example.
Otherwise I don't see how shit fits
with how long it takes to code it I have to write it down or I'll forget a week later. My brain is full of holes.
ideas keep escaping
gasp! i didn't!
i don't know of a limit for pure text notes. as far as i know, the LetterViewerMenu will keep adding pages as needed. (i can check if it's critical)
if you also have an image (special SNF feature), you get up to two lines of text, which is determined by what fits and isn't a character limit per se. the font it uses is nearly monospace, so the range is pretty small
iiiii have a question, is there a way to do this ugdudhf
or am I limited to letters and notes (like the shopping list in one of the houses)
just a random idea popped into my head 😭
not in vanilla. MEEP can do something like this, i think. i also implemented my own version for lacey's family photo
oooh what's MEEP?
the curse of already having a C# component for my mod is that i can easily give it more jobs 😅
About how long are your ones for Lacey, for reference?
i have one that goes onto a second page (#2, if you are curious). i took the liberty of checking the code and i see nothing that would impose a cap, so you should be able to have as many pages as you need
(meaning just write the note as long as it needs to be. the LetterViewerMenu will paginate it automatically, just like mail)
Thank you! I am procrastinating on events so that's my next step with Elliott 
yeah, it's taken me longer to do my npc schedules/events/dialogue then it did to make the entire procedural dungeon system 😛
and these are just support NPC who aren't part of festivals and stuff! i can't imagine how long real NPCs take
Honestly it's more that I don't feel like testing anything right now 
As for how long, it really depends on the NPC. My usual joke is that Jorts and Jean took two weeks and Wren took two years.
i love Jean and Jorts on twitter 
Me too 
does anyone know of a way to set a custom locations LocationContext in CP or will I need to set all of those in my C# portion?
oh I see, it's a map property, nm!
okay, can someone explain wtf is going on here? I'm using Harmony to patch StardewValley.Menus.DayTimeMoneyBox._timeText inside StardewValley.Menus.DayTimeMoneyBox.draw - seems straight and simple, right? but it seems that either code (despite having no returns and no breaks) never executes parts of its own code, or somehow Harmony fails to attach. But I've had Harmony attach as prefix and it gets fired ~60 times per second, but then when I try to transpile the logging code says it did its job, but the changes never actually happen. So I've tried attaching to Utility.drawTextWithShadow and it seems to never get called from inside Menus.DayTimeMoneyBox.draw - it fires for every other text, but not for any text from DayTimeMoneyBox... just wtf is going on here? is there some way to debug wth happens here?
Hi! I'm still making quests. I wonder what is the query for has_completed_quest? I don't see anything like that in the wiki page 😢
TFW you spend like two weeks on and off writing an IL pattern matcher and debugging a transpile only to wake up one morning and realize, "what if we just told JIT not to inline that function" and fix the problem in one line of code
none exist. There's a bit of workaround if the end dialogue of quest set a flag
Oh that's strange. So what should I add in the end of the quest entry?
in what sense?
you said i need to set a flag in the quest entry?
in the end dialogue of quest
have you printed the arguments passed to see what they return individually?
Most of the times it's just something like that
you kinda have all the info here, if you don't know how to add a flag to a dialogue i suggest looking at the dialogue page on wiki and maybe trigger action page depending of the way you want to go
is the dialogue in the quest entry treated as normal dialogue?
I have used trigger actions but they are useless without the right condition
can you show us your transpiler code?
i am not sure i understand what you are trying to transpile tbh, _timeText is a field on DayTimeMoneyBox
Hi quick question, so I am kinda trying to make some new code for that MPS mod since a few of my mods aren’t compatible with it. And I noticed that some of said mod ids are different from the name of the items.
(EMS expansion’s golden egg has the id Large_gold_egg) so for ids does one just copy said id or use its name
I am only modifying the file I downloaded from nexus and don’t plan on sharing it. If anything might ask the author if they are interested in adding the code if I find that my addition works
This is for mods like grain overhaul, a couple livestock mods and the like that use the vanilla machines but haven’t been made completely compatible yet
in most (maybe all) cases, if you need to reference an item in data somewhere, use its id. depending on the context you may need to use its qualified id, which is the id with a type identifier (like (O) for objects) prepended to it
there's probably some wackadoo place where a name is expected, or maybe some framework mods expect names, hence the hedge
Thks, I was just confused cause a few items I see have odd ids to say the least
Ngl I hope this all works out without a hitch. Respect the Nach’s work a lot
also take care to use the actual id. most well-behaved mods should include their mod id inside the item id, e.g. authorname.modname_MyItem. often in content patcher json that will look like {{ModId}}_MyItem, so you'll have to replace as needed so it looks like the former
the mod id is in the mod's manifest.json if you need to find it
Good thing that it is mainly the unique id
Just one thing to keep track of the items
for the flag, yes, for the trigger, pretty sure yes too, for other stuff no idea
Heya ! I'm making a mod that edits shop fields of other mods only when those mods are installed. In this case, as I want the edited mods to be optional, how should I set up the dependencies part of my manifest ? Should I leave
"Dependencies": [
{
"UniqueID": "mod.Exemple",
"IsRequired": false
}
]
or is the dependency not necessary ?
the dependency isn't necessary, but it may be helpful to leave it in for technical reasons (having to do with patch priority).
you have set it up correctly! you definitely want IsRequired to be false, or SMAPI will not load your mod without the other one installed
the short version of "technical reasons" is that a false dependency like this enforces load order, so in this case your mod will be loaded after mod.Exemple. load order is a tiebreaker for patch priority in Content Patcher, so if neither mod sets a patch priority, your edits will be applied after mod.Exemple's, which is almost certainly what you want.
if mod.Exemple sets a priority, then you will have to as well in order to come after them
Thank you
I'll have to set a priority then, most of the mods set their own xD
do Bad Things happen if there is a long circular chain of false dependencies that creates a loop? Highly unlikely that would happen but just curious. A hard dependency makes SMAPI throw a hard error.
i think any dependency loop, false or otherwise, breaks
If there's a loop I think it just refuses to load, yeah
so im gonna need some code help. a while ago someone from here was helping me with it but they went mia. so what im wanting to do is add another tab to the player menu and i want it to open up a card that shows the individual stardrops you get as in my mod they are stamps. and this is the card for said stamps. ik there's already a thing in the player inventory that shows how many u can but id like to create a new tab for it. would anyone be able to help me with that?
i think it was mentioned that you cant do this without C#
and i will also add that it's a bad for mod compatibility to add tabs like this
I seem to recall also that adding a tab was a huge pain even with c#
yes big suffering all around
(Could look at adding a button like Event Lookup does?
better to make a button that sits on the UI somewhere you can click (I think Magic does this for an example)
adding the tab itself with C# wouldnt be too bad for a simple menu like that, but yeah compatibility would suck
its editing existing menus that is major pain hours
since there's that
x N bit in player
ik with c# why would it be bad tho?
u could try and replace that with a button
yeah maybe i could replace an exisiting one?
replace an existing inventory menu tab?
there's limited space on the top, and if you simply draw a button there then you have to fight ui info suite 2 for the spot
plus the general pain of trying to reshape vanilla ui 
i dont know why you would ever want to remove one of the existing tabs entirely
ive seen mods add more to the side but from what i saw there's room for like 2 more at the top
yeah lol i dont
Writing some C# code this morning...anyone know the correct way to implement a farmer sprite change? who.Sprite.currentFrame = 16;
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.
but yeah idk if i could do that myself. id prob need someone to work with me. its such a shame this other person went mia >__<
i mean even if they were still around if they were just helping by answering questions and such i think thats much much different than asking them to actually make a menu with you, thats a lot of work. you'd probably be doing it on your own either way unless you wanted to commission someone
they were actually doing it for me which was super nice
ahhh
yeah. id prob have to do that for sure =/
thing is. im poor lol
Best way to learn is to start. Start looking at code and ripping your hair out.
!commissions
!modcomms iirc
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
ty
I did not, in fact, recall
or is it who.FarmerSprite.setCurrentFrame(16);...
hm is the animation something already in game
for instance if it's a emote then u want Farmer.performPlayerEmote
need tired one.
private void performPassOut()
{
if (isEmoteAnimating)
{
EndEmoteAnimation();
}
if (!swimming.Value && bathingClothes.Value)
{
bathingClothes.Value = false;
}
if (!passedOut && !FarmerSprite.isPassingOut())
{
faceDirection(2);
completelyStopAnimatingOrDoingAction();
animateOnce(293);
}
}
taking notes here, so I can use the emote in the abigail event where the farmer plays the harp?
animateOnce(293) is pass out
the harp is a emote u can use by chat right
so yea probably
woo excellent
I can probably grab the jumino explosion animation too where they pop out of everywhere in the community center, that was in the back of my head to look at later but I imagine it's very similar.
Every time I have to write another Nexus description, I feel a stronger temptation to have ChatGPT do it for me.
Don't give in to mediocre word salad!
of course, how else would I know what I wrote there?
Update: I had to remove 0 Sterling but... Removing the when condition... Worked? 
I wanted to thank you againf or your help ❤️
transpiler code isn't that important here, since even prefix/postfix on method inside the method I'm trying to modify still wouldn't execute, but here is is anyway
hm shouldn't myExtraMethod take 2 arguments (SpriteBatch b, StringBuilder _timeText)
but putting that aside i assume u did manage to insert your call just before drawTextWithShadow
Well of course I would edit it for clarity, add my own personal flair and... nah, who am I kidding, I'm just gonna copy and paste.
(/lh but also it will read like a sales pitch, don't do it
)
GPT can sell things for me? Hmmmm, very interesting...
I have no need to modify SpriteBatch at all, so why include that?
/srs I'd rather put a gun in my mouth than let a robot speak on my behalf
yeah, as MSIL code puts this. before any private class field
so i think doing the function right before the call is actually too late
need to do it before _timeText goes on the stack to be passed into the call
im using Miss Coriel’s npc creator 3 and i can’t for the life of me figure out how to use extra sprites and make animations with them. long story short, my character has a schedule where at some point she goes into the wizard hut to read. the reading sprites are in my “extra sprites” folder but how do i make animations with them? anyone have any npc advice? 🥹
I don't think many people use her NPC maker since they code it by hand. Could try asking Coriel herself?
strange question for anyone who has experience with the new custom location contexts: I'm running into an issue where during gameplay, if I pass out I wake up where the location context dictates (in a new player tent in my custom area). However, if I then close the game and start it up again, I instead am in my farm house in the bed. Anyone have any clues I can try to run down?
iirc this (or something very similar maybe?) is in the changelog as a fix in 1.6.9
oh! awesome
"Fixed AllowWakeUpWithoutBed map property not working consistently." I think as long as your map has that property you'll be good
I saw the 1.6.9 release notes referenced on the wiki, but the link didn't actually seem to go to anything but the 1.6.8 release notes
it does, yeah
that property wasn't being checked on save load before is the problem
ive seen this problem in RSV's summit farmhouse too, prob nothing to do from your side
so when you load a save you get put in the bed spot
you can download the beta to try it out and see if it's fixed
oh I can? is that just through steam or somewhere special?
see pins
checks pins
you need to be on steam
Does the wiki have any page on item giftability? Not for my own knowledge, just for a handy readme link.
keep in mind you'll also need updated SMAPI and content patcher
versions specific for the beta
thanks, found the relevent pins, I'll go through those pages really quick
this perhaps? https://stardewvalleywiki.com/List_of_All_Gifts
the points are detailed on the friendship page
Gift tastes is a helpful page, but many if not most items are giftable even if there are no villager-specific tastes (i.e. universal neutrals).
Or maybe universal dislikes, that's a bigger category.
I guess it does have a link to that.
"Fixed move command ignoring all remaining NPCs if an optional NPC isn’t found." <-- oh, that explains some stuff
having the beta will be nice so i can update my colored items early as well 😄
i’ve been doing some of that too, just curious how to actually make animations with extra sprites really
i used the creator to basically do the base stuff now im trying to replace sprite sheets etc but running into trouble
also Miss Coriel lost all her data recently so I don’t want to overwhelm her >.<
when you say you've used it to make the base stuff... have you actually tested your NPC in game yet? because last i checked, the NPC creator was not updated for 1.6
Yup, 1.6.9 fixes the waking up at home issue for me (y)
if you're talking about schedule animations that's in https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC#Schedule_animations_and_string_dialogue
(if you want special SPECIAL things, that's a spacecore feature, like adding sounds to said animations)
(i see you got answers and yeah i have a whole set of clues about why it's happening 😄 )
if you want to code it: https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC#Schedule_animations_and_string_dialogue
So, you're interested in creating a new character for Stardew? Good news: with version 1.6, creating a character is easier and allows for more flexibility than ever. However, NPCs are one of the more complicated things to create for Stardew, as they have a LOT of moving parts. This guide aims to provide a basic but thorough walkthrough for ea...
So I am extremely baffled. I wrote some location dialogue for Hiria before looking at yours in more depth and hers worked perfectly. I have looked at yours closely and made a whole bunch of tweaks and nothing has worked. The dialogue is there, I can even view it with loaddialogue, but I just can't talk to Jakan and get it! So I am going to try making a new NPC inside your mod and see if I can get them to use location dialogue in your base camp location.
yeah, I was going to make a much smaller repro mod to see if I could replicate it. The only obvious difference I see between mine and another that worked is that I load my map as an asset then add the location using the EditData action on "Data/Locations" and the working one loaded them using "CustomLocations"
having said that, i ended up getting the effect i wanted using Schedule strings instead, which worked fine so I may not dig too much further honestly
Are you still having issues with locational dialogue?
Mine works using the 1.6 locations rather than using CustomLocations, so it's not that.
good to know
I am probably going to keep digging even though you got the schedule strings working instead, because I want to know what is affecting this. If that's okay!
Might rope in rokugin too and we can have another exploration spree lol
Ya
I don't mind, I'm curious as well, just not "willing to dig into the guts of the dialogue system" curious 😛
I'm going to make a pure CP mod for repro as well and see if I can replicate that way, since this one is really a combo of a C# and CP mod, but the majority of the location stuff is handled in CP
I am testing yours with just the CP part. I downloaded the whole thing but only extracted the CP pack lol
the only part that is handled in C# atm is adding it to the location context (and only because at the time I was building the location context in C#, which I no longer need to do and will probably swap that back to CP now)
ok, if you can reproduce with just the CP part then that rules out that part as well
I am going to combine exploring this with seeing how long it takes me to make a new NPC for future possible commissions purposes lol
FWIW I'm pretty sure Sunberry loads in with the 1.6 method and Wren's locational dialogue works fine with that
could be an issue with the .tmx map itself maybe?
or like that specific location (which I suppose is what you're testing)
I'm going to try adding location dialog to the new custom location i just added, which re-uses a vanilla tmx file, I'll let you know
this is for the inside of the tent, so it just uses linus' tent interior atm
Might be. I figure that if I a) try a different NPC (I suppose I could just make a vanilla NPC go there instead of making one) and b) try Jakan in a vanilla location, then that should cover both bases about whether the problem is location or NPC.
Oh I can also confirm that the location dialogue with x, y coordinates is possible even with underscores in the location name, as I did not remove mine from my mod when testing location dialogue.
Not that we should add underscores back in to yours, mytigio, but just as an FYI if anyone is interested
All righty, looks like Jakan is (somehow) the issue!
I might put it back just so i can keep the naming consistent, literally everything else uses the _ between my mod id and the asset key 😛
I didn't do i18n here, but I did with Hiria so I know that works fine - plus if the i18n was a problem it would still load the dialogue box but with broken text.
Your i18n is working okay
I mean wasn't*
Ah lol
let me pare him down to the minmum and start adding stuff back in
the other NPC has the same issue, but they are basically duplicates of each other so that isn't shocking
i think the first thing Im' giong to do is make them not speak dwarvish
Lol I had that thought too, but they didn't work when I commented that line out either
since it worked with alex i'm going to just copy him whole cloth, change the name, and see what happens 😛
That is a good idea. Yup, Jakan still isn't getting location dialogue in Town either. I was wondering if it's because they are non-social NPCs but Mr Qi appears to have location dialogue so I don't think it is that.
yes she works great. Just trying to make extra spray animations but no idea how to load them.
what command do you use to move the character to a specific spot?
(i assume thats how you got alex into a specific location)
they edited his schedule to place him there
alternately, you can debug wctm NPCname and it'll place them on top of you iirc, so you can stand where you want them
gotcha
@brittle ledge @velvet narwhal thank u both sm ❤️
Oooh I didn't know that!
Yeah, I just gave Alex a 0 schedule so he started his day at the first place in his schedule rather than at home
For anyone curious, I don't know whether there's a more acceptable means of preventing JIT from inline a function and thus thwarting prefix/postfix patches, but after perusing .NET's inline policy code this appears to do the trick:
public static IEnumerable<CodeInstruction> FishingRod_pullFishFromWater_Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator generator)
{
// Disable inlining by pinning a useless local variable
generator.DeclareLocal(typeof(int), true);
return instructions;
}
(Injecting a try/catch block would probably work too but I haven't figured out how to do that yet)
as far as i can see, copying Alex directly results in the same behavior
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Home, with 13 C# mods and 7 content packs.
Fruit is a list of models - you have to specify a list of { } enclosed objects basically
see their format on this page: https://stardewvalleywiki.com/Modding:Fruit_trees
and look at the vanilla fruit tree data to see how they're done
Okay thanks!
changing his name from "{{ModId}}_Jakan" to "MytigioTester" seems to ahve made the dialog work
does Hiria's internal key have an underscore in it?
belay that, it was the day of week text
No, Hiria's internal name is "Aba.Hiria". I don't know if it's related, but I can't get Jakan to be considered as "met" even though I've set them as a social NPC.
ok! welp i'm at a loss, at this point I am adding a direct duplicate of Alex called "Alec", I add 2 locational lines of dialog of text to both my copy Alec and the original Alex, the copy doesn't work in my custom location or on the mountain, Alex works fine in both my custom location and the mountain.
Weird
Does Jakan have gift tastes
at this point, the only real difference i can think of is that Alex has a full dialog file, Alec starts off with a blank one
Sleep one day
Ooh
no, Jakan does not (nor does the duplicate)
Hmmm
I'll go try sleeping, you're thinking to reset the dialog?
If you lookup anything do you see their dialogue be sane
Try giving Jakan gift tastes, i know things like CTs and "meeting" the npc don't work without the character having gift tastes, so it might be the same for location dialogue
Okay, setting gift tastes makes the location dialogue work when Jakan is set as a social NPC. Time to check if it's still necessary if they're non-social.
Make sure to test both 1.6.8 and 1.6.9
I don't have 1.6.9
no joy on sleeping, interesting on the gift tastes!
do I just need to set one Ender?
(I've modified gift tastes before, but never added a set for a new NPC)
Okay even though I can't actually give a gift because they're not social, it appears they do actually need gift tastes set for the location dialogue to work.
(looking at SVE's camilla and i'm only seeing portraits, sprites, animation descriptions, and schedules; aside from the standard chardata edit)
Does Camilla have location dialogue though Avi?
squints
"DesertFestival_2": "0 Desert 8 2 2/610 Desert 8 2 2 \"Strings\\schedules\\Camilla:DesertFestival_Camilla\"",
Wish I had known this when I was messing around with a test NPC, explains why I could never "meet" them lol
lemme dig into the actual schedule.json
No it's not in schedule, it's in their dialogue
that's a very strange interaction 😛
Yeah i remember when i was first testing with adding in an npc and was completely floored why i couldn't "meet" them until (i think?) Lumi mentioned gift tastes
alright, going to add gift tastes to both, and see if that works!
yeah antisocial only has 1 dialogue line from camilla, and that's not specified
I didn't consider it at the time because I just assumed the universal ones would be good enough
Yup, that did it. I added gift tastes to Jakan in an otherwise completely unmodified copy of your mod, mytigio, and now Jakan's location dialogue works.
Dwarvish and all.
interesting, so the dialog works but I didn't get the mouse hover
No, I didn't either.
I'll check that in a moment, going to unwind a bunch of this testing stuff
I also don't get that for Hiria
cough forgot to commit and push before I started testing cough
Thank you!!! I had completely forgotten what a weird impact gift tastes has on NPC function and was totally lost.
while I'm here, any other random entries I should add? these NPCs aren't social or friendable/marriable, (they mostly exist so I can explain the mod contents, have a shop, and have someone to rescue you when you passout/die in the new dungeon :P)
I got the text bubble cursor when I made Jakan social, btw
interesting, they get the tet bubble cursor for other dialogue types (day / schedule text)
even without social
¯_(ツ)_/¯
the long and short of this adventure is: location dialogue is a little weird
Oooh, sorry I wasn't paying attention to chat, I totally could have resolved this earlier since I was just looking at this code yesterday. FYI, this is the relevant code:
public bool hasPlayerTalkedToNPC(string name)
{
if (!friendshipData.TryGetValue(name, out var friendship) && Game1.NPCGiftTastes.ContainsKey(name))
{
friendship = (friendshipData[name] = new Friendship());
}
return friendship?.TalkedToToday ?? false;
}
The same check is also done in Event.DefaultCommands.Speak.
Does that run for a non-social NPC given that they don't get friendship change on talking?
There are special checks for SimpleNonVillagerNPC in a lot of places but they don't always short-circuit the gift taste checks.
Essentially what it comes down to is that the existence of a Friendship is what is used to check whether player has met an NPC; and friendship only gets added when NPC has gift tastes.
Oh well, now we know. I've edited the dialogue page of the wiki with the info about needing gift tastes so hopefully nobody else has this problem in future.
So, indirectly, you can't "meet" any NPC without gift tastes.
Yeah LookupAnything was telling me I hadn't met Jakan yet and also wasn't playing their introduction dialogue.
As just another FYI, it's also in the GSQ:
public static bool PLAYER_HAS_MET(string[] query, GameStateQueryContext context)
{
if (!ArgUtility.TryGet(query, 1, out var playerKey, out var error) || !ArgUtility.TryGet(query, 2, out var _, out error))
{
return Helpers.ErrorResult(query, error);
}
return Helpers.WithPlayer(context.Player, playerKey, (Farmer target) => Helpers.AnyArgMatches(query, 2, (string npcName) => target.friendshipData.ContainsKey(npcName)));
}
So if you use PLAYER_HAS_MET, they must have friendship data. I guess with non-social villagers, you can't use that condition at all, it'll just never return true.
adding the gift tastes also completely change the lookup anything record
before it was a mostly blank page, now I have birthday, can romance: no, friendship, talked today, gifted today and gifted this week listed out
Yeah, all those things are gift-taste dependent.
I wonder how Mr Qi can have location dialogue without having gift tastes. Maybe it's hardcoded for him.
Is there only 1 mr qi npc?
That I don't know, it's even further outside my wheelhouse than the rest of this gifting stuff was.
You're sure it's "location" dialogue specifically?
No I am not completely sure but it does match the format
There's only one "Mister Qi" listed in Data/Characters
Hmm, but Qi appears in both the nut room and the casino and AFAIK is in both places at the same time.
I think he's not a "unique" NPC. The game directly adds him as a new NPC() to the nut room.
But that doesn't really answer the question, I suppose.
he does have a special case in AddNPCs to add him to the QiNutRoom if he isnt there
He doesn't have gift tastes listed under any name either
So my guess is that he has some special code for him somewhere
It adds him to the QiNutRoom and it adds him without really loading his actual character data, only his sprite with dummy NPC data.
Because I was referencing him for location dialogue for a non-social NPC and that clearly did me no favours lol
location.addCharacter(new NPC(sprite, new Vector2(448f, 256f), "QiNutRoom", 0, "Mister Qi", datable: false, content.Load<Texture2D>("Portraits\\MrQi")));
Whatever might be in the XNB for Qi, the Nut Room ain't havin' none of that.
We should make a mod that adds Mr Qi to every map in the game
I didn't see a version for location that had day of week included, is that valid?
anyway, gotta run to trivia night, thanks folks!
Yup! Have fun at trivia!
...back to my readme, 3 hours later. Maybe I should ask Tia to write it for me under threat of using AI otherwise.
Did you set a minimum word count for your readme or something like that?
Word count? Now that's just silly, it'd be like setting a minimum LOC count for the code.
But I do feel like a readme is supposed to actually explain everything there is to explain about the mod and not just be like "here, I made a mod, install it now and go away"
High standards 
Yeah, I'm a real perfectionist lol
Respectable, even if 90% of users don't read
If it has two lines in it it's more than most readme files I've seen.
Hmmm is there any advantage to loading custom tilesheets into the game? 1. Other mods can edit them... 2. ....
(That was intended as flippant; I think I'm pretty far from perfectionism)
Er, wouldn't the point of a custom tilesheet be that you want to use tiles from it?
Yeah but my map can just pull it from my mod folder
I suppose it must get into the game somehow to be visible at all, but I don't know where it ends up if I am not loading it myself
Oh, that. It's what you said; loading it into the asset pipeline means other mods can take on the responsibility of compatibility rather than you having to do it for all of them.
There's a person here trying to recolor downtown zuzu
And they are suffer because dtz did not load their tilesheets
So yeah it's best if u do
I think that's a good enough reason for me to do it. Okay, time to do some rework before I can advise @lone ice about chairtiles then.
Shouldn't be major headache, just a few lines to "register" the asset and changing some refs afterward.
When you load it yourself the target is usually Maps/*
I appreciate it 🤣
Or wherever your tmx is
Yeah it's easy rework I just wanted to make sure I had a reason for it first and I am an external thinker xD
I've started doing it even for my totally not-asset-based mods, like the gift blacklist. I just don't want to have to keep updating the mod to "fix" "bugs" introduced by other mods adding weird items.
Oh did you make a custom asset for that 
It's a json, yeah.
I can't think of any mod with notable weird gift/quest thing atm
(A json loaded as an asset, I mean)
Perhaps not, but I am willing to bet there are many.
Maybe the special bouquet for polyamory sweet?
Hmm I don't think there's a way I can make my map use a vanilla non-maps tilesheet while preserving mod compatibility for it.
Would it work if you climb out of Maps
Pretty sure it will complain about directory climbing
Yeah hm
Hi guys, just wanna ask. Are there any mod tutorials that helps with getting an NPC to show up on Festivals?
There's a template: https://stardewmodding.wiki.gg/wiki/Adding_a_Custom_NPC_to_Festivals_template
And there's this snippet in the custom NPC tutorial: https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC#Festivals
But I don't know of any step-by-step tutorial for the whole thing
(and the festivals stuff on the official wiki, yeah)
Thanks guys! I'll check them out.
/sigh/ I should really just combine my tilesheets but it will be fiddly and I don't want to >_<
What's the non map vanilla tilesheet you wanted?
furniture
oh i just straight up loaded it into maps under a custom .png name
Yeah and that is what I am trying to avoid, Avi xD
But it is what I will do if I can't find a way around it
It's kinda rare for recolor to touch those imo
if someone else for some strange reason targets "pffffurn" then that's not my problem
So eh do what you gotta
I want them to be able to target it, Avi
Because if someone has a town interior mod that they want to have apply to Hiria's campervan (I certainly would - hiss vanilla) I would like it to be possible without them doing anything.
oh do you have custom created? or is it just a rip of the regular furniture
oh i see hmmmmmnmnmn
It's literally just the vanilla furniture. I have my own tilesheet for stuff I have created (which, yes, would look really out of place if someone had a town interior recolour mod that did somehow affect the vanilla furniture file xD)
But shhh
The thing you want definitely isn't on townInterior?
As far as just CP goes, it's just not possible without also asking x recolor to also recolor this new map tilesheet
To use a vanilla non-maps tilesheet in a map without loading my own copy of it, you mean Ender?
Yeah
But if you want to venture into C#, it would be pretty easy to add a new asset to the maps folder which copies the texture from the vanilla non maps tilesheet
Yeah I didn't think so but it's good to have the confirmation, thanks
Nothing ventured nothing gained
Maybe if I get far enough down the track that I make recolours of my custom tilesheets I might try that C# approach for the vanilla stuff
(if you ever want to try it out, should be as easy as just hooking onto the AssetRequested event and doing something like:
private void OnAssetRequested(object? sender, AssetRequestedEventArgs e)
{
if (e.NameWithoutLocale.Name == "Maps/TilesheetName")
{
e.LoadFrom(() => Game1.content.Load<Texture2D>("Vanilla/Asset/Name"), AssetLoadPriority.Exclusive);
}
}```)
I made a online JSON to YAML converter that can convert a content.json file to a content.yaml file.
https://linkoid.github.io/Stardew.YetAnother.ContentPatcher/converter
Posting this on GitHub now, while I do some more play-testing before publishing the Nexus track.
(GitHub's previews are super lame, huh?)
(It usually works fairly well for repos)
Also, for fun, possibly my favorite commit message.
the tilesheet path validation is in smapi rather than content patcher or game itself
(you could make a religion framework out of this)
Does that mean Ender's idea wouldn't work?
I think most of us use AssetLoadPriority.Low and namespace our asset.
Unless that doesn't work with maps or tilesheets for some reason.
no ender's idea is fine
since that is straight up copying the non Maps tilesheet into Maps
i originally thought ban on ../TileSheets/furniture is from game itself rather than smapi
though i imagine smapi has this check because game will just explode
Ah okay
Hmm, it would appear that bombs are giftable, which means they can now be mailed. I'm not sure if I should blacklist those, or keep them as-is for the meme value.
i think kent mails you bombs
Thanks for being a good friend to me
Mail content: a bomb


