#making-mods-general
1 messages ยท Page 136 of 1
they were quite rude i hear
Well, it seems to work ๐ Thanks for the help!
hello i'm currently in the process of making my first portrait mod, but for S&S, so there gonna be some complications... i know that protraiture works with location names, but does it also work with other dependencies, and or how can i set it up, to work user friendly? any ideas or advise? like in my example, hector shapeshifting gender, is it possible to set up such thing in portraiture without needing to do it manually all the times? (this is my first own SDV mod, so I'm a bit clueless).
Bear in mind that the patch code would be kinda tedious if you want to make it as user friendly as possible, but it's generally doable with ScaleUp 2 framework.
The one thing I'm not sure of is due to the huge amount of expressions S&S has, the image size would be super large and I don't know if the framework can handle that.
(SpaceCore also has a HD image feature but I've not tested that one.)
the size of expressions is not the issue, but the changing on gender or other appearances might be... for now i work around with simple portraiture and several folders, but it would be so cool, due to the many options (seasonal, female, male, scar, without scars, full form etc) but i will check what spacecore can, thanks for the info โค๏ธ i wont have so complicated stuff with the other npc's, not even mateo, but hector to be as my first is challenging xD
Are there tutorials on making maps? I kinda brute force my way through doing it but it'd be nice to actually understand what I'm doing in a more in depth way than just.. hopes and prayers 
!tiled
If you want to make mods that add or edit maps:
-
Use Tiled to edit .tmx or .tbin files.
-
Refer to the Maps wiki page for details on how maps work in Stardew Valley.
-
Content Patcher allows you to create custom locations through editing Data/Locations
-
Vanilla Maps can be edited via Content Patcher as well: EditMap
Unfortunately none of this covers design and stuff I don't think
But it will tell you all the necessary stuff
to anything involving modding games, doesn't matter how much in depth do you know something, it always resorts to 'hopes and prayers' at the end...
I had to brute force learning mapping when I was patching a tent onto the Forest map. I think the most important layers you'll need to focus on are "Back" "Building" and "Front"
I dread for the day I will be dragged to map editting
I love maps, and I hate everything about SDV maps editing so far
The best thing you can really do is look at how the base game does it and mimic that, there are quite a few mods with maps that you can also use to see how others are handling things
I've wondered about what a map making tutorial would even need, it feels kind of too close to art for me to have a good grasp on what would even be useful for something like that
If does not exists already, I would be good with a Map Tutorial that helps with the basics like edge-map warping, connections to other maps, different locations to fish spawn, building warping...
nothing relating to 'how to make a beautiful map', since it would go to the art and subjective aspect
For the changing genders and appearance, you can simply follow how S&S do it in its patch. Scale Up 2 is quite flexible in that regard. I was just unsure if it has an upper pixel limit.
However, I just tested it and it works! So no problem there.
that sounds good!
I also tested SpaceCore and that one unfortunately doesn't seem to work. So yeah. ScaleUp 2 is my recommendation for what you want. At least currently.
If you want spacecore to work I think you have to define 1 HD sprite per portrait
Oh geez. That would never end for S&S in particular. 
oh well xD i guess i will read into scaleup2 first xD spacecore sounds awfully painful xD
thanks a lot, i will test around as soon as i scaled down the beach portraits x.x
but in theory and without further knowledge, i have the new portraits in the scaleup 2 folder and change the content file into how the portraits are supposed to be load as in s&s?
You can make your own standalone portrait mod that has ScaleUp 2 as its dependency. So you don't have to put anything in ScaleUp 2 folder like Portraiture.
And then you portrait mod would have all the patch that changes how the portraits are supposed to load, yes.
ya I'm currently in the example file from scaleup2 trying to understand what i need to do xD but that sounds good if I will make it work ๐ it bothers me that portraiture is so limited in that specific example
Trying to teach myself how to do dialogue mods and my brains so totally fried
In relation to the map making thing I don't mean design itself - I can figure all of that out if needed - I specifically am thinking more about the technical aspects (the warps, map properties, etc) - thank you for the link though!
I've designed a few maps and can do it pretty well (id like to think) it's more the ... coding aspect of things
I still have a very elementary grasp on how to add tilesheets + embed them in my files
The thing you'd want to do is avoid tilesheet climbing issues
(it also would have been helpful to realize that I, could not, in fact, use the furniture tilesheets to make a room... that was very disheartening lol)
(basically the source for said tilesheet has a filepath that's way too long)
I dont know how to do that honestly - I know how to go into the actual map's code and erase the filepath though that's been helpful
side note: taking a 12 day break from doing a mod makes it very hard to remember what the heck you were doing. thanks for coming to my ted talk
Documentation is important 
I luckily was/am extremely organized with my files (and random notes left on said files) and was able to figure out I was doing my first event B)
gonna start adding some comments to clarify things /j

My only question here, as I'm wrapping my head around it (probably because it's a bit early in the morning for coding for me right now, even if writing is fine) is how do I check if the moddata exists?
I have (roughly) wrapped my head around the rest of it - write the moddata, check for moddata, if moddata exists on DayStarted write the dialogue to the Value of the key and kill the moddata
But it's that middle step that's breaking my brain right now
@next plaza did some testing for the SC health regen thing, doesn't seem to be a mod compat issue and actually seems to be semi-working-ish, so I've got some extra info on it now:
- Despite having a negative value (in this case) it heals the player instead of damaging them
- It never stops after the buff has been cleared (and so you can also stack it by obtaining it from different sources, see health regen increasing when i hold different stygium items)
I mean, you can, it just involves putting the furniture pngs in your mod folder and loading them to the Maps folder so you can properly path to them without climbing folders in the TMX path.
to save you from my suffering when i first made a map mod:
only thing you need to make sure is that you are making the map in the same folder as the unpacked vanilla tilesheets (Content/Maps).
if you open the .tmx file in a text editor and search image source, there must only be the tilesheet filename. if there is a full folder path, you are going to experience tilesheet climbing issues
if you use a custom tilesheet (i.e. anything NOT in the vanilla Maps folder), you have to include them in the release folder like fireredlily said and load them in the content.json
๐ yeah but the problem with that is that I have a big feeling that people would be upset with compatibility related things (i.e. if they had a mod that recolored a furniture set I used or something adjacent) - which is why I ultimately just re did my map to not use those
I will say - where do I put the custom tilesheets if I were to design some
(Put another way, edit with the vanilla tilesheets in your folder, save, then after exiting tiled yeet the original tilesheets)
except not in this case, if you're loading Furniture.png to Maps, Lyoko. Then Furniture.png needs to stay
I mean, if you do it that way, the recolors will auto-apply as long as they use the vanilla ones
assets folder. this is how i did it for my farmhouse mod
the folder names are the config token names, while the file names in the folders are all the same

May I ask the use case for doing that instead of using the vanilla one?
furniture.png isnt in Maps
The vanilla one is located in the Tilesheets folder and not Maps natively, so using it causes tilesheet climbing
smapi will bonk u for this
but u can just use lumisteria's interiors for this
it has good number of recolor compat
There's a reason why townInterior repeats some of the couches and chairs in it. ๐
i tried to do that once and gave up. just merged the furniture tiles i wanted in my tilesheets now lol
THAT'S why I was confused!
I did check out Lumisteria's tilesheets but it didnt have most of the furniture I used unfortunately
Okay, 100% fair that you can't use it then. I didn't realize those were repeated
I was able to find some nice couches though - and kept the general vibe I wanted even if it wasn't exactly what I wasl ooking for
Technical solution would be just to use the furniture tilesheets and ignore everyone who might comment on it but my main goal is to make my mod as compatible as possible
this is a false premise tbh
just make it compatible with ur own mod list everyone else can deal
I think I would explode honestly
I could make an alternative just for lil ol me though... I do love the room I made
Recolors are inherently incompatible with custom/new tilesheets anyway
Not worth stressing over
my principle was to add recolor compatibility for the most popular recolors and mayhaps some for my own indulgence. everyone else can deal indeed
but if you don't want to, that's also fine - recolor compat is exhausting
In other news, the Stardew Valley wiki's Modding:Maps page has officially surpassed the Google Maps page in my browser's autofill. xD
I don't really intend on using anything that wouldn't have recolor compatibility unless I decide to go even more overboard than I already am honestly so I don't have to worry about that
me when i live on Modding:Maps and Modding:Location_data
I also live on modding pages.... they are very helpful
am I using a mod that does this or player and NPC collisions get turned off during events now?
Neither?
Events can turn off collision during themselves, but it's not automatic
But it's also not a mod
Huh, i never realized that this was why any map that used tilesheets assets never work with recolors .. (reason being they always used their own copy of it to avoid this issue)
Does anyone know what the music that plays in the skull caverns ID is
I thought it would be caverns... it is not
or 'Cavern'
Unfortunately I think there are multiple tracks that play in SC
Does anyone know the easiest way to check if retextured crop sprites are working? For the growing crop, not the product. It's for SVE so the content patcher debug mode isn't helping
to check any crop sprites i usually just spawn them in using cjb cheats and then grow them over a few days
its how i made sure my colored carrots were growing properly :]
I was afraid that would be the answer ๐
Easiest way to check texture changes are applying is to do a patch export of the asset
There's more info in the CP docs, but basically just type patch export [filepath/asset] into SMAPI. For example, if you're checking the vanilla crop sprites, you'd type patch export Tilesheets/crops
It'll create a new png file in the patch export folder and you can open it in your art program to see if it looks how it should
@rigid musk cjb cheats has a function on the last tab to instantly grow crops around you
if it works for the start and end, the middle should work anyways
oh i know! but they wanted to see the stages in the game I think
ah okay ^^
I use that for pictures of finished crops all the time though its so helpful
Thanks! getting some errors with the patch export so I might try cjb
the reason why I did my checks the way I did is because i wanted an image like this to put on my mod page (not just to see if the sprites were working)
it just so happens that it worked out to see the growth stages as well
Yeah, I like having a field of mixed crops at different growth stages
for promo images
(You can alternate between debug water and debug dayupdate 1)
To quickly generate a field
All to find it wasn't working, lol. So I guess when I'm changing crop growth files, I have to specify a ToArea?
!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.
when patching anything with CP I believe you have to do that
I know I made one mod that patches another mod's textures let me see where I put it
it's saying the json is valid so I guess that's the issue
if you follow the link in the above thing (the smapi.io/json one) you should share the code for your patch here so we can see what it looks like
we might be able to help better that way
not sure how many there are but so far I have Upper_Ambient (wind), LavaMine (song), none(?) according to:
MusicContext musicContext = Game1.currentLocation.GetData().MusicContext;
this.Monitor.Log(Game1.getMusicTrackName(musicContext), LogLevel.Error);
thank you! Ill try the LavaMine one since I think skull cavern and those ones share it
as for this im a bit conflicted - from waht I can tell your structure is correct - i patched things smilarly, but then again I wasn't patching crops so much as item textures
when you grow it in game is it just the SVE default texture? no changes?
Yeah, item textures seem to be working fine. But this is the first more complicated thing I've gotten to. I'm working on the ToArea now. Yup no changes, just default texture
I'm having weird priority issues where Include A containing all my events always loads before Include B containing alternate versions of said events for compatibility with another mod, rendering them unused no matter what. Instead of having both Includes at once in the content.json, will this issue be sorted if I add the Include for B inside A?
Did you put HasMod on your loads
Include B is behind a HasMod, yes
Put include A behind a false HasMod
While that would work, Include A has ALL the events and Include B only has alternates for a few of them, meaning I'd be in for a TON of unnecessary copypasting
In theory, adding the Include for B inside A has to work to solve load orders, right?
The load order is determined per action I believe, not per include
May need to set a Priority here
Personally I would split your events into 3 jsons
Fixed my issue which was actually due to an incorrect file reference ๐คฆ thanks everyone for your help
Just make the compatibility ones a Priority Latr tbh
there is both a vanilla GSQ and a series of BETAS GSQs that can check for whether or not a player has mod data with a given key and optionally a value
Vanilla: PLAYER_MOD_DATA <player> <key> <value> (note value is not optional here)
BETAS: Spiderbuttons.BETAS_PLAYER_MOD_DATA <Player> <Key> [Value] (value is optional)
there are other ones in BETAS too that may be more helpful for other kinds of values https://stardew.button.gay/docs/betas/queries#moddata
hm is this something new? because I remember during 1.5.x getting stuck during events if there was a building tile in the path
maybe those events got updated to use that feature?
that makes sense
so i guess it wouldn't be useful anymore to create a mod that automatically disables collisions during events
i was going to make this but then i found out about that
Correct. you could just use the ignoreCollisions command during events
[[Modding:Event data]]
I wonder if farmer to ignorecollisions automatically got added in 1.6
Npcs have always ignored it
Howdy, good morning all! I'm hoping to get some insight regarding some UI stuff with GMCM... (I made a gif to illustrate what I'm going for.) Farmer Portraits 1.6 has a button leading to a seperate page with config settings for specific reactions, but I am unsure how to achieve this. It seems to be the same size and font of Section headers, but I was wondering if maybe this is something I can control in the config schema section, or if it requires C# coding.
I was also curious if its possible to have a hierarchy of sorts for config setting pages, in that one button would lead to a seperate page with multiple buttons doing the same (and so on and so forth). Any help or advice would be greatly appreciated! ๐ Thanks in advance!
yes, pages need C#
you mean if the farmer gets its collision disabled automatically during events?
if yes, from what I tested it looks like it does
at least I did on the events I tested
Thank you very much! I'll see if I can keep going with this information, and if I run into any problems I can't troubleshoot with testing and reading up on documentation, I'll be sure to ask the chat again! Cheers! ๐
I'm having issues with using mail flags to gauge progression.
content.json: https://smapi.io/json/content-patcher/729e04e0bd6549e6a01bf9439bd05e57
SpiritWorld.json: https://smapi.io/json/content-patcher/70b652c07215474aa786b78c04cbb18d
MonaArea.json: https://smapi.io/json/content-patcher/bbbe87c255df4ab2a50e918461b8b3c5
SpiritCave.json: https://smapi.io/json/content-patcher/940bcc97239d40619a2cec80af262be2
I don't know if I'm handling mail flags wrong; I couldn't even test this myself for a while because of some problems I was having with building the code, but apparently, a teammate that didn't have these problems said they didn't work.
Man I read Arknir's recommendation of keeping events' lengths shorter than 3 minutes... The final event of my mod lasts about 40 minutes ๐
Good god I can only imagine how long the code for that is ๐๐
almost a movie xD
It's about 80K characters without i18n replacements ๐
Meanwhile in user comments on Nexus:
I need help
[Better Crafting] There was an error in the MenuPopulateContainers event handler of the mod 'Better Chests' (furyx639.BetterChests):
Urge to steal the loggers from other mods for logging errors related to their use of my API... rising...
That is some serious dedication. I commend your hard work haha! ๐
Thanks ๐, when I was making it I was genuinely worried of breaking the game.
Wouldn't that cause issues in multiplayer because time doesn't stop for the other players?
I dunno what happens if the day ends while one player's still in an event 
the other players would be fine it'd be the person in the event that would get screwed
they pass out when it ends
which is what I mean by not fine. The other players will have to wait lol
Oh... well, hope the event ends in the farmhouse then 
It does
it took me like an hour to realize that an too high bombRadius breaks GameLocation.explode(), thought it gets placed at a wrong position or so lol. I guess I have to write my own function to achieve this?
Does anybody know how to solve my issue?
you have to be more specific about whats not working
Basically, I have a few mail flags connecting some of my events. The first one is supposed to trigger the mod's third cutscene when you complete the third quest in our quest chain. Apparently it's not doing this.
Can you show your conditions for the cutscene event?
{ "LogName": "Oliver rescued", "Action": "EditData", "Target": "Data/Events/HalfAlive.SpiritFieldsContentPack_SpiritWorld", "Entries": { "{{ModId}}_82345680/e {{ModId}}_82345679/n {{ModId}}_Trigger_Oliver_Rescued": "AbigailFlute/5 8/Oliver 5 8 1 farmer 19 8 3/setRunning/move farmer -13 0 3/speak Oliver \"....\"/pause 1000/speak Oliver \"....mmm....\"/pause 2000/move Oliver 0 0 1/pause 1000/move Oliver 0 0 3/pause 1000/move Oliver 0 0 0/pause 1000/move Oliver 0 0 2/pause 1000/speak Oliver \"...Where...am...I...?\"/speak Oliver \"...I'm...free?\"/globalFade 0.005 false/globalFadeToClear 0.005 false/move Oliver 0 0 1/speak Oliver \"Iโm Oliver. Thanks for saving me, ${mister^miss}!\"/speak Oliver \"I was just walking around, and all of the sudden, those creepy vines grabbed me!\"/speak Oliver \"I donโt know where they came from, but Mona kept saying those vines are someโฆ maniโฆfish-tashion?\"/emote farmer 16/pause 500/emote farmer 36/speak Oliver \"Manifestation! Yeah, manifestation!\"/speak Oliver \"Mona says that those scary-looking vines are a manifestation of some type of corruption making its way into our world!\"/move Oliver 0 0 3/pause 500/speak Oliver \"Yes! I got the word right!\"/pause 500/emote Oliver 16/move Oliver 0 0 1/speak Oliver \"Oh! I just realized something! For all we know, there could be others trapped too!\"/speak Oliver \"Please... save them! Save this world!\"/addQuest {{ModId}}_134/end" } }
And your mail entry in Data/mail?
{ "LogName": "Dummy Letter A Created", "Action": "EditData", "Target": "Data/mail", "Entries": { "{{ModId}}_Trigger_Oliver_Rescued": "Oliver Rescued!" } }
while im still trying to parse the json as a whole, why are you creating dummy letters?
your trigger actions to remove them wont work to remove them if a player actually reads them from the mailbox either
Apparently you can't have clearing a quest trigger an event directly, but you can set a letter existing in the mailbox as a condition. I think it's a really stupid system, not allowing clearing quests to be a requirement. But that's just how it is.
also your quest data for {{ModId}}_131 seems to indicate that there is no next quest
you dont need to create a dummy letter
a letter does not need to exist in Data/mail for you to send it
The cutscenes assign new quests. You can see that in the SpiritWorld.json code.
just send it straight to the received inbox
is it only the third event (Oliver rescued) thats not working?
There's a second one (Mona Rescued). I never actually tested it, since I can't test it (I need to build the C# solution to get stuff to spawn in the world, but I've tried multiple times and haven't been able to get it working). However, since it's coded in basically the same way, I can safely assume it's probably not working either.
hard to help debug something if its not clear what exactly is and is not working and where it stops working
I realized something. I tried to set the first Dummy Letter as the reward for the third quest in the chain. I wonder if that could be part of the issue.
hi, I am back with my location issue
i still dont know what this issue means or how to fix it... https://smapi.io/log/914194866683402881fd1e75efacde1e
Log Info: SMAPI 4.1.9 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Pro, with 19 C# mods and 20 content packs.
Looks like ur tmx is incorrect
check your filenames/locations vs. the code for typos or mismatches? That's usually what causes the NRE for that I think?
VoidWitchCult.TheFishmonger_LostIsland_SeaDudeHome.tmx
hmm
well, the tmx is named VoidWitchCult.TheFishmonger_LostIsland_SeaDudeHome.tmx and i set the location like this(the same way as my others and those work):
"DisplayName": "{{i18n:VoidWitchCult.CP.TheFishmongerNPC.Locations.SeaDudeHome}}",
"CreateOnLoad": {
"MapPath": "Maps/VoidWitchCult.TheFishmonger_LostIsland_SeaDudeHome",
},
"DefaultArrivalTile": {
"X": 6,
"Y": 18
},
"ExcludeFromNpcPathfinding": false,
"ArtifactSpots": [],
"FishAreas": {},
"Fish": [],
"Forage": []
},```
frick, i am blind i cant find anything
Literally every single time I forget to call I18n.Init 
Yar, it says that it couldn't load the asset, not that it couldn't find it. So I'm kinda leaning towards it being not a typo problem, but there's something odd with the file itself.
huh
well, idk what it could be since I can jsut open and edit it in tiled like any other map
yesterday it was mentioned it could be some sort of tilesheet issue?
but i replaced/embed all tilesheets already
dont u need to do Load to Maps/VoidWitchCult.TheFishmonger_LostIsland_SeaDudeHome target first
that is where the err was thrown i thought
But just to make sure, the filename is not VoidWitchCult.CP.TheFishmongerNPC_LostIsland_SeaDudeHome.tmx right?
can you send your tmx?
my load is this btw
"LogName": "Load SeaDude Home Indoor Map",
"Action": "Load",
"Target": "Maps/VoidWitchCult.TheFishmonger_LostIsland_SeaDudeHome", // Maps/InternalNameofMap
"FromFile": "assets/Maps/VoidWitchCult.TheFishmonger_LostIsland_SeaDudeHome.tmx"
},```
yea guess it must be something in tmx itself 
but you can open and edit it fine in tiled?
ye lemme jsut zip the whole maps folder so you got the tilesheet stuff too
yeah i can open and edit like any other map
i do have some tsx/embed tilesheet wakiness, i think but as i said all my other maps whose locations ive added work
Looks like the tsx stuff is fine on my end
Have you closed out of Tiled since you embedded them?
I feel like that should be good enough, but I honestly don't know with Tiled
lol okay no. i just closed tiled itself and opened the file again and now its not double anymore :B
too bad that has nothing to do with the issue...
Lol, that's silly
this is so weird
what is the difference between #$e# and #$b#?
for #$e# you have to interact with the npc again to get the dialogue, i believe
icic
man, id have preferred dealing with warp issues instead of this cuz im so clueless
Oh hey.
I'm not sure why exactly, but I just deleted this TileData and now it works.
Oh that TileData is empty
the TileData is what i was lookin at too but havin trouble figuring out why exactly
do you know if theres anywhere i can find all the like,,, dialogue trigger things
I didn't think that would cause a problem like that, figured it would just skip it
[[Modding:Dialogue]]
I think
aha, got it right
There's also a TileData in the top right that's on the wrong object layer
ohh i was only looking at the modding wiki
It's on Back3 but should be on Buildings
ty
huhhh
i didnt even realize there was a tiledata cuz i was distracted by the paths symbol oh my god
i cant believe this
itd be nice if TMXTile logged that reason but alas
I feel like this should absolutely be handled by xTile lmao
Completely failing over something like this is crazy
I think we all learn from this so I vote "not dumb".

bless yall, i swear if it werent for this community id never sit here being able to make mods lmao
im still wondering why it only errors with an NRE when trying to load it and not when trying to save that tiledata property to the TMXObject in the first place
i woulda thought property.Value.ToString() would error if value didnt exist
on another note, I think I dont understand the special sleep animation thing...why she sleeping on the counter lol?
huhhh
she walks around and when she got a schedule stop she does the sleeping animation....but NOT in the bed where i put it
If you ever make your NPC sleep, they sleep for the rest of the day
Any animation with sleep in it will trigger that
Make another animation that's that but don't put sleep in its name
i see
So on the flip side, if you use a fake sleep animation, you'll be able to talk to them despite them appearing to be asleep
thats a great idea
Pretty sure SVE does that, leads to some great moments when you start dating and you can sleep in their bed but if you talk to them they freak out
did they ever patch that?
Considering it happened recently, probably not
sort of related to map making question: is there a specific reason why SMAPI doesnt let you load tilesheets from folders that are not Maps/? like, i know theres specific code that always adds the Maps/ prefix to enforce it, but i mean the reason for making it enforce that in the first place
I would've guessed it was added out of convenience, not out of necessity, like people forgetting / leaving out the Maps/?
i would think if that was the case it would only try that last if it couldnt find the asset otherwise, though
i mainly ask bc it was very simple to mod out, but the fact that it was so simple makes me think there must be a reason for it in the first place lol
That would make sense too, but maybe it couldve been seen as uneeded bloat to check and then recheck? Im not sure!
Either way I dont think its an element of convenience many people rely on, so probably all good to remove
that wouldnt make sense to me as a reason to effectively ban using tilesheets from other folders entirely, but im not pathos or any other smapi contributor, so
So, what you don't want to do is let people have access to the filesystem willy nilly
Up one level is fine
Up two....gets scary
Letting people directory climb basically does though
and then SMAPI tries to load that asset name through the content pipeline
no, this is after the directory climbing check
Is it not just because the game expects things to be Maps/ ?
No, smapi manages tilesheets
There are plenty of places where vanilla blindly loads stuff using Maps/+name
i think it'd be nice if there's a constant to use
so that CONTENT_ROOT/TileSheets/Furniture is valid
thats basically what i did in my little test patch
did it work
yeah seems to, got bushes from Tilesheets/bushes.png and stuff from cursors on the busstop
It should yeah
If I'm reading the code, I think the main thing its doing is that all tilesheets are "relative names" to their source, but the asset pipeline isn't.
So for every vanilla map, it needs to add Maps/ back in for the asset pipeline to do the right thing
Hey @ivory plume, the modders want tilesheets/furniture in maps again
i dont even care for it!! im not a mapmaker!! i was just experimenting
did u make sure it never touch file system
If you want to point it to crazy files use Internal Asset Keys, it bypasses the Maps/ prefix
though I might be misreading this as "if its in the mods local folder, it just rewrites it to be an internal asset key"
I think it's (b) yeah
im not sure where id use internalassetkey for a .tmx's tilesheet
{
string localKey = Path.Combine(modRelativeMapFolder, relativePath);
if (this.GetModFile<Texture2D>(localKey).Exists)
{
assetName = this.GetInternalAssetKey(localKey);
return true;
}
}
i only patched ModContentManager.GetContentKeyForTilesheetImageSource() so yes
What's the end goal again?
using things from e.g. TileSheets/furniture.png in your map so that it has recolour support
Ah
or whatever else
specifically all i did was do the exact same code as the original function does but if it detects a specific prefix, it doesnt add Maps/ to the start
(and removes the prefix obv)
tbh i dont know if recolors touch those usually
ive seen plenty of people ask how to use those sheets because of it, though
personally i think this is a better use
thank u i try
put "you tried" on it
thats up to cursors.png
im sure u can do some shenanigans with the font asset and a lot of editimage
the font assets might be too big
ideal bus stop edit
anyway though if it doesnt cause any apparent issues i might just put it up on nexus anyway at some point
not right now though. right now is lazy hours
anyone know how to modify the bed's starting position?
for a modded farm house i mean
https://stardewvalleywiki.com/Modding:Maps#Farmhouse_interior
FarmhouseFurniture map property on the Farm map I think

kk so where do i edit that at?? in the json? the tiled file??
i only care about moving the bed in the everroot cottage mod
but when i try to locate the item id nothin
For the first level of the farmhouse, you cannot change the bed starting position AFAIK?
You should be able to as long as you have that map property on your Farm map
If you're doing a specific Farm map with Farmhouse combo then you could just add that property to the Farm map
For upgrades, you use a Back layer tile property, DefaultBedPosition
Pretty sure the reason you need that for upgrades is that your bed upgrades as well
Ah, the Farm properties
does anyone know how to check if the player warped to a custom map in c# the standard if (e.NewLocation.Name == "CustomMap" && Game1.timeOfDay >= 2000) does not seem to run when warped into custom map
wdym custom map
like a custom map i made with content patcher. is there any way to target that map in c# or nah
NewLocation.Name should have done it. check that you're using the right name I suppose
So has someone made the new secret into a npc yet
it should be what you passed as the key in Data/Locations
(assuming it's not an instanced location)
do i reference the same name i do when i debug warp to the map. when i type debug warp Map it works fine and warps the player to the custom map but checking if(e.NewLocation.Name == "Map") //some logic here. does not run the logic
No
Debug warp is a fuzzy searxh
And will try to bring you to a map of similar name
Secret Shop Crow, Jeff (new ichor mod when)
The check you want is an exact check
Accepted as Canon name immediately
how would i do that sorry im new to this
just check for exactly the name you gave the location
.
the content pather makes an entry in Maps for Map, i know its a stupid name but isnt that the exact name or am i missing something
are you using the old CustomLocation method
using the new one that was exampled in the resent wiki update
customlocations would require either a modid or Custom_ prefix
!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.
Show where you're patching Data/Locations
(also if you are actually calling it "Map" then dont do that for unrelated reasons)
i mean yes ofc but im just trying things out here lmao
Even for testing, it's best to avoid super generic names
Makes it hard to troubleshoot if your generics start bleeding together
glad to see i continue to be the prime suspect for this (also jeff is a pretty good name, i like it)
Anyone know what this exactly means?{{ [game] Failed to send message (k_EResultLimitExceeded). Closing connection. }} Im trying to use the smapi messages, but I worry that the data Im sending is too complex / too much. The player lasts a few seconds before the connection is closed
Sounds like you're exceeding the network buffer size. It can't keep up with whatever you're sending on top of the other network traffic.
This is also wishful thinking/manifestation
how much data are you trying to send exactly? thats a steamworks error when theres too much data to send to another connected steam client, which has a default limit of ~512kb
(fun fact, apparently the description in steam's documentation for that error code is "Too much of a good thing." very helpful)
I def dont think its 512kb haha, but still it might be too much
it occurs when entering the insectarium, a custom location that when full loads 86 creatures. The data about those creatures has to be sent, so thats the data
How does jeff path out of the woods
Probably remove the fake shop and put a warp there to a new map for Jeff and then just have Jeff skip the woods when entering and exiting
its a custom object, so neither. But yes the whole thing
is there a way you can just initialize them clientside as needed?
that seems a bit excessive
i dont know how to explain why i think i know why thats a bad idea for networking
im not smart enough for the words
like idk what you need to initialize
but like, location, color, whatnot
should be way more compact
Yep, just gotta figure that out
e.g. sending just the ID to a data model that's loadable from content pipeline
Im working in steps, trying to get it working at all first
This is essentially what trinket tinker does for all companions
unfortunately this is the way to get it working at all
Which it does rn, just not with 86 of them lol
lotta data when you try and send an entire class and everything it depends or references on
jeff comes bundled with a mod i've been working on spiritually that replaces the secret woods with a different map that isn't blocklisted from NPC pathing
Tbh I figured he would just fly(warp) outta there
That was 1.5.6
Oh is woods just fine to use now 
Yup
Yey
I do still like the idea of Jeff just appearing wherever/whenever
i would definitely want to make him fly/warp from place to place. why would he walk long distances
after all, they call it "as the crow flies"
Fitness enthusiast "Gotta get your steps in"
I haven't used this mod, does the crow run the guild?
Are we building Crow Cinematic Universe now? We have Kyle, Thistle from "Eli a& Dylan" and Kevin & Titania from "Alecto".
Yeah!
That's amazing
Kyle sells u things and only says caw 
I think the only talking crow in all of these is Thistle.
if i end up making Jeff there's like a 96% chance he'll talk
with enough time and pestering in this channel i believe we can raise that to at least a 98%
I definitely was imagining a full on NPC like Lacey lol
I was imagining Jeff doesn't talk but has a narrator
Jeff regard you with knowing look, he knows you had lost things, precious and irreplaceable things
Like that
I think that kind of thing is good for a non-social NPC, but doesn't lend itself very well to fleshing them out in any meaningful way
๐
Howdy! I was asking before about mod config menu UI in GMCM since I wanted to have multi-page support (with buttons leading to new pages)... I am confused as to how to properly structure my C# file...
I am still a beginner with coding, I won't claim to be an expert. So far I Frankensteined this together after looking through some documentation on GMCM, the API code, and the Stardew wiki modding page regarding Config Models... I am unsure what order the different methods are supposed to go, and I am also unsure if I even need all of this... It's very likely I have created a nonsensical abomination in all my ignorance. But I tried! Please let me know how I can go about properly structuring this (I figured since I have to use C# to add multi-page support, it might make more sense to set up ALL of my config settings in this file, please correct me if I am mistaken!). Any other pointers/advice related to preparing config schema would be greatly appreciated (I haven't had much luck)! Thanks in advance!
using System;
using GenericModConfigMenu.Framework;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using StardewModdingAPI;
using StardewModdingAPI.Utilities;
using StardewValley;
// Name of mod project (Config Schema only in this case)
namespace IFPConfigSchema
{
// Method creates mod's main class (and subclasses SMAPI's mod class)
internal sealed class ModEntry : Mod
{
// SMAPI Method that provides access to helpful APIs
public override void Entry(IModHelper helper)
{
public interface IGenericModConfigMenuApi
{
// I HAVE NO IDEA WHAT I AM DOING
}
}
}
}
well, you probably dont want to copy the entire gmcm interface into the entry method of your mod 
have you tried getting the example mod built and running first
Yes I have!
Thanks for the tip btw! I had the id/data model situation already set up for the instantiation of the creatures, so I hooked up the messages to work with that (a less extensive version skipping the unneeded steps) and it works without any profiler anger or disconnecting!
are you also aware that config done through C# only affects the config of the C# mod and not a Content Patcher mod
Oh no... I had no idea... ๐
yea you need to do some shenanigans there
you CAN make custom content patcher tokens for your config that your CP mod can then use, but it's more involved
yeah, I prefer talking animals for that reason 
as far as SMAPI and gmcm are concerned without that though, your C# portion and your CP portion are two completely different mods
are you sure you want to ship C# just for paged configs, how important is it to you?
It's pretty important... I have a ton of settings and I'm pretty obsessive about keeping things neat and tidy
what kind of mod do you have?
I was originally planning on making a content pack to add onto the Farmer Portraits 1.6 mod, but then I decided to make a standalone farmer portraits mod, so that's my intention currently!
oh then your mod needs C# regardless?
i think the farmers portrait mod accepts content pipeline edits or something
been a while since I looked at it
I'm trying my best to do everything from scratch despite limited experience, but I want to be mindful not to take too much inspiration from others so it doesn't go into cheating territory. I worry about that a lot... ๐
"standalone farmer portraits mod" implied to me that its not dependent on farmer portraits
Is there a way to sync dialogue with a object the player is holding?
maybe im reading it wrong tho 
XD Yes, that makes sense
is there an event precondition of x amount of days after xyz event seen?
see I have a fakenpc i am placing with meep, and i have the npc commenting on certain options if the player is holding them
anyways the 2 main ways you can have a C# mod's config communicate with a CP mod is mail flag or cp token
I jsut realized what I can do never mind
Could you use BETAS to set your CP mods config based on the C# mod's config?
CMCT
Oh right, I always forget which one does which lmao
Pretty sure the original Farmer Portraits was aedenthorn, who has open perms, so you don't have to reinvent the wheel if you don't want to
i dunno tbh was that CP -> CP only?
Also, whenever I read CMCT the TMNT theme song plays in my head
anyhow u be in C# anyways
People usually set a CT in the xyz event and set the precondition to when the CT expire.
Ahh I see. Do you know if they're in this server?
aeden retired
this is what i did with CP token
Ahhh I see.
you don't need a separate mod for this. have your C# mod register tokens and have your CP mod read them
but this mod is kind of messy n bad example
But they gave permissions to update and take over all their 600 some odd mods
I see... I can try to look into CP tokens before I commit to going full throttle with converting all of my current progress to C# (if I have this understood correctly)...
you arent even at the point where you can see the config in game right
lets take this 1 step at a time 
Precicely, yes! I have been trying to get there haha
So far I have most of the info I need in my json files
(do stop pinging me tho, i am just getting example for u)
Sorry ;__;
this is how Lacey does configs, which i did because i didn't want users to have to remember which setting is where or do work twice.
i only wish it could go the other direction, since i'd rather have GMCM show "Hat Mouse Lacey" instead of "Hat Mouse Lacey - Core". oh well
This is a example of a ModEntry
https://github.com/Mushymato/FishPondering/blob/main/FishPondering/ModEntry.cs#L24
the important bits are
reading the config: Config = Helper.ReadConfig<ModConfig>();
setting up gamelaunched event for gmcm api: helper.Events.GameLoop.GameLaunched += OnGameLaunched;
the gamelaunch handler calls Config.Register(Helper, ModManifest);, which is here
https://github.com/Mushymato/FishPondering/blob/main/FishPondering/ModConfig.cs#L18
๐ค
this mod only has 1 config option so it grabs the gmcm api, register itself, then register 1 number option
the Integration.IGenericModConfigMenuApi api interface is copied from gmcm directly, it's here
https://github.com/Mushymato/FishPondering/blob/main/FishPondering/Integration/IGenericModConfigMenuApi.cs
u should try it out and confirm u got the menu in game 
Thank you for all of the links and explanations, everyone! I'm slowly but surely making sense of it all, I think
I'll see what I can get! Thank you! ๐
any config from any mod
but do you recommend it for this use case
no need to add another dependency if its not needed when the C# would still be required regardless
(Change your manifest names to Hat Mouse Lacey and Hat Mouse Lacey - Not Core /j)
is there a framework for generating new items during runtime?
framework for content pack or C# mod? your wording makes me unsure
I'm thinking of something like, a flower that can be any RBG colour, but with other variations and values too
since if it's C# you can do anything
I expect to use C#
yeah with C# you can do anything. Just do new ColoredObject( or something like that
if you're just asking if something already exists for it though then im aware of anything framework-y for generic/arbitrary items
unaware*
ColoredObject is what is used for colored flowers, pickles and other items with color variations
that understands and answers my question, thank you
do you want to provide thing where ppl just put in a hex/monogame color
to me it sounded like a coloured object was just an example of a thing with arbitrary, not-defined-at-compile-time values
not that they only care about colours
yes, this
hmm that makes more sense. you still need a base item in the data, but everything above that (display name, sprite, etc.) can be custom
though they'll be treated as said base item in most interactions (gifting, etc.)
i might have to piece together sprites for them and haven't figured out how to go about that, maybe i can borrow from the way the farmer (with their clothes, hair, etc) is drawn
unless the goal is to like, construct an ObjectData definition from pieces and add it to the pipeline during runtime
dynamically generating new items in the data is possible, but that'd require a bunch of invalidation which tends to be slow
if you're fine with at most every day start then it should be fine
in C# you can invalidate whenever
what are some usecases of this
but it'll lag visibly if you use it like every tick or something
well, definitely dont do that 
you only need to invalidate to add a new item once per new item though
as long as you have some way to store the ways to construct those object definitions
(generally, avoid doing anything every tick if it can be avoided)
yeah we should know this before getting too deep into the speculation pipes
(whoops ping)
For a use case, suppose I want to make a new area like the mines that generates a different, unpredictable special fruit item every time a new map is entered
does it matter to you that it's the same item internally
just with different fields set
being the same internally is fine for that purpose, i think
think wine in vanilla
might just need to implement some specialized item queries then 
would all the necessary info be serialized for that though if all the fields were different?>
and 2 harmony patches on draw and draw in menu
or would they just become the same item again when you reload the save?
in that case I'd make a regular Object and change everything above it (display name, sheet index, etc.)
can i interest you in a ModData in this trying time
well, how would you know which item in the world to apply that mod data to
if they are all identical
or for there to be a way to combine two wines into a hybrid wine, and then to combine any hybrid wine with another hybrid wine, each time taking a mix of its parents' properties
or even, genetically mixing plants
Could you just attach it when spawning it?
ok parent sheet index and display name is saved, so that takes care of any user visible stuff
im talking about for dynamic items that were already spawned in a previous play session
yeah doesn't every Item have its own modData
it does
item and itemdata r divorced
if each instance of the item can remember what it is
once u conjure the item it doesnt know data for most part
think one of the important exceptions is the sprite
hence patch draw/drawinmenu
will it keep data that isn't the sprite?
the sprite texture name isn't saved with the item, but the sheet index is
yea things like name and context tag r saved directly
as is moddata which is where u can put all your stuff
so I believe you can have an item remember what it looks like
if you're using one sprite sheet
everytime the item is instantiated, it should have all the mod data given to it
yea i do this for trinket tinker items
a thing is, I don't think I can draw each item from one sprite on a sprite sheet
thats how they variant without harmony
i might want to mix and match, leaf shapes and stem heights and petal patterns for example
but if u can just patch draw then u get access to things like drawing a sprite with a color
you'll need to store all the data required to know how to do that in the mod data then
yeah with harmony patch draw anything is possibleโข
I'll go look at the drawing code
each Object has its own draw() call so you just need to check if its one of Your objects and then do whatever you want
or well. several different draw call functions. same thing though
you can add item query like this
https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_Framework_Mods#Adding_an_Item_Query
then people can use ur thing in all the places that accept item query, like machine
thank you
this talk reminds me of the "frame work that let u add smoke (and other TASish effects) to any item"
Well that's interesting and new, had two instances open for testing and the second instance was automatically interacting with my big craftable whenever I moused over it, nothing else and wasn't effecting my first instance
working mod name: add skyrim enchantment visual effects to me scythes (and other stuff)
- make a custom asset with type TemporaryAnimatedSpriteDefinition
- add mod data to define what TAS an item will have
- do some ??? to broadcast the TAS
- provide some ways for content mods to get the mod data onto their items, probably item query
so its related to what svalawoo wants but doesnt do anything to the item proper besides mod data
i love when a mod idea hinges around "do some ???"
do you even need step 3 if you're saving them anywhere in moddata
just let the other scrubs draw their own tas
well TAS r like
u send off once
u dont draw those
the ??? is "idk where to send off the TAS"
Annnnd I'm in #making-mods-general . Whoops. Sorry for interrupting!
what I meant is that modData should be synced, so the other players can just read that and draw their own instance?
unless I'm missing something
it sounds like you're writing for a mod so i dont think its an interrupt
yea urite, might not need broadcast
im realizing i think i dont know what a skyrim enchantment visual effect is
so i dont know what im supposed to be picturing here
me neither, but I'm picturing TF2 unusual effects
(if you don't know what that is either my apologies)
i dont!
when u enchant a weapon it gest glowy stuff
the only thing you should know is "Hat - 20 cents. Hat with rotating flame effect - $2000 IRL dollars"
I'm picturing the coffee gradient chart
(If you don't know that. Congratulations! You have not spent too much time on the internet)
this is cus the original desire is
make enchanted weapons/tools distinguishable by icon
i do know the coffee gradient chart
I'm sorry atra, but being a coffee drinker is one of the most normie things possible
.... I'm going to bed then
but a TAS is like
Night!
any sprite anim effect really
why not change the draw call itself
i want to use it bc it has stuff like animated rotation and scale
and i dont want to impl that myself
also defining custom TAS is supported for content packs
What is coffee gradient chart 
so that's 80% of the work done
is it?
or do u mean TemporaryAnimatedSpriteDefinition exists (but isnt used outside of machines)
event TAS, and load/working effects in machines
(also I keep having to remind myself that TAS is TemporaryAnimatedSprite, not The Animated Series or Tool-Assisted Speedrun)
i also still think tool assistsed speedrun
Batman TAS: 
i take my coffee at like number -A 0 because i dont drink it XD
yeah I don't get why it's 2D when half of them are the same color
I drink slurry, which is drip coffee with instant coffee in it
My resting heart rate is 56, btw.
I would be A1 but it'd just be milk
I can't drink coffee
why are there two axes
surely the amount of creamer is only one dimension
figured out what justCheckingForActivity is for
so the controversy this chum article is about is people arguing over how many dimensions the chart should have, right
Yes
vietnamese black coffee is not on this chart, which is fortunate because it will instantly kill everyone arguing about this chart on Instagram
Needs more variables, how about sugar amount
so how do y'all feel about making mods
i once put an entire cup and a half of sugar into coffee and it was still too bitter for me
eh, theyre ok :/
I'm currently rotating an 'immersive fertilizer' idea in my head that I don't expect to make before Feb next year
why can't the code just magically appear in my document and work the first time
if ever actually
it's when you jump into the manure pile
i forgot who i was asking for a moment
it all boils down to "Ancient Fruit is so busted I want to nerf it by forcing the farmer to fertilize it every 2 weeks or it stops producing"
beyond that sentence though I have nothing
cant say thats what i was expecting at all
The quality starts going down
And the regrow time increases
Unless you refertilize
make soil have several different nutrients to balance and replenish
this is the 3rd generation of soil quality in sdv 
hmm is there a mod like that already
is it one of aedenthorn's
atra has More Fertilizers, but not quite the same
there is "immersive manure"
the other two i saw is 1. someone's wip on github 2. a long post on mod ideas
and manure industries but I think the other one looks better from the description
wait, that's you in the author name
yeah I like Immersive Manure better (completely unbiased opinion)
why are you talking like you've never made such a thing
selph i like the poop mod but can you justify why poop has quality
๐ญ
selph i have an alternative question can you please refuse to justify yourself to chu
the animals have better gut bacteria
thank you for the license to not answer the question
hmm the mod idea is cool, but I'd want something more simple from both a player and modder perspective
i want a mod that w ill make me use more spreadsheets than EVE
๐ญ checking making mods gen discourse is never not a surprise
simple for player, maybe make animals fertilize crops directly, but sounds a bit more annoying for authors
maybe you can rework it to be a crop rotations mod
a system can be complicated as long as you communicate it well
this was one of the ideas I had months ago (back when poop mod was but a bouncing idea), but I decided against it because I don't want to limit building placement
so flying poo debris it is
anyway just one of many ideas that I may or may not get to implementing, all because if I ran out of ideas I may resort to selling my soul for art skills and start implementing my blorbos as NPCs
obviously the solution is to steal the crop fairy code and turn it into poo fairy
flying poo with wings...
if you find an artist who takes souls as commission payment hmu
okay as long as you're offering i want 50 NPCs, 32 expressions each, seasonal outfits please, oh and unlimited revisions
i thought the devil only offered fiddle skills
no he offers a fiddle of gold if you already have fiddle skills
Is there any difference between Game1.IsMasterGame and Context.IsMainPlayer besides one coming from Stardew and one from SMAPI?
SMAPI's Context one might be slightly more accurate, since it seems to check master game & then account for split-screen multiplayer
(and whatever that menu check is
)
public static bool IsMainPlayer
{
get
{
if (Game1.IsMasterGame && ScreenId == 0)
return !(TitleMenu.subMenu is FarmhandMenu);
return false;
}
}```
This is funny
what can I do to improve an npc's schedule the day after I change it? he's supposed to go to my custom location, but instead he goes to his own house and uses the coordinates as if he was in the right location. on subsequent days it works fine. I solved it before by setting a 000 schedule but that has an occasional duplication bug
I don't think you'd normally change the schedule, I think you'd have conditions to cause it to jump from the schedule it's supposed to use to whatever one you want
Right, I forgot how absolutely backwards schedules are
I'm not sure I get your meaning, but I leave his schedule alone until a conversation topic becomes active, when that happens I have a json include that has this block among others { "Action": "EditData", "Target": "Data/Characters", "Fields": { "Pierre": { "Home": [ { "Id": "Default", "Condition": null, "Location": "sdvhead.LawAndOrderSV_Jail", "Tile": { "X": 18, "Y": 5 }, "Direction": "right" } ], "CanVisitIsland":"False" } }, "Update": "OnLocationChange", }, { "LogName": "Pierre Prison Schedule", "Action": "EditData", "Target": "Characters/schedules/Pierre", "Entries": { "spring": "610 sdvhead.LawAndOrderSV_Jail 18 5 1/900 sdvhead.LawAndOrderSV_Jail 13 6 2 square_5_3/2000 sdvhead.LawAndOrderSV_Jail 18 5 1 pierre_sleep", "summer": "GOTO spring", "fall": "GOTO spring", "winter": "GOTO spring", "rain": "GOTO spring", "GreenRain": "GOTO spring", "Fri": "GOTO spring", "Mon": "GOTO spring", "Tue": "GOTO spring", "Wed": "GOTO spring", "14": "GOTO spring", "28": "GOTO spring", }, },
You'd actually have the changed schedule be the one that's normally active, but it would be reliant on like a mail flag, so if you don't have the mail flag it would be set to go to a different schedule
I'm trying to wrap my head around what you're saying but I'm not sure, like instead of saying 'use this schedule during this conversation topic', it sounds like you're saying it's better to say 'use this schedule always, but when I DONT have this conversation topic, use this more normal schedule, is that right?
Also Fields won't work like that
assuming mail flag vs conversation topic isn't relevant
Though, maybe in the case of Home it's fine since there's only one entry usually anyways
fields works like that
Doesn't it blank out arrays?
so long as you want to overwrite the entire array
but presumably thats fine in this case
only one home to have
Unsure if you can change schedules based on CT's
Do they have accompanying mail flags?
{
"LogName": "Pierre Jail Updates",
"Action": "Include",
"FromFile": "assets/Include/PierreJail.json",
"When":{
"HasConversationTopic": "{{ModId}}_PierreInJail"
}
},
Sure you can patch their schedule, but that won't solve the day delay problem
That's an inherent problem with SDV because of how schedules are chosen
Which is why I'm saying instead of patching the schedule at the time you want it to change, you need a patch much earlier that already has your desired schedule but that's locked off by a mail flag
Gus has an example of this
His Sunday schedule changes if you have the saloonSportsRoom flag
most people that change things based on events usually have an in-game explanation for the delay (e.g., "I'll open my stall tomorrow" "come see me tomorrow" etc)
I'm not wanting it to be active right away, the next day is fine. my issue is that it usually goes wonky the next day, the days after that is fine. then it's wonky again the day the CT expires
There is also this schedule script example from the wiki: MAIL ccVault/GOTO spring/GOTO summer
I'm guessing the problem might be with when the CT actually becomes active
I'm betting the CT doesn't become actually active until the next day, which means the schedule change will also be pushed back a day
In that example, if the bus is unlocked, it goes to the spring schedule entry, otherwise, it goes to the summer schedule entry
...question, is Pierre supposed to walk to the jail from his house and/or did you change his spawn location?
i think i remember esca (i think) mentioning something about the schedule being chosen before CP actually applies the ppatches but i could be misremembering entirely
OK, the reason I'm using CT is that the player can choose how long Pierre goes to jail for, and I set the CT to last that amount. Is there a way to do that with mail flags?
If it's a limited number of choices, you could potentially create multiple flags
I did change his spawn location, but it's fine for him to walk to the jail from his house for the first day
I would've expected a 0 schedule to just start him in the jail is why I ask.
But I don't think you can nest MAIL conditions in the schedule, so I am uncertain if or how you would implement that
I had 0 schedules but then I had two pierres sometimes
0 schedule was causing duplication too
I wonder if you can have a MAIL conditioned schedule point to another MAIL conditioned schedule
And properly checked
Don't CTs activate instantly/after the event ends? You can get CT dialogue immediately after (e.g., see Keahi's prank)
what I don't understand (forgive me) is that if I use a mail condition for say a 28 day jail condition, how will content patcher know when it's been 28 days since that mail flag was set?
You would need to set a trigger action to clear the mail flag later
you can make stat counters
Oh right, I guess it's not the CT that's the problem, it's how often Includes are checked
Probably daily without changing the update rate
if (mailflag) IncrementStat Counter
if (player_stat counter 28) remove mailflag
OK I am reading up on the Data/TriggerActions documentation I have not used that file before
Thank you everyone this gives me some ideas to tinker with hopefully I can get it sorted out
note to self don't turn on the setting to have the game clock run when my window is inactive and then have a lengthy discord discussion
Assuming I use a custom stat key do I need to define it somewhere else before I can increment? Or will using increment stat on an undefined key create it and save it? Can I set it to an arbitrary number or only increase/decrease it by X amount?
you can just increment it and it will create
no way to reset it back to 0 or whatever though?
decrementing by -999999 oughta do the trick 
it doesn't go negative then?
it cant go negative
ok good to know
(also i misread at first, you cannot set to an arbitrary number, no)
IncrementStat for -999999 then the desired amount should handle that, though
Hello. This is my first time posting here. I have never created a mod before but I recently came up with an idea for one that I just can't stop thinking about. I've done a bit of research on mod creation tutorials and such but I'm still not sure how to go about making certain parts and what's actually possible/impossible.
I guess what I'm asking is if anyone knows of some in-Depth resources on mod creation and/or where I might go about possibly finding someone more experienced to collab with.
!startmodding
Making mods can be broadly divided into two categories:
- Content packs are formatted text files, and don't need any programming knowledge. They can add/edit NPCs, maps, new items, shops, and more. To get started, see the list of framework mods, the wiki tutorial for Content Patcher, and there might be relevant guides on the tutorial wiki.
- C# mods use programming code to change fundamental game mechanics. See getting started with C# modding.
Usually itโs easier to start with making content packs, since you don't need to learn programming.
what are you trying to do?
There are tutorials out there, but for more specific help, we'd need to know what kind of mod you are making
NPCs, maps, furniture, etc. have different components and tutorials
So basically I had the idea for a funny murder mystery/detective type mod. At some point during the celebration for the completion of the community center, a killer strikes. As the villagers are leaving, they discover his body. The mayor calls in a detective who enlists the help of the farmer to catch the culprit. From there, the player would have to talk to the villagers to get their alibis, search for evidence as well as items that confirm each alibi. And in the end, announce the identity of the murderer. They would gain hearts and a reward for a correct answer, which would decrease and become punitive with each subsequent wrong answer.
is this a fake mystery like for fun and games?
as in the town all collectively playing pretend
Would this be structured like an event or festival?
Hm, I wonder if this could be achieved without C#, sounds really involved
All of that is probably doable in content patcher but if you're introducing new characters (the detective, the murder victim(?)) that can be a lot of work, especially if they're datable/marriagable characters. If you want to kill off a vanilla NPC that might be problematic for any other mods that use that NPC
If this is all going into the event, it might be doable, but it would be very involved
i should clarify that i ask if its for fun and games or not because if its for real and not the town playing a collective game, i dont believe its discussable in this server
I think they could use ichor's secret notes framework to discover clues or something like that
Festival might have made more sense for the sake of not having to deal with any time passing problems, but I also don't think you can really get such complicated interactions with a festival
anwyay I'm going to bed, I can't watch this for another 15 minutes. Thanks to everyone who helped point me in the right direction.
Ah yeah, rule 6 would be a problem if it's for realsies
Yeah, personally a nice alternative approach could be a town game. Kind of like an event you can unlock post cc. Say, itโs a reading of Elliottโs new mystery book and you could have the town folks be disguised as the characters or something.
That'd be cute
Also yeah, just banking on what Button said. Punitive with the wrong guess might already have an implication that it can violate Rule 6.
Silly things like the body actually just being a scarecrow and one of the kids just exclaiming that loudly
Roku Iโm havin kfc rn 
linus not participating but solving it instantly and keeping it to himself
Idk it tastes better bc Iโm hungry but
By punitive I mean decreased reward, loss of hearts, etc
I'm only jealous because it's not American KFC
Mcdonalds PH is also very rice centered, surprised it isnโt in other countries the first time I found out
But sure, it could be a type of game.
well, would it be though? because we really are not allowed to talk or help about it if it isnt
I know Haley has an event you can run around in, not sure what all is involved in making that work
depending on how long you were imagining it to go on then it sounds like event writing may be a big focus then
though ofc if you're completely new to modding you should start with something small just to get a feel for how to use Content Patcher
since thats primarily what you'll need
Linus, the ghost writer confirmed
playerControl haleyBeach
iirc the playerControl doesn't actually care so long as there's a string to think about, but you have to understand that a lot of things aren't active during event playerControl
arg 1 is set to AllowBlank: true, so I don't think you even need to give it shit
you do need something at that index though or else it will still return false and give an error
(dont ask me why allowBlank is there then though bc idk. its there on TryGetOptional too)
introduction event(As like someone ate mr. gingerbreadman)->
triger investigate "Festival" in murder scene->
talking around people in normal time->
tell lewis you to end the talk part->
triger who done it "Festival" or time over if you can't trigger that before the day.
that kind of thing isn't it?
that being said, out of the box you wont have a way to resume the event again, would need a mod provided mechanism to end the control sequence gracefully
The receiveActionPress logic is mega hardcoded for haleyBeach
Couldn't you do it via a standard non-interactive event then use CTs for the alibi dialogue? The clue investigation could be via small map patches with map text that only apply for the duration of the CT
CTs is what i was imagining too for a mystery that goes longer than a day
i mean it can be same day too. but i like the idea of several days with CTs
Then once the CT has expired, it triggers another event where the player is asked questions to see if they figured out who the "killer" is
I had a couple ideas about mechanics. I'm just not sure what is/isnt possible or how difficult certain things are. I imagined it over a couple events. I thought about the possibility of watching an event of each character's alibi, kinda like a flash back. And then the player has to go to that location and collect an item that confirms it. A simple example would be Evelyn tells us she was baking some fresh cookies at the time. So we then go to her house and look for some warm cookies. If I made it easy, only one character's alibi can't be confirmed. But if it was more challenging, the player would have to search for evidence as well as checking alibis. There may be more than one questionable alibi but only one person without an alibi that also fits the evidence
there's a crazy way to get out of the playerControl involving mailflags and instant next events but 
Ah yeah, I was thinking it was supposed to be wrapped up in one sitting, if it's over several days that definitely makes it easier
(it's the skippable command, with a mailflag before the skippable/playerControl to auto into that event) 
Events of each character's alibi would be doable, sure, but collecting an item would be hard
You could do a map patch after the alibi that just has you confirm the evidence
So nothing to collect but add a tray of warm cookies you can inspect
Really, if you're willing to do the C# then anything is possible
ahah, this sounds like a lot of work in regards to writing, but if it turns out well, it sounds super interesting
they hadnt mentioned anything about C# so i was defaulting to content patcher for a new modder
If you keep the structure simple, you could do some fun stuff with having the alibis randomised so that the event can be repeated each year ๐
That's fair, though I started as and never stopped being a C# modder lmao. CP is a side-hustle
(i also started with C# but we're outliers
)
Just to confirm tho, whatโs the overarching genre of the mod? Like a plain mystery event-ish mod?
Personally I'd keep it to just CT dialogue rather than alibi events, but you could do a flashback style event of how the "murder" happened if the player correctly solves the mystery
Yeah, conversation topic dialogue would be a lot faster than a bunch of events
I wish there was a way to do it like the community center bundles. Like one bundle would be evidence. And another would be alibis. With that one, similar to how some bundles have say six items that are acceptable but only five slots to be filled, there'd one less slot than there are villagers. I know I'm like going crazy on the mechanics, especially for never having created a mod before. These are just the ideas I had that I think would be totally awesome and I'm just sharing them all in hopes that y'all amazing individuals can help me make my dream mod at least partly a reality.
Also if you wanted to keep it more simple, rather than a separate detective and victim, Lewis could assign those roles to townspeople like in a real-life murder mystery game night ๐ Which then means less alibis that need writing and you can have some fun dialogue with those two characters
Just thinking about all the time spent fading in and out of all those events eugh
Evidence bundles would be doable with Unlockable Bundles, but finding the items would be a pain to code in CP. Unless maybe you could use a trigger action in the map inspection text to give the player an item when they investigate?
I think with SpaceCore maybe?
do dialogue commands work in the Action Dialogue map action
For alibis, you could create an "[Character]'s Alibi" item that's given to the player when they talk to the character, either directly in the event or via a trigger action in the CT dialogue
Not sure 
commands aren't working but MEEP... could probably do it?
Yeah thatโs what Iโve been thinking too, say the town makes a little celeb for Elliot (haha) publishing a new mystery book and it becomes a nice event.
And then at the end you can make simple CTs going like, โFarmer, I canโt believe you thought I was the perpetrator blah blah blahโ
Elliott could even be the one organising it because he wants to be the detective 
As far as just writing the dialogue in general, I'm totally prepared and capable of putting in 110% no matter how expansive it needs to be. I'm like crazy motivated to make this to the point where I'd crank out a novel if need be.
"It is against the rules of the game to blame the creator.
"
Detective but never the gardener, that man needs to stay away from my crops
its disappointing that theres no action map tile action, itd be fun to see docs for it that say Action Action <Action>
!anyonecancook
(revisiting the Action Dialogue/Message i've tried to no avail to get my $action to work, and i've doubled down on just doing my own custom tileaction)
Iโve yet to check if my $action command actually worked in GLH eurgh 
if you're doing dialogue it should work fine unless you've done something crazy
but tiledata specifically, it doesn't 
Hehe,,,,,, i donโ,,, think so 
(by crazy i mean, $query <QUERY> {{true}} $action | {{false}} $action)
Hehe
naur
At first you may try by 2 people small case to practice. which is the one did that. (as like Vincent or Jas)
My new dumb idea, create a custom shop for each tile where evidence should be found and it's only stock is that item, purchasing it sets a flag to remove the shop action from that tile
It's just a lot of effort for something that could be solved with one dependency lol
Okay, so in summary (assuming I'm understanding correctly):
Easy way with only CP - initial setup & introduction event that sets a conversation topic flag for 7 days or however long you want it to last. While the CT is active, townspeople have alibi CT dialogue and small map patches add items around various areas that corroborate (or don't) those alibis. Once the CT expires, wrap-up event where the player is asked questions to solve the mystery.
Benefit of this method is that it's fairly simple code and there's lots of room for easy randomisation for replayability (if that's something you're interested in).
Maybe pro/maybe con: it relies more on the player themself putting the clues together & solving things rather than just finding items & putting them in the right spot and will heavily rely on your writing to pull it off
Harder way with frameworks - initial setup & introduction event, then use HasSeenEvent and Unlockable Bundles to add an evidence bundle and an alibi bundle. Alibi items can be received by talking to townspeople and either getting it via dialogue or via a mini flashback alibi event, while evidence items can be found by [possibly one of the methods suggested]. One character won't have a corroborating alibi item. Once the bundles are filled, wrap-up event where the player is asked questions to solve the mystery.
Benefit of this method is that it has more complex & involved mechanics, but it's definitely harder to code
do shops open at all if they have no stock?
Put BigCraftItem and threw the correct element won't make a right evidence?
(also if you take Airyn's advice, do make sure you read up on Content Patcher in that startmodding bot response I summoned for you way back at the start, so you can learn what things like 'HasSeenEvent' even mean)
Oh yeah, this is just a general summary, definitely read the CP docs either way ๐
flour in Table(BC) -> finger prints(O).
(also i cant remember if it was said that CT = Conversation Topic which is like, a specific name for a kind of thing)
Yes, they just say Out of stock
shame
Had to create an empty shop to test lol
Would it be easier/possible if instead of collecting an item, if the character tells them their alibi, then the player goes to the location and looks for something to back it up. anything they'd have to physically collect or interact with. For a simple version, they'd have to correctly identify what's missing or changed jn a dialogue exchange. Or more challenging, with unlockable bundles, produce a specific item on their own. Nothing that would be too difficult to obtain. Like Caroline says she was drinking tea in her kitchen. So we head to the kitchen and there's an empty cup on the table. If there's bundles, the player has to submit a cup of tea.
Yeah, that'd be the map patches I mentioned ๐ Basically you can just patch the map to add something at one particular tile and have a message box pop up when the player interacts with that tile
Not sure if you'd be able to use that method to give the player an item when they interact with the tile though
Pretty sure you would need to make a custom tile action in C# or use a framework that lets you put trigger actions on tiles
hinges on whether or not Action Message/Dialogue correctly parses dialogue format or not
Dialogue definitely doesn't
i thought that was supposed to have been fixed at some point
Nah, that was a break issue in regular dialogue
If you used $e or $b then $action after was failing, but that's fixed now
i specifically remember an issue being brought up at some point with map actions, i just dont remember the result of it being brought up
Tile Dialogue commands was something Lumina wanted but never got done
that might be what i was thinking of
I think the request just came in too late
yeah i've tested $action for both tiledata, iirc there was a possible PR? but yeah still broken
Oh dang, that one needs a bit more effort huh
Put Search Point of Custom CraftObject (Only accept detective Item[Alibi Note, Scale, etc. or other evidence item])
And if it's not correct, you could re-produce and spit it back.
Eugh, the difficulty increases, npc has to be within 14 tiles of the action
is that what happens when you touch a trash can
Nah that's special
no limitations on who the npc is though
or whether that NPC is invisible and permanently stationed in the area
Just really hard to test lol
shouldnt be that hard if you just keep them there forever
Is there a debug to warp them to me
make sure theyre there once not invisible, then blank out their sprites
wctm
debug wctm name
Yeap, that one does work
NPCMessage with an invisible NPC stationed nearby, silly workaround found
it shows a message even if the NPC isnt around, right?
Hm, wasn't showing anything for me, but I only put the action in
hmm
Not sure what it would show though
its that bottom try catch block that made me think so
(this is also how i found out that NPCs can catch you snooping in their personal belongings, ive never seen that before)
it takes a translation key
If I put regular text in, it breaks the action
what were you putting in before?
Just the action by itself
as the message?
$action AddMoney 500
huh
i wouldnt have expected that to have done, like, anything
i thought itd only work with a translation key
why does that do anything
Well I'm calling a string I added to Strings/Characters
oh, thats what i meant then lmao for the message
so wait if you have normal text before the action the action breaks?
Oh I think I know why the action is being busted, one sec
This is what I get for not being an NPC modder
Yes okay, that works, $a causes the angry portrait if you don't put # between it and the text beforelmao
also wait a minute
??
this seems to just do the same thing, but... with any arbitrary NPC, existing or otherwise, and no radius limit
its just not on the wiki
Another secret
I'm actually surprised how many things I've found not documented on the wiki, like it makes sense but I just didn't think I ever would lmao
does that Load call for the portrait throw an exception if it cant find one?
or does it just leave the portrait blank and make this an anonymous dialogue box
not that it'd be THAT big of a deal, you could just load a portrait there, but still would be good to know
tho downside to this one is that the string HAS to exist in StringsFromMaps
Yeah if you put an non-existent NPC it throws an error
Tested the wrong thing at first, it definitely works right if you do it right lol
wait, what?
[game] Can't parse tile property 'Action' at Buildings:9,13 with value 'NPCSpeechMessageNoRadius Dipshit rokugin.excustomlocation_test' in location 'rokugin.excustomlocation_ExampleRoom': couldn't find or create a matching NPC.
if you load a portrait to that non-existent NPC name does it work?
When I try to make it use the NPC Dipshit it throws that
But if I use Abigail it loads Abigails portrait if she isn't there and opens a dialogue box for her
I can try that
you could use a drawn picture of the evidence as the portrait
that would be neat i think
like a close up
Loading an image to that Portraits/name does work
a very neat tile action to be aware of i think
I chose Bouncer because lazy
does any text box pop up if the dialogue string is JUST an action
Nope. I think it made the noise though
thats somethin i guess
well you did add money yeah? if it gave you money then you know it worked
Yeah, I know it's been working, at least since I fixed the dialogue woopsie
It gives the item as soon as you close the box
i would've used the workaround but teehee haha i already made my own damn custom tileaction
Or money in this case
Do we want to show an NPC dialogue box when examining a tile? You can use NPCSpeechMessageNoRadius
Dolphin over here hoarding secrets 
it wasnt intended to be included in the end goal from the start
ideally it'd be a portraitless dialogue box that also can handle the $action command
Oh oops, the conversation has gone quite a bit after the one I read. Sorry.
In any case, if you want to use a framework then MEEP should be able to handle that? Otherwise I don't think there's a pure CP way to do it.
spacecore can also handle it, i think we just got a bit nerdsniped trying to find a way to finagle it vanilla style
It's forbidden knowledge I got from trying to give portraits to everyone in the game.
Speaking of hoarding though, are you gonna add that to the wiki Button?
no it sounded like something you would really enjoy doing, so i was being courteous and leaving it for you
(i didnt feel like typing up an explanation of how it worked rn)
It will likely have to wait until after I sleep, I'm burning out pretty hard now lol
Is it possible to hook into specific locations inside a function, or replace a specific line a function?
I want to hook into the tree's draw function,but i don't want to overwrite stuff, or have to write the entirety of it again. How should I do ti?
are you familiar with Harmony?
not too familiar, but i used it once
You'll need Harmony then, and specifically a Transpiler patch
which will involve reading and writing IL code
IL?
IL is like one or two steps of abstraction above machine code
https://harmony.pardeike.net/articles/patching-transpiler-matcher.html
(you'll also likely wanna make use of CodeMatcher)
(https://stardewmodding.wiki.gg/wiki/Tutorial:_Harmony_Patching#Transpilers is pretty good to learn from, can suggest, got me a thumbs up of approval for "Not Being The Worst Beginner Transpiler Writtenโข๏ธ"
I forgot how to get the unpacked SDV assets, how do you do that again?
!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!
tyvm
well i closed the tabs

