#making-mods-general

1 messages · Page 329 of 1

round timber
#

no reason why it wouldnt be alright!

calm nebula
#

Sure!

lucid jewel
calm nebula
#

tries to summon tia

lucid jewel
#

So it's basically just a new island in the lake

calm nebula
#

Two things

#
  1. Does that still allow the legend to be caught
#
  1. The pathfinder has issues with those teensy bridges
#

Better to make them 2 wide

lucid jewel
#
  1. I will fish for a while and find out. 2. Thank you, will do
#

I almost made it a stone bridge and backed off

lucid iron
#

i think legend is fine just moved further but people will get confused since you yeeted the log

#

and guides always say use log for reference

lucid jewel
#

Okay, so I did catch the legend and Eli apparently decided to use my new island for his path while I was fishing, which kind of startled me. lol

lucid iron
#

path finder

#

this is another thing about doing a patch like this though, you will cause unexpected routes to be chosen

soft granite
#

Well, i kind of am going the other way. As in, i have portraits but dont know what numbers they have

latent mauve
#

Typically, 0 is neutral, 1 is happy, 2 is sad, and 3 is angry AFAIK

#

So you would lay out your portraits accordingly so they aren't funky if you get a default NPC dialogue that uses one of those emotions

soft granite
#

I’m talking more about custom portrait after that

#

From mods

calm nebula
#

Are you making portraits for vanilla or modded characters

latent mauve
#

Well, the numbering is in order, from left to right and top to bottom, if that helps? So top left is $0, top right is $1, and so on

soft granite
#

Nah, i got it. I’m just using “debug dialogue” to guesstimate

soft granite
vernal crest
lucid jewel
vernal crest
lucid jewel
vernal crest
lucid jewel
vernal crest
lucid jewel
#

Or I could take out the right side bridge and have that add when you get the shortcuts

soft granite
#

Imm not sure how hurry_all works. I thought it was supposed to warp people to their predetermined locations, but i guess not?

vernal crest
half tangle
#

Yeah, notably I've found that I can only benefit from hurry_all when I don't have time stopped, so that makes sense. Similarly it sometimes takes a few runs to get NPCs to their correct location if I change the time with cheats

soft granite
#

Good to know. So that means i need to set a time, do hurry, wait for the move, then set time again, etc

vernal crest
#

If you want to see them going to each place in turn, yeah

hexed snow
#

Hey all! I've made one mod before, however, that was before 1.6. I know the update was like a mod overhaul, and it changed a lot about making one, so I was wondering if there are any resources I can use to start making a new one from scratch that's 1.6 friendly?

vernal crest
#

What kind of mod do you want to make?

hexed snow
#

Another character mod lol

vernal crest
#

!npc

ocean sailBOT
#
Creating a Custom NPC

Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:

hexed snow
#

Perfect, thank you!

inner harbor
#

Is there somewhere i can get save files from? I need one with the Joja theater built.

fathom rapids
#

so im trying to make a mod that changes weapon stats based on config (for the galaxy + infinity weapons) and it doesnt look complicated but it doesnt work

        {
            "Action": "EditData",
            "Target": "Data/Weapons",
            "Fields": {
                "4": { //Galaxy Sword
                    "MinDamage": "{{GalaxySwordMin}}",
                    "MaxDamage": "{{GalaxySwordMax}}"
                },
                "62": { //Infinity Sword
                    "MinDamage": "{{InfinitySwordMin}}",
                    "MaxDamage": "{{InfinitySwordMax}}"
                },
                "23": { //Galaxy Dagger
                    "MinDamage": "{{UltGalaxyDaggerMin}}",
                    "MaxDamage": "{{UltGalaxyDaggerMax}}"
                },
                "64": { //Infinity Dagger
                    "MinDamage": "{{UltInfinityDaggerMin}}",
                    "MaxDamage": "{{UltInfinityDaggerMax}}"
                },
                "29": { //Galaxy Hammer
                    "MinDamage": "{{UltGalaxyHammerMin}}",
                    "MaxDamage": "{{UltGalaxyHammerMax}}"
                },
                "63": { //Infinity Hammer
                    "MinDamage": "{{UltInfinityHammerMin}}",
                    "MaxDamage": "{{UltInfinityHammerMax}}"
                },
            }
        },
    ]```
patch summary thinks the edit has been applied, but hover shows the vanilla stats )=
mighty ginkgo
#

are you spawning in new weapons? i think the already spawned ones retain the original stats

inland rain
#

weeds - keeping weeded can increase growth, letting weeds grow can stop growth

daring skiff
daring skiff
#

@inland rain Sorry for the ping. Your server is defunct so I can't complain there. puffer_heart Any idea what the 1.6 compatibility is for Sound Tweaker? If anything is potentially broken. ||And possibly adding .ogg format...||

#

Content Patcher can't edit and doesn't retain any of the metadata when you replace an audio cue. So it isn't really viable for replacing anything in the Sound category right now.

inland rain
#

the server is tied to my old discord account, which I'm locked out of permanently due to discord's 2FA rules

#

do you have an error log?

daring skiff
#

My old account is in 2FA hell too, actually.

#

I'm just wondering if it still works.

#

From talking to other people in the scene there seems to be an impression that it's not updated for 1.6 yet or has been replaced by Content Patcher.

#

I can go forward with using it to replace a couple of sounds. And then report back to you if there are any issues.

inland rain
#

It looks like it still works

#

I can update to net 6.0, but it doesn't seem necessary

daring skiff
#

That's epic.

#

Also funny something as complex as this was spared from multiple dll breaking updates.

inland rain
#

sound effects can only be made from PCM wave files afaics

daring skiff
#

I see.

#

Not a big deal then.

inland rain
#

oh there's a vorbis option

#

maybe it does work

daring skiff
#

I'd mostly just want to be conscious about file size if the sounds get loaded into memory.

inland rain
#

make sure the file ends with .ogg, lowercase

blissful panther
inland rain
#

if you can give me mod maker role, that would be nice

blissful panther
#

You'd just need to update the community page to match this new account, and we can do that pretty much in one!

soft granite
blissful panther
#

(But the levels would need to be first technically because of the level requirement.)

inland rain
#

where's the community page?

blissful panther
inland rain
#

ty

vernal crest
inland rain
vernal crest
#

Congrats on being reCheeto'd!

inland rain
#

it was hard work, but I owe it all to decidedly human

blissful panther
#

It feels bad needing to kick the old account, but sadly... SDVpufferwaaah

frosty hull
#

What permissions does the modder role have?

daring skiff
#

I do a terrible job at farming and exploiting for XP.

vernal crest
#

We can make threads, make/edit commands, use masked links...that's all I remember

inland rain
vernal crest
#

I didn't farm my XP! I just help people a lot SDVpuffernerd

inland rain
#

bc my phone number is also tied to the original account, and then my second account got flagged and I couldn't verify with phone number

#

discord kinda paranoid

daring skiff
#

Yeah. Discord made it a living hell for me to log into my old account a few years ago. They were doing a huge crackdown on spam accounts and I think I got caught in the crossfire because I had reused my token a few places.

#

And support is useless.

blissful panther
inland rain
#

how do I do that?

blissful panther
#

Just send a message to @outer glacier!

inland rain
#

the username is the same as this one

#

just a different profile pic

#

@small terrace

blissful panther
#

Yup, that's the one I found!

daring skiff
vernal crest
#

That's a good sound

daring skiff
#

I wish the cavedrip sounds weren't used, like, multiple other places so I could better take advantage of this.

#

Add more random cave ambience.

soft granite
#

I was setting it to the exact time

daring skiff
#

I will wait on chu, patiently...

vernal crest
# soft granite Oh? I have to set it to the tick before?

That's what I was doing when testing, yeah. Let the game naturally hit the desired time. I didn't test setting it to the exact time and nor did I check schedule animations so I can't say that it wouldn't work, but if you only tested it at the exact time it might be worth setting it to the 10 minutes before.

devout otter
#

Say that I have a Content Patcher token named StateOfHead with random value selected every day, and the current day the value happens to be Bald.

#

Can I do this as a GSQ to fire a condition? "Condition": "{{StateOfHead |contains=Bald}}"

fading walrus
#

What crimes are you committing against Elliott's hair, Dolphin SMCKekLmaoDog

devout otter
#

Whatever I do, Elliott deserves it.

hard fern
#

Omg

daring skiff
#

Been wanting a more immersive way for Elliott to lose their hair.

hard fern
#

😭 everyone is out for his hair

vernal crest
blissful panther
#

Expand this into Baldew Valley?

devout otter
#

Baldew Valley...

blissful panther
#

(That should have been a GIF. SDVpufferwaaah )

fading walrus
#

Elliott Donates His Hair, a questline

#

Featuring the man growing his hair down to his butt and then committing to the big snip

#

His hair is then donated to a wig specialist in Pine Mesa or Zuzu or somewhere

vernal crest
#

And then Rodney inexplicably shows up with long, luxurious hair that he refuses to answer any questions about

fading walrus
#

Admittedly my line of thought with this would be that it's a wig specialist that makes wigs for patients of baldyheaditis

hexed snow
#

Hey again. I finished writing a bunch of stuff, and when I tried putting the mod in to make sure my character loads, it tells me " Content Patcher Could not load content pack 'Vylah': content pack has no content.json file. " I know I have the content.json in the folder, so atp I'm not sure what to do

vernal crest
#

And make sure that file extensions are turned on, please

hexed snow
#

I actually just figured out how to get passed that error (it was stupid spelling on my part LMAO) thank you though and sorry!

fading walrus
#

SDVpufferpat happens to the best of us

#

I was just in typo hell myself last night

hexed snow
#

I guess I just got so tired that it was easy to overlook even though It was staring me in the face for the last 30 minutes SDVpufferwaaah

fading walrus
#

It's good to step back when you're tired, take a break catnod1

#

I was in typo hell precisely because I was working at night and was already zonked

vernal crest
#

I am not very susceptible to typo mistakes but I make up for that by lots of other types of mistakes like forgot to save the file, editing a different copy of the file, forgot to enable the mod, forgot to Load the asset. I run SMAPI to check what I've forgotten to do lol

fading walrus
#

I'm susceptible to getting my input item IDs wrong SMCPensiveMove

#

AlbarinoSyrup instead of Albarino

#

Rinse and repeat for all 23 other items in the producer rule json

#

And then repeat in a second producer rule json

vernal crest
#

Oh speaking of which Quilly, either your hotfix for your sodas was the wrong zip or I just downloaded the wrong zip because when I went to judge it, a whole bunch of your i18n tokens still had the ModID tokens inside them and the whole thing was broken. I didn't realise you'd fixed that as part of your (elusive, mysterious) hotfix so I just fixed them all myself lol

fading walrus
#

Less of a typo and more of a token autofill issue though, I think

#

Nooooooo

vernal crest
#

It's okay we judged based on the working version

fading walrus
#

It must have been the wrong zip I sent, because I definitely fixed those

vernal crest
#

Especially since it was maybe just a me-problem downloading the wrong zip haha

fading walrus
#

I've since started labelling my zips better

fading walrus
fading walrus
#

I was very fed up by the time I got to the third one, can you tell

vernal crest
#

TBH if I was zipping my mods before I was ready to publish I'd be doing a terrible job

#

I am very bad at any kind of version updating before release because my brain says a version under 1 cannot exist

fading walrus
#

I'm the same

#

The prototype I submitted for the mod jam is 1.0.0, just like the release candidate SMCKekLmaoDog

hexed snow
daring skiff
#

Uh, whoops. Responded in the other channel. Those should all be Entries. You also need an Action and Target.

fathom rapids
#

okay holy shit it was working all along. cool cool cool

hexed snow
#

What are examples of an action and target? Just pretend I havent made a mod in two years and forgot/have no clue what actions and targets. You know, for the people that dont know.SDVpetbearsad

fathom rapids
#

lets say youre trying to load in new portraits for Abigail. the action is EditImage (iirc), the target is Portraits/Abigail

#

in your example the action is EditData, the target is the address and name of whichever file youre trying to edit

daring skiff
hexed snow
#

OH LOL yeah that actually makes sense. thanks guys!

fathom rapids
#
"Action": "EditData",
"Target": "Dialogues/Emily", //obviously not this you know what i mean
"Fields": {
{{all of that what you wrote}}
}
}```
daring skiff
#

It's also not illegal to look at someone else's mod to figure out how they did something. If you want an example.

hexed snow
#

You're right lol. Honestly I only mod on my laptop I use my pc to play games so I don't have any extra npc mods on my laptop to reference and I guess my brain was too lazy to just think about downloading another mod LMAO thank you

gentle rose
daring skiff
#

Been getting really into starting all of my versions at 0.0.1. Really sets the tone for what you can expect out of me.

fathom rapids
#

...i only start version tracking after i upload for the first time...

#

and its always at 1.0.0 for me. i have released, whatever the fuck this is is the release version :|

hexed snow
#

So the dialogue is working except for the fact that it says the Monday dialogue before it says the introduction dialogue SDVpufferwaaah

calm nebula
#

Does your npc have gift tastes yet

#

If not, see if the issue goes anyway if you add gift tastes

hexed snow
#

No, I haven't done that yet

#

Alright! Will do. I can guarantee Ill be back soon lol

hexed snow
topaz idol
#

Hello! Is there anyone here who created content packs using Json Assets (I am interested in creating new crops). I tried to create one of my own fruits, but there are problems. With json files everything seems to be fine, but I'm not sure about sprites. Can someone help me? See where the problem is and tell me about it. 🥹

ornate moon
brittle pasture
topaz idol
#

Oh, I see. Thanks for the answer!

ornate moon
hexed snow
#

What's better to change a room in the saloon, Load or EditMap?

brittle pasture
#

EditMap
Load replaces the whole thing with your copy, EditMap allows you to edit only a part of it

brittle pasture
soft granite
#

Damn understanding how patch_reload has made life so much easuer

soft granite
vernal crest
soft granite
#

Yeah this still cuts down on time, thanks!

#

Another weird question; is it possible to have a dialogue box switch to another character’s portraits? If i want it to be like a dialogue between two characters

ornate moon
#

can someone help me how to add textures while also keeping the vanilla animal textures, i've tried copying the contents from animalfacelift, cuter barn animals, and other animal mods but i can't seem to figure it our nor make it work. i just want to add an animal texture which i can pick from using livestock bazaar as well. i also asked before but i still can't seem to comprehend especially using the wiki for skins, so i am very sorry

#

for reference if it's okay, this is what i am trying to do:

brittle pasture
#

that spot is for a new chicken purchase type, which you shouldnt do

skins I believe are selected using the arrows in the top left of that panel

ornate moon
#

ooh, that's why! a new purchases type is what i am trying to do

#

may i ask why i shouldn't do it, does it mess with the game

gaunt orbit
#

purchase type changes produce, skin only changes looks

brittle pasture
#

you have to duplicate every field of the vanilla chicken, including produce
mods that add new drops for the chicken wouldn't work with your mod

ornate moon
#

what if i just want to copy all the data even the produce, i just want to add a new look for them that's all

brittle pasture
#

if your new chicken has unique drops then sure, but if you're only adding skins no need to go through that trouble

#

new looks is what the skins system is for

ornate moon
#

so if i want to add a new produce, i have to download a framework mod first, right?

ornate moon
soft granite
#

Followup for the question on portraits from before. Vanilla standard portraits are labelled 0 thru 5, but what if i wanted to access a winter or beach portrait?

gaunt orbit
#

those are not part of the same sheet, but are typically separate sheets using the new appearances system

#

in events I think you can do temp portraits though?

brittle pasture
ornate moon
#

i just edit data for the vanilla chicken, right? i already edited the alternate purchase type

brittle pasture
#

yes, then add a new animal corresponding to that alt purchase type

soft granite
brittle pasture
#

yes, the NPC must already be in that appearance
you can edit Appearances to add an extra entry for "is in this event"

ornate moon
brittle pasture
#

Entries is how you specify what to edit/add, yes

#

also I don't know if you meant "duplicate all of Data/FarmAnimals", but if yes then dont

#

just add your entry

ornate moon
#

no, just trying to duplicate the chicken one

#

i'll try it right now!

rancid musk
lucid iron
#

If your alt purchase is literally just texture then adding a skin is much easier

ornate moon
#

can i still add new produce using skins in a different method?

gentle rose
#

what do you even know about livestock bazaar though, chu /j

lucid iron
#

Oh if you want entirely new produce then yea need alt purchase Dokkan

#

However i think it's not that bad to present them as regular independently purchasable animal entry

#

You are already adding a new top level entry

ornate moon
#

like a new type of animal altogether? so if i want like a rainbow chicken that produces a rainbow egg for example, it should just be a separate animal?

lucid iron
#

Yeah i think it's clearer for the user if they just see it immediately

#

This is just opinion ofc

brittle pasture
#

it must be a separate animal, alt purchase type or not
not using the alt purchase thing means your user (who doesn't use LB) can buy your chicken directly instead of repeatedly clicking Marnie's chicken icon and pray that the woman gives them their rainbow chimken

ornate moon
#

oh, tbh i am just trying it for myself for now hahaha still new at this, and just exploring what i can mess with. but yeah, I'll try to do that!

lucid iron
#

LB has a setting to not override marnie menu so you can check what a non lb player sees

#

Remember that it's not required for adding new animal in general only new non marnie vendors

twin wadi
#

how do you make seasonal tilesheets?

lucid iron
#

Make the assets (4 of em) of course

#

Then load them to a target like Maps/spring_YourModId_Tilesheet

#

Do this for all 4 assets

#

Lastly edit with the spring_ version

twin wadi
#

thank you!

#

does the game automatically switch the season by the file name?

gaunt orbit
#

Yes, but only in outdoors locations

#

And only if it starts with the season name and then an underscore

twin wadi
#

thank you!

tribal ore
#

I need a collective noun for the group of npcs that are being dated by a player. Multiple married npcs is easy: "spouses". But what could I use for the other list?

In other words, is there a gender neutral term for girlfriend/boyfriend?

twin wadi
#

also, is it rude to make a portrait mod of an expansion mod with a different artstyle? like, im trying to make a portrait mod mostly for myself of east scarp in my style, but is it rude to redraw them like that?

tribal ore
twin wadi
tribal ore
#

FWIW, most people don't care about what portrait style other people use 🙂 And most mod makers are just happy to see portrait mods done for their mods. But you can always ask the person who did East Scarp

tribal ore
twin wadi
karmic gust
#

That's true. Could also do significant others

tribal ore
tribal ore
twin wadi
tribal ore
#

English is not helping here

twin wadi
#

lovers? idk that sounds a bit weird

gaunt orbit
#

That covers romantic and platonic relationships

tribal ore
#

Lovers doesn't imply marriage, so maybe. Companions is pretty good. I just want it to be unambiguous to other mod authors, since I'm trying to make tokens

#

And I might release it as a separate mod later

twin wadi
#

i wish there was a word like "daters" or something lol

#

welp gtg bye, i hope you find a word... english didnt think of that ig lol

tribal ore
#

I think spouses and companions will work for now, but I genuinely wanted the "people I'm actually dating" meaning

latent mauve
#

Suitors?

tribal ore
#

Oooooh

#

You know. That could work.

#

Yeah, I want the explicitly romantic meaning (not future roomates). I'll use different works for platonic stuff later maybe

#

Suitors it is

#

Spouses -- all married NPCs
Suitors -- all dating NPCs
Lovers/Partners (undecided) -- all married OR dating NPCs
Companions -- all platonic NPCs

lucid iron
#

Hm how would people use these though

#

Do you enforce any kind of sort order

tribal ore
lucid iron
#

Anyhow it's probably not necessary to make the Lovers token

#

You can use Merge to combine Spouses and Suitors

tribal ore
#

The one token I actually need is the suitor with the current most hearts. Random if there is more than one

lucid iron
#

And companion would be "not in either but is social"

tribal ore
#

Nice!

lucid iron
#

These r within dynamic token capabilities

#

You can do this as a content patcher PR perhaps

tribal ore
#

I remember trying to get a list of spouses out with dynamic tokens and failing. So I thought an explicit mod token would be nice. I'm probably just not as familiar with how to make it work with dynamic tokens as you are though!

#

PR? btw

lucid iron
#

Well the spouse is assumed to be 1 cus no poly mod

#

It is the poly mod that has to provide extra spouses token since they r managing that

#

You do need to make the Suitors token yea

tribal ore
#

What is a PR btw? I'm not familiar with the acronym

lucid iron
#

Pull request

#

Basically contributing this token directly to content patcher

tribal ore
lucid iron
#

I personally think it's a reasonable add because cp has a number of other player npc relationship tokens

lucid iron
tribal ore
#

That was the plan. I figured if the token is useful for me in one mod, it might be useful to others

lucid iron
#

PR would be directly make change to content patcher and ask pathos to merge it into cp 2.8.0

tribal ore
#

OH!

gaunt orbit
#

The way prs work is that you fork the original code, make changes to it, and then "request" that the main repository "pull" those changes into it

tribal ore
#

Actually contributing to CP

gaunt orbit
#

It's a way of contributing to a project without having direct access

tribal ore
#

I didn't realize that Pathos was open to that in the first place. Very good to know!

uncut viper
#

though if you plan on it i would ask pathos what he thinks of the idea first

#

Pathos is open to PRs without being asked but if you ask first you'll know right away whether he even wants the feature

#

or if he wants it done a certain way

#

otherwise you risk making the PR and him politely declining it

tiny zealot
#

i like to think most people hosting on github are open to PRs (it's a github thing)

uncut viper
#

this is (iirc) pathos's words not mine

tiny zealot
#

yeah pathos's thing is about saving other people work and hassle

tribal ore
#

Cool. I'd be super happy to have Suitors in CP, but equally happy to release it as a mod with a few other relationship tokens

lucid iron
#

Yeah you should ask for opinion

tribal ore
#

So I'll see what Pathos thinks/wants

lucid iron
#

But i personally just make it happen first and then ask for permission via PR kyuuchan_run

#

Polite decline is acceptable outcome to me

uncut viper
#

(particularly id be most unsure about any token that implies an integration with another mod, like tokens that specifically deal with multiple spouses, as i dont think any other token is really mod-dependent like that? GMCM is like the only integration i know for CP)

lucid iron
#

Oh I don't think you'd want to do spouses either

#

That should be the poly mod's problem

tribal ore
#

I can see the sense in that

lucid iron
#

But you can date multiple npcs in vanilla

#

Hence why i think that's fine to add to content patcher itself

uncut viper
#

dating yeah

#

the "all platonic NPCs" would be a pretty relatively expensive one too, fwiw

#

i think any token dealing with relationships is pretty expensive bc of how the friendship is stored, just smth to keep in mind

lucid iron
#

Something that worries me is the mods that r like

#

Switch datable in the middle

tiny zealot
topaz idol
#

okay, can someone tell and show me how to create new corps using the content patcher? I'm new to this... 🥹

tribal ore
topaz idol
#

Thank you!!

tribal ore
#

Hopefully between the two of those, you can get a start. After that, if you run into trouble with execution or errors, feel free to ask more questions 🙂

uncut viper
#

cornucopia is a rather complicated example, isnt it? id probably try lookin for a tinier crop mod first, though i dont know one off the top of my head

tribal ore
twin wadi
#

@topaz idol i think this is slightly outdated, but it might be nice to look at the overall process! https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_New_Crop
i also used this for my first mod, which added a crop. although its about fish, the way you add an item and such still works for crops!https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_a_New_Fish

Stardew Modding Wiki

PLEASE NOTE: JSON Assets is obsolete in 1.6 in favor of Content Patcher. Backwards compatibility is maintained, but for new crops CP should be used.
Making a new crop is easy with Json Assets (JA), but involves a few more steps than some other beginner mods. However, don't be intimidated by the length of this tutorial! It's only long so as to e...

Stardew Modding Wiki

Adding a new fish to the game has never been easier than in 1.6; nowadays, fish are a simple set of patches via Content Patcher. There are four required steps: you need to load sprite images, define the fish (as an item, and as a fish) and add it to locations. Optionally, you can add aquarium sprites and data, and fish pond data. I'll be using ...

lucid iron
#

Don't use the json assets guide, JA specifically has a crop harvest bug

brittle pasture
#

I actually told them not to use JA earlier SDVpufferlurk

drowsy pewter
#

(you should also read specifically the wiki page that says Modding:Crop_Data)

twin wadi
topaz idol
#

thank you guys!

#

I will definitely watch everything!

drowsy pewter
#

I would personally say dont look at the page that says "Tutorial: Making a New Crop"

#

The information on it would conflict entirely with what you need to do, so you may end up mixing approaches

lucid iron
#

6480 what if we just put ur template on the modding wiki

drowsy pewter
#

go for it

lucid iron
#

Yay

drowsy pewter
#

It would be better described on a wiki page rather than in code comments but I am lazy

latent mauve
#

I linked it the last time this came up, but the How to Use a Template page on the wiki does actually have a crop template there as an example (at least for the image layout)

#
Stardew Modding Wiki

So you've got a template with a bunch of colored squares on it. Now what?
Templates are easiest to use in a program that uses layers. This explanation will for now assume you understand how layers in an image editing program work.
Layers in Photoshop
Layers in Gimp
Layers in Aseprite

Let's say you made a crop (or, in this case, literally just c...

worn oar
#

is there a way to refresh textures while in the game so I don't have to quit and load again just to see what something looks like?

rigid oriole
#

patch reload your_mod_id_here

worn oar
rigid oriole
#

are you editing the original or patching over it?

#

whatever mod you want to refresh the patches from, the mod id is found in the mod's manifest.json

worn oar
#

editing the original. just desaturating something

rigid oriole
#

yeah then you'll want the original's UniqueId in the manifest.json

woeful lintel
#

in the manifest

worn oar
#

that didn't do anything

#

wait I think I put it in the wrong place

#

it's at not content patcher

#

does that change what I put in bc it gives me an error if I use "patch reload"

rigid oriole
#

yeah if it's not a CP pack then....

#

maybe AT has a command? check their docs

worn oar
#

it's "at_reload" if anyone else is wondering

topaz idol
#

hello again... I found an example for working on the mod and I did everything like there but for my own, but it still doesn't work. can someone take a look at the file (I'll send the zip) and tell me what's wrong and what needs to be fixed (and most importantly how to fix it)🥹

rigid oriole
#

what kind of mod is it?

#

!json if it's not a C# mod (e.g. content patcher), use the json uploader to share your jsons

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.

topaz idol
#

adds a new berry to the game, nothing like that

woeful lintel
#

also please be more precise than "doesn't work": is there an error? if yes:

#

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

topaz idol
woeful lintel
topaz idol
#

I'm not good at coding (and stuff like that) so I don't even really know how to fix it

woeful lintel
#

I don't know for sure, but these i18n string keys don't look good (the spaces)

brittle pasture
#

Your json file is missing some brackets

#

every opening bracket must be matched with a closing one in order, like a burger

uncut viper
#

(spaces in i18n keys shouldnt matter)

woeful lintel
#

and you actually have to Load a texture into "Mods/{{ModId}}/Opalberry Seed", because right now I'm pretty sure the game doesn't have any texture when trying to get that asset

brittle pasture
#

add a ] between the last two } I think

woeful lintel
#

smh yet another case of bad indentation...

twin wadi
uncut viper
#

depends on what you're trying to reload

#

patch reload is a Content Patcher specific command and does not reload configschema or dynamictokens, notably

#

if its one of those or your mod is not a CP mod, you're out of luck (unless the non-CP mod you're reloading for also comes with its own reload command)

twin wadi
#

good to know, thank you!

topaz idol
#

And yet, can someone take a look, fix it (make it fully work), write down what was wrong and send it back to me so that I can use this mod in the future?

blissful panther
#

(I... think this might be fully done now.)

#

Apart from the name quirk, but that was me being silly.

iron ridge
#

oooooo very fancy

blissful panther
#

But it's a bit out of date, and I'm too lazy to ask for the ability to update it. SDVkrobusgiggle

urban patrol
#

do it for both the seed and for the object

heavy heron
#

Hey question

There is a prismatic quality mod and I was wondering if there was a way to edit some of the coding so combined with an item mod I can spawn prismatic quality stuff

lucid iron
#

Hm you may have to ask the author

#

I wonder if this works properly in item spawn fields

uncut viper
#

if item queries use ItemRegistry.Create then it wont if you set the quality to 5, but it probably would if you set it to 4

#

(quality is clamped to 4 after ItemRegistry.Create)

lucid iron
#

I guess u should just try it

brittle pasture
#

yeah I dont see that mod removing the clamp

uncut viper
#

though that does involve passing the random check in this patch

#

its clamped when its a machine output, too

brittle pasture
#

maybe they can patch FixQuality?

uncut viper
#

yeah itd be real easy

uncut viper
#

wish i knew why the FixQuality hack was done instead of just making 3 iridium

lucid iron
#

I wonder if the author is in this server

brittle pasture
brittle pasture
uncut viper
#

i mean, why was the recipe formula not already made with 3 in mind

lucid iron
#

What exactly happens if u uninstall this mod LilyDerp

#

Do they go back to 4

brittle pasture
#

and iridiums have a leap over gold

uncut viper
#

price * (1 + (quality == 3 ? quality + 1 : quality) * 0.25)

brittle pasture
#

yes, but consider ||ew ternary||

uncut viper
#

i enjoy ternaries and also itd hardly be the worst looking code in stardew

brittle pasture
#

/s

uncut viper
#

/srs

lucid iron
#

This isn't as bad as the violently gendered

brittle pasture
#

anyway not that it's going to be changed this deep into the game's lifespan, probably

uncut viper
#

new 1.6.16 request

#

hey Pathos—

lucid iron
#

Imo prismatic quality should be 8 so that it is a flag enum \j

uncut viper
#

price * (1 + (quality == 8 ? quality / 2 : quality) * 0.25)

#

this game dev shit is easy

#

(/s)

gentle rose
rare orbit
#

btw? does this come off as rude for me to type?? idk if im asking this question right on nexus

gentle rose
#

there's a difference between permissions and copyright law, if you only care about copyright law you don't necessarily need to ask for permission, and if you care about permissions being allowed legally doesn't matter

rare orbit
#

how should word my question then?

gentle rose
#

honestly I'd just remove everything but what you're actually trying to ask

"hey, is it okay if I commission someone to make portraits that look like these ones?"

blissful panther
#

It could never be rude to ask permission for something you don't hard need it for!

Definitely good to, though... but considering all of the nypau style portraits out there that stay up, I don't see them minding?

gentle rose
#

no need to inform that you have a question (you can just ask the question) and no need to bring up the legal part (it comes off as argumentative) or the part about being rude (protip: this is you introducing the idea that this may be rude to the person reading it)

rare orbit
#

ohh sorry autism...

#

sometimes what i say doesn't come out right

#

especially in writing...

gentle rose
#

dw, I'm autistic too, that's how I learned these things over time

#

(a lot of people in this server are autistic/nd)

rare orbit
#

ooo more for the tism brigade

#

love that honestly

blissful panther
#

This feels like a good time to tell the thing I've always chuckled at, but never said to anyone.

#

Any time I see someone say "aww tysm", I read it as...

rare orbit
#

i mean

lucid iron
#

DH...

rare orbit
#

ya ain't wrong

blissful panther
#

And have now infected you all with it.

gentle rose
#

nooo I'm gonna do that too now SBVLmaoDog

lucid iron
#

Bapped

leaden galleon
#

Hey, I've revamped my previous crypto mods to a pelican stock exchange! (now without using an API)

https://www.nexusmods.com/stardewvalley/mods/34524

Nexus Mods :: Stardew Valley

Who needs real financial stress when you can lose fake money in Pelican Town? Trade stocks with your crops profits while Pierre judges your life choices. Features realistic market volatility, trading

rare orbit
blissful panther
#

That's a good addition, yeah!

rare orbit
#

i usually add that to let people know i intend on being nice

gentle rose
rare orbit
#

i try my best

gentle rose
#

(idk if you can tell but I'm the overly blunt kind of autistic usually lmao)

rare orbit
#

and i notice online? things can be lost in translation

lucid iron
#

Mr Qi is the invisible hand of the market

gentle rose
#

does the farmer flooding the market with a thousand ancient fruits a week count as market manipulation

lucid iron
uncut viper
#

(im actually pretty impressed with the rendering of those charts...)

lucid iron
#

Yeah i like the new color scheme too

#

Is the lines a monogame thing u can draw or rawdogging it with staminarect

blissful panther
#

I don't think MonoGame has any kind of... shapes...

lucid iron
#

I can repost it on your behalf to there

leaden galleon
#

id be honored, and i dont know how to post it to the mod showcase
thank you

lucid iron
#

Until u get the SDVpufferchick role it is just someone else doing it for you

#

Is there a blurb you'd like to include?

gaunt orbit
leaden galleon
untold fox
#

i am trying to play the game and after a while or when i go to a new place my game crashes and it shows me this does anybody know what the problem may be

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

idle lantern
#

I did it! I finally fixed my temporary actor script! My final event finally works correctly! I'm done! Dobby is free!

toxic gazelle
#

Yo, how can I actually make a jellyfish hairstyle that actually looks good😭

gaunt orbit
#

Just make the pixels the colors you want /jk

lucid iron
#

It could help to do some concept art (non pixel?)

whole raptor
#

Out of pure curiosity... since when is TargetField a thing? SDVpufferthinkblob

lucid iron
#

Were there deeply nested edits in 2022

calm nebula
#

Fishpond movie and special order

toxic gazelle
whole raptor
#

That long? SDVpuffereyes Damn... I thought it was like 23/24

tawny ore
#

Wasn't Community Center always complex. At least ever since remixed bundles?

#

Or was that part of the dehardcoding effort

fathom rapids
#

hey
is there anyone who would like to help me test... a powershell script. (i also have it converted to .exe) (i promise theyre not malware)
the thing they do is create a backup of all config.json files along with the folder structure they're in in the folder you put them and run them and its subfolders
(like the /Mods folder of your game)
(the idea is that you can then take the inside of the folder they make and copypaste it and restore all your config files)

#

they work but also im the person who made them so i know how they are supposed to work

#

i promise there isnt a single command in there that does anything other than create folders and copy files into them

lucid iron
#

I mean it's a script

#

Post it via paste bin or gist so people can look b4 download maybe?

fathom rapids
#

you can open the .ps1 file with notepad

#

or notepad++

#

its not like it executes on unzip

#

here it is!

#

*my bad it also creates a .txt file with a list of all the files it copied

lucid iron
#

Gist is nice cus u can version stuff too

thin plover
#

Hi folks. Question about map modding and the "FarmCaveEntry" map property.
I moved the farm cave entrance a few tiles left on my modded standard Farm and updated the warps from Farm > FarmCave and FarmCave > Farm accordingly.
If I use a different farm type (e.g., Four Corners), the entrance to the farm cave is near the center of the map, and I can enter it just fine, but when I exit, it uses the warp to Farm and sticks me in a wall up top. I modded a copy of Farm_FourCorners and added the FarmCaveEntry property to the map. I confirmed it loads the modded farm correctly, but the FarmCaveEntry property doesn't seem to do its thing. Does the Warp property from FarmCave > Farm override the FarmCaveEntry property of Farm_FourCorners?

I may just add a condition in the content.json to detect the FarmType and load a separate copy of FarmCave with new warps if I can't get FarmCaveEntry to work.

fathom rapids
#

I think what you want is to edit FarmCave > Farm since that's what defines the exit

rare orbit
fathom rapids
rare orbit
#

should i use an existing pack as a base??

fathom rapids
#

probably a good idea

rare orbit
#

is it possible for the kids for this mod to be result from any spouse?

fathom rapids
#

ye

rare orbit
#

just wondering cause the packs seem to be for specific spouses

fathom rapids
#

check out Farmer's Children

thin plover
fathom rapids
#

it overrides the exit location, not the arrival location

#

it just doesnt do that

rare orbit
#

cool cool

fathom rapids
#

say, i'll repeat my question.

does anyone want to help me test a script / .exe file that is supposed to copy all your config.json files to a separate folder?

#

it does that, to be clear, i did the testing on my machine, i just want to see what people who arent me get / think

heavy heron
#

I just have to set to iridium

#

Then click as sometime I’ll actually get it but it works good enough for me lol

soft granite
#

Is there a list of everything that can go into a “when” parameter in a content.json

brittle pasture
twin wadi
#

how do you ask someone to post something on the mod showcase?

fathom rapids
#

just paste the link to the mod

uncut viper
#

is the mapPath field on GameLocation the same asset name that i would see in something like an AssetsInvalidated event? or should i be looking at GameLocation.map.assetPath? or somewhere else?

lucid iron
#

mapPath is netstring that gets init with CreateLocationData.MapPath

#

so yea it should be an asset name

uncut viper
#

i forgot i could look to see what actually read/set it
i am tired™

#

thank you

calm nebula
#

What do you need it for

uncut viper
#

depending on whether or not the map for a location has a TileData with a specific action on it i need to do some things differently
but i dont wanna check all the tiles in the map every single time i check if it has that specific TileData so i wanted to cache whether or not it had it
but if the map gets invalidated it mightve had that TileData added to it so i need to clear the cache
so i wanna look for this location's map in AssetsInvalidated

lucid iron
#

if you are lazy then this is good case for map property

uncut viper
#

in this case the tiledata im lookign for is an Action that opens up a menu with some options
and if that tiledata doesnt exist, i want to add those menu options to this other menu instead so theyre still accessible
i dont think id wanna make people add the map property in order to be able to omit the tiledata instead id rather just check for the tiledata

#

if the tiledata didnt have an Action attached to it id consider the map property but since the tiledata has to do something anyway and cant just simply be turned into a binary property i feel this is better

calm nebula
#

Hmmm

#

If the map gets invalidated smapi will propagate it

uncut viper
#

id still need to know to purge my own cache, though, that says whether or not it has the tile

#

though, i guess checking for the map paths in the assetsinvalidated list might just be worse performance anyway than simply iterating over every tile on the map every single time i do the check

#

in hindsight thats probably very clearly in fact the case. i should probably take a nap or something

twin wadi
manic shoal
#

I'm too low level to post in mod showcase myself, but congrats on your first mod!

twin wadi
twin wadi
hexed snow
#

Hey how do I make a bedroom door for my custom npc? one where you can only open it if you have two hearts?

rigid oriole
#

Is there an easy way to get the current game version from inside a mod?

silent wharf
#

Ask there mod to put icon item on chest?, so we don't need to put sign to organizer item

rigid oriole
#

never mind it's game1.version of course it is right there

silent wharf
#

Oh thank you

latent mauve
#

Well, time to set protections on the codeblock in my Pelican Valley Loft google sheet, I guess. Somebody apparently erased/incorrectly copy/pasted over the Locked Door code

#

It's been corrected now

urban patrol
latent mauve
#

You can do this in Tiled directly on your map, or via code.

twin wadi
urban patrol
twin wadi
# hexed snow Hey how do I make a bedroom door for my custom npc? one where you can only open ...

i think you also need a Door map property - this guide is helpful. https://stardewmodding.wiki.gg/wiki/Kailey's_Interior_Door_Guide

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

urban patrol
#

np!

twin wadi
#

i forgot to add a nexus id for the manifest... do i update that asap?

iron ridge
#

assuming you already published on nexus, yes update quite quickly

#

iirc you can just replace 1.0.0 so nobody would know what happened

twin wadi
#

okay thanks

hexed snow
brittle pasture
#

that's referring to the game source code, and no, that line means "if you want to know how it works under the hood read it"

#

refer to the rest of the page for the actual guide

hexed snow
#

Lol gotcha

faint ingot
#

You're not trying to do customized doors right just the ones that are already there in vanilla?

hexed snow
#

Nah no custom doors

#

Though that would be cool. Maybe another project though lol

lucid iron
#

ngl the easiest way to do generic doors is use vanilla doors and locationchanged patch monS

hexed snow
#

Location changed?

#

(I've never worked with doors)

lucid iron
#

set up the vanilla doors and get them to work first

#

following the linked guide above

hexed snow
#

will do. Quick clarifying question though, do I have to place the animation on the door or do I just put the door down with the tileData and it shows up on there?

faint ingot
#

No animation is involved

lucid iron
#

yea game does that for you

faint ingot
#

You can open one of the vanilla indoor maps to see how it's done.

hexed snow
#

Awesome thanks. I'm sure I'll be back later (hopefully not with questions about a door LOL)

calm nebula
#

Doors are fun lol

hard fern
#

doors...

shut plank
#

If I wanted to add furniture that isn't normally there during an event do I just do it in game? I don't see an object number or tile number for addObject or addBigProp that I want. I'm looking for a specific table

ivory plume
#

(@lucid iron By the way, you can ignore all the comments in your PR temporarily. I'll clean them up when I finish reviewing and let you know when I'm done.)

ivory plume
lucid iron
#

u know i wish there was way to use cp like token in markdown kyuuchan_run

#

to handle updating "Format" every time

lucid mulch
#

I still have semi ptsd from doing handlebar stuff in markdown files

shut plank
#

Ah perfect thank you I found the ID! so if I'm reading the documentation and your advice right to add an object like the Diviner Table I can replace <item ID> with (F)1138 giving me /addObject <x> <y> (F)1138 <layer> right?

lucid mulch
# lucid iron u know i wish there was way to use cp like token in markdown <a:kyuuchan_run:737...

Microsoft docs for Azure do some fun things where they will add metadata to code snippets in the readme
https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/eventhub/event-hubs/README.md?plain=1#L158-L167 which correlate to unit tests in the codebase https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/eventhub/event-hubs/test/snippets.spec.ts#L18-L27 and the CI will only let merges happen if the readme is in sync, and the test passes

rigid musk
#

is there a way to check dynamic tokens/if they're being applied

lucid mulch
#

patch summary "<modid>"

uncut viper
#

you can also do patch parse {{dynamictoken}} <ModId>

rigid musk
#

thank you

#

the patch summary is good and all but... there's a lotta patches

lucid mulch
#

token info is at the top

#

Other option is my upcoming debugger mod, but not fully comfortable yet with releasing builds of the extension itself yet

rigid musk
#

i did not mean to do that

#

seeing snow in the spring seems cursed

lucid iron
#

The qicrow summoned it

rigid musk
#

Did you see the Nyapu portraits were added, Chu? SCsmile

rancid musk
cosmic gyro
ivory plume
#

@lucid iron Thanks for all the work on the Content Patcher Chinese docs!

I finished the main review pass and listed some suggested changes. (Note that GitHub hides most of the comments under "X hidden conversations", so you'll need to expand that to see all of them.)

inland rain
#

does anyone know how I add parentheses to a square bracket list in C# regex? Is it just something like [()A-Za-z]?

gentle rose
#

I think most regex flavours would need you to escape them?

fossil osprey
#

You need to escape them yeah

inland rain
#

thanks! that was my suspicion

#

(\([\(\)A-z]{1,}\)){0,1}

gentle rose
#

oh, actually apparently you don't in c# flavour regex in this very specific context where they're inside a positive character group!

inland rain
#

should match ((BC)123)

proud wyvern
#

i usually escape everything that i know is normally a special char

gentle rose
#

but I agree with shockah, yeah

proud wyvern
#

even if that special char would not apply in that position

gentle rose
#

instead of {0,1}

proud wyvern
#

it definitely does

gentle rose
#

and the + operator instead of {1,}

inland rain
#

I'm working with someone else's regex, just adapting it

#

oh it looks like they've been escaping the parentheses

gentle rose
#

if you're specifically trying to match item IDs I would structure the expression differently tbh because this will also match ()))a(()

inland rain
#

even inside the brackets

#

that's true lol

#

ugh

gentle rose
#

do you want them to have to be qualified?

inland rain
#

yeah

#

idk

#

maybe

#

it's either that or make different code for object and bigcraftables

gentle rose
#

I would just do (\(\([A-Za-z]+\)[A-Za-z0-9]+\))?

inland rain
#

thank you :))

gentle rose
#

there's probably better escape characters instead of those groups but I cba to look them up haha

#

also if you don't want it to match the empty string, remove the ? at the end ofc

inland rain
#

i do, but ty

#

we're publishing a new version of Dynamic Map Tiles

#

other ppl have worked on it while I was away, it does a bunch of new things

#

worked on = rewritten

patent bluff
#

Updated chichi's craftables :O! Now with 10 more retextures!

tender lark
#

I want to try out a few edits to SMAPI so I've cloned it and opened it in Rider, but even though there exists a run configuration for SMAPI.Install, it fails with the error message

ops! Some of the installer files are missing; try re-downloading the installer. (Missing file: /home/kaitlyn/Projects/RiderProjects/SMAPI/src/SMAPI.Installer/bin/Debug/install.dat)

It seems the manual install instructions also require this file. Do I have to prepare the release package and install that every time I want to test a change, or is there a quicker way? If that is the case, I'm still confused by the existence of the installer run configuration

lucid mulch
#

Don't know about rider, but normally in visual studio you never go near SMAPI.Installer and you just hit start on the SMAPI project

blissful panther
#

I imagine the run configuration for the installer is just a side effect of it existing as a project that builds to an executable.

daring skiff
#

I'm definitely missing something. I know BrookSounds is a property for any ambient sound in the world. When I open up the files in Tiled or search the unpacked assets, all I see are properties for waterfall sounds (first two numbers are x y axis, second is sound type).

#

I swear I've heard the babblingBrook sound. Obviously know about the engine sound. cracklingFire is used for Linus' campfire.

#

I got mega nerdsniped by this. This wasn't even what I was initially looking into.

woeful lintel
opaque field
#

Good morning! So im trying to implement choices that assign a type of points that accumulate and determine a path taken- however when I try to put these as trigger actions during events with quickQuestion they keep popping up as part of the dialogue box with the $coin. Am I doing it wrong?

lucid iron
#

That sounds like a dialogue syntax issue

opaque field
#

Yes. Yes it is haha I think i fixed it but I gotta take hubby to work so I’ll check later

frosty hull
#

Hello guy, i want to get Texture2D object with unique id
so should i use texture.Name? just Name?

#

here my code, is that correct?

clever sinew
#

....this is a basic question but sprite sheets are better than individual sprites, aren't they.

tiny zealot
#

broadly, yes

clever sinew
#

.....i assume not, but there wouldn't happen to be some easy tool to fetch coordinates for me, would there?

tiny zealot
#

any image editor (gimp, photoshop, aseprite, etc.) should easily show you pixel coordinates in a sprite sheet if you open the image

clever sinew
#

no that makes sense and i have used em before

#

I just will have to fix all of these recipes

tiny zealot
#

it's doing a favor to your users to do it, but how many recipes are we talking about?

#

if it's like, ten, almost no one is likely to notice the difference

clever sinew
#

Not that many yet, thankfully. It is like ten right now but I'm making more, and I should fix my code now

#

I just was looking at like culinary delight and other mods and it's so much cleaner lol

lucid mulch
#

For 16x16 textures you can easily get away with 128 sprites just being a vertical or horizontal line, making counting very easy

tiny zealot
#

(i like to arrange stardew spritesheets in rows of 10 items, so the SpriteIndex is the same as its coordinates)

clever sinew
#

let me also consolidate into one recipe file while i'm here

#

anyway

#

thank you!

blissful panther
blissful panther
#

I don't believe it's free, but if you look for something along the lines of a texture packer, there'll probably be some free equivalent.

clever sinew
soft granite
#

I’m still struggling with patch reload. If i want to, say, fix a typo i made on somebody’s schedule, or edit dialogue they should be display, do i need to restart the day and bring them to the same point in the schedule? Right now i’m finding even with patch reload i need to at minimum restart the day

lucid iron
#

Schedules are loaded at day start so patch reload won't work there

soft granite
#

Thanks

#

If, instead, i was in a situation where i have dialogue that plays when theyre in a certain animation, and i want to modify that dialogue then do patch reload, would i need to restart day there?

vernal crest
#

If the typo is in the string itself I think it should fix without needing to restart. If it's in the key in the schedule you'd probably have to restart. I wonder if debug loaddialogue works for schedule strings.

soft granite
#

Thats a good point. I should try if loaddialogue reflects the changes, thanks

lost stream
#

Hello all! I'm new to modding and I'm a bit confused by the dialogue class in C# using SMAPI. I'm currently trying to make a mod as a birthday gift and I've created an NPC through C# instead of Content Patcher because I wanted to build a quest over that character and CP seemed basic. I've created the NPC and it actually shows up in the map, but I'm trying to add some dialogue but cannot find great info online on how to do that. Assets like portraits and sprites where easier to load using the Load method but since Dialogue in the NPC class is read-only I'm unsure on how to go forward from here. Should I just create the whoel NPC in CP and then link it to the C# mod, or is there a way to create the NPC fully with dialogue and schedule directly in C#?

fossil osprey
#

I think you can create quests with content patcher? Do not trust me on that

vernal crest
#

Yup you absolutely can make quests with just CP

#

And even if you want functionality that you can't achieve with CP (which you should confirm here because you'd be surprised what's possible) people usually do find it easier to do everything in CP except the one bit that requires C#.

#

It is possible to do it all in C# though. I know how to edit dialogue with C# but I've never loaded new dialogue so I can't speak to how to do that.

lost stream
#

It might do the trick, it's a simple scavenger hunt style quest. I did start to follow the guide on how to add NPCs, but since I didn't see anything on quests and the whole management of sprites seemed a bit confusing, I thought it best to switch over C#. But I can give it another shot for sure. Is there a guide on CP quests I could reference?

lucid mulch
#

If you want to stay in c#, all of cp's interaction with stardew is the AssetRequested smapi event (and GameContentHelper.invalidateCache)

vernal crest
lost stream
#

I'll take a look at both of them once I get home, thanks! At this point it might be easier in CP since I couldn't find a lot on the documentation on c# mods :)

vernal crest
fossil osprey
#

Don't hesitate to ask any questions you have here! Everyone is very helpful

lost stream
#

Will definitely do, this already helped !!

calm nebula
#

If you're doing mostly content edits (and npcs are mostly content edits) I would almost recommend itm

lost stream
#

Yes, looking over the links sent this is probably way easier than I made it out to be

blissful panther
#

It very often is that way for Stardew!

rough lintel
#

audio professionals or people who are smart: i want to patch the town map to play a song during the nighttime. whenever i try and add this song, though, the nighttime ambience always plays instead of the music. it loads perfectly fine, i just dont know what conditions i need to do (if any) to make it take priority over the nighttime ambience

gaunt orbit
#

did you edit the location data?

#

that's probably the way to go if you want to mess with location music

rough lintel
#

honestly i dont think so

#

ill try that when im home

dusk terrace
#

@lucid iron sorry for the ping but- I'm not sure what's going on here, but there's something funky with color intensity on some spots, based on the order paths are placed
using latest version on Nexus

#

1 sec- I don't want to floor channel with images

#

why is it not letting me remove the embeds 😠

rigid oriole
#

you can remove the embeds after send

dusk terrace
#

won't let me this time for some reason

rigid oriole
#

just send the embeds ngl

#

maybe chu has a thread?

dusk terrace
#

ohh a thread would be a good idea, not sure if starting one for their mod myself would be, though

#

oh, they do have a few threads open already... oh well then

sand wigeon
#

Hi, does anyone know how I can give an NPC unique dialogue on a specific day? I've been trying to figure it out with the wiki but I just can't get it to work.

dusk terrace
#

@chu2.718281828459045235360287471 sorry

latent mauve
#

That reminds me, did anyone check in on that dialogue weirdness we found as a result of 8BitAlien's issue? (Mon dialogue key overriding spring_1)

#

Or is this an intended behavior and I just missed where it is mentioned in the wiki for priority?

twin wadi
sand wigeon
#

I finally got the NPC to say the right thing in one instance, that's a start, thanks

tiny zealot
heavy ice
opaque field
#

If I’m trying to do an increment stat thing in quick question do I add the points at the question or the response?

tiny zealot
#

do it during the script that runs after you pick the response

#

i.e. the part between (break)s that is split by \\

opaque field
#

🤦‍♀️🤦‍♀️ ok so that confirms that is what I was doing wrong. Thank you!

uncut viper
heavy ice
faint ingot
#

Looking at the wiki on creating new machines in CP... is there a way to have something like the item price affect the machine's processing time? Or use other rules based on the input to change the processing time?

latent mauve
#

We got around it by using just 1 as the key and not using the season part, and then using a When condition to set it only on in spring

rigid oriole
#

do GSQs not perform short-circuit evaluation?

#

as in, if you chain 2 of them together with a comma and the first is false, does it still eval the second one

blissful panther
#

It looks like it will?

brittle pasture
#

mayhaps, judging from reading DefaultResolvers.ANY (and Helpers.AnyArgsMatch)

blissful panther
#

Looking at CheckConditionsImpl() in GameStateQuery.cs, it goes through the parsed queries, and returns false if one doesn't match. It only returns true if it gets through all of them without a false.

rigid oriole
#

Im helping out in tech support rn and vmv has a gsq with a cp hasmod token (which should evaluate to immutable true or false) joined with a gsq added by cauldron

#

The smapi log indicates the mod with id in the hasmod is not installed, so the first one should evaluate false

#

But its throwing when trying to evaluate the cauldron gsq because vanilla doesn't have that gsq

#

Ill drop the actual snippet in a bit, im on mobile rn

#

I wonder if the error occurs bc parsing occurs before eval?

blissful panther
#

It does say failed PARSING condition... that could make sense!

rigid oriole
#

Yeah i wasnt sure if parsing occurred all at once before eval or if they're parsed at eval time

#

If parsing happens before any eval, then vmv might have to lock it behind a when

uncut viper
#

it does parse them into little GSQ resolver object things that are then checked one by one when evaluating the conditions, but the query has to have a resolver first for that to happen

#

it still short circuits bc it doesnt actually evaluate them when it parses the entire GSQ, it just splits them up into chunks that point to what function does the evaluation for each chunk later, w hich will short circuit

calm nebula
#

Basically

#

spring_ doesn't always work

calm nebula
uncut viper
#

i would think the moving hasmod to when would be the simplest and most fun, bc its always the most fun when things work, right (/lh)

calm nebula
#

Sometimes I'll textoperations the gsq field

#

That's fun, right?

uncut viper
#

sounds much less simple

rigid oriole
#

i'm trying a minimal repro rn just to make sure there's not another interference

calm nebula
#

Yeah in that case doing a hasmod makes more sense tbh

#

But I like this

uncut viper
#

seems like it'd break real hard with an ANY

#

unless TextOperations is more quote aware than i thought

#

or less? maybe i mean less

#

idk i just woke up

rigid oriole
#

guys i can't minimal repro the error 🤔

#

installed just VMV and its requirements and I can't get the error to throw. tried patch exporting fruit tree data, planting one in the ground, looking it up with LA

tawny ore
#

You can use the 50/50 method to come up with a minimal repro

rigid oriole
#

This is true but I am honestly not invested enough in this user's smapi log

calm nebula
#

No, it's just not deterministic

#

I can see it in the code

rigid oriole
#

nondeterministic... gsq eval?

blissful panther
#

@ivory plume Quick question regarding this repo: https://github.com/StardewModders/mod-reference-assemblies

I'm about to make the switch to having my mods build in GitHub runners, and as a result, I need the reference assemblies. I have them in my testing repo for now, but I think I would rather pull them in during the build.

I'd like to keep them up to date. I could make PRs with the new assemblies, but it would defeat the purpose if I need to wait for a PR to be accepted before I can release a new version of a mod.

(Also apologies if you don't own the StardewModders organisation like I assumed. That is a distinct possibility. SDVkrobusgiggle )

ivory plume
#

(I don't own that organization, it's owned by Entoarox. I'm just a moderator in the org.)

blissful panther
#

(Oh, no!)

lucid iron
#

Is entoarox active rn

ivory plume
#

I don't think so.

#

Feel free to submit the PR with the new files and I can review & approve it. That test repo likely isn't how I'd manage reference assemblies long-term though, my plan is to eventually create a NuGet package for it (and not be under an organization I don't control).

blissful panther
#

I may just go the NuGet route to begin with, actually...

#

I don't have any releases to get out any time soon, so there's no rush on it.

#

For now though, I think I will just get a PR in for the current versions at least.

tawny ore
#

I'm excited for this. It kind of makes GitHub a more viable hosting platform.

blissful panther
#

It's just two text fields (possibly one if I eventually use Casey's suggestion) and a button click right now, yeah. Super viable to use GitHub for that with this.

lucid iron
#

Let me copy ur homework pls

tawny ore
#

So if I properly manage my updates on feature branches, I should be able to automatically publish for every merge into main

blissful panther
#

It'll be in my repo when the reference assembly situation is at least adequately resolved.

#

By the way, Pathos, would you rather I leave the NuGet package for them to you? Wouldn't want to do essentially the same thing.

rigid oriole
#

i really like this idea but it'd mean i'd have to actually branch properly and stop pushing directly to main whenever i feel like it SDVpuffersquee

blissful panther
#

The way I have it right now, it's just a workflow dispatch. Stick in the project name, it builds it, and spits out a release with hashed assembly for at least a tiny bit of validation possibilities.

rigid oriole
#

i've at least started tagging my main branch but my organization leaves much to be desired

blissful panther
#

I feel like for a monrepo, detecting which project's changed would be... nightmarish.

#

I did originally have it running based on me pushing a tag like SmartBuilding/1.9.2, but I decided I didn't love that in the end.

calm nebula
#

Now can you take my repo and make that work :krobusgiggle

#

Messy subrepos and all

#

We love you DH

#

I wouldn't blame you for not

blissful panther
#

I feel like it might not be too bad... maybe...?

#

I am curious now, though...

calm nebula
#

Oh, and I sign my assemblies

blissful panther
#

With the built-in dotnet type signing-light thing, right?

calm nebula
#

Yeah it's not great

#

But better than nothing

blissful panther
#

That wouldn't interfere with anything at least!

#

Assuming it happens pre-ModBuildConfig zipping?

calm nebula
#

Yes

#

I meant to give you access on my repo

#

To be fair I would give half of y'all access over my stardew repo

calm nebula
rigid oriole
#

ah ok

twin wadi
#

how do i get started with making custom clothing?

lucid iron
#

Depends if you want to use fashion sense

twin wadi
#

how is this formatted?

lucid iron
#

Or actually clothing items

twin wadi
twin wadi
lucid iron
#

Then u want clothing items

#

Check the shirts.png in decompile

twin wadi
#

which folder is that in?

#

im trying to find it

lucid iron
#

Tilesheets or something?

twin wadi
#

sorry about so many questions btw

twin wadi
lucid iron
daring skiff
#

I actually have this tab open.

twin wadi
lucid iron
#

Trigger actions fire in bunch of places but mainly whenever the trigger is fired

twin wadi
#

thank you chu!

lucid iron
#

So assuming we have this play sound cue trigger action action, I'd put it in a LocationChanged trigger action and detect if the new location is SeedShop

daring skiff
#

Everything happens so much.

blissful panther
#

@calm nebula, do you happen to know which project would be best to test with? I've tried a few random ones, and they don't want to build. SDVkrobusgiggle

#

Submodules checked out okay, and the ones that fail to build in the runner also fail on my system, so...

lucid iron
#

It is very smol

uncut viper
#

question: in what circumstance is createQuestionDialogue(string, Response[], afterQuestionBehavior, NPC) meant to like... use the speaker that i pass in to it. cuz i kinda thought itd show the portrait of the NPC given to it but it seems to not do that and appears no different from the other createQuestionDialogue(string, Response[], string) overload

lucid iron
#

It doesn't do that as far as i can tell

#

Simply inheriting this from the DialogueBox class

uncut viper
#
if (speaker != null)
    {
        Game1.objectDialoguePortraitPerson = speaker;
    }

this is in the code for it so i think i can be forgiven for assuming SDVpufferpensive

lucid iron
#

I suspected that when u have daily dialogue that asks a question

#

This is used just to keep the speaker around

#

I don't remember any case in vanilla where the choices r accompanied by portrait anyways

calm nebula
#

You should be able to build east scarpe though

#

Or one of the independents

blissful panther
#

I don't see ES in the repo... I must be missing it!

calm nebula
#

Alpha

#

Don't use main, main is stuck in 1.5.6

blissful panther
#

Ooh, I just realised a pretty problematic thing for this being a drop-in replacement...

#

This specifically:

name: Overwrite ModZipPath definition file, because dotnet doesn't get the solution directory macro
run: |
    echo "<Project><PropertyGroup><ModZipPath>/home/runner/work/${{ github.event.repository.name }}/${{ github.event.repository.name }}/Release/Zip</ModZipPath></PropertyGroup></Project>" > Build/Latest.targets
#

Anything that uses $(SolutionDir) fails horribly when building directly using dotnet and a csproj.

calm nebula
#

I can give up the solutiondir for github automation

blissful panther
#

Artifacts were still uploaded to the workflow output, but just not a release because of the token.

lucid iron
#

Yay

blissful panther
#

And reference assemblies temporarily added to the repo itself just for the test until the StardewModders repo one's PR gets merged.

#

But the proof of concept is there!

#

I wouldn't recommend stealing the workflow yet, either. Still a couple of things to make it more easily... adaptable.

rigid oriole
#

Is the "run on tag creation" still a viable option for monorepo people?

iron ridge
#

i was thinking I'd have to write my own workflow for mods.directory's github stuff.. I can just steal this now

blissful panther
#

The manual version still creates the same ModName/1.0.0 tag on release.

blissful panther
atomic merlin
#

Hi everyone! I am wanting to make a mod for a custom NPC, but have no clue where to start. I am wondering if I can use another person's mod as sort of a "base" for my mod, but like just to understand how things work (if that makes any sense.) If so, would it be ok to share that mod? Or do I have to keep it just for myself sense it's a modification of one? Thanks!

sleek flint
#

Hello everyone, so for those who don't know, I have been working on a framework for custom TV channels and I want ideas for certain actions that you wish to be added to it, like learning a cooking recipe for example.

blissful panther
blissful panther
#

Quite what they would look like in terms of implementation, I don't know!

#

Yeah, hence the /hj... But I would definitely want to do some spooky things like the dolls.

rough lintel
rigid oriole
#

Then you dont have to rewrite anything vanilla already does

rough lintel
#

but also what barley said

#

leave it up to the user

sleek flint
rough lintel
#

but if theres something that cant be accomplished by trigger action (ie adding skill xp) then id include that in ur framework yes

#

yatta

ocean sailBOT
#
Creating a Custom NPC

Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:

sleek flint
#

These are the only things on my to do list though. And the only 2 I got done are Learning recipes and adding mail flags.

#

So any other ideas are very welcome!

rigid oriole
#

You dont need to do mail flags, etc if you do trigger action

#

If anything, I'd say you should only let them do a trigger action but add your own trigger actions as necessary

sleek flint
#

I guess. The mail flags thing was just to test. It was meant to be something simple, I most likely will remove it.

uncut viper
#

it cant hurt to have a default format for an always-sent mail flag

#

makes it easier for other mods to check if a player watched a channel from another mod

rigid oriole
#

Oo I like that

uncut viper
#

i.e. a default mail flag on top of the trigger action

blissful panther
sleek flint
rigid oriole
#

You can use c# to parse and run trigger actions!

uncut viper
#

when it comes to frameworks the more you can put the modder in control the better, rather than yourself

sleek flint
uncut viper
#

(within reason)

sleek flint
#

like I said I will see how things go with trigger actions

uncut viper
#

trigger actions are super easy to handle and super easy for other people to expand on

#

and come with free compatibility with any other mod-provided trigger action

sleek flint
uncut viper
#

i think trigger actions should be required reading for anyone making a framework, but i am a little biased

rigid oriole
#

Im unbiased and i agree

sleek flint
#

And like I said my original plan was to allow for both my code and CP's trigger actions it just depends on how good it is, If it's good I might not need to code my own thing.

uncut viper
#

i still would highly recommend looking at trigger actions first though, since the 2 things you said you've already done are just already doable with trigger actions

sleek flint
#

Damn

#

Ok I am gonna look at it rn while talking.

#

Any ideas for things that can't be done with trigger actions though?

rigid oriole
uncut viper
#

i would also agree with that, as that'd also let other mods use them too

uncut viper
#

ive no ideas off the top of my head though besides exp, which was already mentioned (and might already be in spacecore?)

calm nebula
#

You're amazing

uncut viper
#

(not that something being in spacecore should be reason for you to not do it, two cakes and all, but smth to keep in mind that modders may already have options)

sleek flint
uncut viper
#

well, until you want it to handle spacecore skills

uncut viper
#

then its slightly less simple (though still not bad)

#

i do!

#

as a modder, thats one of my favourite mods

sleek flint
uncut viper
#

BETAS

lucid iron
#

The thumbnail is top 10 mod thumbnails for sure

sleek flint
#

Well, I would like to say it's because it's your own mod, but your mods are genuinely one of the most interesting and high quality mods out there, and I am not just complimenting.

lucid iron
#

Tbh if a feature

  1. Makes sense for your mod
  2. Is not going to explode another overlapping feature
  3. Low cost in general to do (e.g. no harmony required, code only runs when actively used by mod)
    You should just add it
uncut viper
#

(it is mostly bc its my own mod but i am still ofc proud of my own code (sometimes). and also thank you SDVpufferheart)

lucid iron
#

Anyways u should support tile actions too

sleek flint
#

I always find it funny that many talented people can do amazing things while doing this. Just chef kiss.

lucid iron
#

Unlike trigger action they get direct access to location which is nice

uncut viper
#

mirror mode is a pile of messy hacks and workarounds, i would definitely not call it a result of talent SDVpuffersquee

lucid iron
#

And there's a few things in vanilla only available as a tile action (like opening shop)

sleek flint
lucid iron
#

Do wacky ideas first

sleek flint
#

that's 100% going in

#

let's just hope it cooperates and doesn't make me cry for 30mins 😭

sleek flint
#

I am one step away from turning everyone in the valley into a banana

lucid iron
#

That sounds like the main campaign to me

sleek flint
#

Oh god I have been reading for like 5 mins and I already realized how much better trigger actions are. There are barely anything left for me to do!

next plaza
ivory plume
#

Hmmmm.

next plaza
#

I'm not sure I agree with the required nuget package route to be honest since you have to have it in the project file (unless there's a feature I'm unaware of?).

Like, if I somehow wanted my mod to be able to build for two SMAPI versions (or even two slightly incompatible game versions that aren't mod-pocalypse level), that would be a little more tedious I think?

lucid iron
#

I thought it's just for the bnr to pull

#

Not for mod to ship

next plaza
#

bnr?

lucid iron
#

Build n release

next plaza
#

Right, but what if SMAPI 5.0.0 comes out mid-game version for some reason, and I want my mod to support both initially since not all mods are updated yet, for the sake of players whose mods don't all have updates yet

#

I realize there is deprecation periods

ivory plume
#

My idea was to have it be bundled with a core package (maybe even the mod build package). If the game folder is detected, the code is compiled using that folder; otherwise it's compiled using the reference assemblies (maybe with a build warning). So you can just take the same code that builds locally, and build it in a CI pipeline with no changes.

next plaza
#

But building for old SMAPI could also include a workaround or disabled feature for something not doable with it compared to new SMAPI

blissful panther
lucid iron
#

2 pipelines then with ref assembly 4.0.0 and 5.0.0

ivory plume
#

If you wanted to multi-target versions, you'd just reference two versions of the NuGet package conditionally.

next plaza
#

Sounds slightly more tedious but okay

blissful panther
#

I do think the ideal in terms of ease would be for it to be included with the ModBuildConfig package.

I remember we talked about that a while ago.

next plaza
ivory plume
#

It seems much simpler in the most common case (where you just want to build a mod in a CI pipeline). I guess it's slightly more work if you have custom scenarios like multi-targeting game + SMAPI versions, but that sort of thing will be extra work regardless.

next plaza
#

Fair

ivory plume
#

Yeah, it would probably be an option if we went with that approach (game folder only, reference assembly only, or auto-detect).

next plaza
#

(Though technically could have the modbuildconfig repo just use mod-reference-assembly and package it in the specific way needed for modbuildconfig, using submodules or something - though might need some sort of version with just the game and not SMAPI in that case)

#

@blissful panther By the way do you want to be added to the organization

blissful panther
#

If we're okay with it, sure!

next plaza
#

@ivory plume I assume you are?

ivory plume
#

Yep! Any established mod author can be in the GitHub org.

next plaza
#

That's what I thought but nobody has been added in a while as far as I can remember so wanted to be sure

lucid iron
#

I didn't know this org existed until today Dokkan

next plaza
#

I can add other people too, just thought to add DH because of the reference assembly repo stuff

blissful panther
#

Thanks! This might actually be a logical place to house the action, too.

next plaza
#

I noticed when I added you it said "two repositories" for the "Modders" team - mod-ideas and mod-translations

#

So might need a separate thing for the other repos (not sure it makes sense to give everyone write access to ref assembly repo for example)

#

@blissful panther Let me know once you've accepted it

blissful panther
#

Doesn't look like I can easily on my phone...

calm nebula
next plaza
#

Classic corporations and making their apps/mobile websites less featured than the desktop sites

lucid iron
#

I thought u had to go to email to accept these things

next plaza
#

I think the email just links to the page on the website that does it

#

Which would auto-open the app usually

blissful panther
#

It does, but no saved passwords in my browser, and my Yubikey is in the room that isn't my bedroom. SDVkrobusgiggle

next plaza
#

I didn't know you could force github to only accept the physical 2FA stuff

#

When I was having trouble earleir it gave me other options

#

But I'm using the github app (and separate authenticator app backup)

blissful panther
#

I don't think you can, but my password manager is also locked... with the key that isn't here.

next plaza
#

Ah. RIP

calm nebula
#

Smh dh

#

If you don't have your yubi on you 24/7 your not a real coder u know

uncut viper
#

if you just turn off 2FA and use "password" as your password everywhere you wont have this issue

calm nebula
#

Mine even goes into the pool

next plaza
#

One day we'll get 2FA as a brain chip that lets you authorize things with a thought.

And it totally won't be hackable/accessible by all the other brainchips

atomic merlin
ocean sailBOT
#

Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Home, with 4 C# mods and 1 content packs.

calm nebula
#

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

calm nebula
#

Please, casey, my unwinning personality is my 2fa

#

I'm so tired