#making-mods-general

1 messages · Page 308 of 1

orchid glade
#

Like, they gave the mermaid pendant, it's too late to back out !

whole raptor
#

Oh, very neat, thanks! Saves me on a ton of dynamic tokens

trim sand
#

Question, is there a way to prevent farm animals from walking on some tiles of a farm map?
I happened to notice its really annoying when farm animals wander under the walkable leaf tile hidden paths like the secret woods / forest farm have

lucid mulch
#

there is an npc barrier tile property iirc, though it affects monsters as well

vernal crest
#

As far as I know, yes the vanilla wedding is bugged on several platforms. It has been reported on the forums but I don't know if there's any plan to fix it lol

drowsy pewter
#

hilarious

opaque field
#

Smapi just spit a whole bunch of stuff at me starting with " Ignored The Wolf > Generic Dialogue > Data/Dialogue/GenericDialogue.json > Shane's Random Dialogue: error reading info. Technical details:
System.InvalidOperationException: Error parsing '}}' as a tokenizable string
---> ContentPatcher.Framework.Lexing.LexTokens.LexFormatException: Unexpected EndToken, expected StartToken or Literal" but VSC doesn't see any errors in my workspace and I"m having a helluva time figuring out what it means

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.

opaque field
#

🤯🤯 oh wow

vernal crest
#

If you share the json validator link we can have a look and try to spot the error

sleek igloo
#

Ok so my farmhouse1 kitchen worked fine, but when I upgraded, the patch removed only the actual appliances and not this sideboard thing

#

it's definitely been removed in the patch I double checked

steel plaza
sleek igloo
#

is the Curse back SDVpuffersweats

vernal crest
sleek igloo
#

I did a patch on the second upgrade though? that's why the actual kitchen isnt there

vernal crest
opaque field
#

Yeah, no, that tracks..... I was maybe up a little too late working on the dialogue last night....

sleek igloo
#

the tmx patch is definitely without a sideboard

vernal crest
sleek igloo
#

ah ok, thanks!

#

thats so oddly specific though

vernal crest
#

It's renovation related

sleek igloo
#

is that a thing now???

vernal crest
#

Renovations?

sleek igloo
#

I have yet to even play 1.4 new stuff never mind 1.6

vernal crest
#

Ah lol. Yes, you can make changes to the farmhouse with renovations in vanilla now. It definitely adds an extra layer of complexity to farmhouse patches lol

sleek igloo
#

thanks for the info, that would've taken me a million years to figure out alone lol

lucid mulch
# opaque field Yeah, no, that tracks..... I was maybe up a little too late working on the dialo...

To translate the error:

System.InvalidOperationException: Error parsing '}}' as a tokenizable string
---> ContentPatcher.Framework.Lexing.LexTokens.LexFormatException: Unexpected EndToken, expected StartToken or Literal"

The way it works is a state machine, reading the file left->right (top->bottom) one character at a time.
and when it is in a certain state, it can only accept certain things to transition to the next state.

Within the CP Lexer (which is a higher level parser than what the JSON parsing is) and while it hasn't seen a token yet, it is expecting two possible states of the world for the next character

  1. Seeing if a token is about to start (StartToken aka {{)
  2. Or anything else

Once it sees a StartToken it would transition into token mode, where it would expect some literal (token name, followed by inputs which may themselves be tokens, and finally an EndToken must appear at some point*

So if you see an error like it, theres two posssibilities:

  1. you have }} somewhere you don't need
  2. you are missing the {{ earlier in the string
vernal crest
opaque field
#

Ahhh. okaay gotcha! It's still not loading my dialogue - I checked patch export too - my events seem to work fine

vernal crest
#

I didn't check that before because I was just looking for the token error before, sorry.

lucid mulch
#

not an apples to apples comparison, but https://json.org does a great job showing how a state machine can describe parsing json

opaque field
#

Ah, okay thank you! I wondered if that was maybe it

#

I gotta check my cinnamon roll dough but after that I'm gonna check it

steel plaza
#

basically i just put the SourceRect values to 0

#

I am in need of help, someone here knows how to bundle code? since I'm using both CP and C# to code since the I can't find the "Building" guide in C#

#

as to, why not just used CP altogether, I need to do my tractor in a custom spritesheet size

#

and also can someone send me the github repo, for the code, like a library

vernal crest
#

You mean send you the code of the game? We can't do that but you can decompile it yourself.

#

It's not actually necessary but it makes things easier if you prefer doing it that way

lucid mulch
#

you won't have asset specific guides in C# in the same way the Content Patcher documentation doesn't list how to edit every data structure

opaque field
#

It still won't load. Target is right, json validator didn't see any issues and smapi gives me nothing either. I've also compared my files to similar mods and I'm not seeing anything different

#

Gonna try with some other mods uninstalled and see if that helps

lucid mulch
#

what does patch summary <modid> say

opaque field
#

Uhm. Like when it’s first loading or if I input that separately?

lucid mulch
#

when you think the patch should be working

opaque field
#

There’s a bunch of stuff that has x by it. And then it says “Content patches” the following patches were loaded for each patch loaded shows whether the patch is loaded and enables see destails for the reason if not then conditions then applied section and (filtered to content pack id TheWolf)

#

When I go try and talk to him

#

Events? Totally fine and good and good and fine. Dialogue. Nope.

wanton pebble
#

(Can we see the log from when you did the patch summary thing SinZ mentioned?)

opaque field
ocean sailBOT
#

Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Unix 6.8.0.59, with 104 C# mods and 95 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

wanton pebble
#

ah, there'd be your problem

#

your mod's unique ID is likely not just "TheWolf" based on normal mod unique ID rules

#

and by what it output

#

you want whatever's in your manifest, e.g. "UniqueID": "agentlyoko.rewrittenclint",

opaque field
#

Ahhhhh. CacklingCaracal.TheWolf

wanton pebble
#

you'll get better data that way from the log

opaque field
#

Okie trying again

ocean sailBOT
#

Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Unix 6.8.0.59, with 105 C# mods and 98 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

opaque field
#

It's loading but not applying, am I reading that right?

wanton pebble
#

This one may be out of my wheelhouse - the includes not being "applied" makes sense IIRC, but the rest are supposedly also not applied, yet you see the event changes

opaque field
#

If I trigger them in debug mode yeah

#

Thanks for looking!

wanton pebble
#

SinZ might have to take back over here, but in the interim, mind showing the content.json + the dialogue edit json?

opaque field
#

Through the json validator?

wanton pebble
#

ye

wanton pebble
#

OH, OF COURSE

#

well, maybe

wanton pebble
opaque field
#

[CP The Wolf] - Data - Dialogue - GenericDialogue.json

#

[Cp] The Wolf

wanton pebble
#

so to be clear (and this is fine) - you're bucking normal mod convention and the "Data" folder is within [CP] The Wolf, with content.json in that same folder?

#

(I'm used to people having an assets folder and the filepaths used are stuff like assets/Events/AbigailEvents.json)

opaque field
#

content is in the main CP folder, and then the GenericDialogue is in Data/Dialogue folder. I've seen assets used before too should I switch?

wanton pebble
#

eh, do what you want

#

I'm just used to seeing it one way, you can have it another way if it makes sense to you

silk goblet
#

yo

vernal crest
#

I put my json files into a data folder

opaque field
#

That's what works for my brain so far

wanton pebble
#

Then do that! I just was thrown for a second seeing the wrong filepath (to me). Anyway, hmmmm....

vernal crest
#

Are you just not getting any dialogue at all or is there dialogue present but it's the wrong thing?

wanton pebble
#

trace indicates they're getting vanilla dialogue

#

nothing else in their log is editing Characters/Dialogue/Shane and they did load into the file

opaque field
#

it's not giving me any of my dialogue at all. His new intro is supposed to be Congrats we've met. Now you can leave me alone

vernal crest
#

But he is talking?

opaque field
#

but it just does the "I don't know you why are you talking to me"

wanton pebble
#

wait. wait wait wait.

#

let me make sure I have the right log here because if so something is waaaaay off

#

....something is way off. They have SVE. That shouldn't leave a single person untouched

#

Can you do patch summary full once you've loaded into your file, then give us that log?

opaque field
#

absolutely

wanton pebble
#

a lot more should be being edited by the mods in your log. Seeing only what I do for a search of Characters/Dialogue is.... mildly terrifying?

vernal crest
#

Wow yeah that's a lot of missing editing.

wanton pebble
#

Once I saw Sunberry wasn't doing anything either I got suspicious

#

then I rechecked the Content Patcher stuff and was like "wait. Hold on, there should be so much more!"

opaque field
#

It’s getting there. Takes so long to load

ocean sailBOT
#

Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Unix 6.8.0.59, with 105 C# mods and 98 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

wanton pebble
#

Okay. Someone ping me when they figure out what in the everloving heck is going on with strawberry's log because this is weird

#

there's a lot of patches that should be applied - from MANY mods - that just.... aren't

#

although then again

#

Can you sleep one day, strawberry?

zealous rivet
#

Hi, I'm very sorry for interrupting- I'm trying to make my first mod and I can't figure out why it's not loading my interior map/not warping me there- could someone help me when you have the time to? Sorry again

wanton pebble
#

sorry, just noted you're on Spring 1 Y1 when you loaded the save

opaque field
#

yeah let me load up the game

wanton pebble
# zealous rivet Hi, I'm very sorry for interrupting- I'm trying to make my first mod and I can't...

No worries, it's not a problem to interrupt. We'll need a little bit more information, so:

  • How do you have it set up to warp you there? Is this a vanilla to modded location, modded to modded, a vanilla location but different stuff inside, etc.
  • What happens when you attempt to warp there? Nothing happens? Red text in log? something else?
  • Can you share your SMAPI log from when you've loaded in and are attempting to go to the location?
vernal crest
#

Trying to read that log on mobile was incredibly punishing, my goodness.

zealous rivet
#

oh i didnt mean to send

wanton pebble
#

no worries, it's still a good start knowledge wise

vernal crest
#

If it's not loading the location my first thought is tilesheet climbing in the map.

wanton pebble
#

Means you're probably map patching town, the door exists on town, and you're using that lockeddoorwarp

opaque field
ocean sailBOT
#

Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Unix 6.8.0.59, with 105 C# mods and 98 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

zealous rivet
#

when i load in i get this "[SpaceCore] A warp from Town references YazzRoom2 which could not be found.", but it can find the outside of the house just fine?
then when i get to the door and click on it i get this "[game] Warp to YazzRoom2 failed: location wasn't found or couldn't be loaded."
https://smapi.io/log/6d40ebc5264d4ca49df52e4eccf91ad7

ocean sailBOT
#

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

wanton pebble
#

Okay yeah, definitely leaving it for the C# reading wizards now, it's not the initial characters stuck on install thing. I really want to know what on earth is happening to cause all those dialogues not happening

#

15:32:29 TRACE Event Lookup Loading Maps/Custom_YazzRoom2 15:32:29 TRACE SMAPI Content Patcher loaded asset 'Maps/Custom_YazzRoom2' (for the 'Yazz Mazz' content pack).

#

Your map is named Custom_YazzRoom2, not YazzRoom2

zealous rivet
#

i feel silly im sorry

vernal crest
#

Are you using CustomLocations? If so, I recommend switching away from that because it's deprecated.

wanton pebble
#

so you'll need to fix the warp to the correct area. No feeling sorry! I'm guessing you might be-

#

abagaianye beat me to it

vernal crest
#

DW Lyoko you beat me to the original fix advice lol

zealous rivet
wanton pebble
#

....oh no

#

which wiki tutorial

vernal crest
zealous rivet
#

oh

wanton pebble
#

Oh, never mind, I thought someone had made one

vernal crest
#

I bet it's max's.

#

I really need to update that

blissful panther
#

Might be a good idea to go through a deprecation heading pass on those or something, yeah...

wanton pebble
#

Not it runs away

zealous rivet
#

yeah

vernal crest
#

Right, well, I know what my Sunday is going to involve.

zealous rivet
#

im sorry

vernal crest
#

No no you haven't done anything wrong!

wanton pebble
#

Do not be sorry!

#

1.6 has been out for over a year now

#

If anything, this is on the collective laziness of the mod community SDVkrobusgiggle

vernal crest
#

It's very reasonable to assume that if you find a tutorial it's safe to follow it

#

I asked max for permission to update that tutorial months ago

#

I just...didn't do it... lol

vernal crest
# zealous rivet im sorry

Keep going on as you are for now and I will try to do the whole update tomorrow so you can then convert to current best practice if you want to. You don't have to, but since CustomLocations is deprecated it's unsupported and might break in future.

blissful panther
#

...I've opened too many of the tutorials. SDVpufferwaaah

opaque field
#

I have a window with at least 9 tabs open to various places on the dialogue and event wiki pages. that's a vibe

#

Maybe if I load an older save and try a full patch summary would that help?

zealous rivet
calm nebula
#

Is human?

blissful panther
#

Maybe.

calm nebula
#

Did you pass the captcha

vernal crest
opaque field
#

As far as I know, I’ve avoided that so far.

ocean sailBOT
#

Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Unix 6.8.0.59, with 105 C# mods and 98 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

vernal crest
calm nebula
#

Can you also talk to Shane first

opaque field
#

Yes 🙂

calm nebula
#

Dialogue might be lazy loaded don't really recall

steel plaza
#

is it possible to make a cutscene with just content patcher?

vernal crest
#

If you mean an event like a heart event, yes

whole raptor
#

You can make a loooot with just Content Patcher

opaque field
ocean sailBOT
#

Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Unix 6.8.0.59, with 105 C# mods and 98 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

vernal crest
wanton pebble
#

cahlaNotes Dialogue is lazy loaded, got it

#

that's.... a little annoying for testing purposes buuuuuuuuut useful to know

steel plaza
#

btw how do i make it so, one commission per player, like once you built it you can't commission from robin to build another

#

can that still be done via CP?

vernal crest
#

I wonder if it's just due to patch order. CFDE is patching after strawberry's mod so it might just be overwriting because it touches so many lines.

wanton pebble
#

it most likely is now that we know it's patching

opaque field
#

Ok yeah his dialogue for that day popped right up and he said it

#

Portrait and everything

whole raptor
steel plaza
#

what is GSQ?

wanton pebble
#

Game state query!

calm nebula
#

Yeah, making sure to patch after/over cfde is pretty much a common thing

opaque field
#

Hahahah okay 🙂 that makes sense how do I do that

vernal crest
opaque field
#

Oooooh okay.

vernal crest
# opaque field Oooooh okay.

I also think you have some incorrect dialogue keys in there? summer9 and summer15 don't match any key format I know of.

opaque field
#

I'll review those too. I copied that format from another mod - but if they don't work I'll reformat them

#

ok I did that, updated the dialogue key format and it still didn't load his new introduction dialogue

#

I'm gonna take a break and knead my cinnamon roll dough and come back to this later. Maybe practice pixel art or something

vernal crest
#

You can do the same debug loaddialogue thing with the introduction key to test if it's your line loading.

whole raptor
#

Was there a way to make VSC shut up about multi lines in events? SDVpufferthinkblob I think I remember something about some kind of extension being mentioned here, but no idea what it did exactly

orchid glade
#

JSONL format I think

whole raptor
#

Oh, nice, didn't know it existed tbh

orchid glade
#

Yeah, JSONL lets you have multi lines, and JSONC lets you have comments. Aba and others know tricks to make it do them both at once...

#

I learn everything I know from Aba 🫣

whole raptor
#

I doubt I'll need Jsonl for anything other than events (which I make once in... lets see... 3 years), so no need to bother with it SDVkrobusgiggle

orchid glade
#

Yeah handy for that, actually I've used it in targetting a bunch of assets at once as well.

#

I mean, multi lines, I didn't need jsonl for that little thing

carmine pewter
#

Good morning, I hate to ask for help this early in the game, but I'm having trouble getting the modbuildconfig loaded in VS Code right out of the gate...

When I run:
dotnet add package Pathoschild.Stardew.ModBuildConfig --version 4.4.0

I get these 2 errors:
error: NU1100: Unable to resolve 'Pathoschild.Stardew.ModBuildConfig (>= 4.4.0)' for 'net6.0'.
error: Package 'Pathoschild.Stardew.ModBuildConfig' is incompatible with 'all' frameworks in project

I feel like I've followed all the steps I've seen mentioned a few times, tried setting my game path in the project file, I'm wondering if I should just try a different IDE?

vernal crest
whole raptor
#

That's fine, I kinda miss the gentle yelling in red wall from smapi SDVpuffersquee

orchid glade
#

Soothing red

carmine pewter
#

I installed the .net 6 SDK, and vs code seems to recognize it

whole raptor
#

Oh Chu, your MMAP made my current wip possible (or at least a loooot less annoying to make), so thanks a lot for the secret wood imitation function SDVpufferheart

carmine pewter
#

This is my current .csproj

#

If I add the package reference in ItemGroup, I get this error when building the project:
error NU1100: Unable to resolve 'Pathoschild.Stardew.ModBuildConfig (>= 4.4.0
)' for 'net6.0'.

gaunt orbit
#

Ah

#

Hmmm

carmine pewter
#

I had planned to... after I could get it working at all

#

lol

vernal crest
carmine pewter
#

I haven't rebooted since installing the SDK, I guess I'll give that a shot

lucid mulch
#

Modbuildconfig does already read from a user data file

gaunt orbit
#

Maybe use the net 8 sdk?

#

That can still compile to net 6

whole raptor
lucid mulch
#

But that game path is not needed as it's what it will try anyway without customisation

blissful panther
#

Because it sounds like it's just not finding the package locally, but it knows to look for it because the reference to it was added.

carmine pewter
#

Something may not be right with my dotnet install?
When I run dotnet packate restore I get this:

lucid iron
carmine pewter
#

Sorry, I mispelled here, I didn't in the terminal

blissful panther
#

Huh, looks like it might have become dotnet restore now.

whole raptor
carmine pewter
#

error NU1100: Unable to resolve 'Pathoschild.Stardew.ModBuildConfig (>= 4.4.0
)' for 'net6.0'.

#

I may just try a different IDE...

vernal crest
#

VS22 is much more straightforward to set up, imo

lucid iron
#

If dotnet cli is not working right i feel another ide wouldn't solve anything

#

So did u install like

#

Dotnet host 9 and then sdk 6?

opaque field
#

OHMYGOD IT WORKS

#

Thank you to everyone who has spent the last several hours looking at my nightmare logs

carmine pewter
#

Had to run
dotnet nuget add source https://api.nuget.org/v3/index.json --name nuget.org
To get it in there and now everything works fine

blissful panther
#

...the official Nuget repository was missing? Well that's a fun one.

carmine pewter
#

Not sure why that wouldn't have gotten added when I installed the SDK?

#

Yeah... real 'fun' haha

#

I appreciate everyone who offered advice, thanks all

void tinsel
#

Anyone know why I can't use SMAPI commands in the SMAPI console window?

wanton pebble
#

if they don't show up in help, I'm going to assume your Console Commands mod is missing or broken

#

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

wanton pebble
#

toss that in here, we'll verify based on that

void tinsel
#

Ohh, actually I think I know the issue. I have a custom mod-path

#

Didn't copy it over

calm nebula
#

Tbh people have mentioned using the net8 sdk. I would, personally - there are a lot of nice language features you can use if you use that. You need to target net 6.0 but can compile with the net 8.0 sdk fine

odd ginkgo
#

is HasVisitedLocation depreciated for event preconditions?

#

I'm trying to make an event that is only triggered after the player has restored the ginger island farmhouse

tribal ore
odd ginkgo
#

hmm okay thank you

tribal ore
#

You can use a GSQ as an event precondition with "G" (e.g. /G PLAYER_VISTED_LOCATION arguments)

odd ginkgo
#

time to learn how to use them!

#

thank you!!

tribal ore
#

Np! Good luck 🙂

#

Speaking of events, does anyone know if the "eyes" command will pause the event or allow it to continue?

royal stump
zealous rivet
#

Hiii does anyone know how to make an npc react to a specific item being gifted to them?

odd ginkgo
#

"AcceptGift_798": "reaction", for example

#

798 being the item id

zealous rivet
#

Thank you!!

odd ginkgo
#

it was my last event to figure out, very exciting

#

okay I lied I'm back

#

using SawEvent as an event precondition, is there anyway for it to trigger that day after seeing said event?

hallow prism
#

trigger what? a dialogue?

opaque field
#

Now I delve into question forks and dialogue prerequisites

#

Any hot tips for question forks? I have some event stuff that determines what dialogue gets used for the conversation topic

odd ginkgo
hallow prism
#

you want a delay of one day between EventA and EventB?

#

if yes you can do that using Conversation Topic to space them a bit

opaque field
#

I’m trying to set it so that if you take the first route in the bonus 8 heart event he gives one line but if you took the second path he gives a different line

#

Currently I have set $p (insert first path response)#corresponding topic dialogue

ionic jewel
#

Hey, guys, Is there a good reference to modding the ability for mod authors to connect to your mod, I wish to make one of my mods extensible.

zealous rivet
tiny zealot
brittle pasture
spice inlet
#

ngl this warning isn't very helpful [game] Changing net field parent for '' collection from '' to ''. ._.

ionic jewel
tiny zealot
#

oh in that case, check selph's tutorial link. custom fields or at most a custom asset is a good fit for that, i think

visual dirge
#

afaik on many linux systems (most wayland compositors) this wouldn't work bc keyboard shortcuts don't get passed through to programs that aren't the ones designated for handling them

#

also u should try and integrate w steam to check for steam overlay screenshots for steam deck users

#

the steam deck lets you bind a screenshot key and it just takes a steam overlay screenshot

#

wb the moon berry 🥺

#

iridium quality strawberry perhaps?

glossy cargo
#

Hmmm I couldnt find something moon related

#

Would iridium quality be close enough in your opinion?

zealous rivet
#

Hiii does anyone know how to make an npc react to a specific item being gifted to them? And if that dialogue can change depending on how many hearts they have/ I can add more than one line?

brittle pasture
#

you can use Content Patcher's When for heart specific dialogue

zealous rivet
#

Thank you!

brittle pasture
#

or just use $query I think

#

For multiple dialogue, I think you can use i18n randomization

hallow prism
#

there is also a feature for randomness in the base game dialogue

#

so you can see which approach you prefer

#

i'm team token and i18n combo

#

but atra and lemur do like using the c dialogue thing

zealous rivet
#

I'm sorry to be a bother, this is my first mod I could use stuff explained in more detail

opaque field
#

What about quickQuestion vs %fork if you need dialogue/events to resolve differently based on the responses given?

visual dirge
#

if we're gonna be passing data around between harmony patches in weird ways and need to use static values for that, is it a good idea to use ThreadLocal<T>? i've noticed other modders use PerScreen<T> for this instead -- what does that do?

lucid iron
#

You know how local coop is split screen

#

PerScreen is helper to keep static values independent in that mode

visual dirge
#

yeah, but wouldn't ThreadLocal<T> cover that case too?

lucid iron
#

The game is still single threaded even in split screen i think

visual dirge
#

oh

lucid iron
#

It just does funny static swapping

visual dirge
#

oh hmm

lucid iron
#

It is down to your usecase in the end, sometimes the harmony __state injection is enough

visual dirge
#

if i'm (re)setting a value in a prefix, reading/writing it in a transpiler (!!!), then reading the final value in a postfix, do i need to use PerScreen<T>?

#

i assume i never need to use ThreadLocal<T> because the game's always single-threaded (although that still makes me kinda uncomfortable bc what if that assumption changes)

lucid iron
#

But you can do multi thread things as long as u don't touch draw or content

visual dirge
#

i mean more like

#

what if someone does somethign on another thread and calls the method i patched

lucid iron
#

Whether they should be doing that is question yes Dokkan

#

But i think harmony patches are 1 method at runtime so u r safe probably

visual dirge
lucid iron
#

I definitely have made things PerScreen just in case b4

#

I gotta ask if u actually need to do all that though

visual dirge
#

the game can't switch screens while a method is running, right?

lucid iron
#

Vs just doing whatever you want all in the transpiler

visual dirge
#

unfortunately it's slightly more complicated than that?

#

i need to be able to call the original version of a method before my transpiler was applied, but including all pre/postfixes added by other mods

lucid iron
#

Wow yes a job for reverse patch

visual dirge
#

reverse patches don't include pre/postfixes added by other mods 😖

lucid iron
#

No u reverse patch to store the original

#

Call it in the transpiler

visual dirge
#

noo

#

i need a separate method to be able to call a version of the method that's exactly the same sans my transpiler

#

including any pre/postfixes added by other mods

lucid iron
#

I feel like something is being overengineered somewhere

visual dirge
#

oh absolutely

lucid iron
#

But idk what the usecase and i support overengineering things on principal so pls have fun

visual dirge
#

did i mention that this isn't actually my mod, i'm just writing a pr

#

problem is this method is patched by a few other mods that i need compatibility with

lucid iron
#

For your original Q most mods don't try multi thread things because game itself is not multi thread and changing it is unlikely at the moment

#

I would just make whatever you want work in 1.6.15 and not worry too hard about future

visual dirge
#

basically just wondering if i should make it a bool or PerScreen<bool> or ThreadLocal<bool> or ThreadLocal<PerScreen<bool>>

lucid iron
#

bool probably fine

visual dirge
#

okiiii

lucid iron
#

Change it when bug report trust

visual dirge
#

its not my mod i dont wanna create more work for the mod author if they accept my pr 😖

#

maybe i should do ThreadLocal<bool> just in case

lucid iron
#

Can u ask the mod author for opinion

visual dirge
#

ummm lemme check who they are on the discord

#

oh

visual dirge
#

hi

lucid iron
#

Wow what kinda crime did i do

visual dirge
#

lmfao

visual dirge
lucid iron
#

I did have vague feeling it was that

lucid iron
#

What is the particular issue you are facing

visual dirge
#

im tryna implement a feature that prevents you from using recipes that would be impossible in vanilla

#

as a config option

#

e.g. no more "aged sturgeon roe"

lucid iron
#

Impossible in vanilla NotteThink

visual dirge
#

or just otherwise impossible w/o machine control panel

lucid iron
#

Oh you mean case where a lower rule ought to have been blocked

visual dirge
#

yea

lucid iron
#

I'd just disable the rules control entirely then

#

Force read-only rules side, control on input side

visual dirge
#

ive already got it almost working

lucid iron
#

My concern is more about how the input data is not foul proof rn

#

Mods can put quirky GSQ that cannot be pre checked

visual dirge
#

oh hmm

#

idk im mostly looking to block the more obvious stuff (again like aged sturgeon roe)

lucid iron
#

If you have case like say
Rule 1: accept fruit only if on VMV
Rule 2: accept fruit

#

Right now mcp shrugs and just display the VMV gsq as is and then show all of fruit as valid inputs to this rule

visual dirge
#

disabling rule 1 should allow rule 2 while on vmv

#

i only want to block rules if they would be impossible per the basic item inputs

pine elbow
#

In the Item Extensions mod, does anyone know where I can find the documentation about the OnDestroy key?

visual dirge
#

hence my plan is to add a static variable that makes your ShouldSkip functions always return false

lucid iron
#

Yeah so u need to probe it

visual dirge
#

hm?

#

wdym

lucid iron
#

I'm describing what i understand your desire

#

Not describe something to do sorry for ambiguity

visual dirge
#

okok

lucid iron
#

Yeah this sounds ok to me, make sure to test with automate though

visual dirge
#

ofc

lucid iron
#

That said i do have design wise concerns in that i think this interfere with machine rule a little too much kyuuchan_run

#

At the moment the behavior with rules unchecked is just "as if this rule is not in the data"

#

What are the new usecases provided here that isn't already covered by turning off the input

visual dirge
#

like technical concerns or mod scope concerns?

lucid iron
#

Mod scope concerns yea

#

Cus i wonder if it'd be better to have third mode, ban certain outputs

visual dirge
#

tbf all this option would do is restrict a feature added by the mod

lucid iron
#

Since that sounds closer to what is desired

visual dirge
#

hmmm idk

lucid iron
#

At any rate if you raise PR now and it's a configurable thing idm merging it Dokkan

visual dirge
#

okiii

#

not gonna pr just yet since i need to finish implementing it and test it more but ty

#

oh and i need to make sure it works as intended w extra machine config's additional fuels, which i recently submitted a (draft) pr for slightly changing the behavior of

rigid musk
#

For window tiles in houses, does it use the day/night property or does it use the window light property

lucid iron
#

Selph is also here if u want to ask for opinions

visual dirge
#

oo ty

#

my current implementation of that pr breaks one of the mod's other features though so ill need to figure that out before its actually ready to accept 😆

#

i just wanna make apple cakes...

lucid iron
visual dirge
#

yea me too

lucid iron
#

GSQs don't have any sort of thread safe guarantee

gaunt orbit
#

Stardew is not thread safe at all

lucid iron
#

Tho vanilla ones r probably fine (?)

visual dirge
#

im prolly just gonna make it a ThreadLocal<bool>

#

just in case someones being weird and calls CanApplyOutput on another thread

gaunt orbit
#

I would not recommend doing anything offthread unless it's highly self-contained

lucid iron
#

The case where u can definitely thread things is when everything you are working with is your own data structures, a rarity for mods

visual dirge
lucid iron
#

So yeah i don't think u should worry about other people calling u in a thread (i definitely didn't Dokkan)

gaunt orbit
visual dirge
#

okayyy

#

i wont

visual dirge
#

i don't have a reason to and im not planning on doing it, just wondering

lucid iron
#

You would have to include it with the mod i think

#

Like that one mod which adds Doom arcade machine

gaunt orbit
#

I tried using imgui once but it just caused errors I didn't know how to fix

#

I didn't try that hard though so it might just be me doing something wrong

lucid iron
#

Also u need to pack 3 copies right

#

For windows mac linux

#

Doom mod incompatible with mac very sad

gaunt orbit
#

No, you can just put all three lib files in the zip

#

At least in theory

lucid iron
#

Yeah that's what i mean

#

3 different binaries in the mod folder

gaunt orbit
#

Smapi might not support native libs though, I'm not sure

lucid iron
#

Also theoretical security enhanced smapi ig

#

But that is also a not anytime soon deal

gaunt orbit
#

I hope when that does happen there's a config option to disable it

visual dirge
gaunt orbit
#

It's a generic library you can plug into any renderer, all it does is generate geometry

#

I was using a c# lib that hooked it into monogame

pine elbow
#

Mistyspring, creator of the Item extensions mod, is he the same one who has this nickname here on the server?

visual dirge
#

ohhh i got it mixed up w another library sorry

pine elbow
#

worse than that he is offline, I wanted to know about OnDestroy

rigid musk
#

Misty goes by they/them just FYI

gaunt orbit
rigid musk
#

Also that ^

gaunt orbit
#

I think one of the bots also has a command to see the mods someone has made

#

Ah yeah its /userinfo from governor

visual dirge
#

oh also @lucid iron, what's the purpose of ShouldSkipMachineInput_DayUpdate? it seems to only be called after ShouldSkipMachineInput has already been checked, but it never returns true if ShouldSkipMachineInput doesn't, so won't it always return false when it's actually called?

lucid iron
#

That's for dayupdate machines as the name implies

#

It's for turning off worm bin

visual dirge
#

but won't it always either not get called (bc ShouldSkipMachineInput was already checked) or return false (bc ShouldSkipMachineInput returned false), making it do nothing?

lucid iron
#

I don't have code in my short term memory but iirc the path where that version is called is different than the normal version which happens when you input an item

visual dirge
#

im probably reading the il wrong 😅

lucid iron
#

Or i broke it when doing 2.0 cus i was focused on UI side Dokkan

visual dirge
#

ill dump the transpiled il and double-check but you mightve

lucid iron
#

I do remember testing that turning off worm bin works tho, so perhaps it's just leftover redundant code

visual dirge
#

okii

sour sleet
#

Where it says <spriteAssetName> is it asking for the name of my png file of the animal I'm trying to add? Or the internal name?

#

For event scripts

#

Or can you only add actors already in the game? (Not custom ones)

#

It's spawning the red error circle, nothing seems to be working aaaaa

latent mauve
#

Should be the internal name of the NPC, Animal or Monster

#

So whatever you added it as via Data/FarmAnimals

hallow prism
#

does someone knows how the game behave if you already learned a recipe that is usually sent by friendship cooking mail?

calm nebula
#

Mail would be skipped iirc

#

Assuming you mean NPCCooking

hallow prism
#

yes

#

if i do it by trigger action (which i plan to do for at least one) i will have a condition of not already having recipe

calm nebula
#

How are you?

hallow prism
#

a bit sick still but better

#

this time at least i didn't give english people a scare by using the wrong name for my sore throat

#

and you?

sour sleet
#

All the same animal

calm nebula
#

Running errands! I'm kinda wanting to make my "bachelor's pad" mod idea an actual thing

#

You know

#

Bed on the floor. Laptop next to bed

#

How do they live this way, etc

brittle pasture
next quarry
#

With multiple you might also need to use [override name]

sour sleet
#

This is what I currently have addTemporaryActor 8BitAlien.Lilybrook_Redacted 32 32 11 22 1 false Animal

#

So you're saying i should change it to Animals/8BitAlien.Lilybrook_Redacted?

hallow prism
next quarry
sour sleet
#

Will try that now!

#

Nope, still error texture

#

I'm gonna try adding just one and see if that works

next quarry
#

How are you loading in you custom animal?

sour sleet
#

My custom animal is in Data/FarmAnimals

brittle pasture
#

keep that command the same

#

you don't even need a Data/FarmAnimals entry I think

sour sleet
#

Do you mean in the event script?

#

Oh ok

#

The animal is already in the game as a farm animal so I thought I could use it lol

next quarry
#

You can probably also just load it into Characters

brittle pasture
#

wherever doesn't matter

#

did you Load a png into Animals/8BitAlien.Lilybrook_Redacted?

sour sleet
#

No, I don't think so. Will doing so affect how my animal works as a farm animal separate from this event?

brittle pasture
#

yes no

sour sleet
#

Ohh I don't want that

brittle pasture
#

oh wait

#

I misread

#

no lol

sour sleet
#

Oh good then

brittle pasture
#

load into that, change your farm animal's Texture field to using that path as well

next quarry
#

Can you send the part where you load in your sprite for your custom animal? I think it would be easier to explain that way

sour sleet
#
      "LogName": "Load Images",
      "Action": "Load",
      "Target": "Mods/8BitAlien.Lilybrook/Assets/Items/BabyRedacted1, Mods/8BitAlien.Lilybrook/Assets/Items/BabyRedacted2, Mods/8BitAlien.Lilybrook/Assets/Items/BabyRedacted3, Mods/8BitAlien.Lilybrook/Assets/Items/Redacted1, Mods/8BitAlien.Lilybrook/Assets/Items/Redacted2, Mods/8BitAlien.Lilybrook/Assets/Items/Redacted3, Mods/8BitAlien.Lilybrook/Assets/Items/icons",
      "FromFile": "Assets/Items/{{TargetWithoutPath}}.png"
    }```
#

It should be Assets/Animals?

brittle pasture
#

keep your FromFile the same

#

that's where the images are in your mod folder

#

change the Targets to all forms of Animals/YourUniqueAnimalIdHere (if they load animals)

#

then switch your Data/FarmAnimals textures to that as well

sour sleet
#

So as an example, "Mods/8BitAlien.Lilybrook/Animals/Redacted1"?

brittle pasture
#

no

#

Animals/8BitAlien.Lilybrook_Redacted1

#

or whatever

#

they must start with Animals/

sour sleet
#

Ok will change everything now!

brittle pasture
#

then you can use the part after the slash in your event command

sour sleet
#

Ahh this is making sense now

next quarry
#

addTemporaryActor can only pull from the Animals Characters or Monster folder

sour sleet
#

I thought mine was loaded as an animal though haha

brittle pasture
#

yeah, it doesn't know or care that whether an animal, character, or monster actually exists in data, it just pulls the textures from those paths

sour sleet
#

Gotcha, thanks both! Lets see if this works

#

Which one is correct? "Texture": "Animals/8BitAlien.Lilybrook_Redacted1",
"Texture": "Animals/Redacted1",

#

For the texture

#

I have a few skins for the animal so I think that's what is confusing me

brittle pasture
#

whatever works, like I said as long as it starts with Animals/

#

you probably want the former since it has your mod id

visual dirge
brittle pasture
sour sleet
#

All working now, thanks for your help SDVpufferheart

next quarry
#

Yippee

dusky marsh
#

is there a property to see if a tile has the ability to receive water from watering can? like the pet bowl

#

or any other way

brittle pasture
#

the pet bowl is a building now

dusky marsh
#

i know, but i want to know if a specific tile has that ability instead of the whole building

brittle pasture
#

the tile with PetBowl tile property

#

look at Data/Buildings.json and PetBowl.cs

worldly sundial
#

Does anyone mind showcasing my new mod? https://www.nexusmods.com/stardewvalley/mods/33581
Modular Tools lets you upgrade your tools like never before! Attach different upgrades to customize how your pickaxe, axe, hoe, and watering can behave.

Nexus Mods :: Stardew Valley

Modular Tools lets you upgrade your tools like never before! Attach different upgrades to customize how your pickaxe, axe, hoe, and watering can behave. Want extra luck when using your pickaxe? Want y

brittle pasture
#

done SDVpufferheart

#

y no earth upgrade i wanna be the avatar

worldly sundial
#

I couldn't think of a good one haha

gaunt orbit
#

That looks awesome

lucid iron
#

isnt earth upgrade just hoeing normally

#

its like how aang already knows air bend, farmer is clearly an earth bender by default

trim sand
#

The farmer is Toph then?

calm nebula
#

Automatically applying fertilizer maybe?

#

If you could exchange it for different fertilizer

#

Or it stacked

trim sand
#

Honestly something as simple as applying the first fertilizer to the right in the inventory from the hoe would be cute for an earth upgrade

rotund elm
#

Heyo, does anyone by chance know how to put a trigger action in item delivery quest dialogue? I am trying to trigger a lettter containing a recipe being sent after a quest is completed,

#

Would like to delay the letter being sent, but I can't seem to figure out if that is possible or not either

#

I just was made aware of the Dialogue Commands page SDVpufferowo

sour sleet
#

Is there a way of making it so that an answer chosen with quickQuestion ends the event and doesn't play the rest?

tiny zealot
#

another option is to use switchEvent in your embedded script, then have the target event end quickly

sour sleet
#

Thanks, that's really helpful SDVpuffersquee

tiny zealot
#

(i use both of those solutions in that file, so check 156 for the switchEvent version)

sour sleet
#

Smapi doesn't seem to like my event key,what is wrong with it? "8BitAlien.Lilybrook_Anya10Hearts/LocalMail 8BitAlien.Lilybrook_Anya10HeartsMail/f AnyaLilybrook 2500/t 800 1800/w sunny":

#

"Invalid property identifier character" according to smapi

ocean sailBOT
#

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

sour sleet
#

I managed to fix it SDVpufferparty

#

One last problem: choosing the mean option doesn't switch the event. Where have I gone wrong? I can't see it:( //Beach Date (Anya 10 Hearts) "8BitAlien.Lilybrook_Anya10Hearts/LocalMail 8BitAlien.Lilybrook_Anya10HeartsMail/f AnyaLilybrook 2500/t 600 1800/w sunny": "breezy/42 18/farmer 38 19 1 AnyaLilybrook 43 19 2/changeToTemporaryMap 8BitAlien.Lilybrook_LilybrookBeachPatch/skippable/pause 2000/emote AnyaLilybrook 16/move AnyaLilybrook 0 0 3/emote AnyaLilybrook 20/pause 500/speak AnyaLilybrook \"{{i18n:event-Anya10Hearts.01}}\"/move farmer 4 0 1/pause 600/speak AnyaLilybrook \"{{i18n:event-Anya10Hearts.02}}\"/pause 600/quickQuestion #{{i18n:event-Anya10Hearts.03}}#{{i18n:event-Anya10Hearts.04}}(break)speak AnyaLilybrook \"{{i18n:event-Anya10Hearts.05}}\"(break)speak AnyaLilybrook \"{{i18n:event-Anya10Hearts.06}}\"(break)switchEvent {{ModId}}_Anya10HeartsMean/pause 500/speak AnyaLilybrook \"{{i18n:event-Anya10Hearts.07}}\"/emote AnyaLilybrook 60/pause 500/speak AnyaLilybrook \"{{i18n:event-Anya10Hearts.08}}\"/pause 500/emote farmer 20/emote AnyaLilybrook 20/globalFade/viewport -999 -999/stopMusic/end", //Mean Beach Date "8BitAlien.Lilybrook_Anya10HeartsMean/LocalMail 8BitAlien.Lilybrook_Anya10HeartsMail/t 800 1800/w sunny": "breezy/42 18/farmer 42 19 1 AnyaLilybrook 43 19 1/changeToTemporaryMap 8BitAlien.Lilybrook_LilybrookBeachPatch/skippable/pause 2000/emote AnyaLilybrook 28/globalFade/viewport -999 -999/stopMusic/end",

tiny zealot
#

remove the preconditions from your Mean event (the one you switch to with switchEvent)

#

it should just be written like a continuation of the script from that point on

#

so you don't put the music name, or viewport coordinates, or actors

opaque field
#

If you wanted conversation topics the following day depending on which path you took how would you set that?

sour sleet
#

Ahh ok thanks, I will test that now!

#

So just like this then? "8BitAlien.Lilybrook_Anya10HeartsMean":"pause 2000/emote AnyaLilybrook 28/globalFade/viewport -999 -999/stopMusic/end",

opaque field
#

I’m finally doing an event where the event actually changes depending on how you answer and I’m struggling to make sure the dialogue the next day lines up 😂😭😭

sour sleet
#

Oh it's still continuing the event. Am I doing something else wrong?

finite ginkgo
#

Im pretty sure you have 2 answers, with 3 outcomes, the 3rd unreachable one being your switchevent command

sour sleet
#

Yep I have 2 answers but now I'm confused lol

#

.06 is the dialogue acknowledging the mean answer if that helps?

finite ginkgo
#

Your three “outcomes”/paths are:

  1. speak AnyaLilyBrook <whatever>
  2. speak AnyaLilyBrook <whatever>
  3. switchEvent <event>

I assume you want 2 and 3 to be together, you don’t want that (break), that separates them

Should be speak AnyaLilyBrook <whatever>\\switchEvent <event>

sour sleet
#

3 and 4 are the answers, 5 is the positive dialogue from Anya and 6 is the mean dialogue. 7 is the continuation of the event if it's positive

#

This is so confusing aaa

#

I want her to say dialogue 6 and then end the event basically

finite ginkgo
#

Think of it as this

(break) signifies the start of an answer’s outcome, you have as many outcomes as (break)s and the number should match the number of answers
To have multiple event commands in the same outcome you separate them by \\

sour sleet
#

So I need to remove the (break) from after dialogue 6?

finite ginkgo
#

Yes, replace it with \\

sour sleet
#

So like this? "(break)speak AnyaLilybrook \"{{i18n:event-Anya10Hearts.06}}\"\\switchEvent {{ModId}}_Anya10HeartsMean/

finite ginkgo
#

Yes

sour sleet
ocean sailBOT
#

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

lucid mulch
#

I'm assuming prior to the switchEvent you had a temporaryMap teleport at one point?

sour sleet
#

I had a temporary map loaded yep

lucid mulch
#

based on the error I think you need to changeLocation back to your real location to prior to the switchevent, or have your {{ModId}}_Anya10HeartsMean patched into Data/Events/Temp instead

#

as you are in the location Temp at the time, and the error is saying Temp doesn't have {{ModId}}_Anya10HeartsMean

sour sleet
#

Events are so confusing:(

opaque field
#

Forreal. I’m trying to follow along and apply their advice to my bonus 8 heart event. So. If I have the option of “reach out, tell him he’s not selfish” and “stay where you are and say nothing. After the break and speak Shane I would then put \switchevent {{ModId}}_Shanereachout and then \ switchEvent{{ModId}}_Shanestayput?

sour sleet
sour sleet
#

So it looks like I need to patch the Mean version of the event into Data/Events/Temp but I'm not sure fully how to do that

uncut viper
#

Data/Events/Temp is just a thing that already exists. just use that as your target instead of Data/Events/LocationName

sour sleet
#

This is my full event { "LogName": "Beach Events", "Action": "EditData", "Target": "Data/Events/8BitAlien.Lilybrook_LilybrookBeach", "Entries": { //Beach Date (Anya 10 Hearts) "8BitAlien.Lilybrook_Anya10Hearts/LocalMail 8BitAlien.Lilybrook_Anya10HeartsMail/f AnyaLilybrook 2500/t 600 1800/w sunny": "breezy/42 18/farmer 38 19 1 AnyaLilybrook 43 19 2/changeToTemporaryMap 8BitAlien.Lilybrook_LilybrookBeachPatch/skippable/pause 2000/emote AnyaLilybrook 16/move AnyaLilybrook 0 0 3/emote AnyaLilybrook 20/pause 500/speak AnyaLilybrook \"{{i18n:event-Anya10Hearts.01}}\"/move farmer 4 0 1/pause 600/speak AnyaLilybrook \"{{i18n:event-Anya10Hearts.02}}\"/pause 600/quickQuestion #{{i18n:event-Anya10Hearts.03}}#{{i18n:event-Anya10Hearts.04}}(break)speak AnyaLilybrook \"{{i18n:event-Anya10Hearts.05}}\"(break)speak AnyaLilybrook \"{{i18n:event-Anya10Hearts.06}}\"\\switchEvent {{ModId}}_Anya10HeartsMean/pause 500/speak AnyaLilybrook \"{{i18n:event-Anya10Hearts.07}}\"/emote AnyaLilybrook 60/pause 500/speak AnyaLilybrook \"{{i18n:event-Anya10Hearts.08}}\"/pause 500/emote farmer 20/emote AnyaLilybrook 20/globalFade/viewport -999 -999/stopMusic/end", //Mean Beach Date "8BitAlien.Lilybrook_Anya10HeartsMean":"pause 2000/emote AnyaLilybrook 28/globalFade/viewport -999 -999/stopMusic/end", } }, So I would split it into 2 EditData sections?

uncut viper
#

yes

sour sleet
#

I'm getting this error [game] Event '8BitAlien.Lilybrook_Anya10Hearts' has command 'switchEvent 8BitAlien.Lilybrook_Anya10HeartsMean' which couldn't be parsed: can't load new event from asset 'Data\Events\Temp' because it doesn't contain the required '8BitAlien.Lilybrook_Anya10HeartsMean' key.

#

This is what I have now { "LogName": "Beach Events", "Action": "EditData", "Target": "Data/Events/8BitAlien.Lilybrook_LilybrookBeach", "Entries": { //Beach Date (Anya 10 Hearts) "8BitAlien.Lilybrook_Anya10Hearts/LocalMail 8BitAlien.Lilybrook_Anya10HeartsMail/f AnyaLilybrook 2500/t 600 1800/w sunny": "breezy/42 18/farmer 38 19 1 AnyaLilybrook 43 19 2/changeToTemporaryMap 8BitAlien.Lilybrook_LilybrookBeachPatch/skippable/pause 2000/emote AnyaLilybrook 16/move AnyaLilybrook 0 0 3/emote AnyaLilybrook 20/pause 500/speak AnyaLilybrook \"{{i18n:event-Anya10Hearts.01}}\"/move farmer 4 0 1/pause 600/speak AnyaLilybrook \"{{i18n:event-Anya10Hearts.02}}\"/pause 600/quickQuestion #{{i18n:event-Anya10Hearts.03}}#{{i18n:event-Anya10Hearts.04}}(break)speak AnyaLilybrook \"{{i18n:event-Anya10Hearts.05}}\"(break)speak AnyaLilybrook \"{{i18n:event-Anya10Hearts.06}}\"\\switchEvent {{ModId}}_Anya10HeartsMean/pause 500/speak AnyaLilybrook \"{{i18n:event-Anya10Hearts.07}}\"/emote AnyaLilybrook 60/pause 500/speak AnyaLilybrook \"{{i18n:event-Anya10Hearts.08}}\"/pause 500/emote farmer 20/emote AnyaLilybrook 20/globalFade/viewport -999 -999/stopMusic/end", } }, { "LogName": "Beach Events", "Action": "EditData", "Target": "Data/Events/Temp/8BitAlien.Lilybrook_LilybrookBeach", "Entries": { //Mean Beach Date "8BitAlien.Lilybrook_Anya10HeartsMean":"pause 2000/emote AnyaLilybrook 28/globalFade/viewport -999 -999/stopMusic/end", } },

uncut viper
#

you havent patched it into Data/Events/Temp

#

you patched it into Data/Events/Temp/8BitAlien.Lilybrook_LilybrookBeach

sour sleet
#

It's all working now, thank you!!

opaque field
#

I’m about to test mine

sour sleet
#

Good luck c:

opaque field
#

Thank you!!

#

ope. It doesn't recognize my original event

#

Which is what I get I suppose for trying to get it to happen in Marnie's Barn

steel plaza
#

what other libraries can i use?

sour sleet
opaque field
#

I’m almost done switching out the dialogue for i18n stuff

undone fable
#

wait okay without learning c++ is it possible to add a marriage requirement on a custom npc like "__ has to have 5 hearts with [npc]"

gaunt orbit
#

Stardew used c# not c++. Very different languages

#

And I don't think you can do that with marryability but you can add conditions to proposal iirc

opaque field
#

Ah, okay, so something like this "LogName": "A Human Touch",
"Action": "EditData",
"Target": "Data/Events/AnimalShop",
"Entries": {
"TheWolf.Shane.AHumanTouch/f Shane 2000/e TheWolf.Shane.BanterBackfire/e TheWolf.Shane.JojaConfession/e TheWolf.Shane.2HeartRewrite/e TheWolf.Shane.UndertheBoardwalk/TheWolf.Shane.DarkBlue/e TheWolf.Shane.4HeartRewrite/e TheWolf.Shane.6HeartRewrite/e TheWolf.Shane.8HeartRewrite/z fall/w clear/t 1700 2300/ ": "icicles/25 8/farmer 22 7 1 Shane 25 3/skippable/pause 500/emote Shane 20/speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.1}}"/emote Shane 28/pause 500/speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.2}}"/speak Shane "/pause 500/emote Shane 16/speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.3}}"/pause 500/speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.4}}"/emote Shane 32/speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.5}}"/speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.6}}"/pause 800/speak Shane "{{i81n:TheWolf.Shane.AHumanTouch.7}}"/quickQuestion what do you do? #Reach out and touch his hand, tell him it's not selfish and he can stay as long as he likes. #Stay where you are and say nothing.(break)speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.8}}"/message "He laughs, one of his real ones."/speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.9}}"(break)speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.10}}"\switchEvent{ {{ModID}} TheWolf.Shane.AHumanTouch.Stayput/speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.11}}"/fade/end",

    "TheWolf.Shane.AHumanTouch.StayPut": "pause 500/emote Shane 28/speak Shane \"{{i18n:TheWolf.Shane.AHumanTouch.StayPut.1}}\"/fade/end"
opaque field
#

or do I need to make another Log with the branching event?

ocean sailBOT
#

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

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

woeful lintel
#

A good mod idea just came to me in a dream: a HUD quest display showing requirements for ongoing quests. Is there any mod like this already? I couldn't find any "quest tracker" on Nexus.

opaque field
#

'''json "LogName": "TheWolfAHumanTouch",
"Action": "EditData",
"Target": "Data/Events/AnimalShop",
"Entries": {
"TheWolf.Shane.AHumanTouch/f Shane 2000/e TheWolf.Shane.BanterBackfire/e TheWolf.Shane.JojaConfession/e TheWolf.Shane.2HeartRewrite/e TheWolf.Shane.UndertheBoardwalk/e TheWolf.Shane.DarkBlue/e TheWolf.Shane.4HeartRewrite/e TheWolf.Shane.6HeartRewrite/e TheWolf.Shane.8HeartRewrite/z fall/w clear/t 1700 2300": "icicles/25 8/farmer 22 7 1 Shane 25 3 3/skippable/pause 500/emote Shane 20/speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.1}}"/emote Shane 28/pause 500/speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.2}}"/pause 500/emote Shane 16/speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.3}}"/pause 500/speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.4}}"/emote Shane 32/speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.5}}"/speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.6}}"/pause 800/speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.7}}"/quickQuestion what do you do? #Reach out and touch his hand, tell him it's not selfish and he can stay as long as he likes. #Stay where you are and say nothing.(break)speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.8}}"/message "He laughs, one of his real ones."/speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.9}}"(break)speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.10}}"\switchEvent Stayput/speak Shane "{{i18n:TheWolf.Shane.AHumanTouch.11}}"/fade/end",

    "StayPut": "pause 500/emote Shane 28/speak Shane \"{{i18n:TheWolf.Shane.AHumanTouch.StayPut.1}}\"/fade/end" '''
vernal crest
opaque field
#
   "Action": "EditData",
    "Target": "Data/Events/AnimalShop",
    "Entries": {
        "TheWolf.Shane.AHumanTouch/f Shane 2000/e TheWolf.Shane.BanterBackfire/e TheWolf.Shane.JojaConfession/e TheWolf.Shane.2HeartRewrite/e TheWolf.Shane.UndertheBoardwalk/e TheWolf.Shane.DarkBlue/e TheWolf.Shane.4HeartRewrite/e TheWolf.Shane.6HeartRewrite/e TheWolf.Shane.8HeartRewrite/z fall/w clear/t 1700 2300": "icicles/25 8/farmer 22 7 1 Shane 25 3 3/skippable/pause 500/emote Shane 20/speak Shane \"{{i18n:TheWolf.Shane.AHumanTouch.1}}\"/emote Shane 28/pause 500/speak Shane \"{{i18n:TheWolf.Shane.AHumanTouch.2}}\"/pause 500/emote Shane 16/speak Shane \"{{i18n:TheWolf.Shane.AHumanTouch.3}}\"/pause 500/speak Shane \"{{i18n:TheWolf.Shane.AHumanTouch.4}}\"/emote Shane 32/speak Shane \"{{i18n:TheWolf.Shane.AHumanTouch.5}}\"/speak Shane \"{{i18n:TheWolf.Shane.AHumanTouch.6}}\"/pause 800/speak Shane \"{{i18n:TheWolf.Shane.AHumanTouch.7}}\"/quickQuestion what do you do? #Reach out and touch his hand, tell him it's not selfish and he can stay as long as he likes. #Stay where you are and say nothing.(break)speak Shane \"{{i18n:TheWolf.Shane.AHumanTouch.8}}\"/message \"He laughs, one of his real ones.\"/speak Shane \"{{i18n:TheWolf.Shane.AHumanTouch.9}}\"(break)speak Shane \"{{i18n:TheWolf.Shane.AHumanTouch.10}}\"\\switchEvent Stayput/speak Shane \"{{i18n:TheWolf.Shane.AHumanTouch.11}}\"/fade/end",

        "StayPut": "pause 500/emote Shane 28/speak Shane \"{{i18n:TheWolf.Shane.AHumanTouch.StayPut.1}}\"/fade/end" ```
vernal crest
opaque field
#

ooooh okay! Awesome. The event won't trigger in debug mode

vernal crest
#

What command are you using to try to trigger it?

opaque field
#

debug ebi TheWolf.Shane.AHumanTouch

vernal crest
#

Is it giving you an error?

opaque field
#

yeah the event could not be found. I'll put the other dialogue into i18n format and try again and see what happens

vernal crest
#

It's not related to that, the game doesn't know about i18n because i18n conversion happens before the game gets the file from CP.

#

Do you have any warnings or errors earlier in the log about the patch being ignored?

opaque field
#

Content Patcher Ignored The Wolf > The Wolf Events > Data/Events/TheWolfEvents.json > TheWolfAHumanTouch: Entries > 'TheWolf.Shane.AHumanTouch/f Shane 2000/e TheWolf.Shane.BanterBackfire/e TheWolf.Shane.JojaConfession/e TheWolf.Shane.2HeartRewrite/e TheWolf.Shane.UndertheBoardwalk/e TheWolf.Shane.DarkBlue/e TheWolf.Shane.4HeartRewrite/e TheWolf.Shane.6HeartRewrite/e TheWolf.Shane.8HeartRewrite/z fall/w clear/t 1700 2300' value is invalid: '{{i81n:TheWolf.Shane.AHumanTouch.7}}' can't be used as a token because that token could not be found.

#

Is the only thing that I see

vernal crest
#

Ah, that's because you wrote i81n instead of i18n.

opaque field
#

okay oof. I have a bandage on one of my typing fingers it's been giving me grief all day. I'll do some tinkering and see if it'll trip

vernal crest
#

I see you have fixed it since then. DId you do a patch reload after fixing it?

opaque field
#

doing that now

#

it works!

young surge
#

hello does anyone know exactly how the bed texture transparency works in game? im not sure how to phrase this

#

like if i leave the sheet part visible underneath the blanket im expecting it to show when the farmer gets in bed and the blanket layer is transparent

#

but will that look strange ingame

vernal crest
#

I don't think the beds use any transparency in game?

#

Well, I guess it does in a way in that the top tiles of the blankets are not fully filled in.

young surge
#

i think i was misremembering then lol oops! thank you anyways

lucid iron
#

i think it just draws 2 times so if ur sheets is transparent it is transparent

golden oar
#

Question about content patcher: How does it assign values for the custom portrait images? I'm expanding upon a mod I enjoy, and so I expanded the tile-sheet for NPC portraits, and added my own. However, I cant figure out what number the game auto-assigned for its portrait ID/cant find where in the content file you manually assingn those numbers. I've checked $1 - $60 and cant find the portrait when in an event. Anyone have any ideas?

lucid iron
#

This isn't a content patcher thing but rather vanilla game

#

$n is just sprite index

#

You should make sure your edit isn't getting overwritten

golden oar
#

if it is, how can I get the game to assign it a new ID?

lucid mulch
#

the index is just position in the spritesheet

dusty scarab
#

a quick question. I want to make it so the Hyper Speed-Gro only shows up for sale once the recipe for it is obtained, but my brain is short-circuiting on exactly how it needs to be written into the condition for HasCraftingRecipe. is it Hyper_Speed-Gro, or something else?

lucid mulch
#

would probably be (O)918

dusty scarab
#

I was wondering if it was that, but I wasn't sure

#

I know sometimes the syntax gets weird and wasn't sure if it was for the item's object ID or if it had its own unique thing for being a recipe flag

lucid mulch
#

PLAYER_HAS_CRAFTING_RECIPE <playerKey> <recipeName>

dusty scarab
#

and recipe name here would be (O)918, I presume

lucid mulch
#

would be the key in Data/CraftingRecipes

#

PLAYER_HAS_CRAFTING_RECIPE Current "Hyper Speed-Gro" (remember to escape when putting in json)

dusty scarab
#

thank you very much, I appreciate it

#

also, today I learned that you can use \ to make jsons recognise " when I need to use them for names, like in the above :D

vernal crest
#

Yup backslash is the escape character in json. Also in discord actually. That's why you have to do triple backslashes to make a double backslash appear because the first backslash disappears in order to escape the second one lol.

lucid mulch
#

\ is pretty much the universal character for escaping

#

Which is partly why windows style file paths are mildly annoying as anything needing to encode it has to escape it like crazy

odd ginkgo
#

it... is done

#

now I crawl to bed and hope that there isn't an explosion of bugs and conflicts... I'm hopeful...

vernal crest
#

Hooray!!!

dusty scarab
#

nice! that looks neat, and I appreciate that there's a romance and a non-romance option. it's good to have choices!

odd ginkgo
#

I really hope I didn't miss any "babe"s or romantic dialogue, but I did my best for tonight

dusty scarab
#

ah, I'm just one of those people who never bothers to romance people, so it's nice to not have that pressure to see the whole story, haha. also, the Canyons mod! I meant to download that one when I first saw it, but couldn't remember what it was called when I went back to look for it. the adorable tortoises will be mine!

vernal crest
#

I also love that there's a non-romance option!

#

I am increasingly aromantic when playing video games. I just want those intimate platonic relationships SBVMischief

pine elbow
#

And I agree on the romance thing...maybe I'll snatch it and add it to my mod as well

#

("Snatch" meant playfully)

stark spindle
#

If I want to remove an event from happening can I just patch it and set it to null?

vernal crest
#

Yup

stark spindle
#

awesome thanks

vernal crest
#

Is that instead of hitting F to open the quests page?

stark spindle
#

Sounds good. There is also a github for stardew mod ideas.

woeful lintel
rough lintel
vernal crest
woeful lintel
#

Just took a look at these mods, and holly shit, they look amazing! They have a very impressive list of features, and I'm pretty sure it's possible to pin game quests to the overlay with them.

vernal crest
unique sigil
crude plank
#

@acoustic summit sorry to bother you, i wanted to ask, do you have a public repo with your mods?

acoustic summit
crude plank
#

I was looking for the repo for skillful clothes revamped

#

where can i find it?

acoustic summit
crude plank
#

thank you, i looked all over your nexus and couldn't find anything haha

acoustic summit
#

Sorry about that! I'll put it on the main page now

crude plank
#

no worries, thanks for sharing it

woeful lintel
#

how can I add a file to be packed with my mod when doing a dotnet build? I'm guessing it's something to put in the .csproj but I don't know where to search how to do that.

lucid iron
#

So for smapi mod build config, assets and i18n is setup to be included by default

woeful lintel
#

I want to add a "content.json" file to this

molten owl
royal marlin
#

Question from a complete novice! I moddified a custom npc for personal use. It originally didn't dance in the flower dance, but I really wanted them to. I read up on the wiki to set the acceptance to null in the npc.json, and then add in the relevant sprites in the default index locations, but I can't find anywhere how the flower dance portraits will be loaded? :< Does it sort out itself aslong as I name the png correctly?

lucid iron
molten owl
#

i think it is

hallow prism
woeful lintel
#

Nope, it's a C# mod (FF) but I want to add a default pack in the same directory

hallow prism
#

you can add one to the appearence system, but it's a bit extra step

woeful lintel
#

hence the content.json file next to the dll

lucid iron
#

Then yes it is a bundled content pack

hallow prism
#

i would suggest to first manage to have them dance at flower dance then see about the portrait

lucid iron
#

Doing this just means the manifest of the pack gets checked

#

If you don't want that do Folder as suggested

opaque field
#

What's the path for if I have a custom letter background?

#

for "Target"

royal marlin
hallow prism
#

you load that, then use that in the mail data

opaque field
#

oh sweet. Thanks!

hallow prism
#
        // add letter BG
        {
            "LogName": "Load letter bg images",
            "Action": "Load",
            "Target": "Mods/Lumisteria.MtVapius/MtVapiusLettersBG",
            "FromFile": "assets/images/{{TargetWithoutPath}}.png"
        },```
VMV example, obviously don't use same exact path
woeful lintel
lucid iron
#

Yeah it should

#

I'm also pretty lazy about this so if i was doing it i would toss it into assets subfolder and not think about it

calm nebula
#

Wdym "default pack"

#

If it's an example pack I wouldn't bundle it at all

#

Otherwise the content pack deploy is good

woeful lintel
#

Not an example, an empty pack that can be targeted by CP to add stuff without making a proper Furniture Pack

calm nebula
#

If is base data structures assets (which is automatically packaged) is fine

#

Why do you need that?

opaque field
#
        {
            "LogName": "Load letter BG",
            "Action": "Load",
            "Target": "Mods/CacklingCaracal.TheWolf/TWLetterBG",
            "FromFile": "assets/images/{{TWLetterBG}}.png"
        },
lucid iron
#

I don't think you need a real file at all then

woeful lintel
calm nebula
#

Yeah okay I don't understand your use case and don't have time to understand your use case so good luck!

#

-# someone please buy me a coffee

lucid iron
#

e.LoadFrom(() => new Dictionary<string, QuestionDialogueData>(), AssetLoadPriority.Low);

#

Just do this in asset requested yggy

#

Probably want exclusive actually i keep forgetting to fix

opaque field
#

I've been nursing the same pot of straight black french press coffee since like 7 lfg

woeful lintel
#

I'm using IContentPackHelper.CreateTemporary to "create" it and pointing it to FF's mod folder, so that the content pipeline I set up loads content.json and stuff in assets/ directly from FF's mod folder

lucid iron
#

This seems like a lot of hoops to jump through when you can just make a normal custom asset lol

woeful lintel
#

I could have a special case in the content pipeline to fetch the empty content file instead, but meh, it's more code

woeful lintel
lucid iron
#

Like just open leroy.FurnitureFramework/Data with type Dictionary<string, FurnitureData> (or whatever your model is called

#

Content Patcher mods can target that with whatever info

woeful lintel
#

I never made a custom asset like that, and it's far too late to start making one. FF loads a JObject and parses it manually because the structure is full of optional nesting. Kinda hard to explain without pointing directly to the doc.

lucid iron
#

It's not that hard to make both usable cus it's ultimately just a way to get data

woeful lintel
lucid iron
#

You can choose to secretly transform the model you get from content pipeline into an FF asset pack on the inside, or other way around

#

It's also not a requirement to have exactly one target cus you can check for a prefix in asset requested and give a model just like a ff pack

woeful lintel
#

Still no idea what you're talking about, and how it relates to what I'm trying to do... It's probably because it's 11 p.m. on a Sunday after 5 hours of Youtube tho

molten owl
#

trust me

uncut viper
#

instead of loading a fake empty "real" content pack to get a target to edit you just create the target in asset requested, is what chu is saying, and how the vast majority of people do it and the recommended and easy way to do it

woeful lintel
woeful lintel
molten owl
uncut viper
#

as with atra, I really don't understand the use case or intent process here enough, but it seems a helluva lot more complicated than the usual way, but good luck

woeful lintel
woeful lintel
vernal crest
opaque field
#

Just double checking to make sure it reads right

#

There was supposed to be a question after the json oops

vernal crest
opaque field
#

No, and it’s not in the actual patch bit. It’s just the TWLetterBGpng.

vernal crest
opaque field
#

it's just missing the {{ }} around the TWLetterBG, I'd just removed it cuz I wasn't sure it was supposed to go there

#

Sorry..I can share the current one instead.

uncut viper
#

the reason there were braces originally is bc in Lumina's example it was a token. {{TargetWithoutPath}} is not the name of a file itself, it's a Content Patcher token with specific functionality

#

so you are correct it should not be there around the text TWLetterBG

vernal crest
uncut viper
#

(and as long as that png is inside an images folder which itself is inside an assets folder that is next to your content.json)

opaque field
#

It is indeed!

uncut viper
#

if your png is called that exactly too, you can also just reuse the same targetwithoutpath thing lumina did. you dont need to change that, jujst the target

#

for just one target though thats personal preference. exact same functionality either way

opaque field
#

Perfect, thank y'all! It should be triggering in-game soon.

hallow prism
#

debug showmail mailid

vernal crest
#

I never use TargetWithoutPath because I don't use the Mods/{{ModId}}/FileName convention.

uncut viper
#

that convention is irrelevant to targetwithoutpath, though

vernal crest
#

Not when you don't want to name your files Abagaianye.HiriaNPC_ExampleItem it's not lol

uncut viper
#

im not sure what that has to do with the token

hallow prism
#

well it would be the end of the target that matters, so FileName

#

but what matters is having something working with your logic anyway

vernal crest
#

Because if your Target is Mods/{{ModId}}/FileName and you use TargetWithoutPath you can name your file FileName.png. Since my Targets are {{ModID}}_FileName, I'd have to name my files Abagaianye.HiriaNPC_ExampleItem.png in order for the TargetWithoutPath token to work.

uncut viper
#

i was just confused bc it seemed like you were implying TargetWithoutPath specifically cares about the Mods/{{ModId}} part is all, but if thats not what you meant then never mind

#

since its not linked to any one convention

vernal crest
#

(Though I guess in my case it'd just be the {{Target}} token since I'd have no separator anyway)

uncut viper
#

i think if you have no slash separator theyd just both work the same, tho i cant say ive ever checked

vernal crest
#

I was merely implying that the only convention I've seen is Mods/{{ModId}}/FileName and that that convention works well with TargetWithoutPath but my particular approach makes the use of the token unwieldy due to what it requires the filename to be. I know there are other things that people could do for their Targets but on the whole I don't really see people deviating from Mods/{{ModId}}/FileName. (And just for clarity: I was not intending to imply that TargetWithoutPath is aware of or cares about the convention of Mods/{{ModId}}/FileName.)

odd ginkgo
unique sigil
#

want to write a blurb for it first?

odd ginkgo
#

FIASA was a test for myself as a modder, to bring together all the skills I've developed in other mods. It adds a boat where the player can purchase random items, just like the traveling cart, in exchange for foraged coral. There are two fully fleshed NPCs, one of which is romanceable if the player downloads the Romance version of the mod. Thank you!

rough lintel
orchid slate
#

how texture field in cp edit data item works 😭

gaunt orbit
#

The texture field in item data is a string or null. If null, it will use the default texture ie. springobjects. If it's a string, then it's the name/key of the texture asset to use as the spritesheet for the item

#

[[Modding:Items]]

orchid slate
gaunt orbit
crude plank
#

@acoustic summit hello again, i tried to make a small personal change to Skilfull Clothes Revamp but i can't figure out how to make the project work. How would you feel about making the suggested change official? it's just in LovingRancher.cs where you set the item quality to 4, i wanted to have it check if the item has any of these context tags category_milk, category_egg, category_sell_at_pierres_and_marnies instead of checking against the hardcoded list of vanilla animal products so that it also works on modded animal products

gaunt orbit
# orchid slate oh ok srry

It's fine! I wasn't being critical, I just wanted to know if you'd seen it. It explains a lot of the common stuff, so I figured it would be useful if you hadn't seen it. sometimes though people just don't get it the way the wiki explains it and need another explanation.

orchid slate
#

so creating a asset for a shirt is

        {
            "Action": "Load",
            "Target": "Shirts/AnyShirt",
            "FromFile": "assets/path/to/anyshirt.png"
        }
gaunt orbit
#

Yes. 'Load' actions say "Put the file 'FromFile' at the 'Target' address." and then you can tell the game to go to that adress when you want to give it that file

#

Keep in mind that these "addresses" are shared with all other mods and the base game, so you want to make sure that yours don't overlap with other mods by accident. The easiest way to do that is to prefix it with your mod id

#

For textures that's usually something like Mods/{{ModId}}/MyItems.

orchid slate
#

ohh understood

#

Thanks

acoustic summit
crude plank
orchid slate
#

the arms disappear...

golden oar
#

Can you put a "QuickQuestion" inside of the break of an ongoing quickQuestion? or will that break the event

tiny zealot
#

i expect it will not parse correctly. try using switchEvent or similar to jump out to a different script where you can start with a fresh quickQuestion

golden oar
#

If i do that, will it force a quick fade to black? I'd like to avoid that if possible

abstract peak
#

So, question about Alternative Textures. Is there a way to also line up the graphics to the television? I got this mod, and depending on how easy a fix would be, I could be convinced to fix this problem.

golden oar
#

ok cool

#

thanks!

lucid iron
#

atm the only way to do custom TV bounds is furniture framework (which isnt compatible with AT)

abstract peak
#

Ah, pity. I was hoping it was just some oversight.

urban patrol
#

are there any NPC pathing restrictions inside the spa?

dusty scarab
#

SMAPI is telling me that this manifest is invalid, but I don't understand why. it's the exact same manifest template that I used for another mod, which loads fine, changed to suit the new mod. can someone see what I can't?

lucid iron
#

hm the min api should be 4.0.0

dusty scarab
#

nevermind, I'm just an idiot. I had the manifest, content, everything else filled out in VS code, but forgot to save before I moved everything into the folder in the stardew modding folder, so it was all blank XD

hallow prism
boreal pulsar
#

is there a modding page about letters/mails?

#

im not sure how to send personalized mails to different players the same day

lucid iron
#

for C# side u can use addMailForTomorrow

urban patrol
rough lintel
#

however npcs do not swim in the swimmy, they walk on the water 😭

lucid iron
#

i got around to doing this, it seems like original edit was blocked because external link

rough lintel
#

which. i need to fix in my next update, ugh

primal rover
lucid iron
#

yea i think it is a global block here kyuuchan_run

primal rover
#

makes sense though!

lucid iron
#

need to ask margot (wiki admin) but for now i just put the instruction and trust ppl know how to google

primal rover
#

awesome, I think it will be helpful for those not on windows

urban patrol
rough lintel
#

SEE i was gonna do this and just. fucking forgot about it

urban patrol
#

lol 🙃

lucid iron
#

i think calcifer has/will have a feature for this

rough lintel
#

i believe i am the one who inquired about it

#

however ive heard little since and therefore dont remember

urban patrol
#

is calcifer a framework or a person?

rough lintel
#

framework

lucid iron
#

its the name of a framework mod yes

rough lintel
#

i just want the npc to hit a tile and do the farmer’s anim for jumping in the water rather than me having to manually set shit

#

bwahhhh

#

make npcs recognize the swim tile … or whatever it is we step on as farmers to hop in

lucid iron
#

one approach is schedule anim

urban patrol
#

i was also thinking about an animation just for her to sit on the side and kick her feet in the water back and forth

lucid iron
#

u can have em chill in the water

rough lintel
#

which i remember being suggested to do (i am lazy, however, and this does not allow for universal npc utilization)

lucid iron
#

yea i mean, go bully soph for updoot (no dont)

rough lintel
#

i am unfortunately of the communist variety when it comes to innovations such as this

#

nah i wont bother her

urban patrol
#

yeah it’s just the one NPC i want to do it for so schedule anim is probably what i’ll do

rough lintel
#

ill just put off the schedule anim til someone reports her walking on water on that schedule 🤣🤣

lucid iron
#

i do like the idea of like

#

npc doing a back stroke

rough lintel
#

absolutely nobody goes to the bath house tho, so the chances of seeing that… slim to none

lucid iron
#

adds character Dokkan

rough lintel
#

[sigh] i just HAD to be different …

urban patrol
# lucid iron npc doing a back stroke

yeah i was thinking about this and having NPCs swim in the ocean too, like it should all be doable with enough animations and NPC passable tiles lmao

rough lintel
#

me when i sweem

pine elbow
#

Does anyone have an example of how to change the appearance of Data/Shops stores? I saw the VisualTheme option on the wiki, but since there is no template to test, I tried to do it by imagining what it would look like and it failed.

rare orbit
pine elbow
#

QiGemShop?

lucid iron
#

yea

rare orbit
#

casino shop

#

or is it the ginger island shop

lucid iron
#

idrm if casino used any or if its hardcoded

#

but vanilla does use it a few times yes

pine elbow
#
            "Action": "EditData",
            "LogName": "Criando uma nova loja",
            "Target": "Data/Shop",
            "TargetField": [
                "SeedShop"
            ],
            "Entries": {
                "VisualTheme": {
                    "Condition": "true",
                    "WindowBorderTexture": "Mods/alichan.teste/background_shop_seed",
                    "WindowBorderSourceRect": {
                        "X": 0,
                        "Y": 0,
                        "Width": 18,
                        "Height": 18
                    },
                    "DialogueColor": "#FF0000",
                    "DialogueShadowColor": "#FF0000"
                }
            }
        }```
I wonder what I did wrong
#

It didn't change the background or the color

#

oh

#

I think I spelled shop wrong

#

Now that I noticed

hallow prism
rare orbit
#

kk! i'll dm the person in charge of starblue too but i believe their permissions are open!

#

anyone know if cherry symphony on nexus is on here?

rough lintel
#

i dont think so? never heard of them

#

@undone quail oh nvm!

#

they are!

rare orbit
#

cool cool!

#

i'll send em a dm!

boreal pulsar
# lucid iron for C# side u can use addMailForTomorrow

im switching all of my system and basically all quests will be assigned trough mails, i tought there was some framework mod that would simplify this but idk
thanks man you always have answers to all my questions lmao

lucid iron
#

there is a mod yes, mail framework mod

#

dont rly need it for basic things tho

boreal pulsar
# lucid iron dont rly need it for basic things tho

mhh the only things I need are:
mail that imposes a new quest (cant refuse it)
mail that notifies what punishment was applied after failing the quest
panel opening after clickign "receive reward" on a quest completition (panel will have a wheel to get the actual reward)

#

ye im reworking the whole thing again lol

lucid iron
#

well u can run trigger actions in mail

#

so yea u can do all that DokkanStare

#

you may need to do something to queue the wheel menu to appear after the mail menu is closed

boreal pulsar
#

yea I really dont liek the idea of a menu closing and another opening

#

but basically im removing the wheel system entirely at this point

#

the whole thing that started this lol

#

idk I like the idea of random rewards here

#

so a wheel would fit it very wheel

#

but at the same time I can just add "receive random reward" button and play no animation no panel, just give the item/effect and send a mail stating what was the reward (or a on screen notification)

#

idk being my first mod maybe its better to keeps it simpler

gaunt orbit
#

What if you did like a fake slot-machine-style wheel? For items or could display the item icon and name, and for non-items it could have a custom icon and description text

rigid musk
#

how does one exclude a fish from the fishing collection

acoustic summit
#

"ExcludeFromFishingCollection" set to true in object data

rigid musk
#

also is there a flag or condition for when a player has one and then two children? I can't find it on the wiki... though I also didn't find that on the wiki so

acoustic summit
#

Do you mean "do something only if they have 2 children, but not 1, and not 3"

#

Cause there is a GSQ you could hook up to a mail flag with trigger actions to check for specific number(s) of children

rigid musk
#

I'm trying to add a dialogue patch for when a player has one and then another for two kids so I can add more dialogue related to them

#

Because otherwise he's uh.. kinda an absent father and does not mention his children kekw

#

(aka like when he does the 'fun leave' dialogue i want to have him mention the kid(s))

acoustic summit
#

Well you could use the thing I mentioned if you wanted to change the fun leave one (or any other dialogue), use GSQ + mail flag trigger action and check for that on a condition.

Theres also OneKid_X and TwoKids_X in marriage dialogue you could edit if they are married to your NPC

rigid musk
#

I know about the one kid/two kid dialogue it's just he leaves the house a lot so that dialogue very rarely gets pulled

#

thank you for the GSQ suggestion :D

acoustic summit
#

That makes sense! Its PLAYER_HAS_CHILDREN [player] [min] [max] just for clarification here 🙂

rigid musk
#

:3 yeah I found it! Thank you so much, sometimes I just don't think of those things even though I've quite literally done them before lol

rotund elm
#

Heyo, is anyone aware of why the WEATHER Here GSQ is not working for fish location data?

brittle pasture
#

post your code?

rotund elm
#

They were all working on the prior versions of CP and Smapi and then I updated

brittle pasture
#

can you clarify by "'not working"

rotund elm
#

if I use the WEATHER Here gsq the fish shows in game, look up anything shows everything but the season info and the fish will not be catchable when they have a weather gsq in their conditions

#

its showing in the location data as catchable as well

#

when I do a patch export

rancid musk
#

Are the weather names not case sensitive?

#

Sun vs sun, Rain vs rain, etc

#

I haven't looked at the gsq code recently so I don't remember if it's sensitive or not

brittle pasture
#

it calls EqualsIgnoreCase so it shouldnt be

rancid musk
#

Ah. Then I've got nothing

brittle pasture
#

can you send the full patch export + example where this happens

rotund elm
#

two seconds

#

should I just upload the export to smapi.io?

brittle pasture
#

yeah

rotund elm
#

all have a weather gsq in their conditions field

brittle pasture
#

hmm, everything looks totally fine

#

you can't catch it even with targeted bait?

#

and it works if you remove the weather GSQ?

rotund elm
#

Yep,

#

I was testing a quest activating by catching the legendary fish of the docks in my mod and thats when I noticed

rigid oriole
#

Was the weather storm rather than rain? I think they're distinct

brittle pasture
#

if you check the GSQ with the gamequery console command does it show true

worldly sundial
rotund elm
#

check the query

trim sand
#

oh please no need. i give out ideas freely.

rotund elm
#

it is sunny and it comes back false

lucid iron
#

the conveyer belt is intriguing

brittle pasture
#

I tested the GSQs in my own game and they come back normally

rotund elm
#

Yea, and now it is magically working,

#

but I didnt change anything SDVpuffercry

#

Im so lost SDVpuffermoustache

sour sleet
#

My custom location is reached by using the bus (central station) Do NPC's have an issue getting from the farmhouse and to that location? Asking bc my NPC isn't following their marriage schedule SDVpufferwaaah

lucid iron
#

you cannot path to central station

sour sleet
#

Aaa I thought as much

tiny zealot
#

you might be able to set up an NPC warp that goes from the bus stop directly to your location, but the bus entrance is set up to go to Desert so don't mess with that one or vanilla will become sad

sour sleet
#

And that will be why they are stopping at the entrance of the bus stop

tiny zealot
#

i forget how it's set up, i just know you shouldn't change or block it, so you can't use the bus door as a warp