#making-mods-general
1 messages Β· Page 27 of 1
You do have to be careful though, and again it's same as CSS and the like; depending on how you did your layout, horizontal and vertical size may or may not be independent.
your texture starts with Mod in the object but it needs to be Mods
yea that is true, tho i doubt i would have to deal with wrapping at this time
quick dumb question, for assetrequested, I have a couple if statements for each png I'm loading, but once I get things finalized, can I make a tilesheet, call assetrequested once to pull the tilesheet, and then have the spells grab a tilesheet location off it? Would that work kinda like the usual defaultTilesheet part of projectile?
hm unsure what you mean
do you want to make a tilesheet.png with all your bullets on it?
or make your own version of cp editimage?
the first one. I have this right now because it's just "toss the png in, see if it works" but it looks kinda messy.
so you just have to get the correct sourcerect when you draw
oh sourcerect of course
I've seen it done more explicitly than sprite index but I think I remember where I saw an example. Can probably do it either way so I'll see which way becomes easier.
if u use temporaryanimatedsprite then they call it frame iirc
Might make it easier if someone wants to do a reskin too, if they can just swap out a single tilesheet.
that definitely fixed it π€£ thanks
So here's something strange... when I do SpriteBatch.Begin(...) and provide a RasterizerState with ScissorTestEnabled = true, it does do the clipping... but if I subsequently look up SpriteBatch.GraphicsDevice.ScissorTestEnabled, its value is false.
Is this an XNA bug?
Ok, it doesn't update the GraphicsDevice at all. The only way to access the actual state is with reflection. 
@next plaza hi there, just wondering gohw OnGiftGiven changed in sdv 1.6? it seems to just call on any gift checks now rather than on given
Are you meaning BeforeGiftGiven or AfterGiftGiven
Yeah, there's a probe argument on the event now
ah
whereabouts in the base game code is it placed? i was getting a stack overflow using npc.tryReceiveActiveObject, so in there?
I'm not sure why you're getting a stack overflow tbh
First call is your box
But the second call is unboxed, right????
i'm not sure, i'll just reorder the lines until it stops overflowing
Like, if you go "is not my box? Bai!" I don't see a stack overflow
the issue is more likely that it is my box, since it'd endlessly retrigge the gift-given behaviour for the box
but it looks fine now actually
beforegiftgiven -> not probe & is box & npc.tryReceiveActiveObject(box.item) -> npc.receiveGift(box.item) -> player.remove(box)
i had to change this to new() { Width = Length.Content(), Height = Length.Stretch() } for fit width to content to work
https://github.com/focustense/StardewUI/blob/master/src/ScrollableFrameView.cs#L195
Sounds reasonable. Could probably externalize the ContentLayout same as is done for the FrameLayout.
It is just a convenience widget after all, trying to cover the "most common" configurations for a scrolling layout.
yay thank 
I'll add it to the to-do list, haha.
Pimping the latest stuff coming out with it, just 'cause. It took longer than expected but was pretty fun.
Sliders, sprite animations and about a dozen other bug fixes are all going into the framework proper.
Is there any convenient way to make a daily question with npc dialogue? I want to make it so you can say no any number of times, but you can only say yes once per day. I've gotten it to work partially with $y and $action together, but there's always an empty dialogue box that pops up after the action runs, and an index out of bounds error on a custom trigger action so I've been unable to code any "one yes daily" functionality.
Maybe with query
But i cant help further because im going to sleep and dont really pucture what you want to do anyway
1.6.9 fixed the $action dialogue with a blank box thing but I assume by yes only once then an addmail function to the yes option and the no stays blank?
Honestly BETAS can do what you want with the replacer dialogue upon player hitting yes, my brain is fried and can't think of the vanilla way to do it
not gonna lie, I thought 1.6.9 was already out so I was very confused for a bit, I'll see what I can manage with queries and mail, thanks!
Tis not public release yet
I've just opted in and updated so hopefully it doesn't break anything and I'll be able to test dialogue shenanigans
Oh you can probably do conversationtopic upon "yes"
Since conversation topic eats everything except spouse dialogue
Depends on what you're using, there's definitely still a couple broken mods
Only really using my other mod so it'll be a good test run anyway
pathos will PAY for this
It's a net field so do hasBeenKissedToday = { true },
I figured that's what you meant π
Tbh I get confused every time pathos calls you kitty
is this a legal move
what dark arts
I don't question Casey I just follow
Question my good rhubarb
issuing an important correction: earlier versions of the data model in Data/Characters had "SocialTabIconSourceRect", which was used in the social tab only. my contribution was to ask for it to be used in the Billboard (calendar) menu as well, when showing birthdays. after granting that request, pathos renamed it MugShotSourceRect.
we regret the error.
He does?
!1.6
Stardew Valley 1.6 is the recent major game update, which added lots of content and modding changes. See...
- 1.6 release notes (scroll up for patches);
- changes for mod authors.
It released for PC on March 19th; console and mobile are coming soon.
I never noticed
He used to!
ohhh are we on 1.6 now
so anyway the cat is basically just the old mariner but a cat
does he use data/characters
You can make an antisocial npc
Using data/characters
Even birdie is in there these days
i dont know what birdie is but if the old mariner is in there i'll take it lol
Content patcher has usurped a lot of things in the wake of 1.6
Good 
I am willing to offer more to be adopted
I'm too old for this shit. I'm now "why does everything hurt" years old
Technically it's more the game itself and not CP
i prefer to phrase it as "more things are controlled by data (content), and so fall under CP's purview"
Since CP just edits the game assets
Honestly trying to annoy linkoid to pr smapi/cp for his crazy yaml thing only for him to be pinged for whitespace errors
How about we all just adopt SpaceCore content instead? /s
I swear
Spacecore gonna be the next content patcher kirby
I think you're younger than I am. I'm "I'm not even going to ask why that hurts" years old.
As late as last year I was at "I know why I hurt I deserve it."
Listen if you bring in yarn for events I will be your evangelist
(Hiit training. Almost always hiit training)
i was born 'i deserve it' years old
Unfortunately I think yarn is better off as a standalone dependency since it's kinda large to integrate into SpaceCore
"large"
kinda large to integrate into SpaceCore
I'm almost surprised to hear those words.
What is yarn
I do think about these things to some extent π
why r there so many tech things named yarn 
SpaceBorg
i have to assume yarn is to do with rolling strings
Hey now
is the knitting programmer overlap that big
All other frameworks will be assimilated
I intentionally don't absorb other people's frameworks
So
Haha, I know, but the size of it still conjures up that image to me.
I tend to avoid a feature if it's in another (unless there's some way I can differentiate it or need to, like the spawning stuff to get dungeons doing properly)
Most women I know irl either knit or crochet
to be fair tho if you crochet or knit you really do become a magnet for other addicts, the yarn just naturally tangles together
I'd say, if you can do it better, then do it better. Though once you hit 1 million uniques then the "two cakes" principle does start to get fuzzier.
(There is a reason why I assume everyone who is currently in college doing a technical degree knows python.)
Yeah, I don't want to overshadow other people's work sort of thing.
I feel like I kinda need to with SpaceCore being so used (though not as much as in 1.5 since JA relied on it)
(is it bad to admit that I don't?)
I can use python? But I don't know it well and don't like the syntax
If there's a mod out there that's on the good-enough side and I want to add a few tweaks or fixes then I'll submit a PR, and have done several of them. But there are a fair number of mods that are simply poor execution on an otherwise good idea.
Okay I'm the last person I the office. Do you think I can get away with taking some popcorn
I think they're fair game to redo.
(It is the ceo's favorite snack)
Ah
But technically it's for everyone
is your resume up to date
LOL
Yeah I sent out PRs once
depends if you need a raise
But at some point I figured
That explains the superceding my very rough attempt at radial menus π
I really appreciate how easy it made adding my custom skill Im working on =]
i have only sent one PR so far, and it was to casey, for spacecore. (i'm sorry i left some of my trace output in by mistake, spacecore users please forgive me)
(And to be fair, I have way too many mods to maintain... hence most not being updated for 1.6)
I should've caught it in review, it's fine
There's some PRs I accepted during my depression phase a few months ago that I really should've taken a closer eye to
unless it doesn't and i just merged folders
Good point!
Ahaha, well I didn't specifically mean that mod, but I guess I did go into it thinking I could make it look better at least. I was actually thinking of GIG and some of the fishing mods.
Gig is not a name I recognize
Neither I
Are you not finishing your sentences, or is there something wrong with my Discord client...
Ginger Island Ghosts (wrong answers only)
ginger island goblins
Good Immersive Ginger
Didn't finish sentence
Had to deal with popcorn
Garbage In Garbage Can, I put that out about a month ago. (It's not that popular, so don't worry, I'm not offended.)
I have to update the SDUI version in that one too, now that I found out the scrolling UI was totally broken back then.
You can put it on limit mode, though, and still hoard whatever you want as long as the inventory doesn't get full.
I would like to do a shop menu mod at some point too
The sentence ends with "I preferred dealing with my own context"
I used the unofficial update someone did but they did not handle item icons correct
So 1.6 items r borked
Oof
The scrolling was also resetting but unsure if due to the fork
Anyway, as far as this, they were all for mods I actually wanted to use, so it was just logical for me to do.
I'll admit I'm not eager to go after totally random mods fixing their crap just because, lol
I kinda want the shopping cart thing lefauxmatt has too
Tho I never had chance to actually use it
Yeah, that makes total sense
I did a bunch of profiling about 1.5 years ago
And would send out PRs if I found something
(Of course, only over the mod group I was using.)
Question....can i use non food items in a cooking recipe for json assets?
we apparently do not have jam in the game so i am considering Jamborite which has the word jam in it...
Do not recommend tbh
Sure!
Because performance optimization is a pain? Or because the PRs were a pain?
also Hi friends! 
You can use all object I think
Hmmm
I wonder if you can use any random qualified item id
.. is it
and if you want to know what i am making.
have you watched friends?
That's not serious, is it? Cooking your machines?
You end up just flipping out at windmills I think
flipping out at windmills
I know what the metaphor refers to in general but I don't think I understand the analogy in context.
Does that let you put qualified id in ingredients?
interesting, this would mean Craft Anything Framework's no longer needed
unless i also dont understand it, this was a fix for my recipe output rather than input
Ah I did read it wrong alas 
No, Mr. CA put qid ingredients in earlier iirc to support certain 1.6 machines
This was over outputs
unfortunately, we can't yet make crunchy coleslaw with mayonnaise machine
Ah so I can feed ppl an entire keg? 
Turn all those useless auto-grabbers into auto-petters.
Likely only object subclasses though
Yeah ig the deluxe worm bin does take a worm bin in ingredients
that covers furniture, which is like 95% of use cases so good enough for me
So cooking ought to work?
Spending more time staring at flame graphs and not actually, you know, playing the game
(ok I forgor weapons, dang, but still)
Ah, I see.
Don't bother to worry
Does that mean you've actually played? I thought you'd stopped that too.
Three years ago?
All this stuff hasn't really stopped me from playing yet. Although I did put my new playthrough on hold until this fishing mod is done, because early-game fishing is just too boring.
Tbh I do enjoy a nice flame graph
If a mod is written reasonably well then I don't mind going over it for performance optimization. Sometimes it's a fun problem.
Looking forward to getting some free time back to spend with flame graphs XD
Perfetto is nice
is there a very flexible ja to cp converter around 
!converters
A lot of converter tools have been made by helpful members of the community to update outdated mods or convert existing mods to modern or alternative frameworks, and for 1.6. Here's a list:
- Convert XNB mods to Content Patcher
- Convert pants/skirt spritesheets to Fashion Sense
- Convert Custom Furniture mods to DGA/1.6 Content Patcher
- Convert visual Content Patcher mods to Alternative Textures
- Convert BFAV mods to work with 1.6 Content Patcher
- Convert TMXLoader mods to 1.6 Content Patcher
- Convert Custom Music mods to 1.6 Content Patcher
- Convert Shop Tile Framework mods to 1.6 Content Patcher
- Convert hair spritesheets and JSON Assets shirts & hats to Fashion Sense
- Convert regular Content Patcher to i18n format
- Convert JSON Assets to Content Patcher
- Convert fish data from field names to slash delimited values
- Convert markdown text to Nexus' bbcode
- Convert Custom Ore Nodes and Custom Resource Clumps mods to Item Extensions Framework
- Convert Content Patcher Animations to SpaceCore
- Convert More than Necessary to Content Patcher
- Convert SAAT to Content Patcher
Currently this cannot convert clothing (shirts/pants/boots/hats) because it was made to convert Raffadax and that mod does not have Json Assets apparel.

Oof
Lumina is a proponent of "load JA mod ingame and patch export the data file"
god's own converter
Ah, good point
hm if im doing this whole brain thing right, targeted bait should just affect the probability that any other item is chosen by making it the sum of itself and all other elements except the targeted one
so like if we have [a,b,c] and are targeting b, getting the prob that a is chosen in a shuffled list should be ((a*a) + (a*c))
or to simplify, a * (a + c)
that might make it easy enough to fit calculating targeted bait into here.. hm
I got to this conclusion because:
- The list does not reshuffle itself upon rerolling for targeted bait (might not matter though)
- Only one reroll is done, and only for targeted bait. Anything else just returns the fish
- Targeted bait passing for its target fish just returns that fish rather than rerolling
i knew updating sailor styles was going to be bad but even with patch export it's going to take years just to fix all the data before i even work out how to split all the hats and stuff into themed groups again
tens of thousands of clicks...
maybe even billions
4000 lines of shirts....................
sounds like my closet
and if the fish the bait is targeting isnt in there, same probs likely
there ought to be a way to automate that 
fwiw, this cannot be right
if b == 1, then a cannot be caught
(skip first shadow, catch b)
so the lack of dependency on b is a dead giveaway something is wrong
wdym? if a is caught initially, it goes back to the start, and rolls the chance for a again
it doesn't go to the start
(also, just fyi, the chances are changed when you have targeted bait.)
for most fish, it's multiplied by 1.66
i get the probs like that beforehand
nw
the actual alg is done after probs like that are handled
@teal bridge: two if there hasn't been any update. I seem to be almost at the point where I need a to-do list.) (1d ago)
Is JA deprecated?
yes. it's keeping the lights on for old mods, but you should use CP to add items in 1.6
Haha, worst rem!nder ever.
At least it explains why the bot thought I was talking to it.
helper.Events.GameLoop.SaveLoaded always run even on brand new save?
I sure hope so. I'm depending on that.
Oh wait, no I'm not, I'm using DayStarted everywhere. Still, the save is created before gameplay actually starts, as evidenced by the fact that quitting on day 1 still leaves the save.
Why do you need SaveLoaded to run anyway?
I normally write to save data in the Saving event.
oh hm i thought u can call WriteSaveData as much as you want, it only gets saved for real at end of day
(does it matter)
So the normal workflow, especially if treating nullable warnings as errors, which I hope you are, is:
- Write
private Data myData = new()in the field initializer to always have a default instance - Try to read
DatainSaveLoaded, if it exists then overwritemyData - Save it again in
Saving
prob not but ill feel better
You should do ReadSaveData in SaveLoaded, but don't depend on it being there.
if they have not saved before, all data should be default anyways
Exactly - even if the event fires, the data for a new save won't have your mod data.
Same with a save that isn't new, but was created before your mod was installed.
yea so i just put that in lazy loader
(anyways, the other common flow would be something like
private Data? myData
internal Data MyData =>
myData ??= helper.LoadSaveData("mypath");
I'm rusty so that might not even be valid C# anymore
I guess you could implement it as a lazy loader? But it's really not necessary, just set a non-null field initializer on it.
I just don't let Data be null, it starts out as private Data myData = new()
(forgot a very important equals sign)
Even if the save data is expensive to load, which it rarely is, this is one instance when I'd prefer to incur the cost right away, while loading the save, while the player is expecting to have to wait, vs. at some random time during gameplay.
(I used to have a 1 day rule. If the player was more likely than not to see the content in a day, I would immediately load it. If the player was more likely than not to NOT see the content in a day, I would lazy load it.)
rule of thumb more than anything else
ok im back after doing the basic calculations for [0.25, 0.5, 1] where 0.5 is the target. this is going to be annoying
why is dotnet dying every 30 seconds
ok so maybe i could still do this without having to rewrite the original alg
if there's a, b, c, d and i'm targeting c, after getting the avg chance for each, there should be chances of :
[c, c+a, c+b, c+d, c+a+b, c+a+d, c+b+d] and potentially more for the new weighted prob that c is chosen
could probably average all those and do some other cool things
@teal bridge did you forget to commit OptionsSlider
idk this is probably just me coping with not wanting to redo the math i already spent a while trying hard on, but i want to believe
Just left out the namespace reference, that type is part of SDV.
foiled by not using the template once again 
Was trying to keep the half-finished dropdown work out of it and left that import line out by accident.
Actually the template wouldn't handle that since it's in StardewValley.Menus, not the root.
i was try to find some kind of hover event
Well, typically buttons don't do that in Stardew. It's more common to animate a sprite on hover, which you can do with HoverScale. But you've got PointerEnter and PointerLeave if you really want to do something like tweak the background color during a hover.
And the best example you can find of those pointer events is... in HoverScale, since it uses them. Very simple usage.
sounds good ill do that
I'd been trying to make myself finish the dropdown but just ran out of steam today. Slider works great though, better than the GMCM version (sorry Casey!).
"Shin.Florist_LucienSpousePortrait": {
"Id": "Shin.Florist_LucienSpousePortrait",
"ItemId": "Shin.Florist_LucienPortrait",
"AvailableStock": 1,
"AvailableStockLimit": "Global",
"Condition": "PLAYER_NPC_RELATIONSHIP Current Lucien Married"
}
}``` Does anyone know how to make this item permanently unavailable after the player has bought it?
you could always set a mail flag on purchase and make that part of the condition too, but what if they accidentally lose it?
Oh right good point. I can't really think of a better way to implement it. Should the condition check for inventory?
you can check inventory, though it wont be found if they put it on the wall
can you set the object to "cannot be trashed" or something
i mean you could. that might be found kinda annoying though if they eventually dont want it anymore though
sve has it set to just player_hearts 14
that wouldnt make it unavailable after purchase though
onpurchase is a c# thing isn't it
Hm I can't seem to write a HashSet into save data
no, shop entries have ActionOnPurchase
sorry, ActionsOnPurchase, plural
it is of course limited to trigger action actions though
oh the negation always screws me up when it comes to flags
i was gonna say, action on purchase, setflag, if they have said flag, don't let them purchase, i don't know how to guarantee if it's "lost" though
(i tried digging into the lostandfound code but idk how to handle that)
i dont think there is a way to check whether furniture exists anywhere with just content patcher
i salute leroy, this furniture code has me confused
Since theres no real way to check would players be annoyed if i make the furniture always available in the travelling cart?
you could tie it to a random chance if you want
if you did like SYNCED_RANDOM day lucienPortrait 0.5 as part of the GSQ condition it'd be a 50% chance each day of being for sale
(though ofc the days when the traveling cart isnt there wont matter but there's no week interval, just tick, day, season, and year)
Okay that makes sense, i'll do that ty button 
you could even make it increasingly more likely to appear over the course of the month if you used SYNCED_SUMMER_RAIN_RANDOM. not super useful but hey! you could
though interestingly despite the wiki saying it accepts <base chance> and <day multiplier> parameters it doesnt seem to actually even use those?
oh--i should've asked this dang question when casey was around 
are the new default folders going to automatically understand even if all of my keys are still i18n, or should i specify i18n/dialogue:
i'm about to begrudgingly set a folder for 1.6.8 just so i can see how it works
can you explain what you mean a bit more
ah lemme see if i can dig where the patchnotes for it, it's the new i18n folder splitting process where default can be turned into a folder, with the other things being .jsons, like dialogue.json/etc
the key thing would be a content patcher thing though right
yeah
i'm just wondering if it'll understand how to pull it, or if i have to specify, i don't really know how that'll work, or hells, if i have to include it
lookin at the code for it it seems like it just adds all the keys into one big pool of keys so it should be functionally the same
so long as you dont mix and match folders and top-level files for one language
... interesting
oh i know what i need to do, right
i still gotta think of the workaround
wait --would BETAS work for that
map actions and other map stuff are entirely foreign to me
right it's NPC not tile
i dont know how anything map related works except for basics
good to know my migration from custom npc to a jumbled mess of a skeleton of an expansion is smoothly working though 
i just realized, yeah, it yoinked straight from a .json in my default with a benign name, so this is great, i can separate it based on npcs or whatever i need it for in regard to the default folder 
Does the USA have a govt conservation department? I see there is the Fish & Wildlife Service. Do they employ park rangers and manage hiking huts and stuff?
thatd probably be the National Park Service for the most part
i think it's state-by-state?
National Park Service sounds like it might be what I want
Fish & Wildlife also does some stuff but i also think you want NPS.
Yes I think NPS makes sense since I am envisioning Cindersap as a National Park
Fish & Wildlife has like. full police powers and idk if NPS has that.
im also just assuming this is mod related somehow and that you're gonna make a reference to one in stardew
(i didnt think about it at first and am a little surprised at myself for how ready i was to just go along with it. like yeah sure a question about NPS and FWC. thats normal here)
Yeah Hiria is a park ranger doing conservation, heritage, and trail/hut maintenance work.
I appreciate both your responses, thank you :)
I am mostly basing her work off NZ DOC rangers but I figured I should at least check US stuff in case it's noticeably different.
(The writer's dilemma: "why yes officer I had a reason to Google 'can you use powdered glass to murder someone'?")
i did a lot of writing before i did modding so i know this all too well
(The answer is no.)
(on the other hand, the answer to whether or not NPS has policing powers is "very much yes." so dont push Hiria's buttons)

drop one joja cola on the ground? straight to stardew jail
drop joja cola in the lake? get drop kicked into the lake
and then get fined by stardew Fish & Wildlife for disturbing the fish habitat
wait does hiria take me on a lil hiking excursion, i want this now
I was considering scope creeping into a hiking experience lol
Currently she goes away for a few days each season to go check and maintain the trails and huts within her purview.
Scope creeping into a hiking experience?
Hiria hard crashes the game if you don't go outside and touch grass?
Lol no the opposite. Giving you more outdoors in your indoors. Maybe a choose-your-own-adventure hiking event in the vein of Airyn's Secret Forest Walk.
can you make a Firewatch mod to go alongside her?
if its not too much trouble
thank you!
xD
oh aba's gonna go into the cinematic events? 
Aba was considering this
aba's gonna write all of the dialogue then strongarm me to script said cinematic event? 
Don't worry I will just procrastinate for so long you will forget this discussion ever happened.
i will forget by the morn, i'm roughly 2 beers deep with no luck of sleeping
hey marubot remind me inβ
Canβt sleep
might mod instead
Sleep? NZ? Aus? I think east coast America are waking up by now
Surely too early in the evening for Aus, unless she's a real early bird lol
(eastern australia isn't even at 9pm yet lol)
Yep only just past 8:30 for us
Itβs almost 7 am for me but I woke up at 3 am and canβt go back
I hate when that happens

active minds
As someone with insomnia: that sucks and I hate it too
Idk what to do
Itβs just bad because I get like allergy attacks when I wake up. Idk why
So ima just mod instead heh
Can you take drowsy antihistamines at night and hope they both deal with the allergies and keep you asleep?
Hey Purrpling
i hate this mod. i hate this mod so fucking much
is that someone pushing?
i need a midwife to push this many changes
Hello.
I am currently checking the operation of my first βmachineβ type mod that I created.
I have succeeded in crafting a machine in the game, but could not get it to function as a βmachineβ.
The details of the error are as follows English is not my native language, so I don't know how to successfully correct the cause of the error. Is there a wiki page that might help?
[Content Patcher] Can't apply data patch "(CP)Bomb Manufacture Machine > Include data/Machine.json > EditData Data/Machines > entry #1" to Data/Machines: failed converting entry to the expected type 'StardewValley.GameData.Machines.MachineData': Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'StardewValley.GameData.Machines.MachineOutputRule' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly.
To fix this error either change the JSON to a JSON object (e.g. {"name":"value"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List<T> that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array.
Path 'OutputRules[0]'..
https://smapi.io/json/none/c28273d57e4740a8a0a7345417197207
The JOSN regarding the behavior of the machine is also noted.
You have an extra set of [ ] you shouldn't have
Yeah the [ on line 35 and the ] on line 65 should be removed.
I see. Thank you very much for your very specific points!
Since this was the first time I had edited the official JSON of the machine operation and various JSON references regarding the operation, I honestly couldn't figure out what the problem was and was at a loss.
I'll go fix it right awayοΌ
im having trouble figuring out which frame on the farmers spritesheet is the kiss frame, i want things to line up for the npc im making but i dont know what height the lips/hands should be
@still frost You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!
Might be easier to line it up with another NPC, but also if you aren't lined up doesn't it just mash the sprites against each other terribly anyways?
another npc is a good shout, and yeah probably but im a perfectionist, its a bit of a problem lmao
Are you looking at this page for reference? https://stardewvalleywiki.com/Modding:Farmer_sprite#Kissing
it's the kissing sprites for a long dyeable dress, of course
This loops back around to pants are cursed huh
i have no idea what im looking at there ngl lmao
believe me when i say cursed pants never left us
I'm really not sure how that image is supposed to help with kissing lmao
The kissing one is in the blue rectangle, I believe
maybe when you're older 
The notation is explained further up the page
Think like when I'm 50 maybe?
i read the notation section and its not any clearer how this is supposed to help me line up my npcs kiss frame with the farmers
I think it would probably be faster to test Natalie's kissing location in game, adjust her in the direction you think she needs to go, then test again than learn how to interpret farmer sprites.
I have not bothered to learn how the farmer works and I think I probably never will lol
Given how farmer sprites work, I would definitely approach it from that direction last
If you overlay the dress sprites over the farmer sprites
They are (kinda) indexed the same?
It's like a you know
Paper doll
Just 100+ if them for different frames
i think imma see if i can just screenshot the farmer during a kiss frame and count the pixels lmao
In game the scale is I think 4x
?
Everything is scaled up
So the pixels you see in game are not the same as you see in the files
well yeah okay, but the scale doesnt affect the number of pixels you see though, like sure one pixel is made up of multiple after its scaled up but i can still count pixel by pixel
Pretty sure if you open the farmer base, the frame you're looking for is at 80, 512
101 is the farmer's kissing frame, i'm pretty sure. do not worry too much about lining up your NPC perfectly, since 1. the female and male farmers are different heights and 2. the game doesn't force the sprites to the same Y pixel so it won't line up anyway
just get it in the ballpark and you're good
Lmao, I was just testing that, male sprites are indeed an entire pixel taller
good point, getting into the ballpark feels pretty important here cause im pretty sure my npc is fairly tall at 29 pixels lol
not including her bow abigails only 25 lol
mine is 19, and that's generous, so i understand completely
ichor your npc is a mouse
yeah i shaved a pixel off natalie(my npcs) height cause its just a flyaway hair lol
For a while I didn't even know it was supposed to be a kiss, I just thought it was a hug
I think it reads better as a hug lmao
The awkwardness of mashing the sprites together without matching their Y position works better for hugging than kissing
Especially with the wild height differences
still gotta at least match height somewhat for the marriage kiss though, so might as well try and get fairly close
Hiria is 31 pixels tall if you count her hair
I don't know how tall she would be if she was bald although I think I have drawn her as bald so I could count
atm the main issue is abagail is 15 pixels from floor to lips and my npc is 21 lol, she gonna be bending the knees a bit, good thing i made her wedding dress straight and flowy so i can kinda try and show that
In the opposite experience, my wife thought I was running around kissing all the NPCs and was scandalised lol
it's used for both isn't it, there's just a heart on a kiss and a smiley face on a hug
Yup
Oh I didn't know there was a literal difference lol
It is just the emoji and sound that are different. The sprites are identical.
yeah, krobus uses the same animation when he's your roommate but it's a smiley face instead of a heart to separate it from kissing (and sound yeah)
Oh I guess I've never done a roommate playthrough
I was trying to think when I'd ever see the hug lol
(When you download the mod Hugs and Kisses and then run around town hugging everyone and scandalising your wife, of course)
I had to search the wiki to see if hugs were an actual vanilla thing lol
Is the hugs and kisses the one where the romance-able NPCs can hug each other?
Yes, but more importantly for me, it also lets you hug all your friends (if they are romanceable and therefore have a kiss sprite). So I can romance nobody and hug everyone (ish)!
I should download it. I have it on my list on my phone, but I always forget to download it on my steam deck
Uh anyone knows where the main screen menu sprites are located?
It has some image sprites, I was thinking about ui mostly
Minigames iirc
oop yeah there it is
titlebuttons and profilebutton (though what platform is profile button for?)
I don't have any un-platform specific profile buttons
All mine are prepended with Xb1
"Action": "EditData",
"Target": "Data/Crops",
"Fields": {
//Strawberry Seeds
"745": {
"HarvestMinStack:" 1,
"HarvestMaxStack:" 2
},
//Blueberry Seeds
"481": {
"HarvestMinStack:" 6,
"HarvestMaxStack:" 9
}
},
"When": {
"IsJojaMartComplete": true,
"Enable CC/Joja Completion Scaling": true,
}
},```
Getting: Line Field Error
1492 Changes[19].Fields.745 Invalid character after parsing property name. Expected ':' but got: 1. Path 'Changes[19].Fields.745', line 1492, position 23.
Which is the line under Strawberry Seeds showing "HarvestMinStack:" 1,
I have no idea what is wrong with this line
Your : need to be outside of the quotes
oh, thanks
"HarvestMinStack": 1
one of those things that just won't solve itself no matter how much you stare at it
The longer you stare, the less it makes sense until someone else points it out, kind of situation
there's def points where walking away and doing something else is more productive than continuing to code.
let it sit in the back of your brain to find a solution, or come back with fresh eyes and you find the problem point instantly (or someone else's fresh eyes).
(Or use VSCode. Which would have pointed out the issue immediately)
man there's already so many good rings, not much more unique things I could do with them.
Teo, once upon a time I wanted to make a junimo trinket
It would wander around harvesting for you
Or picking up forage
what happened with that idea?
my mod has a jumino trinket idea but more combat-focused, a utility-focused option would be cool too.
A fairy with a comically large hammer would be a great trinket
Many reasons. I no longer have the spare time for further mod development
When I get some of my spare time back I have other projects I want to prioritize
Go ahead
Maybe a watering junimo, a seed planting junimo, a junimo who hoes any open dirt, a junimo who harvests crops, a animal petting junimo, and a forage finding and getting junimo?
having trouble understanding why this recipe wont work.
"{{ModId}}.Turon": "-14 1 -75 1 246 1 -5 1 247 1/99 99/{{ModId}}.Turon"
The 2nd ingredient shows null in-game . -75 is any vegetable category, -14 is any meat. -5 is any egg
Yeah, only the milk eggs and fish categories work in vanilla iirc
spacecore also allows context tags (if memory serves), which in my opinion you should prefer over categories
alright i give up on targeted bait. maybe ill get back to it but for now ill just raise a NotImplementedError
spacecore recipe? :0 wha- how? 
CookingRecipeOverride, check the spacecore docs, but if you also want an example:
https://github.com/MizuJakkaru/Cornucopia/blob/555a4bc598b8a722d431133ea30a19c832d1b9c8/[CP] Cornucopia Artisan Machines/data/objectreplacements.json#L43
i don't know if this is just me making a stupid mistake, but i've been trying to load HD portraits with Portraiture and according to the description of the mod ". The aspect ratio of the spritesheet and the layout of the faces needs to be the same as in the original" but most HD portraits i use work fine with it, but when i try making my own for some reason it doesn't work even when i use the exact same size as the other HD mods
Do you have an example of what you mean? Doesn't work is kind of vague
basically it doesn't load, but doesnt say anything on the logs i'll show a video example
Hm, I know green role can't post images here, not sure if you'll be able to post a video
then ill send a dm, just let me get the vid
Try here, if that fails try #images-and-memes , if that fails then I'll accept a DM
Okay thank you ^-^
Someone sent me a DM the other day asking if I make mods, I just ignored it because they didn't even see if I was okay with DM's first lol
damn that sucks, thats really disrespectful tbh :(
Plus it's easier to get more help from others if the info can be posted here
Oh I received that exact DM. It's 80% a scam attempt
I wonder if they got phished or something, they've been on the server for a few years with medium activity
I just assumed it was an attempt to get me to make a mod or something for them
@solemn roost: 4th anniversary of the #pokemon channel (365d ago)
is there a map file png for spouse rooms and patios?
do we think this is off by one because of leap year?
yes, but if you want to add your custom NPC's spouse room and patio you should put them on a separate map to prevent collisions
Spouse rooms use indoor and sewer for their tilesheets, there's not just a plain png image of the rooms or patios
i just want to edit original textures is all
ah, i misread. my mistake
nw and tyty
Maps/townInterior and SewerTiles to be specific
gotya ty
And spouse patios use Maps/spring_outdoorsTileSheet so gonna need to edit the seasonal variants as well
ah right, thanks
318487045129502720: it was a leap year, you dum dum (365d ago) [Requested by shockah]
@solemn roost: it was a leap year, you dum dum (365d ago) [Requested by shockah]
I'm dying π
leap year police shockah
Amazing
It's a leap year
how did i fall for shockah doing this twice? i am cackling
What is this pokemon
okie got the vid done, had to try not to accidently dox myself
i'll send the aspect ratios, that's probably the problem
Portraiture works by replacing images based on specific names
Something you could knit probably
So your image needs to be the same name as the portrait you're trying to replace
how may I add lava on a custom map?
Lots of c#
From what I can tell in this video, Karlach is a replacement for Leah?
oh yeah i was trying to replace the karlach portarait that replaces Leah's portrait
(i was working on this for 3 hours itrying to figure the problem)
For Portraiture you would just call it Leah.png and then you can call the folder whatever you want
Or just Leah if you don't have file extensions visible
It's not a specific method - there's a bunch of different code (including net stuff) in VolcanoDungeon
Same here. Even if it's not a scam, it's a "wtf". No introduction, no explanation, no "I saw your work here" or "so and so said to contact you", not even an indication of what they want. I just ignore requests like that on principle.
So I'm considering writing a program to make modding easier. My goal is to have a simple gui that let's you add a new item to the game, and it has fields for all the info you need. You type out what you want for each one, select edibility, shops, price, etc, and then click save and it just creates all the json files you need.
Before I started though, does anyone know if that exists already?
I started on one a while back but never released it
Miss Coriel's NPC creator does that in a way but for NPCs, not items.
It was also during the days of JA dominance, so it wouldn't be as useful now
Closest thing I can think of is the NPC creator but it's also not up to date lol
ok which folder should I look in the decompiled code going to have to figure it out do you know?
I don't know off the top of my head. Just search for VolcanoDungeon in file explorer (or ILSpy or whatever)
I don't think this exists no
I had considered learning Python to make something for the data types that aren't updated to the new models (clothes and such) but I am unsure if I really want to learn Python lol
I know aloe has a py to cp that allows currying
im not sure why you would need to learn py for that, C# should be sufficient
My job is asking me yo learn python and I figured doing this would be the lease painful way to learn.
I guess, either way I need to learn to make UI
make one of those ascii interfaces 
(i do. it doesn't have a GUI though it's just a module)
Oof, I wanted it to be user friendly lmao
Not something that looks like I pirated a "game" and am actually about to install a virus
I used Godot for my attempt since it has UI stuff. Though these days I'd probably just do MonoGame + Mlem
(Since I'm using mlem for a game project and already wrote a XML/stylesheet loader for it)
I did consider just using Unity for it lmao
Ideally I'll be able to get it to the point that it can read your mod folders and properly integrate between mods. So if you have SVE, you can select that it's a loved gift by Sophia and stuff like that
if i was making smth like that i'd prob just do some potato react app for it
so i can host it on github pages
That's going to be fun (in the dwarf fortress sense) since packs can conditionally add NPCs and such
I'm always down for a good challenge.
I don't say these words often
hm so something like wyrebash 
But python UI makes me want to shoot myself
Sounds like basically recreating how the game loads data lol
Don't forget emulating content patcher!
I have literally spun up a tiny web server and written Javascript to avoid python ui
And I might do it again
I learned JS from bitburner lol
Wrye. Wrye. You did that just to push our buttons, didn't you?
literally
i think pyside6 is ok
well, it is python
but its just secretly cpp
I mean, fair
Wait, I'm trying to follow the conversation. Were we talking about a way to run a Stardew UI outside the game? Because I really want that for testing.
(chu: yes, getting to 1.0 of that is another long-running project. like, very very long.)
no i think they want gui content mod program
It was more data editing outside the game
which was brought up b4, wren had a wip somewhere?
Nah, more like a way to more accurately make json files to avoid as much testing as I do
I can't remember if the thing Wren was talking about was an actual thing in progress or an idea for a thing.
I feel like the testing is half the fun
Json isn't too bad... (I say, as if I didn't come up with my alternate content patcher partially because I hate all the quotes involved)
(The other reason of course being embedding into C# mods)
gui development...
A real editor UI would definitely be a big benefit to the CP modding community.
i did like one personal project in ctkinter
I don't think JSON is bad either, but I'm not a writer or a spriter, I'm a programmer. We aren't representative of that clique.
that was the problem , i just didn't name the file right 
I think my biggest hurdle is dealing with whatever the hell dll files are.
Ok, if you don't know what a DLL is, then you're probably a long way from being able to create a full GUI for content packs.
what kind of programming background do u have 
(well, unless you're 100% Linux and just never use Windows)
You'll probably want to make the variants too, Winter and Beach
Linux better though
Extensive Java, JS, and performance testing for work
I'm glad to see the last of perfmon
tbf I havent touched DLLs (i am going to this semester) and ive been learning programming for a fair number of years, just.. mostly python
i couldnt tell you either
yeah still a w.i.p (im not done with the emotions even]
also dreammaker
oh i guess none of those would have *.dll extension (java is *.jar right)
I don't disagree, but we all have our reasons.
Yup
(except Java, which is universally bad)
i think the first step is learn how the stardew content pipeline works
simple way is to try editing data in C# rather than through cp
wiki has doc about that
Work gave us all windows machines
I think the sound of us bitchinf about SharePoint is music to their ears
Yeah I've made and extensively edited a few mods (rip dead mods), so I have a solid general understanding of how everything links together. But I know a lot of the big ones use dll files
those are just builds of C# mods
Stardew uses MonoGame. Literally every instruction that runs is part of some DLL.
there was previous convo back here #making-mods-general message
Also, some mods do actually use DLLs, and aren't just the one DLL for the mod itself, but rarely.
In .NET it's called an "assembly". Unless it's not an assembly.
and 1 possible route is to have a mod packaged with the gui app to run a instance of stardew
to have access to the internals
Ooh. That's a good idea.
If all you want to do is load content, you really don't need to run the game. XNB can be read offline.
so that you dont need to reimplement various data models
Well it's more like reading the content added by mods with all the conditions and everything available
yea that too 
I dunno if reading the XNB's would help all that much other than having a base to start from
But if this is an editor, you don't really actually want to run the pipeline, you want to look at what each individual mod is doing independently, i.e. read their content packs.
!unpack if u havent done this then unpack both Stardew Valley.dll and StardewValley.GameData.dll
Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!
And yes, the data format is obtuse for a lot of them, but most of the time they are actually just strings until they reach some deeply-nested inner loop of the game; there is no format to speak of.
its not obsfucated so ez to read
!decompile you mean
If you want to make SMAPI mods with C#, one important resource is decompiling the game to read the game code. Here's how to do it: https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#How_do_I_decompile_the_game_code.3F
ah yea ty
(both? both!)
Both is good
Unity
If you're not targeting cross-platform, then WPF is still the convention.
Rumors of its demise are greatly exaggerated.
And if I were trying to do cross-platform, I just wouldn't use C#, I'd use a web container (Electron, Tauri, etc.).
If you want WPF shouldn't you just use Avalonia
Maybe. It was pretty immature back when I was doing a lot of WPF stuff. Could be a better choice now.
help.
Include assets/Data/gifttastes.json > EditData Data/NPCGiftTastes > text operation #10" to Data/NPCGiftTastes: record 'Elliot' has no value, so field '1' can't be modified using text operations.
block in question:
"Operation": "Append",
"Target": ["Fields", "Elliot", 1],
"Value": "{{ModId}}.Halo-halo {{ModId}}.PutoBumbong {{ModId}}.Kopiko {{ModId}}.SalabatTea",
"Delimiter": " "
},```
the others have the same format and is working. but idk what's wrong here :/
there is no npc named elliot
Oh yeah, his name has two t's
as a french person i can tell you that there's no npc named georges either
*:'> ugh *
as someone who can perfectly read thanks you very much, there is no hailey either

wait what
is it haley?
Yes
yes
my dyslexic ass was ABOUT to write a paragraph
omg
welp, i failed elliott
!eliot
Elliott has two l's and two t's in it...
so good
did we all thought its hailey ? xd
yes...
Just be me and don't remember their names without having to look at them
Chiseled beach guy
Blonde camera girl
blonde lady
XD yyessss! were all in this together
Sad hammer man
gym guy / topless morning guy
should be nice guy on reddit, thats how i remember him
dat about rayt. phew.
I wonder if I could do the GUI in Ren'Py
I can't tell if this is for or against lmao
No one got the reference? Phbt, flounce time.
"It's Elliott! Everyone knows it's two Ls and two Ts. I have two of everything!"
Stardew raytracer person hasn't committed in a month, sad
(if it helps, Jorts and Jean had broken CTs for Elliott in their initial release because of exactly this
)
It's not just you
When I was toying around with JA gift tastes it was the most common error I saw
if it helps, CA had a schedule for lewis to go to the library (no map of this name)
Brb implementing NPC/location aliases
!elliot
Elliott has two t's in it...
!false
true
I love some of these commands
the !stone one is fun
It's just a brilliant moment when someone wanders in with that exact question
You win this time, Elizabeth
Sorry for stealing your thunder π
You can search and find times of me randomly popping in here, running !stone, and not saying anything
I might have it memorized now, is it 390?
!stone
πͺ¨ The item ID for Stone is 390.
Hooray
vitally important info
!eliott
Elliott has two l's in it...
!!true
true
SSN => license plate and that's me.
(It was pathos' idea)
i rly wish i knew what somethings like these are suppose to be xD
Q about this line from the wiki on Harmony patching (https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Harmony):
However annotations work differently in the compiled code, so SMAPI can't rewrite them. That means mods which use annotations are more fragile; they may break without warning in future game/SMAPI/Harmony updates, and may not work on some platforms.
What exactly trips SMAPI up here? If I write my own attribute and then use it to apply patches using the standard code API, will that end up being a problem?
Yes
-_-
(I use annotations exclusively and never run into issues
)
But it is more fragile technically - the problem is Cecil (the rewriter library) can't pick those up for some reason
If you have any type reference
In the annotation
It may break
This is pretty commonly seen on mobile tbh
It's not as much of an issue these days to be honest (on desktop)
"Can't find gamelocation"
It used to be a cross platform nightmare when the assembly names were different per platform
Oh, I see
Mobile... well, I like to pretend that won't exist for 1.6 π
I mean... will it? lol
(Modding mobile that is)
But if the annotation doesn't directly have a type reference then it should be okay?
(Mobile will definitely exist)
I mean
Yeah
So you can even use the harmony onws
Just use the form that uses a string to identify the class to patch
(Don't do that it makes refactoring worse)
Is there even any interest in mobile modding programming nowadays? I.e., someone wanting to work on Android SMAPI?
Trading one maintainability issue for another wheee
i mean, depending on how the 1.6 port is done, it could be super simple
Good question... not from me? π I dread it getting updated since I'm basically obligated to update spacecore
maybe someone is lurking in the woods ready to fix mobile modding the moment 1.6 is ready for mobile
I mean it'd be nice if mods worked on mobile for the folks who play there, but yeah is anyone maintaining that infra?
No way to maintain it currently lol
Really? What makes it potentially easy vs. the 1.5 port?
Unless you wanna target the very select group of people who didn't update their mobile version and can still mod
but right now why invest in effort to fix 1.5 modding when 1.6 is on the horizon
That sounds like a challenge (that I don't have time to accept)
I can see some ways it'd be simpler... and some ways it'd be worse. (Can't say more than that)
how are any textures from the sewers being used in spouse rooms? i dont understand the connection.
Krobus
Krobus
ooohhhhhhhh
lmao okay tyty
I'm sorry, I failed us
tiakall typing faster training arc commencing
1.5 mobile is a mess that uses Android .NET 5 (?), which is in no way close to PC .NET 5. 1.6 PC updated to .NET 6, and the Android equivalent of that is much closer
r they swap out xamarin for 1.6
I don't know how much I can say, sorry
syntax wise the harmony.patch function is clearer to me
I'm okay with either, attributes used to weird me out until my last job
helps when i look at my code and go
I much prefer the attributes
Now they're actually kinda neat tbh
i didnt need a transpiler there 
(Hence only old code using the function based instead of attributes)
i feel much more in control with manual patches
I will say, it does bug me about attributes that if one patch fails the rest won't patch
...that's how it works? omg
Yeah, it goes in some sort of sequential order and bails once one fails
So if it fails half way through, half won't patch
(That could have changed I guess, but it feels like it does that last time I checked)
adds yet another reason why he doesn't like Harmony to the pile
That's probably why so many mods relentlessly try/catch around all their Harmony stuff. (For me, it's just YOLO)
try catching won't help you with applying patches
I'm also kinda annoyed that you put [HarmonyPatch] on the class, but [HarmonyPriority] does nothing unless you put it on the method
Took me a while to figure that out
Depends on your definition of "help". If you try-catch each one then it will at least try to apply them all.
Whether or not the resulting combination of successful and failed patches actually "works", well that's another question entirely.
in case of PatchAll, try catching in most cases won't do a thing for applying these patches, as applying itself could throw between the patches
the one thing it can help with is if you have a bad transpiler, but only in some cases
if you end up creating invalid IL, that will stop all other patches from applying too
I assumed try/catch on each patch was pretty standard just to ensure enough error handling/logging to keep players from bugging PathosChild when a patch goes south
The SMAPI error log will pretty clearly state which patch/mod failed, so if they bug Pathos, that's their fault.
i figured it's more bc harmony can mysteriously fail with specific mod loads
"Pretty clearly" not to users π
no, the recommendation is so you don't break the flow of the game or other mods
What I mean is, if it's the sort of player who is going to bug Pathos over that sort of thing, I think they are going to bug Pathos no matter what you do.
so more than usual amount of error catching seems warrented
Or me. I sometimes get error reports just because SCore is in them
Haha... SCore must be SpaceCore, right?
Of course!
Oh, to behold the mind of a user...
(It's really SMAPI)
(Pathos hates me, personally)
(Because of that + the serializer warning)
Yeah I tend to err on the side of "make sure the user knows that I'm (or they are) the one who messed up". That's for Pathos/casey/etc.'s sake and my own
No skin off my back hitting a quick key combination to wrap my patch in a try/catch with log with a macro
Thing is, if the patches are half-applied or 80% applied then it is probably going to break the game anyway. Maybe for some mods/frameworks, that is not the case.
Yeah that depends greatly on the mod
(the "found X mods with warnings" warning? Pretty sure that's getting removed in smapi 4.1.0, pathos hates you ever so slightly less)
Our server played through an entire day of game after I busted one of the mods we're testing, then I fixed it and we restarted
Whereas if I'd been testing something with a lot of codependent patches that really affects gameplay then yeah a fail should have just stopped everything
It's in beta for 1.6.9 I think
Oh, did they change i18n?
I put in a PR that got merged for letting you use folders instead of a single file (atra's idea)
Nope, that was something else, the serializer warning is still there: https://github.com/Pathoschild/SMAPI/blob/develop/src/SMAPI/Framework/Logging/LogManager.cs#L399 
You got my hopes up, how could you!
I did just spot a bug though
Time to DM Pathos!
(It's a very minor one)
he should just add a hardcoded exemption for spacecore
(payback for hamster pics, which I mean uhhh, I've totally forgiven you for that because separate datability yeah)
oh yeah i know, i love confusing people
Ah shit we did get a leap year this year. Tomorrow's the day!
remind me the 4th anniversary of the #pokemon channel in 17 hours
How Can Time Be Real If Our Timers Aren't Real? (#6234332) (17h | <t:1726061819>)
Tomorrow the timer will be right again, and the cycle continues
it works like a dream
Peak.
what mods are good to get? i didnt get SDV on steam π¦ so I have no idea what to do
I would ask on modded-farmers, but Nexus mods is a good place to just brows them.
AHH ok thanks didnt see that
Am I allowed to import .tsx tilesets into my map? I exported the spring_waterfalls tileset from the Forest as a .tsx file in order to keep the animations, if I were to simply use tilesets straight off the png I'd have to painstakingly set the waterfall animations and their timing again
Permissions wise, there's no difference between you using an exported tileset and just creating your own because both are using the base tilesheet, so it should be fine if it's a vanilla file otherwise normal permission rules apply
Good to know, thanks
The wiki even suggests exporting as a means to keep animations from vanilla maps, so it would be kind of wild if you weren't allowed to then use that lol
Hey @tawny ore got a SimpleInjector question
How do you handle a harmony patch needing access to a singleton's content?
If I want my event manager to fire off an event from a harmony patch, I'll still need some kind of static method I can use to get the instance right?
Is there anyone on who is familiar with using the Cloudy Skies framework?
Documentation seems pretty straightforward, what's the question though?
you could just ping Khloe for direct help as well
I'm still looking over the docs, was just asking so i would know who i could ask if questions came up π
you're welcome to ask here, and if we don't know, the author is in this channel as well
I would say, in general it's best to just ask the question and if anyone is on who can help and is willing they will
True.
I don't actually use a lot of the frameworks but I can read and understand documentation and pick apart code pretty well
And I know there are a lot of people who are tangentially familiar with different mods even if they don't frequently use them
It's looking very promising to use as a trigger action for watering my greenhouse without having to learn c#
Yeah, my solution is to have a static instance of the service as a reference to injected dependencies: https://github.com/LeFauxMatt/StardewMods/blob/3779413465bf07af853c7877853cfc3b30fb0680/BetterChests/Framework/Services/Features/CarryChest.cs#L21
hello! do you guys know of any in depth tutorials for making hair mods?
I do have one question though, i have this
"BuildCost": 10000,
"BuildMaterials": [
{
"ItemID": "(O)787",
"Ammount": 5
},
{
"ItemID": "(O)621",
"Ammount": 6
}``` and the items show up on the menu, but not the ammounts
Amount has one m
Mispelled, you have two ms
ok that makes me feel better lmao that's what I was doing but it just felt like I was cheating
mood
The eternal struggle
NGL, I don't see how Cloudy Skies would be able to trigger watering inside a greenhouse, still looking through but like the best I could think is maybe creating a new location context that's specific to the greenhouse and then making it rain there
But I don't know what kind of effect that would have on the rest of the functionality of the greenhouse
there is --indoors thing, so i'm hoping there's something that can be done with that, if i can get it to be specific to the map I made for the greenhouse. We'll see though.
Oh, I see, I hadn't gotten down to the added trigger actions yet
is there a shop in the base game that adds a fixed number of items from a random pool? maybe other than the 1000 lines of traveling merchant code
i'm so locse to getting sailor styles entirely content patcher, but the shop behaviour is so incredibly specific in c#
You can do RANDOM_ITEMS and then filter it to only items from your mod with PerItemCondition
the vanilla game maybe has something like that?
doesn't the guy with the camel also have random stock?
Bookseller?
desert trader? no
fixed stock depending on days
ah
Hey guys, quick question, how do I go about adding an animal actor on a heart event? what's the code that I need to use? I don't understand this: https://stardewvalleywiki.com/Modding:Event_data π
oh i have one, one second
addTemporaryActor \"Duck\" 16 16 95 17 2 false Animal duck1
command "actor" <spritesheet dimensions height> <spritesheet dimensions width> <x coord of map> <y coord of map> <facing direction> [type] [name]
ah, sandy's random items might not work since it's just using the global list of random sale items
mine would probably have some stupid cp tokens
does your stuff all have context tags
so for cows, that'll be addTemporaryActor "BrownCow" 16 16 95 17 2 false Animal BrownCow?
so u could do it like the 1.6 catalogues
"ItemId": "ALL_ITEMS (F)",
"PerItemCondition": "ITEM_CONTEXT_TAG Target collection_joja"
ooh
i edited it with explanations of what the numbers mean
Thanks man!
am i able to add context tags to shirts hats and pants?
You could take a look at how the bookseller works in Data/Shops - though you'd still need a list of all the items
there's only 200 of them. i'm willing
are all of these items guaranteed to have the same mod prefix in their ids
yep, they're named author.mod.contentpack.item
ITEM_ID_PREFIX
there's like 8 content packs i'm converting to cp
and originally it'd pick some random 20% of the items from each content pack to add to the shop
but hm shirts and pants dont have context tag very sad
.. and also pair matching hats with shirts. and matching pants with kimono shirts
they only got custom field so i was gonna look at button's thing
wont there not be a way to guarantee each of those 20% of items is unique on any given day?
if going off the bookseller method
repeat sales were fine before
Shop item queries can return a list of multiple unique items, and you can choose how many to pick from that list
oh honey item_id_prefix is probably it
with MaxItems
with maxitems.....
so for example you can have a shop entry that gets every item that starts with a certain mod prefix, and set MaxItems to 5 to pick 5 of them for sale
ah, i was confusing that with Max_Stack_, whoopsie
For completeness' sake, MaxStack (and MinStack) determines how many of each of those 5 items are on sale
ig u have to do RANDOM_ITEMS too 
it works it works it works it works it works it works it works
uyoiu are ALL beloved
You are a lifesaver @velvet narwhal π
Cat!!!!!!
is it possible to define a pair of items in a single shop entry, or do i need 2 entries?
like, a pants and a shirt with the same name
nvm it's probably not possible
like you want to buy two items with one click?
I also have a test pack (lumi's wallpapers, was debugging weird ass shit as per usual)
or two items with one entry?
no ,just add two matching items in an entry. but it's fine since i can just use CP keys to ensure a pair
ig u can use seeded random
i deleted the c# component π
Threw away the best part.
hmmm m using two CP keyed randoms can give duplicate results. can i make the results exclusive?
i prefer to think of it as a dramatic weight loss effort
There's a shop data thing to remove duplicates, I think the bookseller uses it
"AvoidRepeat": true, on the shop item entry
oh, i assumed that was just for RandomItems and wouldnt notice CP changes
Then if collision happens you'd only have one outfit for sale right
can u use SYNCED_CHOICE for this 
same list for shirt+pants but in different order per pair
current setup for CP keys kimono1 and kimono2
{
"Id": "blueberry.SailorStyles.SakuraKimono1S",
"ItemId": "(S)blueberry.SailorStyles.SakuraKimono.SakuraKimono{{Random:Dye, Aqua, Blue, Green, Lemon, Orange, Pink, Purple, Red, White, Yellow |key=kimono1}}Upper",
"AvailableStock": 1,
"AvailableStockLimit": "Player",
"AvoidRepeat": true,
"UseObjectDataPrice": true,
"Condition": null
},
{
"Id": "blueberry.SailorStyles.SakuraKimono1P",
"ItemId": "(P)blueberry.SailorStyles.SakuraKimono.SakuraKimono{{Random:Dye, Aqua, Blue, Green, Lemon, Orange, Pink, Purple, Red, White, Yellow |key=kimono1}}Lower",
"AvailableStock": 1,
"AvailableStockLimit": "Player",
"AvoidRepeat": true,
"UseObjectDataPrice": true,
"Condition": null
},
{
"Id": "blueberry.SailorStyles.SakuraKimono2S",
"ItemId": "(S)blueberry.SailorStyles.SakuraKimono.SakuraKimono{{Random:Dye, Aqua, Blue, Green, Lemon, Orange, Pink, Purple, Red, White, Yellow |key=kimono2}}Upper",
"AvailableStock": 1,
"AvailableStockLimit": "Player",
"AvoidRepeat": true,
"UseObjectDataPrice": true,
"Condition": null
},
{
"Id": "blueberry.SailorStyles.SakuraKimono2P",
"ItemId": "(P)blueberry.SailorStyles.SakuraKimono.SakuraKimono{{Random:Dye, Aqua, Blue, Green, Lemon, Orange, Pink, Purple, Red, White, Yellow |key=kimono2}}Lower",
"AvailableStock": 1,
"AvailableStockLimit": "Player",
"AvoidRepeat": true,
"UseObjectDataPrice": true,
"Condition": null
}
I think ppl were discussing/asking for exclusive random tokens the other day. Not possible in CP yet I think

