#making-mods-general

1 messages · Page 180 of 1

uncut viper
#

ofc!! feel free to tweak what i did for the trigger IDs and the i18n too to suit your needs ofc

brittle pasture
#

(thanks for confirming, I will proceed to forget and wonder again when someone asks something similar)

uncut viper
#

they do assume that the BFM and FMC stuff is like, gonna be consistent through every t rigger

calm nebula
#

Or an event but then you get the fade in and out which is annoying

uncut viper
#

but you can ofc adjust as needed as long as the concept is there

#

it also assumes all your shop Ids are the same as the convo topic (or maybe more accurate to say all the convo topics share the id with the shops)

#

so like the MushroomShop CT comes from the MushroomShop shopid

dusk mulch
#

btw festive i cant publish 1.0.2 of my mod until you release the next version of meep

#

not to put pressure on the situation

slender badger
uncut viper
#

nothing another localtoken couldnt solve too SDVpuffersquee

#

just replace FMC with {{CoreToken}} or somethin :p

dusk mulch
#

anyway until meep comes out i can get rid of all my hacks and debug mods so i can play normally

velvet narwhal
#

as mayor of localtoken crimes i--
-# gets pulled off stage

uncut viper
#

localtokens crimes so severe you made pathos realize he needed to add limits

velvet narwhal
slender badger
#

I think I mostly get it - so it's not actually reducing the physical amount of code, but it is reducing the amount of copy-paste-edit I have to do since the Includes are the same except for the filename?

uncut viper
#

correct, the single template file will eventually be many different trigger actions in the games code

#

but for you its only one file

rancid temple
#

While you're on the topic of updating MEEP... any chance the debug logging could be toggled to be less?

uncut viper
#

wait

#

no the filename is always the same

#

you reuse the same template, for everyone

velvet narwhal
#

what's going on, i haven't been paying attention, i can teach you localtoken crimes

slender badger
dusk mulch
uncut viper
#

the only thing you need to copy paste, is the Include patches in the content.json

#

and the only thing you change is the values of the LocalTokens

slender badger
#

How does that work? 😆 That doesn't seem like it should work lol

uncut viper
#

thats what localtokens do!

#

they were made with that sort of templating use in mind

slender badger
#

Each Include makes its own copy of a file?

uncut viper
#

each Include patch will load up the same file again but with a different set of tokens to use insid eit

dusk mulch
#

wait i didnt get that, what do local tokens do?

slender badger
#

Huh

velvet narwhal
#

each include does it's own editdata

uncut viper
#

LocalTokens let you define, basically, a DynamicToken for that patch only

#

and that DynamicToken is used inside whatever you are Including

#

(though unlike dynamic tokens the value cannot change conditionally)

#

you could always Include the same file twice already. it just wouldnt do anything bc you'd be overwriting the edits with the same thing

#

now you're including the same file twice but giving it different dynamic tokens each time

calm nebula
#

It does come in handy sometimes

slender badger
#

Ohh, that does change things 👀

uncut viper
#

(my above comment does not apply if you add conditions into the equation of including the same file twice)

velvet narwhal
#

whistles

uncut viper
#

though actually idk what that would make a difference anyway

#

i dont know when it would come in handy to Include the same file twice without localtokens so i would like to be enlightened

calm nebula
#

Special Orders has a delay mode and a nondelay mode

shut edge
#

i added some items to robin as crafting recipies, they are there. however they have the torch description. does it not just pull that from the item id?

uncut viper
#

i dont understand the significance of that in relation to an Include file

calm nebula
#

So it is either inckude if (delay is false) or (delay is true and the delay has passed)

uncut viper
#

could you not just do that within the included file itself?

calm nebula
#

Could that be a query or a dynamic token? Yes

slender badger
calm nebula
uncut viper
#

valid

#

(also ill be honest, i basically taught myself localtokens just now as i was explaining it/writing the template for you Airyn bc i had barely a fuckin clue before how it'd look, so thank you for giving me reason to lmao)

shut edge
#

oh no i'm wrong, my recipies are just broken straight up, ok

brittle pasture
velvet narwhal
#

wdym you didn't learn it with me when i went to go report to pathos not even 3 hours after 2.5.0 cp release? owomuvi

brittle pasture
#

as usual if you need help post code

shut edge
#

"Neon Fence": "335 1 768 1/Field/{{ModId}}.neonfence 20/false/default/{{i18n: fence.neon}}",

#

they're all just this

uncut viper
#

especially since what you were doing ended up not even being allowed! so what i was learning was patched out! nerfed!

velvet narwhal
#

wait wdym, all of my stuff still works

shut edge
#

prob more asset dir stuff

uncut viper
#

using localtokens in the target/fromfile field of the patch they are defined in is not allowed

velvet narwhal
uncut viper
#

which is one of the things we were trying to do

#

with the barn building texture edit remember

velvet narwhal
#
      "LogName": "Portrait/Character loads",
      "Action": "Load",
      "Target": "Characters/{{ModId}}_{{NPCNAME}}, Portraits/{{ModId}}_{{NPCNAME}}",
      "FromFile": "Assets/NPCS/{{TargetPathOnly}}/{{TargetWithoutPath}}.png"
    },```
i reiterate:
![huhvorgar](https://cdn.discordapp.com/emojis/1326853386020061194.webp?size=128 "huhvorgar")
uncut viper
#

thats inside the include

#

you cant define localtokens beneath that fromfile and use them in the same fromfile or target

velvet narwhal
#

oh

uncut viper
#

which is what the original example in the CP docs showed

velvet narwhal
#

we're all going to silently ignore why ints are still working though

uncut viper
#

"Fixed local tokens not working in some patch fields." i think thats what this is

velvet narwhal
#

i'm sorry i broke things within 3 hours and forced pathos to have to update immediately owomuvi

shut edge
#

here's my current json again

brittle pasture
shut edge
#

does not seem to work

slender badger
shut edge
#

brb

velvet narwhal
#

is it because your crafting recipes are called Neon Fence and not {{modid}}.neonfence

uncut viper
#

yeah if you hadnt found those bugs immediately there was a nonzero chance it wouldve been someone else but who didnt understand the docs well enough to even know they WERE Bugs and not them doing something wrong

velvet narwhal
#

listen i don't even know how i managed to latch onto it so fast

shut edge
#

ah, thanks

slender badger
velvet narwhal
#

i guess i ate all of the figure it out

uncut viper
#

and anywhere inside the entries ofc

#

it doesnt HAVE to just be used for Includes

velvet narwhal
#

i don't have anything fairly simple as a template

uncut viper
#

but yes once you're inside the include itself, the tokens can be used anywhere, including Target or FromFile

shut edge
#

yep that was it, thank you

uncut viper
#

anywhere that ordinary tokens can be used

brittle pasture
#

yeah I read the file now, basically the shop entry will try to find the recipe whose key is equal to the item query's internal name, which in this case is the item id

velvet narwhal
#

with localtokens you--
-# gets pulled off stage

uncut viper
#

this specifically is not allowed:

{
  "Action": "EditData",
  "Target": "Data/{{Whatever}}",
  "Entries": { ... },
  "LocalTokens": {
    "Whatever": "etc"
  }
}
brittle pasture
#

so you either need to make the recipe key the same as the item, or set the name of the shop entry to the recipe key manually

slender badger
shut edge
#

did make me wonder tho, can we make fences emit light?

uncut viper
#

this is because you can use tokens like {{FromFile}} or {{Target}} inside your LocalTokens, but if you try to make "Whatever": "{{FromFile}} and then "FromFile": "{{Whatever}}"... it cant do that

#

so its banned from bein used in the same level completely

#

for fromfile and target anyway

brittle pasture
velvet narwhal
#

probably with furniture mods?

calm nebula
#

You can't make a fence glow like that

#

But you can just pit a torch on a fence so

velvet narwhal
#

this is true

uncut viper
#

kinda ruins the vibe of a neon fence to put a torch on it

#

solution: make a neon torch item

velvet narwhal
#

i don't think furniture framework lets you put specific hues to the glow though

#

calcifer is too arcane for me to understand

shut edge
#

what i'm hearing is someone needs to make a fence framework that lets you make them be lights, be dyed, and inherit flavors

slender badger
#

You could maybe make 1x1 lamps that look like fences, but then they wouldn't act like fences 😆

uncut viper
#

please do not lick your fences

slender badger
#

I misread that as "inherit flowers" and thought that sounded lovely, a way to turn your fence into a trellis for flowers 😆

shut edge
#

i love my rainbow light dyed purple strawberrry fence

velvet narwhal
#

airyn are you comfortable looking at object entries?

#

i can probably give you my template + include if that'll help make sense of how localtokens work

shut edge
#

ok i gotta zzz have a good one yall / good luck on your projects

slender badger
#

Maaaaaaaybe? I'm not super familiar with the term, unless you mean just code for adding new objects

velvet narwhal
#

code for adding new objects

uncut viper
#

.6302

slender badger
#

I'll have a look then, yeah, thanks! SDVpufferheart Probably would've saved me a lot of copy-pasting when I made Star Fragments lol

uncut viper
#

o

#

how do u do a quote

velvet narwhal
#

.q 6302

patent lanceBOT
#
#6302

be careful with your answer

slender badger
#

.q 6302

patent lanceBOT
#
#6302

be careful with your answer

slender badger
uncut viper
#

thank u

velvet narwhal
#

how dare you use yourself against me

cyan marsh
#

.q MissCoriel

patent lanceBOT
#
#5656

You can always correct mispellings

uncut viper
#

were localtokens even out before star fragments?

#

you can name quotes?!

blissful panther
slender badger
velvet narwhal
slender badger
#

Well, released it last week, made it over the last two or so weeks

calm nebula
#

I'm still thinking about ichor saying that npcs should react to you eating miracle whip

shut edge
#

wait i got a followup joke: you can call it Fancy Fences Framework, or FFF cuz that's the noise working on fences causes you to make

uncut viper
#

localtokens are only a little over a week old so i think you've got a pass

slender badger
uncut viper
#

10 days to be precise

#

ahh, gotcha

slender badger
#

Okay yeah, they didn't exist then SBVLmaoDog

uncut viper
#

maybe one day the ForEachLocalToken behaviour will be added for some even more confusing templating fun

velvet narwhal
slender badger
#

Ugh, speaking of Star Fragments, why are people suddenly reporting SMAPI saying "underlying asset no longer exists" about it 😒

velvet narwhal
#

that is probably my most sane looking template

#

oh yeah roku was complaining about that during collector debugging

uncut viper
#

thats one of those strange errors that i dont think has a like. super predictable cause

gray bear
#

Have the stars stopped existing...

uncut viper
#

it just kinda happens if an asset is garbage collected at an awkward time i think?

calm nebula
#

Nah you used a token in a texture loaf

#

Lol, it's the harmless error

uncut viper
#

it is harmless

#

but a user will complain

velvet narwhal
#

just 🤏 warning spam

calm nebula
#

Tell them if it shows up only when going back to title is fine

gray bear
#

"Yellow text? Unacceptable!"

uncut viper
#

this is why i log all my debug and errors and warnings in Alert

velvet narwhal
#

cue that time i got a BETAS report for a quest null warning

uncut viper
#

everyone loves purple

gray bear
#

Ourple!!!!

rancid temple
uncut viper
slender badger
#

I figured it was harmless, but yeah 😅 Would changing configs mid-game also cause it, or just returning to the title screen?

rancid temple
#

Not log to user facing console anyways, always need trace

calm nebula
#

Oh, possible changing configs too

slender badger
#

I'll slap a warning about both in the mod description then and call it a day 😆

blissful panther
velvet narwhal
#

uhhh

rancid temple
#

Uh, there's some daily ones

blissful panther
#

Debug builds have a crap ton. SDVkrobusgiggle

rancid temple
#

Animal spawns looks like the most common one I'm seeing

velvet narwhal
#

there's some bush ones if i can remember correctly?

calm nebula
#

Have gone back to using verbose logs

blissful panther
#

logger.Log($"Animal {animal.Value.AnimalId} spawned in {targetLocation.Name}.", LogLevel.Info);

Now this one can easily be trace. Done for the enxt release!

uncut viper
#

can i request that you put it into Alert for the version after that

#

just for fun

calm nebula
#

This entire line is not called at all if the monitor is not verbose

slender badger
#

Oh jeez, somehow it hit nearly 9PM without me noticing and I haven't eaten 😆 Time to go get some food lol

rancid temple
#

I'm considering changing my Collector logs so they don't post to trace when they're disabled, I'm probably creating a tech support nightmare right now

uncut viper
#

(coming soon: Better Debugging Mod! all it does is prefix the logging functions so that everything goes into Info from every mod)

slender badger
#

Thanks so much for all the help SBVCute

velvet narwhal
#

wouldn't it be easier to just toggle the smapi config?

uncut viper
#

Alert? but think of the log fatigue! SDVpuffersquee

blissful panther
#

I actually do have a single alert log in MEEP!

rancid temple
#

Don't let Pathos catch you

brittle pasture
#

I dont see many mods use the delicious purple color, we should log more

uncut viper
#

i use Alert for Graveyards

velvet narwhal
#

.q 6279

patent lanceBOT
#
#6279

(One of the benefits of content packs is that they're generally stable and rarely break in game updates.
Button: "Let's fix that!")

velvet narwhal
#

button was already caught idk what you mean

blissful panther
uncut viper
#

but its only bc it makes the left side purple tbf

blissful panther
#

I mean granted, that situation is "please for the love of god tell me about this", but still. Technically user intervention.

uncut viper
#

speaking of log levels i still feel like the warning about mismatched i18n systems should be a tier above Warn

#

like theyre not exactly mod error but i think users should think it more pertinent to listen to

velvet narwhal
#

is this all because of the .en thing

uncut viper
#

no this is from the i18n subfolders update

velvet narwhal
#

thonkmuvi oh

uncut viper
#

if you have a mod and update it from regular i18n to using i18n subfolders, then if a user just drag and drop updates, theyll have both normal i18n and subfolders in the mod folder

#

but only one is allowed to be used

#

so SMAPI will choose the non-subfolder i18n (which i also feel like it shouldve been the reverse) and log a warning saying that the user should probably reinstall the mod completely to fix it

velvet narwhal
#

yeah i feel like the subfolders should be higher priority since it's the newer feature thonkmuvi

uncut viper
#

which, obviously, will be missing a lot of i18n potentially

#

thats what i thought!

#

no one would be going from subfolders to non-subfolders

velvet narwhal
#

i definitely don't want to combine down

velvet narwhal
#

and especially because of the chaos you were working on with me earlier, if someone
-# definitely not me
were to virtually load their i18n, how would that parse out?

uncut viper
#

Loading the files would still work, just not i18n tokens

velvet narwhal
#

well i specifically targeted an i18n.json, not the default.json

#

or does that part of smapi not care

uncut viper
#

SMAPI doesnt touch the actual files, theyre still there

#

it just only loads one set into the mod's translator

velvet narwhal
#

ah

#

tbf i don't see the big names going from default.json -> default folder

uncut viper
#

its a lot of work to do

#

you have to do it for every single language

velvet narwhal
#

i'm an extra nightmare SDVpuffersmile

rancid temple
brittle pasture
#

yeah I imagine a new RSV-tier expansion will use the feature

velvet narwhal
uncut viper
#

it will definitely come in handy for my npc

brittle pasture
#

Are you reaching 30k lines yet

uncut viper
#

especially if i go thru with wanting to add dialogue for every gift and every day

velvet narwhal
#

yoba i hope not

uncut viper
#

i hope not!

calm nebula
#

Oh god

#

Every gift 😨

uncut viper
#

every vanilla gift, at least

velvet narwhal
#

like, a- okay

uncut viper
#

and some modded ones for big expansions and such

velvet narwhal
#

i thought you were gonna pull an ichor

hard fern
uncut viper
#

dialogue writing is not going to be a big roadblock for my NPC. the writing is going to be the easiest part and my OCs voice comes easily. its the Everything Else thats stopping me

#

(mostly maps...)

gray bear
#

Maps...

hard fern
#

i already shudder at the idea of adding gift tastes for modded npcs to my mods, (which is why i dont want to do it)

uncut viper
#

im hardstuck on designing an interior for her house

velvet narwhal
calm nebula
#

So clearly we need a Button farm map for practice

hard fern
#

maps arent scary :) just surrender yourself to tiled

uncut viper
#

if i was going to do any mapmaking, id consider it a waste of time if it didnt go towardsm y NPC

velvet narwhal
#

my interior is Big Square™️

uncut viper
#

using tiled is also not the roadblock for me, as much as i joke about it

#

im just not visually creative

gray bear
#

U know i just realized in going to have to sell my pride pastries somewhere so id probably just add it to gus to avoid any map sheninigins

#

If i have to add another stall that might be or might be not sve compatible i will combust

hard fern
#

oh man with the number of recipe mods i have i can spend like 10 minutes at gus purchasing all of them

gray bear
#

Better get a loan

brittle pasture
#

my NPCs will just commute to pelican town on bus/train

velvet narwhal
#

oh you've reminded me, i need to set up my IncrementStat query for the interest loans KEK

gray bear
#

Like when i first added the stall for TSP there were a lot less map mods sooo

#

I dont think theres any room anywhere and id make a new custom area when im dead, possibly

#

Dunno how any of yall make maps tbh too much options

#

Im a simple worm

velvet narwhal
#

i'm eating quite well with kailey's tilesheets tbh

uncut viper
#

even the simplest worm can dig an impressive tunnel given enough dirt

gray bear
#

How would anyone ever reach this new tunnel

#

Is there a vanilla location without a warp really

hard fern
#

SDVpufferchickcry you should see the mansion i made

gray bear
#

Sure

brisk kindle
#

does anyone know how to change what CC room a bundle is in? I think my issue is with the spriteindex number that comes after the room name in the Bundles and RandomBundles files.

brittle pasture
#

Sprite index only controls the icons

brisk kindle
brittle pasture
#

to change where they are you change the room/area name

mighty ginkgo
#

in Data/RandomBundles i think it's controlled by the numbers in the Keys field "AreaName": "Bulletin Board", "Keys": "31 32 33 34 35"

brisk kindle
#

I've updated all that with the changes I'm trying to make in both bundles and randombundles, but smapi throws errors regarding the # of the changed bundle and can't generate the CC

hallow prism
#

you may need to provide a log then

brisk kindle
#

Alright. I'll do that tonight when I'm home from work. Thanks everyone 🙂

lucid iron
#

you need to start new save when you change bundle i think

mighty ginkgo
#

there are debug commands to regenerate the remixed bundles at least

brisk kindle
maiden stone
#

Hey all! Here’s what I’m struggling with. I edit a custom farm map in Tiled and save the file. But then SMAPI won’t load the map unless I have copies of the associated tilesheet pngs in the same folder. That wouldn’t be a big issue, except DaisyNiko recolor mod won’t apply to the edited farm map now.

So my question is, how do I fix this? Ideally, I’d like to save the edited farm map so that it doesn’t require the tilesheet pngs in the same folder. Can someone explain what I’m doing wrong? Thank you!

digital thunder
#

Did you work from an already existing map? If you didn’t that might be the issue

hard fern
#

did you select the "embed in map" option?

maiden stone
maiden stone
hard fern
#

^^ yay

gaunt orbit
wide flint
#

Does anyone happen to know which method is triggering the Enricher/Sprinkler placing Fertilizer?

lucid iron
#

It happens on planting the seed

wide flint
#

That's what I know but I can't find anything in HoeDirt.plant()

lucid iron
#

So i think it's placementaction

#

This thing is hardcoded as hell u can just do ctrl+f search for the enricher object id

wide flint
#

Ah, looks like Object.updateWhenCurrentLocation or CheckForActionOnSprinkler

lucid iron
#

Logic was something like, after planting seed, check nearby for a sprinkler with enricher, plant fertilizer if possible

#

It should go through the regular plant method in the end

#

CheckForActionOnSprinkler is where u open the enricher chest

wide flint
#

True, just figured

#

So there isn't really a method I just can call to make my life easier. I want to trigger the enricher more often, not just on seed placement

calm nebula
#

Even doing something like "pls 9 unit enricher" is fun and games in transpilrr land

#

Lol this is stardew

#

Every mod sets a lower "and this is the stupidest transpilrr I've ever wrote"

lucid iron
#

Well, im not sure why u would want to trigger it more often

#

Are u doing some kinda multi fertilizer mod

wide flint
#

Pretty simple, I have a fertilizer that grows the crop instantly. If it's a regrowable plant, the enricher doesn't re-trigger after harvesting

lucid iron
#

It probably means u need to reset the dirt's fertilizer state then

wide flint
#

it's always 0, the fertilizer is never applied to the soil

#

it only grows the crop

lucid iron
#

NotteThink no idea then

#

Maybe yeet the dirt and make new one for good measure

#

I do recall there being a bunch of other specific checks in can plant fertilizer which is can plant seed under the hood

wide flint
#

already patching the can plant fertilizer methods. I just want to somehow re-trigger the enrichers manually

lucid iron
#

Just do ur own postfix then

tribal ore
#

Hey, for schedules, is there a document describing the order of preference that the schedules are applied? If I have "fall" and "Fri" and "rain", for example, which schedule will be applied if it's a fall Friday and which will apply on a rainy Friday in the fall?

wide flint
#

Oh well, it's deep in Object.js. It's pretty much just grabbing the sprinkler location and then do plant() around it... That's easy enough.

tribal ore
#

Asking because it seems like Sebastian's fall schedule is overriding his normal Thursday one (where he goes up to the Railroad to smoke). I would have thought that day of the week schedule would override season, but it doesn't seem to

acoustic summit
#

something like fall_16 would go above it, though

tribal ore
#

Hmmmm. If that's the case, then something is broken because he's not doing what he should on Thu during the fall. There are no other conflicts, so I assumed that the season was overriding the week day

#

The wiki is surprisingly silent on order of preference

acoustic summit
#

I think the listed order is the priority order

tribal ore
#

Yeah? Alright, I'll have to figure out the Thursday thing then. I didn't add a Thursday schedule in my mod, so I was surprised when he seems to just ignore it

#

He should be just doing what vanilla asks him to do, I think

acoustic summit
#

Try adding his thursday schedule to the Thursday's of fall. Just to double check that that works. Like Fall_Thu

tribal ore
#

Sure. I'll copy it over and see what happens. Good idea

#

Thanks

reef kiln
#

it there a way in game to tell what mod adds a warp? they added one to the game that is broken and i want to report it to them.

tribal ore
#

I don't know how to do it in game, but you could try grepping through the json

#

If you go to your Mods folder and open the terminal (MacOs or Linux), type:
find . -name "*.json" -exec grep -l "warp" {} +

reef kiln
#

the problem is I don't know what mod did it. it warp me to a building that had no exit. i had to debug warphome to get out. I just want to tell them it happens but i have no clue what mod it was that added it.

tribal ore
#

You can do this on Windows with WSL, but there might also be a powershell command that you could use. Or... just use Windows explorer search or something (slow) xD

tribal ore
#

Aside from restricting your search to "warp farmer" and looking at modded events in that particular map, I don't know how else to debug the issue 😦 Sorry. Maybe there is a more elegant solution, but I tend to grep my way out of most problems

reef kiln
#

this is what lookup anything call the map

tribal ore
#

Nice. Alright, so you are looking for a mod that adds the "Restaurante" map. It'll probably be the problem mod

#

Most mod authors put their maps in an "assets" or "Maps" folder

reef kiln
#

found it, thanks

tribal ore
#

Nice!

reef kiln
#

it is Defense Division. I will let them know

teal bridge
#

@ivory plume I just discovered that child menus are never disposed when closed the conventional way (e.g. via exitThisMenu) - is that on purpose or is it a bug?

undone jewel
#

Hey guys is it possible to enable layering options for reskinning weapons? I'm trying to reskin the meowmere but was thinking if we can pick which cat head to go with which blade if that makes sense. or is this not possible

lucid iron
#

you can use content patcher EditImage to do that

tribal ore
undone jewel
hard fern
#

omg nexus id 1

dire gust
#

Hey all, apologies for the basic questions to follow. I am sure these are asked all the time but I couldn't find answers in the beginner resources.

  1. How do I know if Content Patcher can handle everything I want my mod to do, or if I will need to code?
  2. Suppose I get started making my mod with Content Patcher and suddenly realize there's something I can't implement. Is it easy to switch from one method to the other, or can they be combined?
gray bear
#
  1. If you tell us we can narrow it down
  2. you can use both CP and any other framekwork/C#, yes
hard fern
#

there was some kind of infographic somewhere but... oh well.
more information is important to give an answer

gray bear
#

yeah there was an image,,, somewhere

fading walrus
#

Wait

#

Lemme grab it

hard fern
#

basically if you want to do someting like changing how something in the game functions/add a new function you need C#

fervent horizon
#

Cp is good for anything that is in the Data folder when you unpack the assets

#

more or less

gray bear
dire gust
#

So sorry, reflex!

fading walrus
#

Courtesy of elizabeth, behold, the mother mind map of modding

#

That covers more or less everything

dire gust
#

I didn't get into the details of what I want to do because I don't have everything 100% nailed down yet. But for one example, I want your spouse/kids to react to specific decor items you have in your house. (e.g. "I hate this wallpaper," "Why do we still have that ugly bear statue," etc.)

dire gust
fervent horizon
#

That sounds c# to me

hard fern
#

hmm i havent heard of any feature in a framweork where npc recognize furnityre

gray bear
#

i'm not sure about the specific placing on image for that

gaunt heath
#

The Elizabeth per capita in the modding community is off the charts

blissful panther
fervent horizon
#

are tools not in CP

gray bear
#

i don't think what Axiom is after is any of the things on the chart

#

but a secret other thing

dire gust
#

I guess some of the things in this image are a bit hard to interpret since I don't really know what elements of the game are hardcoded, what would require changing game code, what "special object behavior" means...

blissful panther
#

Tools yes, but a custom tool just... wouldn't do anything other than be a pickaxe, axe, etc. if you only used CP.

fading walrus
fervent horizon
#

Ah that makes sense

gray bear
#

can npc's be made aware of furniture, even

hard fern
#

with C# magic, anything is possible.. probably.

#

!god

ocean sailBOT
#
lusty elm
#

does anyone know if farmhands check daystart triggers/checks when they log in? or would it only trigger the next day?

tawny ore
gray bear
#

we must expand the chart SBVMischief

fading walrus
#

Hi Matt! RWave

#

I think adding expanded storage does make sense, if Elizabeth can squeeze it in there catnod1

dire gust
#

Anyway, it's good to know you can combine CP and C# -- in that case I don't have to worry about painting myself into a corner if there's something I can't accomplish with CP. I feel more comfortable getting started now and I can worry about the complicated stuff later. 😅 Thanks everyone.

gray bear
#

i wish you a very pleasent modding experience

dire gust
#

Thank you!

hard fern
#

good luck ^^

blissful panther
fervent horizon
lusty elm
#

My trend for learning is more along the lines of Pick an Idea and fling self at it Then I find out what is feasable or not.
Go Learn the Basics after I fail, but with more understanding of doing, and what Basic Is.
Then Everytime I do it again, I add something on, to make sure I'm learning more.

tender bloom
#

Ah, I had Expanded Storage under furniture

#

@tawny ore how does this look?

lusty elm
lucid iron
#

hm some of these arent content patcher frameworks

teal bridge
#

While that's an impressive map, I have to say that it gets funnier each time I look at it.

lucid iron
#

i dunno how u would express that its content pack for tho

lusty elm
#

its labeled under the content patcher note, if its in black text its content patcher

lucid iron
#

i would also add ornithologist's guild and nature in the value under critters, the chart must grow

sly lantern
#

Just out of curiosity

#

Where would "create new books" fall?

lucid iron
#

no i mean, some frameworks are designed to work with contentpackfor, e.g. fashion sense

lusty elm
#

ah, rooThink

lucid iron
#

but post 1.6 it's easier to make stuff work via content patcher

#

e.g. extra machine config

#

these would be red because they r extra mod

#

but they dont need u to go n make a content pack

uncut viper
#

dont need anything fancy for the books themselves

#

making custom power books do anything requires unique custom C# and there is no framework for that

lucid iron
#

can u add a no-op power with just book

uncut viper
#

what do you mean no-op

lucid iron
#

it does nothing but it shows up in the powers tab

tawny ore
uncut viper
#

you dont even need a book for that

sly lantern
#

(me I'm the hater)

uncut viper
#

Data/Powers is what controls the powers tab, it just takes an icon and a GSQ To choose whether its grayed out or not

lucid iron
#

naruhodo so it work by the stat then ukimasu

uncut viper
#

and thats all Data/Powers does. its literally just the menu display

#

for the books it does yeah

lucid iron
#

ig there r some no C# book "powers" u can do then

#

like read this book and then clint sells more ores iunno

tawny ore
uncut viper
#

if the effect you want can be achieved with just CP basics, like conditional patches and stuff or trigger actions, then yeah, its possible

#

but it wont be anything unique or fancy

sly lantern
uncut viper
#

unrelated, but casey's still on her modding break, right

lucid iron
#

well good news C# is more of a java

tender bloom
#

it really is

#

basically you just write java code and then magic! it works (mostly)

lucid iron
#

less faffing about with pointers and alloc, unless you are atra

sly lantern
#

We'll see how it goes then

lucid iron
sly lantern
#

I'm a CS major but usally more of a data girlie so I've never tried a project like this

uncut viper
#

hm

#

i guess i may need to consider patching spacecore then

lucid iron
#

what kinda new crimes are you inventing

uncut viper
#

in this case, its actually a bug in spacecore, that happens when one of my triggers happens

#

at least as far as i can tell. bc im pretty sure i know whats happening, and its spacecore at the top of the stack trace

rigid oriole
#

I have gotten prs to spacecore accepted but it was several months of waiting (not a complaint, Casey had a life outside of my prs lol). I just patched it in the meantime

ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Pro, with 118 C# mods and 281 content packs.

uncut viper
#

pretty sure toolData is null here

#

the problem with waiting for a PR is that it might prevent the player from buying this tool completely as long as the bug is present

lusty elm
#

anyone remember how CP does "Not when"?
I'm trying to setup a trigger for when "X, and Not Y"

uncut viper
#

Token |contains=Y: false

fervent horizon
#

is it a ! in front of it

uncut viper
#

thats for GSQs

fervent horizon
#

ah yeah

lusty elm
#

so If I wanted to make this a Not, How would I phrase it?
"HasFlag": "{{ModId}}.6BundlesComplete"

#

I'm not good at parsing and figuring it out without direct examples, Sorry.

uncut viper
#

"HasFlag |contains={{ModId}}.6BundlesComplete": false

lusty elm
#

Okay that makes sense now, thanks!

#

I Think thats all the CP Done then? Just to test it and see how much red text I create now.

tender bloom
#

SDVpufferlurk hi Draylon!

lusty elm
#

Heyo! Whats up.

night marsh
#

how do you use mods on stardew? like how do you get them

acoustic summit
#

!gs Probably not for this channgel though

ocean sailBOT
acoustic summit
#

If you alrdy have smapi set up and everything, nexusmods is a good place to get mods.

lusty elm
#

ohhh thats what was wrong... I was calling the wrong Stat

night marsh
#

ok cool

tender bloom
nova grove
#

Hi guys, I have just started making mods for Stardew and it has been a great experience so far! However, I would love to branch away from content packs and get into some more complex features using C#. I have hit my first roadblock though as I am wondering if there is a way to add custom items using only C# instead of Content Patcher and C# because the modding wiki for items says you can use the Content API but all I can get that to do is replace other assets and I cannot for the life of me figure out how to create a new item from scratch. If anyone has some boilerplate code that would be great but all help is appreciated!

uncut viper
#

content patcher is a C# mod that adds items

rough lintel
#

yeah don’t add items with c#, that’s just reinventing the wheel

uncut viper
#

there is nothing wrong with adding items with C#

#

you check for the Data/Objects asset in the AssetRequested event in the content API and then you can get the Data/Objects dictionary, which you can insert new ObjectData into

rough lintel
#

ok forget me then lmao my bad

nova grove
uncut viper
#

if you need all the extra bells and whistles that CP adds, like tokens and conditional patching, then its still recommended to use Content Patcher

#

but if an item is just one part of an otherwise C# heavy mod and just needs to exist, its more work to bundle a separate CP content pack in with a C# mod

nova grove
uncut viper
#

if you find yourself recreating content patchers When conditions and whatnot, then you are reinventing the wheel and should probably just not. but no need to worry about it until that point

#

people often do maintan an extra CP pack alongside the C# mod, but it just depends on your usecase and preferences

nova grove
#

Thank you!

tawny ore
#

Check out my Sandwich mod. It has really simple examples using the Content API to add item entries.

gentle rose
#

it also has sandwiches!

rough lintel
#

shameless advertising smh, guards seize him /j

tawny ore
#

lol

lusty elm
#

I named this Test Farm, Red Text, Expecting to see a lot, because I was doing a lot of new CP i've never done before, totalling 400 lines, but The only red text I've got was a you forgot to write the CP bit to insert the icon file into the data.

outer cedar
#

how do you have an npc give more than one item to the player in dialogue?

nova grove
uncut viper
outer cedar
#

sorry for the @

uncut viper
#

i dont mind pings you're fine!

undone jewel
#

I can't figure out why this error keeps poppinf up for my dynamictokens

#

//Dynamic Tokens
"DynamicTokens": [
{
"Name": "Skin",
"Value": "preset",
"When": {
"MeowmereSkin": "{{MeowmereSkin}}"
}
},
{
"Name": "Skin",
"Value": "custom",
"When": {
"MeowmereSkin": "None",
"BladeColour": "{{BladeColour}}",
"KittyFace": "{{KittyFace}}"
}
}

],

fervent horizon
#

Your json is broken somewhere

uncut viper
#

!json please use this to send your whole 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.

fervent horizon
#

like a comma or something is off

blissful panther
#

Yeah, we'd need to see all of it to tell for sure.

undone jewel
blissful panther
#

You're missoing one } right at the end of the file.

undone jewel
#

I just added that actually since i saw the error

#

but the same error still pops with cannot deserialize

fervent horizon
#

is it a format issue? I see you have 2.0.0 as your format. try 2.5.0

uncut viper
#

if you've fixed your brackets then it cannot be the same exact error

#

the issue is a missing bracket after your config tokens

#

it thinks you are adding a config option called "DynamicTokens"

#

because you did not close your ConfigSchema object

fervent horizon
#

yep, good catch

#

just need another bracket after the kityface block before dynamic tokens

patent lanceBOT
#

@uncut viper: do that (1w ago)

uncut viper
#

no

#

remind me in 2 weeks to do that instead

patent lanceBOT
#

all right spiderbuttons but next time you better bring me 20 nirnroot or i ain't doin it (#6487824) (2w | <t:1738703671>)

undone jewel
thin hamlet
#

Did item categories change at all?

uncut viper
#

no

thin hamlet
#

I can eat my rocksSDVpufferdizzy

#

Sorry not categories

#

Edibility

uncut viper
#

if something is -300 its not edible, otherwise it is, that has not changed. if your edibility is set to -300 have you checked if another mod is changing it

undone jewel
#

it really was just a }, missing

#

tysm

thin hamlet
#

Ty

tired flax
#

hi everyone! need a little help--I'm trying to generate a config with instructions but am having trouble. does anyone have a detailed guide on how to make a config? the wiki doesn't seem to go into that part

uncut viper
#

for a CP mod?

tired flax
#

yeah

tired flax
#

oooh ty!

#

this looks more promising

uncut viper
#

for content patcher stuff you generally wanna go to the CP docs first, the wiki is more brief and tends to be more framework-agnostic and only pointing you to CP docs as necessary

#

the unofficial modding wiki has more CP specific tutorials and guides (tho some of them might be outdated still? make sure to check) but i dont know if there is one for config. but you can find it here

tired flax
#

oh cool thanks! i'll check it out as well

outer cedar
#

i put my npcs house in the forest feeling confident and then realised its in the way of the ice fest... SDVconcernedCA

uncut viper
#

surely your NPC is strong enough, they can lift and move their house for the day

#

put it on a hand truck

outer cedar
#

its funny because he does live in a cart so thats exactly what i did!

#

smart living

uncut viper
#

thinking ahead SDVpuffersmart

gentle rose
#

just be ready for people to complain about sve compat if the npc is around the areas of the forest it changes (not that you need to care about those kinds of complaints if you don't want to)

rancid temple
#

What part doesn't SVE change?

gentle rose
#

the... bus tunnel? maybe? probably not

rigid musk
#

@calm nebula Apolocheese for the ping (kinda)

I made a list of all of the special orders + quest givers + quests objectives + rewards for your mod that you posted (maybe it'll get people to not make comments about it possibly)

I tried to post it as a comment but I think the post is locked? maybe? ... Or it just got mad at me for trying to post a big post

#

It doesnt change the desert festival map...

gentle rose
#

(only mentioned because sve has an npc around the festival area of the forest too)

rigid musk
#

[aggressive sobbing]

lusty elm
#

There are always Users who wont read and ask anyways, I've had a User ask me if it was SVE Compatible, when the first line of the description in 2x size Text was "Compatible with SVE" and 4 Comments down was me answering someone else asking with a "Yes".

calm nebula
#

Feel free to post it or DM it to me!

lusty elm
#

it does help tho, i will admit that

cyan marsh
#

I'm gonna give people permission to patch for SVE and stuff.. but only as patches that require the main mod... I don't care to support things like that

royal stump
#

...oh, and warps to the tunnel from places, but the map itself isn't touched SDVpufferdizzy
notepad++ is a little weird about searching tbins

rigid musk
#

AFAIK it doesnt touch the bus tunnel's structure at least...

#

Or the entry way for the Skull Caverns

#

My event woulda broken if it did

#

Does anyone have the commissions page I can't remember how to get it and am apparently inept at searching for it - Tryina find someone to commission next month to add a C# component to my mod so that I can avoid people complaining about the Qi Gem Thing

uncut viper
#

!commissions

ocean sailBOT
rigid musk
#

I am... beyond idiotic

rancid temple
#

The Qi Gem Thing being the scroll that says how many you have?

rigid musk
#

I need it to be bigger and I just know people are going to agressively complain unless I don't get that fixed... and I do not have the patience, time, or energy to actually fix that... or the skills actually

#

none of the above

rancid temple
#

Yeah, it seems like the kind of thing that's actually way harder than it sounds SMCKekLmaoDog

rigid musk
#

I've heard that messing with the UI box things is, in fact, a nightmare

rancid temple
#

I have generally found all UI to be a little nightmarish

cyan marsh
#

it is soooo much

rancid temple
#

I know some people are perfectly fine with it though, so shrug

tawny ore
#

I wouldn’t mind taking a look at it. I like taking on random challenges just to familiarize myself with parts of the code I haven’t looked at before.

uncut viper
#

didn't atra or someone take a look and suggest it might be as simple as just changing one variable in a constructor for the currency box or something

rancid temple
#

Kind of a needle in a haystack situation, unless atra or someone is lurking and chimes in SMCKekLmaoDog

uncut viper
#

unfortunately I'm on mobile and can't peruse ilspy

rigid musk
#

tbh_seen I have no clue honestly what was said about it... I just know it's FAR outside my wheelhouse which is why I will be throwing cash money at someone for doing it FOR me B)

dusk mulch
#

is there any action/command/property i can use that when i right click on a particular tile it gives me an item? (until meep comes out)

vale stream
#

Hi! I'm not sure if someone else said it already, but item extensions only supports custom color ATM

However, I can see about adding this! It might take me some time, but it's not impossible SDVpufferthumbsup

pine elbow
#

Tiled question: Do you have to make every frame 100ms or just use the same number for every frame?

naive wyvern
naive wyvern
turbid urchin
#

Hey, can somebody maybe help me out under what condition I can make the game play music while it's raining or night?
I know there are different circumstances like "spring1" "maintheme" and so on, but I would like to have some ambience when it's raining or thunderstorming.
I was looking at old mods that utilized "Custom Music" but hence it's not required and used anymore since 1.6.X I wanted to make it possible again.

uncut viper
#

iirc rain is kinda half (or fully?) hardcoded to override other music anyway

turbid urchin
#

So I assume it's rather not possible by just utilizing content patcher?

uncut viper
#

theres no way to force music to play on cue with Content Patcher anyway regardless. BETAS has a trigger action action that can change the music, which will work if you can trigger it at the time you want (so at night should work) but it will stop any previously playing music (potentially jarringly suddenly) and when i was testing it, it just didnt work when it was raining

tender vault
#

@ivory plume Thanks so much for all your modding work. I saw your reply on Chests Anywhere not working for Android because of the way ShopMenu constructors are set up in SDV in Android (https://www.nexusmods.com/stardewvalley/mods/518?tab=posts page 2). Just wondering if there are any more specific pointers you might be able to give Android SMAPI master @frosty hull on a compatibility rewriter to address this? I'm sure both of you are bored of hearing about Chests Anywhere's incompatibility with Android SMAPI - I'm no modder but just wondered if linking the two of you directly might help generate a solution to what you appear to describe as fairly straightforward (?) problem. It would be amazing, thanks.

Nexus Mods :: Stardew Valley

Access your chests, dressers, fridge, shipping bin, and Junimo huts from anywhere and organise them your way. Transfer items without having to run around, from the comfort of your bed to the deepest m

turbid urchin
ivory plume
# tender vault <@226803198218731520> Thanks so much for all your modding work. I saw your reply...

Hi! Yep, I posted a comparison of the methods in my comment there:

PC:
   public ShopMenu(string shopId, Dictionary<ISalable, ItemStockInformation> itemPriceAndStock, int currency = 0, string who = null, OnPurchaseDelegate on_purchase = null, System.Func<ISalable, bool> on_sell = null, bool playOpenSound = true)
   public ShopMenu(string shopId, List<ISalable> itemsForSale, int currency = 0, string who = null, OnPurchaseDelegate on_purchase = null, System.Func<ISalable, bool> on_sell = null, bool playOpenSound = true)

Android:
   public ShopMenu(string shopId, Dictionary<ISalable, ItemStockInformation> itemPriceAndStock, int currency = 0, string who = null, OnPurchaseDelegate on_purchase = null, System.Func<ISalable, bool> on_sell = null, bool playOpenSound = true, string context = null)
   public ShopMenu(string shopId, List<ISalable> itemsForSale, int currency = 0, string who = null, OnPurchaseDelegate on_purchase = null, System.Func<ISalable, bool> on_sell = null, string context = null)

So SMAPI on Android would just need to add a rewriter which takes the PC signature (without string context = null) and converts it to the Android one (with string context = null). The context is probably unused; I think the Android devs just didn't fully update the Android code for the PC changes.

tender vault
rigid musk
#

NPCWarps have to be on the buildings layer right?

latent mauve
#

NPCWarps are map properties, not tile properties.

rigid musk
#

I know that I'm trying to uhhh add the property via CP

latent mauve
#

You might be getting them confused with the TouchAction Warp and Action Warp properties, which are meant for players. 🙂

rigid musk
#

since whatever im doing is not exactly working by editing the map directly

latent mauve
#

Right, in order to add a NPC Warp, you need to edit the Map Properties, so it doesn't go on a "layer" at all

#

I can grab an example of the CP code from my NPC Apartment mod, one moment.

rigid musk
#
         "Action": "EditMap",
         "Target":"Maps/QiNutRoom",
         "MapTiles": [
                {
                    "Position": { "X": 1, "Y": 6 },
                    "Layer": "Back",
                    "SetProperties": {     "NPCWarp": "AngelOfStars.Mrqifriendable_QiOffice 3 5"
                    }
                }
            ]
        },```
latent mauve
#
    "LogName":"Set NPCWarp for Elevator",
    "Action":"EditMap",
    "Target":"Maps/FRL_NPCApt_Lobby",
    "MapProperties":{
      "NPCWarp": "26 22 FRL_NPCApt_Elevator 8 14 27 22 FRL_NPCApt_Elevator 9 14"
    },
}```
rigid musk
#

i was doing this .... i see

#

mmmmmmmm

#

I was doing that originally but it wasnt working

latent mauve
#

Then you may need to doublecheck that nothing else is changing that map property and that the location name you are warping to is correct?

#

Based on your Tile Properties attempt, it looks like your code should probably be something like: { "LogName":"QiOffice NPC Warp", "Action":"EditMap", "Target":"Maps/QiNutRoom", "MapProperties":{ "NPCWarp": "1 6 AngelOfStars.Mrqifriendable_QiOffice 3 5" }, }

#

(I recommend using the logname to make it easier to do a patch summary if it doesn't work so you can check if it got applied at all)

rigid musk
#

I know at the very least the location is correct :| but now its telling me
"[Content Patcher] Ignored (CP) Friendable Mr.Qi > Include data/Locations.json > EditMap Maps/QiNutRoom #2: must specify at least one of AddWarps, FromFile, MapProperties, MapTiles, or TextOperations."

#

I have that exact thing without the log at the moment

#

log name

latent mauve
#

Then you somehow missed specifying Map Properties or it doesn't like the syntax, I think

#

copy/paste your code?

#

May very well be something silly like an extra space

rigid musk
#

I added the Logname and for some reason it is now not throwing that in the console .. why i dont know but alright then

latent mauve
#

(the number of times I've accidentally made it "Map Properties" instead of "MapProperties") SDVkrobusgiggle

#

If adding the logname fixed it, it may have been a stray or unclosed "

sly lantern
#

I'm trying to make a greenhouse mod and I'm done with making the map on tiled, but what do I do now? I already read the wiki page on making maps but I'm still lost

latent mauve
#

but as long as it works now

lucid iron
#

u need to make a content patcher mod now

latent mauve
#

Are you editing the existing Greenhouse's interior? So keeping the vanilla location data and just changing the map being loaded??

latent mauve
#

Then yep, your next step is creating the Content Pack (aka Content Patcher mod) and coding it to replace the map file for the Greenhouse.

lucid iron
#

btw, did you start with a copy of greemhouse.tmx from vanilla

#

u need to keep all ur tilesheets named the same

sly lantern
#

I need to clean up my tilesheets but if after that all that's missing is the CP mod then it sounds easy enough

#

Tysm!

latent mauve
#

cool, that means your map will already have all the required map properties on it, which will make things way smoother for you. ❤️

lucid iron
#
    {
      "Action": "Load",
      "Target": "Maps/Greenhouse",
      "FromFile": "assets/{{TargetWithoutPath}}.tmx"
    },
rigid musk
#

pain i genuinely cannot figure out why his schedule keeps saying he cant get there when i have directly made it possible for him to get there

latent mauve
#

Did you sleep once so his pathfinding can update?

rigid musk
#

Do you have to do that

latent mauve
#

Yes

rigid musk
#

I swear to all that is holy

latent mauve
#

The path is determined the previous night

rigid musk
#

Several hours. Several Hours of work because I thought I wasn't doing something right

outer cedar
#

At least you know now SDVpufferthumbsup

latent mauve
#

If you are EVER touching a character's schedule or warps and you aren't creating a new save, you have to sleep to prevent pathfinding false errors.

#

So now you know

rigid musk
#

GruHolUp I am going to commit various atrocities upon this blue man

#

okay that was not, in fact the issue... so I didn't waste hours of my life maybe

#

maybe

latent mauve
#

still giving an pathing error in the log?

rigid musk
ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Home, with 17 C# mods and 1 content packs.

rigid musk
#

this same one yeah

gentle rose
#

"while honouring gender Male"... I wonder if/why that's relevant

latent mauve
#

it's likely not, Spacecore spits that out any time a schedule fails.

#

Even if it's a "missing location" error causing it

rigid musk
#

yeah i figured that it was just saying that part because ... it says that part

latent mauve
#

You have the nut room unlocked, yes?

outer cedar
gentle rose
#

I am not, no 😅

#

that's ichortower

outer cedar
#

Ohhhh I'm sorry I'm a bit dyslexic haha 😅

hard fern
#

Iro, ichor, looks similar enough? Haha

gentle rose
#

but I'm sure they'd appreciate hearing that!

#

(I have made no content packs at all lol)

hard fern
#

(time to get content packing)

#

.<

latent mauve
#

There's not anything there that would be blocking the warp or otherwise preventing access for the NPC?

#

(by Loading, I mean, adding an entry to Data/Locations)

normal trout
#

UM. I have no idea what just happened, and this log looks like CHAOS to me. Here's a walkthrough of my last 10 minutes:

I've been working on my greenhouse mod today (froststar's modest greenhouse). I finished tinkering with it, and loaded up a few new save games to take screenshots of options/configurable stuff so that I can post the mod now that it's done. Cool, great, everything worked just fine. I finished that and exited the game.

So then I remembered I have another mod I made that I use personally, to apply a change to the backwoods map. It's small, and while I'm going to be adding a new mod to nexus (the greenhouse) I figured I'd throw the backwoods edit up there, too. So I did some tweaking on the map file to make it less personalized and more releasable, threw in two config options, and then fired up my game to test and grab some screenshots.

Apparently this broke absolutely everything???? Best I can tell, the first thing wrong is with hxw tilesheets, which I use in the greenhouse (but hadn't edited anything with since I last successfully launched the game), and which are not used in the backwoods map at ALL. So like. How did I break everything between two game launches when I made very minimal changes o.o Please help. Unsure if it's related, but Steam DID say they were unable to sync my save files when I tried to launch the game before everything broke, so that could be related? Unsure.

Log: https://smapi.io/log/cd8e08bf3e5e4fae9da54c5f23c1642d

ocean sailBOT
#

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

latent mauve
#

oh wow, SkiaSharp error (bitmap not loading is memory shortage, try using less intensive mods or restarting computer first)

rigid musk
gentle rose
rigid musk
#

(and the general expected path he should be taking to get where he's supposed to go)

calm nebula
#

The scheduler is gender locked

#

Some paths are men only other are women only

gentle rose
#

(close some things so that you have more available memory and try again)

calm nebula
#

Nbs like myself can go anywhere

normal trout
latent mauve
#

So, the solution is to make Qi Undefined again? 😛

gentle rose
latent mauve
#

(it's hopefully/probably not that, I'm looking at the log still)

rigid musk
#

Would that... would that matter for added schedules

gentle rose
rigid musk
#

also quick question - multiple When conditions are just separated by a comma right

gentle rose
latent mauve
#

Ahhh, I forgot, you're using CustomLocations and not the Data/Locations asset in yours.

rigid musk
#

I don't really want to make his GI schedule dependent on if the player unlocks the nut room but It would make sense all things considered

latent mauve
#

I, uh, am not sure how to troubleshoot CustomLocations not working, other than to ask you to try to convert it to Data/Locations, which is really easy actually.

gentle rose
#

oh, could the problem be caused by CustomLocations? since it's super deprecated

rigid musk
latent mauve
#

Yeah, if the content patcher rewriter is deciding not to rewrite it because of the format number.

rigid musk
#

sad wheres the documentation on locations...

ornate trellis
#

random question, can one make new bobbers without the need of C# asking for a friend

rigid musk
#

If you want them to do custom things probably not

latent mauve
rigid musk
#

agony thank you..

ornate trellis
#

hm, dang

latent mauve
#

doublecheck the number of closing }, I'm grabbing code snippets that are part of bigger ones xD

#

but indoor location entries are super easy, you don't have to fill out much unless you want something fancy.

rigid musk
#

pain now it just says it cant find the map file

brave fable
#

do you have a matching Action: Load, Target: Maps/MyMap, FromFile: assets/myfunnymap.tmx for the MapPath: Maps/MyMap value?

rigid musk
#
            "LogName": "Load Room Location",
            "Action": "Load",
            "Target": "Maps/AngelOfStars.Mrqifriendable_QiRoom",
            "FromFile": "assets/QiRoom.tmx"
        },
        {
            "LogName": "Load Office Location",
            "Action": "Load",
            "Target": "Maps/AngelOfStars.Mrqifriendable_QiOffice",
            "FromFile": "assets/QiOffice.tmx"
        },
        {
            "LogName": "Load Warp Room Location",
            "Action": "Load",
            "Target": "Maps/AngelOfStars.Mrqifriendable_QiWarpRoom",
            "FromFile": "assets/QiWarpRoom.tmx"
        },```

do you mean like this?
brave fable
#

yep, just like that

#

if the map file wasn't found, either the Target doesn't exactly match any MapPath , or the FromFile doesn't exactly match any TMX file in your mod

#

alternatively, your load actions may not be called at all, which you can doublecheck with a patch summary

drowsy pewter
#

blueberry, i told one of my friends I was working on a cooking-related mod for stardew valley and they very enthusiastically told me "I fucking love the Love of Cooking mod it's like my favorite mod ever"

brave fable
#

(if they're in the same file as the location loading though then this is unlikely)

latent mauve
#

If you are using an include for the actual map Loads, then you will want to place the include before the Data/Locations code. The order is a bit finicky for this.

#

(if you have the Load Map and EditData for Data/Locations code in two different JSON files)

rigid musk
#

the load for the locations is done before the json for the locations is being loaded but its still not working :|

#

by that i mean im directly loading the map assets through the content json and then later on i have the content json including the locations json... which theoretically would mean it loads after

#

mm wait i think i know what its doing

#

no... no i dont

ocean sailBOT
#

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

brave fable
#

your MapPath values are incorrect

#

"MapPath": "assets/QiRoom"
"MapPath": "assets/QiOffice"
"MapPath": "assets/QiWarpRoom"

#

these are asset keys, not file paths, so they should match your Target values:
"Target": "Maps/AngelOfStars.Mrqifriendable_QiRoom"
"Target": "Maps/AngelOfStars.Mrqifriendable_QiOffice"
"Target": "Maps/AngelOfStars.Mrqifriendable_QiWarpRoom"

rigid musk
#

Ah..

brave fable
#

the clue here is that the error says FileNotFoundException: Content\assets/QiWarpRoom.xnb, where the XNB type (and Content path) hints that it wants a game asset, not a TMX/TBIN map file

tribal ore
#

Ok, probably a really dumb question but: Sebastian is missing when Spirit Eve starts. A "debug where seb" shows him in his room. I didn't think that normal schedules would affect festivals

#

I tried copy-pasting the setup stuff from vanilla unpacked into my mod just to check. He's still gone

latent mauve
#

Is this possibly a year 2 festival and your mod doesn't place him in year 2?

brave fable
#

characters in festivals aren't real, they're paid actors. the actual NPCs are still wherever they were in the world

tawny ore
tribal ore
drowsy pewter
tribal ore
#

My mod changed nothing about Sprit's Eve but his dialog

latent mauve
#

And you're not running any other mods alongside yours when testing?

tribal ore
#

And he's been in every other festival so far

tender bloom
#

He’s definitely there normally

tribal ore
#

Nothing else to change behavior

latent mauve
#

And nothing in your mod is changing the map, correct?

tribal ore
#

No. I haven't added any custom maps even yet

#

Just dialog, schedules, gifts, etc

#

Custom events

#

But no art, maps, etc

brave fable
tribal ore
tender bloom
#

My friends have simply decided I’m Stardew famous despite ample evidence to the contrary

tribal ore
#

Ze emo boy is gone

drowsy pewter
#

I told people I datamined ACNH. it worked for a while but they stopped updating ACNH after like a year so it's completely out of the public consciousness now

calm nebula
#

What is acnh

tender bloom
#

The other cute game

#

Animal crossing

rancid musk
#

(I was just reading back and noticed this discussion and want to clarify that I never considered logging BC exceptions with another mod's logger. I considered doing that for exceptions from other mods that bubble into BC because those mods use BC's API.)

tender bloom
#

Except it’s secretly about stock markets maybe

rancid musk
#

*stalk markets

drowsy pewter
#

Stardew valley if you could remove all the ugly people from town

#

Wait I guess thats what portrait mods are

calm nebula
#

It's so cold

#

So cold

#

Standing outside the costco

#

Getting gas like a scrub

tender bloom
#

So cold even in the car

calm nebula
tender bloom
#

I spent like 20 min scraping ice off the windshield

tribal ore
#

Ok, if I wanted to test this on a completely fresh save again, would spirit eve start automatically if i set the day to fall 27 with debug commands?

tender bloom
#

Sleep into the day

#

Make it the 26th and sleep into the 27th

#

Festivals don’t love jumping to the day sometimes

brittle pasture
tribal ore
#

Perfect, thank you. And is it safe to copy the save folder somewhere else while the game is running, just in case it's this save in particular that is broken and I need to look at it later?

rancid musk
#

The pandemic acnh craze was wild

tender bloom
#

That sounds less safe but probably ok if it’s not while it’s saving

gentle rose
#

I see atra continues to taunt the rest of us with how they "have a life" and "go outside" z_goosebonk /lh

tribal ore
#

Yeah, before going to bed on the borked day

#

Thanks guys

tender bloom
#

Outside is bad, it’s not a taunt 😛

calm nebula
#

Do I actually have a life

#

It doesn't feel like it

tender bloom
#

You’re going to beat my high score 😛

#

I think mine is ~12 and it was mostly because I turned into sludge

ivory plume
#

For the first time in 10 months, I have zero unread notifications on Nexus. SDVpufferparty

#

(Also: cherrywave incoming.)

tender bloom
#

Woah!!!

#

I haven’t hit that in a long time…

#

Except by clicking “mark all as read” a few months ago maybe

calm nebula
#

(Sorry)

tender bloom
#

lol it’s not just your mods, it’s also mine

#

And aster’s

unkempt beacon
#

Can someone with no coding experience make reskins? Currently the texture pack/reskin I’m using for seeds doesn’t have support for all SVE seeds, and I want to change that. I also want to change how 24h clock time doesn’t take up the whole time bar

calm nebula
#

Well I'm not helping matters

tender bloom
#

The clock one may or may not be harder

#

The seeds one is fairly straightforward

#

!cp

ocean sailBOT
tender bloom
#

That first link should get you started, then read the EditImage section of the documentation

teal bridge
#

Oh never mind, someone beat me to it. (That'll teach me not to skim)

ivory plume
#

(Spent the last week answering all the comments on Cherry's mods, in preparation for the upcoming updates to her mods.)

unkempt beacon
#

I didn’t know CP uses .xnb files, is that all CP mods?

tender bloom
#

No, it uses png

#

And json

ivory plume
#

Content Patcher generally doesn't use XNB files (though you can if you want).

tender bloom
#

Right, I forgot about that—but you probably shouldn’t use XNB for compatibility reasons

unkempt beacon
#

Oh ok I must not have read close enough lol

unkempt beacon
drowsy pewter
#

Are you getting confused by something you're seeing on the wiki page?

rigid musk
#

sadgecat changing the location stuff did not, in fact, fix the schedule

latent mauve
#

Other thought: Is the schedule edit happening after the location stuff?

#

(It needs to be)

rigid musk
#

What do you mean?

#

Like is the schedule loading after the locations?

latent mauve
#

In your content JSON file, is the schedule EditData block after all the location blocks?

#

Since it loads the patches from top to bottom (with bottom being last)

#

And if yes, if you change your schedule to go somewhere else that's not a custom location, does THAT work?

#

I'm wondering if the nut room itself is just weird maybe

uncut viper
#

order of patches like that shouldnt matter afaik

rigid musk
#

The schedule is also loaded as an include so it would be done after anyways i think

uncut viper
#

only order between patches editing the same thing

#

includes are all parsed in first, then all Load actions are done, then EditDatas

rigid musk
#

I know that the first schedule (which is just in the casino) works fine

latent mauve
#

The order shouldn't matter but it definitely does in some cases with some patches.

#

You never know if someone is using token weirdness (nesting) that requires the token to be resolved first.

uncut viper
#

tokens are always resolved first before anything

latent mauve
#

Yeah, Button, what I'm saying is I had to help someone once that had a token that loaded from another token and they were loading their tokens in the wrong order. 🙂

rigid musk
#

I can share the schedule itself but the error is just that he cant get to it... for... some reason

latent mauve
#

Unrelated to here, but that's where my patch ordering suggestions derive from, just in case

rigid musk
#

even with the Location data being edited

latent mauve
#

And Qi moves from the nut room to the casino in the other schedule?

rigid musk
#

No he doesnt go to the nutroom at all in that one

#

His two 'primary' schedules are to go to the casino and then alternatively go to the nut room

latent mauve
#

My question is whether or not he can leave the nut room or if there's some hardcoded weirdness happening there.

rigid musk
#

He can leave the casino

#

he starts in his room and goes into the casino

latent mauve
#

right, but nut room?

#

I mistyped before because I was reading your line

rigid musk
#

he cant even get into the nut room though

latent mauve
#

Ahhh, did you give him a warp to the nut room anywhere?

#

Because the "normal" path is the IslandFarm, which is excluded from Pathfinding

#

The NPCWarp code earlier is FROM the nut room

#

So you'll need one that goes the other way too

rigid musk
#
         "LogName": "Qi Nut Room to Office",
         "Action": "EditMap",
         "Target":"Maps/QiNutRoom",
         "MapProperties": {
         "NPCWarp": "1 6 AngelOfStars.Mrqifriendable_QiOffice 3 5"
            },
        },
        {
         "LogName": "Qi Office to Nut Room",
         "Action": "EditMap",
         "Target":"Maps/AngelOfStars.Mrqifriendable_QiOffice",
         "MapProperties": {
         "NPCWarp": "2 5 QiNutRoom 2 6"
            },
        },
        {
         "LogName": "Qi Room to Office",
         "Action": "EditMap",
         "Target":"Maps/AngelOfStars.Mrqifriendable_QiRoom",
         "MapProperties": {
         "NPCWarp": "30 4 AngelOfStars.Mrqifriendable_QiOffice 4 8"
            },
        },
        {
         "LogName": "Qi Office to Room",
         "Action": "EditMap",
         "Target":"Maps/AngelOfStars.Mrqifriendable_QiOffice",
         "MapProperties": {
         "NPCWarp": "4 9 AngelOfStars.Mrqifriendable_QiRoom 30 5"
            },
        },```

His room already has a tileproperty on it that moves him from there to the office itself as well (and from the office to the room)
#

though theroetically I could just add two more through content patcher instead that do that too

latent mauve
#

I am still confused by what you mean by a "tile property that moves him" because NPCs typically won't respect those unless its the normal TouchAction Warp and it's on the back layer.

rigid musk
#

NPC map property thing

#

I've been doing this for a few hours sorry my brain does not like words

latent mauve
#

Okay, clarification was important there. xD

#

Try adding it via CP just in case something went wrong with the Tiled map property?

rigid musk
#

that's why I sent the pictures heehoo - I will try that ... and see if it does ... anything

latent mauve
#

You'll need to make sure that you include ANY NPCWarp properties in your code, since it'll replace and not append/prepend.

lucid iron
#

@ornate trellis can i have the stalk.png lemme try stuff

rigid musk
#

Idk why I didnt realize that when i literally did it but here we are

latent mauve
#

And all of those locations are valid now, right?

#

You can warp directly to them with those names?

rigid musk
#

yep they all load in, no errors in SMAPI

latent mauve
#

try to debug warp to them just to verify

rigid musk
#

at this point I should also add a CJB warp to his damn office

ornate trellis
rigid musk
#

i go in there more than enough u_u

#

I know I can get into the room at least cause I already went in there

#

yeah the office loads in just fine too

latent mauve
#

I know the Nut Room isn't set to ExcludePathfinding by default, I checked that earlier.

rigid musk
#

the fact that there's a lockeddoorwarp for the player shouldnt interfere with him getting into the office right? I mean it doesnt with him getting into his room from the casino but just in case

latent mauve
#

So long as none of your other rooms are Excluding pathfinding (and again, by default, they won't be), then it shouldn't be creating an issue

#

Lockeddoorwarp shouldn't matter for the NPCs, I think they mostly ignore doors anyway

calm nebula
#

no, they can take certain doors

#

doors

latent mauve
#

By ignore I meant, they just go through them, but I'm happy to hear about exceptions if it's relevant here.

#

other than the women and men only bathhouse doors, of course. I know about that one. 😛

uncut viper
#

@rigid musk (unrelated to your current discussion)

rigid musk
#

mine gott

reef kiln
#

how do I know what number tree is mahogany in the wild tree file?

rigid musk
#

does it... does it go higher than that?

uncut viper
#

it will change size whenever it needs to

rigid musk
#

this is the best thing i have seen today thank you, my mood is 10x better

uncut viper
#

(do you mind if i just release it as a standalone mod since it does Walnuts too (even though those have a kind of hardcoded limit anyway))

#

and in caseanyone else goes wild with qi gems in their mod

rigid musk
#

Not at all! I'll just mark it as a dependency :3

latent mauve
#

is it possible to do the comma separator thing like Moolah does?

lucid iron
#

oh i imagine it prob work with ub currency right

#

since it also calls this bit of ui

uncut viper
#

UB does its own draw functions

#

it doesnt use the same SpecialCurrencyDisplay class

rigid musk
uncut viper
#

also i dont know what moolah does or how it works

#

i will accept no money for this!

calm nebula
#

ugh, I forgot how C# worked with CreateDelegate :pufferchicksigh:

#

do we have not a pufferchick sigh

uncut viper
#

it was fun to do, thats good enough for me

rigid musk
uncut viper
#

actually, Moolah might just work with it by default

rigid musk
#

Thank you so much

uncut viper
#

assuming it changes the MoneyDial class

latent mauve
#

I have no idea how Moolah does its magic

uncut viper
#

the background slots are handled separately from the actual text

#

and im not touching the actual text

calm nebula
#

interesting. @brittle pasture there isn't a data-only-way to set OrderObjective FailOnCompletion

uncut viper
#

also it was not quite as easy as changing the number of digits bc of gd. cursors2.png

calm nebula
#

would be interesting in C# land, but not for non C# land

uncut viper
#

vanilla just draws this

#

it doesnt piece it together

brittle pasture
#

sad SDVpufferpensive

calm nebula
#

see, it's a dirt simple easy transpiler to SET

#

except well

rigid musk
#

would having the warps on the maps themselves AND content patcher be causing some sort of issue?

calm nebula
#

I guess it'll just be Data : {"FailOnCompletion": true}

#

seem reasonable as an api.

rigid musk
#

Because thats the only thing i can think of at this point ... otherwise there's not really a reason he shouldnt be able to move back and forth between the office/nutroom/his room

calm nebula
#

if only SOTE (the hidden C# half of this stupid special orders mod) was still alive 😛

latent mauve
#

Because I'm honestly running out of ideas

rigid musk
#

I did make sure that each of the warps was spaced out by a tile so that he wasn't walking over the tile he actually has to warp on... if that made any sense

#

im currently loading the game with only his office schedule to see if he can get in there at least

ornate trellis
latent mauve
#

I know I had to space my warps out by 2 tiles in the elevator, which was a nuisance.

#

(I had tight corners, so the NPC AND the player would brush against the other warp tile when attempting to turn the corner.)

rigid musk
#

office schedule loaded without putting the error in the console at least

#

Hm.. okay he just stops and stands there... which means maybe its just something with the office itself

#

nevermind i was wrong he goes into the office

#

Qi you peeve me so

#

okay at least this narrows it down to just being something wrong with him going into the nut room... which i dont get because theres nothing in his way?

rigid musk
dusk mulch
#

wait did you make mr qi dateable

rigid musk
#

No... Not yet anyways. Maybe if people want it bad enough

#

Friendable though :)

#

He has a lot of dialogue ... and will have ... [checks notes] 13? additional cutscenes (15 I think with SVE)

dusk mulch
#

:o

rigid musk
#

Im currently trying to get his schedules working (without SVE) and then ill do the SVE ones... and then I do cutscenes (without SVE) and then the ones With SVE and then hes ready for the all mighty Beta Testing Phase

#

i also have to put a trash can in his room because i think that would be fun

uncut viper
#

Fatal error. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
oh thats fun

#

havent had one of these in a while

rigid musk
#

👀

latent mauve
#

(honestly, there's no reason why you couldn't make the warp-ins right above the normal door area, since you're not likely to see him visually teleport in anyway)

#

Most NPC Warps in vanilla like to pretend they came in through the same door as the player, so they'll poof in right above the interior door.

rigid musk
#

it was for the aesthetics u_u

latent mauve
#

ah

rigid musk
#

fancy warp rune for the blue man y'know

latent mauve
#

Well, just try to move it real quick to see if it even helps.

#

To be completely honest, if I saw a NPC appear on a little teleport circle, the first thing I'd try to do as a player was teleport with it too, and be bummed when I couldn't.

#

In which case, it seems silly to make it a purely NPC Warp. xD

rigid musk
#

To be fair I was considering letting the player use it as a warp

#

I think you can make a conditional one that you can use if you get friendship high enough with an NPC

uncut viper
shut edge
#

is there a particular logic behind using . vs _ in internal names?

#

just noticed i'm using both...lol

tender bloom
#

no

uncut viper
#

just convention

tender bloom
#

I think there used to be a few weird edge cases where one or the other caused weird bugs

shut edge
#

ah ok

tender bloom
#

but I heard that's gone now

uncut viper
#

if you care, some mods rely on underscores for detecting what mod is applicable in the context

#

Lookup Anything, for instance

shut edge
#

that might be worth doing

#

i've been slightly hesitant to change things like that in case it breaks compat with old saves using this mod buuuuuut maybe i should go ahead

uncut viper
#

it would break every existing item that had the internal name changed

shut edge
#

yeah

uncut viper
#

so i wouldnt do it now

shut edge
#

eh this one only had like 100 some downloads anyway

#

may as well do it now while i'm overhauling anyway

ivory plume
#

(The convention is _ between the mod ID and item ID, to distinguish from the . commonly found in mod IDs.)

brittle pasture
#

I've been using dots since forever lol, too late to change (both my old mods and my habits)

lucid iron
shut edge
#

ship it, perfect

tender bloom
#

it's the attack wind turbines

tiny zealot
tender bloom
#

there was an event weirdness

#

Lemurkat found it

uncut viper
#

did the pet breed id thing just trade underscore weirdness for pipe weirdness now since thats used as a delimiter

tiny zealot
#

probably? but i think pipes are not allowed in unique string ids

shut edge
#

can editimage be done from like any file or does it need to just be the stuff you wanna replace with by itself?

#

seems like it should work...

#

might need a FromArea, if that's a thing

normal trout
#

You can specify a from area and a to area so I think anywhere should work

shut edge
#

i'll try it out later, thanks

uncut viper
#

a quick test shows nothing stopping you from using pipes in string ids

calm nebula
#

gonna use 😻

uncut viper
#

i support it

shut edge
#

one of those weird blocks of text full of emoji but it's a i18n section

ivory plume
#

(Note that using special characters in unique IDs will cause issues. For example, you won't be able to reference a string ID using pipes in any Content Patcher tokens or conditions.)

uncut viper
#

content patcher limitations i understand, i was thinkin more about the vanilla games handling of them