#making-mods-general
1 messages · Page 101 of 1
...though I am using the Better Shipping Bin mod, maybe it's supposed to animate in vanilla and the mod is breaking it.
I haven't tried with anything that changes the bin myself (I usually would have better chests... but I only use bare bone frameworks for testing) but this is just vailla with nothing, not even smapi on it
I'll re-install and re-validate the files, just in case
i was starting up my game and closed it because everyone was already testing it, but now theres so much confusion that I'm starting it up again to see for myself lol
yes, im able to get the animation to play on both the farm and GI
BUT
when im in the menu it only plays on the farm, not on GI
After revalidating it plays if I drop directly, but still doesn't play if the bin is open (like in my previous recording)
Yep, exactly that
So there is a disparity between the farm and GI bins
Yeah, if I run without mods I get the same result.
So I guess BSB takes the animation away from the main farm as well.
oh i know its cus of the afromentioned thing
where islandwest is getting farm to use thier ship items method
IslandWest.cs
ItemGrabMenu itemGrabMenu = new ItemGrabMenu(null, reverseGrab: true, showReceivingMenu: false, Utility.highlightShippableObjects, Game1.getFarm().shipItem, "", null, snapToBottom: true, canBeExitedWithKey: true, playRightClickSound: false, allowRightClick: true, showOrganizeButton: false, 0, null, -1, this);
ShippingBin.cs
ItemGrabMenu itemGrabMenu = new ItemGrabMenu(null, reverseGrab: true, showReceivingMenu: false, Utility.highlightShippableObjects, shipItem, "", null, snapToBottom: true, canBeExitedWithKey: true, playRightClickSound: false, allowRightClick: true, showOrganizeButton: false, 0, null, -1, this);
if the farm shipping bin goes homf when using the GI bin, but no one is around to see it, does it make a sound?
I probably don't want to know why that difference in code causes that difference in outcome.
I can't see the difference in the codes
gotta check what is different about Farm.shipItem and ShippingBin.shipItem
oh yea tea you aren't testing with cueswap right, just vanilla?
does it animate the bin on the farm when someone uses the GI bin
Probably the only way to test that would be with coop, and ew.
just coop with yer self
You coop with yer self
Yep, pure vanilla, not even smapi running in bg
tilesheets/craftables ?
shrimply is right
:3
thank you muchly
just shrimply the best
New quote added by aviroen as #6250 (https://discordapp.com/channels/137344473976799233/156109690059751424/1305312291641753630)
(The lightbulb has been changed.)
Is this a real or metaphorical lightbulb? If you needed nuts and strippers (heh) then it sounds more like you changed the whole fixture.
Yup. Replacing old fluorescent tube's with leds
sorry windows 11 here
wait what bug are you working on
Win11 as well, sorry 
so basically my trinket mod depends on a particular data field getting assigned
TrinketEffectClass
normally i do this automatically via a data edit to put typeof(TrinketTinkerEffect).AssemblyQualifiedName! in there
note the ! 
i thought it cant rly be null, but i guess im wrong
maybe i just hardcode a backup 
hi possibly newbie and already asked questions but i couldn't find a solid answer searching: testing a beach sprite, is the easiest way just going to be fast forward mod + patience waiting for the weather/npcs to line up? or is there a faster way?
there's debug wctm but I don't know if it checks for location change
you can use debug hurry Abi to push abigal (for example) to their current schedule immediately:
https://stardewvalleywiki.com/Modding:Console_commands#Movement_and_warping_2
other than that, wctm sounds like a good bet
gotcha, thank you both! i'll give those a shot
i was about to ask why my machine wasnt working
i didnt have the additional item in my inventory
@brittle pasture So looking at Archaeology to update to the latest version, you claim the bug that the restoration table showing 293214 days is on my end. Saying it's since it didn't set the data right in the machine data.
yet when I look at a cask output vs my output, they are identical aside from the input.
Cheese input: https://pastebin.com/mDHKhkP8
vs
Artifact input: https://pastebin.com/jMbZSiLz
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
they both have
"MinutesUntilReady": -1,
"DaysUntilReady": -1,`
isnt it the output method that determines the time
I think the 999999 part is responsible
tho that's the same as the cask code
if (result > 0f)
{
Object @object = (Object)inputItem.getOne();
if (!probe)
{
cask.agingRate.Value = result;
cask.daysToMature.Value = cask.GetDaysForQuality(@object.Quality);
overrideMinutesUntilReady = ((@object.Quality >= 4) ? 1 : 999999);
return @object;
}
return @object;
}
yet casks return the right value
maybe UI Info have a special exemption for casks?
because its logic is kinda screwy in the first place
It does, which is why I said it's on UI info and not archaeology
ahh got it. in that case I suppose log it under known issues and/or throw a PR UI Info's way
that said, I could most likely change the minutes to ready to 7 days instead of using 999999. so it would give a semi-close answer
also since you're here, you said your mod that introduces water crops and machines framework takes care of automation mod compat right?
grumpy
i still need time to draw some nice water crops
(1) transpiler fails.
(2) but not for me (or lumi)
(3) user has provided harmony summary
(4) but no other transpilers on method
guhhh
nexus not loading so I can't inspect other mods code
transpilers remain the most fun method of patching, confirmed
trick question or not im working on a work around for things and was just wondering if you use multiple maps that replace the same map will Smapi complain or just ignore the layering
yeah it should!
yo
so
its not loading the next index when the machine is processing
ive got "ShowNextIndexWhileWorking": true
is it in the right location
on the same level as MinutesUntilReady
no
😦
it has to go under the machine data as a whole
not under the rule
let me double check
yeah it's global
lol looks like a normal day with nexus to me
I. Just. Want. To. Figure. Out. A. Single. Harmony conflict
post your json then?
whats the conflict?
"it said no" sounds like you got the syntax wrong or something but we wouldnt know
If you use EditMap it should be fine and layer it (specify PatchMode), if you use load more than once on the same map it will complain I think
here are my suspects
ok turns out the problem with putting on the machine as a whole wasnt caused by that
k thanks ill see what i can do then
If you do an Exclusive Load it will complain, if you set a priority then the higher one will do the Load and the other will not
that works fine now the problem was LightWhileWorking
which mod is the one not failing for you or lumi
not super sure how that works the wiki is a bit vague on how its used and smapi complains at me seemingly whatever i do
VMV (C#)
lol at this time i have 0 yellow and red messages
Look at all those prefixes
yeah, I WOULD if NEXUS WOULD LET ME
i unfortunately only have ... 3 of those?
you stupid 3209q3485t website <gets pulled away>
nervous laughter
I havne't been backreading, what was the issue
theres a transpiler there thats failing
something is causing me and fauxcore to both generate invalid il for that method
have you compared it to a vanilla machine
but only when you're not looking at it
xD
toooo dynamiccccccc
what the heck is Nature.1011112
my guess is skillful clothes revamped
ahhh I wish I could get a harmony il dump from that user but that's a lsot cause
it is not
Log Info: SMAPI 4.1.6 with SDV 1.6.13 build 24313 on macOS Unix 14.5.0, with 210 C# mods and 629 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
its Nature's Boss Battles
yeah, unfortunately there's no predicting just what kinda stuff a custom C# function may throw out lol
thank you! Let me decompile and take a look
(i am, very curious about this unique id naming scheme)
(gladdened it's not my mod. I would not want atra be mad at me)
to be clear
im not saying thats the source of the conflict
im saying thats what that unique ID is for
yeah, and I was trying to be clear that I'm fundamentally mostly mad at Nexus here
that doesn't feel like it would be it
big fridge also seems fine
(I'm looking for some fool trying shit with generics, or not using a static method.)
<.< well ... map wise im using some generics but technicly its only for the config portion
and running into alot of troubles lol but working out my mess
Unpatch 
i was gonna ask, how do i generate the harmony il because i have them all (plus more)
Trying to remember, I think you have to go into smapi-internal/config.json and set SuppressHarmonyDebug to false and then in your mod you set Harmony.DEBUG = true; somewhere, not sure if it's enough to just do it in your own mod though
(this is the stupid thing )
I'm gonna go with "changed game code" and possibly "bad SMAPI rewrite", like what happened to me the other day.
the problem is that I need the USER to do it lol
Check if a nullable value type got introduced somewhere.
so we're just dumping the isntructions to the log lol
hell yeah. i love to see six other prefixes on a function i wrote a prefix for. can't wait for this to become Fun later
i hope all of those are narrowed to only the specific items they care about, like mine
its only stupid if you dont gain anything from it lol
Okay so just making sure I am reading this right.
I make the bigcraftable object like I would any other. I then add in the context tags "custom_crab_pot_item" and "draw_water_overlay".
hmmmmm
might be a problem. I change loot tables of the machine based on what profession the player has

spacecore has GSQs for its professions right
to my knowledge I hope so xD
Oh CS critters property is 🤌✨
also i don't know what GSQs is
is gsq new in 1.6 too
yeah it is
i thought binning had some machine outputs based on profession but looking at it's github it doesnt seem like it
well I guess you'll need to roll your own then
pre 1.6 is like prehistory to me 
GSQs are a wonder
register your own "has X profession" game state query, and then use them in the Data/Machines condition field
you will still have to use spacecore's api for that query ftr if you want spacecore professions
oh wait nvm SC does have it
as that is the only way to get the professions ID
Every custom skill registered through the C# API automatically registers a PLAYER_<SKILLID_IN_CAPS>_LEVEL query matching the vanilla ones (such as PLAYER_FARMING_LEVEL).
wait no that's only for levels
thats for skills innit
there's a vanilla GSQ for professions but
afaik spacecore doesnt assign them ids determinsitically? or maybe it does? idk
yea ig u gotta roll own, maybe worth a PR to spacecore
or like, deterministically in a way you can predict
(due to varying mod lists and whatnot that also might add professions)
disclosure: im not 100% sure how spacecores system for it works
yeah nope SpaceCore doesn't expose professions GSQs. but on the bright side rolling a new GSQ is like top 5 easiest C# task
so I can do multiple conditions right? with like...
"Condition": "HAS_X_PROFESSION target, RANDOM .1"?
yep!
a gsq is just a predicate that u can call from content
u do what u want with the args, as long as u return a bool
return this.Skill.Id.GetDeterministicHashCode() ^ this.Id.GetDeterministicHashCode(); yeah good luck without a custom query here
sorry thats a lil unfair i should copy the whole line
return this.Skill.Id.GetDeterministicHashCode() ^ this.Id.GetDeterministicHashCode(); // TODO: Something better
(/lh)
If you see a comment like that it's been there for 5 years plus
3 years!
actually wait no maybe 6
idk how to read git blame on the website
ok no yeah its 3
fwiw its not like its really that bad, either
(actually it might still be 6 years, the 3 years is from pathos changing it from GetHashCode to GetDeterministicHashCode after 1.5.5)
is there a wiki or guide on how the conditional "RANDOM .1" ect work?
Like if I have 50 times on the loot table, would I need to add them all up to 1 using .02?
idk shit about machines where is this Condition going again
is it possible to have an alternate event if a player has a specific mod?
you would use a item query to roll all the possible drops into 1 rule
if its in the OutputItem entry then it just means it will only output that 10% of the time
asking because I was wanting to have an event in the secret woods, and I know SVE totally changes it
yes, patch in the alternate with a conditional HasMod
does every drop have same context tag?
so, have basically 2 patches then, one for without the mod one with?
that way it doesn't double up
?
yes, CP's When conditions are designed for things like this (and doing compatibility with SVE typically requires this)
Okay, so if I set 50 items to have RANDOM .1 which means it will output that item 10% of the time... It will keep rolling each item with a pass/fail (at a 10% chance for pass) till it succeeds or the "default" item if all fail then?
do you mean 50 different entries in the OutputItem list?
yes
thank you both! I'll keep that in mind so I can do the alternate versions of the event
i think machines just go down the list til they find the first valid entry right? <--- waiting for selph or chu
ya
Are these entries weighted or anything?
theres a bool to control it, UseFirstValidOutput
If you want 50 different possible items each with a 2% chance just toss all of them into one item query and use RandomItemId
if you have 50 different OutputItem entries each giving one possible item, then theyd each get a 10 sided dice roll until one succeeded or they got to the end of the list, yeah
hi idk if this is the right chat for this but i just downloaded a few mods on stardew (i had them last update just updated this time) and whenever i open the game it keeps crashing, what can i do?
!mh
For help with modding issues, please ask in #1272025932932055121! When asking for assistance there, sharing an error log will help others identify your issue (see https://smapi.io/log for instructions).
but i also second what selph says
no. So I am just trying to figure out how to transfer the water sifter's loot table (a custom machine) into machine data's output.
The loot table has like 50 different items, and some requiring the Dredger profession to be valid.
what does this do when its turned off
the docs say u get a random one
hm. would it keep randomly choosing until it found one with a valid Condition, then... ?
it checks every entry, filter out ones whose conditions do not match and then picks a random one among the rest
ig if u have 3 rules that would output Apple Orange Banana, UseFirstValidOutput=false would make u possibly get Orange or Banana too
what do machines do if none of them have valid conditions? does it just not let you put an item in in the first place

acceptance of item is tied to being able to output something
ty for the help btw
i just downloaded a few mods on stardew (i had them last update just updated this time) and whenever i open the game it keeps crashing, what can i do?
can someone help
but also it needs to be a itemplacedinmachine trigger
thank you
anyway as mentioned, just use one item query with RandomItemId, or better yet, tag all your items in the loot table with a context tag, and then use RANDOM_ITEMS + PerItemCondition filtering on your context tag
wouldnt you still want to separate some out into different entries to separate different profession loot tables?
yeah that too if you are so inclined
Re: the profession GSQs
It's stored with the vanilla ones, you just need the int ID used for the profession
ie. Profession.GetVanillaId()
which is the determinstic hashcode of the ID spacecore assigns it that is then boolean logically XOR'd with another id
so not very achievable with just CP 
well its a skill mod anyways
True, but you can output it from C# then use it in CP
could do asset edit to put in the real id
rather than make a whole GSQ
you could also just make a token that returns the id
which is probably better now that i think about it, since that can be used with the CP HasProfession token
I'm not sure this is how coffee works
$"PLAYER_HAS_PROFESSION Current {Profession.GetVanillaId()}"
The last question is what to do with the existing custom machines. I think instead of deleting the code and object completely from the mod, I'll keep the code and have the machines just delete themselves on day update. That should prevent issues for when the player updates the mod.
but only if u r do the data edits with C# rather than cp
it is if u cast power word Tim Hortons
my default assumption is usually "someone wants to use pure CP as much as possible". not always a good assumption, but it is my assumption most often
(jk tim coffee succ)
even when talking about C# mods sometimes i forget that they dont care to stick with just CP
real talk i would use a machine that magically produced one coffee a day with no need for maintenance or refilling, even though the coffeemaking ritual is a sacred part of my day
tbh nowadays I try to stick with CP as much as possible
bc most people in here usually come asking for help with CP stuff
i think sticking to CP isnt that different than sticking to content (that i somehow edit)
So would I lol
its distinct from doing harmony stuff u kno
im still really into the idea of writing my mods with IL as suggested earlier
speaking of, hows that conflict going atra?
sticking to CP is just a good idea. i am fond of saying on here that if you do anything even remotely complex via the content API, you will find yourself reimplementing CP's features but worse
what r some reimplement cp things u did ichor
Hi, I'm creating an stardew launcher, and I want to display the modded stardew's SMAPI version in detail screen, but I only found it in dll with ilspy decompile
Is there any way to get like vanilla version in "Stardew Valley.deps.json":[libraries][Stardew Valley/{version}]
cant do it worse if i just copy it from the CP repo in the first place #MITlife
tokens
i dont think i used content api for anything more complicated than add a single new entry
that is pretty sin yes
I wrote Fresh Farm Produce's notification mail, competition rewards, even the JojaFresh(tm) eligibility logic in C# before stopping and thinking "wait, this is just trigger actions" and redid all of it in CP lmao
(i'm sticking to SMAPI and the content api for my current thing because it's Not That Big and i like to keep myself fresh and have fun, but i did have to implement a few basic tokens and it was annoying)
so at least its not like it takes up too much time or has a large chance of being worse
im not sure how you could get worse without it being nonfunctional, tbh. which is not to say its bad, just that its very "does what it says and nothing more"
#MITlife is self hatred?
(....oh, not that MIT)
no, thats my normal life
none of the context/update rate stuff, though. just basic ones that don't need to refresh like ModId and i18n
i'm probably being glib or something but i have placeholders in my strings that i replace with other things
oh yea format string
and i just made them look exactly like the CP ones
just checking, this would be the correct way to do the GSQ? Apologies for all the questions
you probably dont want to hardcode it only checking the Current player
but like, you could if you did actually want to
Target player would be better?
well, do you want it to only ever check the current players profession, or do you want to be able to check for e.g. the hosts profession when you're a farmhand too
I would rather have it check the machine's owner
i have no idea how to do that
in the context of a gsq delegate anyway
i dont think the machine itself gets passed into the context
if you have a way to get the correct Farmer via C#, i think you can pass that along to WithPlayer in some fashion
do machines have owner 
without the machine in the context though there's no way to know what this GSQ is even for
you can get the items that are being input or output, but not the machine producing the item itself
Yes
some do, like crab pots are linked to who placed them and that person get named the owner
dunno if all does tho
i think they do. isn't there something in automate about the owner determining who gets the XP (crab pots)?
well you do not have access to the machine object in the condition
yeah, so there is no real way to check the owners profession specifically
gotta prefix MachineDataUtility.CanApplyOutput if you want that
you could, in theory, transpile CanApplyOutput to use the GameStateQueryContext overload of CheckConditions instead (which it doesnt right now...) and send the data about the machine in that context's CustomFields dictionary
which is a string to object dictionary, which is perfect bc you'd need to store an int! /j
a long. whatever
(you can also ofc prefix this too but do you really want to skip prefix CanApplyOutput)
why dont u do it in BETAS button

I Wonder if I could just intercept each object during day update, then check if the owner has the profession, then just do a secondary loot roll in the code rather than trying to make a GSQ
it'd still only be accessible to a custom query anyway
i wonder if u could like
do the content edit in c#
supply "FALSE" if owner no profession
oh but that is shared im dum
Transpilers::pufferthumbsup
The reader should note that I'm both exhausted and running a fever so coherence is negative today
Just don't say you do or don't support multiplayer, when people complain about a multiplayer issue, ask for a log and then close the report when they don't respond for a week, EZ
actually, a postfix if Object.DayUpdate I think would work best.
I could have it be something like
postfix DayUpdate(args) {
If game1.player == owner && game1.player.hascustomproffession {
change the output item here
}
}
hmmm
you could also consider doing output method
the Player in the context of a machine might actually be its owner?
like cask
Object machine, Item inputItem, bool probe, MachineItemOutput outputData, Farmer player, out int? overrideMinutesUntilReady
u get these things to work with in the outputmethod delegate
example https://github.com/Mushymato/TrinketTinker/blob/main/TrinketTinker/Extras/TrinketColorizer.cs#L112
yeah, that would require no patches or anything
anyone else getting this audio error where when trying to play cusotm music your game just crashes?
it's the person who interacted with it last
if it doesn't apply, defaults to the main player
https://smapi.io/log/2052ef06ea034c2dadafeb959649e05a
got the error for multiple mods in someones log
Log Info: SMAPI 4.1.6 with SDV 1.6.13 build 24313 on Microsoft Windows 10 Pro, with 103 C# mods and 288 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
anyway I feel like just using the player in context should do it. that's what every other machine does
did they check for u that Assets\Music\FC.Marketpalooza.ogg is on their machine
hey friends (perhaps especially button), anybody have an opinion on whether it is better or makes a difference to use a mail flag versus a stat for the unlock conditions on a new Data/Powers entry? the vanilla ones seem to use mail flags for the old ones and stats for the new (books)
when does Object.performDropDownAction happen then?
I dont know, but its for multiple mods not just mine so im not really sure.
stats cannot be checked with CP tokens
without another dependency
so mail flags are still good
if its multiple mods at once then even more likely that their mod folder is just messed up 
Stats can cover multiple uses, if you need to track more than one for any reason.
books use stats bc they set a stat on read
oh lordy
i was testing tea's mod earlier and it was fine
I don't see owner change during player interaction, I see it during placementAction
correcting myself yet again, they increment a stat on read*
(tea's mod that has special sound for shipping bin open/close, done with cp)
for "on machine put down" rules, use the farmer that put it down
for "input->output" rules, the farmer that put the item in
for "output collected" rules, the farmer that collected the output
for "day update" rules, the main farmer because the game cannot tell who interacted with it last
(which does default to the current player if who?.UniqueMultiplayerID returns null)
ah, thanks! mail sounds good to me, then. i don't need to increment anything, it's just have/have not
Psst, Selph, did you build your just-released mod against StardewUI v0.2 or v0.3? (Or rather, against the released version of 0.2 or the dev version?)
0.2
I don't think I need to rebuild for 0.3? all the API functions I use seem unchanged
Yeah, the API hasn't changed, as long as you're not using any of the 0.3 markup features like translation bindings it should be OK.
(other than the hot reloading one but I pulled that out of the interface)
Just asking because I saw your showcase post - ping me if you run into any issues in case I need to put out an earlier-than-expected Nexus release for 0.3.
unless I misunderstood what you were talking about. I thought it was the machine owner? Which is set on object drop and stored into a netfield.
no prob so far! I'm playing on my main save with 0.2 rn, everything is fine, the hover issue notwithstanding
oh I guess I have another question...
If I change an object ID in the player's inventory from a regular object to a bigcraftable, everything will be alright with it?
huh I might be reading this wrong but I'm actually not sure if machine owner is used in machine logic
hopper maybe?
is a hopper what calls performDropDownAction
like performObjectDropInAction will default to the owner, but in that case there is someone placing an item into the machine
my ilspy doesnt even tell me anything uses it
Pretty sure you can't do that, QualifiedItemId is read-only.
but i dont trust that it has too much code
Only machine that checks for owner (to my knowledge) in vanilla are crabpots, which use custom machine logic. And that's because of the profession that interacts with them directly
You'd have to create a new Item entirely to replace it.
I have this in my i18n to substitute the farmer name: "Events.239790020.009":"Oh, it's farmer @!",, but when I use it in an event it displays like this:
@ is not replaced by the farmer name in textAboveHead, as you have noticed
oh, it only works for speak?
ah darn I misread your post (performDropDownAction vs performObjectDropInAction)
speak, mail, and some other places i imagine
the only thing textAboveHead does is apply gender switch blocks
hoppers use performObjectDropInAction (putting something inside a machine). performDropDownAction looks very used to me (it handles placing a machine on the ground)
you would have to do a one time "save fix" of iterating over every object in the world and swapping your new object in
one of the "for each item helpers" actually supports replacing one item with another seamlessly
look at the struct ForEachItemContext and the delegate type ForEachItemDelegate and the functions that use it
Does anyone know if it's possible to force [AT] to display a larger sprite (for example, 32x32) for something like a BigCraftable? (Which normally uses a 16x32 Sprite)
do you mean a big craftable that takes up 2 tiles instead of 1
there was a framework for that but it's not updated
higher res sprites in general need something like Scale Up
No, I mean like it's still the regular old BigCraftable, but [AT] displays it with a 32x square sprite instead of a rectangle.
Or to put it another way:
{
"ItemName": "Basic Log",
"Type": "Craftable",
],
"TextureWidth": 32, <- Wider than Normal
"TextureHeight": 32,
"ManualVariations": [ ...
Will this display correctly or will Alternative Textures just cut the sprite off?
It will cut it off yes. I don't think AT supports sprites beyond the game's dimensions
A 32x32 BC means it takes up two tiles like a furniture item
which is not a thing (not without the aformentioned framework that allowed for bigger BCs)
if this is not actually a machine, have you considered just making it a furniture
No, I just want a bigger drawing canvas when making alternative textures for stuff.
There's no way to do that in AT that I'm aware of
And I would be very surprised if it was there
It would take significantly more C# to achieve that
If you want more high res sprites, then scale up is your thing:
https://www.nexusmods.com/stardewvalley/mods/3130
(but I honestly recommend you just work with what the game gives you)
16 pixels are plenty
TIL that Alternative Textures will gladly and willingly load the entire 32x image for a BigCraftable. And simply Squash it to fit. This implies that Alternative Textures may be able to natively handle an HD sprite? If I gave it a 32 x 64, it may well look normal, just 2x HD.
For anyone who wonders in the future what [AT] does with oversize sprites: This is what it does.
I think the reason is that AT is patching every draw call
Whenever you do your own draws you can put whatever texture size you want there, doesn't mean it'll look right if you didn't do the math to account for the scale
That's generally what Portraiture and Scale Up 2 are doing, the math to account for scaling
huh that is interesting. I guess you don't need scale up for this after all
What I WAS hoping for, however, was for the Junimo Tea Table (Placeholder example Testing sprite) To draw normally, just centered on the location of the Scarecrow here.
But alas [AT] cannot do that
junimo tea table is just a decorative item right? Why not just make a furniture item then
I was VERY hopeful for like a fraction of a second, but it was not meant ot be.
you get to work with sizes beyond 1x2
No, the Junimo Tea Table was just a placeholder example.
oops, ping
Well it wasn't a total loss, at least I learned something.
(I don't mind pings!)
yeah that table will definitely look good as a furniture
It already is.
i don't know if anyone actually follow up answered this, but support channel says it's because of the amount of .ogg(s) that get loaded #1275968404301287445 message
Pathos told me it's a vanilla error that is being fixed soon
hmmm, @brittle pasture anyway to make the item look better in the inventory or will it be stuck with it being bigcraftable size?
nope
spoiler alert: ||look at garden pots some time||
garden pot code or gardpot object data?
nah I was making a joke, the garden pot looks weird in inventory as well since it's a 16x16 BC
Jumping over here, Selph 
"{{Query: (({{FarmhouseUpgrade}} + 1) + {{Esca.EMP/GameStateQuery: BUILDINGS_CONSTRUCTED All}}) * {{BillScalingMultiplier}} / {{MultiplayerMultiplier}} * {{WeeklyMonthlyBilling}}}}" is what I've got for my current query check
ah darn it xD
so I filed that under "intended"
cursed, CURSED I SAY
I'm not sure how to convert the buildings GSQ into a number
aaaahh I see, I guess you can manually put in a bunch of numbers
hmm yes math
Oh you want to use the number of building built
yeah I don't think what you want is possible in CP only, sorry Airyn 😆
Yeah, I'm thinking I'll have to set up dynamic tokens that just have a number as the value with When checks for the GSQ and go with >10 or something as the upper-most value
All good, thanks anyway! 😆
would most likely need a postfix on the draw for objects to fix huh?
could you possibly make a customStat for each building with GSQ?
Is that possible in CP? 😅
set a trigger action on Buildings_Contructed, with an incrementStat? this is me doing some crazy things
Hm 👀
Stat: Taxability
yep, and I'm not touching that with a ten feet pole
^
pathos pls
All good on that front, Ichor, I'm using EMP to access them
ah, carry on then
i rescind the F
you would need like, infinite trigger actions for this, though
Not if the trigger action marks itself false afterwards, right?
if you are referencing the farmer's farm name in an event, would you normally say %farm farm, or just %farm?
former I think
oh right, becuase it's not counting new yeah
because if the condition was checking for one constructed building, that will be true every day
however
however "BETAS--"
will airyn be the first harmony crime-r?
yeah about to say this looks like something throwable into BETAS
As soon as the word harmony appears, I'm officially
😆
thats the fucked up part, BETAS lets you do it in CP
yeah, airyn gets to be the scapegoat
Problem would arise when you demolish buildings
I'm just gonna stick with my dynamic tokens, I think 😆
decrement counter on removal 
Dynamic tokens my beloved, who aren't unknown and scary 😆
(but thank you all for the suggestions!)
i could put the entire editdata patch in here for it even, but i can also definitely understand not wantin a dependency just for that
esp one you dont fully understand 
i am going to side with atra, harmony crimes aren't scary, it's when you do them wrong that atra comes out swinging
button finally makes a content pack for BETAS--your own harmony crime
"Action": "EditData",
"Target": "Spiderbuttons.BETAS/HarmonyPatches",
"Entries": {
"BuildingCounter": {
"Id": "BuildingCounter",
"Target": {
"Type": "StardewValley.Buildings.Building",
"Method": "performActionOnConstruction",
"Parameters": [ "GameLocation", "Farmer" ]
},
"PatchType": "Postfix",
"Action": "IncrementStat BuildingsConstructed"
}
}
for those following along at home who are curious how it'd even look
That is a fun concept to entertain though
i forgot, what brought about the "i'mma implement harmony through cp" anyway?
brainworm said, "commit crimes"
(One of the benefits of content packs is that they're generally stable and rarely break in game updates.
Button: "Let's fix that!")
this is the strife all innovators must deal with before their genius is recognized
am i still sole consumer of BETAS, i swear i'm not channelling the arcane power to break things
for what its worth itd totally work here though—
oh good, i'm no longer alone, there are others who can fall with me
it couldve been worse too, i almost kept the option to write literal C# in your json too, and the only thing that stopped me was that i just didnt feel like packaging in an extra dll just for source gen
afaik the only thing left you need to do is set a log of which content pack failed/error or did you already implement that // or could you not implement that
So, how painful would it be to create a furniture item that stored weapons (like the dresser) if I don't know C#?
So if you really think about it, Button actually saved us all
i cant implement patch priority, if something fails it already says which patch ID it was
seems like something Furniture Framework should be able to do if not vanilla already, i think
Slightly more painful than if you did know C#
but i cant confirm that
i don't know if FF implemented dresser
lemme go look
functional wardrobe, looks like it does
Wonderful!
"Force Type": "dresser", https://github.com/Leroymilo/FurnitureFramework/blob/main/doc/Author.md
which is funny because it says.. "don't use this" 
I mean, that's concerning lol
i can always ask tea again for .pngs but i don't remember if the furniture i made actually worked as a dresser or not
Last I was aware, you could also just ping Leroy
true, leroy is also working on that 3.0.0 so honestly i might just throw it in and see what happens
Looks like you would just use Special Type instead for dresser?
It says it later down the page
ah i see
So I guess dialogue replacement doesn't work in quickquestions either : (
you're using i18n?
yes
You need to pass it in as a token
oh like {{@}} ?
{{PlayerName}}, but yep
Basically in the i18n, you'd have "What do you think, {{PlayerName}}?" etc and then in your i18n key, you'd have "{{i18n:DialogueKey.Name.Etc |PlayerName={{PlayerName}}}}"
i guess i've never come across these
TIL
Not sure on %farm - it should be a similar process, but it'd be easier just to change the farmer's response to "Those are definitely from my farm"
do tokenizable strings work in quickquestions?
{{FarmName}} exists as a standard
not i18n tokens, those i know, i mean the vanilla system
Ah, there we go then
my brain is too smooth to understand, but my quickQuestions are formatted like quickQuestion {{i18n:key that has question, 3+ answers}}
/quickquestion {{i18n:Pelican.6.5.9}}
"Pelican.6.5.9": "#'Yes.'#'No.'",
Also random question, but what counts as a farm building when you're first starting out? I know the farmhouse is one and I'm guessing the broken greenhouse is another, but my farm building count is showing 4 on a new game 
shipping bin too i think
...mailbox?
any cabins on your farm?
Nope. Shipping bin & mailbox would make sense though
mailbox is a crapshot, i have no idea if it does
OH
PETBOWL
[XmlInclude(typeof(Coop))]
[XmlInclude(typeof(FishPond))]
[XmlInclude(typeof(GreenhouseBuilding))]
[XmlInclude(typeof(JunimoHut))]
[XmlInclude(typeof(Mill))]
[XmlInclude(typeof(PetBowl))]
[XmlInclude(typeof(ShippingBin))]
[XmlInclude(typeof(Stable))]```

The pet bowl is a building?! What the heck 
Wouldn't have guessed that one lol, thank you!
Can you explain this a bit more or point me to a doc on this? I don't know what you mean by the second part about my "i18 key", this is a separate file?
the |PlayerName part?
You said you're using i18n, right?
that's a content patcher thing iirc but i can't remember where the docs are for that
this is what's showing up now not sure where to define those
in your event code where you put the {{i18n:key}}
This is also why I abandoned Content Code 😛
(Partially)
quickQuestion {{i18n:Question |PlayerName={{PlayerName}}}}#{{i18n:Answer1}}#{{i18n:Answer2}}/
default.json:
"Question": "What do you think {{PlayerName}}?"
and if I have multiple keys to define it's another pipe character? like quickQuestion {{i18n:Question |PlayerName={{PlayerName}}|FarmName={{FarmName}}}}
Just to make absolutely sure, you are adding the entries with an EditData action and not a Load, correct?
you'd separate them with a comma i believe
I am doing an editdata to events
i didn't wanna answer it cause i have no idea either
That's correct, yep
airyn, famed dialogue extraordinare to the rescue
do you need a space between the pipes
I do with mine, but I'm not sure if it's strictly required or not
like between the first token and the second pipe i mean
easy thing to figure out if it breaks i spose

Airyn speed
water too? did you count how many sprinklers are on the farm? 
Nah, it's just flavour text
I'll change it though so that players aren't confused
actually, could you check sprinklers
not with a vanilla gsq
It's working now TYSM
I have a new Alternative Textures Question: How do I make the Auto-Grabber Animated??? Normally "To the Right" is used for extra animation frames, but the Auto-Grabber already uses one frame to the right to show "Having Stuff Inside".
Does this mean the Auto-Grabber can't be Animated or...?
the auto grabber isnt a machine right
It's a BigCraftable
I guess it isn't a machine in the sence it doesn't "Make" stuff??
it's not in data/machines
a thing is a Machine if it has a Data/Machines entry
Are only Machines (The kind that physically make stuff) animatable?
Uhh... let me check data
It does not appear to be a machine as I cannot find "Grab" in Data/Machines.json
AT has a base Animation property it looks like though
the id is (BC)165
either way you need C# or framework here
This only says the Torch can't be animated....
I haven't made it yet because I don't know how to apply an animation to the Auto-Grabber. I went to look at other people's packs for examples, but none of them are animated. And present the above-described issue of having 2 frames already.
Is the creator of Alternative Textures here? Maybe I can ask them directly??
idk if they respond here tbh
auto-grabber might actually be a strange exception, it's not under the /crafting section of the wiki 
yeah it is a big craftable, but since it never produces anything it usually doesn't animate
this is AT we're talking about though
Yes. [AT]
Wait, how am I supposed to call the player's name in an i18n file now?
it's probably just something in your AT pack then?
i don't think they've made it yet selph 
"{{i18n:DialogueKey.Name.Etc |PlayerName={{PlayerName}}}}" as per the messages ive read so far
I will need to make a very quick update if @ doesn't work anymore
Selph, I haven't made it yet because I'm trying to figure out how to even start.
nothing has changed with player name in dialogue
its just bc they wanted to use it in the quickQuestion command
Ah screw it, let me write a very kind letter to them and ping them, gimme a sec.
Ive just chosen $q and $r even when it was a quick question lmao
@ works just fine under speak, it's just the weird interaction for whenever a message bubble is called
quickQuestion doesn't use those though, so your code probably won't work
yeah but i meant for every dialogue where it prompts the user's response TuT
in the ones im editing rn. ive not thought of adding tokenizable strings in my responses though
Hello @polar escarp, my apologies for the ping. I've been using Alternative Textures on the most recent SDV Update and it runs great, no issues or bugs whatsoever. Love the mod, been using it for years.
Hey, so quick question, but could I request an Example? I'm trying to animate the Auto-Grabber, but have no idea how to start because it would appear as though it technically already has a second "Frame" which it (And by extension [AT]) use to show the thing has stuff in it. Does this mean it is not animatable? Or do I need to write special instructions? An Example JSON would be greatly appreciated; I have used the other examples from the example pack with great success, so any assistance with what looks like an edge case would be great.
Thank you for any assistance, and keep up the great work! 
Custom rule for dresser content is planned for a future update, I even already looked into it, but it will have to wait a bit because I have to finish the 3.0 update first
For now, you can only make a classic dresser to store clothes
Ooooh thats something to look forward to!
Can anyone help me make a content patcher mod? I made a recolor of Linus's tent but I need help on writing the content.json I've done stuff before with the farm house and buildings, but I've never done anything with buildings and homes of the villager's before and I have no idea were to start coding wise.
sorry if I phrased that badly
you did a recolor on the spring_outdoorsTilesheet?
No, not on the tilesheet it's self, here's the recolor it's self
All u need is EditImage
Ah ok! thank you, just editimage and make sure I have the right coordinates?
Look up the Content Patcher documention and find the EditImage section, it'll have an example code block you can copy & edit
when crediting inspiration from other mods, is the general etiquette to reach out to the original creator before publishing? no assets taken, obviously. also, does it matter if you credit insp in description or credits?
I want to make the portrait change for when it is rainy but while the first shops up the rain one doesn't
Depends how obvious the inspiration is, I would say - if major parts of it were inspired by the other mod or a casual viewer would immediately draw a connection, then it's polite to run it by the original author first even if no assets are being used. It's not a strict requirement though
You can set the weather in the SpringRain Appearance condition directly, you don't need to use a When condition for that
right, i see! you're actually one of the creators i was inspired by, airyn 😭 i'm doing a harvey portrait mod + really liked the way you did the chest hair for the vanilla beach portrait, so i used the same technique when making mine
I tried that with 'Condition: 'WEATHER here Rain' but it didn't work?
Can you show me the code you tried?
You'd probably need to set the precedence lower
(same precedence sets RNG at play)
please write with proper indentation, it will make it easier to catch errors and for other to help you
I did not write is I am copying a code from another mod. Or else I wouldn't be able to do this
Ah. Which mod did you copy it from?
Depending on how much you copied & which mod it is, that's plagiarism
isn't this possible by just doing an editimage over Portraits/Leah instead of editing data?
you can stick the Portraits/Leah_SpringRain into the first load, delete the second load cause it doesn't matter
then add "Condition": "SEASON spring, WEATHER here Rain", on your second one with a precedence of something like -140
Editing Appearances is more robust for frequent changes
it's also more uhhhhhh processing efficient iirc?
tbf copying and pasting cp syntax is vague
really? I'm surprised I've never seen this in portraits mods I've edited. Editing a data file and loading a sprite feels heavier than only editing/loading an image.
appearances are new in 1.6
DSV and SCA both use Appearances
Ah and smapi now needs to be updated. When it rains it pours one sec
its much better to load them once and apply them with appearance Conditions than re-load or editimage anything
iirc appearances also lets you utilize {{InternalAssetKey}} right?
so that's an even deeper level of processing efficiency 
True, but if it's things like dynamic tokens, those can be pretty personalised
(I don't even know what these are)
yeah the old way would constantly re-call the load, but appearances loads it once and remembers iirc
!dsv Diverse Stardew Valley and Slightly Cuter Aesthetic
Diverse Stardew Valley (https://www.nexusmods.com/stardewvalley/mods/17059) is an expansion mod that adds extensive seasonal, festival, and location-specific outfits and alternate diversity redesigns for NPCs supported by dialogue, event edits, and map edits. Outfits are available for either the vanilla or alternate character designs and nearly every aspect of DSV can be configured individually. See the DSV website for more details, including a list of mods with special compatibility: https://diversestardewvalley.weebly.com/
well, that makes sense then, I've mostly been frankensteining together outdated anime portraits mods
https://github.com/Aviroen/Custom-NPC-Edelweiss/blob/master/data/Outfits.json i need to fix this one ofc to utilize {{InternalAssetKey}}
i wouldn't personally consider changing to InternalAssetKey to be a fix tbh
if a portrait/sprite mod wanted to overwrite mine, i just have to remove my precedences to default weight and they just have to be a lower one to overwrite mine
long run: not useful for singular npcs, but i'm contemplating it for my expansion since it'll, ugh 
the more things that are directly targetable should a user wish to do so the better, imo
oh i don't mean my defaults, defaults need to be loaded no matter what
i dont mean your defaults either
Currently DSV uses a combination of Appearances & CP tokens because otherwise it has a lot to load and the Targets get chonky 😆 Not sure if it'd be better to switch it all over to Appearances
(though that's speculation at this point, i might not even have appearances because i am getting lazier by the day and i might not do seasonal outfits)
Like at the moment, I've got it set up with Appearances for the base indoor/outdoor, each festival, and special outfits, then I token patch the seasonals, randomisation, and weather outfits
but i coulda sworn we could do the flat appearance overwrite even if there's an {{InternalAssetKey}} if the precedence was just set lower
Part of knows I shouldn't do seasonal outfits and that it'll drive me crazy but it hard not to
you can, its just annoying if a person ever wants to patch your portrait itself
for that person i mean
oh was it the targetfield thing
It worked!
The worse part was waiting for Leah to leave her dang house
4:30 Leah reallly
i dont have exact numbers obviously and like, obviously we're also talking on timescales that no one is ever really gonna notice, but i think doing EditImage as often as a token might update is more expensive than a one time load of everything and then conditionally switching the texture name
esp since, well, you'd have to load those textures anyway once the editimage applies them
and along with that "it doesnt practically matter (until you're doing it thousands of times maybe)" goes "its not worth refactoring an entire existing mod to change to one system over another" ofc
the only thing im sure of is that EditImage = expensive
For what it's worth, I do have as much of the time-based/quick-updating tokens moved into Appearances as I can, so the majority of the token patches should only be OnDayStart
any removal of an OnTimeChange token is worth a lot
Yeah, that was the killer for the previous versions of DSV, we had a lot of OnTimeChange 😅 It's why we brought in the Full/Light/Ultralight configs
those are what i would call exceptions to the "its not worth redoing a mod for" thing 
honestly wanna dig more into {{InternalAssetKey}} though, cause when we did the thing with passerby cemetery it made me think about how to cut down, but honestly i look at how many mods people pull up and i'm like, "should i... care about optimization?"
very excited to have reached this point in my mod even though there's still plenty to get done
Uh, do I want to know what's going on in your mod...?
i honestly dont even know if using internal asset key really has that big of an advantage... smapi still has to manage it anyway
(personally I'm really not a fan of the Pierre hatred in certain parts of the fandom)
Here's an older screenshot that started this all off once I knew it could be done.
Please don't ping me on reply.
I love this
Got a report (confirmed) of another instance where a mod seemed to break for no reason; this time, it's a MissingFieldException on ShopMenu.itemPriceAndStock. Except, the field is still there, as far as I can tell has not changed at all. Simply rebuilding the mod fixes it. It was a field in 1.6.8, and it's a field in 1.6.9+.
I can update the mod easily enough but I'd really like to understand why this happens, so I don't have to keep updating mods for future game updates for (what appears to me to be) no real reason. Anyone have ideas?
the "as if you'd loaded it directly" bit here makes me thing that the performance difference is negligible at best
(I'm not even accessing it with reflection or anything. It's just silly.)
Hmm, I wonder if it's related to ItemStockInformation changing from struct to class
welp throw that out the window then, i don't think i do anything heavy enough for it to necessitate
you save on the overhead of managing the patch and any conditions or tokens it may or may not use, but... if you're worried about the performance impact of tokens reloading patches, you're probably not using content patcher
(and if they dont have conditions, then, yknow. moot)
Maybe? Does that change the metadata token, maybe? When I open it in ILSpy, it has no trouble resolving the field. And I'd think, since the IL operand is just the metadata token, it has to be finding the field otherwise it wouldn't even know the name of the field it's trying to find.
There must be something not showing up on the call stack, it's a very reflection-like message coming from a non-reflection context.
Sorry to interrupt, but does this look ok?
{ "Format": "2.3.0", "Changes": [ { "Action": "EditImage", "Target": "Maps/spring_outdoorsTilesheet", "FromFile": "LinusTentRecolor.png", "ToArea": { "X": 224, "Y": 96, "Width": 192, "Height": 384 }, } ] }
also, my image isn't too big is it? cause I thing the normal tent is 40 by 80 ish, should I downscale it to that size?
if it's bigger than your ToArea it'll cut off 
ToArea is the original tilesheet iirc, lemme actually look at that cause i actually don't look at it that often 
Yes, you need to have it at the original game size otherwise it'll overwrite random other things
also i think it'll only replace during spring so you'd... have to change it to {{Season}}_outdoorTilesheet right?
Linus's tent is 48x80 by default, so if you have the width and height as 192x384, it wouldn't actually work for starters because it's wider than the tilesheet edge and if it did work, it'd replace a huge chunk of the cliff, dirt, the carpenters' house, and Marnie's barn tiles
crap
Yeah I don't see how it's a performance benefit, it would mainly be a QoL benefit of not needing explicit loads.
Indirect performance benefits from not letting edit flows happen.
For example using the appearance system with internalassetkey is massively more performant than conditional editimages on the base portrait/sprite
But appearance system with explicit loads that just so happen to have no edits should be matching
I tried resizing it but it came out to 48x96 so it's still too big...
I'mma need to recolor it again at the proper size
cause something is off about the proportions of the tent I did recolor
it's not too hard of a fix but it's gonna take me a hot sec
ye generally best to use the unpack, i just set a new layer if i plan to do recolors just so i'm not doing something too big
What exactly is InternalAssetKey? 
It's a cp token that generates the magic asset names that when smapi sees, will immediately just read from that mods folder rather than attempt the load/edit asset pipeline
iirc they end up looking like SMAPI/{{ModID}}/Path/To/asset.png
but its very much an implementation detail that no one other than SMAPI contributors should even really know
even C# mods get an api to construct the values so they don't need to know
(i am just always filled with curiosity of docs
)
Ah, that makes sense, I think
I lost the link and can't find it T_T where is the 1.6.9 update guide?
So to confirm, this is DSV's current setup for the seasonals & weather outfits:
"LogName": "Abigail Base Seasonal Outfits",
"Action": "EditImage",
"Target": "Portraits/Abigail_Indoor, Characters/Abigail_Indoor",
"FromFile": "Art/VanillaNPCs/Abigail/{{TargetPathOnly}}/{{DSV.Core/ConfigValue:AbigailVariant}}/Abigail_{{Season}}_{{RandomThreeToken}}_Base.png"
},
{
"LogName": "Abigail Outdoor Seasonal Outfits",
"Action": "EditImage",
"Target": "Portraits/Abigail_Outdoor, Characters/Abigail_Outdoor",
"FromFile": "Art/VanillaNPCs/Abigail/{{TargetPathOnly}}/{{DSV.Core/ConfigValue:AbigailVariant}}/Abigail_{{Season}}_{{RandomThreeToken}}_{{DSV.Core/Weather:Abigail}}.png"
},```
with `Abigail_Indoor` and `Abigail_Outdoor` both Loaded & edited into Appearances. `{{Season}}` obviously is a default CP token, `{{RandomThreeToken}}` is a dynamic token, and `{{DSV.Core/Weather:Abigail}}` is a custom C# token. Is there any realistic performance benefit if I switch all that over to separate indoor/outdoor/season/weather Appearance blocks?
There's a bunch of stuff like the overlays that I have to keep as CP edits, so this'd be the main section that could potentially change
its faster reloading Data/Characters than reloading (and editing) an image, if those images can stay loaded at all times
that and the appearance system can be lazy and only needs to re-evaluate if the player or npc moves (and maybe menuing cant remember) so huge spikes from having to edit every npc's sprite and portrait simulataniously at 7pm shouldnt be a thing
Yeah, I switched as much of the time & location-based stuff to Appearances as I could to avoid that sort of thing. If I switched it over though, I'd then be editing more files for the overlay patches though - would that also cause delays?
from a performance standpoint, the main thing is if the overlays are ever being invalidated and having to run over and over again
Like this is the current mermaid pendant Target line for Abigail:
"Target": "Portraits/Abigail_Indoor, Portraits/Abigail_Pyjamas, Portraits/Abigail_EggFestival, Portraits/Abigail_FlowerDance, Portraits/Abigail_Luau, Portraits/Abigail_MoonlightJellies, Portraits/Abigail_SVFair, Portraits/Abigail_Maternity",
If I switched all the seasonal/weather stuff over, it'd be three times the size 
(eeeuh i should probably change my overlay then
)
Like if it needs to be updated other than at day start, you mean?
(There's a tradeoff between the performance impact of reloading textures and the memory impact of having them all kept loaded indefinitely. I think the sweet spot is generally to use Appearance for things that can change often like indoor/outdoor, and patches for things that change rarely like marriage and maybe seasons.)
I wonder if this will be true for FF, because any FF data edit causes reloading all the Furniture types in this file, unregister and register config menu and invalidate both Data/Furniture and Data/Shops to refresh them. I feel like editimage/load on a Furniture's source image would be cheaper
don't look at my crime
"Dynamic Eyepatch": true,
"Time": "{{Range: 0600, 1800}}"
},```
lemme just uh, change these to appearances... 
Makes sense, thank you!
And thank you as well, SinZ
(I come from the background of having 128gb of ram so I want maximum performance and dont care about the memory usage :P)
I'll take the easy option and leave it as-is then 😆
(i'm pretty sure because i do that, it invalidates every target so away i go, back to the trenches
)
Sorta related, but is a liberal use of dynamic tokens (with lots of randoms and conditionals, and also some cascading) taxing? I'm growing worried I'm using too much for such a small mod.
I hope not, because I use a lot of dynamic tokens across my mods 😆
CP Conditions only run on the update frequency of the patch, defaulting at DayStarted only.
Dynamic tokens iirc should be similar performance as just copy+pasting those expressions
C# Tokens depend on their implementation details as to whether they are fully dynamic or can be immutable or deterministic
Content Patcher has a lot of optimizations to skip unneeded updates. So if the dynamic token wouldn't actually change (e.g. because it only uses tokens which haven't changed), they won't impact the performance.
Odd question: Does anyone know off the top of their head when the power index changed for upgraded tools?
Also stuff like {{Range: 0600, 1800}} is only ever evaluated once and cp just remembers the value as Range is deterministic and 0600 and 1800 are constants and therefore immutable, making the full range expression also immutable
I was under the impression it still started at 1. Just learned it now starts at 0?
ok I fix the recolor to be the correct size and fixed things so that the recolor applies to all tilesheets instead of just the spring one
"Format": "2.3.0",
"Changes": [
{
"Action": "EditImage",
"Target": "Maps/{{Season}}_outdoorTilesheet",
"FromFile": "LinusTentRecolor.png",
"ToArea": { "X": 224, "Y": 96, "Width": 48,"Height": 80 },
}
]
}```
does this look good now?
discord why did you screw up the formating
Looks like it should be correct, yep
ok thanks!
now I just need to do the same thing but for the interior
although now I'm wondering if I want to go through the trouble...
I'm gonna test it first before I do the interior, the decide if I want to actually do it
so I just tested the mod and the tent is still the same, but there's a line under the entrance, I think it loaded but some how is under the vanilla tent?
do you have any other mods that could possibly overwrite that, like SVE?
I don't have anything that effects the tent, no sve, no map changes, I have elle's dirt recolor but that's it, maybe my tent is under elle's tilesheet?
i don't know what dirt recolor does, so lemme go look
"Target": "Maps/{{season}}_outdoorsTileSheet", yep
I had the same problem with their seasonal farm buildings and my house recolor, what fixed it was renaming my mod so that it loaded after elle's
you can do that in the manifest dependency
ok! thanks!
Ah nexus connection issues, why not
I'm gonna scream
I asked this user for a fucking log, they sent me back TIMESTAMPS AND LINKS TO THEIR LIVESTREAM OF THE FUCKING GAME WHAT
that's a new one
that's a whole new level on par with sdampi
(It's exactly this. Ask Pathos about how many mods he had to greylist over this lol)
Hmmm anyone else's mods falsly showing up as not opted into DP?
not checking at the moment but it happens often when nexus has issue
it happened to me and others in the past
Oh alrighty, good to know
(Though I have to wonder when Nexus isn't having issues ahaha)
im convinced at this point people will do anything BUT send a log 😭
I got this today, "I updated and it works now!" yeah, no shit
I somehow managed to hide "without more information"
buys rokugin a flight ticket so they can see the issue for themselves on my own machine
🤔 this might be an odd question, but how hard would it be to update Free Love? update broke it lol
I mean, if we can negotiate a bit, move the return ticket back by two weeks so I can roam around Europe for a while....
their first message was "Doesn't work anymore in the new update.... " btw
hiking in the alps seems fun
Tbh probably depends on your c# skills
Endertedi's working on an alternative called Polyamory!
Endertedi has a fork of the project in the ES server but also I think it's not 1.6.9 ready either
Is it known how much is broken with it from 1.6.9? Most of the time it can be fairly easy changes that fix things.
im not sure?
Maybe send the smapi log when you try to play it in 1.6.9
the only thing it says is "not compatible" so it's not being loaded
The real smapi log usually has more inf9
info*
In your %appdata%/stardewvalley folder
Or atleast thats where it is for me
ah Broken code in FreeLove.dll: reference to StardewValley.Farmer.checkForQuestComplete (no such method). i think is what broke it
I watched the video at the indicated timestamps... their complaint was about the ambient lights not changing properly. My mod makes ladders and shafts passable in the mines
Not even a little bit lmao

People will come up with the weirdest crap to somehow link to your mod, I swear
Next step would be checking the 1.6.9 changes / changelog for how that was changed.
They're playing with a ton of mods, they probably just installed mine at the same time and assumed because it's one they haven't used before
I've run into 2 people blaming one of my mods or AGE for a conflict when it was DTZ the entire time
Also had another issue where AGE was changing load order between two mods and making it seem as if it was the root issue for a conflict between two mods trying to patch the same method lol
oh i see it
AGE being a CP mod and changing absolutely nothing about any in game methods lmao
well, as modders we saw the weirdest stuff about how a mod break things inexpectedly because whatever BUT we also like, try to confirm the issue before
If the video had shown even a partial relationship to my mod I would have continued to entertain this, but like this is nuts lmao
like, the "eggs can't make mayo anymore because the mod i installed changes context tags in the pre 1.6 way and CP rewrite erase some data"
once you know why it happens the link makes sense, but before that, we were "???" "what do you mean this mod prevent eggs to make mayo?"
and yeah you're right to indeed not waste energy trying to understand it if the user isn't
I suppose to be fair, I did once have an issue with Professional Morris causing a random black square in the Wizard's tower because, for some reason, CA decided to put one of the Wizard's tiles on the townInteriors map right under Morris's blink sprite and I'd just EditImage replaced the whole section without realising 😆
This little bastard tile 😆
ahah 😄
yeah that is sneaky
and it's why i can accept users having weird "i installed this then noticed that" moment BUT then they need to have more solid elements before coming with "it IS this mod"
Anyone here have any experience of modifying monster base spawn rate?
🤔 so the game isn't happy about reference to StardewValley.Farmer.checkForQuestComplete (no such method). which got changed in 1.6.9? but im not sure how to fix that...
Once I'm back at my computer I can look for where chu and Pathos told me how to fix a couple of specific issues that might help
Well, before that, you should probably look up on how to set up Visual Studio with Stardew package first.
(It’s updated for 1.6.9+ :p)
Yay! You're the best
Custom Dungeon Floors does it, could look at that? There's a 1.6 continuation on Nexus.
Query for weather would be like
'{{Weather}}' = 'WeatherID'
? 
Yep
Assuming that's like fake syntax anyways
Are you trying to do an actual Query?
Basically for queries, if the token returns a word rather than a number, you put single quotes around it
"When": {
"Query: {{Weather}} = 'Rain'": true
}
Rokugin be like KATH where your syntax
Better me than SMAPI :P
What's your full query, Kath?
What are you trying to accomplish because not using query is easier
But yeah, query is for like advanced stuff, you could just do a normal When for that lol
Query for if weather is happening today or happened yesterday then: true
(forgetting quotes and such around tokens in my queries was why it took me longer than expected to finish my electricity bill lol 😆 )
using EMP and CS
Hm, the Weather token only tracks weather in the current or specified location context
Ah shoot I have to work on that o-o
Not sure if you have something else that tracks previous weather
"When":{
"Query: '{{Weather}}' = 'kath.weathering_HeatWave' OR '{{Esca.EMP/GameStateQuery: CS_WEATHER Town -1 kath.weathering_HeatWave}}' = 'true'": true,
}
The second part will need to be '{{Esca.EMP/GameStateQuery: CS_WEATHER Town -1 kath.weathering_HeatWave}}' = 'true'
le evil quotes
😄
the game doesn't complain yet to the disaster I am causing
Does anyone know where the code is for players to get a prize ticket after completing a special order?
Unfortunately the main trouble with queries is that CP doesn't complain about issues with them, it just silently doesn't work
Gotta run a patch summary & patch parse to figure out where the problem is
GameLocation performAction "SpecialOrdersPrizeTickets"
hence the yet, gotta check if the disaster works first
Thanks a lot
Good lord the cows went boom, I edited something weird in the animal data 😄
Does anyone can desinge the title for my modpack
!commissions
If you're looking for people who do mod commissions (either art or code), here's a wiki page with a non-comprehensive list of people who do them: https://stardewmodding.wiki.gg/wiki/Stardew_Mod_Commissions
No one will do it for you for free
God damm
Also, modpack? Like Minecraft modpacks? I hope you don’t mean ZIPping up multiple mods and letting people get that from somewhere
yeah it's that curseforge thing
Nexus has collections or something right? Not quite like modpacks
are collections like the thing where they're all in little groups and you download all the mods shown in the group?
I believe it's something like that
It goes through Nexus though, and all mod authors actually get credit
(my only experience with multiplayer is going to my partner's computer and downloading all the necessary mods lmao)
It does require you to use Vortex though…
Ew
Time for cow heat stress simulation... if I edited the data correctly 😄
aand im stumped 
player stat beveragesMade is ze wine and juice?
Le vine et le jus, vrai
....I hope no actual French person finds that butchered French offensive
It's for every item harvested from a keg
as of 1.6, rice to vinegar!
hmm a refreshing vinegar beverage
Tasty vinegar
hey, what's the "NoFurniture" Tile-Action doing?
https://stardewvalleywiki.com/Modding:Maps#General
Prevents player from placing anything on that tile
well nothing exploded so i guess it works
what is needed to talk to gill? i changed the adventure guild map here and there and now his dialouge won't pop up anymore :S
nope i never used sve, i work on my own mod that changes interior maps
Guess it depends if they broke Gil or if there's still an SVE bug with him
Oh ok, so just a standalone mod
he doesn't have a tiledata, is he hardcoded?
you may have removed an important tile or changed a tile position that is needed
(what is gil, anyways?)
i mean there's no tile property that says "gill talking" nor map proverty so i'm lost xD
an old man in a rocking chair
let me look at the adventurer's guild map
i looked at the original one but cant find anything that seems related to him
ty : )
then he's probably hardcoded..?
i mean he's not doing much, but still better than numb : I
hmm
That's amazing
If you change his tile index you break him
rule of thumb: never move gil
this.gil(); i am trying so hard not to laugh right now
(if this was a try not to laugh challenge, i already failed XD)
ok thanks folks x D
Looks like those tile indexes are all just the bottoms of his sprite in the three different frames of his animation
yep it's all the 12 tiles existing on the sheet about him
i am drained....
Lol, that method is private too 
sorry 😅
i'm new to all this just learning by doing. but thanks for the help
yay i fixed it ^^
where can i find the hardcoded stuff if i want to check myself?
I keep finding missing commas 
*commata
!decompile
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
Nonsense like this is why I'm just replacing the base tilesheet sections for things like Gil in my Zelda NPC mod. xD
is this the aformentioned beam?
Avi's Beam
nuh
Nope
my nemesis is the 90degree angle on the right side
That was the right-angled portion of the spouse room in base
then it's something funky with my farmhouse map
i dont have a beam though
leah's room is beam-free
The pillar's been there AFAIK
it used to not draw the 90degree, so i used to be able to have a fun angular room
ah
and now i can finally test what ive been trying to test this whole time!!! 😭 my greenhouse
That's weird, did the spouse rooms change then? I never really looked at them before
RIP rounded corner spouse rooms 
I was gonna say octagonal but that was too many sides
I don't know that anyone's made an octagonal spouse room YET
Oh wonderful I broke the mail somehow 😄
uh oh
....you know now that i think about it... there being no normal entrance is... is uh... HM.
farmer just spawns out of the bush ig.
maybe i should move it...?
question anyone know exactly what this bug means?
this is the corresponding code for the object it's referencing
a little confused cause I did the exact same format for the name with one of my other mods, and it works fine there
!json may help seeing the full thing and where there's an issue


