#making-mods-general
1 messages · Page 593 of 1
Alrighty!
mostly i chimed in because it seemed like you misunderstood the cause of the problem
Ahh, fair enough
(attributing it to dialogue parsing or EditData or something else, and not i18n)
Yeahhh i’m glad I didn’t try to contact one of the wiki editors to get this information added as a dialogue thing 
(I mention because that was 100% my plan)
well, thinking about it some more, i suppose you were right. the dialogue code will not expand any content patcher tokens, so using {{ModId}}_YourItem verbatim in a string will not work /lh
but as before, the actual error was i18n providing that text as-is without CP getting a chance to expand it
🙏 got all the ATs for the upgraded farmhouse done
finally paid for tiled. take my money 🙂↕️
it takes courage and $20
Could I hypothetically make an NPC be fast
Sonic?
not by default, and i don't know of any frameworks for it
Omg 
Unfortunate….
They go fast if they’re late so was wondering if they could just always go fast
string deniedMessage = null;
//var method = ModEntry.Instance.Helper.Reflection.GetMethod(location, "CheckItemPlantRules");
//var method = typeof(GameLocation).GetMethod("CheckItemPlantRules", BindingFlags.NonPublic, [typeof(List<PlantableRule>), typeof(bool), typeof(bool), typeof(string)]);
//var method = AccessTools.Method(typeof(GameLocation), "CheckItemPlantRules", [typeof(List<PlantableRule>), typeof(bool), typeof(bool), typeof(string)]);
bool allowed = false;
//(bool)method.Invoke(location, [shrubData.PlantableLocationRules, false, true, deniedMessage]);
how on earth do you call this doggone method
what do you mean how. whats wrong with just calling it
there's a private overload that simply compares the rules without considering the type
believe me i tried Just Calling It before resorting to every kind of reflection
Is it possible to add items to the pre-existing loot tables for artifact spots?
var method = AccessTools.Method(typeof(GameLocation), "CheckItemPlantRules", [typeof(List<PlantableRule>), typeof(bool), typeof(bool), typeof(string).MakeByRefType()]);
import bit is the MakeByRefType for the out string
aha excellent. i'd assumed out params were the same as others, that makes much more sense
thank you it works perfectly 🙂↕️
Have you checked out Data/Locations artifact spot data?
It should be possible to at least mimic this effect
I don't remember if there's an underlying default layer
yeah, "Type": "Arch" objects can be set as artifact spot options with ArtifactSpots in Data/Locations or ArtifactSpotChances in Data/Objects
and Default from Data/Locations does get used, including for some farm-specific stuff & the general Data/Objects item query iirc
Oh.. hm.. do they have to be Type Arch? The wiki advises against adding those..
I'd need to see the warning to know what it's referring to, but it's probably because it affects that and the museum donations
ah, I'm not actually familiar with it, now that I see it
Caution: adding custom items with the Arch type is inadvisable as it often leads to artifact spots becoming broken and not giving any items.
Ah yes that warning
added by Pathos, so probably not wrong, but no idea what the context for that is
Alright, then it's probably best to heed it?
I guess I can just use the system I've got for forage using Spacecore and triggeractions but it's just kinda weird 
Oooo alright
ah, yeah, ig only Data/Objects mentions needing Arch for the artifact spot data
hey
I'll try that then
Oh sweet and that code is also just a blanket for artifact spots!
editing Default's list like that should give it a chance to show up anywhere, yeah
also in case you needed any guaranteed dig spots or some such, FTM can spawn artifact spots that just contain specific items (multiple if needed)
iirc spacecore doesn't mess with them, though I'm not up to date on it
Oh, actually I've been using Unlockable Bundles for that functionality (purely because that's what I found first after already having it as a dependency)
ah, yeah, I recall seeing something about that in there too
I've actually made use of it twice now :3c
I kind of wonder if I should expand the museum just because I reasonably could but....
Well? actually that doesn't sound like that bad of a task, I've learned how to use Tiled.
Doesn't mean I wanna do that tho 😭 sounds like a compat nightmare
Oh trust me. It's an absolute compatibility nightmare
Like guaranteed
U are gonna suffer
Yeahhhhh I'm gonna avoid that 
Patching the museum and town are basically not for the weak
pretty sure there's at least one active framework to handle that
museum space vs top left of the forest space real estate battle of the century
though maybe it's just a mess instead
I see why compat with cindersap forest was such a concern when making my event then
Good thing I disregarded that completely and just didn't care 
(I made a whole map file for what I needed)
oh, the one I was thinking of is CMF, which ig adds other museums rather than fighting over the original 
https://www.nexusmods.com/stardewvalley/mods/34530
that kind has been made too, of course, but idk what's current
Question: Would it be a compat nightmare to map patch the farm cave or is that rarely touched?
there are remodels of it, but I think they're mostly standalone in the same way that farm maps are
or bundled with a farm, in some cases
Ah, alright. Cuz my idea was adding another exit inside the farm cave that leads to another forageable area that's unlocked by one of the bundles in my mod
yeah, for a mod that isn't pick-and-choose maps it'd be more of a conflict risk, though that applies to a lot of base map changes
I'm not sure what I want to or should work on right now. I've got placeholders I could fill in, Bundle rewards to set, and major bundle rewards to create
oh right also shifting more berry seeds to be bought at more unique locations
I think Pierre's general store is still selling over half of the seeds in the mod
What are some of the most unique shops in the game that dont use an alternate currency? I've got 6 Year 3 seeds, one if which is at Krobus's shop and the other is at Sandy's
And also aren't event limited
Wait why do 4 of these grow exclusively in spring 😭
Looking for help with custom fish once again. I'm trying to set a fish that spawns in the town fountain (same location as the Decorative Trash Can, which I only just now learned about). No matter the weight, I just can't seem to catch my fish in the fountain. I've quintuple-checked that I have the right IDs for the location and the specific FishAreaID, as I've done this for other fish in other weird locations, but for some reason, the fountain in the town just doesn't seem to work. Is this just hardcoded to not let custom fish show up or something? Here's what I have. Removing the FishAreaId lets me catch my fish just fine in the river.
"Action": "EditData",
"Target": "Data/Locations",
"TargetField": [
"Town",
"Fish"
],
"Entries": {
"Campaigner.ForestFishFlowerhorn": {
"Chance": 1,
"Condition": "SEASON spring",
"FishAreaId": "Fountain",
"Id": "Campaigner.ForestFishFlowerhorn",
"ItemId": "Campaigner.FishFlowerhorn"
}
}
}```
your precedence isnt low enough (lower = checked earlier)
the fallback entry (wood and stone) has chance 1 and precedence -10, so you need to match or beat that
Oh, first time I've messed with precedence. I'll give that a try then.
is visual studio code possible to use to make stardew mods on mac? or should i download vs or monodev?
i feel like im seeing many conflicting answers
for C# mods? VSC or JetBrains will do (VS is not available on mac, and mono is basically dead)
This worked, thanks!
great thanks!
til ppl use vim for coding
if you're fine with running dotnet manually you can use any editor 
I do have an LSP though, I'm not that much of a caveman
to be clear you are making C# mods right
@lucid iron Hey not sure if you're still here, but I sent you message on Nexus, I made a lot of progress on the AoE, I think it's done actually lol
yea just open a PR to me
ill look at it n merge
sweet! Just making sure it's all good before I do cheers!
Hoorayy I officially have under half of my seeds being sold at Pierre's general store 
🗣️ pierre sponsorship
Nuh uh he used to sell like 86% of the seeds
You’re sponsoring him maybe 🤔
having too much fun playing the actual game so modding is on hold
damn it
Just did it now, believe it or not, never done a PR using Github before, was a good learning experience 
hm you'll probably want to do it all within DamangeArgs, because this should be effective for both hitscan and projectile abilities
Yeah so the thing is, I wanted two AoE types, one where it is created at an impact location and the other where the AoE is created where the trinket is
The latter, I needed to make changes in HitscanAbility
And I had trouble with Projectiles 😓
tbh im not sure what difference is the centered on trinket AoE and a lower cd hitscan ability 
Oh, it's because at the moment, it only targets single enemies
it may be that what you actually want is to alter the monster selection logic to support things like multiple targets at once or more randomized choice (instead of always closest)
Yes!
rather than changing the hit behavior exactly
so yea im gonna have to reject the PR as is cus it's not really that 
imo we'd want to add these 2 fields to DamageArgs
- int MaxTargetCount
- TargetSelectionMode TargetMode (Closest | Random)
and also alter the anchor mode logic a bit to support TargetSelectionMode behavior too
if u wish to take stab at this approach go ahead, otherwise i'll go do it in like a week probably
Yeah my actual gameplay goal may be closer to changing the target selection logic rather than changing hit behaviour itself
Honetly I think you're the best person for this, but I am just happy it helps
well i also just, wont get around to this in a while 
so if u want it u might as well try
just be warn that i am opinionated lol
Yeah I completely understand, I think I might be able to do this based on your design
i'd add the helpers for target selection to Places.cs where i put most of the other ones
dw about adding this kind of thing to other non monster find stuff helpers, ill do that myself after merging
Ok, so atm it's currently:
Closest + MaxTargetCount = 1
So need something like:
Random + MaxTargetCount = 1
Closest + MaxTargetCount > 1
Random + MaxTargetCount > 1
Well maxtargetcount is just a number
So instead of 1 monster it can find a list
And if list has 1 thing that's fine 
so find up to N monstesr
Yeah
And you won't have to change much about the actual damage helper since u just call that on all monsters
So selection helper would always return a list of valid monsters up to MaxTargetCount and if only one valid target exists then the list just contains one entry
Well hrm
I think it should get a list of all valid targets first (within range, not filtered)
And then either order them by distance+ return first N for Closest
Or shuffle the list and take first N for Random
I learned a ez shuffle in place algorithm from wikipedia https://github.com/Mushymato/Merchant/blob/main/Merchant/Misc/Rand.cs
Haha that's smarty
So yeah this approach would limit the changes to the 2 new args + a new monster picker helper + changes on hitscan/projectile to apply ability to multiple target
So, just want to double check then, for targetmode = closest, do you want that to always return only 1 target, or should it return the first MaxTargetCount targets after sorting by distance?
It should be first MaxTargetCount yea (i edited my message)
I typed it wrong first dw
Maybe u can also add fun things like spread damage
Just like muh VGC
Haha you have faith in me, my head is already spinning 🤣
Feel free to ask me about anything unclear and dw about me scope creeps
You can skip the anchor logic update for now too
So for now, I reckon then:
- collect all valid targets in range first
- apply filtering
- closest = sort be distance and take the first MaxTargetCount
- random = shuffle and take the first MaxTargetCount
It does just mean that companions would still home in on closest regardless
But shrug I'm not even sure how they should behave with anchor random
So that can be homework for myself later™
Yeah I know, I don't do as much you all do, but I feel it all the same lol
Oh yeah for monster related procs that come with a pre chosen monster, i think we should ensure that monster is in the final target list
So you'd take that + MaxTargetCount - 1 other targets
Rmbr to check for dupe here
Hello peoplee. I decided to take a break from trying to get my npcs house interior to work to work on some dialogue. So I have a question, how do I make a config option for dialogue? I want to have some silly variants for dialogue, but I want to make them toggleable (is that the right word-?) Does my npcs need dialogue for if you get caught dating all of the romanceable ones? If so, can I add dialogue for both genders? Oh! And how would you guys recommend formatting questions? Really just so they're easier to read.
Ahhh I get you remove it from the candidate pool so it does not get duplicated
Makes sense
they don't need those dialogue
all they actually need in terms of daily dialogue is like. one line of generic spring dialogue and i think the game will just use that as a fallback for the other seasons.
@lucid iron I reckon will probs take me a while to go through it all, but I'll let you know when I've made some decent progress 
I'm happy that someone other than me is doing the work and don't fret over this too much 
Haha no worries, it is one of my fav frameworks, I really like the idea and multi-hit targets has always nagged at me but I kinda just brushed it aside until I ran out of ideas for trinkets and wanted to expand lol
Dialog is an as much or as little as you want kind of situation. The "caught dating romanceables" thing is a specific event that would have to be edited if you wanted your character added, so it's not something most people touch.
For silly variants, that's doable, you can use tokens. Like if your setting is named SillyToggle with just true or false settings, you can make the dialog key's localization have .{{SillyToggle}} at the end. Like {{i18n:ModID.Dialogue.{{SillyToggle}}}}. Then in your i18n for this example, there would be two keys, ModID.Dialogue.true and ModID.Dialogue.false. True would be your silly one and False the non-silly one and it would change based on their settings.
question about AT, if i want, for example, 9 ats for the farmhouse, do i need all of them on one png in a row downward? or can i have it like, 3 3 3 in the same folder for the specific farmhouse upgrade?
I believe the AT documentation tells what you can do?
Breaks are not only fine, they're good. I took about two months off from a big mod project and a few smaller breaks otherwise and I'm glad I did
You don't have to always do work on your mod, breaks are good, they help you get to the end
i havent done anything in a while. too busy teambuilding XD
(Custom NPC Jack)
I’ve been struggling with this issue for quite a while, so I’d like to ask for some advice.
I’m currently editing a custom NPC house, and I’m running into a problem when adding the building sprite as an overlay on the Town map. No matter what I try, bushes keep spawning in the area I marked in green.
Additionally, when I install this custom NPC mod alongside Stardew Valley Expanded, trees start spawning in the area I marked in red.
If I switch to , it overwrites parts of the map entirely, which causes other issues.PatchMode: Replace
Is there any way to solve this using an overlay approach, or is it fundamentally not possible? TT
you need to patch out the bushes and tree, iirc you need to patch the layers on which they appear to make them not have anything
but someone with more experience may answer this more thoroughly
I think it might be on either the Paths or Buildings layer. Would adding some kind of property there fix the issue?
I'd guess putting an empty tile would work? I've never really done maps
Thank you for your reply. I’ll try a few different approaches.
The problem is overlay
Since you have nothing on paths, it will keep whatever is there already
hmm
I think there's at least two ways of fixing this
One, that I don't know much about, is to see about using something from betas, i think
And the other is to fully tile the back layer to match the surroundings, and use patch mode replace instead of overlay
(and you will have to use reset terrain features on any save that isn't brand new, since once the paths layer is spawned, it won't just disappear even if you remove the tiles)
to fully tile the back layer to match the surroundings, and use patch mode replace instead of overlay // To be honest, I found that part a bit challenging, so I initially went with an overlay patch. Thanks a lot for the advice—I’ll try both methods and see which works better.
Could you please elaborate a bit more on the betas-based method you mentioned first, as well as the “reset terrain features” part you mentioned at the end? I’d really appreciate it, thank you so much.
Well, i dont know much about that function of betas, sorry
I only mentioned it because i recall someone doing something similar to delete grass from existence
Ah, I understand. You've already been a great help—thank you so much.
Reset terrain features is a mod that can reset the positions of terrain features (aka, grass, bushes, trees) that are spawned by the paths layer
So after overriding the tiles with your patch, the bushes that already spawned when you made the save will remain
You can use reset terrain features to re-spawn those bushes
But they wont be where you deleted them
Idk if im explaining this very well
Ah, I see—it’s a type of mod. I didn’t know something like that existed! I’ll definitely check it out.
Yeah, definitely check betas and reset terrain features on nexus
Im sure the mod's documentation is better than my memory haha
I’ll check it out right away. You’ve already been very helpful—thank you so much!
Hello peopleee. I just had a few questions: One, is there a way to add custom music? Two, if so can I use a jukebox to change the song?
Can add custom music
[[modding:audio]]
Thank youuu 
You probably want to bring this to Bouncer so the mods are aware of this issue
It seems important enough to not simply share a warning on the server
Yeah i'll see what they say, it's hard to get much like super definitive proof which is why i hesitated as they haven't contacted me and the screenshots i do have could be circumstantial at best because of cropping, but with me being blocked it does make for a stronger case. If nothing else, it'll leave a papertrail in case someone else also makes a report
Yeah, it's more to make the mods aware of this than to ask them to take action
Yush, very good point! I've sent a message!
This is certainly not something to be discussed publicly.
No matter the reasons, public callouts like those are not acceptable behaviour in this server.
If you (or anyone) experienced something like this, report to @outer glacier instead.
As for the contacting you, bouncer is a bot relaying any message to staff team. While we do have good timezone coverage, we're not around 24/7 and sometimes it takes a bit to come back to someone.
Mb mb!
Does anyone have pictures or the coordinates of the NPC when they're doing each of these
I can guess a few of course, but I don't want to make a sitting sprite when they're not sitting for example. Or have them sit the wrong direction, etc. etc.
(leaving, entering, wander are a given, so dw about those)
the island code has these hardcoded tile lists, and randomly picks one per person on each schedule, iirc:
shoreLoungePoints
(9, 33),(13, 33),(17, 33),(24, 33),(28, 32),(32, 31)
chairPoints
(20, 24),(30, 29)
umbrellaPoints
(26, 26),(28, 29),(10, 27)
towelLoungePoints
(14, 27),(17, 28),(20, 27),(23, 28)
drinkPoints
(12, 23),(15, 23)
wanderPoints
(7, 16),(31, 24),(18, 13)
tyty
Really debating if I wanna get meta like this (and trying to remember if I already have or not 
if you want it to be less meta but honestly still meta you could always make it "coming up with new things to say is hard"

It would also probably help if I had an idea in mind for who would even be running this shop 
Actually maybe just a shadow person like Krobus?
But yeah I'm moving 6 berries from Pierre to Joja (with increased prices of course) and then my plan is to have a when condition to have them sold elsewhere if the player goes the Community Center route. But then ALSO in this shop they're sold for slightly different prices regardless, it's just an unlockable shop though
i still need to figure out where else they should be sold after the Jojamart is abandoned... I've been considering the hat mouse but giving them seeds feels.. wrong?
why doesn't Pierre sell them?
Because Pierre is still selling too many damn seeds from this mod 😭
Heck he's still selling a lot of them just now spread across festivals
ohh lmaoo
I don't know if krobus sells seeds, might not fit the underground vibe tho
I do have him selling one seed... in year 3-
I.. should really find another seed to have him sell in earlier years so the player understands he DOES sell seeds
gotta be lateeee and if you don't have one already haha
oh god I'm just looking at my crop sprites.. I should really recolor the outlines so they better match Stardew's art style 😭
But that's like 201 sprites 
ok let me finish what I was doing and then I'll get on that
Wait actually how do wild seeds even work, looking at the vanilla crop file is not helping
uhhh.. y'know what I think I'm gonna not do wild seeds
wild seeds as in mixed seeds? can you even do those with CP? I only know how to do them via Item Extensions
I mean like the forage seeds 
But also Mixed Seeds are something I was planning on doing
Yknow what I'm just gonna not try this. There are dependencies I could use but I'm not willing to put in the work quite frankly 🫠
like when you combine em to spring seeds etc? i feel like those are in the same boat as mixed seeds just that theyve a crafting recipe and a smaller pool of possible crop outcomes 
Well there's also getting it to spawn a solid forage item instead of a final crop sprite
true..
Well.. actually I can think of a workaroudn for that tbh
just turn isTrellis on and make the final sprite just the item
wonder if its one of those hardcoded things
Might be, I found a framework on nexus for making wild seeds
Which idk why that would exist if it were just easy to do in vanilla
I'm once again messing with fish, but this time I'm looking at how vanilla handles "trash" items. I think I understand that the "default" section of /Data/Locations.json is the fallback for what players get from fishing (specifically the "Fish" section, of course), and I think I see how the game handles trash. At lines 420 and 422, all the IDs for the various generic trash items (Trash, Driftwood, etc) are listed. I figured I'd try to do an "EditData" that targets "Default", "Fish", but that's as far as I could get. The trash entries don't have a target (like Default and Fish), so I'm confused and stuck here. I just want to add two modded items to the possible drops, but I don't know how to approach this. Could someone help me out on this?
what do you mean, the trash entries don't have a target?
they are under the "default" "fish" entries as far as i can see
My wording might be wrong, but there's three different entries. The trash entry is the third one, but it doesn't have some kind of name like "Fish". That's the part that's confusing me.
it has an id
which is usually what you use to target stuff
althought i simply made another entry in my mod for the purpose of adding a trash to catch
I... didn't think of adding another entry. I kind of feel dumb now lmao
So in theory, I'd just do something likethis, and it'd just work?
"Action": "EditData",
"Target": "Data/Locations",
"TargetField": [
"Default",
"Fish"
],
"Entries": {
"Campaigner.TrashPlasticBottle": {
"Chance": 0.1,
"Id": "Campaigner.TrashPlasticBottle",
"ItemId": "Campaigner.PlasticBottle"
}
}
}```
{ "Action": "EditData", "Target": "Data/Locations", "TargetField": [ "Default", "Fish" ], "Entries": { "Lumisteria.MtVapius_Trash_BrokenBottle": { "Chance": 1.0, "MinFishingLevel": 0, "MinDistanceFromShore": 0, "MaxDistanceFromShore": -1, "Precedence": 500, "Condition": "ANY \"LOCATION_CONTEXT Target Lumisteria_MtVapius_Main\" \"LOCATION_CONTEXT Target Lumisteria_MtVapius_Forest\" ", "Id": "Lumisteria.MtVapius_Trash_BrokenBottle", "ItemId": "(O)Lumisteria.MtVapius_Trash_BrokenBottle", } } },
How i did it, knowing that the condition is basically me excluding the item from areas that aren't mine
sounds ok at first glance, althought you may want to tinker with precedence if needed
Yeah, I just learned about precedence last night. Definitely gonna put that in there later. Just wasn't sure I could simply add trash the same way as normal fish lol
But then, how would the game know to treat it as trash, and not pop up the minigame? Is that just handled by "Default"?
it's handled by having a data in data/fishes (or whatever name is, i don't remember)
if there's a data here, it'll use its value for fishing minigame
if no, it skips it, as far as i remember
Oh, so if I don't have something like this (it was Fish.json, if this is what you meant);
"128": "Pufferfish/80/floater/1/36/1200 1600/summer/sunny/690 .4 685 .1/4/.3/.5/0/true",
My item will just default to no minigame?
it will skip minigame 🙂
Well what the heck, I was losing my marbles trying to overcomplicate it lol
it can be something else than trash (like, in vanilla you have the case with some furniture)
it's ok, sometimes the game does need stuff in several places
So the tldr takeaway here is not to have a difficulty, give it high-ish precedence, and it just works?
it's not always obvious to know where and when it'll be the case and when it's fine
it should yes! then you'll adjust things as you want to have not overwhelming trashes, but often enough
can't remember how crab pots are working however, if it's important. It may be a separate thing entirely, or tied to the vanilla trash entry
I have crab pots. That's a difficulty similar to the pufferfish above. I got that working just fine, though I do need to make my trash rarer there. ||I would HOPE there aren't 100+ sea mines floating around every day in the ocean!||
But jeez. I seriously tried to go way over the top when it was as simple as what I had already been doing with my other fish. My non-coder brain is fried.
Okay yeah, that worked right away. Thanks for smacking sense into me and helping me understand how to do it properly!
must be some obvious reason for defaulting to skipping it, like an alternative way to obtain items from water or some such
What are these sentences in StringsFromCSFiles used for?
…I've never seen any of these ever 
well, no wonder I've never seen them
Selph how many times have u started the game
Huh, fascinating :P
on my bed in a stormy day ask again in 12 hours
Mrow?
Im starting to regret trying to edit the crop sprites in my mod
Mostly because I've got a pinched nerve in my right arm or something that is making even just swapping out colors kinda difficult
hey, would ver 2.8.0 work for smapi android?
according to content patcher's nexus page 2.8.0 is for android
Tyy
would uploading it to main files be right?
Am I able to change the order incase it pops up on top of the PC one?
Would optional files be better for that?
never had more than one file before
well I don't really know but content patcher has the android one on top in the main files, so i think it's ok
If u aren't using any cp 2.9.0 features you can just change it
I probably am not? I'd have to check. But I was unsure about updating it to just change the version when I have no other content ready to add yet, which people are expecting
yeah, but someone offered to test it today 😅
This is a fairly easy thing to edit for user so I wouldn't worry that much
and it didn't load
You can give the tester wip version no?
Yeah
ok
I'll see
does a mod having a lower version give players without developer smapi a little notif in the console?
Is there a way in content patcher to move an NPC that spawns during squidfest?
yeah the tourist, one is clipping through the house
sadge, its ok I got a solution
how do I send a letter when the player reaches a certain friedship level with an npc? I need someone to explain like I'm stupid. yes I did look at the wiki
you need to create the letter, then create a trigger action to send the letter, then use a condition on the trigger action being whatever you want
if you don't know how to do one of those steps i suggest looking at a simple mod adding a mail then ask more questions
yes but where do I put the trigger action
any file you want, i usually have an include for that to keep thing organised
Hey guys - I am trying to make a custom farm map. I have got everything working perfectly and it's fully playable without any problems, but I have this one tiny annoying issue that has me completely stumped and I can't figure out what's causing it. Basically, the little 3x2 stone floor tiles that appear infront of the greenhouse are missing. The floor tiles there on the base map are on the "Back" layer. Anyway here's what's happening:
so "Action": "EditData",
"Target": "Data/TriggerActions",?
hey gang, having some shop issues again. Using Livestock Bazaar, the tile simply wont open - the cursor icon shows its interactable, tile property appears to be loaded, but no window or interaction occurs when I actually click it.
https://smapi.io/json/content-patcher/e54e6949546a4528919c071d0ee9f29e
no smapi error either
Do u have untitled tile sheet
Hi everyone, can someone send me The wike Creating a new festival and how to register it.
Did you try lb-shop yourshop
passive like the night market or active like the egg festival?
the spring_outdoorstilesheet was originally named untitled, someone suggested renaming it to the actual tilesheet name
Yeah rename it back there's stupid hardcoding around that lol
Can someone send me the Wiki? Please
i just asked which type you needed but ok
also i believe that is just the regular festival page not the modding one
I want to create a festival.
Is that a console command ? EDIT: tried and it just says unknown command
That's strange because I looked at custom farm map mods and they had renamed them inside Tiled too as long as there were in the same order. It's working thanks I love youuuuu
I did debug shop CodysOasis.VaelsFamiliars_VaelItemShop which successfully opens the item shop at least, the Pet shop also opens (although the items are bugged but thats a separate issue lol)
Yeah it's a command added by livestock bazaar
If you don't have it then you didn't install livestock bazaar so it's doomed
OH I FORGOT TO UPDATE STARDEW UI
thats why
thank you lmao
i didnt even realized it failed to load
man i need to take a nap thats such a dumb mistake to make

okay now that i actually have the right stardew ui version, heres whats happening
you got no farm animals under this shop id then
yeah, I'm just using livestock bazaar to try and open a pet shop + Item shop
not so much farm animals, at least not yet
well u can try the tile action i suppose
so I just want interaction to give the supplies/pet adoption screens, but still no window pops up when I ineract with the tile
idk if i made it work with 0 farm animals since thats kinda the whole point
hmm thats fair I guess
It was working before though
before update i mean
well hell maybe ill just make a farm animal too lol
good call
There are two types of festivals in the game: active festivals (such as the Egg Hunt) and passive festivals (such as the Night Market). Both types can be created using only Content Patcher. This tutorial assumes basic familiarity with Content Patcher, and skills such as mapmaking and event scripting. It is recommended to use this tutorial in con...
i fear im lost
I tried just copying over your example data for the Golden Chicken, but it says the texture is invalid - theres no regular " Texture: " field to begin with though, and it should just be pulling from the vanilla file anyway, no??
your framework is so cool i want so badly to understand it aaah
okay, adding a "texture": field that just repeats the "ShopTexture": info got rid of the warning lol
don't repeat the vanilla fields like this
use TargetField and edit just the CustomFields dict
ah, good to know !!
I dont plan on keeping the chicken, just wanted to test if it would load in the bazaar shop at all
I still have the initial issue though that my shop window simply wont open though, so even though the farmanimal, item, and pet shop all "function", it wont open to begin with, which presents... an issue
golden chickens are only available after perfection
I don't know if that condition is checked for custom shops (chue knows more)
though I guess you're already wiping the entire shop entry
yeah, if/when i actually add animals I plan on making them fully custom anyways
Chu just suggested a placeholder chicken to see if the base functionality at least works
all u actually need to do is add the custom data to a chicken
e.g.
yeah, the gold chicken shows up now
The issue is now just that the shop dialogue doesnt appear when interacting with the tile
As in, clicking the tile does absolutely nothing, no window, etc
using lb-shop works fine so the shop data seems to not be the issue
Oh! It does! So that narrows it down significantly
is the shop's owner in that 26 32 3 3 area
no one is there, but the top owner section is AnyOrNone for a closedshop message
just dont use the area
lol alright
u need a real npc for that
in vanilla closedmessage breaks unless you DO have an area (even if no real npc is there)
so I assumed livestock bazaar followed that behavior
but thats all good! Thanks for the help as always chu
tbh if you dont care too much about the close message
you can ignore having owner
i think i yield a default message ofOpen from {{openTime}} to {{closeTime}} for that
How would I add a Mail Flag called "HasTestPower1" and have said flag be purchasable from a shop?
the top line that is commented looks okay to me? still learning tho
It definitely isn't, game couldn't compile
aw shit
actionsonpurchase should have square brackets iirc
Lemme check mine, i have mail flags sold through my shop
Also, how would you specify the icon for said mail flag?
there need to be [] around it
yep, square brackets
like
"AddConversationTopic {{ModId}}_PurchasedItem 5"
]
You cannot just buy a mail flag.
and I imagine youd set the icon like any other item
You need to sell a thing
MMAP I believe might have something for buying an item that immediately removes itself when you just want a mail flag, but I might be confusing it with another chu mod
Yeah, its supposed to be like the keys to the town
Could you make an item to be sold that's excluded from shipping collection, can't be trashed, and with a removeitem action that removes it from inventory immediately upon being purchased?
On the upside, adding brackets solved the compile issue!
implement a ISalable and do whatever in the actionWhenPurchased
chu showed me how to do something with it today involving special buying(tho that was getting a random gacha, not buying a mailflag or w/e)
peliq would also work for this yes
ohi chu
Is the Mushymato GitHub link supposed to show an example of how to implement an ISalable? Bc if so, I'm not seeing it
yea it shows how to make one
there's 2 parts here
- First you have something which implements ISalable (which i slacc on by using Object directly
) - The other thing you need is your own item query which is what
ItemQueryResolver.Registerdoes
the item query is needed to actually put your ISalable into a shop
merchant is released if u wanna see how this works in action, this is the upgrades shop
OK yall so I have 0 clue as to what im doing, just trying to do a favor for a friend. Im making a json assets hat mod, I know some hats hide the players hair completely, how would I make it do that?
I thought youd have to do class XYZ: ISalable {...}
JA is dead, use CP for adding a hat instead
public abstract class Item : IComparable, INetObject<NetFields>, ISalable, IHaveItemTypeId, IHaveModData
hey guys, just had someone bring up an interesting issue:
I have Portraits for Extras installed, along with Hardware Store, and whenever I access the hardware store/snack machine, it displays the Snowman's portrait! (Specifically the sad one. lol) I’ll probably take a look at the mod, but this is pretty strange. Any ideas of what I might need to check? I’m assuming that the hardware store is somehow calling on my asset by accident, and it apparently makes changes to the bustop, though it appears not to be where jack is. Maybe I didn’t mod id his portraits?
Object implements Item which implements ISalable
you can just implement ISalable too ofc, i really was just lazy about it
Cool-
I dont know what I'm doing so just tried editing a mod i already had
what is the hardware store
I'd check is they have set a protrait in the shop entry, cuz if not i believe it takes the nearest one or something
that has nothing to do with portraits for extras then
its just vanilla behavior as void said
oops dropped the reply, this was for sicarius
Ohh, really?
So, another bug that’s not a problem with my mod?
i didnt want to be so bold to link my own thing, but
exactly
😅
i will link ur own thing for u
its a pretty nice example tho, 1 hat n straightforward
well, cant deny that xD
Ahh, that makes sense. I didn't realize Item implemented ISalable.
I have questions about how ItemQueryResolver.Register operates, but I'm going to try and dig through code first before inevetibly giving up and asking for help 😅
Ok, I’ll check the code to see if I can find it, but I’ll report this news back to the player, since this isn’t something I can fix
for hardware shop, im surprised it still used, its from 2023
mod author doesnt seem active anymore or else id have suggested to dm them bout the issue
yeah, unfortunate
oh wait they are active, just not doing any mod making, might be worth a dm afterall or a bug report
Btw, does anyone know of a mystery forest map. I got this comment, but their link doesn't seem to be working
secret woods in some other language probably
think so, since they then say Maps/Woods which is the ID for the Secret Woods
I know SVE edits the secret woods map in particular
they had the link copied wrong
looks lke they have something else changing the secret woods on top of SVE
I know Forager's Nooks and Crannies does and maybe that Yoba NPC too, 
oh it's this #1401359667409715310 message
SVE edits the map there when WAG is installed
Quick question
Is there a way to add mail, without it being sent to the mailbox
As in sending it right into the players "inventory" of previous letters, so to speak
for ```python
AddMail Current {{ModID}}_ExampleLetter
with a trigger action you can set it to received bypassing the mailbox
How would I go about doing that?
ohh so u set it to "received"?
tytyy
so it wont go into the mailbox at all, right?
yup
awesome, thanks ducki :3
:3
I just added 27 DayStarted trigger actions
I feel bad to add so many
but its for data migration 😟
Apparently, Aquatic Sea Fish has had issues with some quests not working
So I'd change all the letter/notes/quests that were received/active
and change them to the newer and up to date entry names, by migrating them like the photo I showed
its so high because I had a lot of letters associated
it had to be done :P, hope it works out and i've been enjoying the mod myself, love the sea turtle
tyy
and it will work out well : )
just want the best experience for my users. 1.3 is supposed to focus a lot of quests and stability
also if u didnt notice in case (photo is new one)
alaskan king salmon sprite is updated
from the old one to this
: )
ooo
the old one was just a resized salmon but now its nicer
and two new fishi
the right one is legendary at ginger island hehe
colors and shape so satisfying
is anyone familiar with daisyniko's assets? there's a summer_map and map_summer asset
Just double checking, there isn't a way to define a new ISalable object via Content Patcher, correct?
well u can use peliq which does this stuff for you
thats what this example shows
@spice inlet hi i PR in support for lookup anything on the reqs https://gitlab.com/delixx/stardew-valley/unlockable-bundles/-/merge_requests/1
@lucid iron I learned the Fisher-Yates shuffle thanks to you, just wanted to let you know 🤣
yep thats the shuffle i stole from wikipedia
I'm going to test it hopefully soon
I’m this close to being done with my first real mod. I just have to do the debugging and I can finally set it down. I’ve been working on it for weeks and it just kept getting bigger and bigger
Join the scope creep my friend. Good job on sticking with it!
All I wanted was to give Gus a nicer vending machine but it turned into a whole questline. Then I decided the quest absolutely had to start once I finished a certain number of community center rooms and I had to make a convoluted tracker accounting for all the different orders I could finish them that's literally 500 lines long. But it works!
Thanks for all the help! I feel like I am taking 2 steps forwards and 1 step back. I'm having issues properly checking if the player has gotten the object alongside a few other things, but I'm gonna take a break to have dinner
setting the flag is also stuff for you to do manually 
UGGHH, I'm sorry. This is just a lot of terminology overload for me rn 🤣
-# It also doesn't help that my job uses at least some similar vocabulary, but with very different meanings
@lucid iron When I end up getting this up and running and send through a PR, would you want me to leave in my debug logging in Places.cs?
sure ill decide if i want to keep them 
Awesome! Will do
One of the coolest things about making this mod is that now when I look at mods on Nexus I recognize the names of people who have helped me out in here
You're expanding/updating the berry bushes? Or adding more Pokemon related stuff?
Both
I have been a very heavy sufferer of scope creep
I haven't done anything too crazy with the existing sprites, given a few a few touch-ups and given things colored outlines, but there's like.. gonna be a LOT of new stuff-
Oh I'm very interested then, when you get it done, I'll make your mod suggested on my Pokemon mod page since it would go well
@lucid iron Looking good so far in testing just the hitscan. If not specified defaults to Closest+1. When using synced abilities, both the initial ability and synced ability must specify Random for it to be truly Random. Having initial Closest and synced Random still favors closer targets but sometimes hits randomly. Still got more testing to do, but so far so good.
Is fog event thing in mines/sc hardcoded?
like, when it happens?
or the effect itself?
the effect you can apply anywhere farily easily
I need effect only yes
Do I just copy bathroom
It kinda has the same steam like overlay
let me look, I used it in another mod that hasn't released yet
it does require c# to my knowledge, just fyi
oh maybe not
you might be able to do it as a map tile property, you can check
you set fog color
oh, no I had to set fog source as well and draw a rectangle, so yeah, would probably require c#
I see
alright, so I finally took a look at the mod that's accidentally using my portrait, and this is the relevent code I could find: { "ShopName": "StuykSnackVending", "FilterSeedsBySeason": true, "MaxNumItemsSoldInStore": 99, "Quote": "Life is short, eat the snacks first.", "ClosedMessage": "Somehow the vending machine broke.", "StoreCurrency": "Money", "DefaultSellPriceMultiplier": 1.2, "When": [ "t 0600 2600" ],`````` { "ShopName": "StuykHardwareStore", "FilterSeedsBySeason": true, "MaxNumItemsSoldInStore": 99, "Quote": "Convenience at a cost.", "ClosedMessage": "Store is closed. Open from 8 AM until 6 PM.", "StoreCurrency": "Money", "DefaultSellPriceMultiplier": 1.6, "When": [ "t 0800 1800" ],
I suppose I could still contact the author about it, but I'm not sure if they would have any more of an idea on what to change than I would
Void said "I'd check is they have set a protrait in the shop entry, cuz if not i believe it takes the nearest one or something" but I don't see anything resembling that
when you say they are accidently using your portait do you mean that when your mod and their mod are both installed, a portrait from your mod shows when their shop is opened?
what is this json schema? shop tile framework?
I dunno, the shops I add I have to specify the portrait specifically
under the owners node
but I think i'm using the pure CP 1.6 shop
yeah this isn't vanilla shop data so that's why i'm asking
Oh, it uses a { "Shops": [ { and it does use shop tile framework
in that case, i expect that shop tile framework is the problem and there may not be much you can do
another obsolete framework (that STF requires, if memory serves)
yeah, I don't think either of us could fix it, I'll just tell the player that they are using out of date mods I guess
when you say another obsolete framework, you mean both aren't recommended anymore because CP/smapi does that stuff now right? They are both made by the same person, and were updated recently, but there's no changelog, so who knows what's changed or been fixed
yeah, by "obsolete" i mean no longer necessary, since the stuff they do is exposed as content and therefore CP can edit it
many obsolete frameworks are still updated and still work, primarily to keep old mods that rely on them (and won't themselves be updated) from breaking
thanks for the explanation
Hello everyone! Just wanted to share my new mod with you ❤️ I was hoping to get it out for modfest but obviously that didn't happen lol
yes, and yes, thank you, I appreciate it!
done!
Grats on the release 
Congrats on the release~! 🙂
QuickQuestion, so to speak. If I want a sound cue to loop for a stratch of an event, is there a way to get it to automatically repeat when it would otherwise end, or do I get to just repeat the command multiple times and hope it comes out in testing? (extra fun as I know roughly how long I want the sound to run in total, but not the duration of the soundfile...)
oh, my god, not pottery! (This is a sound of delight despite appearances. I am a potter IRL, and it could be decidedly fun to mix my obsessions. It's just now I have to download another mod)
I would just repeat the sound in the event code and cue it up, for example:
playSound swordswipe/pause 200/playSound swordswipe/pause 200
look so cool!!
That's what I was afraid of (afraid because I have no idea of the duration...)
Yes lots of testing I'm afraid. Not sure if you can put your own custom audio for the event since I haven't done it myself. But if you could, you can set the audio file itself to be looped and save you the trouble.
Set the audio file to loop and look for an end audio cue command
HOW do you set the file to loop? It's a vanilla sound cue. Right now I'm just spamming the copy paste for pause 100/playSound fastReel/
If the vanilla sound cue is not already a looped sound, then there's nothing you can do since you can't change it. But if you were using a custom audio file, you can loop that.
Is there a way to know if the vanilla cue is a looped sound?
Usually it's for music/ambience, so fastReel would not be in that category.
Huh. Checking the unofficial spreadsheet, it IS listed as a looping sound there, but, well, that's unofficial...
The official wiki doesn't say anything.
Hmm, yeah if you've tested it and it doesn't loop then I guess it doesn't
Can someone download this (and sound tweaker) on windows and let me know.if it works. It worked for me. But it might be because its my computer and file.
I dont think it has any dependence on my device. But I am not sure, this is my first mod
https://www.nexusmods.com/stardewvalley/mods/45137?tab=posts&BH=1
Off topic but I just noticed what your user image does when my cursor is hovered in the vicinity. Seems like you're the right person to be answering a question about fishing...
@olive lotus You should be able to register a custom sound file as a cue in Data/AudioChanges. If you wanted to try it that way.
Hahaha
The reeling sound does loop on its own. Well, there's one headache down...
Nice job!
Try changing everything to lowercase
Did you try it? Did it not work?
Is anyone familiar with the "DeepWoods Mod" and knows if I can use "Content Patcher" to change how the Obelisk looks each season?
No but yes
sounds like ur going to be editing/replacing a texture which is definitely possible with CP
- not all textures can be replaced with CP; some C# mods and some Tiled maps bypass the content pipeline entirely
@lucid iron Alright, the PR is in. I'm gonna go rest now 😅
tilesheet images included in the mod folder alongside the map will be loaded directly without requesting the asset via the content pipeline
oh yeah
Okay tbh even if I'm not hand drawing these from scratch and just using my own mod assets and vanilla game assets, I'm REALLY enjoying putting together these bundle icons!
I know there are mods out there that do the same, but they seem either outdated, or change the appearance for many obelisk(which leads me to believe maybe they didn't test it thoroughly). So I tried making it myself and it only works on loading a save, when I change seasons, the game crashes with "ObjectDisplacedException".
that error is above my paygrade
although it sounds like there is some way to successfully do it? debugging time
I do know there is way, the author posted on the mod page about an update that included the feature, but I need to use the API for that (I don't know how to do that). I just wanted to check if my pc was going crazy, or if it was possible for it to happen.
That sounds like this
...hang on, let me forward the message
Tl;dr ask the DeepWoods author for a fix.
Anyone know what file has the giant omelet for that once quest in it?
LooseSprites/Cursors2 🙂↕️
Of course it's in a cursors thing 
Ty I also eep now so I shall look in depth tmr
No rush! I have work anyway and now I am eating and probs will sleep lol
Speaking of cursors, anyone know if there's a green* checkmark icon anywhere in the games files, so I can reuse it instead of making my own?
*it doesnt have to be green
I think controller mapping in loose sprites might have that
It does but it doesnt have a transparent background 
Make one hahaaha
so I can reuse it instead of making my own?
If I reuse an existing one then it's more likely to support recolours
I've been seeing it around from lookin through sprites lol
if you add love of cooking as a dependency you can use mine 🙂↕️
No 😌
lmao
there's also a stylish red x
ah, but the game has already got me covered in the negative case of needing to cancel instead of accept
it's used for the end of night menu in multiplayer
Usually I just fall back to emojis lol
How annoying though that it's not a texture stored on a field in Game1 
in this good house we Game1.content.Load<Texture2D> in the draw method and let the cache worry about "performance" for us
in the draw?!
@brittle pasture 6480 told me I should ask you if it's possible in EMC to apply the smoking effect from smoked fish to a sprite but exclude the gray overlay/filter?
I have a future bird that it would be perfect for.
Criminal
that's easy enough, I'll ping you when that's done 
I had a goal of making a total of 15 fish for my mod (as a start). I had two to begin with. Now I'm up to 14. Looking at it now, I have 7 fictional and 7 real animals. On one hand, I'm patting myself for unintentionally having a balance. On the other hand, I'm ready to strangle myself for making a perfect balance that will be broken if I make a 15th fish lmao.
Clearly your only option is to make a 16th fish 
For textures specifically, it doesn't particularly matter one way or another, as Game1.content.Load<Texture2D>("SomeString") will always be the same reference (when SMAPI is in use)
That picture is me. I did it, but it wasn’t easy, and I’m going to have to do it so much more again 
In some ways, I learned it also didn’t have to be as difficult as I thought though
I crammed a lot of the dialogue writing into several days when I could have spaced it out across the month 
Yeah dialogue seems easy until you realize it's small talk
I spent half of modest writing dialogue cus man am I bad at small talk
Is dialogue just really boring to make? Or is it really hard to get working?
Codewise it's one of the easiest things there is
But coming up with things for your npc to say day in and out is... draining
Players tend to notice if it's too repetitive, so we try to come up with a lot of it across different days, seasons, events, even heart levels
My first mod had 3 different heart levels' worth of dialogue, and that took me longer than the events, schedules, and map combined
well with dialogue you do have to contend with a handful of ridiculous shorthand codes like $e $k and all the annoying syntaxes for actions, questions, etc. all that plus the depth of complexity with all the available dialogue keys i'd say makes it one of the more difficult content tasks
I can definitely see the schedules and map being much faster yes
Those took me a while then since it was my first mod ever, but yeah, even nowadays when I can spin them all up relatively quick, dialogue takes me a while
I try to work on it in parallel with everything else, since it helps to think of things they would say while also working on their events or deciding where they'd go in their schedule etc
mostly just coming up with interesting things to say in-character is gruelling. having to remember and use the dialogue syntax makes it worse
I see
Yes its so hard to think come up with something. Doesn't help I'm making a Stardew x Darksouls mod so all the guys I'll add speak old english flavored and are probably depressed.
Speaking of dialogue shorthand codes, is there documentation on these, like an overview about which shorthands exist and what they do?
[[Modding:Dialogue]]
Thank you!
For me it's as mentioned that it's small talk lol
I can do dialogue just fine, in fact it's the part I'm best at when writing a story. I find writing conversations fun and natural.
Small talk though? What am I supposed to write
especially considering I have to make it generic enough to account for farmer not being a character with a set personality (it's a smaller issue in events)
It's the bounce back and forth, the continued banter... But small talk is like. How many things can you really say.
Thats why events took me like. An afternoon to write compared to a few everyday lines

i see
I just accidentally decided her love language is gift gifting cus it makes it interesting (she gives your farmer stuff pretty often at 8 hearts, sunday treats, summer juice, etc.) and also reminds you of things sometimes (Pierre closing tomorrow on tuesdays) moms you and reminds you to take care of yourself (just, everywhere) FISHING. Stuff about her kids, and being an actress sometimes
It sounds a given but man having hundreds of lines (multiple days, different heart levels, different seasons) makes you paranoid its repetitive T_T
is this valid?
Missing a direction (up/down/none/etc) before the times
Which direction you use is up to you, the openshop explanation on the wiki explains how the directions are used. Either way, you can't skip having some value for direction in there if you want to include the other values (times and owner area)
ok I got it thanks
I'm sad that my "at least I have more than Sandy" mantra wouldn't work for much longer.
It's the direction player is on. But you could also use none if you wanted it to work from any direction.
the Henchman sets a (thankfully) very low bar for npc depth
Counterpoint - the bouncer sets an even lower bar
step aside, blockhead
God, could you imagine if the bouncer was the other new bachelor instead of clint?
1.8 :)
plot twist: bouncer replaces clint in 1.7
The Bouncer doesn't even have a walking sprite sheet. But you know who does? This guy.
mmmmmmmmmmmmmm
oh god this is giving me flashbacks to an inside joke 😭 coincidentally about arumi
Aru(mi)
Microwave
Aru(m)i
Microwave mmmmmm
wiwi wawa
Hi! Just to update you. Putting "which": -1 on each one did not work.
I am moving on to the process of elimination to see which specific group of buffs causes the error message.
Let's say someone had "ActionOnPurchase": ["IncrementStat {{ModId}}_TestStat"]. How would one check this stat in a dynamic token? i.e., Given
"DynamicTokens": [
{
"Name": "TokenName",
"Value": "TokenValue",
"When": {
// {{ModId}}_TestStat = x
}
}
]
what would one put in the When condition?
You can't check stat in When rn
Ideally you just use GSQ wherever you need this, otherwise you can make a mailflag
Gyus, would anyone here have a very detailed walkthrough on how to create new maps in stardew? I'm finding this one on the wiki so complicated. My mind is too slow for that part. T-T
I have no idea what to do.
https://smapi.io/json/none/69ad4cd4524d4216b9e3990b4ecda934
(you want smapi.io/log for logs)
!tilesheetclimbing anyway it seems like this is your problem
When creating or editing maps in Tiled, one common error is tilesheet climbing, marked by red text containing "invalid tilesheet path '../../..'. This is caused by SMAPI not being able to find the tilesheets needed by the map file. To prevent this error, make sure that you have a copy of all necessary tilesheets in the folder containing your WIP tmx file. Copies of vanilla tilesheets can later be deleted, but must be present while working on your map.
If you get this error with a completed map, an easy way to fix it is to open your tmx file in VS Code or a similar text editor, find all of the places with <image source=, and remove the filepaths to so that only the tilesheet names remain. For example, if the code says <image source="Content (unpacked)/Maps/townInterior_2" width="512" height="64"/>, change it to just <image source="townInterior_2" width="512" height="64"/>.
https://stardewmodding.wiki.gg/wiki/Tutorial:_Map_Patches_and_Warps
This is the walkthrough i used myself - I can try and help you out if theres a specific thing youre confused about ?
Last edited by KaileyStardew on 2026-03-18 14:38:02
Tiled is understandably one of the most unintuitive/intimidating programs to use when making maps or patches for your mod. This tutorial aims to break it down into very simple steps with pictures! This tutorial will use the example of making an NPC house to teach you how to make a map patch (fo...
That's what's confusing me, because it says maybe it's because I'm getting the tilesheet from extensive folders, but I'm not, it's literally the mod folder of the mod itself, NPC/assets/tileset/bushes.png
Thanks dear, I'm trying to use this exact one, but I'm very slow, it seems so confusing to me.
Hi everyone, is there a good way to find the method that executes when opening a door that requires a certain relationship level to enter, for patching?
Interior door?
Or exterior door which is technically a warp
Interior door, that's the one I'm talking about.
Since Im new at furniture. Can anyone possibly tell me why the toolbar icon for my rugs is so large and does this?
The interior door is hardcoded I think at 2 hearts
Do you want a higher heart level?
your log says it's trying to get the map file from ../Tileset/bushes
I do have follow up questions involving the mail flag (I've been having mixed success with its behavior, and IDK what exactly is happening), but I am gonna be fairly busy today most likely.
It also does not help that I'm running on a solid 4 hours of sleep 😭
that is not allowed; it must be in the same folder as your map
(not a map maker so I might be incorrect in some parts)
anyway read the message carefully again and open your map file in a text editor and check and fix, then copy all the tilesheets to the same folder
No, im not trying to change the heart requirement, i'm trying to run my own code after the method excutes, but i'm not sure which method handle this or how to find it.
You can pull tilesheets from other folders now. But that would look like
../TileSheets/bushes.png
Wouldn't you need to define a trigger action via C# then?
(it sounds like they're trying to embed their own sheets instead of loading to/reading from the content pipeline)
ahh.
GameLocation.performTouchAction
it's a giant function where everything is inline so you probably need a transpiler
good luck 
oooor you can define your own action yeah nvm I mistook what you want
I guess if you just wanna do stuff after the fact then a postfix is fine
how can i use a config token like a dynamic token? what i want to accomplish is to use a slider config and have the dynamic token be whatever is chosen in the config
just use them as usual? they're both tokens; dynamic tokens are just ones that have extra defining rules, not anything unusual for their usage
Yeah a config is already a token
Thanks, So do you know how I can check if the action is specifically triggered by a door?
ok so if i have a config token like "Days" i can just put {{Days}} ?
you can read the function's code and see how the game does it itself
i wasn't sure if i could do that since ive only used When with config tokens
most reliable way is to just copy paste them in your postfix, decomp shenanigans notwithstanding
true enlightenment is realizing that tokens are tokens and you can use them however 
Yeah, that works
okay yayyyy
Me at like 3 AM last night: bolts upright THE CUTSCENE WITH WILLY AFTER THE TRASH PICKUP
it wasn't too bad, but I fixed it anyway
You changed, Willy
- Willy had a shadow in that frame that showed in the middle of the bridge, masked that out
- I offset him up a teeny bit because the bridge has an uneven edge and that one board on our left was showing above his shoulder by a pixel
hmm how do i do a slider config? do i just list the numbers or a range from 1-28
wait don't you mean linus?
i can't believe willy deflated a pufferfish for his bath
...yes
Look... as I said, I woke up in the middle of the night with this thought LOL
WHAT
I'm not gonna say I am PARTICULARLY AWAKE with that comment
I think you need a nap 
New quote added by atravita as #7926 (https://discordapp.com/channels/137344473976799233/156109690059751424/1495805689287802920)
Okayy thanks
i believe you need to list them, though i could be wrong
i found it
range!
i assume u can list them too but im not listing 28 numbers xd
awake enough to fix the problem, not awake enough to notice I am using the wrong name for a guy. rip
range just lists them as soon as the token is read, so yeah, either way
ah
I feel you, ive definitely been trying to fall asleep and been hit with mod motivation before
It is a blessing and a curse
(real talk: I have notes for stuff to look out in mods I am trying and one is Willy related and it's on my screen right now, I think I did the ol "type the thing I see not what I am actually thinking of")
what isnt?
it's saying that the default value is not allowed
Ignored (CP) Tilly, the Tea Loving-Librarian NPC by strawhatwem > ConfigSchema field 'Joja Route Trigger Length': default values '28' are not allowed according to AllowValues.
(also I don't actually remember if it'll be a slider or just a dropdown of numbers
)
CP docs on the GMCM config don't go into detail
@torpid sparrow since you're here, just noticed Tilly has a few events with the girls in the valley (saw the ginger island one while testing stuff out) could I perhaps add my girl Arumi in that picnic event :3c
(no position or dialogue will be changed I'll just slap her sprite in if your mod exists)
I'm only asking about the girls picnic cus a one-on-one event would probably require your input haha, while the picnic is already complete and I can add a line of dialogue or two without changing anything :3c
i think you'd have to overwrite my entire event for that im not sure
i can add her in on my end with a conditional patch
just let me know where you want her to be + and the dialogue
woops that was redundant
my mouth hurts
oh righttt its not vanilla sigh
I just changed haleys event so i assumed it would be the same, but i forgot this is a mod 
You don't have to overwrite the event or even need a conditional patch
oh wait how did u change haley's event
Text Operations!
yep
Also events have a built in thing where you can add a NPC without conditionals, just if they are present or not
Kent uses it
I changed it to make haley say that she got 7.5k instead of 5k in donations cus arumi mentions donating extra, but it can be used to add stuff too 🙂↕️
You can mark NPCs optional in event commands by suffixing their name with ?. For example, jump Kent? won't log an error if Kent is missing. When used in the initial event positions, the NPC is only added if they exist in Data/Characters and their UnlockConditions match.
So you can just add her to the event with ? and it'll only work if she's in the game and not if she isn't
don't even need conditionals
NassiLove.ArumiAsakai_Arumi is her internal ID ^_^
She can be anywhere that fits, I can send her beach sprites in DMs if you're fine w that?
oh i meant if you're able to do it on ur end without overwriting mine, feel free to include a patch in your mod
ohhh sure!
im all in on joja rn anyway xd
its a bit of a clusterfuck but im working through it
she will not be going joja but its just a version of her route when farmer goes joja
Jetrayal
I'm trying to do what you recommended and seeing if it works like this, but it seems to keep giving me this problem of.../Tileset/ T-T
did you open the map file with a text editor and fix it
also maybe tilesheetinator probably has something for it
!tilesheetinator
You can use the Tilesheetinator tiled extension to create Stardew Valley maps that work in-game without having to copy vanilla and modded tilesheets back-and-forth, rename files with a . in front of their name, edit maps only in the unpacked content folder or make symlink workarounds.
See the mod page for full installation and use instructions.
Taking a shot in the dark here: The tilesheet being in your mod doesn't actually matter. You do still need to tell the game where that is, but it's not in the tmx.
the TMX will just point to the name of the file itself. You point the game to the location of that file something like this:
{
"LogName": "Load Tilesheets - Photos",
"Action": "Load",
"Target": "Maps/municipal_photos",
"FromFile": "Assets/Maps/TileSheets/municipal_photos.png"
},```
So you can't have ../Tileset/bushes in your tmx. Edit that out with a text editor and just make it "bushes".
(though I feel like "bushes" probably already exists and this might cause problems)
I did this and the code just goes back to what it was before, as if nothing had happened. I've never seen a stubborn code like that. 🤡
After 5 attempts, spamming Ctrl + s it finally saved!!🙏🏻
I imagine my parents must have suffered the same with me when I was just a rebellious child.🤡
Tiled sometimes does not save things like tileset information unless you have changed a tile on the map, for future reference! The trick is usually to change a tile, save your map, and then change the tile back to save again.
Oh okay good! LOL sorry for explaining a thing you probably already did, but I figured it was worth saying just in case
Don't worry, everything is fine kkkkkkkkkkk
What determines if something can be aged in a cask?
technically Data/Machines decides what goes in, but it uses a C# method, so some aspects are probably hardcoded
(this part: "OutputMethod": "StardewValley.Objects.Cask, Stardew Valley: OutputCask",)
Oh, damn..
other than location and needing the item to have quality, the code doesn't actually seem to care much, so it might be fine to add a similar entry for something else
Alright. If I need to I'll look into it
Are we getting fish sauce
On another note, I find it both really funny and irritating that Lewis, Linus, Willy, Sandy, and ESPECIALLY Pierre's messages when sending you a recipe in the mail all make reference to specific ingredients, foods, or just straight up the recipe he's giving you and thus making them much harder to reuse for other recipes 😭
Like why even in something as innocuous as a letter he sends in the mail does Pierre have to do something unlikable 
I was also going to have Emily send recipes for colorful food but her mail says she's sending a healthy food and these are cookies and candy so it wont work 
Wait actually the tag for Pierre's is different from everyone else's. While everyone else has #'s Recipe, Pierre has [#]Pierre's Famous Tart so.. maybe theoretically I could make a new one for him?
Ah but the initial tag is still "PierreCooking" which... I dont know how to work around cuz for the recipes in the mail it checks for (NPC)Cooking by default (I imagine)...
you can send your own mail with trigger actions
Doesn't that require the mail framework mod?
no
Oh
[[Modding:Trigger actions]]
Honestly I just knew the mail framework mod existed and because of that assumed it couldn't be done in vanilla
Which is a very unreasonable assumption I'm aware 
this is niche and maybe not a consideration you need to worry about, but just a warning that mail with Cooking in the ID can never be checked in received because there’s some hardcoding going on that automatically removes mail with Cooking
That sounds oddly inconvenient 
as long as you don’t want to set a mail flag it should be fine
well the fix here is just not use Cooking in the id
True
I'll look into doing that if I need to, for now there's plenty of other NPCs I should be able to easily add recipe mail for
I don't recommend using the Cooking mail thing so for vanilla NPCs that don't already have them or NPCs you don't own
well I wasn't gonna do NPCs I don't own that's for sure 
But it's been working out so far when I implemented them for Jas and Vincent, so why not?
collision; if another mod does the same thing one must win
whereas with manual mail sending you do not have to worry
hum.. that's a fair point..
Alright yeah. Then I should probably transfer over the existing recipes given by Jas, Vincent, and Alex over to the trigger action system
Before I add more, so I know how I should change the keys lmao
Got any examples for triggering the action after getting enough friendship points?
yes I have it in the name of the file to remind myself LOL
LOLOL
there's Hardcoded and HardcodedWem
there is one mail example in https://stardewvalleywiki.com/Modding:Trigger_actions#Data.2FTriggerActions
you can swap out the condition and mail ids
"{{ModId}}_Niko10Hearts": {
"Id": "{{ModId}}_Niko10Hearts",
"Trigger": "DayStarted",
"Condition": "PLAYER_FRIENDSHIP_POINTS Current NikoSasaki 2500",
"Actions": [
"AddMail Current {{ModId}}_NikoHandMirror now",
]
},
LOL
does anyone know where the stuff for the slimed debuff might be kept?
like the visual effects
Is it animations.png in TileSheets..? I cant remember off the top of my head exactly what it looks like so I can't verify but I see a few in here the could be it?
I think that's GlowColor on the buff data
Oh yeah that too
I honestly thought there was an extra layer of vfx
ill check 
my debuff would feel much better if it had a visual effect so i decided to go back to it
Oh excellent it looks like I can still use the f (NPC) (number) system in recipes for receiving these recipes
that's the thing I said to consider moving away from 
But that's what it checks for?? 
i mean 
fwiw there's one hardcoded bit for the slimed debuff ID, which I think is just throwing out little green particles; glow color should handle the rest
if (this.id == "13" && old % 500 < this.millisecondsDuration % 500 && old < 3000)
{
Game1.multiplayer.broadcastSprites(Game1.player.currentLocation, new TemporaryAnimatedSprite(44, Game1.player.getStandingPosition() + new Vector2(-40 + Game1.random.Next(-8, 12), Game1.random.Next(-32, -16)), Color.Green * 0.5f, 8, Game1.random.NextBool(), 70f)
{
scale = 1f
});
}```
the glow color is there yea, but i meant those drippy particles that come off the players feet
you can specify a recipe manually
aw man... I was really hoping I could get away with NOT duplicating the same mail dialogue multiple times just for different recipes..
yeah you can also use the same i18n token for even more recycling
I mean yeah.. but like.. when presented with the opportunity to NOT have to do that, why wouldnt you? It's less clutter overall
An i18n made it so much more satisfying to look at haha
Cus I only need to write the whole line once
i guess i’m confused because you’d need a separate trigger action and a separate mail for each one no matter what
it is still a lot more verbose than the recipe friendship thing yes
but as I said it guarantees that your custom text is seen
tradeoffs and stuff
also.. Okay is a [key] just the id for the recipe?
Okay, that's also what had me confused
-# also why is that emote "shaking head vertically" why isn't it just called nodding 
Ahhhh, okay! thank you!
It's a miracle I've gotten this far without understanding that
~the more you know~
Also I'm assuming I'm gonna want to remove the pre-existing "f (NPC) (number)" fields from my recipes for the NPCs that dont already have mail using those?
Could someone help me fix this? T-T
does the map file have an existing warp field
hmm i cant find which specific warp this is but it seems like ur missing something in that warp
an i think i see the issue
nvm no i dont
hmm
I had made one to enter the house, but they recommended that I delete it and leave only the code and I removed it, but this yellow message keeps appearing.
are you sure it's gone
Well, what I have around on the map is just that now T-T
Warp is a property on the map itself
Property of the map itself? I'll look at that then, thank you.
does MMAP have a way to set ambient light outdoors?
Hooray my code doesn't work and it doesn't give me any errors 
oh my god... ok I see a glaringly obvious issue... I didn't swap out who you need friendship with after copy-pasting the trigger action.. so it's all still for Jas when I'm trying to test Vincent's recipe
Aaand the mail sends but it doesn't actually open anything and still doesn't give an error in the log
I'm going to assume I messed up something with the i18n entry? cuz tbh I didn't understand how to incorporate the key as well as what else I already had was no longer necessary.
"Vincent2Recipe": "Hi! My mom said I should send you something for being so nice to me. I came up with this last night! ^ -Vincent%item cookingRecipe[{{ModId}}_EeveeCookie]%%[#]Vincent's Recipe",
waitttt ugghhh I think I know what's going on... I still feel like something's wrong with the end of that letter message above, though
i don’t think you should have [] around the recipe
on the wiki <> represents required args and [] optional args
ohhh thats why the wiki differentiates it with []..
Honestly this is not a great start to modding for the day
this has just been frustration for something I didn't even want to do 
you’re still learning new skills, it’ll get easier
%item cookingRecipe {{ModId}}_EeveeCookie%%[#]Vincent's Recipe",
So I have the mail being sent and the letter actually appearing, but it does not give the recipe
wait... ok i actually have an error
i got too used to it not giving me anything 
I thought I knew how to fix it but on more thought I don't actually think I do..
Letter 'TntDove.PBB_Vincent2Recipe' has unknown cooking recipe '{{ModId}}_EeveeCookie'.
It should be the bit before the colon in the Data/CookingRecipes entry, right?
did you put the entire mail into i18n
omg you're so right wait
tokens dont work there; that's why you're seeing the raw {{ModId}} string instead of your actual mod id
Yep- I remembered that after you asked 😭
Thankfully I know how I can fix that
do I have to fully close out of the game for mail to update
and/or start a new save
there's a console command to view a mail manually
you can patch reload your mod and test again
I did have to relaunch the game tho cuz it's working now
But phew.. now that I have that figured out.. I gotta figure out what became the error here cuz I have no clue 😭
Lookup Anything
wdym? 
-# my brain is being incredibly dense right now
Is it possible to make a small change to the game map to create an entry for the custom map? For example, opening a passage on the forest map and when the player passes through it, will they be teleported to the map? But to do this without changing the entire map of the game and instead just a specific part?
install LA, press F1 while hovering on it
Ohhh
yes, look at documentation for CP's EditMap
Okay I had no idea what Lookup Anything was, i thought you were telling me to literally look up "Anything" and I had zero clue where 😭
Aah, amém! Thank you, dear!💜
(xkcd vc: its easy to forget that the average modder probably only knows one or two essential mod-making utilities. and lookup anything, of course)
honestly I almost didn't connect the dots that LA was referring to what Selph had said before 
-# look it's like the 4th most popular mod of all time 
its 8th actually so its basically uber niche
I legit don't think I've seen this mod before until now 😭
And I actually don't know why I wouldn't have seen it until now
Zuzuwood
But ty Selph, figured it out as soon as I saw what the item was
ok I think I transferred over everything I already had to this new system.. now I desperately need a break
I thought I couldn't do the TextOperations thing but then I realized I was just stupid lmao
Now it works!
(forgot to add the "Target" field in EditData cus I focused too hard on the text operations section, and then I forgot to replace {{ModId}} with wem's mod id so SMAPI was looking for wem's event with MY mod id lmao 😭)
HII ARUMI
TEEHEE

im just thinking it would be funny if you used the mod that made all the girls guys
It's okay, me and my bff once joked about boy's night and Arumi was there too
(I mean this btw, like /srs)
She can be one of the boys
I'll have to look into adding more recipes via mail another time because I don't think my blood pressure's gonna handle doing something I clearly don't wanna do right now 
Anyone know the proper way to add an NPC to the 10 heart group event?
I can add the NPC into the event itself and they show up, but as soon as I try to add the extra pre-conditions for the custom NPC into the fields, the event loads the OG event and ignores the edits
its diving me up the wall 😂 
show jon
jon
jon
jon
jon


