#making-mods-general
1 messages · Page 492 of 1
like a woodpecker
Woodpecker is legit a good name.
The Tilesheet Destruction Destroyer
the original name was tilesheetinator, so ig the goal is to be more descriptive than that 
especially since it doesn't make the tilesheets
Stardew tilesheet assistant (nugget)
STA(n)
if only shockah came up with it instead of sinz 
Stardew Tile Arranger Remix Derpy Elite Wondercraft
i think all of these names need to become the official one
SDV Tilesheet Fixes is perfectly fine imo
I might go with SDV Tilesheet Toolkit, yeah
stardew tilesheet assistant path helper. Staph. short for staphylococcus
it doesn't actually fix anything so idk if I can call it fixes haha
Star-Tile-Dew maybe? STD for short?
does it toolkit anything
it adds multiple tools. one may say a whole kit of them
Content tilesheet fixer, if someone searches for ctf stardew it's more likely to come up, not many capture the flag games modes for stardew
content to female
if it was called Stardew Tile Toolkit, would it confuse you guys
I'd say stardew tile__d__ toolkit would be less confusing
this is my least favourite part of making stuff 
can we get a brief recap on what the toolkit actually does 
Tiles
It does STUFF
it makes it so that u can use sheets from other folders
right now it lets you use tilesheets from other folders without causing climbing
we'll go with that
that's a rather long name, idk if it will fit in the github repo name box /lh
(but you're right - the nexus name will probably be Stardew Tiled Toolkit - Easily Use Tilesheets in Maps or something like that)
So in a way it's what the original compiler was? Grace Hopper wrote something to link programming code together in the 1950s and called that a "Compiler" because it compiles stuff. That tool is kinda similar.
Stardew Tilesheet Compiler? STC?
well I do not care for changing the name again /lh
(what do you suggest?)
it links the tilesheet to your tiled map
Farming Tilesheet Linker. FTL.
female to linker!
is it not essentially just a mklink for tilesheet files/folders
Linkle. Stardew Linkle.
uh, ish? idk
I feel like most map makers don't use that type of link often
so I think it would be confusing
i disagree
Stardew linqle
A linker or link editor is a computer program that combines intermediate software build files such as object and library files into a single executable file such as a program or library.
In a way, it's a linker for tilesheets, so "Linker" fits really well.
it doesn't do the thing you quoted in any way shape or form. the mklink comparison makes sense but not this
even if a user has no idea what "link" means in a technically sense, i dont think its a stretch to imagine them going "it links together tilesheets? how?" and then looking at it and going "oh that makes sense, sure"
A0 doesn’t have a traditional linker as we see it today
because i was not at all thinking of the technical term of linking when i said it
tilesheetify
startup name from a few years ago, very trendy
A0 is purely a translational compiler
(I was talking to pink serenity, not you button, sorry)
i knew that when i said that
what if u just do the JS thing
you know what, you're right, I'm sticking with tilesheetinator 
name it some Word
if i were you i'd be making a separate tiled extension for any future features anyway so i'd go with just 'sdv tilesheet linker/tool'
i will not be called out like that, thanks
Previous.js
Tilesheet.js? 
tilesheetinator does work very well tbf
tilesheetinator is good but unfortunately it makes me think of the mike myers cat in the hat movie
Wait iron what does this do, does it just convert loose assets to a tilesheet?
And modify Json to reference the tilesheet?
In my CS class (which admittedly was boring and I switched courses soon after) we learnt that it was more of a linker, but I admit that professors are weird in their terminology.
After thinking about it further, I think I'm going to go this route for this idea of mine. Thank you for the suggestion! Would you happen to know any mods I could take a look at that uses that kind of code to break geode items?
it's supposed to make you think of dr doofenshmirtz from phineas and ferb
make me think of what from what
oh boy
Tbf CS profs talking about OS topics is 90% of the time just “how much can I make stuff up and keep a job”
no, it fixes an issue with tiled where tilesheet references in maps that have directory climbing in them end up not working in smapi, so you have to edit your map in the same dir as your unpacked files
uncultured
Does it do so dynamically or just as a tool for modders?
That's why I switched to Media Science. Now I can also make stuff up and get a good grade.
it's a tiled extension, so it's a tool for when making the map
Pink should read the compiler book
2nd edition that is, as iconic as Dragon v1 is
Every work of art
anyway I'm tired of thinking about this, tilesheetinator it is
i think VMV has some
the thing to edit is:
- Data/Objects, GeodeDrops field specifically
- Data/Machines to add your custom geode breaker that accepts your box
This is like… top 10 books I own
But that’s more for #programmers-off-topic
I abandoned CS to spend less time thinking about weird technical stuff, not more 
But ty
i choose to believe that
is wearing a shirt with 'complexity of compiler design' on the front

I'll take a look at the code on that one. Thank you so much!
@lucid iron would you like to possibly resolve a moral quandary for me?
Nexus page: perms locked down a bit
Source code: GPL, MIT or Apache licensed
Why does one do in this situation
Particularly if a mod author isn’t being responsive (not pathos, different cases) or has left the modding scene
i think you just release unofficial on gh and link ppl in the comments
That works for me
but yknow 2 cakes etc
if ur dynamic reflection is different enough i feel it's valid to make new page
idrc about new pages, and I’m mostly thinking for NPC map locations
Or, in general, finding mods that seem to create a lot of garbage
It seems like clear and reuse isn’t super common practice because of how negligible performance impact seems in SDV modding
well Pathos is the one who maintains NPC Map Locations
But the GC pressure builds, especially with the stock .net 6
i am guilty of using null as a whole new state 
vs merely empty
tho usually it's stuff i load from content
Speaking of, button, I’ll ask you since you’re here directly, there’s a part of your code where you use harmony for BETAS. It breaks on any update to harmony, and SinZ has been super awesome to basically do 90% of the work of migrating smapi to .net 9 and updating the core resources
im already aware
I don’t intend on publishing anything but you good if I recompile your mod with the harmony update in mind?
as long as its not published anywhere since the code isnt open source you can do whatever you want with the code on your own machine
is the breakage fixable with just compilation?
no
it requires an edit to the transpiler because it uses behaviour in harmony that was previously allowed and no longer is in later versions
Do you mean open source in regards to license? Cause the source code is available
Great
It needs to account for harmony 2.4.2
the compat issue was in 2.3.6
if you're curious chu, the issue is that i insert instructions after the very last instruction/the final ret in a transpiler. later harmony does not allow you to do that as it considers the space beyond the last instruction to be an invalid space to grow the instruction list into
https://github.com/pardeike/Harmony/commit/919f13880e1aa5703fe01bafec0160b7c8c6b33c added extra validation as to whether harmony thinks its in an invalid state and proactively refuses changes
because the final instruction was where a bunch of things were jumping to
and it was an easy way to ensure that the code i needed to run just before finishing wasnt skipped over
Ah, OOB
its not actually out of bounds
or at least it briefly is, but the Insert putting the ret back at the end fixes it
personally i dont really see any actual issue with it, if you discount Harmony simply saying there is one
or is it still no crimes >:(
i dont think its a crime, but if we ever officially move on to later harmony versions then I guess ill be forced to fix it anyway
unless and until that happens though idrc to do anything about it
since smapi uses a fork anyway, I could just revert this specific validation in harmony
Still need to solve the problems that generic behaviour has very much changed, but harmony and generics have never fully worked well as is
breaking changes in a non x.0.0 update 
SMAPI 5 would be a good point for a migration
with .NET 14
Lmao
I don't see pathos doing a major breaking change while he is so busy with everything else, unless he times it with 1.7 update which is likely a few years out still
If 1.7 comes sometime 2026, or even 2027, that’ll be mid lifecycle for .net10
So probably enough migrations and stability to consider a move
the 1.6 modding alpha was a bit over 2 years in development.
and with 1.6.16 pushing out the 1.7 development lifecycle, I don't see it happening in 2026
(ah I was also wondering why MTF's transpiler bork with new harmony)
would be same reason
(how would I yeet the final ret then since IIRC I tried going back 1 instructions and that didn't work)
(you can tell I'm doing sinful things)
you wouldnt. you'd insert whatever you needed before the ret, and you'd have to change whatever else is on the ret that needed changing as a result
ig it means u need to move the labels up too?
if applicable, yeah
i was filing that under "change whatever else is on the ret that needs changing"
yes, the use case was that I wanted to transfer the labels
which now that I think about I wonder why I didn't go with that route instead of deleting ret since I know ExtractLabels/MoveLabelsTo exists
since it is actual latest version of harmony, you could ask in the harmony discord if there is a better way to do it
you could also harmony patch harmony to remove the restriction again if you wanted to take the secret third option
Bootstrapped harmony
I'm maintaining a semi fork anyway, so just removing the validation in source is easier
as the exception saying at StardewValley.Farm.resetLocalState_PatchedBy<Pathoschild.SmallBeachFarm>(Object ) is pathos's fork, it would normally be at StardewValley.Farm.resetLocalState_Patch1(Object )
do u think main harmony would want this 
What has main harmony ever done for us anyways
exist
I did mention it, and they did say to raise an issue about so they could discuss it further
Rimworld which is the canonical harmony game does it by having their mod harmony patch Environment.GetStackTrace to inject a bunch of extra info
https://github.com/pardeike/HarmonyRimWorld/blob/master/Source/ExceptionAnalyser.cs
System.NullReferenceException: Object reference not set to an instance of an object
[Ref 53C89AF7]
<snip>
at Verse.PawnRenderTree.ParallelPreDraw (Verse.PawnDrawParms parms) [0x00084] in <24d25868955f4df08b02c73b55f389fe>:0
- PREFIX co.uk.epicguru.meleeanimation: Void AM.Patches.Patch_PawnRenderTree_ParallelPreDraw:Prefix(PawnDrawParms parms, State& __state)
- POSTFIX co.uk.epicguru.meleeanimation: Void AM.Patches.Patch_PawnRenderTree_ParallelPreDraw:Postfix(State& __state)
- POSTFIX rimworld.Nals.FacialAnimation: Void FacialAnimation.HarmonyPatches:PostfixParallelPreDraw(PawnRenderTree __instance, Pawn& ___pawn, List`1& ___drawRequests, PawnDrawParms parms)
at AM.Patches.Patch_PawnRenderer_RenderPawnAt.Prefix (Verse.Pawn ___pawn, Verse.PawnRenderTree ___renderTree, Verse.PawnRenderer+PreRenderResults& ___results, System.Nullable`1[Verse.PawnRenderer+PreRenderResults]& __state) [0x000dd] in <b10aa9e45bcb4ac990b513023b2967cc>:0
at Verse.PawnRenderer.RenderPawnAt (UnityEngine.Vector3 drawLoc, System.Nullable`1[T] rotOverride, System.Boolean neverAimWeapon) [0x00012] in <24d25868955f4df08b02c73b55f389fe>:0
- PREFIX co.uk.epicguru.meleeanimation: Boolean AM.Patches.Patch_PawnRenderer_RenderPawnAt:Prefix(Pawn ___pawn, PawnRenderTree ___renderTree, PreRenderResults& ___results, Nullable`1& __state)
- POSTFIX co.uk.epicguru.meleeanimation: Void AM.Patches.Patch_PawnRenderer_RenderPawnAt:Postfix(Nullable`1 __state, PreRenderResults& ___results)
<snip>
This is gonna be the start of something completely awful and love it for that
Why the heck was making the bad NME salesman sprite harder than coding tho
Okay, I tried and I didn't understand anything.
Does anyone know how to replace the word "Sam" with another name in all character dialogue?
basically the motto of modding dw 💖
what's up?
..not me 
i mean, apart from manually editing every line, but that has potential to cause issues
BUT you could set those edits to low priority? I'm sure there's a better way to do it though i'm still fairly new
Yes, I actually read the whole wiki but in the end I didn't quite understand how to do it
huh, lemme pull up the CP documentation one sec
it's really helpful, here's the priority stuffs! https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-editdata.md#:~:text=purpose-,Priority,-(optional) When
anddd lemme see if i can find some of my code to send as an example for usage
...i cannot
how can i help you, king dedede 
welp, just put it before entries 
Okay, I'll try.
Im having a bit of an issue. I made a chicken mod and the new eggs are only giving regular mayo, not the modded mayo.
i have the machine edit to include it, and i did a move entries but im not sure what im missing. could someone perhaps look over this and tell me what i may have done wrong? please ❤️
https://smapi.io/json/content-patcher/9fbef59550ad456899b3add028b2d91f
my first mod so please be kind haha
you need to moveentries
next thing to check is if your edit actually went in
do patch export Data/Machines and check the result
if u have machine control panel u can check rules there too
ok ill download that but still do the smapi command
Trying to convert my DGA animated festive winter tree over to CP and Spacecore. Any idea what I am doing wrong here?
Not receiving any error code in SMAPI, and my image appears static, but no animations
My manifest includes dependencies for CP, Spacecore, and Simple Foliage (1.6)
https://smapi.io/json/none/ae225dd0ae504cb89e6b6d5b4b519dd9
``{
"Format": "2.0.0",
"ConfigSchema": {
"FestiveTreeTimeframe": {
"Description": "Choose when the festive tree appears. 'BeforeFeast' is Winter 22-25. 'AllWinter' is all Winter days.",
"AllowValues": "BeforeFeast, AllWinter",
"Default": "BeforeFeast"
},
"RecolorVersion": {
"Description": "Manually change your recolor version.",
"AllowValues": "Vanilla, Earthy, Eemie, Naturally, VibrantPastoral, WittilyNamed, Starblue",
"Default": "Vanilla"
}
},
"Changes": [
{
"Action": "EditImage",
"LogName": "Load Festive Tree Base Texture (Before Feast)",
"PatchMode": "Replace",
"Priority": "Late+1",
"Target": "TerrainFeatures/tree3_winter",
"FromFile": "Assets/{{RecolorVersion}}_FestiveTree.png",
"FromArea": { "X": 0, "Y": 0, "Width": 48, "Height": 160 },
"ToArea": { "X": 0, "Y": 0, "Width": 48, "Height": 160 },
"When": {
"FestiveTreeTimeframe": "BeforeFeast",
"Day": "22, 23, 24, 25"
}
},
{
"Action": "EditImage",
"LogName": "Load Festive Tree Base Texture (All Winter)",
"PatchMode": "Replace",
"Priority": "Late+1",
"Target": "TerrainFeatures/tree3_winter",
"FromFile": "Assets/{{RecolorVersion}}_FestiveTree.png",
"FromArea": { "X": 0, "Y": 0, "Width": 48, "Height": 160 },
"ToArea": { "X": 0, "Y": 0, "Width": 48, "Height": 160 },
"When": {
"FestiveTreeTimeframe": "AllWinter"
}
},
{
"LogName": "SpaceCore Animation - Before Feast",
"Action": "EditData",
"Priority": "Late+2",
"Target": "spacechase0.SpaceCore/TextureOverrides",
"When": {
"FestiveTreeTimeframe": "BeforeFeast",
"Day": "22, 23, 24, 25"
},
"Entries": {
"Shyzie.FestiveTree.CP/BeforeFeastTree": {
"TargetTexture": "TerrainFeatures/tree3_winter",
"TargetRect": { "X": 0, "Y": 0, "Width": 48, "Height": 160 },
"SourceTexture": "{{InternalAssetKey: Assets/{{RecolorVersion}}_FestiveTree.png}}:0..1@40"
}
}
},
{
"LogName": "SpaceCore Animation - All Winter",
"Action": "EditData",
"Priority": "Late+2",
"Target": "spacechase0.SpaceCore/TextureOverrides",
"When": {
"FestiveTreeTimeframe": "AllWinter"
},
"Entries": {
"Shyzie.FestiveTree.CP/AllWinterTree": {
"TargetTexture": "TerrainFeatures/tree3_winter",
"TargetRect": { "X": 0, "Y": 0, "Width": 48, "Height": 160 },
"SourceTexture": "{{InternalAssetKey: Assets/{{RecolorVersion}}_FestiveTree.png}}:0..1@40"
}
}
}
]
}``
hrm the source rect might be wrong lets see
you have to animate these rects separately
0, 0, 48, 96
32, 96, 16, 32
btw if u can avoid internal asset key it's prob best to do so, means other ppl can edit you if needed
Gotcha, I'll give this a go, thank you!
and you won't need to replace the base texture if using spacecore
So no EditImage necessary?
yea when you have a spacechase0.SpaceCore/TextureOverrides entry that matches the original draw is replaced completely
Nice, okay, I'll give this a go too, thank you!
oh yea when the tree is mossy the top rect should be 96, 0, 48, 96
tho ig it dun matter cus winter
if using content patcher, you have to find all of the instances of "Sam" and construct individual patches to edit them so that they say the name you want instead. it's not a small task.
it's much easier, but still not trivial, in C#
of course the other problem with doing individual patches for it in CP is that you aren't compatible with any other mod that deals with, or even mentions, Sam. but that's an issue with doing a character replacer in general, really
Good to know! I was originally going to allow for the tree to be used in all seasons if selected in the config, but realized it would look odd with the snow, so I would have to do some editing which I am not down for lol but this is good to know if I do decide to do this in the future
It's going to sound really silly, but what is C#?

@next plaza do u think we could get some kinda debugging mode for textureoverrides to log the seen texture + rect to somewhere so ppl don't have to guess?
the other thing i'd enjoy having is some sort of entire sheet mode so that source rect is optional if your new sheet is a specific width multiple of the original texture to override
As someone with 0 coding knowledge, how hard would it be to change the output item of the coffee machine? I want to make the coffee machine output a triple shot espresso instead of a coffee. I imagine it's a super simple mod but I have no idea
!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.
this you may do in content patcher, since the coffee machine is just a normal machine
Thanks. I'll check this out
@rare prawn did u mean to post in here
this is for a different texture but u basically just load stuff as normal and put the asset name in SourceTexture https://smapi.io/json/none/81f5192ea78c419db3e0531ca6c2d142
C# is a programming language (the one that stardew valley and its mods are written in). if you aren't keen on learning to program, i wouldn't recommend learning C# just for this mod
Do you mean using smapi instead of content patcher?
with a SMAPI mod coded in C#, yes
Woops, don't even know where I posted. I'm so tired lol
Thank you!
And how do I create a mod in C#? I think I'm creating a content patcher mod because my file is a .json.
are you really really sure about replacing sam
it sounds like your character is quite different
and can become a standalone npc, even if a simple one
It's only in appearance
I feel like both making a separate npc and just doing all the replacements the manual way might be easier than learning C# just for this
Since his personality is almost identical to that of the character I'm going to use, I only want to change his name and appearance; his events and dialogues would remain the same.
But I would like my mod to be compatible with others.
And I think the Content Patcher mods don't allow that.
That worked! The trees are animated, just gotta clean up a few issues I see lol Thank you thank you thank you!
making a new npc is how you'd become compatible with other mods
if you're replacing sam it'll never be compatible with every mod for sam out there
ah yes do u want some new technology
someone request this of me so u can now add light sources to trees
Well, I don't want it to be compatible with all mods, but at least it should work with the ones it can and not be limited to just the base Stardew Valley game.
And isn't it more difficult?
what im saying is, that if any mod has a character mention sam by name, it's no longer compatible
I want to cry just from having made the sprites and portraits.
I also need to learn many things to create events and dialogues, and so on.
Content Patcher mods are the kind that are most widely compatible with each other
if you just want the character to walk around and have daily dialogue you don't need to learn events 
And honestly, I don't want to complicate things too much, I just want to replace Sam, hahaha.
If you try to edit the same thing another mod is editing then only one of you can "win" of course but aside from that there are no significant compatibility concerns
That would be boring.
replacing Sam's name everywhere is a complicated thing
yea in terms of what "replace vanilla character" requires
- editing in portraits and sprites: easy (assuming you drew them already)
- editing the character name: easy (target that Strings/NPCNames asset and you good)
- editing the character name in dialogues: pain + compat hell
and even if you do, there's nothing you can do about another mod adding a new portrait or sprite to Sam that looks like vanilla Sam and overwriting yours, compeltely by accident
if you don't wanna learn C# it's totally fine to just set your goal to replacing vanilla dialogue and tell everyone else as such
Well, I'm not too worried about compatibility since I assume that if someone downloads my mod it's because they won't have another mod that replaces Sam.
And I personally had already planned to make a version compatible with SVE
any mod that adds dialogue to anyone can potentially include the name Sam in it
Well, that's up to whoever downloads the mod; my task for now is simply to replace the vanilla dialogue.
Alright, so you want to basically replace all the reference to "Sam" in the game to your character right. The vanilla game typically uses these place to reference a character's name:
- Stings/NPCNames
- Characters/Dialogue/<Name of any character who might have mentioned Sam>
- Data/Events/<Any location of events that have Sam mentioned>
- Data/Festivals/<any festival date that have Sam mentioned>
- Data/Quests
- Data/SecretNotes
- Data/mail
- Strings/Characters
- Strings/Furniture (for his spouse portrait)
- Strings/StringsFromMaps (for any map object that might mention Sam)
- Strings/Weapons (his spouse weapon)
- Data/ExtraDialogue
- Data/MovieReactions
- Strings/Locations
The problem is that I can't find the code to do it; I only know that I have to do it manually, locating the name "Sam" in each character's dialogue, but I don't know how to replace it with "Fang" and make it work.
dolphin did you comb through the dialogue for every verbal mention of sam
So you just need to search all those assets and patch into the strings with you mod, basically.
have you read up on how to do EditData in content patcher?
And if you want to make it compatible with other mod like SVE, you'd need to comb those mod to for Sam's mention.
Yes, it's not that difficult when you use a program that detects the words on its own, and I just realized that I must indeed replace his name in the secret notes, letters, etc.
I already did that for one of my WIP mods, so I just took a look at my notes.
Yes, for now my mod only works for the appearance and the name in the menus, since I'm quite new to this and it's my first mod
The Data/Event assets is the most complicated and tedious part of this, really.

you see that first block where you target the string keyed with Sam in the asset Strings/NPCNames, replacing its content with Fang? you'd repeat that for gods knows how many times for every mentions of Sam in the game'a assets
I'm going to cry

So, I just need to copy this command, use the game's dialogue options, and then add the dialogue I want them to say?
something like that?
Why am I a dolphin?
I'm the Dolphin.
aaaa
srry hahahaha
Sometimes I don't read the names because there are so many that I get confused; I prefer to look at the profile pictures.
For dialogue, I have 39 Sam patches of various complexity. Each patch has one to several Sam mentions.
(Honestly if you just change name and nothing else, it's not too bad.)
stares at my once desire to make mods compatible with piper and louise
This died a quick death when I realized I'd be rewriting events.
a lot of them
this plushie is.. not going to sink themself into revision hell
Ok, I've set up my item as a geode for my machine but I need some guidance as to what I need to put under Data/Machines for geode crushing: https://smapi.io/json/none/4d1e1e36c7214885bcb7f8f9e04f79e7
did u try the geode at clint's first 
... huh
Not yet >_> Was working on slapping in the code before testing
Ok, good point
for your machine, (BC)sakialyn.merrycrops.christmastree is a whole new machine
so you don't need target field there (and in fact cannot use it until you do Entries)
take a look at "(BC)182" vanilla geode crusher's output item section for what you need, should just be the long thing in OutputMethod
Custom Signs are now editable in-game
I read that as edible first
Y'know, I didn't think about looking at the vanilla code to answer my question. Probably should have done that first LOL. Thank you for pointing that out.
context: #making-mods-general message
i have now received another solicitation email (at my not-secret email address) from a different new modding platform also owned by Valnet. they claim to be offering paid partnerships where they give you money and you give them exclusivity
i didnt get that one
maybe they didnt like me asking questions last time
well, the email says things like "we're contacting a small group of elite modders" and "top creators like YOU", so i guess i'm just a big deal /j
top creators like you? i like to think im more like ichortower than most people on the internet
well J Club is a core mod
either my email is a well kept secret, or Speedy Solutions and Profiler aren't elite mods
~~still no email, guess im not an elite modder
~~
websites weird, some games are using uuid's for the mod id, other games use a global autoincrement integer
question: in BETAS, for the item_equipped, what is the H(10) for?
oooh okay perfect that's what I thought
why does smapi say [game] NPC femboythursday.ros_Kodya can't load schedules because they led to an infinite loop (spring -> spring). ? im just trying to test my walking animation im not even making the actual schedules yet 
https://smapi.io/json/none/4615d0e6f05648e6a399637fdb26789e
is the save you are loading have Railroad accessible?
if the railroad isnt unlocked schedules that go there fallback to certain other keys or, if nonexistent, defaults like spring
this also includes schedules for the JojaMart and the inside of the community center
ok ill try going to next spring so it should be unlocked
actually its just RR that does the replacement schedule it seems
jojamart and CC just dont replace anything?
multiple layers of replacement
ok the railroad thing was the issue, ty 
tbc though you should still fix it so that players starting new saves wont have that error
the parseMasterSchedule does part of it, and changeScheduleForLocationAccessibility does the rest
the latter is the only place i see the _Replacement used though
joja/railroad can use <LocationName>_Replacement schedule as a lookup to replace the location to salvage the schedule, while it returning false will end with the schedule entirely needing to be replaced
oh yeah fsr my eyes completely glossed over the fact that the JojaMart case used the same code as the railroad case in that switch
past me looked into this in the alpha thread due to discussions on data modelling it
i dont remember, was schedules being data modeled something that was only floated as a possibility for 1.7 or was it more of a concrete idea
i feel like i have memories of the 1.7 alpha thread before it became 1.6.16
casey was working on pocs for 1.7 while 1.6.16 is still going
I would like schedules to be points instead of days
wdym points instead of days
Well atm u have to specify a day's worth of points at a time right
the general idea was rather than schedules having schedule keys (like spring) it was an ordered list of schedules with conditions gating it
What if u just specify points and edges
custom schedule keys
Ok. I copied the vanilla geode crusher data into the machine. Confirmed Clint can smash open the item, so now I just need to get the machine to work. Tested it in game and wouldn't accept the item: https://smapi.io/json/none/b864aca214c0402ab5e1d469684027c1
Plus a key based starting point
i was already confused by what you meant and now im even more confused with you bringing up edges. what is an edge in the context of a schedule
I wish to turn the npc's daily movement into choose your own adventure
are you talking about the "outer" rules governing which schedule will be used, or changing from Timestamp->Destination Location+Tile to define the actual route they will use more fine grained
if you are specifying points and what points they should go to from said points, isnt that... what you have now
Yeah but atm u can only go to 1 point
like "wander around this general zone"?
I wish to branch to multiple point
so at 10:00 go to railroad, seedshop or beach I don't care which?
Maybe my npc starts in their house (initial point) and then they may either go to seed shop or beach
The usual weighted random + Condition + precedence to pick
cant you already do this with CP's random token
Yes but it kind of sucks i wanna model it 
i feel like if you're just defining points, the vast majority of them are still going to be conditionless, arent they?
you can kinda do it with CP but it would be tedious, as for each destination you have even more complex logic to keep it going
and if you get to the point of writing specific points with specific conditions to choose from on certain days, thats kind of just what you're already doing
in 1.6.15
I think chuve wants to effectively reroll the schedule logic after arriving at the first destination, rather than needing to lock in the entire day in advance
Something else this would handle with more grace is the "can't access location yet" scenario
You can have a railroad point precedence -100
And a fallback point in mountain or whatever precedence 0
I dunno if they should reroll throughout the day exactly but that would be fun 
the designs I saw from pathos/casey would partially let other mods implement that more easily, but they didn't really touch the inner points much and were focused on which schedule to use in the first place
but if each subsequent stop in the schedule is just saying "choose from these 3 (for example) points", i feel like for most people, there arent really gonna be conditions gating those 3 points, so it's just gonna choose the first one every time anyway. or if there are conditions people had in mind, then i think they just want a custom schedule key in general
unless it just chooses from 3 unconditional points completely randomly
but again you can already make that happen with CP then in that case
That's what the weight part means yes
I'm thinking of the general pattern of precedence weighted random that game uses for appearances
When 3 points are all available by cond and equal precedence, you get a random one
The key of Data/Machines must be the fully qualified ID
granted i havent written schedules much before but is that really that much easier than a dynamic token for the schedule point
ie. you're missing (BC) at the start
not that everything that can be done in CP means its ineligible to be made a proper feature
It would become harder to use DT if we do model the schedule
but if it can already be done but people still arent doing it, is it really that desirable a thing
Cus not simple string
And I am talking about my hopes and dreams
People do actually do it now, sen and eli and dylan both have randomized schedules i think
It's advanced usage for sure
Oh shoot. Knew I forgot something simple
I do want to explore more complex token data structures rather than everything effectively being IEnumerable<string>
I do think that many schedules will just be a no branch list too and that's alright
can you elaborate on this, this interests me and i would like to subscribe to the newsletter
IEnumerable<object> tokens...
while you're at it can you give custom tokens access to input args pls thank u /j
Being able to define a token thats like {"Location": "Railroad", "X": 50, "Y": 50} and then in a patch use {{MyToken |Location}} or something to specify the specific part of it.
I also want to figure out a not terrible way to have a token with many values and then run a patch for each distinct value of that token
you already theoretically could do that, couldnt you?
the foreach is real...
I would like SomeModelField: "{{SinZationalModelToken}}" to work thx
i still have that unsubmitted FileInFolder token PR waiting for the day someone smarter than me figures out how to parse tokens in target fields before splitting patches
patch splitting only happens for target/fromfile and splits on literal values, not the current value of the token
part of the work for foreach to work will be revisiting how patch splitting works in general.
As I think it can be optimised better, why check the N derived patches seperately if their tokens have updated if they are all the same patch under the hood
But my main problem with foreach is figuring out a way of doing it that isn't just a literal "Foreach" field on a patch.
I want it to neatly fit into existing stuff, and be extensible
Maybe a {{ForEach {{ChildNames}} }} and just treat it as a magic token that then marks the patch as needing to be split
I think at one point we (nonspecific) wanted to do it via local token syntax
Like if your local tokens had multiple values it should become split into foreach by default
i thought Pathos offhand mentioned a separate ForEachToken field on a patch
probably want a separate field for this since we may want to pass a list as local tokens
though that begs the question of whether we need support the use case of lists of lists
While it splits on comma that will have unintended consequences
Yeah I think these points were raised too back then 
That's why nothing actually happened
I already spent a bunch of time chasing ghosts thinking there are bugs in debugger due to my mod showing things with multiple values due to it splitting on comma
Ok, I added in the missing (BC) and now it works and accepts the item. The trouble I'm having now is that it will not randomize and keeps spitting out the same item. I did see under "Output Item" there is a field for "RandomItemId" but the items for that field were already populated on the item itself under "GeodeDrops". So... I'm wondering if I need to put something else there instead to refer to it: https://smapi.io/json/content-patcher/62f6400d153c4feebe7dd8eb26e07836
Smoking Christmas trees are a fire hazard
you are testing with new geodes over the day right
Yes. I spawned in new geodes
though what's the purpose of the three identical rules, or are those just placeholders
and what's the same item it keeps spitting out
Hey, would it be wrong of me to use another mod as a base to do what I want? I think I found one that more or less does what I want, which is to replace the name Sam with another one.
what mod is this
There are 3 different IDs with different chances and items involved under "GeodeDrops". Unless there should only be one? The item it keeps spitting out is Pearl ID 797
generally for content code there is only one way to edit stuff and copying snippets is totally, but in this case your mod will likely count as a derivative work in which case you need permissions
safest is to reach out and ask whether you can use their mod as a template while swapping out every graphics/writing that isn't yours
hmm honestly I don't see any errors in your code
is time passing when you're testing
oh that was meant to be a reply to Saki
Yes
oh that's an old old mod
But could it serve as a base?
it likely breaks in half on 1.6
and also likely uses older, now unsupported content patcher features that no modern tutorial or documentation will be compatible with
u.u
after a quick glance, that doesnt actually seem to be the case (i was worried it'd be from the era where you could use FromFile on EditData) but it also seems very small... i dont know huch stuff it'd be missing from later game updates thatd also need to be changed
and because of that this mod cant really act as a template, since you'd still need to write new code to patch the things it misses, and that puts you in exactly the same position that you are already in
also i think some of the changes in this mod reword things to be more in-character with the character Yosuke? so unless you know what to change it back to to get to Sam's original lines you'd need to look out for that too
ok I found out what's happening
the geode crusher function uses the number of geodes crushed to determine the output
your machine needs to increment that stat to move the random number generator
well I'll keep doing my thing and see if it works. I'll try using the dialogue from Sam's 6 Hearts event, which is the fastest event I can access and where Sam's name is mentioned.
basically you need to set StatsToIncrementWhenLoaded/StatsToIncrementWhenHarvested/whichever the vanilla geode crusher uses
this mod also says it was to be used in conjunction with the villager renamer mod, which has a successor here: https://www.nexusmods.com/stardewvalley/mods/9271
you might have better luck just using this alongside a simple mod to replace his portraits and sprites
(disclaimer: ive no clue how this successor works or how well it does what it does)
(fun fact, I asked this because I conflated the geode crusher with the seed maker, which uses the current time + the machine position for the RNG seed)
Ok, I think I see it. Seems I accidentally left it out. From the vanilla code:
yep
Hello. How do I call a method from another mod in my mod?
(I shall enter the realm of sleph, for now pls redirect all further inquiries to other very capable helpers in the channel)
To be specific, I need to call Spacecore's method to initialize the saveserializers before my mod reads save data
Ok, rest well and thank you for the guidance!
(and spacecore's API doesn't seem to have anything that will do just that)
I was wondering how to get started on making a clothing mod
Is there a mod I'd be able to use as a base and just change the art files for? I tried looking at the wiki and related pages and got really confused 😭
birb
Does anyone know how I can add a custom ore for a custom quarry? I can't really find where to do that 😅
you can probably do some crimes with System.Reflection, but what exactly are you trying to do? your plan smells a bit, if i'm honest
@fallow gazelle (pinging due to reply age) see above
Another quick question.
If an asset I'd like to replace is in a folder that's in another folder, would it then be:
"Target": "Folder/Folder/Asset"
"Target": "Characters/Monsters/Armored Bug", in my case?
yes, you need the full asset name
Brilliant.
for clarity, asset names look like file paths but aren't actual paths. (they are read in from folders, but once the game has them the asset name is just a string that happens to have a "path")
That can't be good.
Lurk and skull data files, since they're both mentioned in the big scary red wall of text.
basic json error (unclosed string on "Target" line, both files)
"This doesn't seem to be valid JSON." means parsing failed, so you have a syntax problem
Did you try to load a json instead of a png
Nope.
Yeah, I literally just forgot to close the thingamabobber.
Horrific.
Let's see if it works now.
it workie
the scope creep is real folks
Over the weekend I almost finished overhauling all of Ranger Taro as an NPC
I'm testing the final heart event, tweaking here and there
and my brain goes "what if in a final secret heart event she reveals she has a nephew and there's an entire hidden romanceable npc at the end of her questline"
"what if you just add in another npc real quick" oh and the only way to unlock him is to be at 4 hearts with emily, six hearts with Leo, 10 hearts with the Ranger -
orrr the story could literally be done as it is
ohhhh you're the author of ranger taro? that's so cool!
Release it as is

It's supposed to be an overhaul update right
True true
I think you might as well get it out so ppl can report bugs
I actually simplified the story and dialogue down a lot to make her writing more clear
scary but true
grounding words
How do I modify the introduction dialog for Morris?
It's so hard to figure out anything relating to that jerk
okay we're just going to do a cute bonus event where Ranger Taro squawks like a parrot with Leo and Emily
secret sauce later, closer to release for now
Say is she still in the forest-secretwoods highway intersection
Nope! That was a big change, she's moved to avoid that clusterhole
She's now below the tower against the mountain, in a spot that I'm pretty sure (pretty sure) no one else is using. That works for both SVE and vanilla, is further south than Lunna... fingers crossed it works for everyone.
(csproj tomfoolery) can i construct a Condition="" (for a PropertyGroup) that evaluates to true if i have a particular package reference?
in this case, i have a function in a shared project that i want to conditional-compile in or out based on whether the parent project has a reference to Newtonsoft
Also, you can now switch between Lotti and Suki versions of the merchant really easily in-game from the GMCM
"but ichor," you may say, "every mod can safely reference newtonsoft since it ships with smapi, so why would you do this?"
the heart wants what it wants
Are references property group or item group...
also since i'm controlling all the csproj files it would make sense to just do a DefineConstants or whatever along with the reference but it's more fun if the shared project can Figure It Out
i already have it setting up the constant for whether to include the harmony stuff, since that's already a flag i can easily check
actually i guess the real question is what surface is available to me in a Condition attribute? can i access arbitrary stuff in the csproj tree?
ItemGroup -> Reference (not PackageReference. i don't know the difference), in the one i currently have
maybe i should just invert it, and make myself define a flag (a la <EnableHarmony>true</EnableHarmony>) and let the shared bit do the reference
that seems more straightforward. i think i'll just do that. thanks, ducks! 
Hm wait is that where ornithologists guild is
there is effectively no space left for mods to claim. stardew valley real estate crisis /lh
recent examples of (what looks to me like) Just Giving Up about it: sunberry village perpetually gets complaints that their location makes no sense, enya's map edit is a single tile so it can just be a little hole and even then it's in a crowded area
(no shade, of course. all in good fun!)
I think it's okay, but Im testing it now!
lmao real estate crisis for real
hellooo anyone know of a kid age GSQ?
do u mean your own children
It's a real struggle honestly, I've been thinking of what solutions could be made but it's real difficult. My brain was like "apartment building?" the train and buss frameworks are good ideas honestly but like people point out, it's off to the side and easy to forget
gotchaa
There is central station now and i tend to remember it exists because of the custom kiosk sprite 
ooh i gotta check that out! i never played with kids bc they're effectively just pets in vanilla, but that sounds interesting hmmm
there is an apartment building, but i don't think it has many clients yet
It lets krobus have a kid among other things, since I removed the hardcoding
(still have to actually make him able to adopt and/or romancable)
Both should be utilised more probably, though i would prefer if the apartments were simply their own maps like Harveys place above the hospital
i think downhill project is also courting NPCs to move in
ooh i'm gonna try that! i think i actually wanna get into playing the game again
adopting is easy, just character data edit
I'm keeping that in mind if i decide to write another one!
I'm playing around with a small NPC mod just cus it's a fun little break from my bigger mod
We should make an actual homeless NPC even linus got a tent
easy until you want it to matter, then maybe harmony gets involved /lh

..what's harmony 
i'm scared
has something changed with debug command? just installed latest SMAPI but debug in the console wont work
[SMAPI] Unknown command 'debug'; type 'help' for a list of available commands.
for patching game code. don't worry about it, i was joking about my npc and some of the code crimes i did to make her work
hi! this is my first time making a mod: my intention was to create a sign and edit the BusStop map (from SVE) but i can't seem to make it appear in the map, can someone help me?
...i remain in a state of terror
I love central station tbh, just good vibes
nothing should have changed, check your log/mod folder
how many times have you tried it? on rare occasions i get this due to some undetectable terminal fuckery and if i try it again the problem mysteriously vanishes
I did walk somehow though how to change their apartment space to just use the door as a warp to a custom map previously, I have no issue with people doing that.
If u do help it'll show if debug is available as a command
but if you just installed a new smapi it could easily be that your consolecommands mod went missing somehow
Oho, fancy! i'll keep that in mind then! Making a whole house isn't very fun to me anyways, so just going with an apartment would be perfect
OK now I know that debug is from the default CC mod (I accidentally deleted it)
same here, but usually i think it's because i typed too fast or backspaced too fast or something
Unknown command 'ebug' has come for me many times /lh
Mine is 'denig'
Guys, sorry for interrupting but coops aswell as other animal buildings are considered locations right?
Kind of, they are a special class of locations
the inside of buildings is special but is a location
What's the context
you don't need to apologize for interrupting in here. it's a chaotic channel sometimes
they can't always be warped to easily, since they have 35943785643756 appended to the names if there's more than one iirc? (random string of numbers, not exactly what i typed)
well, dangit
helloooo staking nexus rn for mods, could you send the link pls 
the irony... the park ranger not being compat with the ornithology guild... well, here's to fixing something before bugs can even be reported
It's unreleased rn
Soon™
gotchaaaa ty!
I'm working on a new game plus mod. Existing save files have to be read before the user starts a new game.
Buuut some people have had trouble opening certain save files, and they all seem to have Spacecore installed.
My mod uses the vanilla
SaveSerializer.Deserialize<SaveGame>(stream)
which fails to open those saves, so I was wondering if I should be calling Spacecore's
SaveGamePatcher.SerializerManager.InitializeSerializers();
beforehand.
in that case, your best bet is probably to ask @next plaza directly. she would know best what you need to do
Oh. Thank you!
I believe spacecore does a big transpiler on those methods meaning that you shouldn't need to call spacecore internal methods
Do you have any log to share?
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.19045.0, with 96 C# mods and 148 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
It's a log a user graciously sent me (I hope they don't mind).
Hm this SaveGameInfo file is vanilla
It's the mini save game uses to show you your farmer and farm stats on the load menu
It says the file isn't found because SaveSerializer.Deserialize() returns null when it fails to read the file, causing it to hop to the next file, which it can't find.
Yeah hrm i guess you may want to actually try and reproduce the problem with a smaller mod list
Your mod + spacecore + mod that uses spacecore save serializer
I have one such mod https://www.nexusmods.com/stardewvalley/mods/26217
You will need to go and actually enchant a scythe to see the extra stuff getting serialized
Somebody did send me their save file and I managed to reproduce the issue i.e. fail to open their save with my mod
just to check, did their save open without your mod?
because sometimes people get corrupted saves unrelatedly, worth ruling out if it seems to not be repeating right for you
@torn beacon feel free to DM me 😊
Just test it - their save opens just fine via the load game menu (I am running Spacecore + my mod)
And holy cow opening their save unlocked like a dozen achievements on steam 💀
My mod has a dropdown list which also loads save files - that's the thing that's broken.
i guess then the question is what's different between those two cases?
does your mod do the "backToMenu" and "gamestarted" events correctly?
ie do you trigger them via SMAPI'
im not really familiar w the spacecore serializer but if it's doing a patch the patch should always b there
I use GameLoop.SaveCreating and Display.RenderedActiveMenu amongst some other triggers, yes yes
Uhh... if Spacecore patches LoadGameMenu.FindSaveGames with a prefix
and if my mod calls that same method, do I end up calling the prefixed method? Or is it without the prefix code?
my understanding is that it should call the prefixed method
I see, thank you!
Dark magic that lets you do things that terrify none C# modders
also thanks discord for not updating that message was from a while ago
is there an existing framework that allows NPCs to follow you? i would love to have one NPC follow you into a dungeon to rescue another NPC
Is there an example of a machine in which the quality of the output element is determined based on the quality of the input element and the level of the profession?
There's stardew squad ofc, though im not sure if you can trigger action an npc to start following
hmm i’ll take a look at it
Another approach is trinkets
i did think about that but thought maybe that was stupid lmao
You can make an unobtainable trinket that resemble NPC and trigger action equip it with trinket tinker
but yeah set NPC to invisible then equip trinket
This you can do on dungeon entry and undo on dungeon exit
excellent
Still i think it is worth suggesting similar pair of trigger actions to stardew squad
is the author in here? i can ping them or else just leave a comment on nexus
I never seen em here so yeah nexus comment
Main advantage of trinket is that you have full control over how the companion moves
Whether this level of fidelity is needed is your choice
as in their pathing?
No as in their animation and attack behavior
oh i see
Dolphin's hatsnatcher cat is a pretty complex example you can look at 
The pathing is actually something I decided to not do super complex things on
Since I feel they are largely extension of farmer
So they either follow you or they chase after a monster/forage whatever
i’ve never actually played with trinkets lmao but that sounds really cool
could i set that behavior based on a mail flag or whatever? so the farmer could tell NPC “hey don’t go rushing off, stay behind me” and they’d just follow, or farmer could say “hey i need you to take care of all the monsters” and they attack
like in an event before dungeon entry
Yeah you can control which ability is active by mailflag
Welp.
Oh man the monseiur mammal
perfect
You can also arrange them as 2 different "level"
And decide which trinket level is equipped
The trigger action has an arg for level
that would be really cool actually if there was like “on farmer taking too much damage, companion goes rage mode and attacks/companion gets scared and runs away/etc”
So u can guard stuff in the If
Ah that one's a special proc thing, abilities can activate on farmer taking damage
sick
yeah i think i’ll do trinket if only because i can just ask you directly about things 
But tbf
This is better for perf
I don't have to explode Data/TriggerActions with my stuff
yeahhh i’m already worried about Big Procgen Map + lots of monsters spawning lol
Is this dungeon mod being made in JSON or in C#?
Ahh gotcha, I'm excited already, love me some fun new dungeons
ooh let me send some of the maps i made last night
can you have two trinkets at a time? i’m now worried about getting the rescued NPC to follow you out
i could always do it in an event but that removes some of the fun
Yeah u can
yay perfect
I think what you would do is event where you rescued them and then traction equip the rescuee's "trinket" version
that’s exactly what i was thinking as well
Also works as a "yep rescued" check
and i don’t even have to spawn him, he can just be a map tile in the first place
some of my best friends are just map tiles /lh
Mine too
How do I fix this so Morris' name and introduction dialogue changes?
Changing the sprite was easy
I thought I was supposed to link to the paths containing the data I wanted to change in a Content Patcher mod?
yes, i’m just wondering what made you think the data was stored in those locations
I looked through the data files themselves and on the wiki until I found where the dialogue and name for morris was
those are correct locations
those are correct assets nic
okay i’m glad i asked lol
Oh good
carry on
however the way you're editing the name is not correct
the issue is that those are strings to strings dicts, not strings to models
(oh and the dialogue, yah)
they're not nested under an object named Morris or Introduction
Oops
I couldn't figure out the right way to format the strings since I couldn't find a generic example
you would just use Entries, no Fields needed
and just "KeyHere": "The new content of the value"
since you’re overwriting one string:string entry
I think it would be:
{
"Action": "EditData",
"Target": "Data/ExtraDialogue",
"Entries": {
"Morris_Greeting": "DIALOGUE HERE."
}
}
Thank you for the help
I'm usually better at reading docs than this
Target field is always required when editing an asset because that's how the game knows what file you're trying to change the contents of
Don't worry, you'll eventually spend so much time staring at curly brackets you'll hate them 
or well, how content patcher knows
Odd
the change you made for the introduction dialogue is the same thing you need to do to the NPCnames patch
It might be DisplayName instead of Name
Ok
it's the same issue your other patch had. same exact issue, so same exact fix
So I wrote this basic save and warp logic. Apparently you cant warp back inside animal buildings? Is this a mobile thing only?
what do you mean?
I mean button A save/stores my location, button B warps me to that saved location.
I saved my location inside coop, so I should be warped there when I press B, but it's not warping me back there and just warping me in my actual current position
certain building interiors, like farm buildings, are instanced. they are all a "Coop" location but each one gets its own unique UUID esuqe string after it to differentiate it from every other Coop location
try grabbing the NameOrUniqueName instead of the Name of the location
https://stardewvalleywiki.com/Modding:Dialogue#Location_dialogue
how do I do to use this key <location>_<x>_<y> if my custom location contains a character _ in its name
Don’t suppose any of you guys might be able to point me towards some good advice for making a custom npc mod? This whole thing is baffling me as a pixel artist 😂 cries in I barely even understand unity
Yoooo tysm!! It's finally working
have you checked this page ? https://stardewvalleywiki.com/Modding:Index
I have been working my way through it! Just wondered if there were any other hidden gems I may not yet have found
Thanks tho! 🙏
if there is, I don't know about it
Fair nuff, I’ll keep banging my head against the table untill I understand it
type shit
!npc tia’s tutorial in particular is great
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.
-
NPCs no longer use dispositions, check the wiki page for the new NPC data.
-
Feel free to jump into the https://discord.com/channels/137344473976799233/1277457201077813280 thread for more interactive feedback and help!
-
Fireredlily has a WIP NPC Builder Please do report any errors you get with it into the NPC thread!
miss coriel is also working on updating her NPC builder but idk how close to ready it is
Update they did send me one now
I automatically ignore any messages that use emojis as bullet points
Is this the one by the people that make wikis or whatever
Valnet yeah
Ohh valnet is the screen rant people
It's a different guy tho (Edil H.)
I was thinking of some company starting with f iirc
Fextralife?
i also got one earlier and was gonna say so but didnt wanna interrupt the helping and then i forgor
Now u rembr
Ye so it's probably the same project
It was fextralife that I was thinking of
Ahhh didn't know they were owned by thrm
Now the BIG opportunity: we’re exploring paid, exclusive partnerships with top creators like YOU – where we compensate you to keep select mods exclusive to GGMods, backed by ongoing updates, promotion, and editorial support.
Do you think moddrop will like a thing called ggmods
Since they own the trademark for gmod
Imagine sending this to an email you found on github acc full of open source mods 
Please stop being open source thank u
They own gary's mod?
Nope, but gmod
gmod.com was their thing before moddrop and the trademark keeps being renewed
sorry for dropping in in the middle of the conversation
i am having some issues regarding i18n and the randomization of schedule strings now. i tried randomizing them after converting them to i18n but they're not loading anymore (only the regular season dialogue)
"fall": "0 BathHouse_Pool 8 15 0 \"Strings\\schedules\\{{ModId}}_Peiming:PeiMingBath.001\"/(blabla more schedule stuff)"
Would it hold up if it was challenged given nobody thinks of olympus games' modding site from 2015 when referring to gmod? Probably not
why does my formatting not work. i'm too tired for this
They.. have a ggmods discord
Why couldn't they discord people, that's at least a little less weird
Try patch export the schedule strings asset
Zero schedules do not support strings
Or animations
Oh, I wasn't aware!
Do a 610 point if you want an animation or a string
What does "DrawInBackground" mean?
pretty much my exact thought when i received it
[[Modding:Buildings]]
(for future reference)
i did that but i still keep getting errors. unfortunately, i have no idea what it's trying to tell me
I feel like this means you have an organizer error, or a code grammar error. What exactly are you trying to do here?
before i converted everything to i18n, i could randomize my schedule strings without any issues.
but now, the randomization is not working anymore and it's as if no schedule strings are loaded at all
"PeiMingBath.001": "{{i18n: PeiMingBath{{Random: {{Range:2,3}} }} }}" <- schedule string, the keys for the strings in the i18n file are PeiMingBath2 and 3 accordingly
"fall": "0 BathHouse_Pool 8 15 0 "Strings\schedules\{{ModId}}_Peiming:PeiMingBath.001"/(blabla more schedule stuff)"
I personally REALLY struggle with i18n
I have a question about using Alternate Textures to retexture the sprinklers to include the nozzle/enricher. I noticed that you can't actually retexture the enricher and nozzle once they're on the sprinkler, so I tried adding variations to the sprinkler retexture and I tried changing the texture size from 16x16 to 16x32 so that it would include the enricher height, but that resulted in this visual glitch where the sprinkler is a block too far down after applying the new texture. Is there any way do this properly?
make sure your \s are actually two \\ in order to escape properly
i.e. "Strings\\schedules\\{{ModId}}_Peiming"
(not clear whether this is the case in your actual file since \ is a common escape character)
i suspect it's something along those lines since the error is trying to tell you "Unable to parse string path"
the specific part looks like this: \"Strings\\schedules\\{{ModId}}_Peiming:PeiMingBath.001\"
These guys have special draw logic, I don't know if AT handles them
iirc the attachments are literally pasted on top right
if AT doesn't support changing them independently of the sprinklers then nothing you can do
Yeah, I noticed that. If you retexture the sprinkler with AT, it overrides the appearance completely, so you can't see the nozzle/enricher. That's why I was trying to add variations to the sprinklers themselves. I take it there's no way to change the size of the sprinkler texture either, then?
If u look at Maps/springobjects their "placed" texture is the bottom
I think the best you can do now is just normal content patcher retexture
Alrighty, thanks for the information. 
This would be nice if it was just trees on the farm, but I feel like it would make the wizard's forest have the light of a thousand burning suns 😂
Regarding the Pelican Valley Loft NPC Apartments, would there be interest if I made a family floor model?
So larger/expanded apartment units with multiple rooms.
Ah it is possible to limit to farm if desired
I think so! At least I would like it, gives me more space to play around with a characters floorplan and show off their personality by how they live. I think it's nice to have separate scenes, more intimate if youre making a romancable NPC
I think the apartment needs to be marketed foremost. needs a reason beyond technical ease for modders to add their character to it
Alright, if I have time over the holidays I can see about designing some additional floor options.
Well, I don't want to necessarily add a specific NPC or lore at this point, my current focus is Central Station integrations and maybe expanding the exterior landscape a bit to implement things like the fishing pond that I cut out of the original map.
It is still meant to be a tool at its core, so I don't want to add things that might mess with other people's NPC lore. ❤️
Last thing I want is for people to get the wrong idea about the apartments and treat it as a standalone expansion.
Don't stress it dude, so far I'm the only person whose straight up asked for it and I won't be making another indepth NPC for a while. But i would love to utilize your mod once i do!
I get it. then the other thing is, you've got to actively make it known. people have to know about it before deciding to use it or not after all.
It's mentioned enough here when it's needed, so I think it's fine to not go take out advertising space. 😛
fair xD
You really should hire the skywriter
I can't find what tileset the hat shop mouse is in?
If someone knows I'd appreciate some help finding it
imagine CA's reaction to find out there's active real estate marketing in the world of sdv
Have you listed your apartment on Zillow
Is there a way to make a mod that requires another mod to be installed, but that other mod shouldn't take effect?
The context is that I got permission from a mod author to publish a version of their mod that adds (and removes) some functionality, but my mod also makes a lot of changes to the logic of the original mod so I don't want the original to take effect since I think it will lead to a bunch of bugs. The version I'm thinking of publishing should completely supersede the original one.
But at the same time, I want the original mod author to get credit for their mod. In my head the best way to do that is to force people to download the original mod by making it so that my mod doesn't function if the original isn't installed, but I don't want the original to actually do anything. I feel like there might be some danger here from downloading too many mods and giving the users performance issues?
My mod is still far from being in a state to publish, but I wanted to ask this now in case there are big changes I need to make
Is there a better way to do this? Is this even a good idea? The mods are c sharp mods, not content packs
mouse is on cursors, look next to grandpa's ghost
Listing their mod as a depedency is usually the best way to do that. You can absolutely make some overriding changes to their code using Harmony patching. But regarding "breaking things" from their code, and maybe even have some incompatibilities with other mods, that's going to depend on how complex you are going with it.
Rather than your mod copying or reimplementing stuff, having your mod harmony patch the changes into the original would get you that behaviour
I think it's best to just give all your DP to original author
what's a DP?
Oh is this the opt in rewards thing?
Yeah
But honestly instead of over complicated spaget solutions you could just ask what og author wants
Yeah don't do what I do with over complicated spaget solutions, you won't sleep lol
lol yeah that would probably be easiest
Communication is what makes any relationship (not just romantic ones, also platonic or business) work. And if it doesn't work, then at least it doesn't break off as badly.
how does harmony ref work 
if i do like
func_prefix(ref somthing) where i change something
and game calls func(instance); then goes on to do other stuff with instance
is that instance permanently changed
(this is case where original func does not ref)
the original method body (and any prefixes going afterwards, or any other patches) will see the argument after your changes, as if that's what the method initially got
Yeah but does it affect the actual value passed in
Haha yeah, like if you're mutating, like _instance or anything it references it persists on that object. But replacing a parameter via ref only affects the method call, not the caller's variable
After the func call
if you're asking about whether ref behaves like ref, as far as i know yes, your changes will persist when using a ref param even if the keyword didn't exist on the original method signature
https://github.com/b-b-blueberry/CooksAssistant/blob/master/LoveOfCooking/Harmony/HarmonyPatches.cs#L135-L147
Say for example with value types, Value type (int, float, struct) -> without ref you’re changing a copy. With ref you change the wrapper slot for the original call.
imagine you have a void Method(int asdf)
in which the first line is
asdf = 3;
for the rest of the method, asdf is 3
but at the place where you called the method it's still gonna be whatever it was before
of course with the exception of reference types, and setting their fields
Time to bother people :x
@next plaza Hello!
How do I open a save file that's been serialized by Spacecore?
I've tried using saveGame = DeserializeProxy<SaveGame>(stream, path) (via reflection) after running SerializerManager::InitializeSerializers() but DeserializeProxy doesn't see to be able to read the files.
Hey everyone
I was wondering if someone could help me.
This is my first time making a content patcher mod (and modding stardew in general) and I'm running into an issue where the manifest says i have an invalid id.
Here is my smapi log
https://smapi.io/log/5e21ec4b633c452bb90e15f848dee73d
I've been following tutorials and looked through other mods manifests for reference, and everything seems to be matching up, but it still doesn't work. I'm really scratching my head on this. Is there something i'm missing?
I've also attached the manifest i you want to take a further look!
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.19045.0, with 1 C# mods and 0 content packs.
double check that you've actually saved the file and its actually the one in your mods folder, because the log indicates that its reading your uniqueid as:
CoriMods.Abigail Vanilla Edit
you're also missing the last <- nope} in the one you sent here
no they are not
is discord being stupid again
was a file upload not a code block
yup, discord being stupid again. my bad 
Yep, i made sure to send it saved
then do the second part and double check that the copy you've saved is the one that the game is actually loading, and not a copy in a different Mods folder or some other dev folder
odd
Now the tilset isn't changing the hat mouse
you're doing EditMap on an image
oops
also you're replacing the entirety of cursors which is probably not what you want for compatibility
oof
What should I do then?
the EditImage documentation should describw how to use FromArea and ToArea to specify what sections of the target you want to replace with what section from your custom image
Omfg, i feel so dumb
It's working now, thank you very much for your help
thanks
I hate writing movie theater data
idk why, I'll script up an event np, but I've been staring at the movies for an hour now
I feel like no one is going to take my npc to the movies, so why bother, but also they MIGHT and its more immersive for the option to be there
oof yeah those are hard- idek know if mine work but i can paste them here as a reference if you'd like
but i hate it
It tough honestly
I'm considering just having her fall asleep every movie and having the sleepy emote
it does suck to write movie theater stuff, especially since I never take anyone to the movies because it's so late and because of how the movies/likes/etc work
yeah.. except dwarf ofc
I did it, and I think it does a lot for immersion as you said but also yeah... few use it
and krobus
they don't even understand the movies they watch the screen flash and love it every time-
Yeah, especially dialogue for seeing different levels of liked movies for a SECOND time
CA really put depth there
..nah this isn't a blorbo related thing AS MUCH lol
wait there is??
yeah, if something is tagged as "seen_response" for ex seen_love then you can add new scripts
oh sweet!
..i am never gonna use that but good to know 
here's the reaction entry for Taro seeing a movie she loves, for the second time
oops except I need to switch that text/script around, but you get the idea
no clue how to help personally, but the ppl that do are prob gonna ask for a log
!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.
the source image is smaller than the source area, meaning your image file itself is smaller than 23x31 pixels
is your image actually 23x31, are is it smaller and you're trying to put it in a 23x31 area?
not sure why the canvas size is diff
Huh
let me recount
nope i just miscounted
its 23 x 31
can you just uploaad the image here tho
0,0 is the top left corner of the map - are you trying to put this image in the top left corner of the map? It looks to me like you might need to switch the x,y coordinates for your FromFile
What program do yall use to check the pixel/tile locations easily? Right now I use photoshop, but wondering if there is something easier before my eyes are trained to just magically know lol
I have asprite
Your image is fine, it's your code
could you clarify?
Here's the code I used to patch an area int he forest
honestly even Paint works fine for pixel coordinates
The FromArea is the image - and you want the whole image so you start at 0,0\
just an example of drawing the image versus where you place it
oh ok!
Just imagine it's your code and images, I'm only talking about the set up of the FromArea and ToArea
Thank you both! I didn't know about the program Aseprite and I think this would be useful for other aspects too so glad I asked this question, and didn't know Paint had the ability. Much faster to launch than Photoshop in a jiffy lol
Guess I got it backwards, thanks
I use paint dot net
but also debug mode in-game is really useful for coordinates
wait sorry im a dumb dumb nvm but good question
it worked
yay!!

Hm.. I wonder if there's a way to pick a random number once and then have it stay the same on subsequent patches
the docs imply you can lock a choice between three options, but I don't know how persistent htat is
(the context is I want to send a second piece of mail some random days after the first.)
v1.0.0 of my Tilesheetinator extension for tiled is now officially out on nexus! Thank you again to everyone who helped beta test it or gave feedback.
Create Stardew Valley maps that work in-game without having to copy vanilla and modded tilesheets back-and-forth, rename files with a . in front of their name, edit maps only in the unpacked content folder or make symlink workarounds.
this is such odd timing, i was literally coming in here to ask a question about pinned keys with Random
Couldnt you just set the HAS_MAIL flag in the action + randomised chance for the trigger action? Could maybe set a conversation topic but not actually add any dialogue and have it so it sends on a random day after the conversation topic has ended
I seem to recall it’s per day fixed random
a pinned key (seeded random) in content patcher uses at least the day, and maybe also the world id, as seed material (i believe it calls CreateDaySaveRandom under the hood)
so with the same key, a given random will return the same value on the same day. but the next day it will reroll

could i use pinned keys for this scenario? i have three doors, two of which have a monster behind them, one of which has a reward. i want the reward to be behind a random door each time
yes, as long as it updates often enough!
the content patcher docs even have an example on how to do things like this
i'd be fine with once a day, since i doubt people will be grinding this dungeon
yeah i saw the haley/abigail outfit example but wasn't sure if i was understanding its use
(also congrats on the tilesheetinator release!)
but i'd have to add the warps in json not tiled i guess since tiled doesn't know CP tokens
hmmm EditMap better happen before spacecore setpiece spawning...
sorry i'm kind of thinking out loud lol i'll go talk to my rubber duck
(also @lucid iron @vernal crest I made a !tilesheetinator command for the extension now so you can both stop shaking your heads at me
)
yessss
Does spacecore copy map property
docs say "randomized map patch" so i assume no
That seems.. hm. Well, I could. I do not think that actually meets my use case.
but that said, it doesn't need to be random
I'll just pick a day.
Well.. maybe synced_choice would work
May anyone would share my mod at #mod-showcase please?
is there AI? i can showcase but not if there's AI or NSFW
oh thats ai made
ah yeah that's against this server's rules
i undedrstand sorry for my request
It’s in the pins, in case you want to see
all good
(and if you're interested in learning how to remake this mod without AI, the people in here would love to help!)
hm. Today's new note: you can't use random tokens in config schema's default.
was hoping it'd work, but tbh, I wasn't sure it would
C# pros there, I need some minor help.
So I made a flag that prevents the WarpPlayer() from firing WHEN the player bought an animal in the actual vanilla shop, it SHOULD only fire WHEN the menu is opened through the mod. Buth for some reason, the WarpPlayer() is still getting excuted when I bought an animal in the actual vanilla shop
I would track if it's actually being set to false generically
from what I can tell, you check if it's false before setting it, too
i'd set it somewhere in your mod, and call on that as a first step
@cold cypress - Gen-AI content, including mods, cannot be shared or posted in this server.
https://smapi.io/log/47cbc785063b469995cb74c128799024
spawning.json including tractions: https://smapi.io/json/content-patcher/d93e89f1cbd74a298a5c095b71ad2058
dungeon.json: https://smapi.io/json/content-patcher/11335d7028b645f3ad813a496b5d6aa2
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.22631.0, with 20 C# mods and 2 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
is this one error leading to many errors, or 2+ different errors?
i can send my maps if needed also
is your map name actually Maps/DollHouseBlank without a mod ID prefix?
lord of course it's that stupid
thank you
i feel like when i do really complex things i mess up and typo the most basic stuff lol
okay the map error is gone but the traction error remains
(and the dungeon map is the blank version, it goes without saying)
is it the same exact traction error? have you closed and reopened the game/save
dont know if patch reload would be good enough here
i'll close/reopen
https://smapi.io/log/1a00776f592248e7b5b8ae7589b488ac reopened, new save
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.22631.0, with 20 C# mods and 1 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
knowing very little about C#, i almost think it's not able to "fit" the pieces?
the CanItemBePlacedHere is what makes me think that
tbh i thought itd fix the traction error too lol. the only two reasons i could think of for that error in isTileOnMap (the highest function in the stack trace is where it failed specifically, so CanItemBePlacedHere is less important) is if the map doesnt exist or the position its checking doesnt exist, but i also was unable to spot a place in spacecore's code where it might accidentally send a null vector to check
i wonder if there's some sort of coordinate issue? i also noticed when i warped in that i was placed out of bounds
but i figured i just messed up or forgot to fill out that field
i would give each of your coordinates in that big comma separated/slash separated list of rectangles a double check
and see if you're not accidentally defining a rectangle thats out of bounds
will do
oh shit that's what it is, i'm one tile too short vertically
(idk how, considering i copied the map then expanded it, but oh well)
embarssing: "Hey, my mod isn't working, it patches Data/MailData..."
(I spotted it when I thought about it, but that was after the first nine testing passes.)
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.22631.0, with 20 C# mods and 1 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
typoed mistakes are the worstttt
maybe i can try getting rid of the Back layer?
if the trigger action to send it already fired then it won't send again unless you reset it or test it on a new save
afaik every map needs every layer
Back still exists i just meant erasing the 80x80 square of back tiles
regardless it didn't work sadly
i did find a cake though??
idk how spacecore spawnables work enough to troubleshoot it further unfortunately
no worries, i appreciate the help
i know i'm in uncharted territory lol
i might ping casey tomorrow if nobody else knows
maybe try testing with just one rectangle for simplicity
in the setpieces traction?
i set no trigger action for the first, since you're supposed to get it as soon as the mod is installed or day 1
that's why I'm acutally assuming I need to progress to next day

