#making-mods-general
1 messages · Page 289 of 1
i see nevermind im stoooopid
div it by 3
Well nothing's gonna fix you making it a square if it needed to be a rectangle, but I'm a little confused- OH right the collision
im just incredibly dense lols
right i see
figured this out - apparently any schedules that aren't set to a full day (i.e. marriage_mon vs marriage_14) don't actually use the 'funleave' dialogue
the full day one works but the individual day of the month does not
are you using C# to make furniture?
yuhhh
Interesting... unfortunately I can't help there - I only know how to do it using Content Patcher and Furniture Framework :L
ahh dw ^_^
post the entry? I think your bounding size or collision is wrong
this is the delim string LogBook_LogBook/decor/2 2/2 2/1/10000/-1/LogBook/0/Mods\LogBook\LogBook
its a 32x32 texture, making this a 2x2 no?
and post your png? just in case
hm... it apparently also does not work on fridays? 
hmm both the code and the png looks right.
uhhh try changing decor to other?
it would be SOOOOOOO easily fixed if i could offset the y by -16 xD
okeee
if this fixes this imma be very sad lols
yes that works
thats crazy
Just furniture things
but the retro dresser is 2x1 so i actually think i can probz change the bounding box to that? idk
but in the files its just -1 so i might be able to do that...
-1 means use the default for the type
other has no default I remember
collision to 2 1 should work
hmmm oke
btw hating that i gots ta reload every god damn time
hot works, y'all are incredible ty for the help ❤️
!reload are you aware of the assorted live reload options?
- Content Patcher pack: enter
patch reload <your_mod_id>in the SMAPI console window. This will reload and reapply all your patches (but won't recalculate theConfigSchemaorDynamicTokensections if you use them). - Translation files: enter
reload_i18nin the SMAPI console window. If it's for a Content Patcher pack, also runpatch reloadafterwards. - C#: see the Visual Studio hot reload or Rider hot reload feature.
Hey again! I’ve asked this question about curse forge before, and now I’m wondering about moddrop. Is it a good idea to post my mod on moddrop as well, when the time comes? I briefly tried using the platform, and found that I really disliked it, but I don’t know if there are a sizable amount of players that mostly use that platform over nexus.
Very few users use it imo
The only bright side is that mod drop has automatic mirroring from nexus
If you don't like it it's probably better to just stick to nexus. It's less work on your part too
Tbh - I recommend not looking at download counts
I think as long as I don’t set my expectations too high, keeping track of the downloads should be fine.
ModDrop just runs... badly for me
And the time I went there for some reason and it kinda ran, there was a page of like... one time was just a page of stuff that clearly wasn't mods? Like a picture of some guy's dog or a meme.
moddrop is mostly just kind of annoying to use
dunno what's going on over there
I used to upload there but stopped because it was a pain in the butt
For a while, it'd just do the loading stardrop and then NEVER LOAD
i think if you have the bandwidth, it's thoughtful to host your mods in at least one freely available place (e.g. moddrop, or github) so that people who can't or won't make an account (for nexus or otherwise) to download your mod can still get it.
however, most people don't do this and it will probably help like a single-digit number of users, so you absolutely don't need to
I would recommend github releases as a mirror for nexus if you already have the source there
You don't need an account for the Nexus
yes you do
yes you do
(fwiw, you do on moddrop for >1gb downloads too (maybe not quite 1gb but definitely "large"))
huh. I could have sworn you didn't need one. ignore me
ok but you have to try to hit 1 GB. like upload a ton of wavs for some reason, even though ogg is right there
mhm
Got it
That’s why I’ll probably upload it to curse forge
I would not
Oh I see, you can download them up to a minimum of size without an account
Uploading ransom three dimensional models
i would choose any site other than curseforge, honestly
not many people use curse for stardew, and it has a generally negative reputation, so if you only post mods there, you're not likely to get much traffic
Oh… is there a reason? Last I asked about this, people seemed to think it was a fine idea.
Dual posting, that is
I don't really mind nexus being account locked but eventually i do want to setup auto gh releases
Dual posting is fine, but I dunno about CurseForge for it.
curseforge has earned its bad reputation through sketchy/scummy business practices and (politics) ||loathsome political decisions||
Yeah ModDrop has just been really flaky about taking down weird spam mods that flooded it... also performs badly at random. In contrast, CurseForge is gross
if those are your options, maybe go Moddrop
NexusMods with ModDrop as a mirror is pretty common, I think
you could also mirror it on the stardew forums
Curseforge is hemorrhaging users at the moment because their bad practices have kicked off another exodus, so better to avoid it anyway even if the rep didn't bother you
not many people browse there, but there's still some stuff, and it doesn't have a bad rep the way curse does
there's also your very random sites like moddb (https://www.moddb.com/games/stardew-valley) /hj
oh moddb has stardew now! I was wondering if that would happen
I'm trying really, really hard (pinky swear) to find the right UniqueID for the Selph Aquaponics Pond building so I can edit the building cost using content patcher but I'm failing miserably.
[Content Patcher] Can't apply data patch "(CP) Stardew Valley Balance Overhaul - Continued > Include mods/Fish Pond Aquaponics.json > EditData Data/Buildings" to Data/Buildings: there's no record matching key 'selph.Aquaponics_AquaponicsPond' under Fields.
Looking through the source code (https://github.com/zombifier/My_Stardew_Mods/blob/3658a91f5a6ac182597705d263e8fc64eeef3d26/Aquaponics/ModEntry.cs#L130) on github doesn't really make me much wiser
AquaponicsFishPondBuilding = $"{UniqueId}_AquaponicsFishPond";```
(Hoping Selph is still lurking but would accept any help)
The reason I’m considering curseforge is because that was the first place I went to find stardew mods, since I came from minecraft modding first, and I feel like some people might be in the same boat.
It was a bit annoying that I needed to make a nexus account at first. It may reach people who are less knowledgeable about where to find there mods.
what on earth
oh wait, I was thinking of thunderstore not moddb
there's also gamebanana
just read the manifest
you referenced selph.Aquaponics_AquaponicsPond but the name is selph.Aquaponics_AquaponicsFishPond
note the extra Fish
I think Minecraft is the only game on earth that's stuck on Curseforge mods, and that's because they used to have even worse options as default. Those damn links that had ads in them
god I don't miss modding Minecraft
do i check for the tile type at cursor position to check if the player has used the action button on a custom furniture?
I mean, even then, a lot of people are pushing hard for modrinth
a lot of minecraft is modrinth now
I swear i tried that multiple times (but I probably didn't)
Well good for them, be free of the curse
oh, my edits to Data/Buildings also runs Late + 1 to make sure it runs after mods like Fish Pondering
what specifically are you trying to do?
how does iridium have 80 downloads??
you might want to be even later lol
i registered a new furniture that i want to trigger a function when used
why not use event priority instead?
anyway, what I mean is: Nexus has mods for a metric ton of games and has since... god, I dunno, when did Oblivion come out? like fifteen years? CurseForge is basically a Minecraft main place that's hemhorraging users. I feel like it's a bit backwards to think that using CurseForge would draw new people to Stardew mods
I mean, maybe ...three new people
[Content Patcher] Can't apply data patch "(CP) Stardew Valley Balance Overhaul - Continued > Include mods/Fish Pond Aquaponics.json > EditData Data/Buildings" to Data/Buildings: there's no record matching key 'selph.Aquaponics_AquaponicsFishPond' under Fields.
you have two options. You can use spacecore or calcifer to trigger a tile action when the furniture is right-clicked, and then register a custom one, OR you can use harmony to postfix/prefix Furniture.checkForAction
because Fish Pondering also used Late
it's an enum IIRC, so you can do math and casting on it I think
oh I see that's what you did, I misunderstood
im not opposed to a harmony patch and would rather not add any additional libraries if i can help it. also preferred not to harmony patch but it is what it is. ok thank you
see my response above. try making your edit Late + 2
I’ll have to look more into the hemhorraging users
but
if you need any more help, feel free to ask!
If I’m going to dual post with nexus and another platform, it honestly looks like all of the other options are undesirable anyway. Moddrop, like I said, also looks like it is kind of bad
I feel like it would be picking a lesser evil, regardless of what I go with, in the hopes of reaching just a few more users
parcy did you say you have it on github?
yes
put it on github!
github makes a great mirror, and you can even get update checks for it
You have a GitHub? Well heck, there you go
👀 do you have tutorials/articles on doing this?
Sorry, I didn't that that would cause this specific error message to go away. It should still recognize the id, no? Even if it's overwritten by something else
the issue is that when your patch runs the entry may not exist yet
because it only runs later than your patch
https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Update_checks scroll down to the row in the table that says "github"
thank you! definitely going to take a look at this
Sorry if this sounds stupid but I haven't used priority before, should this work?:
"Action": "EditData",
"Target": "Data/Buildings",
"Priority": "Late +2",
"Fields": {
"selph.Aquaponics_AquaponicsFishPond": {
"BuildCost": "10000",
"BuildMaterials": [
{ "ItemId": "(O)388", "Amount": "100" }, //Wood
{ "ItemId": "(O)335", "Amount": "10" }, //Iron Bar
{ "ItemId": "(O)338", "Amount": "5" } //Refined Quartz
]
}
},
"When": { "HasMod|contains=selph.Aquaponics": true, "Fish Pond Aquaponics": true, "Buildings": true }
}```
I guess because I still haven’t gotten used to github, I feel tired when thinking about setting it up, though it is a good idea.
The one other reason I’ve thought of when it comes to posting on sites like curseforge, is that if I don’t post it there, someone else could, and unless I’m checking all the time, I and the users there would be none the wiser.
think so, give it a try
I did and it's giving the same error
weird
do you see the building when you patch export Data/Buildings
I'm not sure why anyone would post Stardew mods there. Until this second, I didn't know anyone did. But "I need to post it everywhere so nobody else does" is maybe a little misguided?
You think so? There are 900 stardew mods on curseforge. Not a lot, but enough that some casual modders might never look else where
Well if you are worried parcy you can setup curseforge to sync from nexus
I mean it does happen that people's mods get reuploaded on curse and moddrop without permission
Psure lefauxmatt does that
yes, and also this command was incredibly helpful, didn't know you could do that so thank you!
That does seem like the kind of place you'd upload something without permission, I suppose. I wouldn't say it recommends either site :V
I don't think i would care that much if someone repost over there cus it's open source anyways
That was what I was planning on doing, but now I’m being told should possibly rethink it
Honestly, someone can always just upload your stuff someplace you don't control. Even if you upload your mod there too
Same, it doesn't really impact me whether it happens or not
people can kinda just be dicks
I think the prevailing argument is like
You should probably post your mod on the site that has 30k sdv mods
And thankfully you can auto sync your mod to the site that has 900 mods
I just don't wanna post on a site that donates money to crapass political sources. If someone else does, that's thir problem
Yep valid choice too
but you really just can't control every source someone might upload your stuff
So upload where you want, don't upload preventively
Because of the auto syncing, I may end up doing both cursforge and moddrop, even though I wish everyone was just on the same page by using nexus. It may or may not be worth it, but I won’t really know that unless I try.
I think you are probably right about uploading preventively not being a good idea, though, because that kind of thinking will never let one rest. I can’t let myself get anxious over it.
Yeah, part of modding is, ngl, anxiety management LOL
the vast majority of people do just use nexus
or naver, but that's a whole other can of worms
It's like putting art in public, gotta keep the brain demons in check
tip: do not dwell on endorsements, it is the number that will make you saddest
that is weird, I wonder if CP and C# priority editing doesn't play nice with each other
They should tbh
Yeah, I'm obviously no expert but it didn't feel like my attempts were that far off
Do you think there's something else I could try or is it simply an issue of incompatibility between the two?
there has to be a solution, we're missing something
!patchsummary
Can you do these steps to provide more info?
- Load your save and view the content that should be patched.
- Type
patch summarydirectly into the SMAPI window and press enter. - Upload your SMAPI log to https://smapi.io/log (see instructions on that page).
- Post the log link here.
if i broadcast an event to all players, do all players get that event marked as seen?
i hope so! but i don't know offhand
hmm okay
All currently online players
i'm struggling with how to implement a plotty storyline in multiplayer. it should logically only happen once universally with any or all players contributing to it, but i'm also concerned about hypothetically leaving any players behind/out of the loop
an event gets marked as seen as soon as it starts, so as long as a player loads the event in it should get marked. i don't know any exceptions to this
in that case, is there some other like "global" variable i could trigger, so that i could then give every player a quest?
wait yeah i can just have it dependent on the host having seen it, right?
probably some mix of broadcast events, judicious use of target player checks like Host/Any/All, and maybe some special events that play only for players who missed a broadcast event to bring them up to speed somehow?
or trigger actions for said players to send them mail with the cliffs notes. something like that
mail is much easier to write than events that's true lol
okay wait here's a question that may help me understand multiplayer events. logically shane would only get sober once, right, but that's tied to heart level. can player 1 have 0 hearts with shane and have him be an alcoholic, while player 2 has him at a higher heart level and sober?
i don't play multiplayer very much and you can tell
Yup
interesting okay
so i should focus more on the emotional beats of the plot line rather than "noooo it doesn't make sense for him to be both at once" for example
In general, multiplayer treats NPCs as if player 1 and player 2 are different NPCs and can be at different states as far as events are concerned
The main exception is schedules/home which host controls
home meaning the farmhouse? like its upgrades etc?
Think Leo, hosts state with Leo determines living on the island or being in the treehouse in the valley
ahh gotcha
Being married/roommate is also global state though
that's actually a good example because the end result of this storyline is whether or not an NPC is visible, so it might be simple to just have everything dependent on host and then broadcast events where i can
The intro to Leo is a broadcast
And Leo has some vanilla hackery that I don't think mods can use still, where you can talk to Leo and "remember" heart events that you have unlocked but can't easily access anymore due to the other players state progressing his story
oooh that would be excellent for me to implement whenever that becomes accessible through CP lol
If someone wants to use it I can expose it as a mod
I already have a fleet of multiplayer only mods
i don't want to put more work on your plate, but i would be very interested!
the character i'm dealing with (spoilers for the tv show dead boy detectives) ||dies in the last episode, but word of god/fanon is that she survives somehow but changed.||
so i had an idea that a way to introduce her is for the farmer to undertake a series of quests to conduct rituals and stuff, ending with her becoming visible
and it would be awesome for the other players who maybe missed it to have a "here's what you missed on glee" moment for those lol
from Strings/Characters
"Leo_Memory": "Hey... I was just thinking about that time, back on the island... Do you remember?",
"Leo_Memory_Answer_Yes": "Remind me",
"Leo_Memory_Answer_No": "I'm busy",
"Leo_Memory_6497423": "When we talked about your home?",
"Leo_Memory_6497421": "When we talked about birds?",
"Leo_Memory_6497428": "When I decided to move?",
Theres a bunch of rules dictating when this triggers
I don't think the wiki even documents this functionality of leo as its quite esoteric
You can "just" have an event on farm where the conditions are "host has seen event X, but current player has not"
There are plenty of ways to deal
Or a mail with the same idea
I wanted to make a framework to expose it years ago, but didn't commit to building it as I didn't know if it would be used
or if pathos wants to do it in the 'upcoming game version' instead
Just nerdsnipe someone else about it 
in a week or two I might actually be playing stardew again, so mods being multiplayer friendly is something I have a vested interest in
and happy to park my debugger to persure my more important interests
Yay! So you'll be back in the optimization mines!
I was in the optimization mines anyway 😛
I've been going through scarletts log as a reference to uplift my modlist, only up to the letter L in the content patcher packs
so I should have similar performance characteristics that I can breakpoint debug directly rather than throwing profiler content packs over the fence
Good luck!
(Work has moved back into crunchy mode. Which I don't mind - i enjoy it - but it does mean I'll be a bit snacked on.)
also got the parts for a new computer I need to get around to assembling which should vastly increase my ram speed and hopefully shake out some weird windows performance issues my rig has
Alright, is someone good at transpiler patches and can save me? 
my skill level is debateable but what's up
I am trying to replace this if in JunimoNoteMenu.setupBundleSpecificPage()
Literally replace it with a condition of my making. I want to keep both branches intact
let me look at my IL decompile
I would like to replace it with this
Which is a Public static method in my injection file
IL code looks like this:
// [1335 7 - 1335 37]
// IL_0011: ldarg.0 // this
// IL_0012: ldc.i4.1
// IL_0013: stfld bool StardewValley.Menus.JunimoNoteMenu::specificBundlePage
// [1336 7 - 1336 31]
// IL_0018: ldarg.0 // this
// IL_0019: ldfld int32 StardewValley.Menus.JunimoNoteMenu::whichArea
// IL_001e: ldc.i4.4
// IL_001f: bne.un IL_00b2
So far I've identified that IL_00b2 is the label to the else
you won't need to change the labels
so I need to change IL_0019, IL_001e and IL_001f, to do something like call my method if false go to IL_00b2
So far I have like... this
trying to write the first yield return line
but I don't know how to generate an instruction, and how to reference the original this
MatchStartForwardto match the 4 instructions (ldarg.0throughbne.un)- you can either replace the first 3 instructions with a no-op or insert a pop after the
ldc.i4.4instruction to get rid of what vanilla does and have a clean stack for your condition - insert a
ldarg.0instruction and acallinstruction to your method right above thebne.uninstruction
I don't think the bne.un needs replaced with a different opcode but someone may correct me on that
i'm reocmmending you use the CodeMatcher library
Where can I find this?
i'm getting a link hold on
I'm not getting a hit on nuget
You might as well replace it tbh
it's part of harmony
The world of Harmony is a bit of a lawless land, but it's incredibly powerful. You can pretty much implement anything you want, but you can also break anything you want. With that in mind, you should begin by reading the main wiki's intro to Harmony to get you set up. This tutorial will focus on the...
this tutorial page has a simple codematcher example
so im not sure this is really the right question but here we go I guess (gods I hope this is the right play to look for help on this.) and sorry if im interrupting ;
hopefully content patcher things alone is within scope for the channel if not sorry for the textwall.
im trying to replicate standard pig digging behavior (chance for extra produce is scaled based on the animals friendship) within the ExtraAnimalConfig mods ExtraProduceSpawnList which it does not natively support for output items assigned to the DigUp harvest method so im trying a hacky solution to get somewhere close for a custom farm animal (technically a personal edit of an existing mod[bad practice I know, might eventually convert it to a separate content pack somehow]) that digs up multiple different items im working on not using standard produce slots for this due to that resulting in digging up exactly one thing on a given day when the hope was effectively 'rerolling' the season based table of results per dig. with all that in mind, im working from the condition field for each produce item trying to figure out if i can even access the animal in questions friendship data to augment the RANDOM gamestate query rather than assigning a static value.
asking here mostly because im neither sure what im trying to do is even possible or if im missing something obvious to accomplish what im after.
this might have a syntax error or two with the op codes but this is the general idea i would start with personally
var matcher = new CodeMatcher(instructions);
matcher.MatchEndForward(
new CodeMatch(OpCodes.Ldarg_0),
// you can also match the operand here if you want but i've ommitted it
new CodeMatch(OpCodes.Ldfld),
new CodeMatch(OpCodes.Ldc_i4_4),
new CodeMatch(OpCodes.Bne_un)
)
.SetOpcode(OpCodes.Br_false) // replace the bne_un with a br_false
.Insert(
// should insert directly above the bne_un instruction since your cursor is on that instruction
new CodeInstruction(OpCodes.Pop), // clear the value of this.whichArea from the stack
new CodeInstruction(OpCodes.Pop), // clear 4 from the stack
new CodeInstruction(OpCodes.Ldarg_0), // load this onto the stack
new CodeInstruction(OpCodes.Call, <your method>) // call your method with "this" as the argument
);
return matcher.InstructionsEnumeration();
None of my transpilers use codematcher or any helper/wrappers
replacing the first 3 instructions in the match statement with no-ops is also an option
i mean that's totally fair but i think it's way more intuitive if you use codematcher which is why i recommended it
What exactly is an "actor"?
In event code? Is the various characters that will appear in the event.
big L from codematcher
just go for the SetOpcodeAndAdvance and then Advance(-1) to move your cursor back one i guess lol
oh there is just Set
I can see that it is somebody's name, like Shane or Maru. But how does it tell what sprite sheet to use? How does it know to, say call Shane's regular sprite sheet or his joja mart sprites, or Maru's regular sprites versus his note sprites?
this is an option, although I think you'd need the existing label at that location to do this
you'd need to save the operand of it before editing it
This is the right place to ask this kind of question, but you’ll need to wait till someone who is more knowledgeable decides to answer. I unfortunately am not that person.
^^ is all good. honestly was starting to worry i tossed this in the wrong place and made a fool of myself.
So this won't work?
the brfalse instruction requires a label as its operand. if you look at the bne.un instruction in the original, it has an operanad
so if you null it out, you'll be sad
there's also this option even if it's kinda hacky
If you get no luck with this question now, don’t worry, because even though your question will get buried by others, you can ask it again later.
it's also worth noting you want MatchEndForward if you want the inserted instructions to go right before the bne_un. MatchStartForward puts ur cursor at the Ldarg_0 whereas MatchEndForward puts it at the Bne_Un
it's my own fault for saying two different things lol
Actors are still an NPC instance (with the location of the event) so if the code flow gets to the appearance system then it would do the joja outfit if it's in the joja map etc
very true. if nothing else gamestate queries seem to be the biggest source of confusion in this whole process. and also pivotal to actually making the game do what i want from the content patcher side of things.
There's no GSQ for animal friendship, unless some other mod has made/will make one.
Cool cool. That answers the core of my problem.
Trying to do something that cannot be done out the box
Even if it existed I somehow doubt it makes any sense to try using the result of a GSQ for input to a different one
Huh, spacecore throws an error on tile action triggers added specifically to the sewer
But the trigger itself still works
@rigid oriole It worked! Thank you so much 
woohoo! having fun transpiling
It is indeed so much easier to use the CodeMatcher class than manually interacting with the IEnumerable
i did feel a bit bad asking you to throw out your manual transpiler, i just thought this might be easier to debug/maintain
it massively is
honestly, my mod has literal hundreds of prefixes and postfixes, but only one transpile, that was written by someone else who PRed it to me (ironically, in that very same method). I started from what they had done, hoping it would let me understadn what is going on better
now I have two lmao. One complicated one and one simple one
hundreds is crazy, what are you building?
Archipelago
ah i have heard of that one lol
peeked throught he mod page and it looks very extensive
I've been working on it for about 2.5 years now, and I'm not alone lmao
We are 2 main devs, plus 4-5 minor contributors, and that's all excluding the massive team that created Archipelago Core in the first place (my mod is just... Stardew's entry into Archipelago. Archipelago supports hundreds of games, all made by different people)
hmm the extra produce based on friendship should apply to DigUp in ExtraProduceSpawnList as well
it's big 
This CodeMatcher thing does make transpiles much less intimidating though. I might consider them more in the future
I do remember some NewDay() related bullshit that could surely be simplified a lot
i have some manual transpilers from before i learned codematacher and i'm afraid to touch them
i think i will rewrite them only if something breaks them and i can't figure them out 
admittadly, the way i phrased it in my original post was inaccurate.
i for some reasone assumed itd reroll the produce between digs instead of digging up to an average of 3.
if you want to reroll you'd use only one item and then add an entry for that item to AnimalProduceExtensionData
for example, configure your pig to dig up only mushrooms, but in AnimalProduceExtensionData change the item query for mushroom to return a list of items instead
adding multiple mushroom entries to ExtraProduceSpawnList would make it dig more than 3
right... id seen that item query field in the docs. im not totally sure i understand the query format enough to actually achomplish it. since in this case its like 46 options delinated by season. huge queries are miserable.
if nothing else confirms i was on track previously before giving up on making the query work
have you seen the example for "Pigs dig up random minerals instead of truffles"?
basically, pigs only dig up truffles (430), but you then edit AnimalProduceExtensionData to replace 430 with something else
i know its meantioned on the nexus page. but is there actually a code example in the github?
yes, scroll down on the README
(side note, yes the API is kinda terrible, but I swear it makes sense when I weaved it into animal data at the time lmao)
honestly its been fine neough to use.
facepalm
those examples are in drop down boxes.
ive been working with the readme page for weeks and im only now realizing it
for context im working inside Pokemon Ranch's custom animals to give some of its less exciting animals more distinct purpose.
specifically in this case Lechonk and the Eevee, Vulpix and Combee families.
i feel decidedly not smart that the method i was after was basically right there from the start.
Welp, back into escape character hell i guess.
this is probably the scariest thing I've ever written (added just now)
man these feel extremely cursed queries. though thats probally just me finding queries intimidating. also i guess my work has been good for something detailed documentation is a modders best friend. figured for my sanity rather than trying to jam all the season/weather conditioanlity into the query entries it was better to split it into 3 pools for the seasons
do you want me to add an ItemQueries field where it's a list that goes top to bottom and picks the first one that matches to make things easier
i mean. odds are something to streamline variable outputs would be ideal. the query system as is only really stays clean if your picking items of a specific tag rather than a more static list.
I'll think of something, though expect some time before I release a new version (I'm hoping to bundle a couple more major changes, mostly on the backend though)
Fair enough.
Honestly I'm just impressed you responded at all with intent to update things at all in response to my question/sharing
Ultimately your help with this has been greatly appreciated Selph
Oh, one more big question for you Selph while your around.
Does ExtraProduceSpawnList support the Deluxe produce array the same as the default produce?
Asking only because it's not super clear in the docs
it doesn't, but you can use the min friendship condition
true.
just figured it should be known that it was a confusion of mine from reading the docs.
(I got lazy and don't want to replicate the super complicated friendship math when min friendship + random will do just fine in most cases)
(but let me know if that's super important)
its one of those, matching how the game handles it would be preferred but as you point out min friendship + random covers well enough.
yeah, my opinion months ago (remembered just now) was that 3 or so entries with random + min friendship to simulate the curve > filling in two hard to understand magic numbers
admittedly the two magic numbers are fewer lines
Does anyone have an example of adding gift tastes for modded items? I thought I was doing it right (and it WAS working...) but it's not anymore
they should just be similar to vanilla items right, or is your question about editing in new entries in general
"Operation": "Append",
"Target": ["Fields", "Abigail", "3"],
"Value": "{{ModId}}_FossilizedStardrop {{ModId}}_BlueFlameShard",
"Delimiter": " "
},``` specifically something like this (im copy pasting a smaller code snippit to not like.. flood the chat)
but instead of for Abigail it would be for my npc
it yells at me saying 'AngelOfStars.Mrqifriendable_TheMrQi' has no value, so field '7' can't be modified using text operations. and similar
You are putting your TargetField value inside the Target field
I don't... know what that means
(also why was it working before and now it isn't? that feels like weird magic)
You need both Target and TargetField. Right now you're not telling it to actually find the Data/NPCGiftTastes asset.
Although since it's for your own NPC, why are you trying to drill down into a specific field instead of adding your modded item to your original gift tastes patch for Qi?
its not my modded items
i think this should explain it a bit better lol, it's for specific mods
i realize i probably don't need the conditions for the relationship status in the other entries, idk why i did that
again this WAS working, i was actually in the process of testing something completely unrelated when I realized it wasnt 
did you recently start a new save for testing the other things?
I did start another save to test other things yeah but when testing the gift tastes I also started a new save for it 
that was a while ago though
i just asked bc i wasnt sure if the Hearts token would return a value if you havent met an NPC yet
see that's what I thought it was too actually
bc otherwise you have no gift tastes that are conditionless
but ive slept a few times since meeting him and it kept doing it
i would try removing the conditions from the first gift tastes edit anyway
you know button that just might have been the issue
i literally dont know why i didnt notice that before though? I was testing it on new saves
¯_(ツ)_/¯
wack
it worked though so yippie
how has no one reported this as an issue...
im... you know what, its fine, im not gonna question it anymore
you know, it's probably exactly the same as how I didn't realize his 'given gift' dialogue for dating wasn't fixed to account for the new randomized options. I am... very good at this 
I remember a SMAPI command that let me refresh my mods while the game is still running so I don't have to constantly rreload Stardew Valley. What is that command?
!reload you cannot add new mods without restarting however
- Content Patcher pack: enter
patch reload <your_mod_id>in the SMAPI console window. This will reload and reapply all your patches (but won't recalculate theConfigSchemaorDynamicTokensections if you use them). - Translation files: enter
reload_i18nin the SMAPI console window. If it's for a Content Patcher pack, also runpatch reloadafterwards. - C#: see the Visual Studio hot reload or Rider hot reload feature.
with only frameworks(aka no .dll in my mod), can i make a mod that either has small buttons(textured if possible) around a menu that when clicked teleport you to a location, or a list of things that you can click and each one opens up a menu of more things that when clicked teleport you to different location,
(for both) preferably a configurable key you press, or an inventory button you press to open it
adding new keybinds or stuff to the menu needs C#
I think you're limited to map tiles and trigger actions without it
a map tile opening to a list of destinations for example is vanilla (via the "minecarts" system, which don't have to be minecarts)
what is a trigger action?
is there a way to make a minecart menu have categories?(like you click "farm" or "town", and if you click farm you can go to greenhouse, farmhouse, farmcave, if you click town you can go to pierre's, clint's, etc.)
don't think so
MMAP does have a nested question dialogue thing to simulate nested menus, and then you can have each entry trigger a warp action: https://github.com/Mushymato/MiscMapActionsProperties/blob/main/README.md#mushymatommap_questiondialogue-question_dialog_id
it is a tile action however, so it has to be a map tile, or with frameworks like SpaceCore/Better Crafting triggered by interacting with a furniture item/big craftable
I found the issue with the spriteswap mod I was using: the new spritesheet and the target spritesheeet to modify, despite having all the same sprites of all the same sizes, had different canvas sizes. As in, each individual sprite was the same size and they were all spaced evenly from eachother, but one of them had a bunch of unused white space on the bottom of the spritesheet. Would this affect how sprites are called during animations?
Hello, I've been puzzling over this for a while now, trying to figure out how to get that torch light effect on an item... but the only lead i've got is something called SharedLights??
its actually a trigger action too now
altho i guess i can be the one to add interact method forwarding 
what u can do with minecart is like
setup several networks of minecarts
use mmap question dialogue to pick what network to use
If the original has more sprites than the new one and the mod calls those additional sprites, you'd see the NPC go invisible during those frames but it won't affect any of the frames that are higher up on the sheet.
but i think actual C# mod would be a lot nicer here
no, it's the same number of sprites. The only difference is one of them has more white space on the bottom of its image
Looking at the original and the modified spritesheets, its the only difference I could see.
Then that shouldn't be affecting it. I didn't see what issue you were having, I'll read back.
Ah, the wrong sprite during an event.
I didn't really explain it here.... honestly it pertains more to SVE that stardew vanilla, it's a mod for the SVE characters
But, it actually did work!
That's all I needed to change
What did you change?
I added blank canvas space to the bottom of the new sprite sheet. The "correct" sprite sheet was 64x480, and the new one that was improperly sized was 64x415. I added blank canvas to the new one until the canvas matched
and now, the correct sprites are being called.
is it possible to add a MMAP question dialogue that is only accessible(either doesn't show up or doesn't do it's action) if you have gone into the secret woods?
Were there any sprites below the white space?
The fact that the new one wasn't a multiple of 16 was probably the issue
Ahhhh, yeah, that would do it
no, there wasn't
I understand what I did right, but now I'm curious as to why it works now, and now before. I understand that animations are referenced in rectangles of 16x32, but.... how would the new sprite sheet not being a multiple of 16 affect it?
you can gate a map patch (including adding a tile action) behind CP's HasVisitedLocation condition
the question dialogue asset natively supports Condition
nevermind 
Question (string, empty): Question string to display, or none.
Speaker (string, empty): NPC name of speaker.
Condition (string, empty): A Game State Query to determine if this option is enabled.```
so u use PLAYER_VISITED_LOCATION on the QuestionDialogueData.Condition
Not sure why it cut off the heading but that's for QuestionDialogueData
i want to have a dialog that has a number of options based on the number of vanilla buildings you have entered
so u can gate the whole thing and also individual choices basically
My guess is that the frames are calculated based on the overall size of the sprite sheet so the spritesheet being the wrong size made the frame calculation go wrong. You could check my guess by adding the white space back on to the bottom of the new sheet but adding one more pixel to make it 64x416px. If I'm right, you will still see the correct frame in the event.
i dont think theres a counter for that
how do i add a responce if i have visted a location?
with PLAYER_VISITED_LOCATION as noted above
how do i add a responce conditionally is what im meaning
each response also take Condition
oh :P
however its a true/false thing
so u can add an option bc player has been to secret woods
but u can't do any ForEach type thing
except by writing out each possible location
not rly a mmap specific limitation, just how CP goes
would you even want a foreach since you still have to code the coords for each location manually right
is it possible to warp the player right outside their front door with an action?(host goes to farmhouse, other players go to their cabin)
yea just wondering if there is a thing like "goToHouse host/whatever"(like "warp X Y Loc", but for player hoiuse)
lol these people wiping out the forest
feature request for BETAS, WarpToFrontDoor?
did you figure out what you are naming your npc come with you mod 
With C#? And what kind of item?
dk yet but prob together of farm together 
together kinda implies multiplayer tho 
might try that yeah, thanks!
GameLocation.sharedLights is the multiplayer sync'd light sources dictionary, you can use it if you want yea
ah yea i remember now
you can use the item extensions feature for held light at least
placed light is something else
npc come w you is a good idea too lol
another mod concept that had enough iterations where name become hard
Companions of Ferngill if we doing the skyrim mod name thing
hi again. rewriting my heart event with quickQuestion and switchEvent, and it's going well except for this
[game] Event 'skipdozer.MP4P' has command 'switchEvent skipdozer.MP44(break)' which couldn't be parsed: can't load new event from asset 'Data\Events\SeedShop' because it doesn't contain the required 'skipdozer.MP44(break)' key.
do i need to edit the seed shop file or do i need to put in changetoTemporaryMap even when i'm just in the seed shop the whole time?
If your event takes place in the seed shop the whole time you have to be editing the seed shop file to add the initial event script there.
okay, that makes sense
Is your second event actually called "skipdozer.MP44(break)"?
no 😦 the break is supposed to be from the quickQuestion coding
guessing i need a space there or something
Either a space or double backslash, perhaps. Trying to read Thylak's single line example is destroying me lol
Hi everyone. I met a weird bug that the number of output items didn't appear. I changed the code of Wood Chipper. Is it the reason of Wood Chipper? My another machine works well.
very understandable
!json post what you have?
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.
Trying to draw sandals on a sprite is also destroying me D:
sprite drawing is its own unique hell
It really is. My consolation is that looking closely at vanilla sprites and those from other mods shows that everyone struggles with it. There are simply too few pixels for none of it to look weird when you really look.
the space fixed it! now it's breaking in a different spot!
which is in fact progress
https://smapi.io/json/none/24144a221f124e7c8cd4ed0cd506dfbd from line 490 to 745
I highly recommend using TargetField deeper and replace only the fields you need; right now you're effectively wiping every rule on the wood chipper (including rules added by mods that load before you) in favor of your own rules. this applies to the other machines as well
back to your question: you tested with a new input? does patch export Data/Machines show your changes?
my event's working if there's only two choices/switchEvent spots, but if there's three none of the choices go anywhere and i'm just stuck on the question forever
{{i18n:skipdozerMP408P}}#{{i18n:skipdozerMP409P}}#{{i18n:skipdozerMP410P}}#{{i18n:skipdozerMP411P}}
(break) switchEvent skipdozer.MP45 (break) switchEvent skipdozer.MP46 (break) switchEvent skipdozer.MP47 (break)",```
................nevermind it's broken on the other branch with just two switchEvents
Are you sure you need to switch event at all? Are you trying to add different end commands and/or use more questions inside one or more of the branches?
the latter
i have this uhhh
this going on
where the five at the bottom are all different endings to the event (12, 19, 20, 17, 18)
so 8 is a question and 9, 10, 11 are all answers
I see. Well, here's Avi's guide to using switchEvent in quickQuestion (would've linked earlier but I didn't know about it): https://stardewmodding.wiki.gg/wiki/Tutorial:_Final_Boss_of_Events#switchEvents_and_You!
thank you!
I am going to attempt to make a custom farm layout
1.1.0 of my mod is nearly ready to be releasseddd (i have someone testing to see the balance with the monsters, then im gonna edit my mod page... when nexus wants to load, and badabing badaboom its done)
you can absolutely do this with quick question! what a bunch of options O: that's really cool
you'll have 5 different endings then?
yup. or i would if it wasn't stuck.
Not sure how to use switchevent honestly, but I did something similar with my NPCs 13 heart event
The only thing I can see that Avi has done that might be important is that the new events she switched to are written like forks, not like discrete events. Are yours written that way too?
It had 4 endings (technically 6 if you count the way i did one of them)
As in 4 different end commands, Lily?
i think i did. i can link my mess of code as soon as i get it spaced to where it's legible
I can post the monster that is the event code if you wanna look at it
(dont judge my movement commands if I do, i tried to use advanced move and i couldnt get the timing right so it has a beautiful janky mess that i associate with character because i didnt want to figure it out any other way)
i would love this; i've been downloading mods to look at their code to see how it's done
Is Thylak just wrong then, saying you can't use end commands inside quickQuestion?
yes
You absolutely can
I do it multiple times with a variety of my events actually
Let us immediately split this into multiple lines as god intended
I wonder how the game handles new lines inside quickQuestions. It handles them inside question dialogue.
here's my code https://smapi.io/json/none/81d6e9036ae34207aaca7a7bdb7b4084 just outing myself now
i was hiding it earlier because i was worried about getting bullied but i'm writing a pierre marriage mod
even though only like seven people like the guy
i mean to each their own dude
You want to know how to do some crazy things? You want the immersive-cutscene heart-wrenching events?
You've come to the right place.
Step inside, take a seat, this is going to take awhile.
From other event tutorials, you've probably seen:
changeToTemporaryMap false/bgColor 0 0 0/ambientLight 0...
I found the link i was looking for
when i saw the anti-pierre subreddit i figured it was a bad sign
You appear to be using forward slashes inside your quickQuestion
ah damn it
\ ?
ope
i didnt know it would make one of those vanish...
also yeah if you do the regular / in your quick question event it tells the game that you're going back to the regular dialogue script
That might just be me reading it wrong, actually. Thrown off by the indentation.
all of the commands within a quickquestion should be done with \ other than when you start another quick question I believe
(with two of those since it likes to get rid of the other one)
\\
right yeah
At least for the first quickQuestion he only has one command inside each of the answer scripts
hm I'm not sure how it works when using switch event honestly 
if that changes anything, anyways
yeah, that's what threw me off and made me think i could use / instead of \\
also this is amazing, I need to know how you make him not... detestable WHEEZE I would absolutely play through it honestly
I mean yeah, people hate Pierre, but ther's like a Morris romance and a Qi romance, I don't think anybody's gonna bug you over it
live your dream
As the maker of said qi romance mod, I literally cannot say anything
(as if that wasn't obvious from my profile picture)
i didn't really change any of the vanilla content, i just added onto him with what's there
Yeah but theoretically he would develop/show a different side of him with a relationship and I wanna find it out
heehoo
i find most of the vanilla romanceable characters too young/immature for me, a late 30s man with a job and a mortgage
You are using (break) when you're not inside a quickQuestion, I think?
!
well technically the breaks are showing the different answers to each quickquestion which are the switchevent commands? I think?
actually I see what you mean
Here on line 61, this is not inside quickQuestion. You have switched to the MP41 event.
mfer
this is such a mood for me (ignore the part where my mod literally revolves around teenagers shhhh)
My last hurrah with SVE is marrying Olivia
just cause you make a mod for it doesn't mean you dont prefer the older characters, it just means you saw a lack of content
or something i dunno
Olivia....
oh wait this was on purpose
Sigh. Hiria looks like she's wearing puffling pants.
Well, you can't do it whether it's accidental or on purpose lol. You can't use (break) outside of a quickQuestion command.
This stuff is very confusing. I'm not even totally confident that you definitely are outside the quickQuestion after switching to a new event. I'm just reasoning it.
i'm trying it; be nice if this were it
i have to go back to work tomorrow night so i don't get to code again for a while 😔
I'm making an older gay guy but he's not romanceable, sorry LOL
i appreciate seeing any older gay guys fwiw, godspeed to you
I am still going back and forth on whether to make Hiria romanceable
I decided against making any of my npcs romanceable because i dont want to write marriage dialogue XD
extremely fair
removing the extra (break)s didn't hurt anything but it didn't fix it either. i'll try changing the slashes
I'm fighting myself on rival hearts
omg yeah
I was wrong about the slashes, you don't have any inside the quickQuestions
🤔 but when i think about it, a good chunk of my NPCs (read: 3) are widowed
i still haven't finished all the marriage dialogue 😔
i’m looking at the mountain of work it takes for romance and going nooooo
it's already annoying that he flirts with the wizard because it ended in me putting in a "BUT NOT RASMODIA" switch for a lot of stuff
extra gay coding
I'm not sure you should have the final (break) in any of the quickQuestions
I did not add compatibility with Rasmodia but I probalby should, since Qi has beef with the wizard :L
I followed your suggestion! And yes, it works. Wood chipper works as my wish(output 100 woods not 5-10), but the number disappeared. That's really annoy.
but then I would have to add the switch thing for it and ... I would rather explode honestly
it's inconvenient
Also @median forum if you want to just use quickquestion i can help you do that instead
i took those out and i'm still stuck with the questions not going anywhere 😔 thank you though!
He is using quickQuestion Lily!
it was already inconvenient to add both the optional title and optional player title ... i dont wanna do it for the wizard too
Oh no no I meant only quickquestion!
Like instead of quick question to the switch event, just using the quick question option to have multiple endings
The reason he's using switchEvent is because he is nesting quickQuestions. Are you saying that's also possible?
maybe that'd be a good idea since i can't solve this
In the event i posted earlier I use multiple quickquestions :3
oh yeah i need to look at your code
So in yours Lily, choosing route 1 in the first question ends the event, whereas choosing route 2 continues the event and leads to a second quickQuestion?
yes! :D
At least just swapping the name/pronouns isn't too bad, it's more annoying having alternating flirting and not flirting and such.
but I am committed to gay
I mean I kinda get that too, having alternate versions of every dialogue based on something is... a pain. I did the same thing with Qi's events from 6 hearts up (people romance him so fast it's kinda terrifying) as well as for every piece of mail he sends
using alternate titles and wording based on how he feels about the player
makes my brain hurt tbh but I did it
Heya is there any documentation on how to i18n-ify the ingame GMCM or just in general?
(for other translators to edit)
please help me with this, yes. every event i wrote for this mod has all the multiple branches like this one and i am going to weep
The approach for GMCM and for other parts of the mod is different, at least if you're using Content Patcher.
Config: https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/config.md#translations
Everything else: https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/translations.md
meant to @rigid musk lmao
thank you very much
Hmm. Only one of your routes in the first question leads to another quickQuestion, Lily, but both of skipdozer's do. It looks like yours is actually exiting the quickQuestion before starting the second one but his wouldn't be able to.
I would be happy to! just give me a second, I'm updating the mod page for my mod to prep for releasing 1.1.0 tomorrow afternoon :3
(If I am reading yours right now that I have made more of it multi-line.)
i am clearly failing to understand what I need to do. and don't have time right now for a lesson. so i guess its a project for when i get home
By custom farm layout do you mean just a custom farm? Like Frontier Farm or Kisaa's Blossom Crest Farm or something?
yeah
first time doing this kind of thing
but have to start getting ready for work soon.
ok now i will finally compile all my NPC information into one folder... This mod will take forever but if i just think about it hard enough it will magically appear before my eyes
I know you don't have time for a lesson so I am not going to launch into a big thing, but have you been following the example from the farm data page? https://stardewvalleywiki.com/Modding:Farm_data
You should just be able to copy and paste the example into an empty content.json file and change the values to match your own files etc.
That's what I did to make my custom farm.
i should of looked down haha
Hopefully it will be a bit easier with an example lol
where is the complete list of mail flag?
there's this on the modding wiki https://stardewmodding.wiki.gg/wiki/Comprehensive_Mail_Flag_List
Currently working to ferret out where all these flags are added from
Please note that this is just what I was able to pull from the source code so far. I have no idea what some of these are, especially for the 1.5 content. Any fixing, additions, or further explanation is welcome
pamHouseUpgrade - When...
oh wow, someone actually compiled all of them together 
that's quite impressive
okay @median forum im not quite done with my page yet but I'm gonna take a break from it, where do you want to start?
i guess with the event i'm on and making it work. is it easier to do DMs (is asking that against the server TOS if so i'm sorry)
i can pinpoint the two points my 4 heart event is breaking
Asking is not against the server rules no! and if it's easier for you we can go there for sure
Doesn't matter to me and I don't think anyone would complain here either :)
bless
If you want I could probably help out with that, since I definitely want to try your mod in my playthrough 
That would be ... very nice
I'll take a look later then
Or should I wait for an update I saw you mention higher up? (if it adds more stuff)
I suggest waiting until tomorrow afternoon(ish)
or after that anyway
I have someone who's gonna test out the Arena again to make sure the spawns are alright, and then it's go time

stupid question, when another content pack registers an item using the {{ModID}} formatting, what exactly is that retrieving from elsewhere in the content pack to insert?
wondering because im trying to reference some item ids that are setup this way from another content pack. since obviously i can't refrence another mods ID in the same way if at all. is it just the "UniqueID" from inside the content packs manifest?
you would look in their manifest yeah
it would be their uniqueid _nameofitem
in this case uniqueid_DawnsingerToadstool
if you were pulling from one of my items for my qi mod it would be like AngelOfStars.Mrqifriendable_QiArenaWarpTotem (or wahtever item you were looking at anyways)
"Morghoula.AlchemistryCP_DawnsingerToadstool" is certainly gonna make the gamestate querries reading item IDs look horrible but i don't have to look at them once they work
But also it's horrible spaghetti.
But it's also my horrible spaghetti.
Something about turning Vulpix and Rowlet families from Pokemon Ranch into "Witches Familiar" farm animals just feels right
i keep landing on new and exciting points where the game breaks. learning is legitimately fun
Were you able to get your events working with just using quickQuestion?
75% of the way!
which is more than it was before!
at StardewValley.Event.answerDialogue(String questionKey, Int32 answerChoice) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Event.cs:line 7011
at StardewValley.Menus.DialogueBox.receiveLeftClick(Int32 x, Int32 y, Boolean playSound) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Menus\DialogueBox.cs:line 364
at StardewValley.Game1.updateActiveMenu(GameTime gameTime) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Game1.cs:line 5082
at StardewValley.Game1._update(GameTime gameTime) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Game1.cs:line 4269
at StardewValley.Game1.Update(GameTime gameTime) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Game1.cs:line 3454
at StardewModdingAPI.Framework.SCore.OnPlayerInstanceUpdating(SGame instance, GameTime gameTime, Action runUpdate) in SMAPI\Framework\SCore.cs:line 1095
[game] WARNING: Mismatched UI Mode Push/Pop counts. Correcting.```
i took this to mean that i screwed up in the dialogue
so i'm trying to see what i did
Count your answers and answer scripts for the quickQuestions. You might have a mismatch.
that would not be surprising given the amount of times i've copied and pasted everything around to different formats
I'm very curious about the nested quickQuestions working.
Does that error only happen if you pick certain answers, by the way?
okay... having a log is useful... but also i have no idea what this is telling me is wrong. file for context : https://smapi.io/json/content-patcher/e64948a1baa44e2696b50481ec9e7055
but also second image is the block of stuff that was changed to trigger this error.
im assuming this is just some highly specific formatting its expecting?
gods this whole thing is making me feel dumb.
I suspect the answer to this is no, because it's not liested on the modding schedule page, but can you put a warp in a schedule???
no, but at what point are you wanting them to warp? at the very start of the day or during the day to get somewhere quicker?
I'm pretty sure that error means you've put some brackets in the wrong place or used the wrong kind (square brackets when they should be curly braces, probably). Compare what you've got with Selph's documentation again and pay close attention to exactly which bracket type is used at each spot.
At the start of the day, just I have a suspicion my conditional spawn points aren't working right
that you can do, by using 0 schedules
I haven't tested them properly to find out, just troubleshooting
oh just 0 at the start?
yes
Is this on the modding schedule page and I missed it, or whould it be added?
will have to sleep a day, if you're testing on the day you're looking at it
I usually debug to the day before the thing i want to test then sleep on the ground
a quick glance of the wiki, I can't see it mentioned.
It is a bit of a hidden feature
Does vanilla even use 0 schedules?
So like this "Fri": "0 Forest 90 4 2 square_9_9"?
If you want a hand checking, I can help compare yours with Selph's documentation if you can give me a link to the docs
It does for green rain and Leo has a couple
I'll look at Leo
"Tue": "0 LeoTreeHouse 2 2 0/900 ArchaeologyHouse 18 12 0 leo_sit_up \"Strings\\schedules\\Leo:school\"/1400 Town 91 104 2/1620 Mountain 30 9 3 \"Strings\\schedules\\Leo:dinner\"/2000 LeoTreeHouse 2 5 3/2200 LeoTreeHouse 5 4 1 leo_sleep",
"Mon": "0 IslandHut 7 7 0/930 IslandSouth 7 9 2/1400 IslandEast 21 11 2/1700 IslandHut 6 6 0/2100 IslandHut 11 10 1 leo_sleep",
What, my Leo says this: { "rain": "900 IslandHut 7 7 0/1100 IslandEast 21 11 2/1400 IslandHut 7 9 2 square_3_3/1700 IslandHut 6 6 0/1900 IslandHut 4 8 0/2100 IslandHut 11 10 1 leo_sleep", "Tue": "900 IslandHut 7 7 0/1030 IslandSouth 38 31 2/1330 IslandEast 7 44 2/1700 IslandNorth 53 71 2/2000 IslandHut 11 10 1 leo_sleep", "Sun": "900 IslandHut 7 7 0/930 IslandShrine 21 23 2/1400 IslandEast 21 11 2/1700 IslandHut 6 6 0/2100 IslandHut 11 10 1 leo_sleep", "spring": "900 IslandHut 7 7 0/1030 IslandEast 21 11 2/1200 IslandSouth 7 9 2/1500 IslandNorth 14 15 0/2000 IslandHut 11 10 1 leo_sleep" }
leomainland
Ohhhh didn't see that
same initially
https://github.com/zombifier/My_Stardew_Mods/blob/master/ExtraAnimalConfig/README.md this is what ive been working off for extra animal config functionality. examples are at the bottom. and ive already shared my whole file. my brain is so fried. but this is like so close to working i think... admittadly i think this was the brick wall i hit last time with these item queried animal outputs.
That's more what I need. Leo's spawn point is changed to mainland in character data after xyz event, and I was trying to use that with a bunch of conditions, but it seemed to not be working
Thank you knce again for your scheduling knowledge
Spawn points don't work right
Leo has special c# too
The tl;dr is they are checked the previous day
So the game state (the day of month, etc) is the previous day
Almost!
Oh perhaps the wiki should say that then too 😮
0 schedule points don't do animations or text
I notice you are not following the recommendation of using TargetField. Is that intentional?
"Fri": "0 Forest 90 4 2/610 Forest 90 4 2 square_9_9" (so repeating the position at 610 to have the animation)
Yes that would be it
in this case is entirely because this is me building directly inside the original mod and thats just how the original mod structured it. trying not to change the structure if i can help it. really i should be making a separate content back but uhh. thats a whole mess i dont wanna get into
And do you need the 610 if you didn't want the animation?
No
Pokemon Ranch uses AnimalExtensionData already?
(Or schedule dialogue)
I have another that would just be "summer_Fri": "0 Beach 90 4 2"
yes.
This is fine!
One final thing
notably, it uses it to set its treasure boxes harvest tool to DigUp
which doesn't even actually work because of other configuration problems
Ohhhh dang
It's because 0 schedules are weird
and I'm sure they are the cause of some npc duplication
So if you use When conditions and 0 schedules, make all your schedules 0 schedules
These need to have an event seen condition
Oh, that is okay
All my schedules, or just all in the particular editdata?
The real issue is if you can have (0 schedule called) -> CP changes things -> (new schedule is not a zero schedule)
So you're keeping the way it's targeting AnimalExtensionData but changing what it's actually doing in it?
In that case, make every schedule a 0 schedule
But like, you should be fine, these are unlocked and don't relock
Yep. Basically that.
(If that makes sense?)
Hell I can post one of the files I haven't gotten to work on yet in case that'd help for context of what Im starting from
Their all super simmilar
It kinda does... though also not. So I need to add something to change all my schedules when I add the 0 one
Okay so you seem to have nested ExtraProduceSpawnList inside AnimalProduceExtensionData but they're listed as being at the same level in the documentation.
Or just have them all 0 to start with
It was my understanding that ExtraProduceSpawnList was a field inside of AnimalProduceExtensionData
All 0 is safer tbh
It sort of defeats the purpose of having a spawn point then
It is not. The fields inside AnimalProduceExtensionData are ItemQuery, ItemQueries, HarvestTool, ProduceTexture, SkinProduceTexture, and IgnoreAnimalQuality.
Oh wait I'm confusing the AnimalExtensionData and Produce extensionData
That makes sense, yes. They are very similarly named!
Does the 0 schedule go before or after a GOTO or MAIL?
whats extra weird is i had it working before. then i realized the reason my queries werent working was because they were in separate blocks on their own at the same level as the AnimalProduceExtensionData... so i guess in the process of cleaning that up i accidentally messed up the brackets such that... wait no im not even sure why the old code worked before since the ExtraProduceSpawnList was in the same place...
Not sure, don't remember, after more likely
That seems like it would make sense, thanks 🙂
Are you sure it worked and didn't just fail silently?
i mean the extra produce slots being added were working.
i know that much
would certainly explain the intermittant strange behavior like one of the animals not respecting the harvest tools that setup for it
Do you have a copy of the json as it was when it was working then? Because either I'm right and therefore it must have been different or it was nested like it is now and I'm totally wrong about what the current problem is.
I'm not familiar with it, but it doesn't look like it's nested in the right spot to me
https://smapi.io/json/content-patcher/6429d3b0914047488b12770f9d220360
here's the old version that results in no errors. and has the primary logic problem of not properly randomizing the spawned flowers.
honestly ignore all of this specific example. i didn't realize it was different that litterally every other file i had setup. but all of them are erroring the same way
I honestly don't see how any of that combee AnimalExtensionData stuff could be working. It all looks wrong to me.
@golden spire If you remember that schedule randomisation I shared a day or so ago, I'm having to change it. I had randomisation at two points in a single day's schedule, but it turns out they both resolve as the same random outcome. So I'm going to stick with one randomisation per schedule key.
If the combee one is different to the others, can you show me an example of one of the others?
I assume the same thing I do with Ayeisha... I just pick 1 whole schedule for a specific day and don't randomise anything within the day
Odds are it probably isnt.
But it also wasn't erroring until I made the same position swap as shown for the combee and the ones formatted correctly have the same error. Fixing that first before going forward just confirming it's still a problem
I saw that, it was the inspiration for what I did. Are those dynamic tokens set up in the content?
I couldn't figure out what the @@ at the beginning was for
okay. turns out Combee/Rowlet having their extra produce unintentionally a layer deep when it shouldn't have been was the entire source of the problem
It's possible for things to fail silently, where they don't produce an error but they don't actually give the desired outcome. You might have run into that before. One reason I'm saying I don't think any of it can work is because the table listing the fields for AnimalExtensionData (the top level asset) doesn't mention being able to use qualified item IDs as a field, yet that's what you have.
that's just the input separator I use.
The main actual schedule does this:
{
"LogName": "Schedule",
"Action": "EditData",
"Target": "Characters/schedules/Ayeisha",
"Entries": {
"spring": "{{Random: {{PossibleSchedules}} |inputSeparator=@@ }}",
"winter_15": "....",
"winter_16": "....",
"winter_17": "....",
}
},
and all the schedules are in the dynamic token block
notably all the ones i had working before are in fact setup the way you described it as needing to be. and fixing combee to not be wrong has stopped the others from erroring the same way for some reason
So is it all working as intended now?
Ahh dynamic tokens must be set up slightly different to local tokens then
unconfirmed. needing to fix a bad JSON issue first
yes, they're in their own block and not part of changes []
"DynamicTokens": []
so I also have this in my DynamicTokens:
{
"Name": "Tilesheet",
"Value": "vanilla"
},
{
"Name": "Tilesheet",
"Value": "earthyrecolour",
"When": {"HasMod |contains=DaisyNiko.EarthyRecolour": true}
},
{
"Name": "Tilesheet",
"Value": "starblue",
"When": {"HasMod |contains=Lita.StarblueValley": true}
},
{
"Name": "Tilesheet",
"Value": "wittilynamed",
"When": {"HasMod |contains=Acerbicon.Recolor": true}
},
{
"Name": "Tilesheet",
"Value": "flowervalley",
"When": {"HasMod |contains=kaya.floralvalley": true}
},
Oh nice
we appear to be. yata
UI infosuite says its spawning dragonroot, instead dug up an ink cap
Is that a good or bad thing?
desirable
dragonroot is the only entry in the list for them to forage, but when spawning dragonroot it queries for alchemistry's seasonal mushrooms and forage with dragonroot being in all seasons
is that possible that if player had a thing like furnace/ancient fruit/gold ore, send a mail to player? Can i achieve this only with CP ? I didn't find it in Game state queries.

might be possible using BETAS?
is it an another frame?
You can do it unreliably in vanilla
LocationChanged trigger + PLAYER_HAS_ITEM + AddMail
Unreliable because it fails should the player not switch map with the item in their inventory
BETAS doesn't have a item obtained trigger either (it's quite annoying to make one)
Extra machine configs does have action on collecting
But then you are limited to specific rules from which you obtain item
It's not recommended to use dummy events
Player get interrupted by it
And there's not really a difference to just use trigger actions
so...
I have this:
"Custom_Saloon_Celler_Backroom_Miihau.3": "{{i18n:LOG1.ftext}}%action AddMail Current {{ModId}}_LogSeen received%%"
```as a Letter that you can interact with on a Map but it does not do the action
the stuff is just in there as pain text:
do letter that you interact with on maps behave differently? or am I doing something wrong? 
try adding a space before the action? also should it be one % at the start and two in the end?
They aren't letters
If dialogue commands work there, it needs to be $action
Assuming you are using Action Message?
Well that is definitely the letter menu
that also did not work :c
But there are about three letter constructor
Action Letter
is there a mail modding wiki page?
Huh wiki is wrong then, it says same syntax
Maybe an atra is wrong
Anyways miihau u can use the spacecore tile trigger action
A atra us also running late
i used this for rev https://stardewvalleywiki.com/Modding:Migrate_to_Stardew_Valley_1.6#Mail_changes
I'm gonna go look in the decompile brb
🙏🏻 thank you
never worked with that, but I might try it. if it doesn't work otherwise. Thank you!

Probably intentional cus u can read map letter multiple times right
yeah
The spacecore thing just lets you trigger a Data/TriggerActions entry
Though hm how do u display letter then
I might change it to Action Message and see if that works first?
less pretty formatting but oh well, if it works
I don't know if that one parses $action either

You can possibly use this lol
With a single response it gets special cased into immediately running that
$action could work if you use BETAS to trigger a fake dialogue box there but I have no idea how you could keep the letter background
And it will run both trigger action and tile action
I'll try stuff until it find success or give up. thanks for the help guys!
Hello, I'd like to ask a quick question about something in the wiki.
In the maps modding page it says that maps can't have more than 200 width, but I'm making a mod that users can configure the size of a map and I tried generating a map with a width of over 300 and didn't have an issue.
Is the wiki outdated or is there another reason why my case works?
Trees break at that range
Even planted trees? The map I'm editing is the greenhouse...
OK, so it's not an error per se, it just breaks some stuff...
It is also just heavy load too
There's a width limit? I thought there was only a height limit because of depth math
That's what it says on the wiki.
Doesn't draylon make maps wider than 200?
https://stardewvalleywiki.com/Modding:Maps In here, in Map Edits
Sometimes it's a user-end thing where the actual limit is different between users but there is a safe limit.
However I can't remember what it is for maps.
So it might work fine for me if it's wider bu not for other users... I 'll just stick to the 200 that says on the wiki then.
200 is pretty large
I'm making a custom sized greenhouse, the user can choose to make it as big as they want. I just don't want the mod to not work for reasons like these.
A problem with that is that if you have something at X=100 and then you shrink back to wifth=50 the something will get stuck there
Chu when do you sleep, i feel like i find you somewhere at all times of day or night
When chu(e) is asleep chu(π) covers the shift
i see, you got a great system going
just tape to keep your eyes open
late reply (was sleeping lol) but looks like this is just a thing that happens to wood chippers for some reason; it is a child class of regular Objects, and its draw function doesn't draw the output stack count
not sure if intended; wood chipper outputs are variable and I don't see anyone else reporting this issue anywhere on the interweb
Report it to the forums lol
Just more caffeine
Even more caffeine
Insane amounts of caffeine
remind me in 9 hours to report the wood chipper issue
yarp (#6633800) (9h | <t:1744763018>)
Hey folks! Sorry if this isn't the right place to ask, but I am trying to update an abandoned mod to work post-1.6.9. I've got limited experience with C# and I can't find a good resource on SMAPI for the error I'm seeing. I've also looked through the 1.6.9 migration page and not found the answer. Would this belong more in #1272025932932055121 or can I ask questions here?
this is the correct place, since you're working on a mod and not just looking for how to fix your install
!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.
Show us the error via log parser
lemme grab it! ty!
https://smapi.io/log/64eadf948ffa472daef30f7d59a30ec0
The mod ItemAddition is the one having this problem in Display.MenuChanged, because it looks to see if the Menu is a shop and add items to that shop via itemPriceAndStock.Add, which says has a missing field exception. I saw Happy Home Designer had this same issue in November but couldn't find how they changed it.
Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Home, with 5 C# mods and 0 content packs.
Did this field become public 
No
Just recompile it
It's a struct to class change or class to struct change
Smth like that
Btw what does this mod do? I was unable to find it anywhere
if i give the player control during an event, can they use tools? or is it only running around and interacting
i have an idea for the player having to fight off ghosts during a seance but idk if it’s possible
Isn't Haley's done through C#?
As far as the player control bits
I feel like that's been mentioned before in here but I could be misremembering
Need atra's unreleased mod
oh yeah, i was already assuming this was a C# project
If it's not then I'm not sure this is possible
if it's with C# you should be able to make the player be able to fight off ghosts, it's just a question about whether it works out of the box by copying the haley event or if it needs further tweaks
oh yeah it’s content patcher unfortunately. that’s okay though, i can just have it be a normal event
im making a dialogue mod but confused on how i make the lines completely random, ive seen how to make it so theres a random choice between a few that i set that could appear on any specific day but how do i make it so my dialogue line has a random chance to be said on any random day
multiple ways you can do it, but you use Content Patcher's random token:
so you just use {{random}} on whatever you are wanting to randomise
right so for example instead of having it as something like "Mon2" i have it as "{{random}}"
and then just do the dialogue as normal after that
well you need to set the values to randomise between
{{Random:value1, value2, value3, value4}}
right ok
sorry im quite new when it comes to this sort of thing
so how do i designate a value to a line of dialogue is that possible with just a content json?
depends on how exactly you want to do it, there's multiple ways. Randomising the whole line, or just part of it..
"I have a friend named {{random: Paula, Rachel, Peter, Michael}}, they have a pet lion!"
that's just an example if you wanted to just randomise 1 thing inside it
or re reading what you said, I think you were wanting something like
{{Random: Mon, Tue, Wed}}: blah blah
that would just be randomising the day a line is said
Gotcha that makes more sense
I don't think there's really any way to put lines into a generic any day pool
Doing the Random on weekdays is your best bet
so if i wanted to randomise it a bit more specifically if i do something like {{Random: Mon2, Tue2, Wed2}}: would it randomly show it on those days if theres 2 or more hearts?
thats fine it will end up doing the same thing
you can put anything in {{random}} it's just adding that "text" in the place of that spot
is apryll not in maincord anymore? i had a polysweet question T_T
We don't trust atra to hit the publish button I see
or issue i guess. whatever you wanna call it
Apryll seems to be in the ES/Ridgeside/Zuzu discords
Can I get the bounding box or even just the size of an IClickableMenu somehow?
ignore me...
how did I not see it literally has a width and height
Don't worry. I don't trust atra either
I was relying too much on autocomplete and failed to spot it... then looked at my decompile for 2 seconds
eh. i dont care enough to go spelunking in other places lmao
:p
If it's a bug report on nexus makes the most sense
Figured out the lag for my mod with More New Fish! The dev decided to make the Fish catchable in every location in the game, so with mods it has to iterate through hundreds of locations in detail
So I might just straight up ban that specific fish from being parsed entirely
D=
Hey all, I'm trying to make a location closed on certain days of the week, the same way that Pierre's is closed on Wednesday. Does anyone know where in the game files that condition is located? I looked at the town map in Tiled but there's no condition on the general store itself
the seed shop closing on wednesdays is hardcoded
shoot
You can do conditional map patches instead
i think your best bet is just conditionally patching the tiledata to not be a warp anymore on some days
Are you caching/Do you want to cache that kind of data instead
asking because specific hardcoding like that smells like, well, code smell
alright, I'll do some creative thinking and probably do a map patch... tbh I was having trouble adding conditions in Tiled for when a shop opens, so I thought I could make the building where the shop opens restricted instead
it's probably easier to just actually figure out the shop haha
Even if I do cache it, I'd have to recache it a bunch since that data changes frequently. The lag is also present in that it lists EVERY location in the UI, and the fish itself shows up in every location, including indoors
So even if you CAN'T fish somewhere, the UI will tell you that you can catch a fish there
Because technically you can due to the way the mod dev did this
also wdym everywhere, is it just because it's in Default
No, because if it was just Default my code flat out skips it. I legit mean EVERYWHERE, including the Farmhouse, Community Center, Sunroom, etc.
is this the fall 27 fish? because I opened the files to check and it's Default
i took on a little side project for fun (still a bit messy, gonna try and refine it further and make it interactable and put it up on my site later) but in case anyone was curious, heres what a dependency graph looks like for every single stardew mod that exists in the monthly mod dump
blue nodes are content packs. purple nodes are C# mods. orange are unknown (not in the mod dump, so probably from naver or kofi or just deleted from nexus/curseforge/moddrop but things still depend on their uniqueid). the bigger the node, the more mods that depend on it.
can you guess which one is content patcher?
It's the Fall 27 fish, yes. I can triple check but it being default shouldn't matter
I still think it's better to handle Default fish properly, because otherwise you'll be chasing weird fish entries until the end of time
idk maybe the NUCLEUS OF THE ATOM is content patcher just a guess though
LMAO
we have a winner!
literally looks like a graphic youd see in biology class or something
cut the atom open and omg protons neutrons electrons!!!
im not sure if BFAV would even really show up here given how wildly it scales
though, it does have 144 nodes that depend on it, so it might. that puts it in, lets see... 17th place
Which of the 2 big nodes is ftm
there it is! BFAV
neither, the top is AT and the right is JA
The boy
that largest blue dot north of Content Patcher is predictable, thats SVE's CP component
no way… the north star…
woaaaaah
i love this so much
its very fun lookin data to have
i have thought about doing this before but never carried through
i just wish i didnt have to download the entire 66gb mod dump to get the 200mb json file inside it lmao
and I'm so happy you did it
yeaaah that was the biggest obstacle
66GB is so many GB
if i can get a nice force atlas precalculated itd be easy enough to put on my site to let you zoom and scroll around and hover over each node to see what it is
This brings joy
but, its currently precalculating it and my computer is screaming at me
so itll take a while
turns out calculating the forces on some 20k nodes and 36k edges is a bit rough on my poor consumer cpu
love the little galaxies
they remind me of like, agar plates
Just render it on aws so u can get a 4 digit bill by end of month
if you can tell me how to put Gephi on AWS id (not) consider it
Apparently the service is called Amazon Neptune
the less i have to touch AWS the better
What if you filter against the compat list
the mod dump is the compat list, no?
Ig it mainly just yeets DGA cus JA still compat
CP kinda looks like the iris of a massive art project eye 
oooooo
biblically accurate content patcher
oniony eyes
I think it looks more like stereo
I enjoy the colors a lot
I 100% see an eye, but I also see one of those like multipart flowers?
like queen anne's lace but with color
kind of curious which of these are cfl, ub and pif 
do you know their unique ids off the top of your head
is GMCM one of the purple-on-purple blobs in the top middle?
most blobs are a big purple surrounded by blue but a couple buck the trend
this is GMCM
i think a lot of mods dont actually add it as a dependency in the manifest
so its just kinda there
i always forget
DeLiXx.Custom_Farm_Loader, DLX.Bundles and DLX.PIF
huhhh interesting
do you know what the other purple on purple blobs are?
i guess gmcm is very optional in a lot of cases
yeah, GMCM doesn't require anything in the manifest & most mods don't list it in nexus reqs, etc

