#making-mods-general
1 messages ยท Page 42 of 1
oh- fair
if having nothing in Aviroen.GSQBaby means you want to do nothing, then you can just return there
(though, that bit of code will only be reached if someone puts just "" in the CustomFields)
or null directly but idk why theyd do that
in order for it to reach that bit of code someone has to add that key to their customfields but do nothing with it except place a null/empty value
this is just for the weirdos who installed the mod when it doesn't do anything without author input, just as you said turn it to return i fixed it
its not checking if they added anything to Customfields
its checking if what they added is empty or null
oh, should i just yeet that
TryGetValue will check if there is a "Aviroen.GSQBaby" key in CustomFields. if that key exists, it will return true and save the value of that key to your variable
if there is no Aviroen.GSQBaby at all, it returns false, which means your if statement is false
so the code inside the if statement wont run
i have yeetethed the null part, i do want my code to not run if there's no key there
if theres no key then itll just skip past that entire if statement and everything inside it so thats fine just make sure you return after the if statement instead of making more changes after
also checking if stringName == "Yes" would work if you want the user to write exactly "Yes" as the value
but you can instead just have them write "true" or "TRUE" or "True" or something and just do bool.TryParse
that works like TryGetValue where the TryParse function will return true (and use an out bool variable) if it can turn the string into either true or false, or it'll return false if it cant figure out how to read the string as a bool
you can also just do bool.Parse if you want too it'll just throw an error if you pass in a bad value instead of returning false
Y'know while we're sharing our funky code already https://github.com/silicon-git/FestivalLocations/blob/master/FestivalLocations/ModEntry.cs
I made a C# mod that does fancy stuff 
And I feel proud ahaha
(i didn't mean literally do checks for those three values i meant that if you use bool.TryParse then the user doesn't need to write it exactly a certain way as long as it can be parsed)
throws just a random .json customfield edit into one of my already made mods
(Now whether or not it commits coding sins is another matter)
wait where, after the out?
bool.TryParse is just another function you can call

value.Tryparse
brain empty 
You need the out variable
Oooh okie
oh
i'mma just ignore the green squiggly for out string customString
i named it that to not confuse myself
I just spent 15 minutes pulling my hair out wondering why my Tiled was taking my attempt to copy-paste a block of tiles and only giving me one tile of a tree no matter what I did, and realized that I accidently turned on the randomizer option at some point.
why does it even HAVE that lever and not warn you about it??
...there's a randomizer option?? (TIL)
there is! it's hotkey is d (for Dice Roll, I assume)
I can assume I hit it because I was in-game on my map looking for things that didn't look right in game so I can fix them in Tiled, and since I use wasd for movement, I mustn't have been on the same screen I thought that I was
Does anyone know if MoopDrea, the maker of Shiko, is still around these here parts?
(i will throw this here incase anyone wants to slap me on the wrists with a ruler later, but i cannot for the life of me get this to work, i've already created the .json in a separate mod altogether with the appropriate customfields entry https://github.com/Aviroen/GSQ-Children/blob/facc16af595f64289da2cadd556361b2499d01c4/GSQChildren.cs#L38 but my brain is absolutely shot and i need to sleep or the walls will start yelling at me next)
"Action": "EditData",
"Target": "Data/Characters",
"Fields": {
"Abigail": {
"CustomFields": {
"Aviroen.GSQBaby": "true"
}
}
}
}```
this crash is showing up every time I try to load my farm map after Day 1 has passed. I can make a new farm just fine, I can load from Day 1 just fine, but trying to load past Day 1 results in this. does anyone know what happened, and how I can fix it?
i didnt notice it before bc i didnt look bc you posted a screenshot already of the question being asked, so i just assumed it was working, but. you're not actually telling Harmony to even apply your patch
you ned to create a Harmony instance and probably store it in a static field in your ModEntry and then have it call PatchAll
https://harmony.pardeike.net/articles/basics.html#creating-a-harmony-instance
i think your screenshot of the question earlier mightve just been you getting the 5% chance?
Can you share a link to your json and your full log, please?
I'm gonna yell, the one time rng didn't fail me.
sure, how do I access my full smapi log?
i like putting monitor logging statements in my code sometimes just so i know theyre even getting to those points
its not the ~proper~ way to do it but im too lazy for the debugger. trusty old Log("Got here") for me
I did read the part about logging but I didn't know where to put it
!log
Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.
Please share your SMAPI log file. To do so:
- Open this page: smapi.io/log.
- Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
- After uploading, it will show a green box with a URL to share. Post that URL here.
Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didnโt occur in your last session, please load the game to the point where the issue occurs, then upload the log.
if you're in your mod entry class i think you can just call Monitor.Log directly
I'll pin your message and get back to it tomorrow
https://github.com/Spiderbuttons/BETAS/blob/main/BETAS/BETAS.cs#L24
you can look at my BETAS modentry here to see how i store the harmony instance after i create it and then call patchall
I am now completely deflated in bed cause rng pranked me 
that'll find every class in your mod with a harmony annotation to patch with
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Home, with 28 C# mods and 28 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
here's my log, let me go figure out how to get the json for you in a compact manner
!json If you have multiple relevant files you can upload each one into the SMAPI validator and then share the links
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.
https://smapi.io/json/none/db94b7072fc142d29ffca0d1a3287d9a thank you, here's my content.json for the farm map
if it helps, every other save I have on other maps, including other's custom farm maps, loads and works perfectly fine, except for the new one I've been testing
I'm not great with C# errors but it looks like there's a problem with the UpdateMapSeats method.
I didn't do anything with C# for this mod, so I have no idea where to begin if it's a C# error
Sekundes, you didnt provide a MapPath in your CreateOnLoad model
I noticed that but I wasn't sure if that was normal for custom farm maps
oh, okay, that sounds simple enough. is it going to be in the modname/assets/mapname thing style?
CreateOnLoad is an optional field but MapPath within CreateOnLoad is not
i assume so
It's just this: "Maps/RiftstalkerSekun.FennmontFarm"
I didn't realize that that wasn't optional, especially since it loaded for Day 1 Spring
loading on day 1 is probably just somewhat equivalent to creating a save if i had to guess, which i suppose the code runs a different path when creating vs loading
thats just a guess though
that would make sense
That was also the reason for my confusion, since I thought it would completely fail if the mappath wasn't included - in a non-farm map it would...I would have thought. But actually if CreateOnLoad is optional, how do you actually put the map inside the location asset otherwise?
and that was absolutely the problem, it loads now
createonload as far as i understand it just means when you load a save it creates a new location, and then copies data from the save file into that newly created location? or something like that
so before and on day 1 there just isnt really anything in the save data in the first place
so it doesnt come up
it's double weird because I could restart the game and load maps that were still on Day 1, just not anything after that
well most stuff only gets saved when you sleep and thus go to day 2
yeah, I guess the save data would be empty, which would allow the former logic that allowed things to load initially to take over
thank you, both of you, for your help. I never would have guessed that on my own
i dont think you would. i think if you didnt add CreateOnLoad it would just be a location that was never created
Just a trick optional field
it seems to be used for things where their map asset gets created more directly or temporarily, like undergroundmine or fishingGame, but also for the other farm types that arent the default, presumably since you dont want them to be created unless you actually use them
thinking about it i dont know if you need CreateOnLoad if you're making an additional farm, since the others dont. since its the farm, i believe thats a place thats always going to be considered AlwaysActive by default
do not quote me on this.
I had it set because I remember it being required for multiplayer compatibility, which I think all farms need to be compatible with
Oh yeah for the cabins
or, at least, the wiki leads me to believe that it has to be set for custom farm maps
well, it only says for locations, not farms, so it might just mean "if you let other maps that arent the farm get cabins built on them, it must be always active"
i am like 99% sure the main farm is always active, no matter what
like. i dont think you can set that to false
for your custom farm
true, but I also don't know if farms are treated special for that kind of thing. I suppose I could always comment it out and see if it loads? XD
imo its at least worth a shot, because i know fuck all about maps and dont know if theres any implications if your farm has it set but every other vanilla farm does not
or what that might possibly mean
I don't remember the map I was looking at having the CreateOnLoad property set, but it was also a very small map, so I assumed multiplayer was disabled or something because it was a small map
most maps are not always active
it doesnt break multiplayer (unless the aforementioned cabin clause applies)
Well you have several other custom farm maps downloaded, don't you? You could have a look at their files too.
it was another farm map, to be specific
yep, it does load without the CreateOnLoad part. nice to know I was a victim of overthinking myself to death
honestly while the wiki is comprehensive, imo if you just started making maps youre better off learning from other people's maps. especially for components marked as "optional" in the wiki.
Optional on the wiki always is just there to tell you whether or not the game will complain/error if you leave it out or not
its not a comment on whether you should include it or not
ive never needed to add CreateOnLoad in my maps, unless im making a fully custom (buildable) location. for multiplayer compat in farm maps you just need to ensure the Order property is marked in the Paths data layer, afaik
so far no one has submitted reports about my maps in multiplayer, so id like to think ive got it correct
honestly? I was looking off of other people's maps, but even then, I simply thought that those maps weren't multiplayer compatible because they lacked that quality. I've only ever actually opened up one in Tiled to even see what the Order property was, and while I remember them being present originally, I think I erased them when I was clearing out everything in the Paths layer so I could make my own overgrowth patterns
and therefore had to add them all back in, thus in my mind making the map multiplayer compatible, thus it needing that CreateOnLoad parameter
(for the record as aba pointed out if you ever make maps that arent farm maps you will need CreateOnLoad because there is no other way to set what map asset to use)
(its just not required on a technical level by the game)
or rather other Locations* that arent farm maps more accurately
so for when I made my larger shed interior mod and greenhouse mod, I will need to use CreateOnLoad to load the maps for them? (just asking now to clarify)
unless you plan on creatin the locations with C#
the Order property's purpose is marked in the maps page of the wiki (in the paths and tile property section i think). it happens, i skim past/dont notice things sometimes 
it doesnt load the maps, you'll still need to load the maps yourself
as someone who can barely print Hello World in java, C# intimidates me, I'll stick with SMAPI. CreateOnLoad, it will be!
as in use a CP Load action i mean
hmmm i think you only need to use the Load action for that
but ive never made maps other than for PIF, farm cave, and farm
if you only usea Load action then there is no Location to ever go to
there will be a map, sure, but it wont be tied to a Location
yeah. after I get my custom farm map finished, the mod I want to make next is buildable greenhouses with different sized interiors, using GMCM to pick and choose what sizes you want to show up (so if you don't want Mini or Macro sizes and only want Medium and Ludeonicrous sizes, those are the only ones that will available to build at the carpenter's)
AdditionalFarmMaps does its own stuff
(the Rimworld reference for naming the largest greenhouse interior is for my own amusement)
buildable greenhouse sounds like a great idea tbh
i think ive seen some, never used any personally though
I've seen some in the past as well, but they never really... worked out the way I wanted them to. either too small, or the layouts were weird. I know a lot of people enjoy having a bunch of seperate squares for showcasing an individual crop with an iridium sprinkler, but that's never really been my thing
have you tried messing with GMCM? this is just a suggestion, but i think your current farm map could use some options, like the animal pens having prebuilt fences/no fences
I haven't yet, but I was planning to release two seperate files for my farm. one that had the fences and preplanning, and one that had no fences and no preplanning marks. I was going to call the other one the Unbound version, so that if someone wanted, they could download both files and use both farms
like have one save file where it was normal Fennmont Farm, and then a second save file with Fennmont Farm Unbound
you can actually make them into one zip file with some extra work
because I don't know if GMCM would allow something like that normally
oh? how so?
yes it can! you have to do it via mappatches
youre welcome to open my nexus page and download any of my farm map mods: they all have map patches
(just to be clear its not GMCM that allows that sort of stuff either! Content Patcher itself allows for configuration, GMCM just makes it convenient, but it doesnt mean GMCM is a requirement)
you don't happen to have a link on hand to make finding one faster, do you?
(all GMCM does is read and edit your config file from Content Patcher but you can do the sort of stuff Kisaa is describing entirely without GMCM if you want)
mostly, what I want is the ability for people to pick between which farm map they'd rather play with, the planned or the sandbox XD I'd like for them to be able to have access to both on character creation, if I can
the short n sweet of it is that you can conditionally edit maps or any of your other patches based on those config conditions in the same content.json
so you could have a config option for Fences Enabled and edit the map differently depending on what the config was set to
adding both would just be doing the same thing you've already done but copy-pasted with the different map file so that would be ezpz to put in the same file
- finish your main map mod, but first ensure EVERYTHING works correctly so you dont have to correct things twice
- copy your finished map mod, name it YourFarmName_Patches or something similar
- edit your patch map as needed, make sure it fits in a rectangular area (in my farm maps, i mark the corners of the patched area with a randomly named layer "1" using highly visible tiles, like the roof tiles from marnie's)
- create a map patch.json
- create an
Includeaction with that map patch.json asFromFilein your content.json - map patches is applied. if using configs to toggle patches, you should add
Whenconditions into the map patches.json.
(different map file and different strings/displynames too i ofc)
lemme fetch a link for my mod
(When conditions are also just a content patcher thing and unrelated to GMCM. im not trying to be pedantic here im just trying to make sure Sekundes understands that they dont need to set a GMCM dependency)
okay yeah im a bit bad at describing this haha. listen to button /lh
(even though 99% of people have it installed anyway
)
I do appreciate helping me understand how these things work under the hood. the explanations do help a lot, especially when I know I'm going to need to use these kinds of tricks later for the greenhouse mod
basically dont worry about GMCM at all just read up on Content Patcher's documentation for Configuration and Conditions
try looking at this one @dusty scarab this has the simplest patches (and is a small map
https://www.nexusmods.com/stardewvalley/mods/27749?tab=bugs
reading up on these two links will explain how you can pick and choose which patches to make or stack on top of each other depending on config values
GMCM beloved
i just never thought that you dont really need GMCM haha, but it sure does makes things convenient for mod users so i always set a GMCM config regardless
it is definitely very convenient, so long as you dont get confused and think its required to make conditional patches work at all
okay enough laying about i need to test that dang minecart network
learning the player config options, though, looks like a job for Later Brain, and not for 3 Am Brain
ive been nursing a headache this whole day
oof, that sucks :< I hate those, so much
but im ready to continue at least
i wish you luck with the minecarts and i wish sekundes luck with the 3am brain as i am headed to bed
gnighty night
who knows i would sink this much hours into a relatively small farm map
have a nice sleep button!
I am also going to go to sleep, before I try to do something crazy like add forest fish to the farm somewhere
oh hey, my PIF rooms mod broke through 1k unique downloads!!
congratulations! :D
banger. ill definitely go make some more PIF rooms soon
you reminded me to check, my crop mod is at 358 unique downloads :D
have a nice night! (i do this using EditData on vanilla farm maps for this before i migrated entirely to AdditionalFarms btw)
honestly after i learned AdditionalFarms farm map making has never been easier
congrats!! 
(the code haunted me, i could not, in fact, sleep)
youre just like me fr
instead of sleeping immediately after shutting down my laptop i ended up reading through some documentations. i have become a mod creator, but at what cost
...I've been looking through your mod, trying to get my brain working well enough to try making patches
didnt you say its 3 am for you
please sleep before trying to learn new things you will digest it better and you will almost definitely not make any typos or miss brackets like me /lh
closer to 3:30 now XD but yeah. I need to go to bed, but I am easily distracted by new things
theres quite a bit of steps to making map patches. dont overexert yourself, have a break 
indeed! good night!
I'm interested in getting into making mods. I was following along with an older tutorial series from XxHarvzBackxX, but came across a few issues like links being seemingly outdated and my VisualStudioCode app marking some things as errors when copied directly from the video. Is that tutorial too outdated for use?
Probably - I don't know of any up-to-date video tutorials. What exactly are you wanting to make?
Content Patcher Mods, specificall maps and characters
Well, as far as maps go, the videos from Harvz should still be pretty much okay for anything in Tiled, but the stuff about how to create the location with json is unlikely to be correct (it's probably using Custom Locations, which is unnecessary now). And NPCs totally changed in 1.6 so any tutorial from before the end of March 2024 will be totally wrong.
!gs
If you would like a guide to setting up mods for Stardew Valley, check out the getting started guide! https://stardewvalleywiki.com/Modding:Player_Guide
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.
Ah there we go.
There's also a command for getting started with NPCs, let me find it.
!npc
Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:
-
Tiakall has a great tutorial on making a custom NPC for 1.6:
https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC -
Custom NPCs received many improvements with 1.6. For changes made, see the migration guide:
https://stardewvalleywiki.com/Modding:Migrate_to_Stardew_Valley_1.6#Custom_NPCs -
Some information on the NPC wiki page is still relevant:
https://stardewvalleywiki.com/Modding:NPC_data
Just make sure you're checking the migration page and tutorial first as this page still has outdated information on it as well. -
Aviroen has put together a template that will allow you to easily create a romanceable NPC:
https://stardewmodding.wiki.gg/wiki/Npc_template
!npc
Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:
-
Tiakall has a great tutorial on making a custom NPC for 1.6:
https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC -
Custom NPCs received many improvements with 1.6. For changes made, see the migration guide:
https://stardewvalleywiki.com/Modding:Migrate_to_Stardew_Valley_1.6#Custom_NPCs -
Some information on the NPC wiki page is still relevant:
https://stardewvalleywiki.com/Modding:NPC_data
Just make sure you're checking the migration page and tutorial first as this page still has outdated information on it as well. -
Aviroen has put together a template that will allow you to easily create a romanceable NPC:
https://stardewmodding.wiki.gg/wiki/Npc_template

Lol
We also have a dedicated thread for NPC and map stuff that you can peruse or ask questions in (though you can ask here as well) https://discord.com/channels/137344473976799233/1277457201077813280
also unrelated but where do i see the governor bot command lists lol. i need to start memorizing those
i just dig through the mod author link
nice, thanks 
I always forget how to find it, so I go to governors mansion and search for list lol
checking the farm cave aaaand invisible tile issue again. goddammit
Unlike Avi, I find the commands harder to remember than the URLs usually lol

forgot to NOT select all the tiles for the farm cave entrance in the spring outdoor tilesheet
i have swapped the community around so now i'm confused and can't find the roles channel
Much appreciated!
hour 6 of bashing my head against this harmony postfix, no luck
oookay is there a way i could spawn a boulder in the farm cave?
IsFarm T doesn't work. that's disappointing
I can't remember the exact property name, but IsOutdoors?
or TreatAsOutdoors or something
oh yea you're correct! mustve missed that

this is why i should not code anytime past midnight
not about map things, i'm just confused beyond reason
does TreatAsOutdoors conflict with IsGreenhouse or did i just enter this property incorrectly
I don't know but my guess is that they would conflict.
oh noooooo
oh my god i finally made map work and the boulder to spawn. now i just have to check the fishing spots, fix some layer issues and the map can be published

Nice!
How did you get the boulder to spawn? Is it just one of those things in paths?
added both "IsFarm": true and "TreatAsOutdoors": true in the content.json. for some reason it didnt work if i added it just through tiled map properties
and i removed IsGreenhouse as well, pretty sure that caused a conflict with TreatAsOutdoors, but the wiki didnt mention anything about that so i couldnt know for sure
ooh, ok. Is it a real cave? I had a problem with it raining in the cave when I tried that.
the farm cave. i had to add a boulder spawn to prevent sequence breaking
(I've seen some farm caves where they're outdoorsy which is very nice)
this map is intended to have little puzzles and secret stuff
oh that's fun. Excited to see it.
now another issue to guarantee there is no sequence breaking possible: is it possible to add a GSQ condition into a "When" field?
basically i want a warp that only works after checking a mail flag (finished ccBoilerRoom). but so far i don't think what i've written actually does anything, because i can still use the warp even without having fulfilled that condition
You don't need a gsq to check for a mail flag. CP has the "HasFlag" token.
Just remember that if you are planning for it to be accessible on multiplayer, CC flags need to be set to check for host or anyplayer
for non mailflags, it looks like the when condition can get really fancy. https://stardewvalleywiki.com/Modding:Game_state_queries
yep thats the plan. thanks for the reminder
I ran into this issue with my own mod, only the host has the flags, so only they could use the flagged feature even though the CC was completed when I used the default hasFlag
Hello, I'm currently planning to add 2 version of npc portraits. One in my style and the other one in the sdv art style. I'm wondering on how to allow players to make the choice between the two?
I don't think you can use GSQs inside CP's "When" field.
yep thats the problem i had. SMAPI said it was ignored haha
Config! In your load code blocks set one of them to load when the config is set to version one and the other to load when the config is set to version two.
If you want an example, I do this in my mod for her hair colour. It's a very simple mod so hopefully it'd be straightforward to copy it. https://www.nexusmods.com/stardewvalley/mods/27730
Hi aba! ty for answering :] I'm not very familiar with configs. Is there a guide or template for it?
(I'd just show you the code itself without advertising my mod but I'm on mobile so I don't have access to it lol)
I dont mind you're a lifesaver 
I'm also happy to explain any of it, though if I'm not around when you need help I know that most of the regulars in here would also be able to.
here's the config template guide:
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/config.md
Mods for Stardew Valley using SMAPI. Contribute to Pathoschild/StardewMods development by creating an account on GitHub.
Thank you! 
does that ".description" show up in the config.txt or only in GMCM?
i think the i18n stuff in CP config is specifically for GMCM
config.json just has actual token
yea it only shows up in GMCM
at this point I expect most people to be using GMCM but I was wanting to include more information in the config.txt if people still use that instead of resorting to a readme.
what is config.txt
the file made that you can edit
thats config.json then
I mean it's a json
my brain formats it as json for the person building the mod and txt for people using it but yeah you're right it's a json.
it is bit silly to write i18n stuff into there since its the backing data
README.md would be better cus github will render it for u too 
assuming if u feel need to make one at all
Yeah I was just hoping the config.json could include a description for more ease of use. But GMCM showing the values is better, and for those who don't use GMCM that's on them.
oh no laptops my wifi card is acting up again.... not when im in the middle of this... 
cant it wait until ive uploaded this mod please
I'm at a conference so I can't test, just curious, is there an upper limit to projectile speed?
Or if you need something insanely fast, I imagine it's easier to either do a hitscan (directly damage monster) or spawn the projectile inside/1pixel away from the monster and do a temporary sprites thing instead.
More backstory, I have a projectile that spawns itself above the monster's head and moves downward kinda like a moonbeam, but I want the spawn-in to be a little more fancy and fast monsters like the mutant bugs will outrun the projectile which I don't want. So I was doing some homing stuff to try to get it to follow the monster, but the projectile is vertical only so it looks wonky if the monster moves to the side and up away from the projectile, so I'm looking at making an animation that looks like it's hitting the monster and applying the damage more directly.
I think it'd be better to not bother with projectile in that case yea
The collision system in game is just get predicted location and check colliding there iirc
So if it move too much in 1 tick it'll just overshoot
this particular beam also gets an override to ignore all collision besides monster so it's not using too terribly much of the projectile class, unless the debuff part of the projectile will use more.
I vote for custom hitscan class that takes temporary animated sprite
dang it, that's what I was building originally too lol before deciding to go projectile since it was more 'plug and play'.
Learning experience...
Is it really plug n play if u subclassed the thing 
well, building hitscan for this will make it transferable to the new harp attack.
it wasn't subclassed originally, I scope crept myself in the name of coolness.

A combat extensions kind of library mod might be nice
Tho it can't really be just C# api, would have to reference
Hi, could someone help me? I want to add a "DynamicTokens" to one of my mods, which only changes the texture of a certain thing when I'm in a specific location. The locations are: mine, desert, BugLand, SkullCave, and the volcano. I tried making a conditional, but it doesn't seem to work.
The conditional I made looks like this:
{ "Name": "Cape", "Value": "false" }, { "Name": "Cape", "Value": "true", "When": { "LocationName": "Mine, Desert, Caldera, BugLand, SkullCave, VolcanoDungeon%" } }
expanded melee framework seems to handle most custom weapons and their special attacks as long as people are using regular melee attacks. But I wanted to do something weird where you strum the harp and it creates a hitscan rectangle like a sword would.
Will get to try to finish building it this weekend.
Yeah I was thinking more about making projectiles less hardcoded
It's a pein that the debuff effects r mixed in with the projectile motion
Plus lack of ability to use any texture, gotta be that 1 sheet or an item
Also going to add the special attack to the right click, I found how to rotate the projectiles kinda twirling around each other and need to fine tune it.
are you specifying "Update": "OnLocationChange" on the texture patch?
Yes, I am, but I still can't do it.
{ "LogName": "Cape - Dungeon", "Action": "EditImage", "Update": "OnDayStart, OnLocationChange", "Target": "characters/farmer/farmer_girl_base, characters/farmer/farmer_girl_base_bald, characters/farmer/farmer_girl_base, characters/farmer/farmer_girl_base_bald", "FromFile": "Assets/Farmer/Cape/cape_dungeon.png", "PatchMode":"Overlay", "When": { "Cape": "true" }, },
Which location are you checking
dynamic token checking location, see above
(I'm asking for specifics because that fails for all mineshaft locations)
In all the listed locations ("Mine", "Desert", "Caldera", "BugLand", "SkullCave", "VolcanoDungeon", including the levels within the mine), since it's a visual addition to the farmer's sprite, I want it to be part of their sprite while they are inside the location.
Which location are you currently looking at
what is the % doing for you in your string of location names?
The name of the volcano ends with % for some reason in the game's documentation from what I saw, I'll test it without it.
Skull Cave and the mine
Yeah so
That doesn't work
The location name is MineShaftXX where XX are numbers
You will need to use a query token
That said that should work in bugland
that makes sense. It would look something like this:
{ "Name": "Cape", "Value": "true", "When": { "LocationName": "MineShaft1, MineShaft2, MineShaft3..., MineShaft120" } }
Would this be for the mines or the Skull Cave? Iโve been reading some codes that were something like: UndergroundMine1, UndergroundMine2, UndergroundMine3, UndergroundMine4, UndergroundMine5
IIRC, SC is internally the same thing as the regular mine and "starts out" as UndergroundMine121, so to say. If you're willing to use a query to catch all mine floors, you could do
{ "Name": "Cape", "Value": "true", "When": { "Query: '{{LocationName}}' LIKE 'UndergroundMine%'": true } }
I want to make a mod that lets you improve crop genetics, so I want to have, let's say 8 traits they can breed into their crops. But this would result in a ton of combinations per crop. Is there a way to have crop definitions / behavior differ during runtime?
with the power of C# you can do anything
great, I just don't want to have to do say, 2^8 variations for all the crops in the game.
Can ya'll guess Why this is an issue for me on the new update 
Concerned ape put a cave where i had my cave 
So now i have to move mine
F
I havent seen anything from the new update so i don't even know what the cave does
The challenge will come with stacking. When you stack multiple objects together, they lose any hidden custom properties. If each crop has unique genetics, either they can't stack, or they lose uniqueness when stacked.
two tiles to the right, ez
You can patch the stackable function to make them not stack
"That tip was very good, thank you very much, I was lost. And for the 'levels' of the volcano, it would be something like this:
{ "Name": "Cape", "Value": "true", "When": { "Query: '{{LocationName}}' LIKE 'VolcanoDungeon%'": true } }
Or just give them a different internal name
I see. Maybe some way to encode the genome into an item ID and crop ID and have them all use the same sprites.
You could do that, but then it will take a lot of storage space for all the different variants.
The lazy solution would be to move Concerned Ape's cave but that would cause possible issues with any mods that care about that
yeah definitely dont do that lol
Friends, does anyone know what I would need to input as the search term in Visual Studio Code to only grab lines of dialogue that include a npc name in the value without also finding all the lines with the npc name in the key for the key/value pair?
I don't understand regex enough to try to write a regex statement for it but it sounds like it should be possible
cough what was that thing? Occum's razor?
try :.*name? maybe escape the colon
does anyone know the "music"-ID for the ambient sound that is playing in the joja markt?
doesn't joja use the hospital ambience or am I misremembering
Oh! yeah!
Locations file says Hospital_Ambient, yep
thank you! 
No luck, that gets me no results found at all
EDIT: nevermind, it works now that I don't have "match whole word" unselected.
I have like 4 hours to finish porting this mod to the new version and then start working on a seperate mod
And i have to take a break in the middle of that four hours where i might not be โจ coming back in time โจ
Why the time pressure?
Collage and the second mod is a gift
Which vanilla tileset has the darkness for cave entrances again?
what is in your cave 
Its where an NPC lives
mr ape's cave not very big but it is kind of odd to have 2 entrances that close
very, i made mine before 1.6
Such a good spot that i wasn't the only one to have the same idea ๐ญ
Hey is that the ||mastery cave||? I have just decided I should try to finally get into that thing.
I have no idea what it is, i havent played 1.6
And now you have spoiled it for me Chue! ๐ฟ ๐ฟ /j
nou i clicked the ๐๏ธ like a good chu
Has it become easier to add in head items since 1.5?
yea you can use content patcher for that
I have to add in my GF's bunny ears
head items like hats?
yes
Yeah I am just terrible because I immediately click on spoilered images without even noticing
last i recall you could only replace
I forgot how to fix this issue when using the overlay patch mode
Hmm, think it would still look odd if i koved the cave here?
that would feel better i think
I wonder what Stardrop does with the zip files when it downloads mods
Hmm, is there a conditional flag for game version in Content Patcher?
For example, loading the old map location if you're on 1.5
there's one in the manifest but since this is a npc mod you are going to have to change so much
Am i?
yea npc dispositions dont exist anymore
!npc
Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:
-
Tiakall has a great tutorial on making a custom NPC for 1.6:
https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC -
Custom NPCs received many improvements with 1.6. For changes made, see the migration guide:
https://stardewvalleywiki.com/Modding:Migrate_to_Stardew_Valley_1.6#Custom_NPCs -
Some information on the NPC wiki page is still relevant:
https://stardewvalleywiki.com/Modding:NPC_data
Just make sure you're checking the migration page and tutorial first as this page still has outdated information on it as well. -
Aviroen has put together a template that will allow you to easily create a romanceable NPC:
https://stardewmodding.wiki.gg/wiki/Npc_template
assuming this is nexus ppl can see and download older versions, i wouldnt bother making any 1.5 compat in 1.6 mod
Ooh that needs updating because Pathos has updated the wiki page for NPCs now and there's almost no info left on the migration page
@velvet narwhal I ping you because I am tired and don't want to learn how to edit commands right now haha
I have โจ forgotten โจ How to open the tileset i used for this map automatically in tiled
I havent touched tiled in a bit
Is there a button to open the paths for tilesets embedded in the map
NVM, i'm just an idiot
Tileset view was hidden
does anyone know how to remove bushes from an area in a map? i was editing a tilesheet but couldnt find anything for bushes and now there are bushes inside the building i added to the map-
Were you editing the map itself or just tilesheets? A lot of bushes are placed using the "Paths" layer + tilesheet in maps so you would need to edit the Paths layer to remove them.
How can I find out the name of a location within the game? I mean, is there any mod or SMAPI command for that?
it was in the tilesheet, i couldnt find them anywhere
You won't be able to remove the bushes without editing the map (either in Tiled or with Content Patcher's MapTiles field), I don't think (provided I am correctly understanding what is happening).
hold on lemme get a ss
Lookup Anything should work as well
in tiled, no bushes. in game, random bushes
that red icon indicates the bush, itll appear once the save is loaded for the first time
What layer is your building on? Is it covering the paths layer?
Thanks a lot for your help! I really appreciate it!
yes i got rid of all the red under the building
oh wait, its actually next to the house on the map
did you load into an already existing save?
mm thats it
Oh yeah good catch Void
I'll give it a try with this, thanks
thank you
ive had that a lot with my old crusty test save for my new locationg for stuff like grass and trees lol
It's so annoying testing Paths layer changes and having to make new saves over and over
just checked, that was it! tysm
(download reset terrain features, you don't have to make new saves over and over)
my old test save has been with me since 1.6 beta(or was it alpha i forgor which one it was called when we could dl it to update our mods pre 1.6 drop)
I was under the apparently incorrect impression that reset terrain features just yeeted them
i also came here actually to ask a question but i forgor what it was lol
I use one of my 2021 playthrough saves to test late-game stuff and have downloaded a perfection save off the internet for other late-game testing lol. Otherwise I make new saves mostly.
reset terrain features does, in fact, reset them (or clear them, you can choose between reset, clear and generate)
Yeah the name is self-explanatory but some people choose bad names for things lol
Thanks, I am now enlightened 
Hi all! I'm new to this Discord but have been modding SDV for a while now. I wanted to share a big update/cleanup of my horse mod! And see if there's any community feedback haha
Thanks for all the amazing work that comes out of this community!
do you want a mod showcase post?
its informal but basically someone w/ mod author role posts your mod on your behalf (example #mod-showcase message)
and then publish it to mod showcase
what would you like to say in the message?
๐ ๐ ๐ super cool
Basically this is a refresh update for a mod that's been in development a long time, so it's in a much more polished state! It comes in CP and AT versions, with optional saddles. My desire was to create horses with personalities, so when you change coat colors they don't feel super interchangeable, but like, a new friend with a new temperment
Each coat color was made with a lot of love and a lot of details!
Thanks!!
i posted to #modded-stardew for exposure
i remember my question!
its about artifacts spots and their chances
so i wanted to make my totem for the island a possibility and cranked the likelyhood up to 0.9 and precedence to -100 but for the whole map i still just got 2, did i do something wrong or is that actually normal, im kinda bad with this whole figuring out chances and stuff
Is this that you're getting 100% totems when you find an artifact spot, and you only found 2 artifact spots, or is it that you found a bunch of artifact spots and only 2 of them were totems?
got some free time and decided to free us from the tyranny of heldObject
I think i worded my problem a bit wrong. I found two totems by digging but just digging....I dont get artifact spots at all so i had cranked things up in hopes to increase artifact spots but nothing
am i missing something to even get artifact spots on my map is what i wonder
Have fun with mod compat
I think compat will be fine
After looking through https://stardewvalleywiki.com/Modding:Location_data, I don't see an obvious way to change the chance of artifact spots
You can definitely change the drop rates from what drops from artfact spots
well, its less about chance and overall wondering why i never so far got any at all on my map ๐ค
so i cant even check what i get from em
Brb turning all keg outputs to emc grass
How big is your maps and are the dirt tiles set up weird in any way?
Artifact spot chance isn't that high
you can use this mod for testing
In LA do u have to click through the holder item before viewing the shirt item
yes unfortunately
its 110x58 and all of the sand is set to dirt T and diggable T (except the direct coast obv)
But only for shirt right
there's actually also a Chest in the middle
oh, is this so you can have 2 separate things produced?
i think i gonna use that mod and see if i was just unlucky so far in getting a spot
yeah I'm leveraging that feature for this
It would be cleaner if the holder item wraps the shirt directly, but
lazy
Neat!!
right now it wraps all outputs because I think otherwise you'd need to patch OutputGeode
FYI it does look like the mod is a little buggy from the comments but hopefully it works! It definitely works for some people
that is bit annoying but ill live
you should watch out for better chests
this person's debris was disappearing into the enricher chest
because of some better chests setting
@vernal crest updated the npc command for you
if you submit to tyranny of heldObject and pretend it is just linked list you can dodge this 
yeah ok that's kinda wack lmao
I did ponder the linked list route, but a chest was cleaner
on the bright side it seems Better Chest's auto collecting feature only works for chests inside the player's inventory, and I make sure to yeet and unroll the holder chest once it enters inventory
alright, so i managed to increase the spots, guess i really was just unlucky with getting em
now i also know that if i use RANDOM_ARTIFACT_FOR_DIG_SPOT i can get vanilla totems, huh
and the original bug was because the phantom chest in the enricher wasn't yeeted properly right
i think it's more to do with better chests ignoring the playerChest=false flag
in vanilla if u remove a placed enricher u dont get a chest item or anything, just the enricher + any fertilizer inside
does the fertilizer remain inside the enricher?
nop
but the chest does?
I also made it so the wornout hat thats fishable can be turnt into cloth via loom 
make sure to test without EMC
right now it will unconditionally yeet the chest inside any item that enters the inventory
after dumping its contents
so it may very well be the case that my mod inadvertently fixes that bug with Better Chests
the enricher chest shows as an err item actually
yeah that happens with chests lookup in LA
yea it keeps the mystery chest when removed
if you have 1 enricher in inventory then it just goes poof 
yeah about to ask what happens with stacking
worth a bug report ping?
(also brb adding "Fix bug with fertilizer inside enrichers disappearing if not removed before the enricher itself is" to EMC feature list)
oh the fertilizer has speshul bs to turn into debris
its just the chest not getting properly destroyed somehow 
despite there being heldObject.Value = null here
oh right its gotta be heldObject.Value.heldObject.Value = null 
though nvm I got itheldObject.Value = null should still be sufficient right
idk if this is worth a ping since it cant ever cause issue in vanilla 
so if emc is yeet chest by doing heldObject.Value.heldObject.Value = null then its prob fine with better chests
it should remove the chest when the enricher enters the inventory on its own
(brb adding "Fix bug with Better Chest stashing items inside enrichers " to EMC feature list)
although while the chest is exist
i.e. enricher/machine placed
is better chests gonna stash stuff into there
The mod page only mentions stashing into chests in player inventory, so I sincerely hope not
most people had presumably
my noob understanding is "If you have to ask whether a linked list is good for this situation, don't use a linked list"
why is my chest a fish
it's very slippery
ah yes return of the fish crafting menu
at one point during the alpha the crafting menu was randomly full of fish
@ivory plume feeeeeshhhhhh
why does a chest have spawn times?
oh lmao ok
do u think its fine to restrict the fish spawn field to object only 
changing it to accept qualified id is bit more involved but possible
Plus mods may add other stuff
I mean it's possible to just predict fish, not anything else, but there's definitely examples in many places of non-object fishable stuff
Iridum Krobus, desert triangle painting, wall baskets, boat painting
hm that is true but LA doesnt seem to show spawn rules for those
Yeah, I know fish spawn was a struggle so it's possible it just doesn't show any of that
dumb baby question time that's unrelated:
is harmony.Patch( original: AccessTools.Method(typeof(FarmEvent), nameof(Utility.pickPersonalFarmEvent)), postfix: new HarmonyMethod(typeof(ModEntry), nameof(name of my function here)) // assumes main mod class is called ModEntry ); the same as [HarmonyPatch(typeof(FarmEvent), nameof(Utility.pickPersonalFarmEvent))]
hi
You can put your function on some other class if you want
postfix: new HarmonyMethod(typeof(GamePatches), nameof(GamePatches.Postfix))
oh actually thats the patching func oops (ok i fixed it)
that would be postfixing the function with itself
oh yeah. you're not trying to get the return type with the typeof
its the Type that holds the pickPersonalFarmEvent function
so typeof(Utility)
Remind me in 48 hours to rewrite the harmony guide to use https://learn.microsoft.com/en-us/dotnet/api/system.reflection.runtimereflectionextensions.getmethodinfo?view=net-8.0
For the lovely atravita? Why most certainly. (#6265194) (48h | <t:1727559772>)
i need to really just, completely wipe my mods folder, i've let stardrop just go crazy and now everything's a mess
It just a class that disables the watering can being used on water tiles. Still has water Tiles property. The drawWaterTile method handles the animation but it can also be done in tiled. Other than that it hooks into the performToolAction method so when the watering can is used it shows some steam and flames.
The hardening of lava like in volcanoDungeon seems pretty simple. Need to make the water tiles passable and place a temporary sprite and then it has some net stuff for multiplayer/online purposes
Hello, a question, is it possible to have spouse Rooms without dll?
For example just by editing game files
Yes this would be a good idea
!cp you can use content patcher to add spouse rooms
Content Patcher (https://www.nexusmods.com/stardewvalley/mods/1915) is a mod which loads content packs to change the game's images and data without replacing XNB files. If you want to make mods using Content Patcher, start at https://stardewvalleywiki.com/Modding:Content_Patcher.
Is it not possible to add them just by editing xnb files?
XNB mods often break the game and are not recommended. See:
- using XNB mods for more info and a list of Content Patcher alternatives;
- reset your content files to fix problems caused by XNB mods.
For mod creators, see editing XNB files for help unpacking & editing them (including for use with Content Patcher).
Idk that's in the team rocket hideout where they have a sliding puzzle
Would xnb file changes be overwritten by game updates too?
yes
Also they can cause game crashes if you do them wrong
It's console modding for me, my pc doesn't stay on for more than 1 hr and playing 30 minutes....
But if anyone knows if it is possible, I would be very grateful to receive this information
Yeah console modding is pretty difficult. Pillow has done a bit of it but anything involving how to jailbreak is not allowed to be discussed here. You'll have to make most of your own mods and repack the xnbs, which isn't something a lot of people do outside of consoles.
Console modding is riskier so most people don't choose to do that
are you attempting to modify a vanilla spouse room?
The feature I saw was don't step on twice tiles. It looks like a cracked floor but if the player steps on it twice it breaks and player falls
...I distinctly remember fighting a boss in final fantasy 14 who did something like that...
Oh well the map should have cracked floors
I'm trying to make this in c#
Did the boss break the entire floor?
also, I hate it when Windows decides it knows better than I do about when to restart my computer and I have to go back and hunt down all my opened files I was working from again...
that depended entirely on how many players screwed up the mechanic. if everyone did it right, then the floor wouldn't break, and you could continue on the fight
my pc upgrade is when i swap over to linux, and it's gonna be jarring and painful 
...honestly, I think that makes two bosses who have a mechanic like that in FF14, the ninth boss of the Eden savage raids, and the first boss of the Arcadion savage raids. (at least, that I've fought as on-level content)
I know, I'm aware of that, but from what I've researched before all the mods were in xnb format, and I wanted to see if anyone knew of any xnb methods for spouse rooms on the farm ๐
I have an idea
uh... no clue
ftm has the capability of persistent hp
if you're talking draw size, i think they removed the limits of size
No, a new room for Lewis, by default I have chosen the initial sam's room
So I can put a giant bug monster
: base("Lava Lurk", position)
{
this.Sprite.SpriteWidth = 16;
this.Sprite.SpriteHeight = 16;
this.Sprite.UpdateSourceRect();
this.Initialize();
base.ignoreDamageLOS.Value = true;
this.SetRandomMovement();
this.stateTimer = Utility.RandomFloat(3f, 5f);
}```
A giant lava lurk?
Better and easier I think
I noticed expanded mod has the beta behind the Patreon membership. Is this allowed while the mod is on nexus
i won't say it's extremely difficult, but it's probably harder than you expect. very few mods out there with custom monsters, but also very few with a dungeon/zone that'd have a boss at all
on a technical level though, it's just going to be a monster with some fancy sprites and custom behaviour states
^
they've done that for years so i assume so
I technically did a boss for Theft of the Winter Star
And S&S has a final boss - implementing it this weekend
see? a whole 2 mods with bosses
There's also https://www.nexusmods.com/stardewvalley/mods/5864
not to discount the incredible pvz and gnome boss mods, but i don't remember if those released
i dont see them linking to the patreon on nexus itself, so theres nothing in nexus policy that bars it
I didn't know I could make a beta for a specific new version
should i be charging a subscription for my sdv1.6 betas 
flash does give access to mod authors, so you could probably ping and ask
I'm going to do that but because I plan on adding the boss and this main puzzle map
so im trying to make my first mod and i know literally nothing about modding so im following this tutorial thing and ive followed it exactly (to my knowledge) but it keeps failing on the first action line. this is my error message thingie
!json can you show us your content.json?
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
(meaning follow the first link, upload it, and paste the link it creates here)
i just copy and pasted exactly from the stardew valley wiki and changed what they said to
that very first action, on line 4, you can think of anytime you have to do "commands" that you need to sandwich it in { }
like the rest of the "Action": "Load"(s) they have the brackets to make it into a codeblock
oooh ok thanks
line 7 isn't necessary, so you can delete that
ok thanks
i assume by following the wiki you were following tia's guide on https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC#Introduction
i was, but then i switched to https://stardewvalleywiki.com/Modding:NPC_data this one because that one was giving me trouble
npc_data reflects only for data/characters
!unpack
Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!
i assume you've unpacked everything, but it should be a bigger warning that NPCs have possibly the most moving parts in content patcher
yeah i unpacked everything
okay so you see the data folder, yeah?
yes
and then inside of that has characters
that's what it means anytime you see "Target": "Data/Characters" // "Target": "Data/EngagementDialogue" etc etc
oh so by saying im editing that id be trying to edit an already existing character
tia's guide assumes you've done at least some other content patcher mod, whether it be replacing a portrait or a sprite of a vanilla character, just to understand the semantics of content patcher
and no, you're editing the file when you're targeting it with "EditData" action
it doesn't have to be an already existing character, that's what specifies the "Entries" part of it
ahhh ok
when you do want to edit a specific character, that's when the "Fields" comes up, because some .jsons have model formats
ex:
"Action": "EditData",
"Target": "Data/Characters",
"Fields": {
"Abigail": {
"CustomFields": {
"Aviroen.GSQBaby": "true"
}
}
}
}```
reupload your json
i think i'll nuke the unnecessary jsons from my "working example"
nevermind i was able to figure it out myself >:D
ill probably be back here in another 10 minutes when i cant figure out the next step-
https://github.com/Aviroen/Custom-NPC-Edelweiss/tree/master this has some fancier bells and whistles, but it covers pretty much everything an NPC can do
i hate dealing with github readme
thank you!
do i.... make a core for myself now....?
i have no idea what else i'd even want to use harmony on except for child.cs
and im back with โจ another error messageโจ
it says it cant find my portraits and sprites even though its a png named exactly what it told me to
have you loaded them to the appropriate space?
"LogName": "Load Base",
"Action": "Load",
"Target": "Portraits/EdelweissSeung, Characters/EdelweissSeung",
"FromFile": "assets/{{Target}}.png" //target means that it will dig into my Assets -> Portraits folder, and find "EdelweissSeung.png"
},```
the check can't see your files, it only checks your code
i cannot tell if you're in your assets folder or not
is the actual code any better than the decompiled or is this really how it manages depth values ๐ญ
yes im in the assets folder
draw code, not even once
i wonder what the 9.9999e-5 float looks like in original code 
Almost certainly 1e-4 lol
I'd guess decimal form
so I'm populating the paths layer of my map, and all I can say is... I feel bad for whoever thinks they can just mow right over the top of all this grass. there's so many rocks hiding in there...
i'm building my first CP mod to make Robin dateable. Everything is working fine except for GreenRain dialog & schedule. She says the default game dialog instead of the custom dialog, and doesn't follow any schedule changes during GreenRain. All other dialog & schedule changes in the same json files work fine, and there are no errors in the console. Any tips on things to try?
try a new save, or resetting time back to the previous day and sleeping (assuming you are loading a save on green rain day to see your changes).
some schedule stuff gets lined up at the end of the previous day, so your changes won't really stick unless you sleep into the day you are testing
I've been exiting to desktop, making a change, and loading the game to the save with the green rain day & trying again. I'll roll back a day, exit to desktop, make changes & reload. does that sound right?
Are you y1
Yes, Y1.
I tried resetting time back to the previous day, no luck. Do you see any issues in this code? I also tried the commented lines during testing and they didn't work either:
ok, cool, thanks! I'll give that a shot.
Targeting the normal dialogue file did the trick. Thanks for the help!
You don't appear to have file extensions enabled so I think your files might be called "portraits.png.png" etc. Try removing the ".png" (and if you want to be kind to yourself, Google how to turn file extensions on).
!fileextensions
Windows and Mac hide most file extensions by default. If you are creating or updating mods, it's helpful to show file extensions so that you can be sure all mod files are named correctly.
To show file extensions on your computer:
On Windows 10, open File Explorer, click on the View tab, then check the File Name Extensions box.
On Windows 11, open File Explorer and click on View > Show > File Name Extensions.
On Mac, open Finder, and in the menu bar, click on Finder > Settings (or Preferences) > Advanced, then check the Show all filename extensions box.
Wow we have a command for everything. Thanks silicon
For anyone curious about the mad-scientist project I was talking about the other day.
(Don't mind the crappy syntax highlighting, that's just Notepad++ being stubborn)
Ooo, that looks fancier than my UI XML loader
I'm not familiar with that project. It is pretty fancy, though; this is how I plan to make StardewUI into a totally standalone mod. (Yes, those data bindings do update; and yes, those assets do track invalidations and hot-reload.)
So you did some XML language? (I guess it was not used in GMCM, SpaceCore, etc.)
Yeah, the loader is in SpaceCore. Not sure anything uses it yet
I don't think SpaceCore has any custom menus (not counting the skills menu, since it's based on vanilla)
I originally made it back when I was adding the MiniScript stuff for content packs (that I later canned)
Neat. Guess it should be no surprise that the idea's been around for a while.
Hopefully, this requires no scripting, since everything is bound to the object you give it in C#. I used a custom markup language and 0-allocation parser so it is (or appears to be) very fast as well.
And most importantly it has access to the entire layout system, meaning you get flow layouts, controller support and all that fun stuff.
(Still got a lot of work ahead, though)
Looking through my old gists, I found something else I did a while back I thought I lost. A custom NetRoot for mods, so you can sync stuff without having to do MP messages. https://gist.github.com/spacechase0/ed486e9dd0d94b2b4c87a50ded8a3ef1
Ah, well, mine didn't require scripting, it was just an idea to let people program things without having to make a full blown C# mod. (And so the XML would be another way of doing UIs without C#) But I thought about how most content pack authors probably don't want to write code so I scrapped it. (Plus MiniScript seemed really slow for some of the cases I wanted it for)
wow StardewUML 
This is mostly intended for C# authors, although I'm planning for the idea that content authors can add patches to edit the markup and restyle the menus, even completely change the layout if they want.
can people add scripting to this if they wanted
Neat! I did something like that for my game project's UI (at least the styling part - though I have XML loading there too, there's no patching the markup...)
I dunno - maybe? It's going to take a while just to get all the markup and data binding features done - the thing I posted is actually working but there are all sorts of important things missing like conditional (if/switch/case) elements, repeaters, includes, etc. So a custom scripting language would take... months, at least. Unless someone else wants to make contributions.
oh i was thinking just binding a C# function to some dom element
Yes, that's going to be part of the binding system. Haven't decided if I want to use Angular type syntax or just something like on-click={{DoThing}}
Only thing that's slightly tricky to figure out is the argument-passing method.
if its just onclick=something then people would just have the sender and the event args right
That's the bare minimum, yes, but keep in mind that this has to cross an API boundary so I have to be very conservative about the types involved.
ah ig react style components r no go
I don't want users to have to copy all the EventArgs types (and for me to have to figure out how to marshal them).
the easiest impl i can imagine is just storing all unrecognized attributes in a Dictionary<string, string>
I like React, though I don't think it's the best fit here necessarily. This should be something that fits in smoothly with SMAPI's content pipeline and API system.
the user can decide what do with the dict when they get it 
I'm not sure what role unrecognized attributes would play. You'd have access to the context data in the event handler, because the event handler is in the context data.
The main thing that might need to get passed is, say, you have a list of buttons/item slots/etc. in some repeater and the handler needs to know which item was clicked. That's an argument.
It looks like HTML (by intent) but it isn't HTML; there should be no need to fiddle with DOM nodes because the binding system is built in.
ah it is the object? sender that is hard to pass then 
Sure, it can pass a sender. But the caller has no idea what the sender is. It can't cast it to anything useful. It doesn't have IView or anything descended from it.
Hence, argument passing. Ideally the markup goes something like:
<button repeat-for={{Items}} on-click={{OnItemClick(ItemId)}} />
i was imagine i might have
<image sprite={...} layout={...} customAttr="somethingHere"/>
and have some way of accessing customAttr
so unregonized means not one of image's props in this case
Custom attributes are just going to come from the context, though.
The roundabout route doesn't seem helpful - dumping something from the context into a custom attribute, then having to read the custom attribute back in a handler - when the handler already has the context.
It's primarily a data binding system so you don't want to think in terms of "elements", think in terms of context and data.
(Basically, like XAML, not React)
yea makes sense 
I don't want to call it MVVM because WPF/Avalonia/etc. are not strictly MVVM, they're agnostic of your architecture, but it's that kind of system. Or intended to be, anyway. (But, you know, without all the nasty XML boilerplate)
im unsure if i would use this over shared project though 
I'm guessing you would not, since it offers less control than using the UI library directly. It's my thinking that there are a decent number of other modders out there who just want to whip up a quick UI and don't want to have to write a ton of code (or want to make their UI themable, etc.).
And importantly, having an actual mod entry point means I can (a) push critical bug fixes, (b) store actual assets for things like button prompts and localized text strings, and (c) have a convenient hot-reload system for experimenting with UI.
But don't worry, the submodule isn't going anywhere, this is a separate mod/project being built on top of it.
exciting 
Hopefully others agree. I'm excited that this is actually proving to be possible; last week it was just a wild idea that I thought might fail utterly.
i did look over my spaget now and the main thing needed extra class for was controlling the scale and position of a bunch of Image in 1 panel
for some reason i used FixedSize layout calculated from image size * scale rather than Sprite.SliceSettings 
ยฏ_(ใ)_/ยฏ
They do different things. Scale in the slice settings allows scaling up the borders of a nine-slice as well, since that's required to look the same as the game when displaying Cursors sprites at UI scale.
yea these were item/big craftable sprites
It does also affect the "native" size of an image when you use content-based sizing. Though we shouldn't be allergic to px sizes in Stardew; it's bad form in HTML but Stardew doesn't have variable UI scaling.
Calculating the layout size is indeed kind of weird, I've never had a need to do that. Usually the layout itself should take care of it.
i wanted the smol icons to go in particular positions in the panel
but the content align is parent controlled i think?
since the big icons r known size i just mathed what padding the smol icon should have
Yeah, if you want to align a bunch of different elements to different edges of a single content container then the (admittedly kind of awkward) way to do that is to have a Panel with a bunch of sub-panels. The Panel.Align helper is to make that a bit easier to write.
there was also some jank around the width of the container
It's a hacky thing where all the panels actually stretch to the parent, but each align their (single) content in a different place, essentially the same as aligning all those different views.
css float at home 
A lot of the time you should just use fixed sizes, though. No reason to torture yourself trying to force everything to be flow layout; if you need a pixel size or a pixel offset, then write a pixel size or a pixel offset.
yea but i really wanted to balance the columns 
Why wouldn't a fixed size do that, though?
Ah. And you didn't like the left column being slightly wider than the right?
nah this is the desired look, which is minimize whitespace 
but i did want the columns to contain similar number of items
It looks to me like something that could be done with normal layout and not requiring weird math hacks... but I'm sure you had a good reason.
i think it is just me being dum dw about it 
the goal is to minimize amount of scrolling used i think
Well, if nothing else then it's a reason to be excited about a hot reload capability. I mean, you can kind of do it with the VS debugger but it's extremely persnickety about it especially when any generic type is involved.
Can try out a lot of different layouts very quickly.
for these 2 machines i'd have mathed out a different height and width based on number of rules and screen size
I see. You're trying to set columns according to the number of entries that can appear. I probably would have just let it scroll, but I can see why you might prefer to avoid it.
if i have it scroll some machines will have like 10 things in col 1 plus 1 thing in col 2
this is very niche though, grid is what most ppl will use
I suppose? That just depends on how you distribute the items into views. You've got 2 lanes, so you add the first item to lane 1, second item to lane 2, third item to lane 1 again, fourth to lane 2, etc. Just interleave.
At least, that's how I assume you laid it out. I thought it was 2 vertical lanes each with horizontal lanes per item.
displaying machine rules in order is important
Same deal if it's a Grid though, it would distribute them automatically.
no i mean, if i was to do round robin
while keeping the real ordering up->down left->right
since that is order of machne rules getting checked
Well everyone's going to be finicky about their mods in different ways; as a user I'm not sure I'd notice a difference between "in order" being from left to right vs. from top to bottom.
So what's the idea, that the priority goes from top to bottom in the first column, then top to bottom in the second column? Everything in column 2 has lower priority than anything in column 1?
yep
Sure. Nothing wrong with that. Though, you could still easily do that by interleaving the list, just using a midpoint offset instead of round-robin.
since this is a turn off rules mod, having a rule off sometimes means you get a different rule's output (bc the rule it would have gone to is off)
like if i turned off cornucopia's "coconut milk" rule, i would get coconut wine
i can definitely see how interleaving would werk, but alas maffs was more intuitive
(I am not saying you should change it; I think what you've done is fine. Just that I, personally, would probably have taken the lazy way through, make a scrolling UI, and just do round robin but instead of A->1, B->2, C->1 and so on, it would be A->1, A+(N/2)->2, B->1, A+(N/2)->2, etc.
i also wonder if there was better way to align stuff at the caret
atm i just check the max width of a column before making any entries 
All the screenshots I see have the caret in the same place.
I'm guessing you mean something like having 1 inputs vs. 2 inputs but always having the caret after where the 2nd input "would" be? But that's not apparent from any examples here.
yea bc these machines happen to have 1 in 1 out
its possible to have different number of in/out due to emc
like this
The way to do that is:
- Horizontal lane with fixed width (column width)
- Horizontal lane with stretch width
- Fixed-width caret
- Fixed-width output
Since about a month ago, it understands how to do "stretch to remaining available space after accounting for all fixed/percent width stuff"
You could also be lazy and use a spacer element when the second input is not present.
Though that's really probably more work than what I spelled out above.
well that is still "knowing about max width/items in rule" in a column
Yeah, that's why I said the spacer version is more work. Stretched child is essentially no work.

oh yea the thing i wanted to try and add b4 getting distracted here is lookup anything compatibility
The inputs go in one lane that's stretched. The caret and output item are fixed-width elements.
at least for the real items
Indeed... well, I assume LA has some kind of API you can use to request it to look up an item. If it depends on ClickableComponent or whatever that junk is then I'm afraid you're SOL.
Sorry to jump in out of nowhere, but is this from a mod you're working on? It looks really beautiful, like, fantastic!
well u should heap ur praise on focustense's excellent ui library 
Of course, if the author (is it Pathos?) would like to collaborate on a solution to make LA work natively with StardewUI then I'm happy to hammer something out.
it looks like a bunch of factory methods to obtain a subject from a screen point 
and yea its pathos' mod
Yerf... well you can certainly get the IView at any given point through the ViewMenu and related APIs. And you can attach arbitrary data, such as a qualified item ID or even ParsedItemData, through the view's Tags.
So there is certainly a way to express the idea of "get the item that is being displayed at screen position X,Y" and it is not even that hard. Whether or not you can make it work with LA is another question entirely.
alas it is menu specific
It would be nice if that just worked. I suppose all my mods except AFS would benefit too (Pen Pals, GIG, Starlog, etc.). But, this is another wart of having a shared-library/submodule deal, I can't really write mod integrations directly.
oh there's a mod support entry 
/****
** By convention (for mod support)
****/
default:
{
Item? item =
this.Reflection.GetField<Item?>(targetMenu, "hoveredItem", required: false)?.GetValue()
?? this.Reflection.GetField<Item?>(targetMenu, "HoveredItem", required: false)?.GetValue();
if (item != null)
return this.BuildSubject(item, ObjectContext.Inventory, null);
}
break;
maybe if u make a ItemImage following this
there's a similar bit of reflection in CharacterLookupProvider
Yuck, GetField and not GetProperty. But you can add it to your derived Menu class if you like, seems easy enough to do locally (not a great long-term addition to the library though imo).
oh sorry i forgor to answer in full, yes this is mod i am work on, its for controlling machines
idk if i want to add this since it wants an Item and i was trying my best to use ParsedItemData only
It is icky, but there's not really much in harm in just creating a 1-stack item. Just having the Item exist doesn't do anything to game logic.
It's only if you add the item to inventory, to the world, etc. that it starts affecting things. If it's just a random property field on a menu somewhere then it's not doing anything.
I think it is kind of expensive, frame-wise, so you'd want to only recreate the item when the hovered view actually changes.
But well, if you want a cleaner solution then you'll have to convince Pathos to open something up. (My PRs on the other mods are still pending...)
ill slacc on this 
Can't say I blame you.
that said i do think there is value in a ItemImage class
You mean like... Sprite?
no it should take a qualified id and draw it
as long as ItemRegistry.GetData is not null
Like my 1-line Sprites.Item helper?
That looks great, and I always get lost with what goes into each machine, especially things added by mods, like Cornucopia. It seems like a really good mod, and the UI is very well done.
/// <summary>
/// Gets a <see cref="Sprite"/> for an in-game item, given its ID.
/// </summary>
/// <returns>
/// The item or error sprite.
/// </returns>
public static Sprite Item(string qualifiedItemId)
{
var itemData = ItemRegistry.GetDataOrErrorItem(qualifiedItemId);
return Item(itemData);
}
/// <summary>
/// Gets a <see cref="Sprite"/> for an in-game item, given its item data.
/// </summary>
/// <returns>
/// The item sprite.
/// </returns>
public static Sprite Item(ParsedItemData itemData)
{
return new(itemData.GetTexture(), SourceRect: itemData.GetSourceRect());
}
lol, the docs are longer than the code.
In my mods. I always have my own Sprites class per mod and just copy it in there.
There's also an overload that takes an Item, sometimes.
yea it seems useful for many mods
It is, it's just also rather trivial, and of I'm of the old-school Microsoft mindset that very trivial things aren't always worth adding to the API.
(But feel free to copy that verbatim if you like. All open source, of course!)
The shmancy new StarML also supports binding a sprite directly to ParsedItemData.
say is there anything for styling a tooltip 
or more broadly speaking, having hover over views
can someone please help me with understanding how to make a mappatch.json for a config file? I am trying to determine how to properly fill in the FromArea and ToArea.
Kisaa is letting me look at her mod to see how she did it, which is why FromArea and ToArea are already filled in, but it looks like the FromArea and ToArea are the same coordinates? since I want to alter, for this example, everything from (starting from top left) coordinates 19, 14 to 73, 29, does that mean my FromArea ToArea would be 19, 14 with a Width of 54 and a Height of 15?
does anyone know why this part in the mod making tutorial - doesn't show these options in visual studio?
what do you mean?
you dont have to use any of these templates really, since the mod build stuff is in a nuget package (ModBuildConfig)
this is what i see.
the "FromArea" is defining a rectangular region from your FromFile and the "ToArea" is telling it where to put that rectangle on your Target
So in that example, its taking the rectangular section starting at x21, y12 on FennmontFarmPatch.tmx and putting it on top of the rectangle starting at x21, y12 on Maps/Farm
oooooooooh! that makes sense! thank you!
just to double check, I put my top left-most coordinate in, and then it calculates the Width and Height to the right and down, correct?
correct
awesome, thank you :D
depending on what your patch .tmx looks like the PatchMode may be important too
Overlay vs Replace for PatchMode is like the difference between pasting a transparent .png on top of anothre picture and pasting a jpeg pretending to be a transparent .png on top of another picture
the patch .tmx looks just like my farm, only with the fences removed and the pre-planned crop area set to all light green grass. otherwise, the maps are exactly the same
if your map patch has no tiles in one spot but those spots are within the rectangle, Replace will replace the Maps/Farm with empty tiles too. Overlay will just do nothing with the empty tiles
if the patch is with fences removed then yeah you want replace
which is what you have, just explainin so you know why you have it
excellent. I thought I wanted replace, but I appreciate the explanation of the differences so if this comes up again, I will know what I need
(as far as i understand it in this case its not empty tiles you're replacing with, but rather the "emptiness" of not having fences on, say, the buildings layer, so its that tile on that layer that is empty)
(that is not the best explanation but at least you understand i hope
)
I do understand it, no worries!
I just didn't see any step that shows how to do that, to get the right stuff
you can ignore the install monogame part
oh you didn't install net 6?
I did. the guide says install .net 6. I then followed the guide to install vs. I'm not sure if VS does not identify the .net already installed or what
Not unless you want to use an overlay (which won't follow the cursor). That's one of the few things that simply uses the built-in IClickableMenu menu functionality, so it would be possible to add some of the things it already supports (title section, item icon, currency info, etc.) but not to do a totally custom style without a bunch of extra work.
Re: this Visual Studio stuff, the installer takes care of all that unless you select weird options during the install. I'd do a reinstall at this point and make sure it's actually set up for C# development.
yea fair, it'd be annoying to interact with on gamepad anyhow
Well, tooltips really shouldn't be interactive, period. The gamepad isn't a huge concern on its own, but from a UI design point of view I'd caution against hiding too much important information behind a tooltip; the most important things should be discoverable from just looking at the UI. It's the same with mouseovers on other platforms, it's considered bad design to hide anything interactive behind a hover state.
What does work fine design-wise is a modal or overlay that shows up when you actually click on something.
if I want my config to be compatible with GMCM, do I need to add GMCM as a dependency in my manifest, or does GMCM automatically grab config files as it finds them? I don't see a dependency in the manifest for other mods that I know have GMCM settings, but I wanted to double check and make sure first
yea that makes sense 
You need a GMCM dependency for SMAPI mods that use its API. Don't think you do that for Content Patcher.
ah, this is a Content Patcher mod, so I should be good to go, then. awesome!
I uninstalled and am looking to reinstall visual studio. but I have no idea what options I am supposed to select. the first time, I used all defaults and that's how I wound up with nothing, I guess. I couldn't find anything in the documentation to tell me what I should select.
Make sure .NET desktop development is ticked.
Thanks
There might be a more granular setting somewhere in there, and you don't need WPF or Windows Forms but that will implicitly install everything else that you need for this stuff.
I appreciate all the help. I'll download that and see if that fixes it.
you don't even need a manifest dependency then as long as you're just grabbing the API after gmcm loads
It's better to have one. I learned the hard way that load order can be different on Linux.
Having at least an optional dependency guarantees a correct load order.
they'll all be loaded by game launched anyway though
you put your API grabbing and config setup in whatever you added to the game launched event
Sure, if you code defensively and don't depend on actually having that API when you request it. I think most modders who write GMCM configs tend to just assume that the API will succeed. Which means if they hit that 1% of users without GMCM installed, and don't declare a dependency, it'll simply crash with a cryptic error.
If you truly do not depend on GMCM then sure, don't make it a dependency. Many if not mods do genuinely depend on it.
all the mods I've personally seen check if the API returned null before doing anything with it
the SMAPI API grabber I mean
I've seen quite a few that don't check. Particularly common among the modders who don't enable nullable warnings.
i'd probably rather fix that than add a dependency, feels like fixing a symptom rather than the cause
You should do both. Add it as an optional dependency. That's what the optional setting is there for.
Just because it doesn't crash doesn't mean your mod should have wrong metadata. It's eventually going to make someone's life harder when you don't declare your dependencies.
Makes me wonder where they learned how to set up GMCM, because the documentation for it literally provides the null check
what benefit does doing both get me if I only ever do anything after all mods are loaded and I'm checking for null anyway? genuine question
or if it doesn't benefit me, what benefit for someone else
The same benefit as any implementation that follows a specification instead of relying on implicit implementation details. Forward compatibility and not helping to create a tragedy of the commons.
I'd ask the reverse, what does it cost you to add an optional dependency to the manifest? Like literally nothing?
Couple seconds
Thanks. This appears to be working ๐
(Also I am aware that Hyrum's law is probably very relevant to this particular question since I'm guessing hardly anyone actually declares optional dependencies, and Pathos would have a nightmare of a time trying to change the implementation to follow that spec strictly. Still, I'll choose to be a good citizen especially when the cost is so insignificant - at this point it's just part of my template.)
hmmm... it doesn't seem to be loading in my patches to remove fences. I tried leaving/re-entering my map and reloading the game after setting my config changes, but no dice. here are my .jsons
content.json: https://smapi.io/json/none/96233c00c40f4e63aef894252e117455
mappatch.json: https://smapi.io/json/none/9a93637be8f34e78ba07f840e47bdb0b
I went wrong somewhere, but I can't figure out where.
(Not related but you should probably update your CP to 2.3.0 and update your "Format" in your content.json to 2.3.0 as well in case you end up setting your file to a version that doesn't have features you're trying to use.)
So I can't link to Patreon on nexus if I have the beta behind membership?
Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.
Please share your SMAPI log file. To do so:
- Open this page: smapi.io/log.
- Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
- After uploading, it will show a green box with a URL to share. Post that URL here.
Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didnโt occur in your last session, please load the game to the point where the issue occurs, then upload the log.
!patchsummary
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.
correct
I'll do that now, just in case that's what it is. I have a terrible case of 'not updating things until they're broken'
Nexus does not allow any sort of solicitation for donations or promise of mod updates or content in exchange for donations of any kind
Hmm I see
that was the weird thing, I never got a SMAPI error. at least, none that showed in the console
the messages are not necessarily printed to the console
there's a lot more on the log itself
Expanded does it but they said they don't have a link to Patreon there right?
As for your actual problem, you're not targetting your map with your editmap patch.
Your map is "Maps/RiftstalkerSekun.FennmontFarm" not "Maps/AdditionalFarms"
i said that because i didn't see any patron link on there. if you're not using Nexus itself to solicit the donations, then it's (somewhat) fine
Just wanna add that if you do format it to 2.3.0, just indicate that it is on the reqs cuz I had some mod users go โitโs not working??โ only to realize their CP wasnโt updated haha 
Yeah I suppose I just need to delete any links on nexus
(i say somewhat because one of the rules on Nexus is a bit vague and I imagine probably there to back up their "we reserve the right to take action anyway if we decide we have reason to" clause)
ahhhhhh, fair enough. thank you!
https://help.nexusmods.com/article/77-donation-options-guidelines this has the specific rules
the last bullet point in the non solicitation section can technically be used for off-site occurrences like the expanded patreon I'm sure, but whether they will or not if you're not soliciting on Nexus directly, that's not anything I can guarantee one way or another obv
yeah it wasn't announced on nexus, so i don't think they really care
if they got complaints about it they might care, or they might not. or they might give expanded a pass because it's a big mod, or maybe not. who knows. up to the individual modder how much they wanna risk it
the one bullet point made me laugh tbh, "$100 i release an update"
sounds like the Skyrim Nexus community to me
oh what noone told me i can hold my mods ransom
this could be the start of an incredible business opportunity
please tell me i can charge for comments too 
charge $1 per bug report that isn't an actual bug
yay, it's working as intended now!
just need to get my farm house into shape and stop borrowing someone else's. does anyone know if there's a coordinates map that already exists for the default farmhouse? or do I open it up in Tiled and make my own?
Coordinates map?
yeah, that shows what the coordinates are so I know what to tell the game to place what furniture at. so I'm not putting the TV on the wall or something
Oh. Yeah just open the farmhouse map(s) in Tiled.
Or go into the vanilla farmhouses in game and use Debug Mode or Lookup Anything to tell you the coords.
fair enough. is Debug Mode another mod, or is it part of SMAPI?
Another mod (though also by Pathos) https://www.nexusmods.com/stardewvalley/mods/679
Itโs a mod but you can debug with the console
keep in mind though people might have custom farmhouses
unless you are also making the farmhouse and not just the map
in which case carry on
Huh, so you can.
(in fact i did miss you said "farm house into shape" and not just "farm into shape" bc i was only thinking about your farm and the fences, so ignore me)
Tadaaa #making-mods-general message
yeah, I need to make sure that I put down stuff like the bed, tv, a dresser, fireplace, a table, and something on the table for people using the map's default farm house. I'm not changing the inside, just decorating the existing inside
(i will take uber's advice, and look for other things instead of the child thing for now to get my raccoon fingers used to harmony, but i've run out of ideas on what to shove into the customfields for npcs
)
I did actually also assume that Sekundes wasn't planning to make a custom farmhouse because why would you need to find out coordinates without opening the map if you're making the map anyway.
Iโm planning on debugging my dialogue this weekend so I donโt have to keep CJBing my conditions 
how are you adding furniture to the inside of the existing house?
Is starting furniture hardcoded?
and does the default house not already come with those things?
i thought because additionalfarms, you get to determine the interior layout
is that so? i dont know much about additionalfarms
I borrowed someone else's farmhouse for the sake of testing the map itself, but now it's time to make my own. I was planning on following this format, though
ah, i see
me either, but i do know that when i play meadowlands it do got a different starting layout
the starting layouts are different for every map! each one has a unique set of furniture on the inside
Huh. I have never even visited the Farm data page of the wiki before.
(what if i coded the heart lockout for aba in my c# mod)
Ah, look. CreateOnLoad is not allowed for farm location data. (Just harking back to our confusion about it earlier.)
i also did not know it said that there, i was looking at the page for locations in general. good to know!
I...probably wouldn't use it if you did, I'm sorry!
My motivation to keep working on Hiria is in large part that she's a learning project for me so I am being pretty stubborn about only using my own work (where it's something I can achieve - I am not intending to try to recreate Spacecore lol)
i do think the reject all categories is probably the best way to do it
heart lockout?
Explanation:
#1256552123202539561 message
#1256552123202539561 message
i will wander my way into the threads
I can't just reject gifts though because gifts aren't the only way to gain friendship. Rejecting gifts is a good way to signal it to the player though.
button already crushed my dreams of a simple idea but it's more pain
would you rather i responded to the heartlockout thing in here or in your thread
Thread please!
hmm, where will the most common places people will have invalid GSQ
A GSQ that isn't parsing properly, like the "summer" one that prompted you being asked to check for them?
There's 100+ different places its used in 1.6.8 and I don't want to hook into all of them
yes
Trigger actions, dialogue, events is my guess
I've got the logic for working out what the original GSQ and logging it in addition to whatever the error had access to
but I kinda want to log the origin of the GSQ in addition to its literal text
but that will be a whack-a-mole of the most common locations
and I'm pretty sure I'll have to redo this for 1.6.9
I'll do dialogue first because it would the the most annoying to find probably
the most common places id expect to have an invalid gsq would be the places that just get the most GSQs in general i think, so maybe shops or characters
Ik I already asked this w Avi but the 2-kid limit is hardcoded right? Unless frameworks (?)
Can events even access GSQ?
hey, I remember being the cause of that conversation! that's good to know
yeah theres a handful of locations that bypass the "traditional" location loading mechanism, which CreateOnLoad doesn't actually know exists
Farm,FarmHouse and Cellar are all in that list, along with the generated levels for mineshaft/volcano
Yes, the action command is available for event commands and If <query> ## <action if true> is an action...so it's roundabout but it does end up with the event using a GSQ. I have never used it though so I am just going off wiki reading.
Ah it indirectly uses GSQ via a soft backdoor in the TriggerAction logic
Can someone tell me what the difference is between these two, when to use one over the other, or if I did something wrong (context: they are dynamic tokens of a conditional):
{ "Name": "SummerOverwrite", "Value": "true", "When": { "LocationContext": "Island, Desert" } }
->
{ "Name": "Cape", "Value": "true", "When": { "LocationName |contains= Woods, Mine, Desert, Caldera, BugLand, SkullCave, WitchSwamp, WitchHut": true } }
welp that increases the surface area of potential GSQ to check
there doesn't happen to be a list of furniture ID codes anywhere, is there? StardewID only has items, and a cursory google search didn't turn up anything
finally