#making-mods-general

1 messages · Page 519 of 1

fair verge
#

hellooo, first time chatting here cause i just got back into stardew modding after years :'D but would anyone be down to test an update i made to this mod? https://www.nexusmods.com/stardewvalley/mods/15846

Nexus Mods :: Stardew Valley

Stops the blaring sounds from your newly launched game. Lets you set the volume levels of the Main Menu, either through GMCM, or through editing the config.json.

hallow prism
#

"Condition": "LOCATION_NAME Here Lumisteria.MtVapius_Faycombe, ANY \"!PLAYER_VISITED_LOCATION Current Lumisteria.MtVapius_FaycombeMeadow\" \"!PLAYER_VISITED_LOCATION Current Lumisteria.MtVapius_FaycombeOrchard\", !PLAYER_HAS_CONVERSATION_TOPIC Current firstVisit_Lumisteria.MtVapius_Faycombe",
In theory, this should trigger when in faycombe, if player didn't visit at least one of the location listed, and if they visited faycombe at least 5 days ago?

royal stump
#

that logic seems correct, though I think you can do the second condition without the "any":
!PLAYER_VISITED_LOCATION Current Lumisteria.MtVapius_FaycombeMeadow Lumisteria.MtVapius_FaycombeOrchard
the wiki says it checks whether at least one of the listed locations has been visited, so ! means none of them have been visited

hallow prism
#

yeah but if player visited one and not the other?

royal stump
#

PLAYER_VISITED_LOCATION Current Lumisteria.MtVapius_FaycombeMeadow Lumisteria.MtVapius_FaycombeOrchard
would be true if they visited 1 or visited both

brittle pasture
royal stump
#

...oh, sorry, I was misreading your goal SDVpufferdizzy

hallow prism
#

it is ok, stuff isn't obvious 😄 especially with negation of conditions

royal stump
#

yeah, I get lost with logic gate stuff

#

the ANY !1 !2 version will be false if they visited both
my version would be false if they visited 1 or more

fair verge
hallow prism
#

thanks!

half badge
#

just checking, is this the correct format?

lucid mulch
#

in logic gates, !1 or !2 is identical to !(1 and 2) though I cant remember if you can even do that in gsq

devout otter
half badge
#

cool testing it now!

devout otter
#

(I didn't check if there's any missing commas or such, though. You just need to start the game and find out.)

royal stump
half badge
lucid iron
#

i made a NAND gsq if u want it blobcatgooglyblep

royal stump
#

SDVpufferheart the any !1 !2 is simple enough for what she's doing here, but good to know

lucid iron
#

ah but i lied anyways i only made AND that u can ! on SMCPufferjail

royal stump
#

probably the same effect

#

I hurt my brain with this stuff a little while ago, trying to parse what "!SIZE" means with my weird FTM tile queries

half badge
#

lol wait! the issue was that i NAMED them with .json in the names lol

royal stump
#

(a tile is valid if it doesn't return true for an X by Y area around it) (no one wants this, but it's there)

lucid iron
#

honestly i feel like peliQ is in a weird place as far as my framework mods go

#

i kind of want to just find some other mod to stick these things in LilyDerp

lucid iron
#

NOT AND

urban patrol
#

no need to shout /j

autumn tide
#

..my brain is loading one sec

royal stump
autumn tide
#

oh also Esca, while you're here, tysm for your repeated help with my code stuffs SDVpufferheart

royal stump
#

nand is "true if at least 1 of the sub-things is false"
so like, NAND you went to Place A, you went to Place B is false if you've been to both of them

autumn tide
#

GOTCHAAAA

devout otter
#

Oh wait I missed your status update.😆

small nimbus
#

I’m modding Stardew in steam deck for the first time, I’m not sure what the issue is but I think that since I’m using a windows version so that I can play with other windows users do I need to install windows Smapi? And how would I go about that?? 😅

lucid iron
#

smapi is cross platform since it's running on .NET which is cross platform

#

are you making a mod though? or just hoping to get help on installation

small nimbus
#

Just need help on installation

gaunt orbit
#

!mh

ocean sailBOT
#

For help with modding issues, please ask in #1272025932932055121! When asking for assistance there, sharing an error log will help others identify your issue (see https://smapi.io/log for instructions).

small nimbus
#

Oh

#

I’m so stupid lmao

gaunt orbit
#

Then make sure everyone has the same exact modlist and you should be okay

lucid iron
#

hm how can i do a release in github actions...

royal stump
lucid iron
#

that thingy puts it just on the workflow tho

#

and also it expired SDVpufferpensive

#

oh don't worry my confusion is entirely on the C# side

elfin kindle
#

Ooh okokok phew

lucid iron
#

originally i thought phone always puts a dummy speaker NPC

#

i did check today and looks like it doesn't do that if you have neither FromNPC nor FromPortrait

elfin kindle
#

I see

lucid iron
#

while i fixed it for my thingy it may be good to put a shadowy figure for FromPortrait to not explode log viewer

#

though it is really more of an edge case C# mods should handle

elfin kindle
#

Ill put it on my to-do list, could be a useful portrait have either way!

autumn tide
#

helloooo is there a way to make dwarf's sprites normal-sized?

hard fern
#

SDVdemetriums perhaps relevant

autumn tide
#

tyyyy

#

oh it needs a framework :(

hard fern
#

thats if you wanna make it bigger than 16x32 though

#

if you're extending dwarf within the normal bounds you can jsut do it

autumn tide
#

oh?

#

how?

hard fern
autumn tide
#

AAAA tysm!!

hard fern
#

hm, not sure if there might be hardcoded things attached to it though

devout otter
brittle pasture
#

another person also embiggened the dwarf some time ago
tl;dr you're fine, but you'll need to load new sprites, and RIP compat

#

obviously not actually huge blockers

royal stump
#

looks like dwarf has exactly one hardcoded height thing left in 1.6.15, fwiw?
specifically in the event method* addActor
int height = ((name.Contains("Dwarf") || name.Equals("Krobus")) ? 96 : 128);

#

(contains dwarf, too, not just the specific NPC SDVpufferwoke)

calm nebula
#

Never change

lucid iron
#

with this setup, u would basically not do certain patches on Utility.pickPersonalFarmEvent and QuestionEvent and instead register callbacks with HMK

#

this is just cus i am patch all that anyways easier if we dont collide

devout otter
#

Hi @rigid musk ! I want to ask things regarding Friendable Mr. Qi permissions. Are you okay if I DM'ed you?

autumn tide
rigid musk
#

I was confused as to why I got a ping here lol but thats no problem

#

(not that i mind pings, i dont)

royal stump
autumn tide
#

huh, that is weird

#

will it break anything?

royal stump
#

which is equivalent to 32 vs 24, since those numbers are scaled up by 4

autumn tide
#

wait kroby is short too- SDVpufferwaaah

royal stump
#

it'd probably just ignore any changes you made to have the dwarf be taller elsewhere

calm nebula
#

So if you have a teensy custom npc.....

royal stump
#

mechanically I don't think it'd break events or anything

autumn tide
#

got it, so I'll just make the sprites at a normal scale and then switch it back to that godawful 16x24 grid when I'm done!

half badge
#

Man i wish there was like a portal community thats as helpful about mod stuff as you guys

#

You guys rock

autumn tide
#

oh yeah ppl here are awesome!!

half badge
heavy pewter
#

System.Reflection.TargetParameterCountException: Parameter count mismatch.

reflection.GetMethod(carpenter, "resetBounds").Invoke(carpenter, null);

This is the private method im calling

private void resetBounds()

Im confused cuz the method doesnt have any params, no other overloads aswell, idk

brave fable
#

couldn't you simply use Invoke()?

devout cliff
#

What emotion is the 4th portrait going for? D: (It's a copy/paste of the 1st, but like, when/what emotion is it used for in-game?)

hard fern
devout cliff
#

What's the difference 👀

hard fern
#

literally pixels worth

#

i dont know where the image is but

#

XD i know that much

#

sebastian only uses that portrait a grand total of 3 times in his regular dialogue too

devout cliff
#

Well it's good to know it's not a super important one then

hard fern
devout cliff
#

So it's basically portrait one but a touch of annoyance/anger? XD

hard fern
#

there might be more in events and stuff but i cant be bothered to comb through every event file lol

#

honestly idk

devout cliff
#

Thank you. This was very helpful :3

hard fern
#

since his expression doesn't change much XD

#

every portrait mod does something different

devout cliff
#

I haven't combed through a ton of them, but I feel most just copy 1 to 4

hard fern
#

maybe i just happen to be looking at the special 3 (3 out of the portraits ive used) that do XD

devout cliff
#

Do you remember any of their names? I have nexus open, so i can search myself

#

*mod names

lucid egret
hard fern
devout cliff
#

SDVpuffersalute ty I'll go take a look

brave fable
#

behold

gaunt orbit
heavy pewter
brave fable
#

presumably Helper.Reflection

gaunt orbit
#

If it's the smapi helper you would just use Invoke bc it has the instance baked in

brave fable
#

it shouldn't work, since null is an unneeded extra param, and by providing obj in the Getmethod you've already provided this

#

not the best explanation but hopefully it makes sense

gaunt orbit
#

Though it would be faster to use normal reflection to create a reusable delegate

vocal knoll
# brave fable

as someone who has been working over a week on pixel art for my custom NPC, it literally takes one pixel to change the entire portrait xD

lucid iron
#

i never use the reflection helper cus it's not static kyuuchan_run

#

usually i just get a MethodInfo via normal reflection or harmony accesstools

gaunt orbit
#

It just seems really wasteful

lucid iron
#

or dynamic method if im feeling fancy

gaunt orbit
#

Delegates are the way for sure, regardless of how you make them

opaque cobalt
#

Could I get a mod added to mod showcase please

lucid iron
#

sure just post it

opaque cobalt
#

Thank you. Have a good night

gaunt orbit
vocal knoll
#

Question! If I want a character to say a certain dialogue in a particular setting when another NPC is there, would I use Trigger Actions or Edit Dialogue? (I want my NPC to point out someone in the saloon when saying a particular string of text!

lucid iron
#

do you control this other NPC?

vocal knoll
#

Well my custom NPC wants to talk about Shane in the corner of the saloon

lucid iron
#

oh then u don't really control him bolbsun

vocal knoll
lucid iron
#

you'd need BETAS i think, for the npc location gsq

tiny zealot
#

i think the best you can really do is a schedule string. npc dialogue doesn't really update in real time outside of that

vocal knoll
vocal knoll
#

and trigger or edit dialogue lol

lucid iron
vocal knoll
lucid iron
#

that's something unrelated to what i presented

#

trigger actions r these things and they are actually a vanilla system, BETAS (and many other frameworky mods) add new triggers and actions to use in there

vocal knoll
#

OHHHHH Okay I think i got it I may be back xD Thank you!!!

uncut viper
lucid iron
#

the betas tokenized strings are useful for the actual gsq/action stuff

vocal knoll
#

Also! What's the propper format for randomizing tokens for i18n? I keep seeing so many different ways and Smapi keeps telling me it's wrong DX

"Mon": "{{Random: {{i18n:Rosalie.Mon1}} | {{i18n:Rosalie.Mon2}} }}",

lucid iron
#

but that's like pt2 from making ur thing working

#

Random takes a comma separated list of args, dunno where you got |

uncut viper
#

you can change the separator so couldve been seen in another mod. or confused with the vanilla dialogue || thing

#

but by default it is commas

#

which is bad if your i18n values have commas

vocal knoll
#

got it! Thank you!!! ❤️ ❤️ ❤️

lucid iron
#

uh i dont understand the question

#

for trigger actions, you use GSQs in Condition and actions in Action/Actions

vocal knoll
gaunt orbit
uncut viper
#

im not sure why thatd matter, it'd still just be them reusing their own cache every time anyway

#

it would still be faster ofc to create the delegate but its not like its gotta find the type and method every single time the helper is used

#

just gotta look in the cache

gaunt orbit
#

No I mean I thought it cached it based on the instance passed to it

#

So each menu would have a separate value

uncut viper
#

it creates a ReflectedMethod instance with both the type and the instance passed to it, and uses the cached method but with that specific instance given to the Invoke

#

but the cache is just per-type not per-instance

gaunt orbit
#

Ah, interesting

#

I still prefer using static fields myself but it's good to know that

fervent otter
#

Can I ask for help?

hard fern
fossil osprey
#

You can ask anything without asking for permission yes

#

As long as it's link to mod making

formal crown
#

@umbral edge This is either going to decrease or increase the errors dramatically, but at least I know what's happening for sure (I tried to make things less static for split-screen compatibility, turns out, I overdid it. we keep getting NREs because most fields on the farmhand's screen arent initialized or set when they join which makes the mod explode)

gentle rose
#

“this is either going to decrease or increase the errors dramatically” is my favourite type of update

#

(you’re using perscreens, right?)

formal crown
#

I have perscreens, I just dont know what needs it or static

#

It feels like its impossible to know 😅

gentle rose
#

by static you don’t mean the “instanced statics” thing, right? just regular static

formal crown
#

Nope, regular static

#

I don't do annotation shenanigans often SDVpuffersquee

gentle rose
#

nice, just wanted to make sure (instanced statics for mods aren’t supported any more afaik)

lucid mulch
#

I just don't support splitscreen and it makes my life easier

uncut viper
#

i think they techniclaly are atm but wont be in 1.6.16/7

#

static things would be things whose value should be shared across every farmhand

#

static PerScreen notwithstanding

gentle rose
#

tbh last time I did split screen support I just made nothing static, put everything in one base class and perscreened the instance of that class SDVpuffersquee

formal crown
#

Does that include Helper/Monitor/Manifest and Configs?

uncut viper
#

yeah you only get one of those anyway

lucid mulch
uncut viper
#

Farmer 2 doesnt need its own monitoring and logging

#

that belongs to the Game Window, practically

uncut viper
gentle rose
uncut viper
#

the only thing i dont like about how CP does it (and how i do it with god rays bc i copied CP) is having a bunch of handlers on Entry that then just calls a different, for realsies handler in each perscreen instance feels ugly

#

but it didnt work right when i just had each perscreen register its own handler so shrugs

gentle rose
#

I just don’t register handlers that need to be per screen, simple 😌

uncut viper
#

kinda need to if you're drawing things

gentle rose
#

then I won’t draw things 😌

#

(don’t look at my portrait framework. look away)

uncut viper
#

or doing anythiung based on location changing

#

or menus...

gentle rose
#

iirc the only thing that gave me trouble was when I had to perscreen some stuff related to a harmony patch

uncut viper
#

i hope you dont mean each screen had its own harmony patch

formal crown
#

I have a few fields around that should only be set per-player (like talent points) and a lot of code that should be per-player

gentle rose
#

something about a single perscreen bool feels wrong but it was the solution I ended up with

uncut viper
#

i mean thats the most base case of a per screen isnt it

#

"this should affect this screen and not this other screen"

formal crown
#

So I just have a few perscreens of these handlers

gentle rose
#

it is but it feels strange to do in practice

lucid mulch
#

looking at CP again I actually don't fully know how the splitscreen instances of ScreenManager get instantiated

gentle rose
#

pathos magic

uncut viper
#

a PerScreen value gets instantiated automatically as needed

#

just calling the getter for Value creates it

#

PerScreen stuff i feel is probably a lot easier to manage if your mod is very OOP-designed

lucid mulch
#

Oh the PerScreen constructor took a function not the value

#

Pathos code is very enterprise OOP, so makes sense PerScreen works well

brave fable
#

splitscreen support is so simple you may as well do it, i usually just use a single PerScreen<State> that contains all my individual perscreen variables

formal crown
#

Hides away my single non-api interface

uncut viper
brave fable
#

i would never

lucid mulch
#

I don't actually know which of my mods have splitscreen problems or not.

I know speedy solution has problems that PerScreen wouldn't solve

brave fable
#

the inheritance in this does make me laugh sometimes. i like seeing bug.hasbeenkissedtoday and furniture.edibility and cloud.jumpoffset

#

emilysparrot.bombradius

lucid mulch
#

at least farm animals are semi sane as they don't inherit from npc villagers unlike bats

brave fable
#

bed.monstermusk(bed.owner)

formal crown
#

I love the method names for getting evening hours in Game1

  • StartingToGetDarkTime
  • ModeratelyDarkTime
  • TrulyDarkTime
uncut viper
#

for me no method name will ever surpass checkForTerrainFeaturesAndObjectsButDestroyNonPlayerItems

brave fable
#

*ahem*
Utility.makeTemporarySpriteJuicier(t, l)

formal crown
#

object.rot

#

and crop.kill

lucid mulch
#

ItemPedestal.IsConsideredReadyMachineForComputer

urban patrol
brave fable
#

/* Furniture.InitializeAtTile() */ drawHeldObjectLow.Value = Name.ContainsIgnoreCase("tea")
is this even worse than name.contains(dwarf)

lucid egret
#

is it crazy to say that i didn't know people were using software to write text code (for CP mods)

#

like wow i was just opening the files and going in, this is like a whole new ballpark

woeful lintel
#

what do you call the thing you use to open the files and go in?

fossil osprey
#

I'm guessing that'd be basic windows notepad

woeful lintel
#

yeah, that's software

brave fable
fervent otter
#

Ok

#

I can't really attach a photo there

#

I just want to ask what mod is it

brave fable
fervent otter
brave fable
fervent otter
#

Ohhh the one with so many npc? Ok

brave fable
#

pretty sure making-mods-general only has them enabled because there were just too many people who needed actual help making their mods and needed to send images to solve the problem

#

otherwise it'd be disabled too to try and cut down on spams and scams

undone echo
#

Dude

#

I feel like it would be really cool if someone made a mod to add jojo stuff to Stardew Valley

brave fable
#

this is the right place if you're the one making it ☀️

#

otherwise if you have specifics there's a mod ideas page to post it on hahah

undone echo
#

I am not sure on how to mod

#

But I would love to learn if someone could teach me on the weekends haha

brave fable
#

people don't often do one-on-ones here, but we'll happily throw you the getting-started guide and work through any issues you come across as you go SDVpufferthumbsup

#

there's also a number of useful tutorials on the modding wiki

woeful lintel
#

!gettingstarted

ocean sailBOT
woeful lintel
#

!startmodding

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.

woeful lintel
#

Is there not a nice way to make a slider config option with CP+GMCM? AllowValues doesn't accept tokens, so Range isn't an option

woeful lintel
#

also where are the sprites for Junimo Kart? can't find them in cursors

#

oh there's a minigame folder wtf never noticed it

ocean wave
#

so apparently i messed something up in dlimes, and it figured out its just not pulling the things i made, and im confused abt it TheVoices

#

i fixed it not being the full sheet, but now im stuck

hard fern
#

could you show what you're referring to

ocean wave
#

i have this,

#

but then some textures werent showing up

hard fern
lucid iron
#

Are you doing overlay editimage

#

Might want to do a mask actually, and use late priority

hard fern
#

🤔 maybe new mask overlay might be good here

ocean wave
#

arruu whar that?

#

well i know WHAT it is but

hard fern
#

should be in the latest cp docs

ocean wave
#

wheres that again,,

ocean wave
#

i think i foudn it

#

oh ty aba

woeful lintel
#

clutch SMAPI/CP update, it's being put to use so much since it released

vernal crest
#

It is so handy

ocean wave
#

how would i implement the overlay ? would i juust do "PatchMode": "Overlay",?

woeful lintel
#

yes

ocean wave
plucky mirage
#

hi peeps! back to attempt to make yesterday's "mod" and figuring out why SMAPI says my JSON is incorrect despite all validators saying it's okay; i'd appreciate any help:

    "Format": "2.8.1",
    "Changes": [
        {
            "Action": "EditData",
            "When": {
                "HasCraftingRecipe": "Tortilla"
                },
            "TextOperations": [
        {
        "Operation": "Append",
                "Target": "Data/Objects",
                "Fields": {
                            "72": {
                                "Description": "This text means it worked."
                              }
                        }
                    }
                ]
            }
        ]
 }```
ocean wave
#

surely this works Clueless

vernal crest
plucky mirage
#

@lucid iron pinging you because you were invested yesterday just in case haha

ocean wave
#

it is in the same place, but not the exact pixels

woeful lintel
lucid iron
#

I mean i still think u r not actually load the right json bolbsun

vernal crest
lucid iron
#

The error u have means "content.json is no good as a json"

vernal crest
hard fern
#

(unrelated but i just wanted to ask) 🤔 masks dont matter if i were making my own sprites, right? since it's not like im patching over anything

woeful lintel
vernal crest
#

Chu is wrong

woeful lintel
vernal crest
#

The content.json is fine, it's the Targets being messed up is the issue

ocean wave
#

yep im figuring that out x3klee im guessing like this?

plucky mirage
#

oh but i think target being in there was in the example on the github unless i'm tripping

#

i'll change it

vernal crest
#

Leroy is also wrong (sorry!). Target should be inside TextOperations - you need two Target fields for TextOperations. One for the Action and then one for the TextOperation.

#

Example from CP docs:

{
   "Action": "EditData",
   "Target": "Data/NPCGiftTastes",
   "TextOperations": [
      {
         "Operation": "Append",
         "Target": ["Entries", "Universal_Love"],
         "Value": "127 128",
         "Delimiter": " "
      }
   ]
}
plucky mirage
#

should i just add another target that is the same before TextOperations?

vernal crest
#

As you can see, two Targets. First one is to target Data/Objects, second is to target the specific entry inside Data/Objects

hard fern
plucky mirage
lucid iron
#

Hm wait

#

What if you just EditData the object strings

vernal crest
#

To change a field, use the format ["Fields", "entry key", "field key"] and replace "entry key" and "field key" with the keys you'd specify for Fields above.

lucid iron
#

Otherwise aba is right tho Bolb

vernal crest
#

Yeah, chu's suggestion is a better one for this particular change

woeful lintel
plucky mirage
#

i'm still new to all this

ocean wave
#

i dont know yet i havent tried just yet

woeful lintel
#

there is a pretty clear example in the doc for how to use mask, did you check that ?

plucky mirage
#

i am editing the object Diamond no?

#

its description

vernal crest
lucid iron
#

Yeah vanilla objects get their names from Strings/Objects

woeful lintel
vernal crest
#

The vanilla description field calls the entry in strings/objects

plucky mirage
#

oh i didn't know there's an additional entry, i unpacked the game yesterday but i was sure i had to use Data/Objects

lucid iron
#

Mods often dont cus i18n but that's separate problem

#

You are still doing a text operation tho, so the formatting has to be correct

woeful lintel
#

because if you're just masking the vanilla asset with your final sprites, then overlay the same thing over, then it's not going to do anything

vernal crest
#

It'll be an entries text operation though rather than a fields one

ocean wave
#

arruu oooo, so just overlay instead?

vernal crest
#

To change an entry, use the format ["Entries", "entry key"] and replace "entry key" with the key you'd specify for Entries above.

plucky mirage
#

yesterday that is

#

Esca provided me with an example

ocean wave
#

TheVoices im so lost

vernal crest
plucky mirage
#

let me look

woeful lintel
vernal crest
woeful lintel
ocean wave
#

is here a mask doc on its own?

vernal crest
ocean wave
vernal crest
ocean wave
#

yes please !!!

vernal crest
#

Ok, first image is the image I used in my FromFile for the mask patch. It is literally just the vanilla springobjects.png with every sprite removed except for the ones I want to replace with my mod.

Second image is the one I use in my FromFile for the overlay patch. It is the sprites I want to put into the game to replace the vanilla ones in Maps/springobjects.

plucky mirage
#

i don't understand the second Target field under TextOperations, what on earth do i put there?

lucid iron
#

(imo it's better to mask with entire squares to handle mods that do a Load on the source asset)

plucky mirage
#

this is incorrect right

vernal crest
#

Patch for the first one:

{
            "When": {
                "CT_Replacer": true
            },
            "LogName": "Remove vanilla icons",
            "Priority": "Late",
            "Action": "EditImage",
            "Target": "Maps/springobjects",
            "FromFile": "assets/VanillaIconsMask.png",
            "PatchMode": "Mask",
        },

Patch for the second one:

{
            "LogName": "Add legacy Bog icons",
            "Priority": "Late",
            "Action": "EditImage",
            "Target": "Maps/springobjects",
            "FromFile": "assets/legacy/CombinedIcons.png",
            "PatchMode": "Overlay",
        },
ocean wave
#

OHHHHH i think i get it? so make new png that has everything removed except for the stuff i want to replace?

vernal crest
# plucky mirage this is incorrect right

Yes, it is incorrect. Your Target needs to be "Target": ["Entries", "Diamond_Description"] and then you need to use the Entries field like I said, not Fields.

woeful lintel
#

I'd recommend what chu said: a proper mask is an asset the size of the spritesheet with squares over the sprites you want to replace

vernal crest
ocean wave
#

Blubbers im trying i promise

vernal crest
vernal crest
# plucky mirage this is incorrect right

Also your indentation is really wild and it might be easier for you if you try to fix it up a bit, because it's much easier to follow when fields on the same level have the same indentation.

ocean wave
#

TheVoices what do you mean entire squares?

plucky mirage
#

i'm not a programmer

#

i don't know what to put in Entries after following the advice above, is it supposed to be "Value" and then my additional text like on the github?

vernal crest
ocean wave
#

TheVoices i feel so annoying im so sorry

brittle pasture
vernal crest
plucky mirage
#

is this correct?

woeful lintel
plucky mirage
#

Notepad++

#

it's a custom theme

vernal crest
plucky mirage
#

ah, i forgot about that; i was told i could try "\n" to add a linebreak?

vernal crest
#

Notepad++ is not great for helping with formatting in my experience but you can get the json tools or json viewer plugins to enable auto formatting

woeful lintel
vernal crest
ocean wave
#

entire frame? im sorry

vernal crest
#

In this case, 16x16

#

In an NPC's world sprites, 16x32

#

In a portrait, 64x64. Etc

vernal crest
#

Remember when I was advising you to use the grid the other day (and then it turns out procreate sucks for that) so that you knew where the frames were rather than only having the actual pixels of vanilla to go on?

ocean wave
#

yea im doing that rn

#

so like this?

plucky mirage
#

i don't know if that's any more correct than what i did 🥶

#

i haven't gotten to Delimiter yet so i'll look into it now

ocean wave
#

with sprite on

vernal crest
plucky mirage
#

i let the tool do it

#

i also think [{ looks weird lol

vernal crest
#

Yeah I figured that was what you meant when you said it was the result of the plugin

ocean wave
#

STIMMING thats one thing - imma do each one different color- is that oky?

vernal crest
#

There's another plugin - I think called json viewer - if you want to see if it does it differently. Or there might be options, I don't know

vernal crest
plucky mirage
#

let me try

#

oh

#

it looks better

vernal crest
#

Yeah that's more usual

plucky mirage
#

i think i'm finished making changes, hopefully the mod loads this time

#

holy shit no errors

vernal crest
#

Well, it was loading last time. It was just not running the patch. (Important distinction because "not loading" means a whole other set of issues.)

plucky mirage
#

what is the difference?

vernal crest
#

Yesterday we had someone whose content.json wasn't loading at all. The error wasn't in their content.json, it was in the fact that their mod folder had a trailing space in it and on Mac that causes CP to be unable to see the files inside.

plucky mirage
#

oh interesting

ocean wave
#

huzzah!!
it looks darker cause of grid lines

vernal crest
#

So no matter what changes were made to the content.json, it didn't fix.

plucky mirage
#

well, the patch ran, since no errors, but i am not seeing my change in-game

#

could it be the Delimiter being invalid?

vernal crest
#

Could be, hence why I suggested not using that delimiter

plucky mirage
#

let me try just a space to confirm linebreaks indeed do not work (chu said they might when editing Objects)

vernal crest
#

But actually, is there even a tortilla crafting recipe?

#

You should comment out the When field for now

plucky mirage
#

...there isn't one?

hard fern
#

there is, it's corn

vernal crest
#

Isn't that cooking?

#

Since it's a food?

hard fern
#

oh right

#

yeah it's cooking

ocean wave
vernal crest
#

And is it definitely called "Tortilla"?

hard fern
#

you can't craft tortillas in the crafting menu

plucky mirage
#

does it need to be HasCookingRecipe?

#

i thought it's one and the same

vernal crest
vernal crest
plucky mirage
#

i didn't remember there were separate tokens for those and i'm seeing this now

vernal crest
#

Anyway, you should comment out the When field

plucky mirage
#

it is Tortilla

vernal crest
#

So you can check that your patch applies regardless of condition

ocean wave
#

so imma save that layer as its own png, and use that for mask?

plucky mirage
#

(fairly certain, i am looking at Cooking Recipes)

vernal crest
#

and only then add the when field back

#

Because you should try new things with as few variables as possible so troubleshooting is easier

plucky mirage
#

i can just // it yeah?

#

it won't break anything?

vernal crest
#

Yup and then patch reload

plucky mirage
#

what's "patch reload"?

#

i have been rebooting the game every time so far

#

to test out changes that is

vernal crest
#

It's a CP console command to reload your mod

#

patch reload <mod id>, where you replace <mod id> with your mod's unique id

plucky mirage
#

i broke it again 😩

#

maybe there isn't a Tortilla cooking recipe and i'm tripping

#

oh hang on i just commented out the "When:", do i need to do every line separately?

vernal crest
#

Did you ensure you commented out all 3 lines of your When field?

plucky mirage
#

no

#

i assumed it would comment out everything until the bracket

#

i'm stupid

#

this is the proper way to do it yeah?

#

i only did the first one initially

vernal crest
#

Yeah

#

Although I am sure someone is about to jump in to teach you about block comments

blissful panther
#

(Also it does exist, just as confirmation.)

plucky mirage
#

thank you ❤️

#

i thought i was about to get scolded

vernal crest
#

Block comments are /* Like this */

#

And every line between the opening and closing is commented out

plucky mirage
#

my text is still not being appended

ocean wave
#

im gonna remove my spring objects, then add the boxes and the remade sprites, is that good?

vernal crest
#

Good for commenting large amounts (hence the "block")

plucky mirage
#

maybe it's not meant to be "Value" in there?

blissful panther
vernal crest
#

When you run the patch summary it will tell you if your patch is being applied

woeful lintel
vernal crest
plucky mirage
#

seems like it hasn't "applied"?

vernal crest
#

Correct. Can you try trashing your diamonds and spawning some new ones?

#

I think the description should've updated on your existing ones but we will be safe

plucky mirage
#

is there a command for it like "give"? i don't have any cheat mods installed atm

#

i'm also testing on a legitimate save

vernal crest
#

player_add (O)72

#

I hope you backed your save up

plucky mirage
#

🥶

vernal crest
#

Or you don't care if it gets broken

#

If neither are true, do not test on real saves

#

What you are doing now is definitely not at risk of breaking your save.

#

But it's good to be in the habit of not mixing your play saves and your mod work.

woeful lintel
#

debug fin "item name here" is pretty good: no need to learn the ID

plucky mirage
#

i gave myself a diamond and the description remains unchanged

vernal crest
#

I just use player_add name <name> and if I got the name wrong it'll tell me what I might've meant lol

woeful lintel
#

meh, as long as you don't save (sleep) when testing, any save is fine

#

👆 will get fucked by this

vernal crest
vernal crest
#

I had a save called "do not sleep" and I still forgot not to sleep

plucky mirage
vernal crest
#

Hmm hmm hmm. What am I missing.

ocean wave
#

so i copied your code for mask, and its getting angry at me

plucky mirage
#

just want to say i really appreciate you helping me, i'm sorry i'm messing this up lol

vernal crest
ocean wave
#

not suprised AINTNOWAY

vernal crest
ocean wave
#

but hey im getting somewhere STIMMING

plucky mirage
#
    "Format": "2.8.1",
    "Changes": [
        {
            "Action": "EditData",
            "Target": "Strings/Objects",
        //    "When": {
        //        "HasCookingRecipe": "Tortilla"
        //    },
            "TextOperations": [
                {
                    "Operation": "Append",
                    "Target": [
                        "Entries",
                        "Diamond_Description"
                    ],
                    "Entries": {
                        "Value": "This text means it worked.",
                        "Delimiter": " "
                    }
                }
            ]
        }
    ]
}```
#

(i don't know how to specifically do the JSON block)

gentle rose
ocean wave
#

fixed was mising a squiggly

plucky mirage
#

the auto-formatter plugin

blissful panther
#

Speaking of spaces, I recently figured out a... problem I've had for OVER A YEAR just today. SDVpufferwaaah

plucky mirage
#

it decided my comment wasn't important enough to keep 🥶 ✌️

vernal crest
plucky mirage
#

i'll edit it back

ocean wave
#

yepyep ! was missing a silly squggly

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

plucky mirage
#
{
    "Format": "2.8.1",
    "Changes": [
        {
            "Action": "EditData",
            "Target": "Strings/Objects",
        //    "When": {
        //        "HasCookingRecipe": "Tortilla"
        //    },
            "TextOperations": [
                {
                    "Operation": "Append",
                    "Target": [
                        "Entries",
                        "Diamond_Description"
                    ],
                    "Entries": {
                        "Value": "This text means it worked.",
                        "Delimiter": " "
                    }
                }
            ]
        }
    ]
}```
#

oo this looks prettier

ocean wave
#

ok yippee

#

time to test

vernal crest
#

Ok what the heck this isn't changing even without TextOperations

woeful lintel
#

ideally, you should try to get used to test stuff often, especially since the patch reload command exists

plucky mirage
woeful lintel
vernal crest
#

It definitely is, I have published mods that edit strings

plucky mirage
#

surely it's not the "outdated" format that is messing it up?

vernal crest
#

Nope (at klip)

woeful lintel
#

no but why are you not using the latest format?

plucky mirage
#

we have not updated yet

woeful lintel
#

not updated what?

plucky mirage
#

conter patcher

woeful lintel
#

CP? you should

vernal crest
#

CP, presumably

plucky mirage
#

yeah, i will when we play next

#

i exclusively play in MP

#

i just figured if i input a version i don't have in there it'd be extra errors

vernal crest
#

Yeah it won't work

#

Ok, editing Strings/Furniture in published mod. Works beautifully.

Editing strings for this. Failure.

ocean wave
#

AINTNOWAY my textures dont even show

ocean wave
vernal crest
ocean wave
#

okay im guessing this

#

im guesing without debug

vernal crest
#

It should not have debug in front

autumn tide
#

just remove the debug :)

vernal crest
#

And you need your mod id

autumn tide
#

heh jinx LOL

vernal crest
#

Ok this doesn't appear to be working for objects I do not know why

#

So we return to editing Data/Objects. I am so sorry klip.

#

(Let's blame chu)

#

No wait

#

I was looking at the wrong bug thing

#

It works for bug steak

ocean wave
#

nope- still not there

vernal crest
ocean wave
#

did get this tho

vernal crest
woeful lintel
#

it really reads like CP is calling your sprites "dumb" lmao

ocean wave
#

i did not see the version i swore i had that AINTNOWAY do i just change the nubmer?

plucky mirage
#

do i just change the Target and that's it?

ocean wave
#

from 2.8.0 to 2.9.0?

woeful lintel
#

yeag

vernal crest
#

What in the heck

plucky mirage
#

i imagine "Diamond_Description" needs to be "Diamond" now

vernal crest
#

Why isn't diamond working????

ocean wave
#

sorry ythas all i saw

vernal crest
plucky mirage
vernal crest
#

We are in this now

plucky mirage
#

there's a "DiamondStone_Description" but idk if it's the same

vernal crest
#

No, that's the node

#

Ok please use the actual thing you need this for!

#

And maybe try testing on something that doesn't need to be donated to the museum in future lol

ocean wave
#

STIMMING i forgot the tiger sliem exists for the item-

plucky mirage
#

i just wanted a distinct item to try on

#

doesn't this not working on diamond highlight a different issue/bug lol

ocean wave
#

is slime crate supposed to be like that

vernal crest
vernal crest
plucky mirage
#

alright i'll do corn then

woeful lintel
# ocean wave from 2.8.0 to 2.9.0?

you'll need to learn to read the log warnings/errors, make changes, and test by yourself spirit, or else you won't get better (also it's faster than waiting for people to validate every single thing you change). Trust what you make, and the tools that you use.

woeful lintel
ocean wave
woeful lintel
#

that's a modded item isn't it?

pale river
ocean wave
#

maybE? ill check

vernal crest
ocean wave
#

nope AINTNOWAY ill check what it is

vernal crest
#

Huh no it's in my game too but is invisible

plucky mirage
#

@vernal crest it's not working for corn either 🏚️

#

and this one i actually need lol

woeful lintel
ocean wave
#

oh so thats normal probably

vernal crest
#

My response is not to show it's working, by the way.

plucky mirage
#

what am i doing wrong

vernal crest
ocean wave
plucky mirage
#

yeah but this time it worked for you

vernal crest
#

No it didn't

ocean wave
#

but im getting better with it!! x3klee and thats what matters me thinks

vernal crest
#

That's not a text operation

#

However, I AM AN IDIOT

plucky mirage
#

oh yeah you replaced

#

instead of appended text

vernal crest
#

I have had the format for TextOperations wrong this whole time

#

(That still doesn't explain the diamond)

#

But still

plucky mirage
#

well diamond isn't in any cooking recipes that i know of so it doesn't matter to me personally haha

vernal crest
#

There is no "Entries" field

plucky mirage
#

i just don't want this to happen with items i actually need

vernal crest
#

Value and Delimiter are meant to be on the same level as Operation and Target

ocean wave
#

oh is hedge invisible normaly too? saw that as well

#

but thank you all STIMMING

vernal crest
plucky mirage
#

uhh like this?

vernal crest
#

No, you have accidentally broken your Target field

ocean wave
#

is that to me?

vernal crest
ocean wave
#

NOTED okay time to do the tiger slime egg thing then break to get food and class

vernal crest
ocean wave
#

NOTED ty aba

vernal crest
#

Waaaah it does work on diamonds too

#

I just managed to somehow also get that wrong when I was testing replacing the whole field

#

I should ban myself from helping people after 2am

#

At least I am being a good example to all the newbies by showing that you can know what you're doing and still make silly mistakes haha

plucky mirage
#

i cannot fix my formatting i'm tweaking

#

i did what you showed above and the formatting is broken

autumn tide
#

Aba go to bed SDVpufferwaaah

plucky mirage
#

bro you're a computer just find the missing bracket yourself 😭

pale river
plucky mirage
#

i can worry about that when i actually accomplish what i want lol

pale river
#

if u play on another language it wouldn't appear

plucky mirage
#

i am literally not even doing that, still at the stage where i'm trying to edit the description of an item to say what i want

ocean wave
#

Clueless cant find tiger slime egg in spring objects surely its not in cursors [im going to check btw]

lucid iron
#

Naw cp auto edit all languages default

pale river
ocean wave
#

oh its not there ok nvm

lucid iron
#

For assets that r like zh-CN suffix

#

You do need to handle _international yourself tho

vernal crest
hard fern
#

gesundheit

vernal crest
ocean wave
#

in game?

#

TheVoices i just closed it aough

vernal crest
#

Uh, no?

#

Like open Data/objects and find the tiger slime egg

ocean wave
#

..oh in finder im going insane

tiny zealot
#

lookup anything might tell you sprite index

hard fern
#

you can open the data file in your folder, not the game

tiny zealot
#

but aba meant in the data files

hard fern
#

tiger slime egg is near the bottom of the sheet with the other 1.5 items i think

vernal crest
plucky mirage
#

yeah and they're all highlighted properly 🏚️

#

but i used an online validator

vernal crest
#

It is sprite index 857

plucky mirage
#

i found the missing one

vernal crest
#

Forsy is correct about it being in the bottom right

plucky mirage
#

i cannot believe it

ocean wave
#

AHA ty guys

vernal crest
#

That all would have been SO MUCH FASTER if I had noticed I had the syntax wrong but we got there in the end

#

At least you got to experience some troubleshooting steps lol

plucky mirage
#

i will be accepting my Mod Legend role now, thank you

#

i'm just kidding

#

if i have the conditional in there now and it still shows i think it means the conditional also works

vernal crest
#

How am I even going to be able to sleep after this rollercoaster

hard fern
#

lol

plucky mirage
#

💔 ✌️

hard fern
#

only 6 hours

plucky mirage
#

(half of them spent finding missing brackets)

vernal crest
#

You may want to try reading the json tutorial Leroy linked before

plucky mirage
#

i have the "When:" in there and i still see the text

#

this is good yeah?

vernal crest
#

Because once you understand how the brackets work, you don't spend time guessing where they should be anymore

vernal crest
plucky mirage
#

i do know it

#

that means the conditional is working

vernal crest
#

Best way to test is to start a new save and spawn yourself some corn

plucky mirage
#

linebreaks work 🎉

#

"\n" is indeed valid

#

perfect, i was worried i'd have to improvise

#

is it possible to insert item images into these?

#

or any other symbols/formatting?

lucid iron
#

There's mr ape wingdings for some characters

#

Like + is SDViconskaterboi

#

You can also font smasher

tiny zealot
#

no freeform images though, except maybe go consult with the 12 mods that have transpilers on drawtooltip

plucky mirage
#

i know only about half of these words

#

you're saying i can use some symbols that will translate to icons?

#

like if i input a "+" it will be an icon in-game?

tiny zealot
#

yeah, the game supports some, although if memory serves it's not 100% consistent about applying them

lucid iron
plucky mirage
#

where could i find a list of these?

lucid iron
#

It doesn't work in non english

plucky mirage
#

yeah i know it does arrow if you try ">"

#

or maybe star idr

tiny zealot
#

if you want more symbols (emoji, etc.) you can use my mod which chu mentioned before https://www.nexusmods.com/stardewvalley/mods/38900
it's not completely drop-in, though, you gotta bring the glyphs yourself

Nexus Mods :: Stardew Valley

Allows Content Patcher packs to modify and extend some of the game's interface fonts.

plucky mirage
#

that would make the mod depend on it no?

tiny zealot
#

yeah it's a framework

plucky mirage
#

i'll just use these ig 🥶

#

who knows if this is even correct

#

since search results are bloated with AI now and it normally makes shit up

lucid iron
#

I don't think this has anything to with sdv

plucky mirage
#

no i mean these symbols exist in chat

#

idk if this will work on item descriptions

tiny zealot
#

that does look more or less right about the symbols but the instructions are bizarre so i'd believe genai was involved

plucky mirage
#

yyyeah

#

thanks google

lucid iron
#

Personally I'd say to not worry about it right now

#

Cus you just want a (has recipe) tag right

plucky mirage
#

i think this is good enough formatting for now

#

i doubt color/bold text is possible

plucky mirage
#
  1. list all possible recipes this is in (checks against vanilla list)
  2. if recipe discovered -> say what recipe (like the above)
  3. if recipe not discovered -> say "...and in other recipes you don't know" (smth like that)
lucid iron
#

As long as u r willing to hardcode the list of recipes it'll be fine

plucky mirage
#

i'm just not seeing anything to the likes of Else/If in the token list

#

but i haven't looked long

brittle pasture
#

if/else is just one block if condition true, one block if condition false

plucky mirage
#

yeah but wouldn't i need this for when player does/does not have a recipe discovered

#

or wait

#

by default i have certain text, but if i have a When, other text

#

i think i understand what you mean?

brittle pasture
#

there is a token for "knows recipe"

plucky mirage
#

yeah

umbral edge
plucky mirage
#

i am using it right now

#

actually no i don't think what i said above would work

tiny zealot
#

klip i hate to say it but this mod would be much easier to make in C#

plucky mirage
#

i don't know any C# 🥶 or any coding at all

tiny zealot
#

dynamically filling out what recipes an item is used in is exactly where using the SMAPI content api shines and using a declarative data format (CP) struggles

formal crown
plucky mirage
#

but i would still like to make this possible

#

i would be content with the result so long as it doesn't fuck up a user's game

#

as in, makes descriptions lag the fuck out of it or smth

#

i'm hoping this doesn't happen since it's just text

#

but i'm truly no modder

formal crown
#

Judging from the modpage, it might be intentional?

plucky mirage
#

can i just keep adding "When"s for more conditions?

#

how would i fulfill more than one

woeful lintel
#

read the token doc

plucky mirage
#

i am

#

this is all of it no?

woeful lintel
woeful lintel
plucky mirage
#

💀

#

i'm a fucking idiot bro ong

#

what working full time does to a mf

woeful lintel
#

the link I gave points directly to how do AND and OR conditions

plucky mirage
#

i clicked on your link and this is info i did not see previously

#

thank you

woeful lintel
#

np!

plucky mirage
#

ts is why i do manual labor 🕊️

#

what you linked is exactly what i was looking for lol

formal crown
#

Without C#, it sounds like it's going to be hundreds of json lines and maybe files, it's not impossible it's just going to take a lot of time and effort

#

Not to mention custom recipes/ingredients

plucky mirage
#

i don't intend to do custom recipes/ingredients

#

this is for vanilla (as in, no extra content)

#

i'm known to hyperfixate on stuff i want so i think i can do it

#

my last project i went through 6.7k discord messages manually and put specific messages in a google doc

#

it took 2 months

woeful lintel
#

I kinda want to make that in C# now because the thought of something like this made statically irks me

plucky mirage
#

i mean, i wanted to commission someone and nobody was willing to do it lol

#

it's fine, maybe i'll learn some valuable stuff

#

the thought of making my first SDV mod excites me, it's a feature i wanted since i started playing and never found

woeful lintel
#

If I don't have the energy to sprite edit tomorrow, I'll give it a shot in C#

plucky mirage
#

bro stealing my idea 🥀

blissful panther
#

Did you accidentally nerdsnipe a free commission? SDVkrobusgiggle

plucky mirage
#

nah i was actually excited to just make something of my own but if it can be made by someone competent that's probably better

#

there are a couple things that i wanted to have in there that are outright impossible with my method

lucid iron
#

I always thought it'd be a good addition to informant

plucky mirage
#

getting multiple conditionals to work and lowkey wishing i could bold text for better readability lol

#

actually if i change the phrasing a bit maybe it'll look less cluttered

#

"Used in Pizza." is just one line i imagine

heavy pewter
#

How can i check if a field was toggled by a specific method?

bool whateverField = false;

        void MethodA()
        {
            whateverField = true;
        }

        void MethodB()
        {
            whateverField = true;
        }
        
        void MethodC()
        {
            whateverField = true;
        }

Lets say i want to check/monitor if the field is toggled by MethodA?

tiny zealot
#

if it's really critical to know which method did it, i'm not sure you have any other recourse but to track it in a different field somewhere else. if you control the methods you would edit their code directly, or if you don't you'd harmony postfix them (i imagine).
are these vanilla SDV methods? do you really need to know this? (perhaps with more context some other solution is available)

heavy pewter
proud wyvern
#

not an answer to your question, but i find the want to remove Harmony patches baffling

#

especially if the alternative is an UpdateTicked event

ornate locust
#

@tiny zealot Heyyy mind if I have a word about Compatibility Stuff? Apparently Pelican Town Municipal erases Lacey's stall in the fair, and the compatibility would be super easy to fix on your end and more complicated on mine.

#

"Priority": "Late + 10"
it just needs something like this on the Y1 fair stall

tiny zealot
#

i can also move the stall if needed, but it's difficult to find spots so i'd prefer not to do that

ornate locust
#

Oh you don't have to move it, it fits fine where it is

tiny zealot
#

oh are you just overwriting the terrain?

ornate locust
#

Patch layering is just eating it and it's easier to load later than it is to load earlier, but only earlier than one thing

#

Yeah, making sure your overlay goes after my replacement is enough to make it work

tiny zealot
#

oh okay yeah that's simple enough. i can do that. thanks!

#

(no word on when i'll actually update though. dev branch is a bit of a mess rn)

ornate locust
#

Fine with me. Just wanted to make sure I wasn't eating her stall!

tiny zealot
#

vanilla map, right? (i move the stall for SVE)

ornate locust
#

Vanilla, yeah. I can check to make sure it doesn't affect SVE too though

heavy pewter
tiny zealot
ornate locust
#

Yeah SVE's is well away from my building, so just vanilla

proud wyvern
#

my point is that UpdateTicked is just something that's gonna run every frame, whether it's needed or not (how often would your code run normally? once per in-game day? maybe several? compared to the sheer amount of frames in a day), so it's a performance hog
and just doing similar things the usual methods do is a recipe for incompatibility with other mods that want to do their things around the same areas of the game's code

#

this is something i wildly disagree on, compared to, say, Pathos, lol

heavy pewter
#

Ofc im not gonna use it to fire my logic every tick, its just for state monitoring, just to catch if this fields are being set to true or false, but theres like gazillion of methods who touches this fields thats why i asked earlier if theres a way to determine which method touched this field

proud wyvern
#

but yeah, this is just my opinion, i'm gonna shut up and let others help

tiny zealot
#

(i am closer to shockah than pathos on this issue as well, fwiw. i frequently "complain" about smapi's warning that a mod is using harmony)

calm nebula
#

I will say if you find the StackTrace api....dont do that lol

#

StackTrace is not reliable if the compiler decides on inlining

proud wyvern
#

that would be worse than UpdateTicked by itself, like, 1000x haha

#

not only unreliable, but also slow as heck

mortal blade
#

Is there an event for when you start/stop sitting? Or do we just have to poll the sitting flag?

tiny zealot
#

straight back into change monitoring versus harmony patch /lh
no event afaik so you would choose one of those two approaches

#

or if "knowing when farmer is sitting" is a proxy for something else maybe there's another solution

calm nebula
#

There's always netfields!

tiny zealot
#

oh true that might be a netfield and have a change event

calm nebula
#

(I am not at home so I dont know if netfields help here)

#

Tbh even if i was home I wouldn't know if netfields help here

tiny zealot
#

i am in my own weeds and not consulting my decompile at this time (but i am switching over to discord periodically)

brittle pasture
#

see, Storm would have had that event

calm nebula
#

I dont care about shit that doesnt exist

#

this is why I dont care about atracore

mortal blade
lethal geyser
#

Hi! I'm making a lil mod and cannot for the life of me figure something out - I'd appreciate the help of more experienced mod authors. When an NPC is gifting an item to the player through dialogue, is it possible for them to gift multiples of the item? e.g. giving a stack of 10 wood instead of a measly 1? What would the format of this look like? Thanks in advance.

urban patrol
#

how are you doing it now? addItem?

brittle pasture
#

the [] syntax doesnt support it, but you can use $action with the AddItem command

#

[[Modding:Dialogue]] (see the $action command)

brittle pasture
#

[[Modding:Trigger actions]]

lethal geyser
#

okay, I'll look into the other options you provided. really appreciate these responses!

lucid iron
rotund plume
#

Quick ask, is anyone aware of prominent SDV-E NPC house mods or events, festivals, etc that use any of these areas? Im scouting spots and dont want to run into issues later.

#

the red box isnt the location but just the general area in front of farmer

ornate locust
#

That little pond area can be a problem if someone doesn't use SVE because there's trees and a secret in there

rotund plume
#

but if I want only sve compatibility, would it be safe? I do know of the secret

lucid iron
#

I think image 3 is fleurine's house

rotund plume
#

the 2 cherry blossom trees?

lucid iron
#

But honestly i wouldn't worry about this beyond where house goes

#

You can always temp map go brrr for events

#

And sve perms say u can include a copy of forest.tbin in your mod if u want

rotund plume
lucid iron
#

Events let you use temporary locations whose only data is the map given

ornate locust
#

I don't know for sure about anythinge else in those areas, I was just pitching in with the one thing I do know.

lucid iron
#

It means you can stage event stuff against SVE forest (no additional mods) if you want

rotund plume
#

ohhhh ty

lucid iron
#

I don't think it's realistic to be compatible with every mod out there so best to just make it all work in your personal mod list

#

And maybe do compat if someone asks nicely

rotund plume
#

I know there will be conflict somewhere but I didnt want to yeet it from a well known modder and have it not be usable at all by anyone who uses theirs

ornate locust
#

I understand wanting things to be very compatible, but I also had someone say I had the biggest compatibility section they'd ever seen in a mod, so maybe I am a gremlin

lucid iron
#

Midnight when i made my first mod i literally searched for every "sprinkler" mod out there and packed their api if they provided it

#

My policy now is compat on request if it's easy Sleepden

ornate locust
#

I got my start modding by specifically trying to make a bunch of things compatible

brittle pasture
#

there was a period of two months where i went insane because my (unreleased) mod would not be compatible with the 12 autoplanting mods out there

ornate locust
#

but also the kind of compatibility I'm doing is like... map changes and dialog references, API compatibility sounds scarier

brittle pasture
#

i've since decided to say "no, you can't enchant seeds, because uuh the elemental essence comes from the soil itself"

rotund plume
#

this server is so helpful SDVpufferwaaah ive been drowning in reading and trial/error for weeks

ornate locust
#

(I say this, but for compatibility and festival reasons, my ramps have 72 map patches and a couple thousand lines in content patcher choosing which one to use when)

#

sometimes you just black out and then you have n ungodly number of map patches with compatibility for a bunch of mods, I dunno, it just happens

summer spoke
#

Right. I took a couple days away and now I'm back and ready to keep going!

lucid iron
#

The pain in the ass stuff is harmony patching other mods

brittle pasture
#

khloe also went on an arduous odyssey to add BGM compat to every mod that touches the menu, and it was an exceedingly commendable effort, but even then it's only about 70% successful

#

reasons include: closed source, author is MIA, closed source and author is MIA, etc.

#

(pls, people, make your mod source available if nothing else)

urban patrol
#

oh speaking of i wanted to ask: on smapi.io my mod shows as no source, but it’s on github with MIT license

#

how can i tell smapi it’s there

brittle pasture
urban patrol
#

thanks!

lucid iron
#

You probably didn't have link on initial publish or you published while the data collection was broken

#

Also only C# mods go on here

urban patrol
#

where does it usually get it from? the manifest?

lucid iron
#

Nexus mod page link

brittle pasture
#

description scraping SDVpufferwoke

urban patrol
uncut viper
lusty halo
#

Just shaved off -196 lines of code from the json of the first mod I updated with the new Patchmode: Mask option. Feels like an early spring cleaning. So nice. SDVpufferuwu townInterior you aren't a bother anymore. SDVpuffertriumph

#

Still have to finish the spritesheet rearranging and all the other mods, but it'll be worth it.SDVpufferchickcool

summer spoke
#

Can I share the content I made so far to see what I'm doing wrong? I keep trying to warp from the Bust Stop to the Hospital, but they don't go to the points where I need them, and Harvey and Maru aren't showing up at all.

devout otter
ornate trellis
urban patrol
summer spoke
urban patrol
#

no, look closely at what i sent. the warp command doesn’t take a facing direction

summer spoke
#

Oh, okay, I see now. Sorry about that. Thank you. I appreciate the patience

urban patrol
#

no problem. if you look in the console and see red when testing your event, it'll usually tell you exactly which commands are failing, and then you can double check that you've formatted them correctly against the wiki

summer spoke
#

Yeah, unfortunately the problem with that is that they're so close together that it can be kind of hard to read for me.

#

Sometimes when there's more than one that is

urban patrol
#

would putting it into reader mode help, maybe? i know a couple people do that for accessbility reasons

summer spoke
#

there's a reader mode?

urban patrol
#

on firefox (and probably other browsers) you can click a button to strip out CSS or style stuff and just have plain text

summer spoke
#

I'll definietly look into that, thank you

urban patrol
#

on firefox desktop it's here next to the star

ivory plume
# urban patrol where does it usually get it from? the manifest?

It checks the manifest update keys, mod page descriptions, and (for CurseForge) source URL field. This also happens retroactively; if you add a GitHub link later, it'll be auto-detected during the end-of-month update. (Feel free to update PRs to update data sooner though.)

urban patrol
#

oh good to know! it's not an emergency and i feel much safer updating the mod page than sending a PR so i'll just do that lol

summer spoke
#

How do I put someone in one of the beds? Like how we go underneath the covers to sleep for example.

hallow prism
#

i don't understand the question

summer spoke
#

Okay, so my event has the farmer finding an injured child and takes them to Harvey where they'll sleep for another event or to until they wake up. But I don't know how to put them inside the bed itself

#

Or, rather, under the covers

ornate locust
#

Do you have a bed where your NPC is not going under the covers? Because generally the covers are on a front layer so it just... goes over the NPC

#

oh, one of Harvey's, hm

#

I don't think his beds are set up to be used, might have to do extra work there

urban patrol
#

if it doesn't happen automatically, you can just changeMapTile as long as you remember to change them back at the end of the event

summer spoke
#

changeMapTile? Is there a wikipage for the specifics?

#

granted there's a wikipage for everything so that's a dumb question, sorry

urban patrol
#

it's an event command

ornate locust
#

The tiles don't line up right for that though

#

I'd recommend looking at East Scarp's events for Jasper. One of them has him in the hospital bed. And it basically glues this over the bed:

#

because the blanket on the bed is not in a position where you can just stick it over the NPC, the top goes onto the next tile

summer spoke
#

Maybe make a sprite and layer it on? I don't think the game uses the bottom bed

ornate locust
#

Outside of the event, you'd use something like a schedule animation and offset, I think. One that's something like that, offset onto the bed

#

or you can temporarily replace that bed with a map patch with one that has your NPC in it

#

Unfortunately, those are the most awkward beds to do it with. Other beds, you just put the blanket part on a front layer and it just works

#

because of this, the blanket extending onto the pillow tile

summer spoke
#

I did not think it would be this complicated. Would it be easier to just change the event itself?

#

Maybe have the kid be a guest at the farmhouse instead?

#

Or something. I'll think on it, see what I can do to make it work

#

Thank you

hallow prism
#

arg, if i want to add something to friend and family conditionally i will likely have to deal with target fields

#

again

autumn tide
#

cmonnn embrace the madness

ornate locust
#

I love target fields, that's how I do event crimes

autumn tide
#

ooh now i gotta learn about target fields for further criminality!

ornate locust
#

it's not a big crime, but it's nice to be able to stick your character into a vanilla event without breaking other mods to the event

#

and things like that

autumn tide
#

hmmmmmm interesting

ornate locust
#

And I added a CT to Morris getting punched that way

#

Like I want Bill to show up to Leah's art show?

        {
            "LogName": "Bill Attends Leah's Art Show",
            "Action": "EditData",
            "Target": "Data/Events/Town",
            "Priority": "Late + 100",
            "TextOperations": [
                {
                    "Operation": "Append",
                    "Target": [
                        "Fields",
                        "53/e 55/t 1500 1700",
                        2
                    ],
                    "Value": "{{ModID}}_SheriffBill? 28 56 2",
                    "Delimiter": " "
                }
            ]
        },```
bam, he's there
#

Field 2 is always placing people in the event, always, so appending to it with the space delimiter will tape a NPC onto the event

hallow prism
#

hmm

#

    {
      "LogName": "Editing Friend and family",
      "Action": "EditData",
      "Target": "Data/Characters",
      "TargetField": [
        "GavinPommerelVMV",
        "FriendsAndFamily"
      ],
      "Entries": {
          
          "Clint": {"Clint": "",
          }
      },
    },```
[Content Patcher] Can't apply data patch "Lumisteria - Visit Mount Vapius > Include Assets/npcs/Gavin.json > Editing Friend and family > entry #1" to Data/Characters: failed converting entry to the expected type 'System.String': Error reading string. Unexpected token: StartObject. Path ''..
#

i'm not sure i saw this error before

ornate locust
#

That doesn't quite look right, one sec

urban patrol
#

i think you went down too far in Entries? vanilla has it as

  "Caroline": "[LocalizedText Strings\\Characters:Relative_Mom]",
  "Pierre": "[LocalizedText Strings\\Characters:Relative_Dad]"
},```
ornate locust
#

And it would be blank for just a friend

urban patrol
#

after "Clint": it expects a string

ornate locust
#

it doesn't necessarily need a string, blank is fine

hallow prism
#

blank is fine

urban patrol
#

but right now it's an object

#

it needs a string

hallow prism
#

i'm not sure what you mean about too far down

#

blank works when i don't do target field

ornate locust
#

Blank works

urban patrol
#

{
  "LogName": "Editing Friend and family",
  "Action": "EditData",
  "Target": "Data/Characters",
  "TargetField": [
    "GavinPommerelVMV",
    "FriendsAndFamily"
  ],
  "Entries": {
      
      "Clint": "",
  },
},```
#

i think it wants this

ornate locust
#

Yeah, that's right

#

Sorry I know there's a mod that does this and I'm trying to dig it up as an example, but I think there's an extra clint in there

hallow prism
#

hmm, i will test, but sometimes it doesn't like if you put stuff directly

#

you need a sort of key/id

#

althought i can't tell if it's always needed, so i will try that

ornate locust
#

FOUND IT

hallow prism
#

ok, it seems to be working, must be a question of format expected but it's the kind of stuff i have trouble remembering

ornate locust
#

Ah, cool. I have another way to do it if that didn't work

hallow prism
#

i'd be interested to see, some may be more intuitive

ornate locust
#
            "Action": "EditData",
            "Target": "Data/NPCDispositions",
            "Fields": {
                "GavinPommerelVMV": {
                    "9": "Clint ''"
                }
            }
        }```
East Scarp's rival hearts do this to set a relationship for someone after they start dating, I just changed it to match. The 9 may be different depending on how you set up your character info, you'd have to count down to the line Friends and Family is on
urban patrol
#

would the stuff under fields be the same updated for 1.6 though?

ornate locust
#

I don't know if it's more intuitive, I just know it didn't throw that error

#

hm, I did just notice it uses "NPCDispositions", I think it should be characters

hallow prism
#

thanks! i think i'll use nic's version for now

ornate locust
#

Probably for the best.

#

maybe I'll pop mention of that over to Lemurkat, might be breaking quietly or something

winged finch
#

Hey

#

so I

#

tried to refactor one of my old mods, and when I launched the game from Visual Studio my laptop nearly died

#

I'm not really sure if I anyone had any similar.... things happen

gentle rose
#

yeah, the debugger is more intensive than the game on its own, my pc also struggles

winged finch
#

I launched just with Smapi