#making-mods-general

1 messages · Page 337 of 1

topaz canopy
#

I see, I still had the problem that the sell price of the object didn't change until I used IgnoreShopPriceModifiers, I'll look into changing the shop entry, thanks!

uncut viper
#

(what Lumina said is also correct too, existing items dont usually change after edits. spawn new ones during testing always)

#

once an item is spawned, its data is saved on the item itself. it no longer gets most of its data from Data/Objects

#

so anything that changes in Data/Objects will not affect existing items

topaz canopy
#

So for example the turnip seeds have a price of -1 in the shop entry, I assume that the final price in that case is the Price * multiplier but if I change it the buy price will be the one I wrote?

languid matrix
#

One question: What happens when you make the "Price": field of a modded item a negative number?

#

Does it take away from your profit or snap to zero?

jaunty shuttle
#

You enter the matrix

languid matrix
round timber
#

it takes more than that to crash the game i think

jaunty shuttle
#

Only one way to find out

sand wigeon
#

Does anyone know how I coud make the condition for a shop item to appear be achieving a specific skill mastery? For context i've made a custom shop that sells trinkets among other things, but I'd want those to only to appear when the player actually has the combat mastery.

brittle pasture
#

you can check that they have the anvil recipe

sand wigeon
#

Oh, I hadn't even considered that kind of method. Thanks

lucid iron
#

I think u want to check the stat instead

#

PLAYER_STAT Current trinketSlots 1

#

There's also
PLAYER_STAT Current mastery_4 1

brittle pasture
#

stat is probably better with the caveat you can only check the current player's

#

which of course is 99.9% of the time the case

#

I suppose you can make a mod that gives players the anvil recipe ahead of time

sand wigeon
#

I had looked at that wiki page, but I couldn't find the trinketSlots or mastery stats there. Thanks though, I should be able to get it working one way or another

calm nebula
#

Tbh the game just Does That sometimes

still hull
#

Have we heard from Flashshifter at all about Castle Village since he did his big interview?

sand wigeon
brittle pasture
#

yes

#

You can look at Data/Powers.json to confirm

sand wigeon
#

Alright, thanks again

digital pumice
#

hey all new here 🙂 just trying to figure out content patcher and hit a stumbling block - how could i trigger an event during a custom festival when the player interacts with a specific tile (added in tiled)?
the event would basically be them receiving an item with a message
i've tried adding PlayEvent <eventName> and adding the event to the location the festival is in (Town), as well as Temp which is what the debug mod says, but no luck 😦

urban patrol
digital pumice
urban patrol
#

actually i’m not sure you can trigger an event inside of an event, since that’s technically what festivals are. let me poke around and see unless anyone else knows

#

you could switch event but i don’t think that’s what you want

#

try looking at how the luau is set up?

balmy valve
#

Hi! Another question re: festivals. The festival layouts change based on even and odd years, and so do the NPC positions. How do I make my custom NPCs do the same and change their event dialogue depending on the year? (Example: On odd years at one of the festivals, Alta stands next to Marlon. Marlon says "despite my bad leg i still never miss a festival," and Alta says "i can't say the same, but you've lived with it for longer than I have." On even years, though, she looks like she's hallucinating a conversation.)

half tangle
#

!npc

ocean sailBOT
#
Creating a Custom NPC

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

balmy valve
#

Second question: how add dialogue for specific gifts? like if you give seb an obsidian he's like "ima see if i can shape this into a dagger"

half tangle
#

@balmy valve Tiakall's tutorial explains festivals

digital pumice
round timber
half tangle
#

actually Tiakall's tutorial will probably tell you all of what you're seeking SDVpuffersquee

balmy valve
#

THANK YOU <3

balmy valve
urban patrol
lucid iron
balmy valve
#

So I have a character that gives you an exclusive family recipe at the end of her 10 heart event, it's an empanada. Can I code in an easter egg where if you give her an empanada before seeing her 10 heart event, she treats it as a hated gift and says something like "you sneaky piece of crap!"

#

Actually

#

Nvm

#

Considering there's no way to get an empanada without cheating

lucid iron
#

The trinketSlots stat is special in that if you set it, the player will get the slot and start getting trinkets

round timber
#

you could but it is a bit of like "but why"

lucid iron
#

What if i give empanada from different mod then yggy

#

But yeah u can actually do this if desired, just have a RejectItem_ line conditioned on not seeing the event

balmy valve
lucid iron
#

Yeah i mean like it's odd to get reaction like this

#

If it was something more specific to ur mod then it would be fun easter egg

balmy valve
#

imagine you have an extra food mod that adds empanada and Alta mentions she's been trying to recreate her mother's empanada recipe and you're like "Oh! I have one! Here, maybe try this?" and you give her a nice soggy empanada that's been sitting in an unrefrigerated wooden box for 3 years and she insults your bloodline and decapitates you

#

She actually does insult your bloodline if you say you can't handle any spicy food, but it's done very lightheartedly

lucid iron
#

Hm so to do that u need to track "staleness" and also force a death

#

I guess it would also bump rating of mod to R perhaps

balmy valve
#

NOOO

#

No it was joke

#

i dont want to do that

#

I've been calling this the Altagracia Mod so far, but i think I might change the mod name to Ctrl+Alt+Zero because it sounds cute

#

Dang it I should've only added Alta and four fairies so I could call the mod Alt+F4

#

luckily i only use mod id in my content.json so 😎

lucid iron
#

You are in the channel where there's only sauce and narrative is an afterthought

#

We did have creative writing thread tho

round dock
#

Still do dance_pooh

coarse dune
#

is there a quick way to find every instance of a certain object/item in the spritesheets (pumpkins & jack-o-lanterns in this case, i'm replacing them) or do i just have to manually look through all of the images and make a list of the ones i need to edit?

urban patrol
#

i think there should only be a few locations? crops, spring objects, and maybe whichever sheet has furniture

coarse dune
#

i've found those + fall town and hats, but i'm worried that there's a hidden pumpkin that i'm not gonna catch but my friend will when she plays emoteSweatingStressed

#

i keep thinking i've found them all and then bam, another pumpkin i didn't notice before

round timber
#

i think thats the best u can do for a project like this

coarse dune
#

fair enough
at least i have ctrl+f for the scripts

idle lantern
#

event_id Jierishi.Rahiel_LampUnlock
[Event Lookup] An event with ID Jierishi.Rahiel_LampUnlock does not exist

I can spawn the event with debug ebi, but I can't get it to trigger as 'seen', to continue modding

round timber
#

from the wiki:

idle lantern
#

ty! I went back to an older format, since I was able to get that working for a Marnie mod. Once I get this one working, I'll try migrating the names again to the 1.6 format

"977001/f Evelyn 0/r 1/y 2"

#

or I'll throw hands with my computer

lucid iron
#

Tbh i don't think old style id make difference here

#

Game sees string either way

urban patrol
idle lantern
#

I thought that was aa template. That'd make things easier

urban patrol
#

yep it’s a CP token built in :)

#

when people say things like YourCoolModName that’s a template, but the double {} is a token

idle lantern
#

I wish I knew what I was doing incorrectly. I can't get this event to trigger naturally, even with the conditions removed

urban patrol
#

but it’s triggering when you do debug ebi?

idle lantern
#

Yes

brittle pasture
idle lantern
#

but if I run event_id or anything like that, it doesn't show up

#

and it doesn't appear under Evelyn's Event logger either

urban patrol
#

hmm

#

and no errors in log i assume

idle lantern
#

No

urban patrol
#

can you send your json

idle lantern
#

I'm looking at a Mr Qi romance mod that was updated a week or two ago, and they have events within the Club. I made an empty .json for the mod to load, which finally let me get the scene to go

#

it can't be the difference between Data/Events/Club and data/events/Club can it?

urban patrol
#

fix it and see? idk how the game handles capitalization

idle lantern
#

nope

round timber
#

capitalization is handled differently by the different OSs so it should match regardless

idle lantern
#

even after restarting smapi altogether, just in case

urban patrol
#

i’m not familiar with that mod unfortunately

idle lantern
#

I'm going to move th elocation to seedShop and test

uncut viper
idle lantern
#

Adding priority low to the load Club blank json made it spawn naturally in the Club, finally. Now to try adding the conditions back

languid matrix
#

How do I add a recipe to the Queen of Sauce TV Channel so that the player can actually cook the stuff I added?

brittle pasture
#

I dont think without c#

round timber
#

there are other ways to add recipes though in case you werent aware

languid matrix
round timber
#

put it in a shop, send it in a letter from an npc

idle lantern
#

NPCs can send the recipe in the mail

round timber
#

learn it in an event

languid matrix
brittle pasture
#

or even just have the farmer magically know it when starting the game

idle lantern
#

there's a mod that adds Queen of Sauce recipes to Gus' shop. might be a place to look

brittle pasture
#

[[Modding:Shops]]

timid onyx
#

Anyone recognizes this font? It's the font I had in Notepad++ by default (even though Google says the default is Courier New?) and somehow updating LibreOffice changed it and I want it back

round timber
#

i wouldnt know the specifics but you could check out that link selph just sent

idle lantern
#

Pasting code in regular notepad, and then back to Note++ does it for me. Sometimes my "s will get weird when using json checkers because of fonts

brittle pasture
#

to make it a recipe set the IsRecipe field to true
it's part of the "common fields" section

idle lantern
#

I thought this sprite was wearing boxing gloves for a hot second, and got very confused

manic shoal
#

Can you use either dynamic or local tokens to essentially make a list of possible values for a token?
I would like to have a token that's named, let's say, "outfit name" and list all the names I'm using for portraits and sprites. Spring, Spring_Weather, flower dance, Summer, etc.
Then when I need to target all my files, I could do "Target": "Portraits/{{Portrait Mode}}/{{outfit name}}.png" (and repeat almost the same thing for sprites) instead of having to do "Target": "Portraits/{{Portrait Mode}}/Spring.png, Portraits/{{Portrait Mode}}/Spring_Weather.png, Portraits/{{Portrait Mode}}/flower dance.png, Portraits/{{Portrait Mode}}/Summer.png" etc. And then have to repeat all of that but with sprite instead of portrait.
This would also (hopefully) mean that when I add a new outfit, I would only need to add the name of the outfit to the list.

uncut viper
#

the content modders yearn for the foreach

lucid iron
#

Ah yes the yearn o foreach

#

Your usecase doesn't really need a foreach tho just arrange your patch in a include

#

And then local token that include

manic shoal
#

So I would have to be using "Action": "Include" instead of "Action": "Load"?

#

Do I need to copy and paste the same local token list at the end of my patch to include sprites and the one for portraits?

elder swallow
#

Hey guys, sorry to interrupt, but im trying to add a new custom NPC to the game but I have no previous modding experience and I have no clue what Im doing lmao. Ive already done most of the sprite work for a very basic character but if anyone could help me understand the coding, or share any guides, it would be much appreciated 🙏

lucid iron
#

So i get to reuse these patches without writing out whole thing 3 times

ocean sailBOT
#
Creating a Custom NPC

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

manic shoal
#

Thanks for the help and the files for an example. I will take a look at that!

elder swallow
languid matrix
#

Also, is it possible to have the travelling cart sell modded items in its random pool to pull from?

brittle pasture
#

yes, it's a shop in Data/Shops like others

languid matrix
brittle pasture
#

the traveling cart does use @randomSale but it only chooses from vanilla items

#

you need to yes

languid matrix
#

Okay. Thanks for the information :3

idle lantern
#

[Event Lookup] Location: 22 Farm, ID: 103042015
[Event Lookup] Event seen: False
[Event Lookup] Conditions:
[Event Lookup] satisfied: e 295672 (Must have seen these events)
[Event Lookup] satisfied: t 600 700 (Between 6:00am and 7:00am)
[Event Lookup] satisfied: H (No further Information)

Any idea what that 'H' condition is?

gentle rose
#

"not host" in the old syntax iirc? but check the wiki

urban patrol
idle lantern
#

aha!

gentle rose
#

or maybe not? I have no clue tbh

gentle rose
#

it's "yes host", I was close SDVpuffersquee

idle lantern
#

you're right. I didn't think it was about multiplayer. I was checking farther up

brittle pasture
tawny ore
brittle pasture
#

there's the catalogue, which gets every furniture item not marked with ExcludeRandomSale

urban patrol
#

yeah. i was wondering what the use case would be for using ExcludeRandomSale

gentle rose
tawny ore
#

Yeah you didn't technically present mutually exclusive options. Unless a third option was (host || !host) && ??

idle lantern
#

Y'all, it's a miracle

urban patrol
#

congrats! what was the issue

idle lantern
#

I had to give up on using the RustyKey as a trigger, and spent a few hours finding the actual event id for Gunther's rusty key event itself

#

in the vanilla game, it says 66/ . It was not 66.

manic shoal
#

Okay, I think I am getting a better understanding of how local tokens work. I notice that in the example mod that there are three separate entries (patches? What's the right terminology?), each with it's own value for the local tokens.
So I am assuming that it would not be possible to combine multiple values into a single entry. For example, something like this wouldn't work:

      "Action": "Include",
      "FromFile": "data/opossum-hire.json",
      "LocalTokens": {
        "L@Vendor": "AdventureShop,Dwarf,VolcanoShop",
      }
    },```
Is it accurate to say that I would still need a separate entry for each separate value that I want to use as a local token?
lucid iron
#

Yep u need 3 Include patches

#

Or however many u have

#

You are still saving a lot of repeats especially if u ever want to change shared info

manic shoal
#

Yes, it's not exactly shorter, but feels less messy and it'd be way easier to change things.

lucid iron
#

If the proposal for multi includes ever get made, refactoring over is easy AquaThumbsup

#

But for now it dun exist

urban patrol
#

i have an item i've created of fairies in a jar. i wanted it to be placeable as decor, so i made it furniture, but there's no description. can i make it an object instead and give it the context tag placeable?

calm nebula
#

I doubt it

lucid iron
#

you can use 🌌 spacecore 🌌

#

if you make it an object you can just place it on a table

urban patrol
#

:O i love that 80% of the time i come in here with a problem, the solution is spacecore

urban patrol
#

i was looking at the decorative bowl for an example

lucid iron
#

baubles adds like

#

invisible tables lol

#

so that their objects can be placed in more spots

#

personally i think if u dont have to make something furniture, dont.

urban patrol
#

sick okay i'll make it an object instead

lucid iron
#

and to clarify if you did use spacecore, you can override furniture description

urban patrol
#

okay cool

lucid iron
#

we do tend to recommend solutions that r more commonly installed

#

like if someone wants tile action on furniture i'd rec spacecore before i rec my own mod that happens to also do that kyuuchan_run

urban patrol
#

to be clear i wasn't being sarcastic, i genuinely love that spacecore has so many functions and that you all know them off the top of your head <3

#

now to figure out how to implement interacting with objects... gotta make my completely random 8 ball

#

anyone know a vanilla example of a useable object?

lucid iron
#

no cus they dont exist BOOM

urban patrol
#

ah.

#

closes Objects.json

lucid iron
#

this is also a spacecore thing, you may use object extensions to raise a trigger

urban patrol
#

and i would put that in custom fields, right?

lucid iron
#

no its a custom asset u gotta edit

urban patrol
#

oh ok

#

oh wait i already did this for something else the other day, i remember

half tangle
#

manifest builder question... how do I stop it from including old data? For example, my csproj only has one UpdateKeys line but the built manifest includes both the actual key and the old placeholder -1. It's also including in the built manifest an old dependency that no longer exists in my csproj and furthermore not marking the actual (or any) dependencies as required despite my telling it to do so.
In a PropertyGroup:
<UpdateKeys>Nexus:28256</UpdateKeys>
In an ItemGroup:
<PackageReference Include="Leclair.Stardew.ModManifestBuilder" Version="2.4.1" />
Later:

  <ItemGroup>
    <SMAPIDependency Include="focustense.StardewUI" Required="true" />
    <SMAPIDependency Include="pneuma163.WorldNavigatorCP" Required="true" />
  </ItemGroup>

The manifest ends up with the following plus the incorrectly created dependencies:

  "UpdateKeys": [
    "Nexus:28256",
    "Nexus:-1"
  ]
mystic plover
#

I'm still not able to get default color working for my Fashion Sense hat. I've tried everything I can think of... SDVpufferthinkblob

half tangle
#

(and to be clear, I have completely deleted the mod in the Mods folder to allow it to create anew)

calm nebula
#

Do you use <BaseManifest>..\base_dependencies.json</BaseManifest>

#

BaseManifest

half tangle
#

nope

calm nebula
#

The thing is that the manifest builder reads from the manifest to update it

#

So that will cache old data there

#

I use BaseManifest to have clean ones

half tangle
#

alright, so turns out I did have a lingering manifest.json that I'm guessing it was pulling from, so most of this is all cleared up

One problem remains: it is not marking my dependencies as required

calm nebula
#

Required is default

half tangle
#

oh

#

right... yes, I did know that at some point...

#

thank you SDVpuffersquee

calm nebula
#

Anyways. Recommend using a BaseManifest to avoid the issue in the future

half tangle
#

That seems counterintuitive to me... in the hypothetical case with a mod that I make, if I change something in the manifest, it sounds like BaseManifest keeps old data around rather than replacing it. From the docs: "the generated manifest will use default values from a file"
Maybe I'm misunderstanding its use, though

calm nebula
#

It's the other way around

#

If you don't use BaseManifest it reads the existing manifest if it exists

#

If you use BaseManifest it won't read from the same place it writes to

half tangle
#

Oh, gotcha - I do follow that logic now

half tangle
#

I have now added <BaseManifest>new</BaseManifest> to the file. That's convenient.

lucid iron
#

is there a token for current locale

uncut viper
#

{{Language}}

tiny zealot
#

{{Language}} will give you the two-letter code like en

#

but not the whole locale

lucid iron
#

hmm

#

see i was trying to think if i can make loading i18n better

#

tis fine ig blobcatgooglyblep

{
  "Action": "Load",
  "Target": "{{ModId}}/i18n",
  "FromFile": "i18n/default.json",
  "Priority": "Low"
},
{
  "Action": "Load",
  "Target": "{{ModId}}/i18n",
  "FromFile": "i18n/{{Language}}.json",
  "Priority": "Medium",
  "When": {
    "HasFile: i18n/{{Language}}.json": true
  }
}
tiny zealot
#

"HasFile: {{FromFile}}" works btw

lucid iron
#

alas i dont think tokens work in target locale

tiny zealot
#

well, if it helps you i do almost this exact thing for lacey's language overlays

    {
      "LogName": "Fair hat stall language overlay",
      "Target": "Maps/hatmouselaceyStall",
      "Action": "EditImage",
      "PatchMode": "Overlay",
      "FromFile": "assets/locale/stallText_{{language}}_{{RecolorPalette}}_all.png",
      "ToArea": {"X": 0, "Y": 48, "Width": 48, "Height": 16},
      "When": {
        "HasFile:{{FromFile}}": true
      }
    },```
lucid iron
#

i am debate if i wanna be extra and use LocalizedText for a building mod im converting kyuuchan_run

#

theres really zero point to it cus no events or anything supporting direct keys here

#

ok i think ill keep it simple cus not me mod blobcatgooglyblep

urban patrol
#
    "Id": "{{ModId}}_8BallUsed",
    "Trigger": "spacechase0.SpaceCore_OnItemUsed",
    "Condition": "ITEM_ID Target {{ModId}}_Magic8Ball",
    "Actions": [
        "spacechase0.SpaceCore_ShowHudMessage \"{{Random:It is certain, It is decidedly so, Without a doubt, Yes definitely, You may rely on it, As I see it yes, Most likely, Outlook good, Signs point to yes, Ask again later, Better not tell you now, Cannot predict now, Concentrate and ask again, Don't count on it, My reply is no, My sources say no, Outlook not so good, Very doubtful}}\" (O){{ModId}}_Magic8Ball"
        ]
},```

should i be using Target or Input in Condition?
lucid iron
#

i think it is Target but only spacecore docs can tell u

#

also this is a prime case of i18n random

#

recommend doing {{i18n:Magic8Ball.Message.{{Random: 0, 9}}}}

#

or however many message u got

urban patrol
#

all it said was "use item GSQ conditions to check the right item" in spacecore docs

lucid iron
#

im gonna guess Target

#

Input is usually just Machines

lucid mulch
#

very easy to just test

urban patrol
#

i was asking because neither target nor input worked lol

#

i do know it's triggering because whenever i put anything but Target or Input in there, i get an error message that it has to be one of those two

lucid mulch
#

taking a glance it looks like input would be correct

#

target item is usually outputs

lucid mulch
urban patrol
#

hmm then do you know how i would test it? like to identify which part is going wrong

lucid mulch
#

and I'm assuming you have checked for typos on {{ModId}}_Magic8Ball vs the entry in ObjectExtensionData (and Objects)

urban patrol
#

i'll go check now

lucid mulch
#

and that your modid doesn't contain spaces

urban patrol
#

-_- typo indeed

#

god

#

okay i successfully got one of the messages!

#

only once though, continuing to use the item doesn't appear to trigger it again?

lucid mulch
#

trigger action needs to be set with the flag to stay active or whatever

#

by default trigger actions run once and then set metadata in the save to never trigger again

urban patrol
#

ohhh makes sense

#

you're a lifesaver

manic shoal
#

Ugh, trying to learn the appearance system is literally giving me a headache. (I am slowly figuring it out but I needed to vent a little to someone.)

urban patrol
urban patrol
manic shoal
urban patrol
#

i was actually talking about this one, although maybe you don't want it for seasonal reasons, so never mind https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_Seasonal_Outfits_via_Appearances

Stardew Modding Wiki

If you want to add seasonal outfits for your NPC, there's two ways you can do this: the token way or the Appearances way. Appearances is a new code structure added in SDV 1.6, so if you're looking at an older NPC's code for reference, they'll most likely be using the token way. The main difference between the two is that the token way is simpler...

manic shoal
#

I am doing seasonal, so actually that would be super helpful!

#

Thanks so much! SDVpufferheart

urban patrol
#

oh awesome! good luck

urban patrol
# urban patrol lol

will updating the random message to be on time change be horrible for performance? CP docs say randomness changes on day start

#

also, idk if it's my seed or what, but i keep getting a pattern of like A A B B C C D D

#

i liked the completely random idea, but i might go back to the original idea of it displaying daily luck

tiny zealot
urban patrol
tiny zealot
#

what makes update rates costly is not the content patcher part per se, but regenerating the affected assets

#

if nobody else is patching it and it's just text or something, it's probably not a very big deal to do OnTimeChange. but when any mod updates a patch, the entire asset has to be rebuilt and all mods that patch it have to reapply their edits

#

this can be catastrophic if it's an edit to a big map, like Town or Forest, which many other mods might be expected to have patches for

urban patrol
#

and that's why patching Town on time change explodes the game?

#

yep haha

#

i don't know if i would be patching Random or if i would be patching my custom trigger action

calm nebula
#

(Town is also apparently special)

urban patrol
#

yeah, i don't exactly expect it to be solving the true randomness problem XD

#

i'm going to see if i can work out the daily luck version, and if i like how it performs better, i'll keep that instead

lucid mulch
#

Town is special in the sense that you don't need OnTimeChange patches to be bad, as it all has to run anyway everytime you leave town and re-enter it

#

still need OnTimeChange/OnLocationChange to have CP do something different though

#

ironically enough, farmhands don't have that performance penalty

urban patrol
#

interesting

lucid mulch
#

my speedysolutions mod does fix this quirk of town however

#

and hopefully upcoming stardew versions have it baked in

urban patrol
#

i miss python if elif elif else 😭

lucid mulch
#

and is your daily luck not actually positive?

urban patrol
#

nope, not according to... uh whichever mod puts the little colored dice on the UI

#

UI info suite i think?

calm nebula
#

That's not how when works

#

Try: "Condition": "{{query: {{DailyLuck}} =0"

#

When is a CP construction

urban patrol
#

can i have two conditions? i already have one as required by the trigger action

uncut viper
#

separate the conditions with a comma

#

one condition field, one condition entry, two GSQs

#

"Condition": "ITEM_ID Input {{ModId}}_Magic8Ball, {{Query: {{DailyLuck}} == 0}}"

urban patrol
#

oh no now it's not triggering at all

lucid mulch
#

Oh the problem the first time was entry keys being the same

#

and yeah using the When syntax inside the trigger action, rather than at the cp action level

urban patrol
#

can i just rename them to 8ballgood 8balbad etc, or do i need to somehow have one trigger action that checks/returns three things?

lucid mulch
#

yes, not required

#

though once you have moved into using GSQ exclusively to do your routing, there is the RANDOM gsq condition which you could experiment with

urban patrol
#

i'm not sure if you saw, but i had that originally, but it was kind of performing meh compared to what i had imagined, which is why i switched to trying luck. unless you're referring to something else?

lucid mulch
#

you were using the contentpatcher random previously

urban patrol
#

oh i see

#

it's still not triggering even with different IDs/names

#

can i try using When at the CP action level? how would i do that?

manic shoal
#

There's a couple things I'm not sure about with the following appearance code. The intent is for the appearance to only apply if it's during the Egg Festival and there is an EggFestival.png file in the appropriate folder. (Portrait_Mode is one of my config options, for context)

                {
                    "Id": "{{ModId}}_EggFestival",
                    "Portrait": "Portraits/EggFestival",
                    "Sprite": "Characters/EggFestival",
                    "Indoors": false,
                    "Condition": "IS_EVENT festival_spring13,{{HasFile |contains=\"Assets/Portraits/{{Portrait_Mode}}/EggFestival.png\"",
                    "Precedence": -200
                },```
I based the HasFile condition off the HasMod example on the wiki, but I'm not sure I formatted it correctly and I'm not sure if I can actually use tokens (such as the config token Portrait_Mode) inside the file path in this context.
prisma ibex
#

does anybody know how i can change how items look

#

:P

rough lintel
#

uhh lets see

#

!startmoddin

#

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

rough lintel
#

here ya go

prisma ibex
rough lintel
#

if u read it u will find out

prisma ibex
#

alr

rough lintel
#

its gonna be the tutorial for content patcher

prisma ibex
#

im either blind & not seeing what i should do next from the website or straight up stupid ;-;

manic shoal
#

By "it" do you mean smapi, content patcher, or something else entirely?

prisma ibex
#

i extracted the zip file into stardew valley/mods

#

now i have absolutely no idea what to do next

half tangle
#

check out that wiki tutorial in the post from Governor - then after you read that, the Content Patcher readme is linked on that page and that'll help you go further

prisma ibex
#

alright! it works now

#

so now if i edit an item in this image it'll automatically load inside the game? or do i need to re-convert the file into .xnb for it to work

urban patrol
#

you should be saving a copy of that file, then using EditImage in content patcher. do not repack it into .xnb

manic shoal
#

Also, it sounds like you're at Step 2 of the tutorial (having just unpacked the files). Now you should follow Step 3 to create the folder and manifest.json that you'll need.

prisma ibex
urban patrol
#

!unpack

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!

steel beacon
#

Hello, I am trying to learn more about how the new local token feature works. It looks like it has some powerful capability for making a dynamic template. At this point in time, can it be used for defining objects in Data/Objects and machine inputs and outputs?

urban patrol
#

follow the instructions here to see all of the game files rather than exporting them via SMAPI

prisma ibex
urban patrol
#

as amillionand1fandoms said, you need to have first made your folder structure and manifest.json. then you can make content.json and do an EditImage patch to apply your changes to the file

brittle pasture
prisma ibex
#

i did make the subfolder & the manifest.json file

#

now how do i exactly "Add the files needed by the content pack framework"

#

i dont get that part

daring skiff
#

@lucid iron Thinking I could actually figure out how to add this instance to CueSwap.

#

The readme is actually holding my hand.

lucid iron
#

send PR if it works out Dokkan

#

if it is still no work ill do it on the weekend

#

since it is a source gen u should turn on the thing that saves the generated code as a real file

daring skiff
#

Yeah, I'll tackle this tonight.

lucid iron
#

so u can look

#

i forgor what the option is called tho, its a general c# thing

daring skiff
#

"Source Generators"?

#

Looks like it.

prisma ibex
prisma ibex
half tangle
#

!json Your manifest isn't quite formatted correctly. Use the link below and follow it's recommendations or carefully compare yours to a manifest from another content mod.

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.

somber hinge
#

hi ^_^ I'm making my first cp mod & have no coding experience. I'm trying to make something simple that changes the display names and descriptions of animal products. It does technically work but I must be missing something because it also turns the sprites of the items I'm editing into weeds :p

    "Format": "2.7.0",
    "Changes": [
        {
            "Action": "EditData",
            "Target": "Data/Objects",
            "Entries": {
                "184" : {
                    "DisplayName": "txt",
                    "Description": "txt"
                },
                "186": {
                    "DisplayName": "txt",
                    "Description": "txt"
                }
            }
        }
    ]
}```
(also I'm not actually renaming everything txt lol just edited it here for simplicity)
royal stump
# somber hinge hi ^_^ I'm making my first cp mod & have no coding experience. I'm trying to mak...

Try replacing "Entries" with "Fields". Using "Entries" generally saves over the whole entry, so any settings in "184" and "186" will get reset to default unless you set them. "Fields" just overwrites the parts you specify and keeps the rest as-is.
(The second example here is pretty close to what you have)
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-editdata.md#edit-a-dictionary

somber hinge
#

thanks, I'll try that :)

#

it works! thanks again <3

ashen urchin
#

Want to speed up the harvest from cask but it has different output rules than the others. Can anyone help me?

spice inlet
young sluice
#

Howdy, folks - pretty new here, I'm struggling a bit with this error I'm getting, I figured it was just a bracket I didn't close or something but that doesn't seem to be it

ocean sailBOT
#

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

flat sluice
#

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

young sluice
#

danke

flat sluice
#

Could you, please, upload you .json file and send us the link?

flat sluice
#

Missing comma on line 212

young sluice
#

I just can't quite figure out what the error is telling me 🥲

orchid glade
#

Usually if the validator says 'unexpected... line x', it means 'missing comma on line x-1'

young sluice
#

you're a lifesaver ❤️ further issues seem to be happening though -

ashen urchin
orchid glade
#

Keep pasting it int he validator for clues

young sluice
#

I don't know what 'invalid property indentifier' means here either

#

thankyou for all the help ^^

cyan marsh
#

does anyone have the link for unofficial updates for mods?

young sluice
orchid glade
#

The comments inside the {} are also making it very disjointed

steel beacon
orchid glade
flat sluice
#

However, I'm getting way too many warnings in VSC.

spice inlet
flat sluice
orchid glade
#

@Alx are you using VSC or Notepad++ or just a text editor?

#

Because you should definitely use one of those two

flat sluice
#

!vsc

ocean sailBOT
young sluice
#

thanks for all the help! I gotta head out, I'll take a look through with a fine tooth comb later - started in just notepad but moved over to notepad++

orchid glade
#

They underline where there are errors and colour things helpfully

young sluice
#

thanks again folks ❤️

ashen urchin
lucid iron
#

That's like time units

blissful panther
#

(I'm not volunteering to do this, but maybe a VSCode plugin specifically for newer Stardew modders that explicitly disallows you from creating invalid JSON might be a good idea? SDVkrobusgiggle)

spice inlet
#

say a item without quality and aging multiplier 1 would need 56 days to mature, then a item with a multiplier of 2 would take only 28 days

#

half that

lucid iron
blissful panther
#

Not when editors like VSCode automatically create the closing pair for what you just typed!

lucid iron
#

Smh dh taking away my right to write stuff inside and then surround with quotes

#

I feel that while it not bad idea

  • how would new modder know to get this extension when they don't even know what a vscode is
  • newtonsoft is a funny wild west parser
blissful panther
#

Yeah, it would only help people who come here or see it on the wiki if we start pushing it in those places.

#

And this would be using... honestly, what does VSCode use?

lucid iron
#

vscode-json-lsp

#

Whatever the default built-in is

orchid glade
#

Speaking of code and I know I'm a baby, I successfully wrote an Info.plist (xml based) so that my self-compiled Aseprite would act like a real app, and I'm proud. (edited to remove an awkward mixed metaphor)

idle lantern
#

does anyone have advice, or insight?

brittle pasture
#

[[Modding:Location_data]] that's not how a Data/Locations entry is formatted

idle lantern
#

Thank you!

#

I'll try reloading the game. It's still throwing an error

idle lantern
#

Ah. Tiled says it embedded the tilesheets, but when Smapi tries to load the map, the tilesheet paths are borked

lucid iron
#

!tilesheetclimbing

ocean sailBOT
#

When creating or editing maps in Tiled, one common error is tilesheet climbing, marked by red text containing "invalid tilesheet path '../../..'. This is caused by SMAPI not being able to find the tilesheets needed by the map file. To prevent this error, make sure that you have a copy of all necessary tilesheets in the folder containing your WIP tmx file. Copies of vanilla tilesheets can later be deleted, but must be present while working on your map.

If you get this error with a completed map, an easy way to fix it is to open your tmx file in VS Code or a similar text editor, find all of the places with <image source=, and remove the filepaths to so that only the tilesheet names remain. For example, if the code says <image source="Content (unpacked)/Maps/townInterior_2" width="512" height="64"/>, change it to just <image source="townInterior_2" width="512" height="64"/>.

lucid iron
#

Rite of passage PecoSmile

idle lantern
#

Switching it to a tmx from a tbin, and using VS Code intstead of Community finally helped me. tyvm. Here's to testing it again

tiny zealot
#

switching to tmx is almost certainly unrelated and just a coincidence

idle lantern
#

when I tried opening up the tbin in VS Code, it showed {NUL} everywhere. Resaving it as a tmx allowed me to see the asset locations within the code. I don't know why

#

A missing plugin?

tiny zealot
#

something like that. tbin is a binary file format

#

tmx is xml, so it's human-readable and editable by hand, one of the reasons it is generally preferred on here (although you can set tiled to export the layer data as binary base64 or something like that, shrinking the file big-time at the expense of that feature)

lucid iron
#

Hm i think the base64 is only for the tiles right

#

U can still edit the other stuff

tiny zealot
#

yeah, it's only part of the file. i haven't explored it much

idle lantern
#

"[Content Patcher] Ignored Rahiel - Custom Genie NPC > custom location '{{ModId}}_RahielLamp': the Name field can only contain alphanumeric or underscore characters."

Should I go through and replace the {{ModID}} with Jierishi.Rahiel ?

lucid iron
#

Are you using CustomLocations

idle lantern
#

Yes

lucid iron
#

If the answer is yes switch to Data/Locations

idle lantern
#

ok

#

Selph sent that to me earlier, and I hadn't gotten to it yet

tiny zealot
#

(then please tell us which guide or tutorial told you to use CustomLocations, so we can fix it)

lucid iron
#

The format is a little different but u basically do ordinary EditData on Data/Locations

idle lantern
round timber
lucid iron
#

Pls heed warnings monS

tiny zealot
#

vin with the fastest fingers holy cow

idle lantern
#

You know, I promise I'm fairly intelligent when I'm not talking

round timber
idle lantern
#

I feel stupid as hell

lucid iron
#

(i rotated in place for 3 days debating if i should translate custom locations but ultimately i did cus ppl might be updating from there and need info on old system)

round timber
#

sounds like you would get pretty dizzy from doing that

lucid iron
#

It is bc i keep failing saving throws u see

round timber
#

my condolences SDVpufferpensive

idle lantern
#

I think the amount of missed warnings, like that one, have humbled me more in the last week than anything else. I've gotten too confident

lucid iron
#

Does sve still use custom locations

round timber
#

yes

idle lantern
#

Smpi is still throwing error codes about climbing tilesheet data.

#

do I take out the /tilesheets/?

#

It's trying to reference this

lucid iron
#

Do these exist in Content/Maps/

#

The naming is penculiar

idle lantern
#

I have them in assets/tilesheets with assets/Maps being separate

#

I've tried embedding them directly, and the button grayed out, but it still seems to be referencing them from a computer location

lucid iron
#

You probably done goofed then

idle lantern
#

lol 🙂

lucid iron
#

So basically for anything that's a vanilla tilesheet you need to arrange your working folder with the tmx in Maps too

#

Do not rename sheets, and do not include these in your actual mod folder

#

For instance if you needed Maps/springobjects.png, your working folder needs to be like

#

wip/
Yourmap.tmx
springobjects.png

#

For a custom sheet i recommend naming them after your mod id

#

Jierishi.Rahiel_geniehouse.png for instance

#

Then, do a Load to Maps/{{ModId}}_geniehouse in ur mod proper

idle lantern
lucid iron
#

Anyways u can still fix up ur existing tmx if u change these names and change the source= stuff by hand

gentle rose
lucid iron
#

You should because bypassing the content pipeline is evil

gentle rose
#

are you sure the load is even respected though? if they're in the same folder I thought that takes priority SDVpuffersquee

idle lantern
#

any idea how I get it to stop seeing
<tileset firstgid="10561" name="townInterior" tilewidth="16" tileheight="16" tilecount="2176" columns="32">
<image source="/tilesheets/townInterior.png" width="512" height="1088"/>

as from my C:/ and from the tilesheets or Map folder within stardew?

lucid iron
#

Yeah so what i actually do iro

gentle rose
#

different folder?

lucid iron
#

Is to put the png in Jierishi.Rahiel/genieroom.png

gentle rose
#

yup

#

makes sense SDVpuffersquee

idle lantern
#

it's doing it to the custom png as well as the vanilla assets

lucid iron
#

I think it'll help you to take a look at a vanilla map and how their tilesets are setup

idle lantern
#

ty

lucid iron
#

It's difficult to explain without visual aid

#

I can tell you this looks wrong tho

#

And / probably turned it into an abs path

idle lantern
#

<tileset firstgid="5939" name="v16_Waterfalls" tilewidth="16" tileheight="16" tilecount="900" columns="36">
<image source="spring_Waterfalls" width="576" height="400" />
<tile id="145">

urban patrol
# idle lantern it's doing it to the custom png as well as the vanilla assets

it’s a little annoying, but what i do is have two folders: one on my desktop and one in my mod. the one on my desktop is my maps workspace and i copy all vanilla tile sheets and maps there, and also copy all my custom maps and tile sheets there. whenever i work in tiled i only open them from the maps workspace folder.

whenever i finish something in tiled, i save it and then copy the custom map to my mod folder map location wherever that may be. i do not include vanilla maps or tile sheets in my mod folder.

this setup helps prevent tile sheet climbing or errors, and makes sure the game can load my custom maps using vanilla tile sheets

idle lantern
#

I wonder if it'd be easier for me to recreate the entire tmx map and try again, as awful as that sounds

urban patrol
#

i wouldn’t think you would need to do that unless it was seriously broken. it just sounds like you’re having file organization issues to me?

#

can you send a picture of your mod file structure as pertains to your custom maps and tilesheets

idle lantern
urban patrol
# idle lantern

am i reading this correctly? i thought your mod folder had to be inside the stardew valley folder for SMAPI to find it. it looks to me like it’s just sitting on your desktop

idle lantern
#

this is my working copy

#

I copy it directly into mods after making changes

#

sorry

urban patrol
#

is your non-working copy the same?

idle lantern
#

working-on* copy I should say

#

Smapi is specifically referencing furniture, it also says it's looking for an xnb file instead of tmx

urban patrol
#

okay so it is the same. can you send your tmx so i can view it in notepad

idle lantern
#

yes. ty. I appreciate your help

urban patrol
#

no problem, i actually love it when people have problems that i think i know things about lol

idle lantern
#

sent via message

urban patrol
#

i didn't get it, i think because of the anti-spam measures

idle lantern
#

Ah one second

urban patrol
#

oh wait there it is

idle lantern
#

I was going to post it in here, but then I thought about someone making a mistake (like me) and thinking it's a working copy of something

urban patrol
#

oh you got some weird shit in here :/ i assume because it used to be tbin

idle lantern
#

Probably. That's what Chu was saying

urban patrol
#

this is what i was expecting

idle lantern
#

Maybe I'll go make lunch and then come back and remake it completely

idle lantern
#

I'll do that. Let me go feed the teenagers in my house and I'll come back

urban patrol
#

sorry i couldn't help :( and if anyone else knows a way to salvage it i hope you find it

lucid iron
vernal crest
idle lantern
#

the other one was much wider, so his room couldn't be seen (I was thinking like how you can see the Gold Scythe mine from the dwarf room in vanilla). Should I work about that, or make the room smaller

manic shoal
#

There's a couple things I'm not sure about with the following appearance code. The intent is for the appearance to only apply if it's during the Egg Festival and there is an EggFestival.png file in the appropriate folder. (Portrait_Mode is one of my config options, for context, and I have different folders for each mode.)

                {
                    "Id": "{{ModId}}_EggFestival",
                    "Portrait": "Portraits/EggFestival",
                    "Sprite": "Characters/EggFestival",
                    "Indoors": false,
                    "Condition": "IS_EVENT festival_spring13,{{HasFile |contains=\"Assets/Portraits/{{Portrait_Mode}}/EggFestival.png\"",
                    "Precedence": -200
                },```
I based the HasFile condition off the HasMod example on the wiki, but I'm not sure I formatted it correctly and I'm not sure if I can actually use tokens (such as the config token Portrait_Mode) inside the file path in this context.
lucid iron
#

I don't think has file works like that

#

It just takes an arg no need for contains=

lucid iron
#

Stop right there criminal scum

visual dirge
#

ok but what if its just 1 little tiny sheet

#

with 3 tiles in it

lucid iron
#

What if someone wants to recolor ur map thing bolb

#

I do personally wish we could just load tsx to content too

idle lantern
#

@urban patrol

balmy valve
#

I checked out that NPC Festival tutorial you guys recommended, and now I'm kinda overwhelmed. Can someone give me step-by-step instructions on how to make the placements different for different year parities? I know you have to append _y2 somewhere but my unmedicated neurodivergent ahh can't figure it out. Thanks in advance

idle lantern
urban patrol
urban patrol
#

i also defined a token in my content.json as suggested by whatever tutorial i followed

urban patrol
#

:( what error are you getting?

#

gid error again?

idle lantern
#

It's trying to access Maps/furniture. Discord isn't allowing me to upload images for some reason

idle lantern
# urban patrol gid error again?

[14:14:45 ERROR Content Patcher] Can't apply patch Rahiel - Custom Genie NPC > Include maps.json > Load Maps/{{ModId}}_RahielLamp to Maps/Jierishi.Rahiel_RahielLamp:
StardewModdingAPI.Framework.Exceptions.SContentLoadException: Rahiel - Custom Genie NPC loaded map 'assets/Maps/Jierishi.Rahiel_RahielLamp.tmx' with invalid tilesheet path 'furniture.png'. The tilesheet couldn't be found relative to either the map file or the game's content folder.

#

going to try and redirect to to tilesheets vs maps

urban patrol
idle lantern
#

ah!

urban patrol
#

i made the same mistake

urban patrol
balmy valve
#

thank you

urban patrol
balmy valve
#

it workin' thank you

urban patrol
#

awesome

#

let me also link you to the content.json

balmy valve
#

Gah there's not, like, variants for the different years

#

like year 1 vs year 2 layouts

urban patrol
#

there should be! do you mean you want to see the layouts visually or what?

balmy valve
#

no

#

hang on lemme try to words

#

Do your characters not change position

#

because i only see one entry for each and it's got no _y2

idle lantern
#

Could you load each map like

        "Action": "Load",
        "Target": "Maps/{{ModId}}_ExampleCave",
        "FromFile": "assets/map.tmx"

and use a condition for it to check the year?

balmy valve
#

the tutorial just says i'm appending something????

#

"Important note for 1.6: Vanilla festivals now have two layouts for year 1 vs. year 2; year 2 variants are distinguished by _y2. If you want your character to show up in these variants, you need to have a _y2 for the "Set-Up_additionalCharacters" entry, the "set-up" field (for animations), and the dialogue keys. If you don't have any changes between year 1 and year 2, you can shortcut this by making a dynamic token: "

idle lantern
#

[game] Warp to Jierishi.Rahiel_RahielLamp failed: location wasn't found or couldn't be loaded.

ffs

tiny zealot
urban patrol
#

oh i see yes sorry i was lazy and kept them the same positions year by year by using the token. if you want it to differ you just have to have two patches

balmy valve
#

i dont know what that means😭

urban patrol
#

two “Operation”: “Append”

tiny zealot
#

i recommend tackling one thing at a time. first, get your NPC to spawn at one festival in year 1

#

then expand as you feel comfortable, to the other festivals and to year 2

urban patrol
idle lantern
#

for festivals

tiny zealot
#

and don't mind me (just lobbing a brick for later): prepare yourself to handle winter8, which has a differently-named main event key for some reason and if you don't account for that your NPC won't show up during the fishing contest lol

urban patrol
balmy valve
idle lantern
#

Yes. My desktop discord now isn't working, and discord via browser isn't allowing uploads of image snow

balmy valve
#

But I have 2 npcs that i wanna put in!1 AAAHHH

balmy valve
ocean sailBOT
#

@balmy valve You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!

balmy valve
#

mister governor i have beef with you, i keep putting my best cheeses into the soup and you say it's terrible every time, why would you be so mean

#

PLEASE where do I pu tthe _y2

ocean sailBOT
#

I only like those shiny square pieces of cheese. Delicious!

balmy valve
#

i would figure it out but I am afraid

balmy valve
ornate trellis
#

Set-Up_additionalCharacters_y2 like that

idle lantern
#

Welp. Nap time. No custom map for me today

balmy valve
woeful iron
#

I am unsure if I did something wrong when unpacking, but there's no Andy files in Characters/Dialogue

#

I used StardewXnbHack

#

Does he have a special name?

idle lantern
#

Andy comes from SVE, I don't believe he needs to be unpacked does he?

fading walrus
woeful iron
#

oh my goodness, I had no idea

balmy valve
ocean sailBOT
#

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

proud wyvern
#

and this is why we recommend people to play non-modded first hah

fading walrus
#

Yep

idle lantern
#

My sister only played Stardew Valley with SVE and Ridgeside Village. She bought SDV for mobile, and was very confused

fading walrus
#

Especially not with a mod that turns vanilla on its head and changes the lore so much SMCKekLmaoDog

woeful iron
#

To be honest, almost the entirity of my 250 hours in the game is the same modded playthrough.... so I'm not exactly sure what's vinillah

urban patrol
balmy valve
rigid musk
#

It's why I reached perfection in vanilla at least eventually to know what's what (although I still had a pretty good idea since I had played the game for so long)

And why I reached perfection again after 1.6 was released to know what was added by the game and what was modded

urban patrol
urban patrol
balmy valve
#

okay

urban patrol
#

oh no you’re not they’re just in the comments

ornate trellis
#

the commas are behind the comments

#

yeah that threw me off too lol

urban patrol
#

are we worried they’re being commented out?

#

idk how exactly it parses that

ornate trellis
#

is the map itself named the right way btw

idle lantern
#

there's the smapi log

urban patrol
#

!log would you mind sending it here? it’s easier to read

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.

urban patrol
#

especially when i’m on mobile SDVitemblobfish

ornate trellis
#

cuz when i scroll up the last screenshot i see is just named RahielLamp.tmx and not Jierishi.Rahiel_RahielLamp.tmx

idle lantern
ocean sailBOT
#

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

woeful iron
#

So if Andy's lines are in Expanded, how would I mod them? Is it even possible without manually updating the mod? I've done that to fix things in the past, but the fix gets lost in upgrades

idle lantern
#

I renamed it to RahielLamp.tmx

#

You should be able to. Is that when load priority comes into play?

ornate trellis
idle lantern
#

{
"Changes": [
// adds location data
{
"Action": "EditData",
"Target": "Data/Locations",
"Entries": {
"{{ModId}}_RahielLamp": {
"CreateOnLoad": {
"MapPath": "Maps/{{ModId}}_RahielLamp"
}
}
}
},

    // adds the map file
    {
        "Action": "Load",
        "Target": "Maps/{{ModId}}_RahielLamp",
        "FromFile": "assets/Maps/RahielLamp.tmx"
    },

    // adds a warp from the Club map to the Rahiel Lamp
    {
        "Action": "EditMap",
        "Target": "Maps/Club",
        "AddWarps": [
            "21 8 {{ModId}}_RahielLamp 5 10"
        ]
    },
    
    // adds a warp from the Lamp to the Club
    {
"Action": "EditMap",
"Target": "Maps/{{ModId}}_RahielLamp",
"AddWarps": [
    "5 11 Club 21 9"
]

}
]
}

ornate trellis
#

look at your MapPath

#

and your target for warps

#

id just suggest naming it all the same but thats up to you i guess

idle lantern
#

Let me try again. I had the map sas Jierishi.Rahiel_RahielLamp but I was getting an error, though I can't remember what

ornate trellis
#

anyway do you try warping through your warp or via command

idle lantern
#

through the warp. The warp tries to go through, but then i get the error that the map doesn't exist

ornate trellis
#

try warping via console command maybe?

idle lantern
#

I'll try that

#

AH

ornate trellis
#

alright

#

so it does exist

idle lantern
#

and the warp worked in the club

#

I deleted all fo the {Mod etc}} and retpyed everything, the same exact way

#

minus typos

#

I don't know what the issue is, but something got fixed

ornate trellis
#

so you dont have {{ModID}} anymore?

idle lantern
#

I do. I deleted everything, then just retyped it back in

ornate trellis
#

maybe it really was jsut a typo somewhere who knows

idle lantern
#

On my Marnie mod, I had issues with my "s being weird when copying them back and forth between Note++ and the json checker - and I'd have to retype them

balmy valve
#

I also have an issue, when you guys are done with this. She's not showing up at festivals. here is my json parsed

idle lantern
#

Probably

ornate trellis
#

well, its all good now

urban patrol
#

wow i’m glad Void was here to help fix… whatever it was lol i couldn’t for the life of me find it

idle lantern
#

Me neither

balmy valve
urban patrol
idle lantern
#

I did also rename the map three times in a row, in case something wasn't sticking in the properties

idle lantern
balmy valve
#

I love it

ornate trellis
balmy valve
#

was i supposed to

#

load sm into the content file

urban patrol
balmy valve
#

yeah i'm fixing that rn

#

I've tried egg fest

urban patrol
balmy valve
#

DANG IT THATS PROBABLY IT

urban patrol
#

i did that the other day 😂 WHY ISNT IT WOR—oh i didn’t tell it where to find it lmao

ornate trellis
#

ah, the lovely include

urban patrol
ornate trellis
#

just yesterday i forgot to include my png and was like why is it an error building

balmy valve
#

ok let me try again

balmy valve
urban patrol
balmy valve
#

Forget spaghetti code i'm out here making macaroni code. it's full of holes and held together by cheese sauce

urban patrol
#

i find it easier to load a blank json and then edit it

patent lanceBOT
fading walrus
#

I cackled

balmy valve
#

OH NO THERE IS SOMETHING WRONG WITH HER FEET

#

BUT THE SPRITES ARE CORRECT

#

I CHECKED

ornate trellis
#

her feet?

balmy valve
#

yes. One moment

uncut viper
# balmy valve what's blank.json?!

its a required setup file if you want to add events or dialogue or something to an asset that does not yet exist (such as events for a custom location) without just straight up Loading the file there
(if you use Load, you cannot use tokens, so people largely prefer the blank.json. if you load a blank.json youcan then do EditData on the asset)

balmy valve
#

i cant share images fsr

#

But all her walking is shifted down by one pixel

#

So anytime she turns to the left, right, or up, there's the feet of the previous sprite haunting her above her head

ornate trellis
#

you sure her sprites are aligned right?

balmy valve
#

May I upload spritesheet?

idle lantern
#

oh wait nm

balmy valve
#

There shouldn't be...

#

I used transparent borders to make sure they were all 16x32

ornate trellis
#

yup your sprites are too low

idle lantern
#

something's off. that's not a multiple of 32

ornate trellis
balmy valve
#

NOOOOO

idle lantern
#

hold on, I can fix it rq for you

ornate trellis
#

your sheet is one pixel too long

balmy valve
#

GAH

ornate trellis
#

and everythingg needs to be shoved 1 pixel up

balmy valve
#

okay i can fix that 😔

idle lantern
balmy valve
#

thank u but i have 2 more spritesheets to check now

idle lantern
#

ok 🙂

balmy valve
#

but because i used the sprite borders

idle lantern
#

I ended up buying Asperite, so now I use it any chance I got

balmy valve
#

is the animations gonna be bad??

#

aaaaa

barren surge
#

Question, how do you make custom long sleeve

idle lantern
#

your widths are ok. I imagine you only need to shift everything up by 1

balmy valve
#

ok

ornate trellis
#

have you not set the grid in asesprite to 16x16?

idle lantern
fossil osprey
#

Fashion sense I guess

balmy valve
idle lantern
#

Let my search discord. someone was talking about it yesterdaty

barren surge
#

I only see sleeveless shirt from sprite resources

idle lantern
#

Quill || 463 Mods
[BOBA]
— Yesterday at 6:44 AM
@barren surge You want Fashion Sense for doing long sleeve shenanigans

idle lantern
#

everyone's got a million things going on, you're fine

fossil osprey
#

(but there are definitely packs with long sleeves, I have seen them but don't know their names)

idle lantern
#

I wanted to take an old lady nap, but my kids and my dogs are all in my bed

barren surge
#

Thank you. Sucks that I have a hard time finding making fashion sense mod in YouTube

idle lantern
#

there are 4 other rooms in this house.

ornate trellis
idle lantern
#

When this genie NPC is done, I'm never marrying any other npc. This took too much work

barren surge
fossil osprey
barren surge
barren surge
fossil osprey
barren surge
#

Can I pin the link though? I don't want that link to be flooded by chat

#

Wait is there a resource channel for that

ornate trellis
#

only junimo can pin messages

barren surge
#

Well I can copy and paste it

fossil osprey
#

Just keep it open on your browser?

barren surge
#

So no biggie

fossil osprey
#

Or yeah, copy somewhere safe

#

(or just lookup "gloves" on nexus and you'll find it quickly ^^)

barren surge
#

As always

#

But I will copy and paste it somewhere then

fossil osprey
#

Oh, that sucks, yeah I understand then

ornate trellis
#

i tend to have a private discord server for stuff like that

barren surge
#

Well I am glad that the problem is resolved

barren surge
ornate trellis
#

i have my moments

fading walrus
#

For offline saving, I have Obsidian

You can use any random notes app with offline functions for it tho
Or word/LibreOffice/whatever

barren surge
#

Done. All I need to make art assets for my custom clothing

#

I should have practiced faster workload

idle lantern
#

I can't move on my map after loading. Um. I don't have anything on Paths, is that my issue?

rough lintel
#

that is invisible

ornate trellis
#

if you have something on the buildings layer where you are thats the issue usually

idle lantern
#

I have myself porting to the corner in the bottom left. I turned off the back layer. There furniture at the bottom is building and in the middle

#

let me try a different port spot

urban patrol
idle lantern
#

yes

urban patrol
#

wait not debug mode

#

data layers

idle lantern
#

oh, let me try that

#

because I don't have anything on the building layer right there, but I can't move

balmy valve
#

So how do I change event dialogue for year 2? Where do I put the _y2 suffix?

balmy valve
#

No nvm, you used the correct wall

ornate trellis
balmy valve
#

hwuh

#

so {{ModId}}_SantosPerez_y2

ornate trellis
#

ya

balmy valve
#

ok!!

ornate trellis
#

and then jsut add your y2 dialogue to that

balmy valve
#

should it be in the same entries list as the dialogue for the y1 festival?

idle lantern
#

are you using a dialogue.json or the i18n?

balmy valve
#

dialogue.json

idle lantern
#

if you're in the i18n, it'd be all the same file

#

ah

balmy valve
#

...ah?

#

So two different things? Or just one?

ornate trellis
#

nono

#

same entry as y1

balmy valve
#

Ok!!

ornate trellis
#

dont forget the comma

#

cuz i did

balmy valve
#

comma

#

Yippee!!

ornate trellis
#

aye

idle lantern
ornate trellis
#

thats a lot of red

urban patrol
#

everything red is a building tile. take the eraser tool and erase everything invisible

idle lantern
#

good idea

#

you had it! Invisible buildings

ornate trellis
#

ah map work i wish i still was in that stage stares at all my events i still gotta do

prisma ibex
#

that green button looks familiar

idle lantern
ornate trellis
#

i have 34 events, my friend

urban patrol
#

mapmaking is my favorite for sure

idle lantern
#

Event making was my favorite

#

but they're easier to trigger, so far. and the majority of my first mod was just events

ornate trellis
#

i dont like coding the event, i like writing them in itself

#

the art part is HEAVILY favoured by me tho lol

#

my trello is so long with what i still need to do, wahh

#

i think once my alpha is ready i gonna post another teaser pic on nexus thonking

urban patrol
#

i really like buildings and portraits, but i hate sprites

idle lantern
#

My boy won't spawn. What a shit.

#

I know it's something I've done

rough lintel
ornate trellis
idle lantern
urban patrol
#

oh good wren is here, she’s the expert

idle lantern
#

I think it's Wren tutorial I'm using

#

I'm trying to decide if I should just put all of his files together into a Rahiel.json, instead of separating them

gaunt orbit
#

What sort of performance impact do TASs have? Does the built-in pooling feature help at all? For large numbers of them, do you think locality could offer any benefits, or will the overhead from spritebatch render optimization pointless?

I know I've heard people complaining about lag with sve's tas vfx, so I want to see if I can avoid that

gaunt orbit
urban patrol
#

🙃 my bad!

gaunt orbit
#

It's all good

urban patrol
prisma ibex
#

let me cook

ornate trellis
deft bay
#

Would anyone be able to help me figure out how to add new items to existing shops using C# and not Content Patcher? I am wanting to be able to control the configs and whether certain changes are made or not through GMCM which is why I dont want to use Content Patcher. I have tried looking online but could not find any direct info regarding specifically adding items to the shops and what the syntax would be. Only the generic guides on data format for shops and editing a game asset but the example shown doesnt help with shop data assets.

uncut viper
#

not that ill try and steer you otherwise if you really wanna use C#, but are you aware that CP will make a section in GMCM for you for your CP config?

uncut viper
#

if all you want is simple checkboxes or something and you dont need any of the more customizable GMCM API features, then there is zero difference between using CP and using C# when it comes to how the player adjusts your config

deft bay
#

I was wanting use a bunch of the custom GMCM API features which is why I was hoping to have it all in C#. Sadly I make things too complicated for myself 😅

uncut viper
#

@tiny zealot i feel like i remember you at one point trying to figure out how to get the duration of a Cue. did you ever figure that out and if so, how did you do it (i am in the same boat)
((if it wasnt you and im misremembering then oops sorry for the ping))

edit: never mind i have figured it out i think sorry for the needless ping SDVpufferpensive

gaunt orbit
uncut viper
#
public void GetCueDuration(Cue cue) {
  if (cue._xactSounds[0].complexSound) {
    var instance = cue.GetPlayWaveEvents()[0]._variants[0].GetSoundEffectInstance();
    Duration = SoundEffect.GetSampleDuration(instance._effect.Spring.Length, 44125, AudioChannels.Stereo);
  } else {
    var instance = cue._xactSounds[0].GetSimpleSoundInstance();
    Duration = SoundEffect.GetSampleDuration(instance._effect.Spring.Length, 44125, AudioChannels.Stereo);
  }
}
#

so far ive not found a cue that throws an NRE when doing those array accesses but if you wanted to be super safe you could make sure they exist and have elements first

#

also this is just what im using for my setup hence the void return and the random Duration = ...

lucid iron
#

What's 44125...

uncut viper
#

the sample rate

calm nebula
#

Can I change the sample rate

uncut viper
#

if you'd like

#

but the cues in SDV use 44125

#

if you wanted to be even super safer, instance._effect.Spring.SampleRate

#

you can also change it to Mono instead of Stereo i guess

#

dont know how you might detect what audio channel mode the player is in

languid matrix
#

How the heck do I fix sold recipes being broken?

#

[game] An error occurred in the base update loop: ArgumentException: An item with the same key has already been added. Key: 1
at System.Collections.Generic.Dictionary2.TryInsert(TKey key, TValue value, InsertionBehavior behavior) at StardewValley.CraftingRecipe..ctor(String name, Boolean isCookingRecipe) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\CraftingRecipe.cs:line 122 at StardewValley.Menus.CraftingPage.layoutRecipes(List1 playerRecipes) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Menus\CraftingPage.cs:line 202
at StardewValley.Menus.CraftingPage.RepositionElements() in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Menus\CraftingPage.cs:line 351
at StardewValley.Menus.CraftingPage..ctor(Int32 x, Int32 y, Int32 width, Int32 height, Boolean cooking, Boolean standaloneMenu, List`1 materialContainers) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Menus\CraftingPage.cs:line 89
at StardewValley.GameLocation.<>c__DisplayClass385_0.<ActivateKitchen>b__0(MultipleMutexRequest request) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Locations\GameLocation.cs:line 8676
at StardewValley.Network.NetMutex.Update(FarmerCollection farmers) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Network\NetMutex.cs:line 86
at StardewValley.Objects.Chest.updateWhenCurrentLocation(GameTime time) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Objects\Chest.cs:line 1153

#

at StardewValley.Locations.FarmHouse.UpdateWhenCurrentLocation(GameTime time) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Locations\FarmHouse.cs:line 950
at StardewValley.Game1._UpdateLocation(GameLocation location, GameTime time) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Game1.cs:line 6166
at StardewValley.Game1.<>c__DisplayClass735_0.<UpdateLocations>b__0(GameLocation location) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Game1.cs:line 6126
at StardewValley.Utility.ForEachLocation(Func`2 action, Boolean includeInteriors, Boolean includeGenerated) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Utility.cs:line 342
at StardewValley.Game1.UpdateLocations(GameTime time) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Game1.cs:line 6124
at StardewValley.Game1._update(GameTime gameTime) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Game1.cs:line 4326
at StardewValley.Game1.Update(GameTime gameTime) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Game1.cs:line 3454
at StardewModdingAPI.Framework.SCore.OnPlayerInstanceUpdating(SGame instance, GameTime gameTime, Action runUpdate) in SMAPI\Framework\SCore.cs:line 1095

tawny ore
#

!log

ocean sailBOT
#

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

Please share your SMAPI log file. To do so:

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

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

uncut viper
languid matrix
#

I have Stardew Valley on Steam.

tawny ore
#

Are you making a mod or trying to find support for playing with mods?

languid matrix
#

Well, more making a mod.

tawny ore
#

And are you writing C# code, or a content pack?

ocean sailBOT
#

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

tawny ore
#

Some details about the recipe you're adding might be helpful for troubleshooting the error. The error seems to indicate that more than one thing with the same unique id are being added to a dictionary.

languid matrix
#

Here's another thing: I CAN'T update any of the mods that are on Nexus because of their login wall when you attempt to download something without an account.

languid matrix
tawny ore
#

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

tawny ore
#

This is more what I was thinking. The actual way you're adding the recipes.

languid matrix
#

I just realized that I made a mistake in adding the Lamprey Pie and Fried Axolotl recipes to Gus's shop.

#

Now how do I fix a save file that already bought the recipes and is affected by this?

tawny ore
#

You can open your save file in any text editor although I'd recommend VSCode, and just set the format to XML

#

If you do edit a save file manually, just make sure you have a backup because it's very easy to break something to the point where it no longer loads

languid matrix
tawny ore
#

!saves

ocean sailBOT
languid matrix
#

Okay, I opened up my save data and it's a single, cluttered line.

tawny ore
#

In VSCode, once you set it to XML you can use Format Document to make it look nicer

tawny ore
#

One thing I noticed is that your recipes use different ids. Underscores in one, and period in another.

tawny ore
pine elbow
#

hi im new to coding and to modding

languid matrix
tawny ore
#

It doesn't matter as long as you're consistent

#

You can't switch up the id between different things and have it work

languid matrix
pine elbow
#

any suggestions for a simple mod to make as a beginner

languid matrix
#

I thought recipes couldn't share IDs with items.

tawny ore
#

It's really hard to break a save. You should be fine with either.

languid matrix
#

Will it automatically be fixed if I make it consistent?

urban patrol
#

!startmodding this is the best place to learn the basics

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.

languid matrix
#

If a recipe ID is changed, will it reappear in a shop if it was added to one?

tawny ore
#

Don't think of it so much as a recipe changing, but more like a recipe is removed and a new one is added

#

The new one will show up, the old one will be deleted

languid matrix
#

And when I went fishing, an axolotl somehow appeared without the fishing game.

#

Also, how exactly do I make a fish harder to catch?

idle lantern
#

You guys. I have an x!

#

I'm getting somewhere!

ornate trellis
#

progress

idle lantern
#

HOORAY

#

if I have all of my dialogue in the i18n, do I just leave the dialogue.json blank, or with {}?

#

actually, I'm assuming everything I put in th ei18n probably was meant to go into the dialogue.json and I'm wrong

lucid iron
#

What is dialogue.json

idle lantern
lucid iron
#

Oh so includes are basically a way to split up your 20000 EditData

#

Their names mean absolutely nothing it's just your organization sense

idle lantern
#

Ah ok

lucid iron
#

When you have text in i18n you still need to edit them into the npc's dialogue asset somehow

idle lantern
#

I have the default inside of the i18n folder, but he isn't responding to conversation. I assumed it was because I was missing that.

lucid iron
#

The usual rec is to load a blank json (i.e. just {}) to the Character/Dialogue/npcid asset

#

Then u do further dialogue edits on it

manic shoal
#

Speaking of includes, does anyone know if you can use an Include patch within the Entries section for an Appearance? Something like this (though I think my code isn't quite right for it even if it is possible)

        "Action": "EditData",
        "Target": "Data/Characters",
        "TargetField": ["Wizard", "Appearance"],
        "Entries":
        {
            //Default
            "{{ModID}}_Wizard_Indoor":
                {
                    "ID": "{{ModID}}_Wizard_Indoor",
                    "Portrait": "Portraits/Wizard_Indoor",
                    "Sprite": "Sprites/Wizard_Indoor",
                    "Indoors": true,
                    "Outdoors": false,
                    "Precedence": -110
                },
            "Action": "Include",
            "FromFile": "Data/FestivalCode.json"
            
        }```
lucid iron
#

What you need is TargetFields

#

Basically the Actions: Include stuff is only for top level cus those r cp constructs

#

Once you get under Entries you are in the realm of data that actually goes into game

#

If u wished to edit stuff nested deep inside without changing the other bits you need to use TargetFields to drill down to where you want

manic shoal
#

Thanks, that makes sense.

faint ingot
#

well it looks like I won't be having the farmer sit down in swimming gear

manic shoal
#

Are there any performance implications or other problems with having multiple EditData actions for appearances compared to having one EditData with multiple entries?
I'd really like to use Include for this so that I can do some shenanigans with local tokens and make it much easier both to turn appearances off with config and to change my code later. But that means making this block of appearance code it's own json and including it multiple times rather than just using separate entries in the same block of appearance code.

faint ingot
#

I've written like 50 NPC events and only now figured out how to make the farmer end up in a different location when the event is over

#

Along the same lines, I had an event I had to rewrite to sometimes include an additional NPC. It was originally one of the first events I ever wrote, and reading it today is like ... "who wrote this utter trash and what were they hoping to accomplish??"

lucid iron
manic shoal
#

Thanks!

woeful lintel
#

If you make multiple patches, you can provide config options to disable each one individually

patent lanceBOT
#

@calm nebula: take a look (96h ago)

calm nebula
#

Ahhhhhh

#

God damn it

#

Remind me in 168 hours to take a look

patent lanceBOT
#

yarp (#6729283) (168h | <t:1750380319>)

tiny zealot
brave fable
calm nebula
#

-# halp

lofty osprey
#

Hi hi~ first time coming here and a freshman in making mods and stuff, I hope you don’t mind me!
I’m in work for a mod of myself, but I wonder what are the options to put my custom npcs in before I’m capable of making their custom houses. I know of some train station, but if someone could guide me I’d appreciate it ;w;

ornate trellis
#

you mean as in where to make em live until you made their own map? theres an npc apartment around in that case

urban patrol
#

there's a guide to using it as well, let me see if i can find it

ornate trellis
#

its in the desc, the google sheet has it

brave fable
#

if you're fine with things being barebones, there's really nothing stopping you from simply scheduling them in the streets outside. live free

idle lantern
lofty osprey
#

Ive never really checked it since I mean it when I say I’m completely new to modding, so all options are good before I get my skills to make a map

#

Thank you melting

urban patrol
lofty osprey
#

I just knew there’s some train station for sure, but I think it’s more for bigger maps?

round timber
#

its for whatever u want to use it for, but generally yeah

idle lantern
#

I'm not sure how to do the blank load. Is it like the blank file I made for the club?

round timber
#

yes

rigid oriole
#

Do you have to have fixed the bus to use central station?

round timber
#

schedules also require a blank load

rigid oriole
#

Ok neat thank u

urban patrol
woeful lintel
#

What are the drawbacks of having an actual dialogue file to load instead of a blank json to patch with EditDatas?

uncut viper
#

no tokens

calm nebula
#

No ability to use tokens

#

Which doesn't matter if you want to use localized text instead

#

Good morning, button

uncut viper
#

morning?

round timber
#

good morning

lucid iron
#

I think it is just up to preference

#

Just 1 load is technically better than a load and an EditData? But then if u ever want to use tokens then u gotta EditData anyways

idle lantern
#

He's certainly not going by the schedule I have typed up

lucid iron
#

I usually recommend blank json to anyone just starting so that it's not confusion

urban patrol
idle lantern
#

Let me try sleeping

calm nebula
#

Sleep is wonderful

idle lantern
#

still at spawn, no dialogue no moving

#

fast forwarded just in case, and nothing

lucid iron
#

Gift tastes

#

Did u give any

idle lantern
#

{
"Action": "EditData",
"Target": "Data/NPCGiftTastes",
"Entries": {
"{{ModId}}_Rahiel": "{{i18n:Gifts.Loved}}/72 74 595 279 446 400 604 432/{{i18n:Gifts.Liked}}/395 348 428 634 91 797/{{i18n:Gifts.Disliked}}/390 306 167 153 702 78 403/{{i18n:Gifts.Hated}}/168 169 172 92 792 category_fish/{{i18n:Gifts.Neutral}}/88 18 724 440 340 373 category_gem"
}
},

I remembered to rearrange them like was suggested

#

hold up. I don't have gift tastes in that i18n

#

I can't remember if those are additional gifts needed to be listed, or if it's referencing his responses

tiny zealot
#

(nearly) unrelated, but folks, we love to see a {{ModId}}_ in an NPC's internal name. thank you for being a good citizen o7

woeful lintel
idle lantern
tiny zealot
#

that's fun because practically no one goes full modid /lh

urban patrol
#

hang on are you able to do season_day_heart level for dialogue?