#making-mods-general

1 messages ยท Page 414 of 1

ornate locust
#

A bunch of little lags can also add up to a big lag

soft lance
#

LOL, thats a good thing

uncut viper
#

its tecnnically content patcher killing the framerate, but its on behalf of the content packs,which can be set up very inefficiently and thus still to blame

obtuse wigeon
brittle pasture
lucid iron
#

Hello I have seen you

soft lance
brittle pasture
#

to clarify do they want "animal digs up crops like junimos" behavior

gentle rose
#

plus, I have definitely killed performance with a single c# mod in the past lmao, and DEFINITELY would have with my current wip if I wasn't careful SDVpuffersquee

lucid iron
#

Can mtf + eac do what clown wants you think?

lucid iron
#

Mtf to detect nearby crop eac to item query

soft lance
#

Fishies :3

||(a few are from a very old mod with the authors permission, which is the turtle and the octopus for instance)||

uncut viper
#

i thoight fellowclown wanted the crop to be actually harvested, though

brittle pasture
#

hmm my impression was behavior change for animals entirely

#

yeah

uncut viper
#

not just a dug up copy of the crop

#

aka junimo behaviour

lucid iron
#

If I understood it correctly the idea is I plant parsnip and then animal can randomly dig up parsnip

brittle pasture
uncut viper
#

"like theyll aproach and dig that shit up if its fully grown so the farmer doesnt have to harvest them"

obtuse wigeon
lucid iron
#

Well hm 2 votes against 1 then i perish Sleepden

brittle pasture
#

so yeah it would be some new behavior for animals in EAC
I'll file that under "mayhaps in the future"

lucid iron
#

Sounds good to me AquaThumbsup

uncut viper
lucid iron
#

That's the latest cp

brittle pasture
#

I sure hope this doesn't balloon into behavior state machines for animals

lucid iron
#

But u need the 2.1 profiler from sinz thread to use it

obtuse wigeon
#

I may have an older version of the profiler then, I knwo I'm on the latest CP, I never remember to check because theres no update token as it isn't on nexus

lucid iron
#

Atm in my list the most expensive cp mod is the interface lol

#

Cursor edits are no joke

obtuse wigeon
#

discord update token api when

soft lance
#

Random reply, but do you think people would be mad if a fish mod came out with no aquarium support until 1.1 release? I have people who want to download my mod, but it'd take me a while to figure out aquariums and make the sprites for them

hard fern
obtuse wigeon
#

honestly, fish in the aquarium is something I never remember about and when I do I only put legendary ones in a tank so honestly I don't think it's much of an issue

hard fern
#

i only put the cute fish in tanks

#

(and legendaries)

gentle rose
soft lance
hallow prism
# brittle pasture

(just want to mention that, with how despawning work in SDV, this may be annoying if player isn't here to gather crop at end of day)

hard fern
obtuse wigeon
hard fern
#

(also nice fish!)

gentle rose
soft lance
brittle pasture
#

oh wait wrong reply

lucid iron
#

I think the number one reason to make aquarium sprites work is visible fish lol

brittle pasture
#

(I meant to reply to lumi's message)

lucid iron
#

It relies on aquarium sprites to visiblefy the fish

gentle rose
#

but the question is, do you consider lack of aquarium support to make your mod incomplete

personally I don't upload mods until I'm happy with them in their current state even if they were to never get an update again

hallow prism
#

i mean, if you put it as object on the ground it wouldn't work as a feature since the goal is to harvest?

obtuse wigeon
hallow prism
#

so i'm not sure if it's even solveable at all (outside of animal having an inventory but i believe clown didn't want that)

brittle pasture
uncut viper
#

everything is solvable with enough c#

gentle rose
#

basically the way pigs harvest truffles is what I'm imagining, is that close selph?

hallow prism
#

oh i don't doubt the C#, it's more a question of design

#

but yeah i assume there's several options

brittle pasture
#

yeah, but there might not be space for a "truffle" if it's a nested crop field

red egret
#

Spacecore question: can i mix and match durations for animations, like 0@10, 1..3@5 ?

gentle rose
turbid oak
#

I just finally figured out this channel exists. I have no experience making mods but would like to start. I feel like I need to start keeping notes of exactly what I want to make first.

obtuse wigeon
#

Do autograbbers grab truffles? if they're placed like truffles then added as a valid pluckable by the grabber that could be a solution

brittle pasture
#

no they don't

#

(without mods)

gentle rose
#

if there's no space in front of them, it gets pushed forward once until there is space

uncut viper
#

Selph what if in-between sprinklers but forage crop

gentle rose
#

(which means it's impossible to fence truffles in and I hate it)

brittle pasture
hallow prism
#

anyway i should go! good luck ๐Ÿ™‚

uncut viper
#

What's wrong with that idea

lucid iron
#

8x8 subgrids mod...

#

I can imagine a bad way to do it

uncut viper
#

that's nothing, I can imagine many bad ways to do it

hard fern
# soft lance Sigh ๐Ÿ’”

welp, time to go aquarium those fish... ๐Ÿค” you only really need 2 sprites for each fish though. one is the swimming one and the other looks like it's just a copy of the item sprite. so just rotate your fish about 45 degrees

lucid iron
gentle rose
#

I propose my old terrible implementation idea for something like this of having an underlying shadow map to use for doing two things on one tile

lucid iron
#

I was imagining negative vector object netcollection

turbid oak
#

When you make a mod if you want it to interact with specific other mods, do you need the permission of those mod's makers? For example, a mod where Pierre hates you for supporting Joja, with special dialog if you're dating Morris in the Marry Morris mod.

uncut viper
#

drawing individual crop pixels on the screen at specified coordinates and detecting when one pixel is clicked to create the harvested crop

#

and storing those pixels in a list

turbid oak
soft lance
uncut viper
#

Unless you're modifying or using their files you don't need permission to add compatibility. It's just nice to do

ornate locust
#

It's a little more nuanced than yes, like if you are making your character react to something in another mod, that is an addition entirely on your end and you don't generally need to ask about it

uncut viper
#

But detecting when a mod is installed and adding more dialogue if it is, is not something someone else can control

soft lance
hallow prism
brittle pasture
#

I'm thinking of a maybe-not-so-cursed idea for this behavior - animal harvests crops, they all get put into a global inventory, and when the farmer pets it, if that inventory is not empty the animal barfs up everything as debris

gentle rose
hallow prism
#

some mod authors care a lot about their writing and such and prefer to be asked so they can grant permission

#

honestly unless the author is away, you don't lose anything sending a short message

lucid iron
uncut viper
lucid iron
#

Tbh i was under impression why this is people stopped using pigs for truffles irl, they eat them

hallow prism
#

worse, they say no, but they would have said no if they noticed anyway
most cases, they say "sure, have fun"
some cases they are like "oh let me add more stuff, and i can have this compat, and what about that" and you both have extra fun

gentle rose
#

my understanding is that pigs are kind of just a nightmare SDVpuffersquee

turbid oak
obtuse wigeon
#

Small diaslogue compat adds so much immersion, I love it so so much

uncut viper
#

however as far as I know Nexus has only really enforced that further when it comes to modding another mod

#

But adding your own dialogue ain't that

soft lance
ornate locust
#

Like I have a mod where the mail carrier is referred to and it changes to Ayeisha if you have her installed, that's not really a thing worth bugging someone about.

hallow prism
#

i am sometimes a bit overprotective on my stuff (which i try to work on) but it helps to be asked, and usually when asked i'm like "oh sure"

hard fern
soft lance
#

im thinking of making a fish that appears only in the fall time..like maybe 2-3 fall fish that maybe are a little pumpkin-like and some silly-spooky ones

#

but i must work on aquarium before I get carried away ๐Ÿ™

#

no everyone is gone SDVpuffercry

craggy goblet
#

I'm here lol

craggy goblet
patent lanceBOT
#

@brittle ledge: do that (1h ago)

soft lance
craggy goblet
#

YEAHHH, CARVING'S SO MUCH FUN

#

(and so messy too ๐Ÿ˜ญ๐Ÿ˜‚)

#

Oh, and happy one day arrival!

soft lance
craggy goblet
#

I just had a look on your profile

#

You joined this server yesterday, right?

#

That's why I congratulated ya! :D

#

it's silly I know :3

#

But I'm silly too. And ADHD-plagued.

soft lance
#

OHH

soft lance
soft lance
soft lance
red egret
#

Is there a limit on the duration of an animation frame?

#

im getting a neverending sea of errors while i was so sure it was fine

turbid oak
#

So, how ambitious is this for a first mod? Should I dial back the scale? What skills are required to accomplish all this?

brittle ledge
#

(the answer to why the aquarium sprites are Like That is ๐Ÿคท I'm of the opinion that CA set himself aside the bottom row so he could put the item-fish in there as references so he'd remember what animation sprites went with what)

brittle pasture
#

it's probably all doable in regular content patcher with dialogue/event/map patches, though you do need a lot of em

uncut viper
#

i dont believe "no longer can gain hearts" can be done with CP alone

brittle pasture
#

I'm not sure if there's going to be any implications with making Pierre antisocial

#

if there is you'll probably have to forgo that part and/or learn C#

ornate locust
#

I feel like there's a compatibility weak spot in making all his shop inventory unavailable and adding it to someone else

#

if anyone adds to his inventory, that could go weird

hard fern
uncut viper
#

yeah you cant just copy one shop stock to another

brittle pasture
#

I guess you can fake it by removing the Owners entry and add the Pierre shop as a tile in Joja

soft lance
lucid iron
#

you can have a OpenShop SeedShop in jojamart

#

and bonk all the owner stuff

#

yea what selph said (did not read)

ornate trellis
#

alternatively retexture pierres store to a new joja and hes forced to work for them and thats why he really hates you and doesnt wanna talk to you

uncut viper
#

wouldnt be able to use pierre's missing stock list

turbid oak
uncut viper
#

if he wont talk to you

turbid oak
uncut viper
#

and itd be weird to turn in his missing stock list to joja

ornate trellis
lucid iron
#

well i guess you'd have to live with that SDVpuffersmile

#

balance in the force

brittle pasture
#

that thing sucks anyway

brittle ledge
uncut viper
#

its my first purchase when i get the chance

brittle ledge
#

(again, you don't need to fill in the bottom 24x24)

#

then if you want these to play in order, your sprite index would go 0 1 2 3 4

brittle pasture
#

well the stock list is just controlled by a mail flag so we can fake that too, mayhaps with an on purchase action

brittle ledge
#

that's where the 0 1 2 2 1 0 reference is referring to

ornate locust
# turbid oak What's that?

After you get access to some stuff on Ginger Island, you can obtain his stock list and buy his seasonal stock year round

verbal narwhal
#

ok! so currently my mod is c# (optional gmcm functionality if installed only)
directly in my code i have a list for possible drop options
how can I make content patcher compatibility so (if that is even needed?)
so that I can put this long table in a seperate json and make it so that users can easily add or change the drop table/pool of items?

these are the current options for my items:

        ```new GiftDef {
            Key = "common_mushroom",
            ItemId = "(O)404",
            MinStack = 1,
            MaxStack = 1,
            BaseWeight = 0.02,    
            ScaleWithCategory = true
        },```

ScalewithCategory is just the configurable modifier for drop chances

or just direct me to a mod if you know of any that has this setup (c# + cp)?

brittle pasture
soft lance
obtuse wigeon
#

Would it be frowned upon to change the colour of the ConcernedApe logo and tag line to greyscale? nothing else will be changed, just the colour

soft lance
#

"tiakall.bass.DuskyGrouper": "1 2 3 4/fish/////Mods\tiakall.seabass\AquariumFish",?

How is it done yk

turbid oak
hard fern
#

pierre has a stock list???

soft lance
ornate locust
ornate trellis
lucid iron
brittle ledge
# soft lance okay, so when you do, where do you put in like "when he is moving do 0 1 2 3 4" ...
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
#

modding is freedom etc

turbid oak
#

I don't see why the stock list couldn't be changed to Joja

hard fern
obtuse wigeon
#

Oh okay, that makes me feel a little less like I'm defacing a valuable item

brittle ledge
#

I don't have custom animations in my example, but they'd go inbetween the two / after fish

#

so "tiakall.bass.DuskyGrouper": "1 2 3 4/fish/0 1 2 2 1 0////Mods\tiakall.seabass\AquariumFish"

soft lance
# brittle ledge https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_a_New_Fish#Aquarium_Data

"The third field, which is blank here, defines custom animations when idle. This will default to your single sprite. If you want to have a custom animation, list out your indexes here (starting with the index your first frame is on, eg. 0 1 2 2 2 1 0)"

I understand, but again, I don't fully understand, can you just give a basic example like:

"tiakall.bass.DuskyGrouper": "1/fish/1/2/3/4/Mods\tiakall.seabass\AquariumFish",

Or however else it's done? im just trying to find like a one line example of implementation, sorry if i explained it poorly

brittle pasture
ornate locust
#

Look, I will DEFINITELY play more Stardew after I finish these last three events so I know what CTs I want to write for my guy and stuff

#

I will absolutely actually play the game

brittle ledge
#

Actually, now that I'm looking at the vanilla examples, all of them have a single sprite in the third field

steel beacon
#

Hello all. Does anyone know if Rings qualify as WearableData in SpaceCore? I am working on a mod that allows crafting cosmetology products. I am in the final phase of my mod where these products can be crafted into bigger sets and collections. My initial thought was to make them equippable as rings with some buffs, but I am running into difficulty. Does the Vanilla Buffs allow it since they are (O), or do they have to be consumable foods in that case?

brittle ledge
#

so your animation may actually need to be 4-6

obtuse wigeon
uncut viper
#

i will play stardew again for real after i finish my NPC and if 1.7 happens to come out first and make me redo a lot of my NPC stuff then so be it SDVpuffersmile

soft lance
#

to make it simple

turbid oak
uncut viper
brittle ledge
#

for example, here's squid in vanilla"151": "60/cephalopod/60/60 61/62 62 63 63/63 64",

ornate locust
#

Speaking of: If I have the farmer doAction on a bench... they should sit on the bench, right?

#

in an event

brittle ledge
turbid oak
uncut viper
#

ive not been keeping track. i have a couple hundred lines of dialogue, at least

soft lance
uncut viper
#

but i want to remake their location completely, and ive not done their house interior

lucid iron
#

that sounds like 2 whole npc then going by vanilla counts

uncut viper
#

i plan on having a fuckton more than that

lucid iron
#

10 whole npcs wew

uncut viper
#

metric or imperial fuckton, your choice

ornate locust
#

I know you can have a character do like a Sit Frame and stick them on the bench. But for the farmer... I should just be able to doAction a bench to sit, hypothetically

uncut viper
#

more dialogue, that is. one npc!

brittle ledge
#

so using my fish as an example with your spritesheet: "tiakall.bass.SeaBass": "0/fish/0/0/1 2 3 3 2 1/0/Mods\\tiakall.seabass\\AquariumFish",

lucid iron
#

some npcs are more npc per npc trust

uncut viper
#

i may need to search for someone to commission for sprites/portraits again too which would take time bc money

brittle ledge
#

0 is the idle frame, and then the animation will start at 0 (the fourth slot here), move up through frame 3 then back down, and end on zero (the last one)

turbid oak
#

So if I make Pierre non-social, would that mean you can't talk to him at all? He would still walk around, right?

ornate locust
#

if nobody else knows if that works or not, I guess I'll just code it and see

steel beacon
brittle ledge
soft lance
#

u are a legend

#

ima experiment and play around with adding more fishies

turbid oak
#

Thank you everyone who has been offering help. I have been talking screenshots. The next step I guess is to figure out how to use Content Patcher

brittle ledge
turbid oak
obtuse wigeon
#

birdie not being friendable is the worst part of GI, I wanna be friends with her and hear her stories

lucid iron
#

there was a make birdie real mod

soft lance
obtuse wigeon
#

I love modders so much, they truly make the world go around

lucid iron
obtuse wigeon
#

there is, it seems to be by Tia themselves

brittle ledge
lucid iron
#

what the heck amazing

brittle ledge
obtuse wigeon
#

nevermind i stand corrected, I found another one by someone who name is very close to yours so I miss read it, whoops

ornate locust
#

nope can't use doaction to sit on a bench. Guess we're animating the dang thing

obtuse wigeon
#

oh wait no I think I know why

red egret
#

Im getting a Spacecore error: This mod failed in the GameLoop.UpdateTicking event
The only animations that dont work at all (stay static) are those with combined durations (different for each frame or a group)

lucid iron
#

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

ocean sailBOT
#

Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.19045.0, with 21 C# mods and 8 content packs.

lucid iron
#

looks like the syntax is wrong

#

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

red egret
#

validator says its fine

hard fern
#

that doesn't check for animations via spacecore though does it?

red egret
#

idk

uncut viper
#

no, it doesnt

#

it only checks for json syntax

red egret
#

so perhaps i really cant mix those two ways

lucid iron
#

oh i remembered you have to put the target ({{InternalAssetKey: assets/Rarecrow2.png}}) again every time

obtuse wigeon
#

Does anyone have the vinilla guide for a ui recolour? I'm hoping it will tell me where on earth the save select background it, I've check 2 different recolours and cannot fint it at all

lucid iron
#

the example on docs is incorrect

#

thats the shop texture box

#

384,396,15,15

obtuse wigeon
#

Thank you!

#

cursors I'm guessing?

lucid iron
lucid iron
#
{{InternalAssetKey: assets/Rarecrow2.png}}:0@50, {{InternalAssetKey: assets/Rarecrow2.png}}:1..3@20, {{InternalAssetKey: assets/Rarecrow2.png}}:4@70, {{InternalAssetKey: assets/Rarecrow2.png}}:5..7@20
#

iirc it's like this

red egret
#

oh!

#

okay thanks!

lucid iron
#

u can also do a Load so that it's less of a pain

red egret
#

idk how

ornate trellis
lucid iron
#

just an {"Action": "Load"} i mean

red egret
#

this will be fine, ty

lucid iron
#

you have done this for other mods blobcatgooglyblep

red egret
#

uhh

ornate trellis
hard fern
#

eugh

#

the one next to it is mr qi's shop i assume

obtuse wigeon
#

it makes it so much harder to find textures when they're compressed like that, useful for compresson though

hard fern
#

(why are the Ui textures literally everywhere SDVpufferwaaah )

ornate trellis
#

theres so much shit even when you do UI retextures you cannot remember it all(or thats just me lol)

lucid iron
#

its not actually about compression

#

a number of textures are like this so that u can draw a box at various sizes

ornate trellis
#

ok yeah thats the sprite you want, atlas, i jsut tested ingame

#

what a funny coincidence we both are doing a UI retex

obtuse wigeon
#

I guess ye that is a good point, Atleast then they're recolour supported too

#

UI retex gang woop!

#

Thank you both for your help

ornate trellis
#

man....can 1.7 pls dehardcode or w/e fonts....

lucid iron
#

fonts are dehardcoded

obtuse wigeon
#

man the font shadows are my least fav thing

ornate trellis
#

i mean like in freely choosing color and shadow color?

#

maybe dehardcoded is the wrong word idk

#

I mean this atrocious moment

soft lance
obtuse wigeon
#

you can change the colour by editing the font files, but it's just the shadows you can't change with CP alone

lucid iron
#

yea you need theme manager here

ornate trellis
#

at least the orange-y shadow when you hover looks nice on this color xD

obtuse wigeon
#

also why on earth are some textures MASSIVE! they are not pixel based at all, they're like quad pixel based

soft lance
#

@brittle ledge :3

#

again, tysm for helping me

#

in the process of making the sprites rn

dusky sail
#

feesh

soft lance
dusky sail
#

hm. maybe i become orange today

old quartz
#

how would i refer to "this" if i want to use my prefix method w a transpiler? the method has an __instance field but it receives a null there when called via transpiler (works fine when patched as a prefix). i tried putting in a ldalg_0 opcode but it wont compile either so im kind of stuck on what to try next

brittle pasture
#

Ldarg_0 should be this yes
post what you have

red egret
#

i got lost in " and ,

#

i will try another day

#

nothing works ><

uncut viper
brittle pasture
#

they did say the prefix works so Iโ€™m assuming itโ€™s not

ornate locust
#

I have achieved player ass in chair

uncut viper
#

__instance would still work if its static

#

your emoji is making me question wheter or not im misremembering that

#

and whether or not harmony would ignore it or yell at you

#

or fix it itself

old quartz
#

both of these gave me exceptions

#

im transpiling the marriageDuties() method

obtuse wigeon
#

Is the white background of the intro hardcoded? or have I missed where it is?

#

-# sorry for flashbang

ornate locust
#

Though I had a funny moment where instead of having the farmer offset to be on the bench, I offset the guy who was already on the bench, so the farmer sat on the ground and then my NPC floated upward

#

Come on, have a seat levitates away

old quartz
# old quartz both of these gave me exceptions

and when i dont include any ldarg_0 i log the arguments given to my method and it recieves a null and throws an exception later on because of it (its static, both the transpiler and the prefix)

lucid iron
#

this is a transpiler you said? and you want to call your own (static) method

brittle pasture
#

meaning thereโ€™s an unaccounted for instruction you jumped over before the removal+insertion
is that intended

old quartz
#

yes, i didnt know how to translate a few of these lines into harmony specific stuff, its missing this line
call !!0/*string*/[] [System.Runtime]System.Array::Empty<string>()

old quartz
steel beacon
lucid iron
#

what if you postfix the ctor of MarriageDialogueReference

royal stump
obtuse wigeon
#

that's the worst flashbang bit too, I certainly shall not be tackling that C#, any one know of a mod that removes the hardcoding of that by chance?

royal stump
#

just Skip Intro, personally SDVkrobusgiggle

obtuse wigeon
#

Oh that image is from game startup, like the very first thing you see when the game loads

#

you cannot skip it, at all

royal stump
#

tbc I mean the mod that just skips straight to the main menu

old quartz
brittle pasture
# old quartz both of these gave me exceptions

looking at the code I think what you're doing is yeeting the Newobj and Callvirt .Value part calls (aka removing .Value = new MarriageDialogueReference( part), and pouring all the parameters that would have gone into the constructor of MarriageDialogueReference + the dangling this.marriageDefaultDialogue into your own function

royal stump
#

I haven't heard of any actual frameworks offering to let you customize the intro scene

lucid iron
#

yea sec i got a example

obtuse wigeon
brittle pasture
#

but yeah just patch the ctor it's easier

lucid iron
#
        harmony.Patch(
            original: AccessTools.DeclaredConstructor(typeof(DialogueBox), [typeof(string)]),
            finalizer: finalizer
        );
old quartz
lucid iron
#

i think a ctor prefix is cursed but postfix and finalizer both fine

#

does mean you'd have to just let game does bunch of work and then toss it Sleepden

#

otoh it's more compatible for other C# mods that just go new MarriageDialogueReference so i think it's better overall

brittle pasture
#

you'd need to account for the dangling this.marriageDefaultDialogue + if you're putting in ldarg_0 afterwards it would be the final parameter not the first

old quartz
brittle pasture
#

then you'd have your dangling ldarg_0 above SDVpuffersquee

#

which, well, perfect for your use case

#

but yeah again go the ctor route

old quartz
brittle pasture
#

no, you're patching an existing class

lucid iron
#

yea u just put a normal postfix

#

the finalizer in my case looks like this
private static void DialogueBox_strings_ctor_Finalizer(DialogueBox __instance)

#

u should be able to use the ___ for private fields at this point i think

drowsy pewter
#

I have news

lucid iron
#

so if u wanted to get MarriageDialogueReference._substitutions, ref NetStringList ____substitutions should do it

#

thats 3 underscores in front

#

6480 why does it look so tasty

dusky sail
#

i gotta remember to endorse inspect tortilla in 15 minutes

#

this is the only mod that matters

drowsy pewter
#

you didnt see the other one

old quartz
dusky sail
#

no i saw the other one i just have no object mod permanence

#

i blink and i forget what mods exist

brittle pasture
dusky sail
#

Not the full government name ๐Ÿ˜ญ

drowsy pewter
devout otter
drowsy pewter
#

They deserve it too - Portraits for items

lucid iron
#

new skill Appraisal (just like my trash isekai anime)

devout otter
#

Speaking of inspecting. Is there any framework that allow you to inspect placed wall furniture items?

drowsy pewter
#

You can do it now with meep

#

because you can use the inspect image thingie with any trigger action

#

put a trigger action on the furniture with spacecore

lucid iron
#

meep can do that but maybe in conjunction with a furniture tile actions framework

brave fable
#

i'm fairly sure you need the furniture to use the Painting type for tile actions to work, unless the framework expands on that

lucid iron
#

wouldnt scone work too NotteThink

devout otter
obtuse wigeon
#

scone...?

lucid iron
#

iirc furniture.doestilehaveproperty goes before furniture.checkaction so u should win

obtuse wigeon
#

the food or a framework?

lucid iron
#

sconce sorry (but why not scone too)

obtuse wigeon
#

grab some jam and cream and you've got afternoon tea

#

great to work on a framework

devout otter
drowsy pewter
#

i see

wheat finch
#

Cursed scope creep...my shop mod may have just grown...

dusky sail
#

more scope creep. MORE

lucid iron
#

calcifer bc that targets checkaction

ornate locust
#

if this inexplicably works right the first time and doesn't need adjustment, I will be only two events away from feature completeness

lucid iron
#

mmap bc u can specify the tile property radius

#

u can also just make it actually 3 tiles tall, and then sc will do it fine

#

for calcifer if you just do it it'll work

devout otter
#

Hmm, was thinking of making Say Cheese portraits inspectable. It seems that I'd need three frameworks to do it. ๐Ÿ˜†

lucid iron
#

does dark room portrait shop count tho

#

i think u should just make them secretly 3 tiles tall it's finnnne

#

then its just spacecore (which darkroom needs for other stuff) and meep

devout otter
lucid iron
#

well idk when im releasing it

#

maybe if i convince pathos to put it in CP tbh

devout otter
#

Pathos pls

brittle pasture
#

the power enabled would be immense

lucid iron
#

but u know aba actually already did it with pigs

brittle pasture
#

I think it would even supercede Button's ATA since you can patch non-Maps assets into a new Map/ one right

#

kinda cursed though

lucid iron
#

i mean button has a smapi PR up for that scenario

#

it will soon be a thing of the past

brittle pasture
#

oh nice, missed that part

lucid iron
#

i should add support for asset name prefixes tho Bolb

#

but idk the more i rotate this in my head the more i think it should just be content patcher

#

ill rotate it a few more spin cycles and then ask pathos Sleepden

#

it is good that i at least defeated the graph theory in general

#

another reason why i am kind of eh about this whole thing is that while this is cool and very generic

#

there are a number of frameworks that just let you draw stuff in layers, and i own one of them kyuuchan_run

lucid iron
#

this is aba's pig painting which loads a frame {{ModID}}_PhotoBackground + {{ModID}}_PhotoFrame and compose it with Animals\\Pig (which is actually just used as the furniture asset)

#

end result looks like this

#

unlike sprite compositor this is already a released framework feature in mmap Dokkan

pearl seal
devout otter
late gull
ornate locust
#

So let's say I have three options in a QuickQuestion. I have responses for two of them, but for the third, I just want it to move on to the next part. How do I do that?

#

I thought I'd just do a break and leave it blank, but that's thrown a SMAPI error

#

it worked but it's a Scary Red Error I don't want to bother a user if they notice

finite ginkgo
ornate locust
#

maybe I can just like put an Emote there

karmic gust
#

Could you do something like Say Nothing

urban patrol
#

maybe a pause 1

ornate locust
#

The emote works out. Pause 1 is a good idea though

lucid iron
#

i attempted some perf(?) by doing this for PerScreen to avoid a dict lookup when screen didn't change, did not accomplish much PecoWant

internal class PerScreenCache<T>(PerScreen<T> perScreen)
{
    private int currScreen = Context.ScreenId;
    private T currValue = perScreen.Value;
    internal T Value
    {
        get
        {
            if (currScreen != Context.ScreenId)
            {
                currScreen = Context.ScreenId;
                currValue = perScreen.Value;
            }
            return currValue;
        }
        set
        {
            currScreen = Context.ScreenId;
            currValue = value;
            perScreen.Value = value;
        }
    }
}
turbid oak
#

My programmer boyfriend thinks my "Pierre hates you" mod sounds way too ambitious for a very first mod and I should start with something a lot simpler for practice. The problem is thinking of what... Some cool little Joja perk probably.

brave fable
#

practice mods don't need to be cool or meaningful at all SDVpufferthumbsup really the first thing that comes into your head is fine. mega tortilla recipe, extra long ostriches, half price sundays at joja mart, the world is your ostrich

turbid oak
#

Thanks. I know. How hard is it to add a recipe to the game?

#

With pre-existing food items?

#

But one of them is classified as 'trash'

brave fable
#

oh, very simple, so long as you're doing things the base game does.
https://stardewvalleywiki.com/Modding:Recipe_data
if your 'trash' ingredient isn't the single actual Trash item though you'll need a little extra to get it working for generic vaguely-trash items

turbid oak
#

I want to make a Joja Cola float

#

The problem is art

brave fable
#

as it always is, as it always has been, as it always will be ๐Ÿ˜Œ

drowsy pewter
#

we gave it an identity crisis

late gull
#

heres a free joja sundae โ˜ ๏ธ

lucid iron
#

The problem is compatibility which I recommend you to Not Care About at the beginning

#

The bulk of the mod is really just 2 things, make pierre not able to socialize + not count for perfection, and override all of his dialogue so that he's >:( about you

brave fable
#

all the same i think it's good to make a practice mod or two before you make the one you've got an actual vision for, so you're that much more comfortable with the format and you've gotten some of the silly mistakes out of the way first

lucid mulch
#

Most content mods aren't that complex, they just have quantity

latent mauve
#

Souvenirs from Elliott's book tour or autographed posters/CDs from Sam's band show maybe.

dusky sail
#

Tortillapocalypse...

#

If i didnt have work today id consider making a mod that replaces every basegame cooking recipes with tortillas

drowsy pewter
#

tortilla shuffle the sequel to json shuffle, random items turn into toritllas every time you wake up

latent mauve
#

"Wrap Recipes -- Change every recipe to a wrap"

dusky sail
#

Autumn's bounty flavored tortilla... lucky lunch flavored tortilla... pink cake flavored tortilla

latent mauve
#

Exactly

drowsy pewter
#

tortillawich

latent mauve
#

The tortilla sandwich, now with three times as much tortilla.

lucid iron
#

can i grow tortillas

#

skip the middle step

urban patrol
#

rolled up tortillas on a stalk like cattails...

brave fable
#

lord is it so much easier to draw dark hair than light

urban patrol
#

unrelatedly, what is the absolute bare minimum for a non-social NPC?

finite ginkgo
drowsy pewter
#

I think you need to put sleeping on your to-do list

finite ginkgo
#

I should

#

But think of the tortilla possibilities

brave fable
#

you should also include either a basic schedule or a Home entry in their data

urban patrol
#

oh that's way less than i thought, awesome

latent mauve
inner harbor
#

And some dialogue if any is needed.

#

Either 7 days or one locational.

latent mauve
#

you'll want more dialogue than is in my example.

brave fable
#

funny that DisplayName is the only required field for character data. you can omit absolutely anything else.

latent mauve
#

Like Lemurkat said, probably dialogues for each day of the week

urban patrol
#

yeah i'm trying to figure out how involved i want her to be... she's an NPC's mom, but really i only need her for one or two heart events

#

unless i want to flesh her out more but my to do list is one billion lines long

latent mauve
#

Is she going to move around at all?

urban patrol
#

still deciding tbh!

latent mauve
#

If not, you could probably get away with an animated map tile in the event with a generic dialogue box

urban patrol
#

hmmm perhaps...

#

i hate drawing sprites but i'm also inclined to perfectionism, so it didn't even occur to me that she wouldn't need a walk cycle

lucid iron
#

she can still have some schedule anim

latent mauve
#

very true

brave fable
#

shhh stop scope creeping. we go for the bare minimum

latent mauve
#

You can do the Mr. Qi method and not have a full walk cycle that way

brave fable
#

Characters/Mariner is your goal

lucid iron
#

inclined to perfectionism

brave fable
#

debug perfection now shoo

latent mauve
#

The whole reason Mr. Qi flickers when he walks sideways is that he doesn't actually have a walk animation from the sides xD

ornate locust
#

someone show the scope creep stickbug

urban patrol
#

i already scope creeped myself into making a config option for different appeareances of one NPC, because i hate myself

lucid iron
devout otter
lucid iron
#

Everyone is Jinu

tiny zealot
#

new alt mode: the jinu club

urban patrol
#

what the hell is shane doing in here...

#

i'm debugging the joja route because i've never bothered and ??

devout otter
#

Wait who is that guy on the left?

turbid oak
ornate locust
#

I started with a mod that changed a single part of an event

turbid oak
urban patrol
ornate locust
#

which felt like a whole Thing at the time, but now I could do it easily if I needed

devout otter
turbid oak
urban patrol
#

shane is squatting on top of the other NPC ๐Ÿ˜‚

ornate locust
#

(and I recently learned how to do it better too!)

devout otter
ornate locust
#

is he drinking in there

urban patrol
#

i think he's holding a video camera but i can't tell, he's flashing in and out

ornate locust
#

what on earth

turbid oak
versed wyvern
#

I think that's a sprite from one of his heart events where he's drinking beer at the pond

devout otter
# urban patrol

Aah wait now that Shane doesn't cover Charles I just realized they're the Dead Boy Detectives. ๐Ÿ˜…

urban patrol
#

lol unrecognizable without each other

ornate locust
#

can the detectives solve the case of Shane phasing through reality

lucid iron
#

shane is the real dead boy here

devout otter
#

Is Shane the NPC actually there? Or is it just a weird tile?

indigo totem
urban patrol
#

oh i'm so stupid, it's my other NPC in progress ๐Ÿคฆ i used shane as a template and charles' schedule as a placeholder to test his sprites. problem solved, everyone

#

this is why you test things in stages, folks

#

i was SURE it was related to the joja route lol

ornate locust
#

Mystery Solved

indigo totem
devout otter
indigo totem
# urban patrol oh man good luck

Thank you!! Its my first mod but im having fun learning from all the info from people before me. I have a whole spreadsheet that tbh isnt all inclusive probably but already huge

indigo totem
verbal narwhal
#

i have published my first real sdv mod (not an at pack) schmoovin

urban patrol
#

(is there a debug command for getting the movie theatre in the joja route?)

dusky sail
#

AT packs are still real mods they require knowledge and effort. But congrats on the first non-AT mod!!

#

(Saying this while also considering some of my mods not "real" mods.... impostor syndrome when i catch you)

devout otter
verbal narwhal
#

I think its just spending too much time with ||sims|| that i think in rigid categories of custom content and mods - but you are right!

indigo totem
urban patrol
#

holy wow

dusky sail
#

I LOVE SPREADSHEETS!!!!!!!

devout otter
#

Dry and Wet outfits! ๐Ÿ‘€

oblique meadow
#

Then you can adjust things into phases to make it easier to maintain

indigo totem
# devout otter Dry and Wet outfits! ๐Ÿ‘€

yeah!! i didnt want to filter rain/snow outfits based on whether it was indoor or outdoors to be more compatible with custom areas, so im using a style dynamic token to sort it by weather types (sunny and windy = dry, wet = everything else)

indigo totem
oblique meadow
#

Trello or Monday have pretty good free options

ornate locust
#

every time people talk about kanban boards, I am less sure what they actually are

#

swim lanes??

dusky sail
#

What's a kanban board im so intrigued

indigo totem
#

its an idea organizing system, ive heard my mom talk about it before (shes real into the online planner/bullet journaling community)

dusky sail
#

Organizational structures ๐Ÿ˜

ornate locust
#

If it's a Trello, I know what a Trello is, I got one of those, I just don't know where I'm swimming

oblique meadow
#

To summarize. Each column is a status. A swim lane is a horizontal phase. So in this case they would have dry, wet, etc as different swimlanes

devout otter
#

At the risk of sounding dumb: I tried looking into Kanban Boards and like... I maybe know half of these words...

oblique meadow
#

Itโ€™s an overall category or project phase. So if you were looking at it as a project, each swim lane would be a unique user story

lucid iron
#

can u remove this im triggered /lh

brave fable
#

you don't need to know those words. you don't want to know those words.

#

this is like trying to read the necronomicon

indigo totem
oblique meadow
ornate locust
#

all the explanations include terms I do not know too LOL

indigo totem
dusky sail
#

Actually as someone who gets offended when google sheets auto-recommends a drop down category when i wanna type things normally maybe i dont need to look into more efficient data structures. I enjoy the clunk

ornate locust
#

There is an amount of manual work that is comforting and feels like you've got some control over it

indigo totem
#

i do like my moms physical kanban board bc peeling sticky notes off when youre done with a task is so satisfiying

ornate locust
#

ohhh that's nice. I like slamming finished cards into Done, but actual stickers is nice

indigo totem
#

same with erasing stuff off my little whiteboard (that i havent updated since summer semester whoops)

#

sorry for the spam but quick question: ive been using procreate to work on the portraits and sprites, but ive heard about aesprite, should i be using that instead?

lucid iron
#

no need, just use what you want

urban patrol
#

you can use whatever is most comfortable for you, you don't have to use any particular software. many people do recommend aseprite though

#

i use photoshop because i'm familiar with it

lucid iron
#

as long as u can get a png out u good

indigo totem
#

nod nod, thank you!

#

my ipad is old and janky so ill look to see if there are any features or anything that look like ill like aesprite better for this project

urban patrol
#

when exactly does IS_JOJA_MART_COMPLETE get set? i'd like an event to trigger on the farm the morning after, but not sure if i can use that GSQ as an event precondition

turbid oak
#

So I've decided that my first mod will just make Pierre antisocial and not count for perfection if you're a Joja member. My true ambition will come in add ons or something. I'd like to get started tonight. I just need Content Patcher for this, right? Where do I get that?

uncut viper
#

so presumably as soon as you complete those respective rooms or the entire thing

urban patrol
#

by it checks the cc variants of those flags, do you mean it checks that those are false?

uncut viper
#

(actually i slightly misread, it doesnt check the cc variants, it checks if you have those to return that you havent done joja)

urban patrol
#

oh gotcha

uncut viper
#

it also only checks the host ofc

urban patrol
#

oh good reminder that i should broadcast the event

uncut viper
#

and yeah once you buy the joja packages they get added to mail for tomorrow

#

you get both the joja and the cc variants

urban patrol
#

okay perfect, so it should trigger the next morning

uncut viper
#

the GSQ checks "have you got the joja flag? if you dont have the flag, do you not have the CC flag?" bc it checks them all in a row

#

so finding one cc flag when you dont have the corresponding joja flag means it can stop checking earlier. is why i misread it earlier, i missed the negation

#

it will trigger the next morning assuming whatever check you're doing doesnt check all mailboxes but specifically checks received mail

urban patrol
#

the check i'm doing is event precondition GameStateQuery IS_JOJA_MART_COMPLETE

uncut viper
#

then yeah you can use that GSQ

urban patrol
#

okay perfect, thank you

brave fable
#

ah, the only good part of updating mods. updating the mod page flavour art

#

now to work out how to make gold hair look good

urban patrol
#

pretty!!

#

for what it's worth i think that gold hair looks very good

brave fable
#

i think it looks like scabby lemon peel ๐Ÿ˜Œ we need to find a middle ground

urban patrol
#

thank you for that mental image

indigo totem
drowsy pewter
#

first the crab cakes and now the scabby lemon peel, you're so harsh blueberry

brave fable
#

if it doesn't work out usagi can just be akane with buns

turbid oak
#

I'm making my first mod right now! But I'm stuck. Where is a list of game assets so I know what I'm changing? Is it "Characters/Pierre"?

brave fable
#

!unpack @turbid oak - have you used StardewXNBHack yet? it'll unpack the game content into folders based on the asset names

ocean sailBOT
#

Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!

turbid oak
brave fable
#

could you link the guide here?

turbid oak
brave fable
turbid oak
#

Thanks. It's kind of overwhelming for me and sometimes I have trouble taking in that kind of information.

brittle pasture
turbid oak
#

I swear I put it in the right folder

drowsy pewter
#

MAKE ME STRONGER

brittle pasture
turbid oak
#

Thanks

brittle pasture
#

(I only picked the three most delicious sashimi fish for you ๐Ÿ˜Œ )

urban patrol
#

mmm snailshimi

round dock
#

(taking a peek at mmg was the wrong decision, now iโ€™m craving for sashimi SDVpufferwoke)

turbid oak
hard fern
#

ok so someone convince me i shouldnt make a marrigable tortilla

turbid oak
hard fern
versed wyvern
hard fern
#

but tortillas don't talk

#

i wouldnt need to write much dialogue anyways

dusky sail
#

Love goes beyond words

brittle pasture
#

now all that's left is investigate why better crafting doesn't like stacking my snail sashimi in hand, but it's such a minor thing and I'm too lazy now

indigo totem
#

would tortilla baby just be the corn sprite

brave fable
#

i choose to believe it's just a baby swaddled in a tortilla

indigo totem
#

like the tortilla blankets people wrap their cats in

drowsy pewter
#

instead of a tuft of hair its a tuft of corn hair. whatever that shit is

indigo totem
#

like the corn doll from little house in the big woods

turbid oak
#

I got it to work!

indigo totem
versed wyvern
#

Today I learned the corn strings are how they pollinate shockedpeko

urban patrol
#

you guys know in toy story 3 when mr potato head puts his parts in a tortilla instead? NPC idea

hard fern
#

(i have no idea)

drowsy pewter
#

huh

hard fern
#

(i have never watched a single toy story)

indigo totem
#

flashbacks to friend inside me mod

urban patrol
#

am i being unbearably young right now

#

anyway here he is. he did it for espionage reasons iirc

indigo totem
#

hes gotta tortilla to slip under the door

#

and then all the birds start eating him ๐Ÿ˜”

brittle pasture
urban patrol
turbid oak
#

So I got my content unpacked but it doesn't seem to contain what I'm looking for about conditions and what not.

brittle pasture
#

what are you looking for again /gen

turbid oak
urban patrol
#

you can use a When condition to target Data/Characters, target field to drill down to pierre's antisocial field and set it to nonsocial

#

Data/Characters is a dictionary where each key is the entry for an NPC

urban patrol
#

that's exactly the path once you've unpacked the data

turbid oak
#

Thanks

urban patrol
#

Data>Characters.json

#

when you target something from the game, the structure matches the file folder structure (someone correct me if i'm wrong and there are exceptions)

#

but it's important to note you're not actually doing anything to that file

#

just to the asset loaded from that file

turbid oak
#

So I found him. I see "CanSocialize" is "null". I assume I also want to change "CanReceiveGifts" and "PerfectionScore" to false right?

ionic bane
#

I'm dying at all thr tortilla mods can someone please make one that turns all npcs into tortillas lmao

urban patrol
#

i believe CanSocialize automatically affects other things like that but i would have to check the wiki for that

lucid iron
#

The weapon to defeat strawdew...

#

And elliott valley

turbid oak
urban patrol
#

ยฏ_(ใƒ„)_/ยฏ

#

a lot of things in the unpacked contents are set to null

#

that might be something that's hardcoded, or it might mean something else. someone smarter than me might know

#

it might be set to null because the default is true?

#

you'll see that a lot with default stuff

brave fable
#

it's null instead of false by default because it isn't a true/false boolean value; it's actually a Game State Query used as a condition for the character to be socialisable

#

as for why it's null, any values omitted from the original data will be included in the unpacked files by default, set to their default values

#

worth noting that a GSQ will parse null as true (as in, no conditions are required, so it's a pass), so characters will default to be social unless a condition is set (false counts as a valid condition that will never be true)

urban patrol
#

i never knew that about null that's interesting

uncut viper
#

(also in case anyone is unaware, you can actually change the unpacker to not write fields if theyre default, if all the nulls and stuff bother you)

brave fable
urban patrol
#

now if only i could automatically omit all the translation files

brave fable
#

it's just a PR away โœจ

#

say now that my 2024 halloween mod is updated, wonder if we're getting a 2025 sdv server event for october/december

urban patrol
#

if it's not tortilla themed i'm out /j

turbid oak
#

Now I also want a mod where if you give Pierre a tortilla (a hated gift) he'll go on a rant about how much he hates tortillas. Maybe I'll make that if this first mod is a success.

turbid oak
dusky sail
#

I think i have to give up on my "write this entire mod from my phone" dreams. I feel severely nerfed without my unpacked data at arms length to reference

brave fable
#

null will also allow socialising since in game-state-query parsing it's considered true

#

someone clue me in on whether Morris is an actual NPC in sdv1.6

ornate locust
#

he's like a Marlon, IIRC

#

No gifts or anything

uncut viper
ornate locust
#

More NPC than Gunther, less than Gus

urban patrol
turbid oak
brave fable
#

i lost track hahah

hard fern
#

Well gus is a real man

latent mauve
#

If you want them to have actual dialogue rather than using a map tile to fake dialogue, I believe CanSocialize needs to be true? I could be wrong.

brave fable
#

non-social npcs can have dialogue, they just can't be friended/gifted

urban patrol
#

chaosapple wants to set pierre as nonsocial after you go the joja route, i believe

latent mauve
#

My krobus-clone example refused to register any dialogue options until I set CanSocialize to True, but it's possible there was another factor in play.

urban patrol
#

i suggested a patch to Data/Characters When HasFlag

turbid oak
urban patrol
#

it's a condition that checks if there's a mail flag set. there's a non-exhaustive list on the wiki

#

mail flags are commonly used to check things like if is

ornate locust
#

It says "mail flag" but it does not necessarily send you actual mail

turbid oak
#

I'm very confused

ornate locust
#

The flags hook into the system that tells the game you have received mail, more or less?

#

thus they are mail flags even if you don't send a letter to make one happen

#

this also confused me

#

You can just use them to set any flag you want really

urban patrol
#

they're built in or you can set your own

gray bear
#

they just mark certain conditions

ornate locust
#

Yeah they're just how the game does flags, the term Mail Flags just confused me hard until I realized there was no mail involved

gray bear
#

like if u reach perfection you get one

turbid oak
#

Thanks this is very helpful

indigo totem
#

i may have gone insane

#

My favorite part of the Stardew Valley discord server is when everyone said "It's tortilla time" and tortilla-ed all over everyone. โœŠ
https://www.nexusmods.com/stardewvalley/mods/37285

Nexus Mods :: Stardew Valley

With all of these tortilla mods coming out, Tortilla is letting the fame get to their head. They now expect respect for their celebrity status. No matter how off center they are, they are certai

gray bear
#

lmao

drowsy pewter
#

Lol

gray bear
#

want me to showcase? can add flavor text if u like

indigo totem
#

oh sure!

#

thank you :D

gray bear
#

we need a tortilla emoji

turbid oak
#

So this is currently what my content file looks like. I have no idea if what I've got so far is right and am confused what will go in the blank space:

#

{
"Format": "2.8.0",
"Changes": [
"Action": "EditData",
"Target": "Characters/Pierre"

    "When": {
        "HasFlag": "jojaMember"
    }
]

}

dusky sail
#

Need a comma after pierre" and after "jojamember". The space is irrelevant, computer doesnt even know paragraph breaks exist

#

You now need an entries field i think

gray bear
#

don't need the joja one unless they're adding a field under

brave fable
#

you're targeting Characters/Pierre, which is a spritesheet asset, so you'd be using EditImage and patching it with an image in your mods folder

gray bear
#

they're are trying to make Pierre anti social

turbid oak
gray bear
#

so it'd be data/characters/Pierre or.. havent checked game filed in a while

dusky sail
gray bear
#

can go anywhere really

dusky sail
#

I always go action target targetfields when entries but it literally doesnt matter what order right

brave fable
urban patrol
gray bear
#

you need to find the json file with character data, is that data/characters? thonk

#

yeh it is. would that be fields or targetfield

dusky sail
#

Wherever the character data is for target then target fields pierre

urban patrol
#

~~```"Target": "Data/Characters",
"TargetField": [ "Pierre", "CanSocialize" ]

brave fable
# gray bear yeh it is. would that be fields or targetfield

per the docs for Field,

When the entry's value is a string, the value is assumed to be a slash-delimited list of fields (each assigned a number starting at zero); otherwise fields are entries directly within the given entry.

When the value has nested entries, you can use TargetField to edit a specific one.

gray bear
#

I see, I think thank u!

brave fable
#

so based on this example from the docs:```json

{
"Action": "EditData",
"Target": "Data/Objects",
"Fields": {
"MossSoup": { // entry with ID 'MossSoup'
"Description": "Maybe a pufferchick would like this."
}
}
}

we can assume this would work just as well:```json
{
    "Action": "EditData",
    "Target": "Data/Characters",
    "Fields": {
        "Pierre": { // entry with ID 'Pierre'
            "CanSocialize": "false"
        }
    }
}
urban patrol
#

that doesn't overwrite all of Pierre? it only changes CanSocialize?

#

maybe my brain is fried

dusky sail
#

It only overwrites what you specify iirc

brave fable
#

if we used Entries instead of Fields, then yes, it would overwrite all of Pierre with the data we provide
likewise, if CanSocialize were a data model/dictionary of its own, then all of its data would be replaced with what we provided

uncut viper
#

its fine because Pierre is a top level field

urban patrol
#

every day i learn things

uncut viper
#

if Pierre were an entry inside something else, then you need TargetField

gray bear
#

ohh I understand now

uncut viper
#

along those same lines, something like this:

"Fields": {
  "Pierre": {
    "CustomFields": {
      "Key": "Value"
    }
  }
}

this would overwrite the entire CustomFields dictionary and erase every other entry

#

(every other entry inside CustomFields)

#

bc it is not top level

dusky sail
#

I dont think i have the brain power to understand this right now. I should throw myself back in the translation mines

gray bear
#

so if I wanted to edit a single value inside customfields I'd use targetfields

urban patrol
#

here's the explanation esca gave me a while back if that helps, although i still clearly don't have a perfect understanding of it lol

turbid oak
#

How's this?

urban patrol
#

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

turbid oak
#

{
"Format": "2.8.0",
"Changes": [
"Action": "EditData",
"Target": "Data/Characters",
"Fields": {
"Pierre": {
"CanSocialize": "false"
}

    "When": {
        "HasFlag": "jojaMember"
    }
]

}

gray bear
#

need a comma before "when"

#

what program are u using

turbid oak
#

Notepad++

gray bear
#

people say it does in fact complain about missing things but it doesn't seem to

urban patrol
#

you'll get used to adding commas eventually ๐Ÿ‘

#

it can find missing brackets but it doesn't know about commas

gray bear
#

vscode would have my ass for this

urban patrol
#

the validator governor linked to does though

gray bear
#

'how fucking dare u not add a comma???'

urban patrol
#

does vscode care about trailing commas? i also use N++

gray bear
#

it does.

brave fable
#

depends on whether you use json5 or jsonc file associations

gray bear
#

yeah if u do that it won't be red

#

just yellow

turbid oak
#
    "Format": "2.8.0",
    "Changes": [
        "Action": "EditData",
        "Target": "Data/Characters",
        "Fields": {
            "Pierre": {
                "CanSocialize": "false"
            },
        "When": {
            "HasFlag": "jojaMember"
        }
    ]
}```
gray bear
#

does cp accept higher format values than the current version?

urban patrol
#

you can add three ` on either side of your message to make it more readable as code

gray bear
#

!codeblock

ocean sailBOT
#

You can embed code in Discord using a series of three ` :
```
Your code can go here
Even if not a haiku
Just an example
```

For syntax highlighting, add the language code on the same line as the first
``` (with no space, like ```json).
The usual codes are cs (C#) and json.

urban patrol
#

aha thanks bea

gray bear
urban patrol
#

not apostrophes, tildes

devout otter
gray bear
#

wait did CP get updated to 2.8 while I wasn't looking

lucid mulch
urban patrol
#

oof sorry for ping

gray bear
#

pings r fine

past knot
#

I know this is outdated, but a friend of mine has it set this way...But is there any way to add new shirts via CP?

gray bear
#

is there a command for CP docs I think it'll help Morris

turbid oak
urban patrol
#

idk but button has the json tutorial

gray bear
#

blueberry has a mod that adds sailor moon clothing with CP

devout otter
gray bear
#

wiki should have more info about adding clothes

brave fable
#

i wouldn't really recommend looking at my code since it does add like 200 of them at once instead of a more manageable 1 or 2

gray bear
#

lmao

turbid oak
devout otter
#

Curly.

gray bear
#

curly

brave fable
#

curly

urban patrol
#

good catch dolphin

gray bear
#

[[Modding:Objects]]

gray bear
#

this got clothes info

turbid oak
#
    "Format": "2.8.0",
    "Changes": [
    {"Action": "EditData",
        "Target": "Data/Characters",
        "Fields": {
            "Pierre": {
                "CanSocialize": "false"
            },
        "When": {
            "HasFlag": "jojaMember"
        }
     }
    ]
}```
past knot
gray bear
#

see farm computer post

drowsy pewter
#

objects is not clothing

turbid oak
#

Does everything look good and complete for what I want it to do?

gray bear
#

shit twas items

urban patrol
gray bear
#

[[Modding:Shirts]]

gray bear
#

u can go back to modding items for pants and hats

urban patrol
#

objects vs items is always a trip

gray bear
#

in my brain they are the same

turbid oak
#

"JsonToken EndArray is not valid for closing JsonType Object. Path 'Changes[0]', line 14, position 5."

gray bear
#

I think u closed too early

turbid oak
#

It's the closing square bracket

gray bear
#

send the link of the json

turbid oak
#

How?

gray bear
#

just the link where it told u that error

urban patrol
#

was that in your SMAPI console or was that after putting it into smapi.io

brave fable
#

sometimes the best way to use a colour is to use as little of it as possible ๐Ÿฅณ

gray bear
#

beautiful

#

ur def missing a close one, uh [opens vscode]

urban patrol
gray bear
urban patrol
#

yeah lol i had to copy paste to N++

indigo totem
gray bear
#

missing a single curly bracket

#

to close ur action

#
{
    "Format": "2.8.0",
    "Changes": [
        {
            "Action": "EditData",
            "Target": "Data/Characters",
            "Fields": {
                "Pierre": {
                    "CanSocialize": "false"
                },
                "When": {
                    "HasFlag": "jojaMember"
                }
            }
        }
    ]
}```
#

add one after line 14

brave fable
urban patrol
#

(when you click a bracket in N++, it highlights the corresponding one. if nothing else highlights, then you have a missing one)

gray bear
#

^ vscode just grays it out

urban patrol
turbid oak
#

It's saying the same thing after I fixed it

urban patrol
#

you put it after the ] end of changes instead of before

gray bear
#

wrong place to add the curly

#

just add it after "jojaMember"

#

the thing about code is that if you don't close what you opened it won't work

urban patrol
#

your brackets should be like a symmetrical sandwich
( { [ < code is cool > ] } )

turbid oak
#

Finally, no errors found!

urban patrol
#

yay!

gray bear
#

if the sandwich lacks a bottom, game can't eat it

turbid oak
#

Thank you so much everyone for your help!

#

I've saved the file, now what?

urban patrol
#

do you have a manifest

turbid oak
#

If I did everything right, will it run locally in my game?

#

yes

urban patrol
#

then yeah launch the game and see what breaks lol

#

[[Modding:Console_commands]]

urban patrol
#

you can use this to skip ahead to having the flag

turbid oak
#

I need to update Content Patcher. How do I do that?

urban patrol
#

redownload it from nexus

turbid oak
#

thanks

urban patrol
#

same way you installed it

turbid oak
#

It says SVE crashed on entry and may not work properly

#

I scrolled up

urban patrol
#

test with a minimal mod list

#

just your mod + dependencies

turbid oak
#

it looks like all my mods broke from updating Content Patcher

urban patrol
#

and QOL testing mods

#

pathos just released the most recent version so if it broke mods they likely wonโ€™t have updated yet. but if he did something that big he would have said

turbid oak
#

It was because I had two copies

#

this is it

#

time to see if it works

#

Pierre is missing from the friendship list!

#

Too bad it's a Wednesday in game

#

I don't know where he goes

#

But yeah, I think it does what it's supposed to!

brave fable
#

nice one SDVpufferthumbsup the first step's always the hardest

turbid oak
#

I think I'm ready to upload

urban patrol
#

donโ€™t forget your update key

indigo totem
#

i forgot my update key but im probably never gonna update โ€œcelebrity tortillaโ€ so whatever

brave fable
#

your first update can be adding the update keys ๐Ÿฅณ

urban patrol
#

i didnโ€™t forget my update key with my first mod but i didnโ€™t have the right syntax ๐Ÿ˜”

turbid oak
#

How do I convert to a .zip file?

#

Okay I found a website but I don't know how to turn my folder into a file

#

I don't know what I'm doing now

turbid oak
#

yes

hard fern
#

Can you not just right click > send to > zip file

turbid oak
#

Thanks!

hard fern
#

Wrong channel oops

turbid oak
#

I DID IT! IM PUBLISHED!

brave fable
#

some people struggle to make a solid mod page. they say it's the hardest part. but i can tell you're a natural at this ๐Ÿ˜Œ

#

want your post added to the #mod-showcase ? it'll help break up all the tortillas

uncut viper
#

break up the tortillas, you say...

turbid oak
brave fable
#

my hidden powers manifest ๐Ÿ˜Œ

turbid oak
craggy goblet
#

Guys.. I've got a code question :)

#

I've looked at some mod's code (dialogue in this case) a couple of times already and kept finding "#$e#" (without the ") - now I'm wondering, what's the difference between that and "#$b#"?

hallow prism
#

the e one ends the dialogue, then you need to respeak to the npc again to see the next line

#

the b one breaks the dialogue, meaning you immediately has the next dialogue windows being open

#

most modders prefer b because there's less chance to miss the dialogue overall for the player (like if they don't speak to the npc again)

craggy goblet
#

Thankss.. Then I've gotta change that asap ๐Ÿ˜…๐Ÿ‘Œ๐Ÿผ

#

Don't want to have to talk to my folks a bazillion times ๐Ÿ’€

craggy goblet
#

And, I found this too. Wanted to copy it. Do the numbers - in the middle of the photo - have to be the same or can I just mix them up? (found another bit like that in a different mod, but different numbers .. still confused-)

gentle rose
#

those are response IDs. They need to point to the correct response

sleek flint
#

Is there a way to add timed quests using JSON?

#

like must complete in 3 days

#

as well as giving the player a mail flag if not completed?

brave fable
#

not in vanilla, no -- you'd create a special order for that effect

#

other than from the bulletin board, all the entries in Data/Quests have no time limit.

#

you wouldn't be able to send mail if not completed through normal means, but you can send mail if completed and check against this in tandem with checks for having started the special order in various ways

sleek flint
#

Ok thanks blueberry SDVpufferheart

sleek flint
#

Is there a way to play an event with a trigger action?

brave fable
#

no, trigger actions are usually triggered from events, not the other way around

#

if you're in dialogue you can use $v to start an event, though

#

the one and only time i look into BETAS to find something and it's not there SDVpufferpensive

finite ginkgo
#

If youโ€™re looking for a playEvent trigger action surprisingly enough youโ€™ll find one in spacecore

craggy goblet
#

Between Content Patcher Animations and SpaceCore Animations, what are the differences and what's better if I want to make anims for Custom NPCs?

finite ginkgo
#

Depends what you mean by animations for custom npcs, if you mean schedule animations, you might not need either

sleek flint
brave fable
#

probably the stuff the other 37,750 mods were made to do SDVdemetriums

sleek flint
#

Thanks btw

finite ginkgo
calm nebula
#

I went to sleep and I woke up to tortillas

hard fern
#

yes

#

tortilla takeover

craggy goblet
dusky sail
#

is it ModId or ModID for the token

gray bear
#

pretty sure both of them do the same thing

dusky sail
#

agony

drowsy pewter
#

ModId

dusky sail
#

ok cool

tender bloom
#

make sure it's in brackets like {{ModId}}

#

but i'm also pretty sure it's secretly case insensitive

karmic gust
#

Do doors in temporary maps not work if the temporary map isn't actually set up as a location?

verbal narwhal
#

is there any way to mod heart events as seen (I am trying to do a compatibility patch for a mod and I dont want to go through all the heart events q.q)

karmic gust
#

You should be able to with a trigger action

obtuse wigeon
#

How performance intensive is NPC path finding compared to "Update": "OnTimeChange"? just debaiting which I should prune first?

brave fable
#

debug eventseen myfunnyeventidhere should do it

#

or /eventseen eeeeeeee with chat commands enabled

verbal narwhal
#

thank you!

karmic gust
#

Ohhh oops I skimmed and thought you meant seen for the player, not for testing purposes

verbal narwhal
#

ah sorry, I could have worded that clearlier too!

#

and if I want to make my mod compatible for cp patches, my mod itself does not need the dependency, right?

brave fable
#

not sure how you mean

#

more clearlierly please SDVitemgreentea

verbal narwhal
#

currently my mod only adds functionality to sebastian's frog tank, but I am trying to allow for other locations and without seb as spouse as conditions
so I am adding a logic that detects something tagged as terrarium and only make it tied to the spouse if the tank is in a spouse room

#

so that there can be cp packs with that content as example:

  "Format": "1.34.0",
  "Changes": [
    {
      "Action": "EditMap",
      "Target": "Maps/SebastianRoom",
      "Update": "OnLocationChange",
      "When": { "HasSeenEvent |contains= 928202231": true },
      "MapProperties": { "FrogTankRect": "7 9 3 3" },
      "MapTiles": [
        { "Position": { "X": 7, "Y": 9 }, "Size": { "X": 3, "Y": 1 }, "Layer": "Buildings",
          "SetProperties": { "FrogTank": "true", "Passable": "T" } },
        { "Position": { "X": 7, "Y": 10 }, "Size": { "X": 3, "Y": 2 }, "Layer": "Buildings",
          "SetProperties": { "FrogTank": "true", "Passable": "F", "NoPath": "T" } }
      ]
    }
  ]
}```
#

but so far I have only been working with smapi and c# directly (as well as gmcm) and I am still slightly confused about how content patcher works if it patches mod things

lucid iron
#

Content patcher just put data in

#

In your C# mod do you at any point implement AssetRequested?

brave fable
#

(please use the current Format, you're missing out on a lot of content patcher features by using a legacy format)
(if that's one of your content files)

verbal narwhal
#

no, I am currently handling it through this

    ```private Texture2D GetFrogPortraitFor(GameLocation loc)
    {
        return TwoFrogsToday(loc)
            ? (_frog2Portrait ??= Helper.ModContent.Load<Texture2D>("assets/portraits/frog2.png"))
            : (_frog1Portrait ??= Helper.ModContent.Load<Texture2D>("assets/portraits/frog1.png"));
    }```
#

ah sorry, I used a random cp pack as template

lucid iron
#

Ok then no one can edit your thing yea Sleepden

#

You want to load your frog portraits into content by loading em in the handler of AssetRequested

verbal narwhal
#

ah but the compatibility would be only for tile properties and triggering actions

#

ah no, so far no one wanted to change the portraits

lucid iron
soft lance
lucid iron
#

Well again we r covering all the bases right

#

No

obtuse wigeon
#

Chu doesn't sleep, it's a know fact,

patent lanceBOT
lucid iron
#

For map properties, as long as you as mod author is using location.TryGetMapProperty then it doesn't matter how people are putting in the map properties