#making-mods-general

1 messages · Page 336 of 1

urban patrol
#

that would be awesome! do you want to learn? it’s a lot of moving parts but not particularly difficult i would say

wise forge
#

I'm sort of in the process of learning! I've picked up a couple of things as far as the coding goes, but creating my own mods from scratch is something I've barely scratched the surface with, haha

#

I really just know enough at this point to fix SUPER minor bugs that I come across 😅

lucid iron
#

!commissions

ocean sailBOT
urban patrol
#

well if you ever have specific questions or want tutorials to follow, let us know! there are good resources out there

lucid iron
#

I think it's mainly just the art and dialogue stuff

#

Moreso than coding

urban patrol
#

or yeah you can commission someone!

lucid iron
#

But idk what if Harvey is a time lord - a Dialogue Overhaul

wise forge
#

Omg

#

I'd be here for it 🤣

#

It's so cool that there's a wiki page for the folks that do commissions!!

lucid iron
#

That would skip the art part so u can just do dialogue bits (compatibility aside)

urban patrol
#

his clinic IS bigger on the inside…

wise forge
topaz plaza
#

hi! so i've never done any modding or coding or anything before, but i really want to make a mod to recolor the buildings on the farm (shed, coop, barn, etc) and i was wondering if anyone has any videos or advice or anything! so far it seems krita is a good free program. thanks in advance SDVemoteheart

proven spindle
ocean sailBOT
#

Making mods can be broadly divided into two categories:

Usually it’s easier to start with making content packs, since you don't need to learn programming.

balmy valve
# topaz plaza hi! so i've never done any modding or coding or anything before, but i really wa...

Hi!
To start, you're going to need to download and install SMAPI and Content Patcher, which let you make content packs. Follow their steps exactly, even if it seems unnecessary.
Then you will need to extract the game's tile sheets, which it uses to make silly image on screen. You will need a software that can unpack .xnb files into other files, the recommended one is StardewXNBHack. They will unpack into a folder called "contect (unpacked)". You will reference this folder every time you want to check the original tile sheets.
Then, you will need to import the tile sheets with the tiles you want to edit (in this case, the sheets with the farm buildings) and edit them in your software of choice. You use Krita, I use Gimp.
Then you will need to export your tile sheets into a folder. Inside your "Mods" folder, make a new folder, name this folder with your mod name. Inside THAT, make a folder called "assets".
Then, create two .json files: a Content and a Manifest. Content is where the magic happens. Manifest contains info like your mod title (which you can replace with {{ModId}} in the Content file to make things easier) and version and description and stuff. These are going to be in your mod's folder, not in assets.
In your Content.json, you're going to do some Action: EditImage commands. Action:Edit finds whatever you want (in this case, the tilesheets from the original game) and directs the game to load your tilesheets instead
There might be other things to edit, like changing the image that shows up in Robin's building menu, but idk about that.

#

Hope that helps you get started. I constantly reference the Stardew Modding wiki, and you need two other sites: smapi.io/json (json file parser so people on here can help you easier) and smapi.io/log (SMAPI log parser to be able to share any errors with people on here.)

uncut viper
#

youdo not need to do anything with Tiled to retexture buildings

#

(and i would not recommend creating tsx files)

balmy valve
#

Okay SDVpufferthumbsup will update that

uncut viper
#

you also do not do any load actions

#

all they need to do is edit some images and use EditImage

twin wadi
#

is there a debug command to make an npc play an animation? i need to test some animations for npc sprites but it's hard to trigger them

calm nebula
#

Good morning modders

#

How goes modding

balmy valve
#

Bad

#

As always

twin wadi
#

i just solved a bunch of errors so feeling good SDVpufferthumbsup

balmy valve
#

But Yoba gives the hardest battles to the funniest clowns

ornate trellis
#

in my fantastic sense of order i thought i lost a lot of retextures I did but turned out I did not(my order did not convince the jury)

twin wadi
#

i used to hate troubleshooting but its been honestly fun (the tmx errors were not fun though)

ornate trellis
#

so i spent the last three hours ordering my data instead of working on my mod stuff puffer_thumbs_up

twin wadi
ornate trellis
#

just make a schedule that has all animations, why make a whole event

twin wadi
#

that works too! it was just easier to trigger events tbh

twin wadi
#

does anyone know what the sound id for animals eating grass is?

brittle pasture
#

I dont think they make eating sounds?

twin wadi
#

idk i don't remember exactly lol... but i feel like there was this rustling grass sound when animals ate it

#

or maybe it was just the sound of animals walking in grass

#

yeah that's proabnluy it]

uncut viper
#

dirtyHit

royal stump
#

probably that, yeah, there's no sound in the Eat code etc

twin wadi
uncut viper
#

you might be confusing it with pigs digging up truffles

twin wadi
#

yeah probably

uncut viper
#

which plays dirtyHit

twin wadi
#

ohhh okay thank you

uncut viper
#

(or any animal that digs up produce not just pigs)

twin wadi
#

also i might have to recode my event SDVpuffercry i used advancedmove for some animals running in circles, but i cant time it perfectly so that they stop at a point i want them to... like it changes depending on how long it takes for you to click out of dialogue

#

wish there was an option to make npcs walk to a specific point by the coords of the destination like in schedules

gentle rose
#

what's the difference between that and a tile offset?

calm nebula
#

Nonblocking

#

Ish

gentle rose
#

wdym?

calm nebula
#

Wait no

#

My brain is dead

gentle rose
#

I was trying to figure out where that came into the equation atra SDVpuffersquee

calm nebula
#

Tbh actually I literally coded that into smd because of one minor use case

#

I wanted to have npcs wander randomly but then be able to order them to a specific tile

sour sleet
#

Is there anything specific I need to do to make a mod compatible with android or will it just work? I didn’t even consider some people use mobile lol

calm nebula
#

I needed it for a Pam Tries event (penny paces in one.)

gentle rose
#

fair, but other than that, isn't a tile offset with a known start tile basically the same as walking to a coord?

sour sleet
uncut viper
#

if you dont have any of your own C# then there is nothing you can do to affect mobile compatibility

gentle rose
#

honestly you're probably good then

uncut viper
#

it either works or it doesnt, depending on your dependencies working on mobile or not

gentle rose
#

yup, that's a more accurate way to put it

sour sleet
#

Ah ok thank you both SDVpufferthumbsup

gentle rose
#

the mod is called smd but idk if atra released it yet SDVpuffersquee

#

that being said, like I said, you can probably achieve this with regular moves/advanced moves and possibly proceedPosition

twin wadi
#

i could add in a little fade where the msg is like "one eternity later" or smth lol

#

and reposition everything

gentle rose
#

I'm confused about what you're trying to do that these commands don't already handle tbh

twin wadi
#

does proceedPosition work for advancedMoves?

gentle rose
#

I don't see why it wouldn't

twin wadi
#

it was just that it was a looping advancedMove, but now i see it might work. ill try it

gentle rose
#

oh, then no

#

because it won't stop moving

twin wadi
#

yeah

uncut viper
#

they dont know what the starting position is going to be though

#

bc of that yeah

#

i presume the animals stop moving with a stopAdvancedMove but the issue is that sugar doesnt control when stopAdvancedMove happens. the player does, depending on when they advance the dialogue and how long they take to do so

twin wadi
#

yeah...

uncut viper
#

so the animals may be in any position within that loop when sugar tries to use the regular move command

gentle rose
#

oh, I see now

calm nebula
#

Yup, and see what I said about smd last time

twin wadi
#

i wish there was a command to move an actor to a specific position

#

like in schedules

calm nebula
#

I'm late

uncut viper
#

if the advancedMove has a point where the animals pause in one spot for a moment, is that not enough for proceedPosition?

#

i dont know how that specific event command works

gentle rose
#

I wonder how proceedPosition handles pauses in advanced moves

twin wadi
#

i mean, i could test it

gentle rose
#

dammit button SBVLmaoDog

uncut viper
#

it looks like it just checks if the character isMoving which i think literally just checks if they are currently, actively moving, not set to move

#

so it may work to wait for them to pause at a known tile

#

that said dont quote me on it

#

unless it works

twin wadi
#

ill test it fs, shouldn't be too hard

#

wait, do i put proceedPosition after stopAdvancedMove or before?

uncut viper
#

before

#

immediately before

twin wadi
#

k thanks

#

will this work? there's two animals so...

proceedPosition {{ModId_Teddy}}/
stopAdvancedMoves/```
uncut viper
#

not if the chicken would start moving again before teddy stopped

twin wadi
#

maybe i should make chicken pause a little more then?

uncut viper
#

you can, if you're fine with the chicken pausing that long on every loop

twin wadi
#

the loop ends at the same time for both of them though, the gap shouldn't be huge at least

gentle rose
#

do they move in the same way?

#

and do you need to wait for both of them at the same time?

uncut viper
#

stopAdvancedMove doesn't take any arguments and stops ALL advanced moves so you have to wait for both of them to stop if you wanna be sure of where they'll be

gentle rose
#

button are my questions even less helpful than usual today /lh

uncut viper
#

i think they're about average

#

tbf, im also out of my element here

lucid iron
#

Events scary goodbye

tawny ore
gentle rose
#

I'm extremely offended, just so you know /j

uncut viper
#

most of my event knowledge comes from reading the code for individual commands when someone has a question and no one else is around to answer

urban patrol
#

oh wait no because you can’t tell where they’re starting from never mind

twin wadi
#

i just tested it twice and they both end up at different positions both times

gentle rose
#

did they pause correctly?

twin wadi
#

they do pause, but they stop at different positions of the loop

gentle rose
#

I would try to simultaneousCommand the two proceedPositions

twin wadi
#

aaaah this event is more complex than i imagined SDVpuffersob im not giving up tho

twin wadi
gentle rose
#

or use the one that waits for everything to stop

#

if they're the only two characters moving

uncut viper
#

(case in point: I had no idea that command existed)

gentle rose
#

waitForAllStationary, that's the one

uncut viper
#

that's better than where the rest of my knowledge comes from which is Mirror Mode experience, which so far science has found no practical use for

gentle rose
#

oh, okay, simultaneouscommands won't work in this context, but since you need everything to stop anyway, waitForAllStationary will

twin wadi
#

yes!!!! it works!! with the simultaneousCommand stuff

gentle rose
#

oh, nvm

calm nebula
#

When I'm eventing i have no patience and have c#

twin wadi
#

i tested it twice with different pacing and it ended at the same position

uncut viper
#

events work in mysterious ways

twin wadi
#

its sooo hard but it's really fun

uncut viper
#

one day I'll have to actually write some and I'm dreading it

gentle rose
calm nebula
#

Button you and I have a superpower in eventing

#

We can trivially make event command

uncut viper
#

this is true

gentle rose
#

what am I

goat?

#

(/j I'm in a weird mood)

uncut viper
#

and trigger actions and queries and whatnot

calm nebula
#

What's your OC, iro

uncut viper
#

my custom NPC is gonna have so much bespoke stuff

lucid iron
#

I wonder if goto would help with this kyuuchan_run

calm nebula
#

Tbh chue I've resigned myself that Pam Tries and Science House Rewritten will both never exist

#

But both will use SMD

uncut viper
#

you could probably implement a hill climbing algorithm with gotos to navigate to the correct tile eventually

gentle rose
#

joke's on you atra I actually have an npc mod planned rn it will never be published it's just a proof of concept

lucid iron
#

I think they should exist the market of SDVdemetriums mod is untapped

uncut viper
gentle rose
#

they'll be released if by released you mean I will throw them in a discord channel and refuse to acknowledge their existence from that point on

uncut viper
#

I don't

drowsy minnow
#

now thay its a more active time would someone be ok with helpping me on this since i havent been able to figure out how to fix this still, if not thats ok i can try tweakimg it myself til i get it rightSDVpufferheart

uncut viper
#

I don't mean that

desert tusk
#

@tawny ore** Better Chests** Mod Question:
Hello! I'd love to use your mod but the dependency on Fauxcore is a big problem. From what I read and have seen, Fauxcore is not maintained and non-functional.

  1. Is your Better Chests mod usable without Fauxcore?
  2. Is there any intention to patch for the lack of Fauxcore going forward. If this has already been done, please let me know.

Thank you for your time! Please @ me in any response <3

twin wadi
balmy venture
#

gosh better chests, I miss it, such an awesome mod

calm nebula
#

Instead of working on mods i joke around about candy at 1am

desert tusk
gentle rose
#

(also for questions about using mods, you're better off asking in #modded-stardew)

#

(this channel is for making mods)

balmy venture
#

guys, I just finally finished a big pack of custom paths, I'm so happy. It's easy compared to all modding out there but this is a big achiev for me 😭

lucid iron
#

Yeah i expect full nexus page with cover art and nice headers explaining their deal

gentle rose
#

there will be one singular discord message with a zip file and maybe an emoji

uncut viper
lucid iron
#

Is the emoji SDVpuffersmile

gentle rose
#

maybe SCsleepybb3 or doorhide

balmy venture
#

I wonder if there's any custom path mods authors out there that want me to convert their paths to unique items, I'm ina roll XD

#

but I can't make sprites to save my life

drowsy minnow
lucid iron
#

Tbh if u feel like u want their paths in your game anyways

#

Just convert and offer files after

balmy venture
#

I just did that yes

#

hoping they reply

drowsy minnow
#

i was gonna just rewrite the third object but i figured I'd see if there would be any quick fixes instead of having to write it all again SDVpufferthinkblob

balmy venture
#

but I'd love to convert first to a modder that wants to share with other people

uncut viper
drowsy minnow
urban patrol
#

i’m back with more questions about hardcoding: would i be able to create an item (magic 8 ball) that could tell you your daily luck? either an object or decor/furniture

brittle pasture
#

does cp have a daily luck token

uncut viper
#

it does

brittle pasture
#

then you can do something with spacecore's furniture action to show a message

uncut viper
#

object not with CP alone

urban patrol
#

oh sick

uncut viper
#

furniture what selph said also not CP alone

urban patrol
#

but with just spacecore, or would i need anything else

twin wadi
#

hmm now i have a different problem... teddy (the cat) is supposed to pause, do an emote, and walk to the farmer. but right now, teddy just runs up the map and goes out of bounds, and the event just stops. is there an error to this specific part?

proceedPosition chicken/
proceedPosition {{ModId}}_Teddy/
endSimultaneousCommand/
stopAdvancedMoves/
pause 500/
emote {{ModId}}_Teddy 16/
pause 500/
 move {{ModId}}_Teddy 0 -8 0/move {{ModId}}_Teddy -5 0 3/```
uncut viper
calm nebula
#

Ah you're getting the other reason I wanted a goto this square command

#

Move commands after advance moves break unless you reset the actor to a tile first

twin wadi
#

ohhhh

calm nebula
#

Or use another advancemove

lucid iron
twin wadi
#

okay, thanks. advancemoves are really hard lol

lucid iron
#

Another way is, no furniture but usable item with spacecore

calm nebula
uncut viper
lucid iron
#

Raise a trigger that shows some messages (spacecore hud message, betas dialoguebox, etc)

urban patrol
drowsy minnow
lucid iron
#

But you won't be able to get the welwick message persay

#

I think u just get the raw luck number

uncut viper
#

you can make a dynamic token that changes the text based on the value of the number

lucid iron
#

Need to do ur own text if u want similar yee

urban patrol
#

yeah that's fine, i could then use the luck number to define messages to send right? like if luck is < x, then send "outlook not so good" for example

#

perfect

drowsy minnow
lucid iron
#

Use the luck for a dynamic token (or LocalizedText if u wanna go that route)

uncut viper
#

you could technically use the If action too but id not recommend it

urban patrol
uncut viper
#

LocalizedText is only an option if the trigger action action you use supports tokenizable strings

#

by default, they do not

#

dont know if spacecore's HUD message does

urban patrol
#

oh i think i get it, like how you have to reference Strings/whatever if you want your tile action to be formatted text?

uncut viper
#

(spacecore's hud message does parse tokenizable strings apparently)

#

you can put any string you want in any asset anywhere

#

doesnt have to be Strings/

#

(by that i mean you can make up an asset. cant put it in an existing asset that isnt a string -> string dictionary)

twin wadi
uncut viper
#

but if you only need this one string its probably easier to just add to Strings/Whatever

urban patrol
#

got it got it

uncut viper
#

you'd editdata your entry into Strings/Whatever

#

and then your tokenizable string token would be [LocalizedText Strings/Whatever:YourEntryKey]

lucid iron
#

Yee

#

I think doing it like this might be nice cus u can invalidate it with the betas thing in middle of day

calm nebula
uncut viper
#

spacecore's ShowHudMessage supports that and all BETAS actions support it, but vanilla actions (not that theyre applicable here anyway) do not support it

calm nebula
#

(You see now why I wrote my own damn command now)

lucid iron
#

If u need something that is change beyond just on the morn

urban patrol
#

(i do have both spacecore and BETAS as dependencies already so that's good)

urban patrol
#

so like for example the 8 ball reads bad luck in the morning, then you go collect a rabbit's foot, then it changes to show okay luck

lucid iron
#

Also if u use betas dialoguebox u can draw the results

#

To show as portrait

twin wadi
lucid iron
#

It could be base luck only

twin wadi
urban patrol
uncut viper
#

(wait is there really not a DAILY_LUCK gsq in vanilla)

#

(i take back what i said about using the If action earlier then)

#

also i would be surprised if the luck token was not taking straight from the DailyLuck property on Farmer

#

which handles things like the rabbits foot

tawny ore
#

I thought there was because Garbage dehardcoding depends on luck

uncut viper
#

do the LUCK_LEVEL skill GSQs count daily luck?

#

nope they take the Farmer.LuckLevel

#

hmm

#

im assuming the garbage cans use the RANDOM GSQs with the @addDailyLuck parameter

lucid iron
#

Y'know

#

Shouldn't the 8 ball be 100% bullshit

#

Like irl

uncut viper
#

confirmed they do just use RANDOM with that parameter

urban patrol
#

lmaooooo that's definitely true to life

uncut viper
#

they dont check the daily luck directly

urban patrol
#

is there a way in CP then to do daily luck + luck skill = token?

uncut viper
#

(BETAS has the RandomAction action, you could definitely make a 100% bullshit random 8 ball)

lucid iron
#

Luck skill?

urban patrol
uncut viper
#

Luck skill != daily luck

#

i wouldnt worry about luck level so much

#

its mostly unused

#

iirc

urban patrol
#

oh okay

lucid iron
#

I vote for 100% bullshit 8 ball

uncut viper
#

i believe the only time its affected is with food buffs since you cant actually level up luck

#

without a mod

urban patrol
#

and tbh yeah just using daily luck is fine with me like i said, i just got overly invested in the math of it all

lucid iron
#

It'll avoid problem of ppl having the modded luck skill then only seeing high luck msg too

urban patrol
brittle pasture
#

I dont think any of the luck skill mods use the unused luck skill either last I recall?

lucid iron
#

Oh no we invoked simspsons

brittle pasture
#

actually they do, from a brief source glance

tawny ore
#

Does the TV use hardcoded logic for the luck channel?

brittle pasture
#

interesting how the luck skill is rather integrated for an unused skill, like it's even used in mastery calculation

tawny ore
#

Oh interesting. I wonder if those thresholds are arbitrary, or do they have significance

uncut viper
#

not shown is the full length of that middle one there which is just a triple ternary to handle the upper thresholds

drowsy minnow
#

so everything seems fine just doing some additional testing ૮₍ ´ ꒳ `₎ა

brittle pasture
#

I love myself some nested ternaries

urban patrol
#

the worst part of event testing is that you have to watch them 80000 times. the best part of event testing is that you get to watch them 80000 times

uncut viper
# uncut viper yes

i also just realized is this literally creating a DaySaveRandom and then just.... not even using it.

tawny ore
#

Does that Utility method have any side-effects?

uncut viper
#

just a floating Random out there...

#

nope

lucid iron
#

Well it progress prng right

uncut viper
#

nope

#

literally just creates a new seeded Random

lucid iron
#

Bolb

tawny ore
#

It's almost like the C# optimizer seems to think it's possible for DailyLuck to change to 0 while going through the other conditions

urban patrol
#

screw using BETAS random, i want to access this random /j

uncut viper
#

the forbidden random

calm nebula
#

Two things

  1. C# has no concept of marking methods with side effects.
#

There is a jet brains annotation and it enforces nothing

#
  1. The bulk of c# optimization is done by the jit
#

You look at the IL and go "oh god why"

#

Or at least I do

uncut viper
#

(also i dont think its assuming it can change while going through the other conditions. rather, the other conditions dont check for 0.0 exactly. they also dont return though. so it can still be changed after all the conditions)

tawny ore
#

I'm just curious what the OG code looks like

#

like why isn't this just a single set of if/else if/else

uncut viper
#

or a nice pretty switch statement

lucid iron
#

Can u use switch with range like that

uncut viper
#

also i just feel obligated to point out that while this may be hardcoded on the TV you CAN change what text appears yourself using BETAS harmony postfixes—

brittle pasture
calm nebula
#

(I'm not sure the game can)

calm nebula
#

Filter clauses

brittle pasture
#

not really related but I miss Rust's "almost everything is an expression" thingy so I don't have to use ternaries or the not-as-flexible switches

#

let x = if plssss

tawny ore
#

switches are pretty darn flexible nowadays

gentle rose
#

javascript short circuiting is just as good /j

uncut viper
tawny ore
#

I hope that when whatever C# version brings the extension method changes, we're able to use that in mods

gentle rose
#

button no. no crimes

uncut viper
#

i like javascript

gentle rose
#

I enjoy javascript

#

still a crime though

uncut viper
#

i would say "liking javascript" and "enjoying javascript" are subtly different but different nevertheless

gentle rose
#

that is very true and intentionally so

uncut viper
#

anyway SMAPI.js when

#

oh no

tawny ore
#

Actual answer incoming

ivory plume
uncut viper
#

nice, PR permission

#

(/j)

lucid iron
#

But what would it do ...

ivory plume
lucid iron
#

Load mods?

uncut viper
#

i feel like ive never been more terrified (/lh) in this server than sending that and seeing "Pathoschild is typing..." immediately after

tawny ore
brittle pasture
lucid iron
#

Can u wasm it

uncut viper
brittle pasture
#

someone already did most of the work, let's go

uncut viper
#

how do i even use this

twin wadi
#

is it possible to put the farmer as the npc in textAboveHead? it caused an error in smapi

uncut viper
#

no

tawny ore
#

That's the one thing SDV needs, is to be an Electron app

uncut viper
#

id be willing to be generous and let it be a Tauri app instead

split anchor
#

Hi, I made a custom location and I want to exclude it from some NPC's pathfinding, but I want to allow other NPC's to pathfind through it. Can I do this?

uncut viper
#

if spacecore cant do that then i dont think theres anything that would

#

and i dont think spacecore can

pine elbow
#

hi👋 Sorry to interrupt...
asking a question about CP and Appearances
My mod has multiple different Spirit's Eve outfits per character that gets randomly selected each year
but let's say I have two characters who have matching outfits (Penny+Maru as Daphne+Velma), is there a way to ensure that CP checks what Penny is wearing before loading Maru's outfit or vice versa, and then matching accordingly...?

gentle rose
#

are there conditional warps that could only work for certain npcs? SDVpufferthinkblob

uncut viper
gentle rose
#

that's the easiest way I can think to do that pathfinding thing

uncut viper
#

or SYNCED_CHOICE

#

one of the two

lucid iron
#

Would npcs normally pick your map tho

lucid iron
#

Like what if u just dont make it attractive to the pathfinder

uncut viper
#

Penny: SYNCED_RANDOM day costume 0.5
Maru: !SYNCED_RANDOM day costume 0.5

gentle rose
#

whelp, there goes that lmao

#

I feel like it would be easier to do that than the pathfinding though

uncut viper
#

maybe, but in this case if you just want to exclude NPCs then its not that great

split anchor
uncut viper
#

and making it a whitelist instead means terrible mod support

balmy valve
#

I have decided what the missing recipe shall be. Not tea nor mead, but mulled wine. Sent on winter 2 after meeting Alta. perfect

brittle pasture
uncut viper
#

it was discussed again just recently, too

lucid iron
#

Does ur map lead anywhere intriguing...

split anchor
lucid iron
#

Like is it shorter path to town or whatever somehow

uncut viper
#

are you going to manually iunclude every single NPC, modded or otherwise?

#

in your conditional warp

gentle rose
#

hmm, I figured you would be allowed either option depending on which suits you best SDVpufferthinkblob

uncut viper
#

like if you want "everyone but Willy" to use your warp that only allows certain people through, you have to define "certain people"

#

vice versa just has the same problem but the other way around

gentle rose
#

so if you want the warp to only be usable by a few npcs you whitelist, if you want everyone but willy you blacklist

#

so basically, both options

uncut viper
#

tbf, your original message only said "only work for certain npcs" not "only not work for certain npcs" SDVpuffersquee

tawny ore
#

Everyone's invited to this map. Except you Willy, you're not invited.

pine elbow
uncut viper
#

itd go in the Condition field

#

you'd have two appearances. one appearance uses the positive version of that synced random, the second one uses the negative (prefixed with !)

split anchor
uncut viper
#

two appearances for both of them, i mean. they each get 2

pine elbow
split anchor
#

I'm still new to modding, just been following guides

uncut viper
#

as long as they both have their appearances added in the same order whose conditions are oppositethe others

split anchor
#

oh darn

uncut viper
#

not on a conditional-per-npc basis

calm nebula
#

Last time this happened @brittle ledge accidentally left a random extra warp

gentle rose
#

(we're speaking hypothetically about how it would work if it was a thing)

split anchor
gentle rose
#

if your map only has one warp it shouldn't happen, but if it has multiple there's your problem

#

warps that don't work for npcs are a thing, right? or is it just npc-only warps that are a thing?

brittle ledge
split anchor
#

Oh the gate is open even though i have it shut in this pic

calm nebula
#

Do you have spacecore installed

split anchor
#

no

uncut viper
#

hm

calm nebula
#

Loops are bad in the scheduler

uncut viper
#

can you just block every tile in that path with an NPCWarp to like

calm nebula
#

Spacecore fixes one of the ways loops are bad

uncut viper
#

Ginger Island

calm nebula
#

No

uncut viper
#

why not

calm nebula
#

Because the macro scheduler doesn't even look at how the map is set up

split anchor
#

ohhhhhhh

#

pretty nice

calm nebula
#

The macro scheduler just links maps to maps using the wrong algorithm

split anchor
#

I'll go read about spacecore on github

calm nebula
#

I don't think this is documented

uncut viper
#

its not

split anchor
#

How do you think Spacecore will help my pathfinding problem again? I want to make sure I understood

calm nebula
#

It switches the macroscheduler from dfs to bfs

#
  • moves it to by request only
split anchor
#

I don't know what that means aw

gentle rose
#

why would a scheduler be using dfs in the first place... strange decisions

split anchor
#

I found this paragraph in Spacecore Github page

#

"Fixes NPCs taking the longer path when there are circular routes. Note that the "length" of the path is determined by amount of warps, not by amount of tiles travelled, so if there are two paths to a location with the same amount of warps but one map is much larger, they might still take the larger map path."

calm nebula
#

(I wrote that scheduler. Spacecore has a cut down version of the elr macroscheduler.)

gentle rose
#

(I'm confused, I thought we were talking about the game scheduler)

rigid musk
#

As someone who has had horrible horrible situations with vanilla's scheduler ... spacecore really does help

#

(Apparently the npcs love having a party in qi's casino.. because that makes sense 100%)

split anchor
#

so Shane's normal route to work requires 2 warps Forest -> Town -> Joja, and he is currently taking my route Forest -> New Map -> Bus Stop -> Town -> Joja

calm nebula
split anchor
#

Anyway you guys have been helpful I'll play with spacecore now

rigid musk
inland adder
#

"targets": { ".NETCoreApp,Version=v6.0": {}, ".NETCoreApp,Version=v6.0/win-x64": { "Stardew Valley/1.6.15.24356": { // This line "dependencies": {
hey guys, can anybody tell me what does the number after the version codes mean? Will it affect the funciton of mods?

idle lantern
#

OneDrive is ruining me. I've tried uninstalling it, and it keeps returning like a shitty hydra head. It's restoring old versions of my master mod folder

inland adder
#

im trying to read the game version but I can only just find the only clue in Stardew Valley.deps.json

idle lantern
#

I think that's the current version of Stardew Valley

urban patrol
#

have you tried using github? i haven't 100% figured it out myself but it's supposed to be really good for file versioning

idle lantern
#

I haven't yet. Thankfully I have my two mods zipped, and loaded up to Nexus

#

What about looking at the game data via steam?

#

The newest version should be up there too I think

inland adder
#

it's wired

lucid iron
#

Why do you care about this tho

inland adder
#

i haven't seen it before

lucid iron
#

its just the build version

idle lantern
#

I'm assuming that's part of the update chain. Versions solely depend on the programmer, so it could be the number of individual changes CA's made on 1.6.15

lucid iron
#

i dont think its got anything to do with mod

inland adder
lucid iron
#

while we were having 1.6.9 nightly betas, this number goes up

inland adder
#

so normally it should be ignored?

lucid iron
#

when ppl start smapi it does get logged

#

[SMAPI] SMAPI 4.2.1 with Stardew Valley 1.6.15 build 24356 on Unix 6.12.32.1

inland adder
#

oh

#

i see

lucid iron
#

usually no one goes out of their way to put this in the mod manifest tho

#

im not sure if it even participates in the check

inland adder
#

it doesn't seem to be a standard Semantic Version

idle lantern
#

I'd leave out anything extra that isn't needed. There's enough room for errors and bug report causes

inland adder
#

i should handle this situation in my app

lucid iron
#

sdv doesnt do semver

calm nebula
#

It's just the build version

lucid iron
#

thats why 1.6.9 breaks mods Dokkan

idle lantern
#

I've done this many coding. Let's test it for the first time and see how many errors it throws, and if Smapi quits its job on me.

inland adder
calm nebula
#

What are you even doing lol

inland adder
uncut viper
#

(iirc making a mod manager?)

inland adder
idle lantern
#

My first npc!

#

That was a lot of red.

calm nebula
split anchor
inland adder
#

i need to get the version of the game & smapi

idle lantern
#

aw heck yeah!

inland adder
calm nebula
#

Why do you need it?

#

Smapi is very good at maintaining backwards compatibility

inland adder
#

so the game version & smapi version are needed for version controls

#

now it looks simple but im working on it to complete my thoughts

#

so do anybody know something about that?

idle lantern
#

that's too advanced for me, I'm sorry

#

is there a way to code in something that auto reads the folder after user selects it?

#

the json validator isn't catching it, but Smapi is uphappy

urban patrol
#

set your json format to content patcher, it'll point out where the error is!

uncut viper
#

^ its valid json, but not valid content patcher syntax

idle lantern
#

oh thank you!

#

now to decipher "6 ConfigSchema.PortraitStyle.AllowValues Invalid type. Expected String but got Array."

uncut viper
#

its as it says on the tin. you put in an array [] but you need a string

idle lantern
#

I don't use my reading skills - I never noticed the format drop menu

brittle pasture
#

AllowValues take a string of comma-separated values

uncut viper
#

"AllowValues": "Default, Smarmy"

brittle pasture
#

not a list (even though that's more intuitive ngl)

idle lantern
#

ty Button

#

I was just starting to google if I needed those brackets

uncut viper
#

well i wouldnt resort to googling before just checking the CP documentation

idle lantern
#

I didn't know that existed. I'll look for it. I've been sort of flying by the seat of my pants, using the wiki and looking at how other mod authors did things

uncut viper
#

you've been making a content patcher mod without knowing content patcher has documentation?

idle lantern
#

🫠

uncut viper
#

its linked in its nexus page as well

inland adder
uncut viper
#

not particularly, as what you're trying to do is not something i have knowledge for

idle lantern
uncut viper
#

on the bright side making your mod should get a lot lot easier now

idle lantern
#

I saw a facebook comment about someone wanting a mod for Marnie and Marlon, and went 'I can learn that', and jumped in like a doofus.

#

ty Button 🙂

inland adder
#

i don't want to launch the SMAPI exe to get its outputs for resolving the required data, then kill it

brittle pasture
#

you can ping pathoschild with your question

uncut viper
#

have you looked in the smapi-internal folder at all

inland adder
#

I think it's kind of offensive

uncut viper
#

that is where i would look first, but beyond that i have no idea

inland adder
idle lantern
#

to ping pathos?

inland adder
#

and found nothing

brittle pasture
#

it's fine, we do it all the time to beg ask for features. as long as you're not being intentionally annoying

uncut viper
#

well theres a file in there called StardewModdingAPI.update.marker that has the version number in it so id probably look again

lucid iron
#

i think u just have to grab it from assembly right

languid matrix
#

How exactly do I load a custom item's sprite? The object data loads fine and 2 of the fish I added even show up in the fish tab of the collections (not sure which ones though)

lucid iron
#

do a Load and then use that target for texture

#

reember to spawn new items if u changed sprite index

inland adder
#

actually it contains in SMAPI.Installer.deps.json, but its only in the installer folder, after installed, it was not contained

inland adder
uncut viper
#

i have no idea where my file came from then

languid matrix
lucid iron
#

changing not 0 to 0 is still change, but if u r still confused then please upload what you have

#

!json use the validator

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
uncut viper
#

i dont remember ever using it, but maybe?

calm nebula
#

Which also looks at the smapi version I think to update smapi

uncut viper
#

i still manage my mods by hand and always will

languid matrix
#

It probably has a whole bunch of other mistakes as well.

#

Any help?

calm nebula
lucid iron
#

pls use the json validator

languid matrix
uncut viper
#

you havent posted your json here

#

we ask for validator jsons so the link can be shared in here

#

so people can help

languid matrix
uncut viper
#

correct. please put it on smapi.io instead and send the link here

inland adder
urban patrol
#

not the file name/extension

languid matrix
urban patrol
#

put Mods/NotEnoughFish.olm into your Texture:

lucid iron
#

hm would you even be able to load like this NotteThink

urban patrol
#

also just a heads up, you’ve spelled Wizard incorrectly

urban patrol
languid matrix
lucid iron
#

well if u wanted multiple you need {{TargetWithoutPath}}

uncut viper
#

you cannot load from multiple files at once like that*

lucid iron
#
    {
      "LogName": "Load_sprites",
      "Action": "Load",
      "Target": "Mods/NotEnoughFish.olm",
      "FromFile": "olm.png"
    },
#

lets not worry about that n go for this AquaThumbsup

#

after this load you may use Mods/NotEnoughFish.olm in Texture

urban patrol
#

yeah first change your loads, then whatever target you have in your load, use that as the texture

calm nebula
#

Also please for God's sake merge your textures

languid matrix
calm nebula
#

Two major reasons

languid matrix
#

is there not a way to load multiple textures at once?

calm nebula
#
  1. It increases load time
  2. Texture switching isn't great for the renderer
uncut viper
#

the token way chu mentioned yes, listing them out like that you have no

gilded veldt
#

Im trying to edit that map of this farm cave mod cause it bothered me that everything would be on the very top
But when I apply the modified map the game goes back to the vanilla cave
Could anyone help me with this please?

calm nebula
#

You can load multiple textures and do that but also

inland adder
#

to read the DLL version is usable, thx very much

languid matrix
calm nebula
#

(I could, but since I'm telling you please don't....)

languid matrix
calm nebula
languid matrix
#

Now how do I add fish to the mines?

#

The olm is supposed to spawn on floor 20 and the Organism46b knockoff on 60.

brittle pasture
#

the entry for the olm has the condition LOCATION_NAME Here UndergroundMine20

languid matrix
#

Didn't know it worked that way.

#

I thought each fishing floor had its own fishing data separate from each other.

lucid iron
#

mines are special bois

brittle pasture
#

yeh
and level 100 is the specialest

#

you cannot add any fish there at all, it's hardcoded to always be lava eel or trash

#

20 and 60 still uses location data though thankfully

languid matrix
#

Gotta take a break unfortunately. Mom wants me to go downstairs.

brittle pasture
#

should we bother pathos for a special "UndergroundMine100" phantom location entry

languid matrix
#

Also, is the Night Market also hardcoded as well?

lucid iron
#

the submarine u mean?

languid matrix
lucid iron
#

i think its just location Submarine?

languid matrix
idle lantern
#

Trying to fix my schedule.json errors is giving me a massive headache.

lucid iron
#

i mean SVE is just a mod blobcatgooglyblep

#

it can choose not to add a fish to submarine

languid matrix
languid matrix
urban patrol
languid matrix
#

Are Desert fish also hardcoded as well? I assume no though.

brittle pasture
#

also no, ur good

lucid iron
#

if u see regular feesh Data/Locations.json it is usually fine

idle lantern
#

syntax errors I think. It doesn't like the When Refrienship lines I think

languid matrix
#

And should I add humorous reactions to when you try to give Organism46b to a villager or should they just call the player a conspiracy theorist?

#

It won't be called organism46b in game though.

idle lantern
#

Humorous, with someone unexpected going full tinfoil

#

like Gus

#

or Jodi

#

Kent definitely

urban patrol
#

since i don't think that's how you would format the When conditions

#

and while i'm at it, you have to format the schedule dialogue like so:

#

i have examples if you need

inland adder
#

hey is it valid to directly use nexus mod id as UpdateKeys?

idle lantern
#

oof I messed up badly then

urban patrol
#

it's okay, it happens!

half tangle
#

that way it knows which website to check

inland adder
urban patrol
#

@idle lantern (also, if you were unaware, when dialogue is coded into schedules like that, the NPC only repeats that line until they move onto the next schedule point, so if you have dialogue at every schedule point, then he won't be able to say his normal dialogue)

#

the schedule dialogue is usually used for specific things, like "Abigail is playing her flute and doesn't respond" or something like that

idle lantern
#

ooh

#

I need a brain break I think.

#

I'd forgotten how tired your brain gets when learning. I've been torturing my students for years now

inland adder
#

actually I knew about it

#

it just happened when i try to read my existed mods' manifest.json

#

so im thinking if there was a time that this kind of format is valid

#

as a software history problem

lucid iron
#

I don't think there's a historical reason people just do it wrong

idle lantern
#

If a NPC is being introduced during an event, do I need 'Introduction' in the dialogue.json?

tiny zealot
#

Introduction is just the name of a conversation topic which lasts for the first seven days of gameplay, so if you speak to them during normal play during that time they'll say that line

#

once the topic expires, it won't trigger, so if your NPC isn't available before then, you don't need to bother supplying it (you don't need to anyway; it's only useful if you want a "oh, it's the new farmer who just moved in" line)

idle lantern
#

oh thank you

#

He's not available until year 2, so I'll leave it out

tiny zealot
#

tl;dr i wouldn't bother if you're introducing them in a specific way, no

vernal crest
#

I'm glad you answered that question ichor because I thought Jierishi was asking if Introduction is used in intro events lol

idle lantern
#

I wouldn't put it past me

#

and so begins the complete rewrite D:

calm nebula
#

Just fyi

#

Only even heart levels exist

#

Mon3 is pointless

idle lantern
#

OH

#

I thought it meant like option 3

#

thank you for saivng me heartache

calm nebula
#

The other thing is that unless you edit your npc into the group dating cutscenes

#

They only include vanilla npcs

idle lantern
#

ty!

languid matrix
#

Also, how do I add multiple fish that each have different conditions to the same area?

#

Attempted an array but that didn't work.

#

@calm nebula Here it is in the correct channel.

calm nebula
#

(I don't answer summons)

languid matrix
calm nebula
#

(You're blocked now. Best of luck making your mod.)

#

Because I certainly am not interested in being helpful

languid matrix
#

@vernal crest How do I add multiple fish that each have different conditions to the same area?

tender bloom
#

You're going to get blocked by everyone one by one at this rate

languid matrix
brittle pasture
lucid mulch
#

(also mineshaft fish are hardcoded and aren't in data/locations)

brittle pasture
#

(they do read extra entries from UndergroundMine's location data, so you can add new fish to 20 and 60)

vernal crest
#

Did I get pinged because I'm high up in the members list or something?

#

(Also four minutes between asking a question and saying "nobody answered" is wild.)

lucid mulch
#

I think its due to you being the most recent cheeto to send messasges

idle lantern
#

FREEDOOOOM

#

I feel like my eyeballs are melting from rewriting

vernal crest
idle lantern
#

dialogue.json I had a different version but it wasn't loading at all

vernal crest
#

What are all those dialogue keys? They're not standard ones SDVpufferthinkblob

idle lantern
#

I used Shiko's mod as a reference for the new dialogue template

proven spindle
#

Shiko's super outdated unfortunately

vernal crest
#

Shiko is very old and still broken, I thought?

idle lantern
#

this was the schedule version that wasn't working. I've saved everything

#

damn it all

proven spindle
#

(Though I am really curious why people keep using the Shiko mod as a template. Is someone out there recommending that?)

vernal crest
#

I really strongly recommend using the wiki as your source of truth. It's not perfect but it's updated as much as we can manage.

idle lantern
#

No, I just remembered it was popular.

#

I feel a bit lost looking at the wiki. Once I see a working example, it makes more sense - but I'm struggling with dialogue

vernal crest
#

The modding wiki has a full NPC tutorial that's up to date

#

But also looking at an NPC isn't a bad idea...just not one that was last updated in 2019

lucid iron
proven spindle
#

Huh

lucid iron
#

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

idle lantern
#

let me go back to the dialogue page on the wiki

ornate locust
#

unfortunately endorsements don't mean the mod even still works

lucid iron
#

Use the template from 3rd link if u want a ref

idle lantern
#

oh ty!

ornate locust
#

Top endorsed mod for BG3 right now will blow up your game

idle lantern
#

So my original version was on the right track

ornate locust
#

(it's the Mod Fixer which the game was patched to not need anymore)

idle lantern
#

at least I didn't delete it

lucid iron
#

Yeah idk who told u to change everything

idle lantern
#

No one. I couldn't get it to work, so I figured I'd look at an NPC that was posted as an example. Assumed my formatting was incorrect

tiny zealot
idle lantern
#

I also didn't bother to look at last updated

lucid iron
#

🛸

idle lantern
#

If the dialogue code says ""spring_Mon": "{{i18n or straight dialogue}}",

can I put my reworked template in a i18n folder, and not rereformat it?

#

Or is the double brace a stand-in?

vernal crest
#

The double braces indicates a token, in this case an i18n token.

#

I'd recommend using i18n so people can easily translate your mod without re-uploading the entire mod themselves.

lucid iron
#

It just means u should put {{i18n:your.i18n.key}} with matching key in the i18n

idle lantern
#

Thank you

lucid iron
#

The alternative is "direct text" but dun do that

balmy venture
#

Who is shiko?

idle lantern
balmy venture
#

Oooh a npc

#

I was wondering If I should use the npc maker to make my npc or just those templates you listed

#

Making npc is quite complex but I still wanna make my husband at some point

urban patrol
#

miss coriel is working on updating the NPC maker, but it's also out of date

tiny zealot
#

do not use coriel's npc maker until further notice. there are a few other templates/resources which are okay to use

proven spindle
#

The word 'new' in the title probably doesn't help SDVkrobusgiggle

balmy venture
#

Ya I downloaded it but have so many doubts

#

Oh good to know I shouldnt use it

tiny zealot
#

coriel's is actively harmful to use at this point. it will do wrong things and teach you wrong things

balmy venture
#

I was using it as an initial guide

#

Oh rip

tiny zealot
#

if/when coriel updates it, the situation may change

balmy venture
#

Oh well I'm still at the stage of writing dialogs so i doubt I wasted a lot of time

#

Gosh the documentation makes my head spin haha

tiny zealot
#

there are a lot of moving parts, and you will need to have good working knowledge of content patcher

#

i recommend starting with something much simpler, like adding a new item and putting it up for sale in an existing shop or something like that

drowsy minnow
#

for mapname does 'woods' refer to the backwoods or the secret woods?

tiny zealot
#

or making some edits to an existing item. something to help you start learning how mods are built

#

Woods is the secret woods

drowsy minnow
#

ohh ok, is the backwoods just 'backwoods' then or does it have a special mapname to use aswell?

tiny zealot
#

it's Backwoods, yeah

drowsy minnow
#

thank youuSDVpufferheart

#

just saved me from waiting for stardew to launch lmao

balmy venture
#

I already started with something simple. I'm converting some custom paths into total new path items for personal use

#

Making my husband npc is a loooong term project. As much as I want to play with him xD

urban patrol
#

will saving files as json5 vs json interfere with loading if i don't change the name?

tiny zealot
#

afaik they're both plain text so it's probably fine (as long as all the json5 you are doing is in spec for newtonsoft's parser)

urban patrol
#

😬 not sure what the last part means lol i was just using json5 because it doesn't flag comments

tiny zealot
#

sorry. ask a programmer, get a programmer answer (i.e. full of hedges and caveats) /lh

clear bough
#

Is anyone familiar with the More Content for Central Station mod? I want to make tourists for the station. I imagine all you need to do is figure out where to place them and have the sprite sheet of the character.

tiny zealot
lucid mulch
#

json5 vs json is purely an editor concept, its just (unicode) text in a file regardless

#

though I'm not sure if newtonsoft will handle the hexadecimal numbers or some of the other flavors of number encoding that json5 allows

idle lantern
#

I hate commas.

urban patrol
#

i think i only use those in one file to do spacecore colored lighting so i should be good

idle lantern
#

I'm so close.

urban patrol
#

i'm defining a ring object with a buff. how do i make the duration be "however long you have the ring on"? the default is all day

lucid mulch
#

unless you are using a framework, I don't think editing Data/Objects will do equipment effects

urban patrol
#

oh wait i now see it says when eaten. i can read

uncut viper
#

spacecore can do equipment buffs

urban patrol
#

am i reading this correctly? by patching buffs and wearabledata, i could make a health regen ring?

#

(do rings count as wearable automatically?)

lucid mulch
#

yes

#

and for vanilla purposes so does the equipped tool, not sure if spacecore does too or not

urban patrol
#

cool, thank you both

lucid mulch
#
        this.CurrentTool,
        this.hat.Value,
        this.shirtItem.Value,
        this.pantsItem.Value,
        this.boots.Value,
        this.leftRing.Value,
        this.rightRing.Value
#

maybe more if mods edit GetEquippedItems to return extra slots

#

though this does remind me, don't use CP tokens with non-deterministic behaviour in Data/Buffs
as the underlying buff effects don't fully network, it relies on farmhands to see the buff id, and locally use its knowledge of what that buff does to apply to the other players.

urban patrol
#

i'm really sorry, could you dumb that down for me? 😓

uncut viper
#

buffs arent synced, so you have to make sure your buff data is the same for all players

#

if the buff has data in it that is randomly determined, and this random generation can be different between host and farmhand, then the buffs will be weird in multiplayer

#

(or just behaviour that is determined differently between host an d farmhand)

urban patrol
#

okay i think i get it. so hard numbers = good, variables = bad

uncut viper
#

you can APPLY the buff randomly but what the buff DOES must be the same

#

between players

#

(to clarify "buffs arent synced": whether a player has a buff is synced. the effects of the buff are not. the buff is re-created client side for a farmhand to apply it to the host/others)

urban patrol
#

oh yeah i think i can see why that would be an issue

#

to use this, would i EditData with Target being spacechase0.SpaceCore/WearableData?

uncut viper
#

yes

urban patrol
#

wow i knew a thing! thank you

#

"an object containing fields"-- is that inside of { } ?

uncut viper
#

correct

#
"Entries": {
  "QualifiedItemIdOfRing": {
    "BuffIdToApply": "buffidgoeshere"
  }
}
urban patrol
#

that's what i ended up with! SDVpufferparty thank you

#

i feel like i turned a corner with my knowledge of CP formatting yesterday, especially after esca explained targetfield and stuff

soft granite
#

how do I reload an i18n file?

uncut viper
#

reload_i18n i think

#

!reload

ocean sailBOT
#
How do I reload my changes while I'm still in game?
  • Content Patcher pack: enter patch reload <your_mod_id> in the SMAPI console window. This will reload and reapply all your patches (but won't recalculate the ConfigSchema or DynamicToken sections if you use them).
  • Translation files: enter reload_i18n in the SMAPI console window. If it's for a Content Patcher pack, also run patch reload afterwards.
  • C#: see the Visual Studio hot reload or Rider hot reload feature.
uncut viper
#

yeah its that

idle lantern
#

is there a way to have an NPC's non-married schedule change after an event is seen or mail received?

urban patrol
#

you can probably use this in conjunction with GOTO?

idle lantern
#

ty!

I'm trying to find in th eunpacked files where schedules change after the community center is finished

#

too*

latent mauve
#

Clint definitely has a schedule change on Friday

uncut viper
#

you can also just conditionally change your patches if you're using content patcher

#

but in vanilla they use a schedule replacement system for inaccessible locations

idle lantern
#

aha! I managed to look at characters that didn't have it

uncut viper
#

it only works with specifically hardcoded locations, of which CommunityCenter is one

idle lantern
#

Ah ty

uncut viper
#

to be clear im not saying thats the only way to conditionally change a schedule, as nic posted there are some other options

#

just that if you were looking for the CommunityCenter ones specifically, they will likely use the replacement system

idle lantern
#

You're right. There isn't anything special to indicate that the community center was unlocked within his schedule. Just a Friday '850 CommunityCenter' etc

uncut viper
#

for the CommunityCenter specifically, if its not unlocked yet, they just use default if it exists, or spring otherwise

#

however for JojaMart and the Railroad they will swap out those specific bits of their schedule instead, rather than using a different schedule entry entirely

mystic plover
#

Hello, all. I'm wondering if anyone can help me out with some confusion I'm having with Fashion Sense.
I'm trying to make a hat that is color-able but has a default color. So I utilized Color Mask Layers, defined the values and the default color.
It works well, the hat is colorable, but it always defaults to the player's hair color.
Does anyone have insight as to what might be the problem?

idle lantern
#

Kupo!

mystic plover
urban patrol
ocean sailBOT
#

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

vernal crest
royal stump
#

yep, "EggItemIds": ["{{ModId}}_SquidEgg"], should be fine there

idle lantern
vernal crest
#

Not friendship is not an accepted CP token.

urban patrol
# royal stump yep, `"EggItemIds": ["{{ModId}}_SquidEgg"],` should be fine there

fixed it, not getting that error anymore, thank you! now getting a different one:

[Content Patcher] Can't apply data patch "Dead Boy Detectives > Include data/FarmAnimals.json > EditData Data/FarmAnimals > entry #1" to Data/FarmAnimals: failed converting entry to the expected type 'StardewValley.GameData.FarmAnimals.FarmAnimalData': Can't parse Point from Integer node (path: Shadow.Offset)..

#

is a point like a float or something?

vernal crest
#

Are you trying to make that schedule exist only when the heart is not exactly 4?

urban patrol
#

(also, good morning aba, belatedly)

idle lantern
#

Trying to write one schedule set from the initial mail seen, then a second schedule after a second mail received. Right now, I have different schedules for different heart levels

vernal crest
urban patrol
#

ohhh x and y, duh. thank you lol

idle lantern
#

the heart levels are unneeded, I'm slowly realizing. it's very late

royal stump
#

I've never used the field and vanilla doesn't either, but yeah, that should be it SDVkrobusgiggle

urban patrol
royal stump
#

"Point" and "Vector2" are basically x/y values, but mods/etc format them in a bunch of ways

idle lantern
#

I think this may be a future-me problem to tackle. Now-me is running on fumes.

vernal crest
idle lantern
#

Let me copy that down and save it. I appreciate your help, quite a bit

vernal crest
idle lantern
#

Ahh ok

#

Have a great night! Headed to bed finally

drowsy minnow
#

should i just do diff files for the diff categories/series of my stuff in optionals section or would trying to set up configs be better?

#

i kinda wanna do diff files it feels more organized to me

#

but im uncertain aswell

half tangle
#

@ivory plume Debug Mode does not respect zoom. The middle top right image shows the correct tile.

round timber
#

oh, is that why my coordinates were off when i was trying to find festival positions for my NPC SDVpuffersquee

inner harbor
#

That explains why it was borked on one save file i was testing with

#

When i reported it i thought it was specific to the save.

#

So i didn't look deeper

lucid mulch
#

a lot of mods pre 1.6 will have subtle bugs like that due to the render changes moving stuff from ui space to world space and vice versa

#

I remember fixing some of them in the pathos family, but don't use debug mode myself

inner harbor
#

is Shekurika still around? I'm gonna need to ask him a favor when ES 3.0/ESR releases.

#

(I'm changing the Unique ID so World Maps Anywhere no longer registers us)

half tangle
#

Around, yes, not sure about update schedules

inner harbor
#

I might be able to add it myself since the Nexus page does contain a sample content pack

#

I basically fixed the spelling and knocked off the .cp so it's just Lemurkat.EastScarp now

blissful panther
fading walrus
#

@barren surge You want Fashion Sense for doing long sleeve shenanigans

barren surge
fading walrus
#

There's an example pack with long sleeves, so you can look at that

barren surge
#

I just wanna play with him so

#

Thanks

fading walrus
#

Oh you're not making mods

barren surge
#

Hmm?

fading walrus
#

Are you just using them or making them?

barren surge
#

I just make clothing stuffs. I just wanna put these to the game

#

since you have to mod them

fading walrus
#

Ah you're making them, gotcha

#

Check the Fashion Sense mod page for an example pack and the link to the documentation

barren surge
#

Thank you so much.

idle lantern
#

What is the benefit or use of using 'early' or 'late' when doing CP priority?

When multiple patches or mods edit the same asset, the order in which they should be applied. The possible values are Early, Default, and Late. The default value is Default.

proud wyvern
#

if you can't find any other way to avoid conflicting with other mods editing the same assets

idle lantern
#

ty

calm nebula
#

CP random is seeded

#

It's deterministic to the unique ID and day

idle lantern
#

I officially only have one json left to fix before play testing!

idle lantern
#

VICTORY

#

I've been given hope again!

tiny zealot
#

the real dark souls starts here congrats!

idle lantern
#

I'm creating a new save right now to test it, and I've prepared my body for a deluge of 'Why the hell is that happening?'

lucid mulch
# calm nebula Fun fact

Still very easy to make cp behaviour that will differ by players like using local mail flags or relationship gates etc

idle lantern
#

strugglling with my dynamic token. Not sure how to fix it, if anyone has advice

"DynamicTokens": [
{
"Name": "RahielLampUnlocked",
"Value": "true",
"When": {
"Query: {{HasSeenEvent:977001}}": "true"
}
}
],

using this page to try and teach myself: https://github.com/Pathoschild/StardewMods/blob/stable/ContentPatcher/docs/author-guide/tokens.md#dynamic-tokens

GitHub

Mods for Stardew Valley using SMAPI. Contribute to Pathoschild/StardewMods development by creating an account on GitHub.

#

GEtting this error: [game] Failed parsing condition 'HasSeenEvent 977001': 'HasSeenEvent' isn't a known query or alias.
[game] Failed parsing condition 'HasSeenEvent 977001': 'HasSeenEvent' isn't a known query or alias.

twin wadi
#

im not too familiar with dynamic tokens but maybe this is the quety ur looking for?

idle lantern
#

I've been fighting the wrong code. I think it's the characters.json

#

ty 🙂

languid matrix
#

How do I fix this?
[Content Patcher] Can't apply data patch "Not Enough Fish > Add fish to beach > entry #1" to Data/Locations: failed converting Array value to the expected type 'StardewValley.GameData.Locations.SpawnFishData': Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'StardewValley.GameData.Locations.SpawnFishData' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly.
To fix this error either change the JSON to a JSON object (e.g. {"name":"value"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List<T> that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array.
Path ''..

#

[Content Patcher] Can't apply data patch "Not Enough Fish > Add fish to mines" to Data/Locations: the field 'UndergroundMines' doesn't match an existing target
[Content Patcher] Can't apply data patch "Not Enough Fish > Add fish to beach > entry #1" to Data/Locations: failed converting Array value to the expected type 'StardewValley.GameData.Locations.SpawnFishData': Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'StardewValley.GameData.Locations.SpawnFishData' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly.
To fix this error either change the JSON to a JSON object (e.g. {"name":"value"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List<T> that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array.
Path ''..
[Content Patcher] Can't apply data patch "Not Enough Fish > Add fish to mines" to Data/Locations: the field 'UndergroundMines' doesn't match an existing target

#

And why does it feel like a ghost town here yet again?

idle lantern
#

Will you send me your fish file in full and I'll try my best?

languid matrix
#

Am I fretting over something minor?

idle lantern
#

I don't think it's minor if it's not doing what you want it to do

vernal crest
#

I'm not sure why you're expecting it to be hopping in here nonstop lol

idle lantern
#

try

"TargetField": [
"UndergroundMine20",
"Fish"
]

"Target": "Data/Locations",
"TargetField": [
"Beach",
"Fish"
],
"Entries": {
"NotEnoughFish.Shark": {
"Id": "NotEnoughFish.Shark",
"ItemId": "NotEnoughFish.Shark",
...
}
}

languid matrix
#

Also, when I look in the fish tab, there is a duplicate bluegill in there but I might have fixed it.

idle lantern
#

edited,sorry

#

I'm 1000% not an expert. I hope that helps

calm nebula
#

Also 977001?

idle lantern
#

I did 973 for my Marnie mod, 977 caught my interest. I number my events by the location they're in

calm nebula
#

It's better to use properly namespaced events

idle lantern
#

so, 973001-004 were in the Animal Shop, but when I went to town, I switch the ending to 51-53

#

switched*

brittle pasture
#

1.6 supports string event names now

calm nebula
#

If you saw mods using numbers previously is because they had to

idle lantern
#

Aha!

languid matrix
idle lantern
#

I'll have to look into that. I think the template or mod example I used was using them, so that's what I had

#

I believe each lake is named differently, the numbers being the only difference

calm nebula
#

Yesh, and you're likely stepping on someone else's namespace because that is the old namespacing system

brittle pasture
#

you can use descriptive names now instead of praying no one has picked the number you did

brittle pasture
calm nebula
#

We used to prepend with the Nexus mod Id to avoid stepping on each other

idle lantern
#

That was something I was worried about. I tried to use a larger-ish number.

calm nebula
#

So 9730 belongs to Nexus mod 9730

brittle pasture
idle lantern
calm nebula
#

9770 belongs to Nexus mod 9770

blissful panther
# half tangle Yep! seems good

Then for when @ivory plume sees this, I can package it up as a quick little PR if you like.

The only thing is that it renders a couple of methods in Pathoschild.Stardew.Common. Specifically public static Vector2 GetTileFromCursor() and public static Vector2 GetTileFromScreenPosition(float x, float y).

I quickly looked at fixing the zoom arithmetic, but remembered that Game1.currentCursorTile exists, and swapped that in place of the call to those methods. I don't want to make the PR without getting your okay to either remove those methods, or render them unused.

languid matrix
#

Strange that the lake is working properly but the ocean and mines weren't.

brittle pasture
idle lantern
#

instead of 977001, I would use "{{Jierishi.Rahiel}}_EventId"

lucid iron
#

That's not a token is it

#

{{ModId}} is the token that becomes your mod id (like Jierishi.Rahiel)

idle lantern
#

I was replacing the id number in my event folder with the example from the wiki

{{ModId}}_EventId/Time 1900 2300/Friendship Clint 750

lucid iron
#

No u don't replace anything

#

The faeries who live in ContentPatcher.dll will do it for you

languid matrix
lucid iron
#

{{ }} tells them what to swap

idle lantern
#

Should I leave this dynamic token alone then, as well?

"DynamicTokens": [
{
"Name": "RahielLampUnlocked",
"Value": "true",
"When": {
"HasSeenEvent": "977001"
}
},

#

sorry to ask so much

languid matrix
#

And does the ExcludeFromRandomSale flag prevent the item from appearing at the Travelling Cart when set to true?

idle lantern
#

The problem I've run across with that token, is that CP says HasSeenEvent is invalid, but the CP guide has it - which means I must be formatting it incorrectly

#

I think so. I think it also stops it from going to the night market too

#

maybe even Krobus?

#

I don't know if his shop is random or set

calm nebula
idle lantern
#

I'm trying to load an interactable object into the Club after an event happens,

#

Maybe instead of an object, or map edit, I make the display case an NPC- and its 'dialogue' can warp the player

ivory plume
blissful panther
calm nebula
#

First. Use the version i sent earlier

ivory plume
calm nebula
#

Dynamic tokens don't have a default value

#

You're only setting it when it is true

balmy valve
#

How would I go about making a character's arrival linked to a heart event/overnight cutscene?

#

Currently I have his existence set to a "has read letter" flag

#

Also, how make heart event ;c

idle lantern
balmy valve
#

how make heart event please im am afraid

tiny zealot
#

heart events aren't special (from the game's perspective). they're just events

#

events are tricky but once you get the hang of them it's not so bad

lucid iron
blissful panther
balmy valve
#

thank you <3

ornate trellis
#

man, i hate it when im too smoothbrain to figure out why my texture aint applying EDIT I do know why now

#

funniest shit to look at each time tho

#

guess which of the typical silly things every mod author likes to forget it was

rigid oriole
#

The load

crude plank
#

A comma

ornate trellis
gaunt orbit
#

CP has a token that will load it in the background for you. InternalAssetKey

idle lantern
#

I remembered a thing! I needed a blank {} Club.json!

gaunt orbit
#

there's also something like that in the smapi content helpers too, although I don't think anyone uses it

balmy valve
uncut viper
#

internalassetkey just uses the SMAPI internal content helper thing

#

it does not load it in the background for you as that might imply it enters the content pipeline proper

gaunt orbit
#

the internal content helper does provide it to the pipeline unfer the hood

uncut viper
#

but not to be edited by others

gaunt orbit
#

or at least it did the last time I looked at it

#

It gives it an asset path, so it should be editable I think

uncut viper
#

nope

#

cannot edit them, can only read them

#

SMAPI specifically stops you from being able to edit internal assets

#

any mod can technically already use the asset for things like texture fields and whatnot (CMCT does for it's asset token after all) but you cannot apply edits to them whatsoever, they will always stay as what they are in the raw files

gaunt orbit
#

that's unfortunate

uncut viper
#

it's by design to follow the SMAPI philosophy that only the mod in question can adjust it's own files

gaunt orbit
#

yeah, but putting uneditable content in the global asset space seems like dirty pool

uncut viper
#

it's namespaced to your mod and relies on undocumented internal behavior that people aren't supposed to use (outside of their own content) anyway

tawny ore
#

I don't think it's super common for Textures to need to be edited necessarily, because you can just as easily replace the Texture in the data model to the same effect as replacing a texture via an edit

#

Unless you're trying to do layered edits

topaz canopy
#

Hello! I'm learning how to mod SV and I'm having a problem, in the wiki it says that the "Price" of the "Objects" is used when the player sells, but when I edit it the sell price stays the same and the buy price is double what I wrote 😭

hallow prism
#

you need new items for info to refresh

topaz canopy
#

So if I want to change the sell price of the turnip seeds I have to create a new item? With the display name it works without problems

ornate trellis
#

i think this is about the fact the shop adds a multiplier to the price?

#

the wording is a bit confusing

topaz canopy
#

It seems so, I tried with a price of 99 and the store sold it for 198 but when I sold the seeds each one was still the default price of 10

ornate trellis
#

try adding IgnoreShopPriceModifiers: true ?

topaz canopy
#

The buy price is still doubled but at least the sell price is now what I've written! Thanks!

faint ingot
#

testing an event and I'm not sure why this line is getting a mid-word line break. Is there a solution other than changing the wording?

round timber
#

are u using something like Farmer Portraits?

faint ingot
#

not using that or anything like that to my knowledge

round timber
#

rip, no suggestions from me then

faint ingot
#

OK thanks for trying SDVpufferheart

uncut viper
# topaz canopy The buy price is still doubled but at least the sell price is now what I've writ...

the wiki is correct, the price is how much when the player sells, not buys. i.e. when they dump it in the shipping bin. all stores by default have a 2x modifier on them to sell things for 2x the cost of the object "Price" field. Pierre has another 2x on top of that, so pierre sells at 4x (with some exceptions that have no modifiers, like vanilla seeds. dont remember if its just those seeds or all "seed items")
if you want to set a specific price for an item in a shop, you edit the price field in the shop entry directly, and it will use whatever price you put exactly