#making-mods-general

1 messages · Page 183 of 1

brittle pasture
#

jail

uncut viper
#

i was mulling over how feasible it might be to act on that one comment i got on special power utilities however long ago where a user wanted to be able to click on the icon in the Powers tab to toggle the ability on and off

brittle pasture
#

why not just patch the GSQ itself

uncut viper
#

bc the conditions for each of them tend to be different

#

and the GSQ is just for the icon

#

not the actual power

brittle pasture
#

why not just patch every GSQs

uncut viper
#

the GSQ thing was an example

lucid iron
#

idk what if i didnt even use the gsq to implement my power

lusty elm
#

oh, derp, if i'm looking for the Content Patcher Config stuff, I should be looking under Content Patcher github rooDerp

uncut viper
#

bc sometimes things dont check the GSQ

#

some things would need manual compat

#

some things i wanted to be able to automagic

#

and i wanted to get other mods that might use them too

lucid iron
#

also some powers dont even make sense the turn off yggy

uncut viper
#

like what

lucid iron
#

do u unlearn dwarfish

uncut viper
#

yeah, why not

#

search for every method that calls ldstr HasDwarvenTranslationGuide

velvet narwhal
#

yeah like, why can't i just unlearn it on the player

uncut viper
#

i never said any of this was a good idea

velvet narwhal
#

what if i'm tired of using the online translator KEK

calm nebula
#

I like to say sometimes players want nonsense

uncut viper
#

if every power used the same check in the code as it did on the powers tab itd be easy

tiny zealot
#

i gave people debug commands to unlearn portable hole's upgrade powers if they need to for some reason

calm nebula
#

Like this person

#

This person wants gloves but not to knit the gloves

#

A quandary

uncut viper
#

but instead i need to check if the GSQ for the icon asks for an event and then search all the code everywhere to see where it checks for that event

#

and whatnot

rancid temple
#

I forget every time how high you have your movement speed SMCKekLmaoDog

uncut viper
#

10 is not high enough

lucid iron
#

perhaps u can just offer ways for a C# mod to add ways to disable a power blobcatgooglyblep

#

and impl the vanilla power disabling

uncut viper
#

a C# mod can already do that

#

its their mod

lucid iron
#

no like, do it in ur ui

uncut viper
#

in fact Special Power Utilities does already offer power disabling

#

but its not toggleable

#

and only for powers that support it

#

chu this IS me trying to figure out how to do it in my UI

lucid iron
#

think like can u click on it in the powers tab and make it go away?

uncut viper
#

no thats what this user wanted to be able to do

lucid iron
#

the thing i was imagine is more, i hand your API a ToggleMyPower delegate

#

u call it for me whenever user press the icon on the ui

uncut viper
#

i dont think concernedape is gonna use my API for the vanilla powers tho

lucid iron
#

yea but there is a finite amount of vanilla powers, it wouldnt take much effort to do em right

uncut viper
#

would u like to write all those transpilers for me

calm nebula
#

1.7: CA adds 42 new powers

tiny zealot
#

not even that unreasonable. 1.6 added something on that order

calm nebula
#

Hw much don you guys know about the "we listen and don't judge" meme

rancid temple
#

It's toxic

uncut viper
#

one of the power icon GSQs is just PLAYER_HAS_MAIL Current HasTownKey
thats already going to be annoying to transpile every single place that checks if the player has that mail flag

#

cuz they definitely dont always use the GSQ form to check

brittle pasture
#

doesnt every vanilla power either use mail or stats

uncut viper
#

also what if the C# mod doesnt provide a delegate

#

no some use events

lucid iron
#

then u dont let ppl toggle it blobcatgooglyblep

uncut viper
#

but chu the whole point was to be able to toggle every power

brittle pasture
#

okay, mail, stat, events
in my unbiased opinion any powers that dont use these are fake and shouldnt be supported

lucid iron
#

but hm back to actually doin this from button side instead of api

#

how do u detect what patch

uncut viper
#

i just had the urge to do somethin with Special Power Utilities recently but i dont know what

#

and i still dont know how to make it more of a framework for custom powers

#

what do you mean

#

like decide between postfix, prefix, and transpiler?

lucid iron
#

this

#

do u have some kinda generic catch all transpiler

brittle pasture
uncut viper
#

i can construct transpilers dynamically

#

im dropping support for Selph's powers in the next SPU update

brittle pasture
#

(it reads a CustomFields ModData on the host farmer with a custom GSQ)

lucid iron
#

evil

uncut viper
#

farmer has customfields?

brittle pasture
#

ModData

uncut viper
#

oh that makes more sense

#

i didnt realize you also had a player mod data gsq

lucid iron
#

why did u need this instead of mail flag

uncut viper
#

out of curiosity how does ur custom GSQ differ from vanillas

brittle pasture
#

well it's because it's a number value and the GSQ is "is this number higher than 0"

uncut viper
#

🤝

#

thats also 1/3rd of my mod data gsqs

calm nebula
#

Lol

uncut viper
#

sorry for stealing from you SDVpufferpensive

#

(accidentally)

brittle pasture
#

so toggling that off would require a custom code to set that value to 0, while also remembwring what it was so you can revert it back when you reenable it later

lucid iron
#

Isn't that just stat

uncut viper
#

or just adding a ! at the start

#

i think

brittle pasture
#

unfortunately stat isnt synced MP, and this stat is one I want to sync

uncut viper
#

it is just a stat tho

calm nebula
#

But with proper syncing!

lucid iron
#

Right

uncut viper
#

fair reason

#

but then why store it on the farmer

calm nebula
#

(Aquarium writes the last donated fish to the farm's moddata)

uncut viper
#

anyway i did get my original answer sorta which is yes i can get every relevant assembly if i need to SDVpuffersmile but i probably wont act on this information any time soon anyway
but if any of y'all have better ideas for turning SPU into a framework proper im all ears

#

otherwise keep an eye on your assemblies

lucid iron
#

panik

brittle pasture
#

because

I guess I could save it on the farm

calm nebula
#

I'm going to make an excuse to make a power

#

And store it in NetWorldState

lucid iron
#

i think the thing with powers is that they dont have strong unifying theme bolbwaitwhat

uncut viper
#

can you at least cecil a property into networldstate if you're gonna do that

lucid iron
#

they r almost more like key items

calm nebula
#

AND it is on if the 64 bit number passes a hamming code

#

And False otherwise

uncut viper
#

yeah theyre all very highly specialized and i cannot think of a single real way to make them more accessible to CP than they already are

calm nebula
#

Enjoy!!!!!@

uncut viper
#

i mean it would be easy to support toggling your power then

#

i would just toggle it visually and not actually change anything and if the user complains i tell them to report it on your page instead (but your page has comments disabled (win win))

#

ive already got other ideas on my theoretical plate anyway

#

i still wanna make an in-game ilspy

#

no real reason why i just want to

lucid iron
#

how would that work DokkanStare

uncut viper
#

how wouldnt it

lucid iron
#

no i mean

#

what is your architecture

uncut viper
#

stardewui

#

thats all ive got

lucid iron
#

do u load in the ilspy decompiler

uncut viper
#

ive not put much thought into it

rancid temple
#

Hmmm, can I Automate a global inventory?

uncut viper
#

no no

calm nebula
uncut viper
#

i mean. maybe. if theres a piece i can load to translate il into c#

lucid iron
rancid temple
uncut viper
#

mostly i just thought itd be neat to be able to see live values of things in game, like fields and properties

#

but for any field and any property

calm nebula
lucid iron
#

otherwise uh, harmony patch automate to support ur object

uncut viper
#

not enough for me tho

#

i want to get the filterQ of the currentMusic Cue

brittle pasture
#

that can just be another hotkey

rancid temple
#

I had the chaotic desire to make a new UI for LA, it passed thankfully

uncut viper
#

i dont hav enough keys on my keyboard for every field in every class

calm nebula
#

I had the chaotic desire to make gloves

brittle pasture
lucid iron
#

i dont really understand how ilspy helps with this, cus that seems more like problem u solve with reflection

uncut viper
#

i think though if theres one major theme across all my mods is that i dont really care if theyre useful or enjoyable to anyone but me

#

because i just like to code them for fun

#

the end goal is mostly irrelevant

#

i was just comparing it to ilspy

#

like the UI and stuff

#

not actually loading ilspy in game

#

it would be all reflection

brittle pasture
#

(I see the emote and I would like to say that the automate API is pretty robust, there is no need to fear)

rancid temple
#

NGL, as someone who likes debugging, I would love to be able to poke around that level of information in game SMCKekLmaoDog

rancid temple
lucid iron
uncut viper
#

like this. but in stardewui

#

oh sorry avi hold on

#

there we go

velvet narwhal
#

i'm ngl my eyesight's been blurry all day so being flashbanged actually made everything clear

uncut viper
#

im helping

#

i actually only started using dark mode on ilspy recently

velvet narwhal
#

i... open the d.il in vs22...

uncut viper
#

thats not a bad way to do it either

#

i just prefer using ilspy

#

unless i need to search for specific strings or smth inside invidividual functions

#

ilspy takes up practically nothing in terms of system resources so i can just easily keep it open all the time

#

Discord is currently taking up more resources than ILSpy, which is baffling to me

brittle pasture
#

just electron things

loud rain
#

hi! i’m a beginner on modding. Is there a way to make the characters (spouse or dating) react when farmer reaches a high heart level with other character? (with a event, dialogue or something)

uncut viper
#

Haley has dialogue for if you marry or divorce Emily but i dont know if thats limited to just NPCs that are listed in the character datas "friends and family" field or if its just any name will work. but you can also add conversation topics based on heart levels too and give NPCs dialogue for those topics anyway

#

depends what kind of reaction you want and when, but theres a number of ways to achieve the general idea of it

loud rain
calm nebula
#

Just conditionally edit the characters dialogue based on the other characters hearts

#

This is the opposite but

teal bridge
#

Discord's crapulence is not Electron's fault.

gentle rose
#

oh ofc, but the resource usage is definitely not helped by it being electron. Dangerous combo of electron being resource-hungry and discord being discord

uncut viper
#

i want a command line discord

#

connected directly to making-mods-general only

calm nebula
#

But my emojis

teal bridge
#

But then how would they spy run analytics on you?

uncut viper
#

ASCII art

calm nebula
#

Also what I'd I want to send you a blurry photo of my cose

uncut viper
#

ASCII art again

brittle pasture
uncut viper
#

well what help are you then /j

#

it was enough to make me google it though and you seem correct

#

which is pretty neat

brittle pasture
#

also most modern terminal emulators can actually display full images

rancid temple
#

Okay but it would be funnier if they were painstakingly converted to ASCII art instead

brittle pasture
#

you dont even need to do manual conversions, there's a lib for that

#

the lynx cmd browser uses it

uncut viper
#

theres gotta be a mod that lets me talk in discord from within stardew right

teal bridge
#

Someone went to the trouble of doing it for Twitch (apparently), so I'm sure Discord is not far off.

uncut viper
#

i would unironically love to be able to just have making-mods-general in my chat while im testing my mods

#

any time theres an image embedded just download it from the internet and load it up into an image viewer menu as a reason to have a stardewui dependency

teal bridge
#

How's that different from having it in a separate window, though? Especially when you've got 3 monitors.

uncut viper
#

ive got other discords i could keep open

#

or other channels!

teal bridge
uncut viper
#

yeah but i want an excuse to finally try out stardewui

teal bridge
#

The text chat without images will give you plenty of practice with that. Just try to build an infinitely scrolling, wrapping text layout with vanilla.

uncut viper
#

i would just send the messages to the actual in game chat box

teal bridge
#

I never use the in-game chat box, does it support such modern and groundbreaking features as a movable cursor or copy and paste?

uncut viper
#

i thiiiiink so? i also dont use it

teal bridge
#

(I ask because the vanilla text box widget clearly does not)

uncut viper
#

its a different kinda box

teal bridge
#

Looks different, yes. Don't know if it's implemented differently.

#

In any case, if you wanted to add anything fancier like @ popups then you'd have to go outside the chat box.

lucid iron
#

I remember one that automatically put u in a discord group chat when u join coop

teal bridge
#

Or avatars, roles, hyperlinks, etc.

uncut viper
#

that said its not something id try anyway bc i forgor that using discords api is meant for bots only and they really dont like you connecting your actual account through the api stuff

#

id rather not risk my account for silly discord mod for sdv

teal bridge
#

Never imagined it was a serious plan to start with.

uncut viper
#

i did go look at their C# library to consider trying it out before i remembered

lucid iron
#

I think a regular bot can read any message sent in a channel and therefore "forward" the message to ur game

uncut viper
#

cant send messages though, iirc

lucid iron
#

It could tho

#

Just as itself

uncut viper
#

if it uses the bot api, which isnt allowed for actual accounts

lucid iron
#

Not as a user

uncut viper
#

i mean. yeah if you made an actual bot account you definitely could

#

but im not gonna make a bot account and ask the junimos to invite it to this server so i can talk with it either

gentle rose
lucid iron
#

I remember this one bot that was able to let non nitro people use nitro emotes

uncut viper
#

my account is far too important for me to wanna risk it. i mean self-botting already is breaking the rules

uncut viper
#

you could do that manually before they fixed it

#

if you knew the nitro emote id

lucid iron
#

It worked by changing its own pfp and name to match whoever attempted to use the emoji

#

Very strange

gentle rose
#

yeah, it's still around, but I'm pretty sure every server I've ever been in that used it realised it's not worth it

#

nobody ever bothered to use it because you'd have to type out the emote yourself, you couldn't edit or delete the message afterwards, etc etc

flint stratus
#

Hey all, feeling really dumb trying to put doors inside my custom NPC's house. I've had no issues figuring everything else out but I just cannot figure out for the life of me how to make working doors inside the building. If anyone would be willing to help that would be so greatly appreciated

naive wyvern
# flint stratus Hey all, feeling really dumb trying to put doors inside my custom NPC's house. I...
Stardew Modding Wiki

This is a mildly advanced guide for modders that assumes familiarity with Tiled, Content Patcher, and map modding fundamentals such as the difference between Map Properties and Tile Properties.
Interior doors, such as the one in Figure 1, are interactive map elements with hardcoded behaviour (see InteriorDoor.cs). There are three types in the b...

flint stratus
naive wyvern
#

Good luck with your doors ! And no problem i am but a humble messenger 🙏

rancid temple
#

Ooh, maybe I should link that in my EMA stuff for the doors

naive wyvern
#

Its super mega useful

rancid temple
#

I had to learn the hard way SMCKekLmaoDog

flint stratus
#

Reading that I'm like wow I was doing it all wrong!! No other online source makes it this easy so like EXTREMELY grateful hahaha

naive wyvern
#

Thats so real
When i first started doing the same thing for my own custom map i was completely lost

#

It just so happens that around that time Kailey was in the middle of planning out this tutorial

flint stratus
#

haha its like you think you are comfy and know what youre doing until one thing comes along and is like chilllllll slow down for a day or two hahaha, bless Kailey for the effort to help us all

gray bear
#

you guys make maps? BeeaWow

sharp hornet
#

Is it possible to prevent a mail to be sent ? 🤔 I want Emily and Shane to behave more like others bachelors and make theirs recipes (salad, red plate, pepper poppers and strange bun) available elsewhere

slender badger
#

Sure, you can just edit Data/Mail & set the mail to null

brittle pasture
#

generally blanking out the mail works for preventing mail gets sent, but in this case those are just the generic "you have hearts with me so I'm sending you this recipe" letters

#

so I think you'd just get blank mails in your mailbox with the recipe

#

I'm not sure though, maybe blanking the mails will indeed prevent them from getting sent, but regardless I still recommend changing the recipe conditions in Data/CookingRecipes

sly lantern
#

When trying to create a map how can I make an object transparent when the player passes behind it?

calm nebula
#

A lot of c#

sly lantern
#

There isn't a way to make this happen with a tile property? I just want it to behave like a tree, when you pass in front of it nothing happens, but when you pass behind if fades a bit

tiny zealot
#

no, there's no way. C# is required

lucid iron
#

Maybe u could make a fake building

nova gale
#

@thin hamlet so one thing you should consider (mostly from a compatibility point of view) is ensuring that your mod id is included in your object identifiers (so instead of "Ammolite" for the entry key, use "{{ModId}}_Ammolite" that way if someone else also adds an entry for Ammolite, you don't conflict and have weird results based on the load order of the mods. Content patcher is smart enough to replace the literal string {{ModId}} with the mod id in your manifest as well, so you can use that as a placeholder in all mods and it will automatically handle it for you

sly lantern
#

It's inside a greenhouse so I don't think making a fake building would work

lucid iron
#

It would but it needs some shenanigans

#

Buildings included let you spawn in building iirc

#

You can just make ur greenhouse buildable on the inside ofc, i did that

thin hamlet
#

ohhh you mean in the IDs?

#

Then I did that for MCGM iirc, but i can check

#

I’ll do a mod rollout tomorrow then, updating the IDs and tweaking a few things

nova gale
#

Well, careful, changing the IDs can adversely impact your current users

thin hamlet
nova gale
#

You can leave it for the current items and just make new ones match, release a patch and warn folks it is only for new games, or release and let folks know the existing items will become error items

#

Or duplicate the items and make your nodes start dropping the new one for a few versions then clean up the old ones

thin hamlet
#

.-.

#

Unless that isnt affected

nova gale
#

Yup! Honestly for TCC you could probably get away with a swap since it's super new, the other one has been around longer so it might not be worth changing

#

Especially if you aren't going to add new stuff to it

thin hamlet
#

I thought MCGM had unique IDs already

nova gale
#

(I assume new stuff you'll be adding to TCC mostly?)

thin hamlet
#

I patched it early on iirc

#

TCC mostly yeah

#

MCGM is the conversion mod, not much besides compatibility with other mods probs

nova gale
#

I can check again but it didn't look like it

thin hamlet
#

Oh

nova gale
#

I'm at work now so I can't look until this evening

silver storm
#

Is it possible to create mods on the cell phone?

thin hamlet
#

I just realized it was logs i changed

nova gale
#

I mean they are unique with respect to themselves, but since they are the names of the mineral the likelihood of conflict is higher

#

Since it's a natural thing to call it

thin hamlet
nova gale
#

Not sure

thin hamlet
#

dies inside

slender badger
slender badger
#

🤨

#

No

#

You can ask nicely if there's something you want

calm nebula
#

I really would not recommend changing your item ids for minerals tbh

#

The museum is the issue

thin hamlet
#

Thats what I figured

#

I’ll make a note to add unique tags from now on

#

Good thing its only rocks and nothing more yet i guessSDVpufferblush

#

Changing tags shouldn’t be a problem though right? Looking through the files, I missed a crystalarium ban in MCGM

calm nebula
#

Tags are fine to change

thin hamlet
#

I definitely want to balance prices and stuff later

#

As more are added

nova gale
#

If your adding tags anyway, i could add compat for all future minerals you add without changing recipes if you have them a common tag

thin hamlet
#

Could I, say, use a tag to be able to draw a random mineral from a rock box once each day?

nova gale
#

Probably not, mostly tags are just for categorizing, some piece of code has to use the tag to make them do something specific

thin hamlet
#

Okie

nova gale
#

But if you mean like make a machine that picks a random mineral

thin hamlet
#

I figured that might have a bit more work to it

nova gale
#

And only the minerals that have a specific tag are options

thin hamlet
#

Yeah something like that

nova gale
#

Then yes

thin hamlet
#

Sorta like the statues

#

Collect a random mineral each day

nova gale
#

But you'll have to add the machine (that's the bit of code that respects your tag)

thin hamlet
#

Okie

cyan marsh
#

Does anyone here have an issue with FPS with my Event Repeater?

flat sluice
cyan marsh
#

any others?

slender badger
#

Are you still updating Event Repeater? I thought it was made obsolete in 1.6 since CP can do repeatable events now

flat sluice
calm nebula
#

Data/TriggerActions!

#

Mark the event as unseen with onr

flat sluice
sly lantern
slender badger
tiny zealot
slender badger
#

You can set all sorts of conditions for it too, so you can make it repeat however you want. Make it repeat weekly, once per season, once per year, repeat only until you've reach a certain threshold, all sorts of options

thin hamlet
#

Funny visual of breaking a rock and suddenly Pam disappears

#

The literal crystal of death SDVkrobusgiggle

tiny zealot
sly lantern
#

Thank you so much!!

tiny zealot
#

you're welcome! all set SDVpufferheart

agile terrace
#

Quick question, it doesn't hurt for sprite sheets to be longer than what the game is needing right? So like if I have a vanilla sheet that's 6 rows long but there are 7 rows on my sheet, vanilla's not going to have an issue with that right? it'll just call from what it needs and ignore the extra space right?

lucid iron
#

Depends on the context

true coyote
#

if im adding my fence as a new craftable, in the changes section of the content json do I still use editimage for seasonal changes or something else. my brain is just not functioning right now so I dont know where to go beyond the config schema atm

#

honestly I havent even figured out how to add the fence as a custom item 🤪

agile terrace
# lucid iron Depends on the context

This is for character sprites, specifically the wizard. I just have a really beefy mod that, if I could have the game just read from the same sprite sheet would reduce the mods size drastically... and my work load...

lucid iron
#

character sprites use frames for their drawing source rect so if you do not reach the additional frames then you are fine to put whatever there

#

However, i don't recommend loading random object sprites onto character/wizard bc that'd be fairly confusing

agile terrace
#

XD

#

No what's going on is there's a whole slew of different romancing the wizard mods...

#

And so they all use a -simmilar- but not the -same- sheet

lucid iron
#

Ah yes the young and dashing wizard genre

latent mauve
#

Honestly, most of the romancing mods are going to be incompatible or throwing out the earlier sheets anyway

#

So merging them won't help

lucid iron
#

So what i recommend would be, have 1 image that's the generic shared wizard sprites

#

Have the per wizard romance mod extra sprites on their own images

#

Use editimage to put these extra sprites on the right places

agile terrace
#

So there's actually not overlap?

lucid iron
#

You may extend the spritesheet down as u like, using fromarea and toarea

#

This way you have no dupes

agile terrace
#

They're largely identical.

#

The only one that overlaps is that last squatting one overlaps with some of the kissing ones but the kissing ones don't actually work? so there's no issue

lucid iron
#

Yeah so just isolate the different ones to their own images

agile terrace
#

I... Am unsure how that is better?

latent mauve
#

Also leave the consistent blank spaces, those are necessary because certain spriteindexes are for things like flower dance and weddings

lucid iron
#

Well imagine if you want to tweak wizard walk right sprites in the future

#

If there is only one shared image then you just edit that and done

#

If you have 4 variants u need to copy that over 3 more times

slender badger
#

You'll have the same number of files, but they'll be smaller files and easier for you to manage, basically

#

Only other way to significantly reduce things would be to cut compat with something

agile terrace
tiny zealot
#

the core feature is working, so now i have to do... the other stuff

slender badger
agile terrace
#

Yea, if I could just... Have it all call to the same group of 12 sprite sheets that would make my life so much easier... Especially because I'm not that good at the coding part.

thin hamlet
# nova gale Not sure

There is a clearmuseum debug commands but im definitely not making people do that because they donated one rock i updated the ID of

#

It removes EVERYTHING

#

so ill just add the mod ID in the names going forward

reef kiln
#

@brittle pasture I can use Additional Tree Equipment mod, Dalion update his mod so they work together. 😀

slender badger
#

For the wizard though, since there is so much overlap, you could get away with having a shared set of sprites like Chu said and then just patch in the crouch or kiss sprite depending on the mod

agile terrace
#

They don't overlap though?

slender badger
#

The portraits are gonna be the sticking point though since they're all different

agile terrace
#

Like for real.

#

Oh yea I'm not changing the portraits

slender badger
#

Sorry, awkward phrasing, I meant overlap as in they share the same sprites

agile terrace
#

I've got that set up how it's going to have to work

slender badger
#

Not overlap as in different ones on top of each other

agile terrace
#

Why would it be an issue that they use the same sprites in the same position?

#

I'm really confused right now

slender badger
slender badger
latent mauve
#

The ones that use the same sprite in the same position are the 'group' sprites that we are calling an overlap, they exist across multiple versions of the sheet

agile terrace
#

Ok but they do use the same sprites in the same positions?

slender badger
#

Yes, that's what we're saying

latent mauve
#

Correct, nobody said they didn't

agile terrace
#

Ok so why do I have to make multiple sheets then?

latent mauve
#

So, for example, if you made a png of JUST the greenhaired sprites and the two under it (not any other sprites), you could then use a ToArea patch only when the mods that use it are included

agile terrace
#

Ok but WHY would I do that when the green haired sprite is in the same place for all mods?

slender badger
#

Because the mod might update in the future and put a different sprite in that location

#

Unless every single mod has that sprite, which I know they don't because RomRas & LFL don't have it

latent mauve
#

An immediate example is the sprite right above the flower dance(?) sprites, that one is different but in the same location

agile terrace
#

As I said before, the squatting one that covers the kissing sprite is the only thing that's in competition and the kissing sprite isn't getting used corectly by any of the mods that use it.

latent mauve
#

Potentially the other mods could do the same thing in the future, romancing x NPC mods don't usually care about compatibility with the other romance mods because they don't expect you to use multiple of them at once

slender badger
#

It's a best practice thing. You can go ahead with copying it across all of them if you like, but it might come back to bite you

agile terrace
#

That is very fair.

#

Thank you for the explanation. I'm a little hard headed and that's a lot of work for the right now while I'm just wanting to fix how the kissing isn't working, but... I can certainly see what you're all on about.

latent mauve
#

If this is for your own mod, you CAN change the kissing spriteIndex via the Data/Characters entry if memory serves

#

If it's not set, it uses 28, but some of the mods might be changing the index in the code (and not the image in that index)

agile terrace
slender badger
calm nebula
#

How!!!!

tiny zealot
#

combinatorics, i think (hard of hearing variant can be set independently of ethnic background, if memory serves)

slender badger
#

She has lots of outfits! 😆 Plus three variants, compat stuff (NPC Adventures, for example, adds a scared jump sprite, so that needs to be patched with all of her outfits), hair cuff overlays which could theoretically have the duplicates removed but it'd be a pain in the ass to code, hand overlays for the HoH config that needs to match the skintones for the three variants, makeup overlays, her cow photos...

#

It adds up, lol

#

I should remove the NPC Adventures compat now that it's dead, thinking about it, but that'd be effort 😆

uncut viper
#

just re-code it all to use localtokens templates SDVpuffersmile

#

should only take you an afternoon or two or many

slender badger
#

Honestly, my first thought once the local tokens finally clicked was "can I use this for DSV to streamline things" SBVLmaoDog but then my second thought was "that sounds like a nightmare and I'm not overhauling the code again if I don't have to" lol

uncut viper
#

good to have in the back pocket for DSV 2 /j

slender badger
#

There would be some stuff I could use it for to reduce the coding, but that wouldn't help with the images

tiny zealot
#

i'm not sure how much it can reduce complexity, but it can sure reduce boilerplate, which is still nice but maybe not worth an overhaul right now

uncut viper
#

convert it all to C# to dynamically construct images pixel by pixel

latent mauve
#

Just got a question on my mod page about if it's okay for a NSFW NPC to use an apartment and I am confused as to why it wouldn't be? Did Boarding house or the Saloon second floor limit theirs in that way?

slender badger
#

One of my long-term dream concepts for DSV actually has been a paper doll model where characters would randomise various pieces individually (like shirt 1+jacket 1, shirt 1+jacket 2, shirt 1+accessory 2, etc) so that you could see more variety with the existing art assets, but that would involve overhauling the art too and that'd be more of a process than overhauling the code SBVLmaoDog

#

(plus I couldn't get the shadows to work nicely)

latent mauve
#

(so that it's established: so long as the room isn't intentionally breaking someone else's room, I don't care who moves in)

slender badger
latent mauve
#

I suppose, but it's not like the NSFW is being baked into my mod, it's a separate NPC mod that I can choose not to use

slender badger
#

Yeah, but it's still your mod that they'd be using. I feel like it's pretty respectful of them to ask 😄

latent mauve
#

I am just wondering if this got asked of the other mods that used to fill this niche, I guess xD

slender badger
#

I would definitely want someone to ask before adding anything NSFW to one of my mods, because chances are I would say no to it

latent mauve
#

If I had a character that they were making NSFW then yeah, I might care, but it's literally just a building with rooms in it

slender badger
latent mauve
#

Now, if they want to make the building itself romanceable... You do you, I guess?

tiny zealot
latent mauve
#

That's fair, I just don't think it makes sense to restrict it on my end

tiny zealot
#

also fair! that's a perfectly reasonable decision

calm nebula
#

What is Saloon Second Floor?

uncut viper
#

i think it adds a third floor to the saloon

slender badger
#

Adds a second floor to the saloon with rooms to rent for standalone individual NPCs

latent mauve
#

Probably not the actual mod name, I am blanking on it, but it adds a second floor 'inn ' of sorts

slender badger
#

Nah, that is the actual name 😆

latent mauve
#

Aptly named then, if my half asleep brain got there

tiny zealot
#

reading the decompile for a function over and over again, jumping around to other places in the codebase, utterly not understanding how this feature works, until finally: there was a ! in that condition and i didn't see it so my brain deleted the subsequent block and i never read it SDVpufferflat

#

who (ILSpy) would write a condition this way
!(commandToken == "$action")

#

(related: the decompile for this particular function, Dialogue.parseDialogueString, is maybe the worst one in the whole codebase. it's ridiculous)

scarlet pasture
#

I'm looking into how to create dialogue mods, but I can't find the default marriage affection dialogue in the character or character marriage file. Where is it?

latent mauve
#

I mean, you can definitely create your own for the character which will take priority, but a lot of the defaults that get reused by multiple characters are in StringsFromCSFiles, I think? It's called something like that.

tiny zealot
#

there's a default marriage dialogue file at Characters/Dialogue/MarriageDialogue (without any particular spouse's name). the character-specific ones override what's in there

tropic walrus
#

Is it possible to have shops accept context tags as trade items instead of specific ids?

wanton pebble
#

Like put everything with a specific context tag in the shop?

tiny zealot
#

no, i think TradeItemId requires a specific id

uncut viper
#

i dont think thats possible

latent mauve
#

You would have to make separate item entries for each possible trade, can't just do it via context tag, yeah

wanton pebble
#

Yeah accepting it as currency requires items

scarlet pasture
wanton pebble
#

Putting all of an item in a shop is possible, but not "any item in this category can be used to buy X"

#

My guess that will never really be possible without C# Because the game draws the item used to trade

#

So if you put in an entire category, You need to make a label that instantly makes the person think say "furniture"

#

And a user would be confused if it randomized the furniture image per day

uncut viper
#

i think (but could be wrong) chu was doin somethin with context tags at one point and made the item like, switch between a different item in the category every second or smth

#

i might also be misremembering

wanton pebble
#

That might be possible for a limited number of items!

uncut viper
#

could also add a like "hover over the applicable items when you highlight over the shop entry" thing

#

er, highlight the applicalbe items

wanton pebble
#

But as limit x approaches infinity It would just constantly change the image

wanton pebble
uncut viper
#

thats true. it works well enough for minecraft mods though

wanton pebble
#

I like this

#

Something like a click here to see eligible items

uncut viper
#

i think the only problem would be like

#

if you have multiple things from that context tag, how do you decide what it used as payment?

#

like lets say a shop accepts book_item as currency

#

and i have 4 books in my inventoryt

#

which is used when i try to buy it?

wanton pebble
#

Oh damn yeah

uncut viper
#

i dont have a good solution immediately in mind that doesnt involve a special trading UI

wanton pebble
#

You either have to create a second menu to have the person choose every time like a trading interface in an MMO, Or you would have to do something like take the lowest value item

#

Unless it's furniture where everything is zero g from the furniture catalogue, In which case you'd probably do a random

#

I am very much not volunteering to do a trading ui as a C# project XD

uncut viper
#

any way that isnt 100% user controlled seems like its just asking for nexus comments saying "this shop ate my [item i didnt wanna sell] and i lost it forever!"

lucid iron
#

*displaying things that match a context tag

uncut viper
#

i couldnt remember what you eventually ended up with

slender badger
#

What if you could just select an icon to represent the possible trade items like Better Crafting does with its categories?

uncut viper
#

that was one of lyokos suggestions too but given that theres no limit to what a context tag can be it can be kind of impossible

#

and even if you can come up with an icon that encompasses it, a user would still have to figure out what all items it applies to

slender badger
#

True 😅

uncut viper
#

hmm

#

i like that f or that but i think for a shop it wouldnt work as well bc it wouldnt be very expected to click on it

#

given usual trade item behaviour

lucid iron
#

It would have to be a tooltip instead

#

Akin to crafting recipe

uncut viper
#

i think a pulsing ? that opens a tooltip would be good, yeah

#

but then it might show a lot of items

#

opens a tooltip on hover*
everyone loves hovering over pulsing question marks

lucid iron
#

Another way is to include the tag as it is, but highlight items in ur inventory that matches

uncut viper
#

that was also suggested

#

the main problem is still the "determing whats used to pay" thing tbh

lucid iron
#

Yeah

#

Idk just make crafting recipe at this point

#

Can crafting recipe take money yet

uncut viper
#

money isnt an item so i doubt it

lucid iron
#

Bolb

uncut viper
#

i dont think making a crafting recipe would have the same feel to it anyway

#

id rather a shop entry

calm nebula
#

Alternatively, embrace capitalism and trade goods and labor for money SDVpufferheart

#

I kid I kid

flat sluice
#

Hi,
sorry for this (indeed stupid) question, but is it possible to use an entry "{{ModId}}" instead of "Eleanor" in Data/Characters (and, of course, reference it properly, so instead of"Characters/Eleanor", I'll use "Characters/{{ModId}}"?
(I ask because I think it would improve compatibility between mods, and as I am writing an NPC mod, I want it to be as much compatible as possible)
I tried it, and it looks like CP doesn't recognize "{{ModId}}" properly, or what because it couldn't load the NPC. So I ask if it is somehow possible to use "{{ModId}}" in entries, or if I have to write the manifest mod ID (in my case StrojvedouciDenis.Eleanor) manually.

uncut viper
#

you can use the ModId token inside the Target yes

#

there are very few places where you cannot use tokens inside a content patcher mod

#

entries as well (i slightly misread your question i think but yes even/especially inside Entries)

flat sluice
#

Huh... so I guess I did something wrong, somewhere... Anyway, thanks for your answer!

uncut viper
#

if you are using Load to load some data, tokens do not work in files loaded that way

flat sluice
uncut viper
#

its not recommended to use Load for things like dialogue or schedules or whatnot. you want to load a blank.json where needed instead, and then use EditData on the target you just loaded

uncut viper
#

a blank.json being a json file that just says {} in it

calm nebula
#

I think we may be miscommunication

uncut viper
#

oh, you're using Entries instead of Fields in some places

#
    {
      "LogName": "{{ModId}} - marriage disposition when turned on load command",
      "Action": "EditData",
      "Target": "Data/Characters",
      "Entries": {
        "{{ModId}}": {
          "CanBeRomanced": true
        }
      },
      "When": {
        "{{ModId}}_marriage": "true"
      }
    }
#

this is resetting every other field inside your character data to default values

#

use Fields and not Entries when changing only specific fields. what Entries is doing here is essentially overwriting your character data with a new one. and this new one only has data for CanBeRomanced

uncut viper
#

same with other patches like the one above it to change their home

#

and any that may be in included files

flat sluice
uncut viper
#

just replace the wordEntries with Fields

flat sluice
uncut viper
#

its what the difference between Entries and Fields is

#

Entries replaces an ENTIRE entry. Fields replaces only the fields inside the entry that you specify

calm nebula
#

You also don't have to namespace your dynamic tokens t

uncut viper
#

(or your config schema)

flat sluice
wanton pebble
#

Configschema if you export it you might have to namespace... but admittedly thay might auto be done, not sure

uncut viper
#

export it?

wanton pebble
#

But exporting is c# territory

#

Yeah for other mods to use your config

uncut viper
#

other mods cant do that (CMCT excepting)

#

what C# mods do is create a custom CP token that just returns the value of their config

#

and CP always auto-prefixes custom tokens with their modid

wanton pebble
uncut viper
#

and ofc C# config is an entirely separate beast from ConfigSchema, as they do not use it

#

ConfigSchema is entirely a Content Patcher concept

#

(the auto prefixing is also for all custom tokens in general, whether they correlate to a config option or not)

flat sluice
#

So I don't have to/shouldn't/it isn't necessary to use {{ModId}} in both "ConfigSchema" and "DynamicTokens", correct?

lucid iron
#

It's hard to invalidate the mod provided token

uncut viper
#

unless you dont want other mods altering it

lucid iron
#

Still a C# thing ofc

uncut viper
#

sending a mail flag for your config means other mods can trivially mess with that mail flag, i.e. remove it or send it outside of your control

#

and you no longer become a reliable source of truth for your config

#

and if you do what cornucopia does with sending the mail flag and removing it on day end and stuff, then it means some things that might want to rely on your config, no longer can

#

because some stuff happens overnight in between the mail flag being removed and being resent the next morning

#

also, a token can return different values depending on other logic or other configs, if some things are mutually exclusive or only rely on specific things to be enabled

#

so a mail flag is like by definition less flexible

lucid iron
#

Surely i can trust ppl to not faff about with me flags without good reason Sleepden

uncut viper
#

why would you

lucid iron
#

The benefits is mostly in being a vanilla game system rather than a content patcher system

#

But hm what if u make a GSQ for each of ur config DokkanStare

uncut viper
#

content patcher mods are the ones that would need your config token, though

#

you could do that but cant use GSQs outside of places that. parse GSQs

lucid iron
#

And limited to bool yea

uncut viper
#

luckily someone made a mod that makes getting configs via tokens easy anyway SDVpuffersmile

#

id consider adding use for C# mods to use CMCT too but like they can already get other mods configs if they really need em so

#

and i think in C# land getting string-only representations of config is probably less useful but i dunno how to do anything else. pintail or something probably but fuck if i know how that works

lucid iron
#

What if u give object and be like cast that to what u want

uncut viper
#

would it even really be useful at that point

calm nebula
#

No

#

If I need a other mod config I will reflect for it

#

I may roll IL for Performa

uncut viper
#

exactly

#

and if you're a C# mod author who needs it but doesnt know how to reflect for it theres like 4 people in here who will tell you how

#

in 5 different ways

lusty elm
#

how do we add items to the game nowadays? Last time i did it was with JsonAssets

uncut viper
#

Content Patcher

#

editing Data/Objects

lusty elm
#

kk~ Thanks!

uncut viper
#

(or whatever other data asset you need if you're making like a shirt or a furniture or bigcraftable or whatever)

distant radish
#

I have an issue with targetting - it should be easy to fix, but I feel like I'm missing something basic. I want to modify the StackModifiers parameter when a mod is installed. This is the machine code:

                    "OutputRules": [
                        {
                            "Id": "ChocolateBunnyChocolate",
                            "OutputItem": [
                                {
                                    "Id": "ChocolateBunnyRandomChocolate",
                                    "ItemId": "RANDOM_ITEMS (O)",
                                    "StackModifiers": []
                                }
                            ]
                        }
                    ]
                },```
calm nebula
#

Plz make me a hat

distant radish
#
                "(BC)nachonline.mes_ChocolateBunny",
                "OutputRules",
                "ChocolateBunnyChocolate",
                "ChocolateBunnyRandomChocolate",
                "StackModifiers"
            ]```
#

And this is what I am targetting

#

But it says that it doesn't match an existing target

uncut viper
#

you need to target OutputItem

#

between ChocolateBunnyChocolate and ChocolateBunnyRandomChocolate

distant radish
#

Wtf, how did I miss that, I thought it was already there

nimble sundial
#

does raised garden beds work on 1.6?

uncut viper
nimble sundial
#

ohh, thanku moving there!

true coyote
#

Can someone point me in the direction of maybe some info on how to code in a custom fence (sve does this with the small hardwood fence, but I can't discern what kind of files I need to reference)

lusty elm
#

Ah, I remember what was complicated about this map now.... rooBlank lots and lots of depth layering visually, splits with 2 and 4 height cliffs, with heavy variances across the map, so i had to keep mental track of the "altitude" of each section

royal stump
lusty elm
fervent hound
#

can the "LogName" be anything?

lusty elm
#

pretty much yeah, its just there as an Identifier for you, and errors so you know where to look

fervent hound
#

okay! I didn't know if it had to be something specific to avoid breaking the code or if it could just be something dumb like "scoopy doopy" lol.

tawny ore
#

If you name it Scooby Doo and something breaks there, you can imagine the bug saying “and I would’ve gotten away with it too if it weren’t for you meddling kids”

thin hamlet
#

XD

mighty quest
#

Is there any guarantee that 60 ticks = 1 second, or does that depend on frame rate?

pine ermine
tawny ore
#

That’s just a target but can definitely be affected by poor performance.

mighty quest
#

I need to tick down a timer, but I'm only doing it every 30 ticks to save on performance.
So I can't use Elapsed since that's only since the last tick.

#

I was wondering if I can actually assume the elapsed is fixed

#

And SMAPI's UpdateTicked does exactly that
public bool IsOneSecond => Ticks % 60 == 0;

#

So this property should actually be called "IsAtLeastOneSecond" ?

gentle rose
#

if you’re ticking down a timer, can’t you use the game’s total milliseconds counter in Game1.currentTime or whatever it’s called? rather than relying on ticks being tied to a specific duration

pine ermine
#

You could think of it that way, but everything in the game will slow down if the ticks slow down, so there's really no need to worry about that unless you're making a Real-Time-Attack speedrun timer. In most cases you want the timer to slow down if the game "simulation" cannot keep up.

There is actually already a method in SMAPI for your use case of only running something every half a second:

OnUpdateTicking(object source, UpdateTickingEventArgs e)
{
   if (e.IsMultipleOf(30)) // run every 30 ticks
  {
    // ...
  }
}

See: https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Events#GameLoop.UpdateTicking

Stardew Valley Wiki

Creating SMAPI mods

lucid iron
#

I find it hard to imagine that a timer -= elapsed and then if timer <= 0 would be serious perf issue to run every tick

lusty elm
#

I think i've finally fixed all the elevation issues? took like an hour to find and fix them all, this map is going to be..... complicated to play on. and im only halfway done with the outline of building layers

flint stratus
#

Hi again to the community! I am trying to get my dialogue loaded into my game but keep getting this same error. I don't know the best way to upload files/images so someone could help me, but is there someone who would be able to support me with my coding?

uncut viper
#

!json

ocean sailBOT
#

JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.

If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.

When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.

uncut viper
#

!log

ocean sailBOT
#

Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.

Please share your SMAPI log file. To do so:

  1. Open this page: smapi.io/log.
  2. Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
  3. After uploading, it will show a green box with a URL to share. Post that URL here.

Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didn’t occur in your last session, please load the game to the point where the issue occurs, then upload the log.

flint stratus
#

Thank you sm. I'll use these resources quick!

rigid oriole
#

I'm gaining even more respect for all of you who write dialogue/events for custom NPCs or vanilla expansions... this is a ton of work

flint stratus
ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Pro, with 25 C# mods and 46 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

flint stratus
#

I do not believe the issue is out of date mods! but if im wrong pls let me know, I know they need to be updated.

uncut viper
#

can you upload and send your estelle_dialogue.json file?

flint stratus
#

that should be the first link!

uncut viper
#

then you are using Load incorrectly, you want to Include it

#

and you will need to Load a blank json file to that target first

#

a blank json file meaning a json that just has {} in it

flint stratus
#

Ahh! okay thank you so much

uncut viper
#

Includes do not have targets

#

they just tell Content Patcher to treat another file like a second content.json

flint stratus
#

that actually explains questions I had seeing other mods with the blank file!

uncut viper
#

you will also need to remove the "Format" part from your other jsons

#

only content.json is allowed to have the Format line, other included jsons should not have it

flint stratus
#

amazing. thank you for your help. much appreciated

lusty elm
lusty elm
#

And if you're curious as to the map my brain is having a hard time keeping straight the elevations of at a glance as I construct it, its this.

lucid iron
#

Draylon do u draw irl maps

lusty elm
#

no

acoustic summit
#

I'd be convinced if you said yes

lusty elm
#

I do like drawing maps, but I've only ever really done it for stardew and tabletop world and battle maps. rooPeek

lucid iron
#

It could simply be the higher resolution/size but ur work remind me of topology maps

#

The kind ppl pull out for tabletop wargames

acoustic summit
#

The detail of the stairs being half the height going up as down to match the topology in the left hill. I mean its reasonable but I feel like its also easy to miss

lusty elm
#

its just one of those things i notice if its off, so i try to perfect it.

tropic walrus
#

How do I use this with animals with spaces in the name? purchasedAnimal_Void Chicken? Or purchasedAnimal_Void_Chicken?

uncut viper
#

hard to give an answer without the context of what this is. is that a mail flag or a convo topic or what

lusty elm
tropic walrus
uncut viper
#

then it will be whatever the DisplayName of the animal is, unless its a brown or white chicken, in which case its just Chicken

#

i dont see anything trimming off spaces or replacing them

#

so presumably purchasedAnimal_Void Chicken if Void Chicken is the displayname

tropic walrus
#

I see, thank you

uncut viper
#

if you're using it in a GSQ you should be able to wrap it in quotes to protect the spaces

#

for a dialogue key it should just work without anything special

tropic walrus
#

...Although I just realized this wouldn't actually work because you don't technically buy Void Chickens, but it's good to know anyway

uncut viper
#

yeah tihs only happens when specifically adopting an animal from Marnie

#

so any other means of animal acquisition wont work either, unless they call AnimalHouse.adoptAnimal

#

(so debug commands will work, for insance, but another mod that handles animals themselves may not)

#

also correction it doesnt hjave to be from Marnie (i thought her house was called AnimalHouse) but it does still have to use that function

#

which, actually, addNewHatchedAnimal does, so it should work forincubated void chickens

tropic walrus
#

Yeah, I did see that Unique Gift Dialogues has dialogue for Marnie and dinos

#

Thanks for the extra confirmation on that

undone jewel
uncut viper
#

!log

ocean sailBOT
#

Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.

Please share your SMAPI log file. To do so:

  1. Open this page: smapi.io/log.
  2. Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
  3. After uploading, it will show a green box with a URL to share. Post that URL here.

Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didn’t occur in your last session, please load the game to the point where the issue occurs, then upload the log.

uncut viper
#

please post errors using this website

undone jewel
#

oh i did link it

uncut viper
#

the error. not the json

undone jewel
#

oh right

uncut viper
#

on my giant monitor that screenshot is practically ant text

undone jewel
#

yeah sorry it was a bit small

#

it should be the error regarding MysticBaker

gentle rose
#

not through the json validator, through the link button sent please

uncut viper
#

for now this is fine bc i found it but for future reference please use the log uploader not the json uploader for it

#

the one linked in the log command from governor

undone jewel
#

yep will do!

uncut viper
#

DrawPosition needs to be an X, Y string, CP/SMAPI has issues converting to Vector2s from objects like that

#

so "DrawPosition": "0, 0" though if its 0,0 anyway you might not need it at all

#

you might tho so dont quote me on that. try it with just "0, 0" first

undone jewel
#

oki lemme try that first

#

yay it shows the option to build now, but the texture wont show up . for texture do i put the path to the image file png? or the path to the specific png itself

uncut viper
#

the path to the Target you loaded your png to

#

which you have not done yet, so you need to

#

alternatively you CAN use an internalassetkey token and point to the file itself, but thats not recommended

#

bc it means other mods cannot edit your textures if they need to

undone jewel
#

i see, but can you target when its adding a new building?

uncut viper
#

you do a separate Load patch

undone jewel
#

ahhh ok

#

im not sure where to put that specifically

uncut viper
#
{
  "Action": "Load",
  "Target": "{{ModId}}/WhiteBreadOven, {{ModId}}/GreyBreadOven, {{ModId}}/BeigeBreadOven",
  "FromFile": "Buildings/Bread Oven/{{Lowercase: {{TargetWithoutPath}}}}.png"
}
#

you can remove the Lowercase part and just do "Buildings/Bread Oven/{{TargetWithoutPath}}.png" if you rename your files to match the capitalization of those targets

#

then, in the Texture fields, instead of putting the path to the file, you write e.g. "Texture": "{{ModId}}/WhiteBreadOven"

#

(you can also make the targets all lowercase)

drowsy pewter
#

oooo a bread oven mod

undone jewel
#

yeah im trying to update my brealovers mod to 1.6

uncut viper
#

(but having nice capitalization just looks nicer even if it doesnt matter at all. personal preference and up to you SDVpuffersquee)

undone jewel
#

but it was so heavily dependent on like other mods so my head is spinning

#

If i use the above do i still need to specify the skins?

uncut viper
#

yes

#

Loading those textures does nothing on its own

#

neither the game nor content patcher know or care where you plan on using them

#

its on you to use those Targets in the relevant Texture lines

undone jewel
#

if my png is in Buldings/ Bread Oven/ Skins and then the png would this be
"FromFile": "Buildings/Bread Oven/Skins/{{Lowercase: {{TargetWithoutPath}}}}.png"

#

im not sure what target withoutpath means

#

or do i replace the file name

uncut viper
#

so, in that Target line up there, one of the targets i wrote is "{{ModId}}/WhiteBreadOven"

#

that is one of the 3 targets, separated by commas

#

TargetWithoutPath is a content patcher token that will take that target and remove everything before the last /

#

so {{TargetWithoutPath}} will become WhiteBreadOven

#

and then it will be {{Lowercase: WhiteBreadOven}}

#

which will become whitebreadoven

#

So then finally, it will look like this: Buildings/Bread Oven/Skins/whitebreadoven.png

#

it will do that for all 3 of the targets defined

mighty quest
#

What is this Softonic website?

undone jewel
mighty quest
teal bridge
#

That's the kind of URL I'd be afraid to click on an unpatched Windows OS.

royal stump
#

(i love adding Large Blocks to games)

brittle ledge
#

Definitely legit, you should put your credit card number in there

iron ridge
#

oh no softonic found stardew mds

hard fern
#

ruh roh

royal stump
#

it's not like auto-scraping downloads or anything (or if it is, the organization's so bad i can't tell), but yeah, it's one of the fishy rehosting places that's been around

gentle rose
#

some of the mods are actually downloadable straight from softonic 😭

royal stump
#

they have a report option, though I doubt it works quickly or well, having done that elsewhere

shut edge
#

anyone familiar with how honey works? can i make a honey type that grows from a crop or does it need to be flowers?

gentle rose
#

doesn’t even include a copyright option

uncut viper
#

you can technically flavour it with anything you want, but you'd need a custom item query to get a nearby crop

shut edge
#

ah

uncut viper
#

FLAVORED_ITEM Honey NEARBY_FLOWER_ID is what regular honey does

#

where NEARBY_FLOWER_ID is a query for the flavouring ingredient to parse

shut edge
#

is that just hardcoded somewhere?

#

i poked through the jsons a bit and didn't see anything relevant

broken wraith
#

hey guys, i need some help. My smapi is installed properly, no errors and it says waiting for game to launch and then closes

uncut viper
#

item queries are specific C# functions yes

broken wraith
#

idk how to fix it

shut edge
#

ok

uncut viper
#

!mh

ocean sailBOT
#

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).

shut edge
#

thanks

shut edge
#

i'll skip that particular feature creep encounter then lol

brittle pasture
#

which is a C# mod

#

(also very pendantically speaking it's not an item query thing, NEARBY_FLOWER_ID is a manual substitution inside the item query in machine rules)

uncut viper
#

(i support pedantry in this regard)

#

(compromise: its just about as easy to add a new one as it is to add a query)

ivory plume
#

(New in the upcoming Train Station 2.1.0: support for bus stations.)

tender bloom
#

busbusbus!

lusty elm
#

I read that as Quarry, and i was like, "Wow, thats easy then." then i realised its query, and now i have no idea.

hallow prism
#

(Me in starting blocks to make and release a bus to train station mod, which may not even need cross travel that much, which is why i should go to sleep)

tribal ore
#

Anyone know where store hours are controlled via CP? Did a lot of searching but couldnt find it

hallow prism
tribal ore
#

Tile action? I want the building itself to be open longer

hallow prism
#

Depends of what you prefer/need

tribal ore
#

Don't care about the actual store

hallow prism
#

Oh

#

Store as building, not shop

tribal ore
#

Yeah, sorry

#

Want to open science house later at night on certain days

hallow prism
#

Still a tile action i believe, in the warp one

tribal ore
#

It's a map mod?

hallow prism
#

Didnt airyn made a mod to have longer opening hours?

loud rain
#

good night! i was making my first mod and this appears when i try to launch with the mod:
these mods could not be added to your game

Mountain test because its manifest declares ContentPackFor without its required UniqueID field.

acoustic summit
#

Is this a mod for content patcher?

tribal ore
loud rain
acoustic summit
#

"ContentPackFor": {
"UniqueID": "Pathoschild.ContentPatcher"
}

hallow prism
#

Anyway going to sleep

#

Good luck

acoustic summit
#

Thats what you want to put, your current ContentPackFor is probably empty

#

Good night lumina 🙂

loud rain
#

thank you so much!!

ornate trellis
tribal ore
#

Than you!

ornate trellis
#

ive only done warps on new maps so i am not too well versed with editing existing ones, but this is a start at least xD

tribal ore
#

Absolutely. It looks like a property that CP can (probably) mess with

#

Thank you 😄

tiny zealot
#

(audio bullshit) is there a way to know the duration of a sound effect from an ICue? or should i be checking IsStopped/IsPlaying instead?

calm nebula
#

Afaik I haven't found a length yet which did make atra sad jn the past but also I didn't look toooo closely

#

And atra is pretty dumb so

#

(My code is compiling)

tiny zealot
#

there's nothing obviously suitable in the interface definition, but this is also presented without any comments whatsoever so ???
float GetVariable(string var);

uncut viper
#

you can probably do math on the sample rate or smth

hard fern
#

woah, knitting

uncut viper
#

that said i would try to get the actual Cue instead of the ICue

#

(also yes there is gonna be like no documentation on available variables. if you want to know, use Reflection to get the actual Cue and then reflect further to get the variables backing field. then loop over them and print their names. this is the easy way)

gaunt orbit
#

how well does pintail handle event mapping?

#

if I do something like public event EventHandler<ISomeEventArgs> can it handle that or will it be sad?

tribal ore
#

@ornate trellis Got it working! You can absolutely patch map properties with CP

lusty elm
#

yup

royal stump
# tiny zealot there's nothing obviously suitable in the interface definition, but this is also...

based on button's suggestion, some variables that exist:

var cue = Game1.soundBank.GetCue("coin");
var realCue = Helper.Reflection.GetField<Cue>(cue, "cue", true).GetValue();
var variables = Helper.Reflection.GetField<Array>(realCue, "_variables", true).GetValue();
foreach (var thing in variables)
{
    var name = Helper.Reflection.GetField<string>(thing, "Name", true).GetValue();
    Monitor.Log($"Variable name: {name}", LogLevel.Info);
}```

[TestMod2] Variable name: NumCueInstances
[TestMod2] Variable name: AttackTime
[TestMod2] Variable name: ReleaseTime
[TestMod2] Variable name: OrientationAngle
[TestMod2] Variable name: DopplerPitchScalar
[TestMod2] Variable name: Distance
[TestMod2] Variable name: Charge
[TestMod2] Variable name: Volume
[TestMod2] Variable name: Frequency
[TestMod2] Variable name: Pitch```
(searching for monogame/xna mentions might help, but this stuff was never documented clearly)

uncut viper
#

(or is just straight up deleted now)

royal stump
#

there were also a bunch of actual paper books on it, iirc, so those might not be very searchable SDVpufferdizzy

uncut viper
#

im pretty sure the answer for cue length will lie somewhere in the _currentXactSound and then inside its XactClip[] soundClips

#

each XactClip has a ClipEvent[] clipEvents and clipEvents have a timestamp. do i know what the timestamp means? no

rancid musk
#

Cue._soundEffect._effect.Duration?

uncut viper
#

does ichor care about getting the duration before it plays?

#

bc a SoundEffectInstance doesnt exist until it is played

#

im also not 100% sure if a SoundEffectInstance is the entire Cue or just one chunk of the Cue's currently playing sound

lucid iron
#

why does the cue have AttackTime

uncut viper
#

(im not sure its NOT, im just never sure of much when it comes to Cues. but i know there is no SoundEffectInstance stored on the Cue itself until you try to play it)

#

you can probably create a SoundEffectInstance from Cue._currentXactSound.GetSimpleSoundInstance(), which is what Cue.Play() does, but _currentXactSound also doesnt exist until right before then in the play function, which is assigned based on choosing a random sound from Cue._xactSounds

tiny zealot
rancid musk
#

Could maybe harmony patch CueDefinition to record the SoundEffect Duration whenever SetSound is called and cache it somewhere

royal stump
#

oh, I honestly thought it was just an artifact of how xna sound banks tied into gameplay SDVkrobusgiggle
(SDV's code just reads all the variables from elsewhere, figured they might be non-functional)

uncut viper
#

i had a vague idea of what it and releasetime were but i dont know what charge is

#

from what i could tell from looking for old, half-deleted documentation (where in some cases the only surviving docs are stackoverflow responses), i think the Variables stuff is like. stuff that the sound/music creator builds into the audio itself, when using whatever XactAudioCreator tool or w/e

#

nothing happened when i changed any of those variables in my testing but i couldve been doing it wrong, who knows

gentle rose
#

the obvious solution to all of this audio stuff is to play the game on mute /lh

royal stump
#

some of them might basically be read-only info about each sound, yeah; SDV itself only ever edits Volume and Frequency

uncut viper
#

if CA used that tool to create the audio he could make up whatever variable he wanted. could make a variable called "warblesFactor" that just warps the audio based on how high it is

tiny zealot
royal stump
#

(oh, and pitch, it's a single call SDVkrobusgiggle)

uncut viper
#

but if the audio isnt designed to react to those things then they do nothing

tiny zealot
#

fascinating 🖖

uncut viper
#

Watch in up to 720p for high quality Video, and Audio

This Video explains how to achieve car gear shifts using RPC (run-time parameter controls) in Xact
Created By Daniel Gooding

Xact Download
http://creators.xna.com/en-US/downloads

Click this link to download the Xact template, the finished result, plus the Viper Engine Loop
http://tiny.cc/G...

▶ Play video
royal stump
#

oh, and iirc from ages ago when I had to actually touch those vars, you might need to stop and restart cues or something to get changes to apply

uncut viper
#

this is one of like two things i can find that survive to tell the tale of Xact RPC variables

#

and its 14 years old

#

you dont need to stop and start them if you call enough of their _update functions yourself SDVpuffersmile

tiny zealot
#

anyway, IsPlaying is probably good enough for what i'm doing, but i probably need to test some more stuff about it

calm nebula
#

Anyways, if I ever start showing interest in audio code someone should take me out back and hit me very hard over the head with a 2 by 4

royal stump
calm nebula
#

I see Esca has a 2x4 prepared

royal stump
#

so who knows

uncut viper
#

(if you do need it though, Cue._UpdateSoundParameters() seems like the most important one)

#

whats with all the thinking. i dont even think that much about it what reason do y'all have

#

smh

lucid iron
#

I am making conditional draw layer hm

#

Is it bad to check a gsq every second while player is on map

uncut viper
#

i think you actually have to run a lot of GSQs per second for it to actually get noticeable but that does still have a bad feeling to it

lucid iron
#

Yea hrm

#

My thought initially was just gsq on map entry

uncut viper
#

(and it depends on what exactly the gsq does ofc. probably less GSQs per second if they all looped over every item in the game and invalidated things every time)

lucid iron
#

But maybe i could settle for time changed

tiny zealot
#

i yearn to run my code less often

uncut viper
#

why does it need to change so rapidly

tiny zealot
#

SDVpuffersmart code that doesn't run is super fast

lucid iron
#

A common usecase here is night tiles for buildings

#

Which should be fine at time changed which is the every 10min thing right

uncut viper
#

every 10 minutes b y default yeah

lucid iron
#

I could soon make a mod that just

#

Go and add lights to every building in vanilla

#

Along with window lighting sprite

#

-2 desire to art tho

rotund elm
#

I need a mod that adds flickering and dynamic lights so the range of illumination expands and contracts. It would be great for map making and ambience SDVpuffereyes

#

I’m not smart enough to make it myself unfortunately

lucid iron
#

i suppose thats easy enough think

#

it'll look bad in coop though

rotund elm
#

Why’s that?

lucid iron
#

radius is a net field so it'll be 3 frame lag

rotund elm
#

Would that matter tho since the other coop players wouldn’t be able to tell? Especially if it’s not an animated light source to match the illumination animation?

lucid iron
#

they will be able to tell?

rotund elm
#

I guess I’m thinking of it like you’d need to see both players screens to see the delay

lucid iron
uncut viper
#

lights are synced things?

#

are they just TASes?

lucid iron
#

no they r LightSource : INetObject<NetFields>

#

that said map lights might be fine actually

#

i think they get made independently in coop

uncut viper
#

i didnt realize they were net things

#

also GOAT what chu meant is that if something IS a net synced thing, then that means the farmhands sync up with the host every 3 frames

#

so the host will update the radius for the farmhand every 3 frames

rotund elm
#

Ohhhhh

lucid iron
#

the case where it is issue would be GameLocation.sharedLights is used

uncut viper
#

(if they were indeed not made independently in coop)

#

which would be noticeablre

rotund elm
#

So it would be choppy for the other players basically

lucid iron
#

yea

uncut viper
#

yeah

rotund elm
#

nOoOoOoooOooo

#

Whyyyy SDVpufferwaaah

lucid iron
#

although, i think there is a no additional mods way of doing things think

#

if u have a light that is regular fixed size

#

but animate the lanturn texture underneath

#

then it's kind of hinting at a blinking light u know

#

whether this is sufficient is ymmv ofc

rotund elm
#

I did that on my current maps and it somewhat works but not the best for ambience but I could try 25, 50, 75% opacity pixels for expanding the lighting around eg the lantern

#

Would that work? I gotta try this now

#

But idk how smooth it’s gonna look

#

Stardew lighting doesn’t seem pixelated to me. Idk what the proper term is but it’s more of a fade then using different opacity for pixels to simulate light

#

But I guess it could still work well if they were barely visible maybe? I’ll see what happens

lucid iron
#

it is pixelated, there is a light map used

#

but its not at the usual 4f scale

#

scale is the size of light in this case

rotund elm
#

I see, so yea it will still look off then

#

Dang SDVpufferwaaah

#

This is just as bad as not being able to use an animated tile for day/night tiles 😭

uncut viper
#

can you just prefix/transpile the Draw method to have the client ignore the radius field if the light ID is prefixed with your pulsing light mod id

#

and just use its own radius

#

perhaps a radius built into the ID itself to be parsed

#

(starting radius*)

calm nebula
#

Iiirc you may be able to subclass

#

If it doesn't hit the save ser you can

lucid iron
#

i did that and sharedlights didn't like it

#

thats why trinket light sources are still broken in coop

calm nebula
#

Huhhhh

lucid iron
#

i think it's cus i added 1 new netfield (texture path)

#

might have been fine without that

rotund elm
#

Is this a Stardew limitation?

lucid iron
#

like the feature u want for blinking lights?

#

there's a few ways to do it i think, i like the one button said

#

as for the subclassing lights thing, that's some sdv netcode limitation probably

#

but the goal here is to avoid netfield to begin with since it'll look bad

rotund elm
#

I see now,

calm nebula
#

Yeah, don't sync it across mp

#

Just flicker independent per client

lucid iron
#

i need to actually

#

play more than 0 days of sdv today lol

#

but maybe i can be convinced tmr

#

mmap already has a map lights feature so it won't be that much effort to add

rotund elm
#

If this can be done I’ll sell my soul SDVkrobusgiggle

normal trout
#

Is there anyone around who's familiar with making Alternative Textures content packs? I've never made one before, and I followed the directions exactly AND used an example from nexus to try to make a quick AT pack for the shed, and it just will NOT show up in game no matter what I do. I don't know what I'm doing wrong.

lucid iron
#

make a skins pack instead

#

you can do that in CP and get auto support in AT

brave fable
#

subclassing lights is seemingly fine if you want custom draw behaviours, just don't sync the visuals and you're good

normal trout
#

is there a tutorial somewhere for that? I haven't heard of skins packs

lucid iron
#

check "Cabin" in Data/Buildings

#

or "Pet Bowl"

#

i dont really know any mod that focus on making this (you can be first!), but vmv has one for slime hutch

normal trout
#

Okay, except I'm lost and don't know how to do what you're suggesting 😅 I opened the Data/Buildings file and see the section on cabins where it says Skins and has a bunch of data... but like. Explain it to me like I'm 5, maybe?

brittle pasture
#

[[Modding:Buildings]]

normal trout
#

Also, I'm still kind of frustrated that the AT pack I made won't work and would love help actually figuring that out instead of being told to do a completely different thing that nobody has really done yet

brittle pasture
#

scroll to skins

#

if you still need help with the AT skin maybe you can post code and/or smapi log

lucid iron
#
{
  "Action": "Load",
  "Target": "{{ModId}}/alt_big_shed_1",
  "FromFile": "assets/{{TargetWithoutPath}}.png"
},
{
  "Action": "EditData",
  "Target": "Data/Buildings",
  "TargetField": [
    "Big Shed",
    "Skins"
  ],
  "Entries": {
    {
      "Id": "Alt Big Shed 1",
      "Name": "{{i18n:alt.big.shed.1.name}}",
      "Description": "{{i18n:alt.big.shed.1.description}}",
      "Texture": "{{ModId}}/alt_big_shed_1",
    },
  }
},
brittle pasture
#

but yeah I recommend the CP route if only a lot more ppl here is more familiar with it

lucid iron
#

although hm

brittle pasture
#
  • more performant than AT
lucid iron
#

what exactly happens to skins when people upgrade a shed yggy

brave fable
#

i would've suggested doing it via skins anyway if only because they're builtin

lucid iron
#

none of the vanillas have upgrades

normal trout
#

Okay, see, with an explanation behind it I'm less frustrated at being directed to do a different thing lmao. Ty Selph.

lucid iron
#

to test real quick u can do

#

debug build "Big Shed"
debug bsm (while standing in front of the new big shed

#

i think AT tools also pick up skins but someone double check me on that

normal trout
#

How do the skins work? Would that have to be repainted through robin's building menu?

#

I'm very used to just grabbing the AT paint bucket to change things

lucid iron
#

atm u can only pick them on build, through debug bsm, or through a mod (like AT?)

brittle pasture
#

AT bucket should also work with vanilla skins

lucid iron
#

the main benefits are, ppl can use ur mod without AT if they want

#

and it works in coop

gaunt orbit
lucid iron
#

oh and AT had a issue where tools dont work on buildings outside of farm

#

dunno if that ever got fixed

normal trout
#

(it was on my farm, shouldn't be related.)

#

(but good to know)

lucid iron
#

yea this is more for ppl building stuff on say, RSV summit farm

brittle pasture
#

last updated nov 2024
so nop

#

it's also a one line check lol (location is Farm)

#

but I understand PeacefulEnd has been busy

lucid iron
#

anyways if after all this propaganda u still wanna AT here is a recent buildings AT pack

normal trout
#

That's literally the one i used as an example to make mine 🥲

#

RIP

lucid iron
#

what exactly would "mod that let you change building skin" look like

#

do u just have some more diegetic way to call debug bsm lol

brittle pasture
#

a tool, perchance, that you can use on buildings
maybe it can resemble a paint brush, or a can

normal trout
#

... so literally what AT does

ivory plume
#

Does anyone here do map commissions? I was thinking of commissioning a tiny map which connects Train Station's boat, bus, and train networks in one place (maybe a Spirited Away-style railway island or an exchange station or something). I can message people on the commissions page or just try doing it myself if not though.

lucid iron
#

@unique sigil would you be interested ^

unique sigil
#

I have one slot open currently! (details are in the linktree in my bio)

normal trout
#

@light bramble does map comissions and is free to do a project 🙂

#

She might be interested, Pathos

latent mauve
#

So are you thinking a map that has a bus, boat, and train depot on it?

ivory plume
#

I'm not entirely sure of the particular design; I'd probably discuss that with the person I commission. It could be something like...

  • an interior central station?
  • a little railroad with building entrances with boat/bus signs?
  • something else?

Basically just a way to easily access all three networks from one place, which will also act as a sample content pack for Train Station.

latent mauve
#

I see! It'll be interesting to see what they come up with. 🙂

lucid iron
#

in my city, there's a part in the subway where you can change to a boat

#

to go to the island

unique sigil
#

if there is a boat network, i feel like an outdoor map would work best tbh

latent mauve
#

Funnily enough, my original draft map of the Pelican Valley Loft exterior also had spaces for a bus and a boat. xD

light bramble
#

I’m just interested in helping out

unique sigil
#

but i suppose it depends on the kind of assets there are. i am opening map commissions, but already booked in terms of custom assets for a longer term project.

latent mauve
#

My backup plan if I couldn't find a space on the vanilla map was to use a bus to get to it

light bramble
#

Though if you’re going with Kisaa that’s alright too

ivory plume
#

I'd be fine with something which only used vanilla tilesheets; that's what I was going to do if I did it myself anyway.

light bramble
#

Well, from what it looks like, you need a central area. I mean I can definitely whip something up for you. (Starting tomorrow cuz I’m tired AF rn)

gaunt orbit
#

I think it would be cool to have like, a transit connection station, with a railway next to a canal and one of those bus loops on one side

light bramble
#

And if you want vanilla tilesheets done with it I can definitely do that too. Might make a few edits to the tilesheets (in which case I’d make a custom tilesheet for the map/mod) but it’s still something that can be easily done

gaunt orbit
#

I think it would also be useful to have a minecart dropoff there, but I realize that might be difficult to theme

light bramble
#

Not really actually

#

I’ve worked with worse lol

unique sigil
#

a minecart could be a bonus but i suppose it depends on where the hub map will be located in