#making-mods-general

1 messages ยท Page 187 of 1

gaunt orbit
#

No

#

CP doesn't provide a way to do that, and that's probably for the best, otherwise you would very likely wind up with cyclic asset dependencies, which are very bad

#

You can do it with c#, but the potential cyclic dependency problem won't go away and you'll have to be very careful to handle it properly if it does happen

tender bloom
#

The one thing you can do, which is probably not helpful but might be, is if you set up a dynamic token with the love interest, you can set the field to be that value and use the dynamic token value elsewhere too

#

But this is tricky if, for example, another mod edits this value too

gentle rose
#

tbh I wouldn't be too fussed about using the "real" love interests in the code since they aren't currently used for anything and never have been, if you want a character to have a love interest just set it to whatever you want

faint ingot
#

I actually don't care about the love interest, I was just using that as an example. The real reason is that I'm too lazy and thick-headed to learn how to properly use mod-provided tokens and thought I could use the game's json assets instead

#

for like cross-mod compatibility. i have some dynamic tokens I'd like to let other mods change and that rabbit hole on mod-provided tokens went over my head

#

tbh i don't actually expect other mod authors to want to create content for my stuff, but if I could provide a template it would at least help as something to point to for people who are asking for cross-mod compatibility/content

slender badger
#

Dynamic tokens are unique to your mod, other mods can't edit them

gentle rose
#

there's CMCT but idk if it's intended to be used as a way for mods to allow other mods to add content

slender badger
#

It can read another mod's dynamic tokens, but I'm pretty sure it can't edit them and Button warns in the mod description to use that one as sparingly as possible

gentle rose
#

the correct way to do this is by loading things to a new asset and having the other mod change those afaik

faint ingot
gentle rose
#

I don't but I'm sure there's one on one of the wikis (make sure if you're searching in the main wiki that the modding namespace is enabled in advanced search)

lucid mulch
#

Iirc they tried getting rid of it during the 1.6 modding alpha but it broke things so it got put back

slender badger
#

Huh SDVpufferthinkblob

gentle rose
gentle rose
lucid mulch
#

It got reworked a bit to survive 8 player multiplayer, but its still somewhat fragile I think

faint ingot
#

I guess here's the dilemma. I use two beds in a prison cell, and I use conversation topics to know if those beds are occupied. ({{ModId}}_PrisonBed1 and {{ModId}}_PrisonBed2). I then use individual conversation topics to know who is in prison (for example {{ModId}}_PierreInJail. So somebody else could put their NPC in my prison, and set the PrisonBed1 conversation topic, but my mod has no way of knowing WHO is in that prisonbed. Which will break something when my mod tries to put that NPC's sleep frame in an event.

#

So I guess the easiest way is just to tell people if they want to put someone in the cell they need to make that event more generic

uncut viper
#

the flower dance calls a different love interest check, actually

#

Utility.getLoveInterest(string who) but its just a hardcoded switch statement

#

the actual field in the characterdata is used by literally nothing

gentle rose
# faint ingot I guess here's the dilemma. I use two beds in a prison cell, and I use conversat...

idk if I'd use conversation topics for that tbh, I'm pretty sure your best bet IS custom assets?

but also, how are you planning on making sure that if an author doesn't want their custom npcs to be jailed that they won't be jailed by someone else making a mod that works with yours? (I guess that's not entirely on you because there's no way to truly stop it from happening but it is a concern you should consider imo)

faint ingot
#

Yeah I can't stop people from doing things they shouldn't do that's the case with any mod

#

I experimented with alternatives to conversation topics but so far that has worked the best for my needs. It's my first foray into mod-making though so I'm sure someone else could be doing things better. oh well SDVitemblobfish

#

I'll definitely put a disclaimer in the guide though that the template shouldn't be used to make events for other people's characters

slender badger
#

That's what I was about to suggest, yeah.

faint ingot
#

like people want me to put morris in jail and I don't want to do that because I'm targeting compatibility with SVE which kind of makes morris a non-vanilla character. and i don't want to write events for other people's characters.

#

but i'll let people write events for mine as long as they follow certain guidelines

slender badger
#

Morris is a vanilla character regardless of what SVE does with him

faint ingot
#

he gets a decent redemption arc in SVE though if you choose joja, and if you don't choose joja well he goes away for good. so that makes him less interesting as a jailed character. what I might do is create like a thing where if you choose the community center, morris comes back for revenge and you get the chance to lock him up.

inner harbor
slender badger
#

@unique sigil About the recolour issues you mentioned in #modded-stardew, Kisaa, you could set up a safety net with the dynamic tokens if it's a common issue?

#

For example, all you'd need to do would be to add an extra block to the dynamic token for each of the recolours like so:

      // recolor tokens
      {
        "Name": "recolor",
        "Value": "Vanilla",
        "When": { "Recolor Selection":  "Off, Vanilla" }
      },
      {
        "Name": "recolor",
        "Value": "VPR",
        "When": {
          "HasMod": "grapeponta.VibrantPastoralRecolor",
          "Recolor Selection":  "Off, Vibrant Pastoral"
        }
      },
      {
        "Name": "recolor",
        "Value": "Vanilla",
        "When": {
          "HasMod |contains= grapeponta.VibrantPastoralRecolor": false,
          "Recolor Selection":  "Vibrant Pastoral"
        }
      },
unique sigil
slender badger
#

I mean, ideally "don't pick any recolor option not installed" should be enough, but we both know how users are lol ๐Ÿ˜†

unique sigil
#

there's way too many reports for that and now that more people are using the tilesheets, i should do that

dusk mulch
#

Where can I find the sprites for the character creation screen?

hard fern
dusk mulch
#

I cant find the gender buttons, the outlines, ect

hard fern
#

cursors

#

most of it, anyways

dusk mulch
#

I checked through there

hard fern
#

then you should have found it? ๐Ÿค”

dusk mulch
#

i need the gender buttons in particular

hard fern
#

yes they are in cursors.

dusk mulch
#

i will check once more then

versed wyvern
#

Looks like those are above the big OK button

hard fern
#

theyre a bit small so it can be hard to see

#

but they're near the top of the sheet

#

(cursors is very long)

dusk mulch
#

alright

#

let me see

#

found them, tysm

#

how much space does the gender button take up? like whats its frame?

hard fern
#

small, 16x16 for each?

dusk mulch
#

alright, ty!

slender badger
#

Why do you need the gender buttons? SDVpufferthinkblob

hard fern
#

(I'm a bit curious too ^^)

dusk mulch
#

...

#

i need to get better with the pings...

#

sorry...

#

๐Ÿ˜“

#

but follow up on the gender question, where can i find the data that defines it position and frame?

slender badger
#

Much as I would appreciate seeing that mod be created, I don't think you'll be able to do it. The author of Gender Neutrality Mod has already looked at ways to implement it and come up short because there's a lot of finicky bits & pieces that break if the player's gender is undefined

dusk mulch
#

Watch me. (/nbr /hj)

#

Oh god what have I goten myself into.

hard fern
#

XD

vernal crest
#

Unfortunately the game kind of just defaults "undefined" to "female" so you'd actually have to rewrite significant amounts of the game to make a true non-binary gender option work.

#

I have often wondered why they bothered changing the dialogue gender stuff to allow for the non-binary option when the game itself can't take it.

dusk mulch
vernal crest
#

Oh if you're not using C# you are...screwed lol

slender badger
#

You can't make a new gender without C#

hard fern
#

you can.. make a new one? SDVpuffersweats not using C#?

dusk mulch
#

๐Ÿ˜ƒ what.

vernal crest
#

How were you planning to make a new gender if not by changing the actual game code? /gen curious

brittle pasture
#

are you planning to change every strings in the game to reference male/non-binary or non-binary/female

#

because that's the only way I see this progressing

dusk mulch
brittle pasture
#

bird XKCD strikes again

vernal crest
#

Yeah you can make a new NPC with CP because that's working with the way the game already works.

#

Changing gender stuff is trying to change how the game itself works.

slender badger
#

The best you can do with CP is just reskinning the two default genders as something else, which Gender Neutrality already does

dusk mulch
#

Alright then.

#

I will leave it.

vernal crest
#

Yeah the gender neutral mod already does that part for the vanilla game and any mod that does compat with it.

#

I'm sorry to be discouraging! It's unfortunate when something that seems like it should be straightforward is really not.

hard fern
#

i guess because of how the game was made, its hard to try and change if afterwards

vernal crest
#

I play my little non-binary character using the gender neutral mod and just close my eyes if I use mods that don't do compat with it lol

dusk mulch
#

All good lol, I just hate how the most random pieces are hardcoded

hard fern
#

like the crib

slender badger
#

You could make your own compat patches if you wanted, Aba? I've got a tutorial on the modding wiki for how to do it

#

Koda's always happy to help out with doing GNMT compat too, they've done a few of them now

vernal crest
#

I can understand it with gender (if not agree with it) because CA did not consider diversity in many ways at all when making the game, imo.

slender badger
#

CA's your average straight white guy in a lot of regards and it reflects in the game

vernal crest
dusk mulch
#

Unless...

hard fern
#

it's nice that modding is so flexible

dusk mulch
#

If I contact the person who made the gender neutral mod to use it as a baseplate that could work

slender badger
#

As a baseplate for what?

vernal crest
#

I am so lazy that if one of my mods doesn't trigger an event properly I will just go read the event in the file rather than get it working in game haha

hard fern
#

๐Ÿ˜ญ

dusk mulch
#

So like 1/10 peices

#

pieces*

hard fern
#

but, why? im a bit confused

slender badger
dusk mulch
#

๐Ÿซ  kill me.

hard fern
#

i dont see why you'd need to include someone else's mod in your own (?)

vernal crest
slender badger
#

There's also little reason Hana would agree to that

dusk mulch
vernal crest
#

Also, this might be a totally off-base guess, but if you're intending to make a sort of "bag of tweaks" mod that combines many disparate changes to the game, I don't know if you'll get much traction. Stardew modders tend to download mods that do one thing rather than one mod that changes many unrelated aspects of the game.

#

Ignore that if that wasn't your intention!

dusk mulch
#

I was going to make each thing toggable (/nbr)

vernal crest
#

(It's probably because our mod file sizes are so small and mods are so easy to add and remove.)

dusk mulch
#

true

slender badger
#

Considering there's functionally no upwards limit on how many mods can be installed and the vast majority work fine together, there's not a lot of benefit to having a mixed bag of functions in a single mod instead of just leaving them separate

dusk mulch
hard fern
#

i think it would also just be hard to work with...

slender badger
#

I didn't say you were, I'm just saying there's little benefit to it KR02Shrug

vernal crest
#

It's totally up to you, of course. If you'd rather make a mod that way then that should be your priority, I think.

dusk mulch
#

Eh, I will select the interesting/important ones and make seperate mods of them.

winter dust
#

Bug report I'm not used to seeing, [Content Patcher] Two content packs want to load the 'Maps/Desert' asset with the 'Exclusive' priority (Stardew Valley Expanded and Walk to the desert). Neither will be applied. You should remove one of the content packs, or ask the authors about compatibility.

vernal crest
#

I have to say I am also curious about what community suggestions you are getting for this. Are you cruising the mod ideas github?

winter dust
#

Someone has this issue with SDV and WTDR, not sure what "Exclusive" means.

#

Maybe it means not checking for "When" with edits to the tilesheet and just editing it regardless.

vernal crest
#

Exclusive means that if your patch is loaded, no others can be. When CP comes across that situation where two mods are trying to exclusively load the same asset, it denies them both.

winter dust
#

Well, I kinda need to edit the Desert map, and so does SDV.

#

This isn't an issue with Ridgeside Village with the Backwoods map when I edit it.

vernal crest
#

Yeah but you should both be using EditMap, not Load, unless there's something that means you need to Load instead.

winter dust
#

I use EditMap, I don't use Load.

dusk mulch
vernal crest
winter dust
#

Yeah, none of my entries for the Maps/Desert are Load, they're all EditMap.

dusk mulch
winter dust
#

So I'm not sure why they're getting this error.

vernal crest
#

I will not risk my sanity looking at town square lol

vernal crest
winter dust
#

Looking at the error, there is no redux in the name and Desert is lowercased.

#

I think they're being stupid, I'll direct them to do everything over properly.

slender badger
#

(Not surprised that SVE uses exclusive on its loads RollEyesMaddie )

vernal crest
#

Yeah I would not be surprised if they're using the outdated mod and then reporting it to you by mistake.

winter dust
#

Not sure how they managed to find my mod page instead of the original.

#

People are still reporting bugs on Tarniyar's original mod page btw lol.

#

For a while I would direct them to use the Redux but then I just gave up.

dusk mulch
#

Before I even get started on this, I just want to make sure. Is making 2 pieces of clothing into 1 (making a dress) feasable with CP?

slender badger
#

No

dusk mulch
#

๐Ÿฅฒ

hard fern
#

the best you can do is make two pieces that look seamless when worn together

#

(top and skirt)

uncut viper
#

(the original walk to the desert also does not do any loading to Maps/Desert ftr, nor is "Walk to the desert" its name in the manifest)

hard fern
dusk mulch
#

yeah thats why im making the mod, because people are complaining its to hard to find that

hard fern
#

well, unlessyou want to use C#

#

its not possible

dusk mulch
#

petition to make the entire game CP compatible (/j)

slender badger
#

A lot of what people in #town-square complain about will either already have a mod for or isn't possible without difficult C#, if at all

dusk mulch
#

Of course they will...

slender badger
#

If you really want to fulfill random requests, look on the modding ideas Github because that at least has tags that tell you whether something will need C# or not

dusk mulch
#

I should do my research on resources...

uncut viper
#

(anyway goodnight)

winter dust
#

Hey @undone quail, are you the one maintaining Starblue? And are you still doing the Spring variants for it? Would love to know, thanks.

stable grotto
#

@winter dust what I meant by Vibrant Pastorals Green Fall token is the registered token VibrantPastoral.C/GreenFall

winter dust
#

Okay, Walk to the Desert originally had the entry as a dynamic token back in SDV 1.4, I just carried it along through the versions.

#

What's the difference in using it rather than a DynamicToken, and what extra setup would it entail to use VibrantPastoral.C/GreenFall, and why would I want to use it? Not asking in a rude way or anything.

stable grotto
#

That was only done with the update in ...October? November?... who knows

#

no extra setup

#

Vibrant Pastoral feeds that token to CP, making it available for any other mod to call
so by calling on the value of that token in your query you can skip another config option doing the same job

winter dust
#

So what, am I just doing this instead?


        {
            "Action": "EditImage",
            "Target": "Maps/fall_z_wtd_tilesheet",
            "FromFile": "assets/recolors/pastoral/fall_z_wtd_tilesheet-g.png",
            "When": {
                "VibrantPastoral.C/GreenFall": true
            }
        },
stable grotto
#

exactly

gentle rose
gentle rose
gentle rose
# dusk mulch ty!

and don't be afraid to look through the older ideas by the way, there are some absolute gems from as early as like 2017 that were never picked up by anyone for some reason

hard fern
#

oh hey this is neat

#

idk if i'll ever pick up some of these, but it's fun to look

winter dust
#

        {
            "Action": "EditImage",
            "Target": "Maps/fall_z_wtd_tilesheet",
            "FromFile": "assets/recolors/pastoral/fall_z_wtd_tilesheet-g.png",
            "When": {
                "HasMod": "grapeponta.VibrantPastoralRecolor",
                "VibrantPastoral.C/GreenFall": true
            }
        },
#

Nevermind, I replaced the HasMod with "VibrantPastoral.C".

stable grotto
#

last info I have is that Cherry still maintains Starblue and there is a Blue Spring option in the latest update

winter dust
#

Dear god....

#

@idle ginkgo Hey Yri, are you still supporting the Retro recolour mod? a few updates have happened and a few new tilesheets have been added so everynow and then you run into spots of vanilla tiles amongst all the recoloured ones.

#

I'm pretty sure Wittily is abandoned at this point.

stable grotto
#

wittily is being kept alive in the comments

winter dust
#

And eemie is just gone.

stable grotto
#

but only dark dirt afaik

slender badger
winter dust
#

Guess I'll just dump support for Eemie and I might get around to Wittily eventually.

winter dust
calm nebula
#

So I'm not surprised they tried a thing and are waiting for reports of what else to change, etc

vernal crest
#

Oh I'm not surprised they didn't change the underlying gender stuff. I'm surprised they changed the dialogue stuff.

calm nebula
#

It's the underlying gender stuff they tried to change!

#

I wouldn't be surprised if it ended up in 1.7, if 1.7 happens, etc

vernal crest
#

By adding a third gender to the dialogue gender options without adding a third gender that can make use of that?

#

You think they were preparing the ground, so to speak?

calm nebula
#

Yeah, the "third gender" is in the code, just not fully implemented so there isn't ui for it

#

You could even do more genders if you harmony hacked your way in

#

To do more would have to involve studying how nbs work in 12 separate languages lol

#

In a game that used to do jus de orange

hard fern
#

Jus de orange...

calm nebula
#

(Vin de orange, sorry)

vernal crest
#

I keep wondering what either of those phrases mean and have no idea haha

#

I keep wanting to interpret "vin de orange" as "wine the orange" though lol

finite ginkgo
#

I assume that's what it means yeah, just probably grammatically incorrect or something similar

My (un)trusty source, Google translate, claims it should be Vin d'orange

nova gale
#

Is it possible to make a specialized cooking bench (like a cooking bench that only shows specific subsets of recipes) with just CP?

brittle pasture
#

with CP + Better Crafting yes

nova gale
#

darn! ok, thanks Selph

acoustic summit
#

@hallow prism Alright! I've added GSQ and LocationContext support to NiTV, along with some extra trigger actions and new GSQs you can use if you like. My tests showed things working, and you can check the optional file [NV]BossSlime for an extra example on how to make a complex creature. I think GSQs should be used where possible instead of location contexts ๐Ÿ™‚

brittle pasture
#

GSQs are love GSQs are life

gray bear
#

to be happy you must simply enable the GSQ for it /j

reef kiln
#

I want to test a new pet I just made out, how do i increase my current pet to max so I can try adopting the new one. is there a cheat to do this?

outer cedar
#

with making npc schedules how do you stop them walking through other peoples gardens and destorying stuff?

#

like npc garden furniture

brittle pasture
#

that need a mod like non destructible NPC

#

are you spawning them with FTM? if so theres a setting for indestructibility that might work

#

if it's a user decoratable area (or if the above doesnt work) you probably have to ban them from going in with NPC barriers

brittle pasture
true coyote
#

when adding a custom item does the seasonal changes/recolor changes still only go in the content json or do they need to be defined in the recipe json, objects json and [insert item type] json too? there arent any mods for fences with recolors and seasonal changes and added as a custom recipe that i can look to on nexus for reference

lucid iron
#

I think you only make 1 recipe right

low summit
#

Hey everyone. I have an idea to create a mod that takes over the mechanics of the game Satisfactory. At least: drilling rigs, smelting furnace, conveyor belts, connectors and splitters, plants for the production of different materials, which will be connected to conveyor belts.
Basically, Factorio )
Would you like to see such mechanics in your game?

true coyote
#

I'm having such a hard time with these new cp changes :( they're so vague now I'm not sure where to even start beyond my config schema and manifest

lucid iron
true coyote
#

so I'll look at the wiki a bit more

slender badger
lucid iron
#

Vibe Check...

gray bear
#

unless i'm misunderstanding the question

slender badger
brittle pasture
true coyote
#

but maybe its as jea says and it doesnt matter? and then I guess I could put recolor options in the content json...

low summit
gray bear
#

the json location doesn't matter, unless you're using dynamic tokens for the code

brittle pasture
#

there are also a bunch of separate industrial machines mod
but by all means there's definitely a market for those mods; the more important question is your capabilities and the time you're willing to put in

slender badger
low summit
true coyote
gray bear
#

in general, different code jsons are just for convenience, there's no real purpose for em

#

(did i spell that right? buh spelling)

true coyote
#

ok I'll try to go with what I know then and delve into the wiki a bit more for the other stuff

#

convenience?

#

is that what you meant by spelling?

gray bear
#

yes that is the word, thank you

true coyote
#

ha np

#

ok time to bury my head in notepads

gray bear
#

i think what Airyn said is your best course of action. load your fences tilesheet and editimage it according to season.

low summit
brittle pasture
ocean sailBOT
#

Making mods can be broadly divided into two categories:

Usually itโ€™s easier to start with making content packs, since you don't need to learn programming.

brittle pasture
#

!decompile and read the source

ocean sailBOT
flat sluice
#

So, I tried to debug it on a clean save, new clean mod list. To be precise, I noticed that the C# game code for the Summit event always takes the dialogue from .json/.xnb (if not edited with some mod) files. And as the third one acts like an event, I am trying to test if it works for the first & the second one as well - it should. And it also does, at least with the first one, as I keep running into an error with the second one:

Event '-1' has command 'pause 500/viewport move 0 -1 4000/pause 5000/speak StrojvedouciDenis.Eleanor It is so beautiful up here.../pause 500/message If I can see this, then the second one works!/pause 500' which couldn't be parsed: required index 1 (int pauseTime) has value '500/viewport move 0 -1 4000/pause 5000/speak StrojvedouciDenis.Eleanor It', which can't be parsed as an integer.

Full log: https://smapi.io/log/bbc9c09fc61f48b18a63d1de92e84e36
The changes I made to that dialogue (directing to the lines that are used): https://smapi.io/json/content-patcher/bf3aae57ef9643918f841944283335c0#L216

Does anyone know how to fix it?

ocean sailBOT
#

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

latent mauve
#

I think when I updated the Satoru NPC to fix his summit dialogue, I had to add SummitEvent_Dialogue3_<spouse> as a specific dialogue key.

#

For the third line, at least.

#

But as far as a string line, rather than a message reference... if I'm remembering right, don't you usually do /speak <npc> \"text\" ?

#

I could be wrong

flat sluice
flat sluice
latent mauve
#

Hmm

#

Tried with the quotes but not the \?

reef kiln
flat sluice
latent mauve
#

Sorry, Discord ate the slash. Like this: /speak StrojvedouciDenis.Eleanor "It is so beautiful up here..."/

flat sluice
flat sluice
latent mauve
latent mauve
#

If you do a patch export for the Data/Events file, how does it show the result for that event?

latent mauve
#

I think it's the railroad file you'd need?

#

I forget if Summit fires at Mountain or Railroad or somewhere else

flat sluice
acoustic summit
#

\"Text\"

flat sluice
acoustic summit
#

VSCode will like it, and it still fits CP formatting

latent mauve
flat sluice
latent mauve
#

I suggested that before, 8AwA8, but Dennis said it didn't work when they'd tried it.

#

So I'm wondering if an earlier slash got eaten somehow and we're somehow in the wrong action

flat sluice
latent mauve
#

In that case, check Farm or Town

acoustic summit
#

Oh

latent mauve
#

If it's on wakeup and stepping outside, it'd be in Farm

acoustic summit
#

You want to change what your spouse says on the summit event?

#

Thats Summit_Dialogue3_<Spouse> Unless you're doing something else

latent mauve
#

They also want the first two lines changed

#

Which is why we're experimenting

gentle rose
#

Append here means just that, itโ€™s appending to what was before it

latent mauve
#

I feel like most people just patch the Strings file for the first summit lines, though. >_>

#

Rather than the event

acoustic summit
#

Yeah, thats what I'd do

flat sluice
acoustic summit
#

When married to that NPC patch those strings

gentle rose
#

are you trying to use -1 as an event ID?

latent mauve
#

I don't have the game files in front of me at the moment, but I can take a peek after my work meeting if you still haven't resolved it

flat sluice
#

Of course these edits will be only for my NPC when the player will marry them, but as I didn't code that, I'm doing it for everyone right now. But I married her,

flat sluice
calm nebula
flat sluice
hard fern
#

data/extradialogue

#

is where the summit lines are

acoustic summit
#

"SummitEvent_Dialogue1_Spouse": "I was just thinking about the last %year years...",
"SummitEvent_Dialogue1B_Spouse": "We've been through a lot together, haven't we?$h",

#

And then

#

"SummitEvent_Dialogue2_Spouse": "...But look how far we've come.",
"SummitEvent_Dialogue3_<Spouse>": "Something"

latent mauve
#

I think part of the issue is that you've put event commands (pause) inside your dialogue string rather than just the text.

flat sluice
#
  "SummitEvent_Intro2_Spouse": "It's so beautiful up here...\"/pause 500/message \"If I can see this, then it works!\"",```
acoustic summit
#

Yeah you don't use pause here

flat sluice
gentle rose
#

thereโ€™s an odd number of double quotes too, which canโ€™t be right

#

thereโ€™s no situation where you should ever have an odd number of double quotes

acoustic summit
#

This is not part of the event string, so I don't think event commands will work

flat sluice
gentle rose
#

can you fix the quoting first? because thatโ€™s definitely broken

acoustic summit
#

Thats cool that they do

flat sluice
# flat sluice They do work in `SummitEventDialogue3<Spouse>`

"SummitEvent_Dialogue3_Haley": "giggle... $h"/faceDirection farmer 1 true/emote farmer 8/pause 1000/speak Haley "Oh, it's just that...#$b#As a little girl, I always dreamed that one day, I would climb to the summit with my true love, and share a kiss.$l"",

latent mauve
#

"SummitEvent_Intro_Spouse": "\"Hey, @.\"/pause 500/message \"If I can see this, then it works!\"",

latent mauve
#

Oh, that example doesn't escape your quotes at all for the speech

gentle rose
#

also I know you guys were experimenting, but every quote other than the one at the very beginning and the one at the very end should have a slash before it.

latent mauve
#

iro, did my last example escape all the necessary ones?

gentle rose
#

looks like it to me!

latent mauve
#

I have to dip for a meeting in a few minutes so typing fast, LOL

gentle rose
#

haha dw

flat sluice
gentle rose
#

Iโ€™ll try to take over for you for now, I donโ€™t know much about specific content patcher stuff but I do know syntax pretty well SDVpufferheart

flat sluice
#

BTW, neither one of these work properly:

        "SummitEvent_Intro_Spouse": "\"Hey, @.\"/pause 500/message \"If I can see this, then it works!\"",
        "SummitEvent_Intro2_Spouse": "/speak StrojvedouciDenis.Eleanor \"It is so beautiful up here...\"/pause 500/speak StrojvedouciDenis.Eleanor \"If I can see this, then the second one works!\"/pause 500",
gentle rose
#

can you send the most recent log?

ocean sailBOT
#

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

flat sluice
#

No errors there, just the first dialogue was cutted at Hey, @. and the second was like /speak StrojvedouciDenis.Eleanor \"It, that's all.

gentle rose
#

no, itโ€™s okay, thatโ€™s progress at least

#

one sec

#
        "SummitEvent_Intro_Spouse": "Hey, @./pause 500/message \"If I can see this, then it works!\"",
        "SummitEvent_Intro2_Spouse": "/speak StrojvedouciDenis.Eleanor \"It is so beautiful up here...\"/pause 500/speak StrojvedouciDenis.Eleanor \"If I can see this, then the second one works!\"/pause 500",

can you try this and see if the first one works now?

#

or at least if something changes

flat sluice
gentle rose
undone quail
blissful panther
#

I'm not sure what you need the JSON for? I will be clear, though, the version I gave you is absolutely not finished or ready for release in any way! I thought you wanted it for testing/just to get the basics in place for your mod.

All of the keeping track of the items cooldowns, etc., will need the multiplayer stuff to be finished, and I'm not silly enough to promise when a multiplayer compatibility feature will be fully finished and tested. SDVkrobusgiggle

fair scaffold
#

Heyo! I'm trying to register a custom token through extensibility. I managed to access the token and its value with a Pack, but the token never updates (saving the pack's config in GMCM does update the token)
The token implementation:
https://github.com/mikael-uhl/SimplyShirtless/blob/tokens-test/SimplyShirtless/extensibility/ContentPatcher.cs
The pack using the token:

      "Action": "EditData",
      "Target": "Strings/StringsFromCSFiles",
      "Entries": {
        "TV.cs.13114": "{{JhonnieMike.SimplyShirtless/CurrentShirt}}"
      }```
#

Is it necessary to invalidate assets inside UpdateContext()?

ivory plume
#

There's a couple of issues with your approach:

  • A token should only change during UpdateContext, but you change its value whenever GetValues gets called depending on the input arguments. That will lead to strange behavior in content packs.
  • You're using the advanced API, which means you need to worry about internal Content Patcher concepts like context updates, immutability, boundedness, etc.

I suggest using the basic API instead, in which case Content Patcher will handle all the details for you and it should just work. Something like this:

contentPatcherApi.RegisterToken(_modManifest, "CurrentShirt", () =>
{
    string shirtId =
        Game1.player?.shirtItem.Value?.ItemId
        ?? SaveGame.loaded?.player?.shirtItem.Value?.ItemId;
    return shirtId != null
        [shirtId]
        []; // don't return null, which marks the token as non-ready
});
lucid iron
blissful panther
gentle rose
blissful panther
#

Before I click on it, let me guess that it's the VO one?

gentle rose
#

it is!

blissful panther
#

It is still one I'm very slowly making, but if me being assigned to it is preventing others from deciding to pick it up...

fair scaffold
#

Tysm!

gentle rose
tiny zealot
lucid iron
#

Why is dh showing up as LordPie

#

But only in replies and @

latent mauve
#

because nicknames are a thing

gentle rose
teal bridge
#

I think there's something wrong with your Discord client.

gentle rose
#

it happens to me too, discord gets weird about nicknames sometimes

lucid iron
#

Ok it unbork once i restart, maybe it is funny caching with the server profiles?

tiny zealot
gentle rose
vale stream
#

Got it working finally SDVpufferparty this next update should fix your issue

(ignore the duplicate on the top left, that was an intentional test)

tight bough
vale stream
flat sluice
ocean sailBOT
#

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

flat sluice
# flat sluice <@250679492589125643> I'm back, sorry for taking it quite longer than I expecte...

And the third one is broken like this.
Code:

        "SummitEvent_Intro2_Spouse": "/speak StrojvedouciDenis.Eleanor \"It is so beautiful up here...\"/pause 500/speak StrojvedouciDenis.Eleanor \"If I can see this, then the second one works!\"/pause 500",
        "SummitEvent_Dialogue3_<spouse>": "{{i18n:Dialogues.marriage.SummitEvent_Dialogue3A_{{ModId}} |PlayerName={{PlayerName}}}}/"```

I18n:
```  "Dialogues.marriage.SummitEvent_Dialogue3A_StrojvedouciDenis.Eleanor": "Such a nice view here, don't you think, {{PlayerName}}?#$b#I'm glad we came here...#$b#It is %years years since you came to Pelican Town, and I'm happy you did.#$b#Because my life is much better with you in it.#$b#Just think about it - how would my life look like if you didn't come here?#$b#Would I ever find out about myself? About my powers? About my parents's past?#$b#Because I can't...",
gentle rose
toxic hornet
#

Hello! I am very new to mods and but was hoping someone here would be able to provide a bit of guidance. I think my questions can be simplified to: can you mod another mod via content patcher and, if so, how?

Basically some of the expansion mods we're using (mainly SVE + Dwarven Expansion) add in more animals but we have Elle's Cuter Animals to retexture all the vanilla animals on the farm. The juxtaposition of those new animals next to our cute ones is very jarring. I have some tweaked sprite sheets that match the style of the Elle skins for the added animals but I don't know how to apply them. Would anyone be willing to help me change up some code so it works?

* I don't know much about the modding community or mod etiquette but this is meant as a jumble of tweaks for personal use in the farm my friends and I have so I haven't asked permission of any mod authors regarding the stuff I want to retexture

ocean sailBOT
#

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

flat sluice
tight bough
flat sluice
ocean sailBOT
#

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

gentle rose
#

Then the problem is that the summit doesn't handle events the same way, apparently. Not sure if there's a workaround for that tbh

fossil osprey
flat sluice
gentle rose
#

generally we consider personal use stuff to be okay with no permission requested tbh, just don't publish it

lucid iron
#

Can make and publish: a new mod with all original assets, inspired by or requiring other mods
Better to keep as personal use: mods that are minor edits to existing mods that can't work without the original assets packaged in

toxic hornet
lucid iron
#

Because of how content patcher is done, making the first one is pretty simple and manageable 99% of the time

faint ingot
#

is it possible in an event to combine "end invisible <NPC>" and "end position <x> <y>"?

#

actually now that I think about it I think I can manage without forcing the end position

wanton pebble
#

Weird question - is there a simple way to make a dagger a sword?

#

I.e. make a dagger act like a sword

lucid iron
#

If you just change the type on a Weapon it'll probably work

wanton pebble
#

Something to try when I get home (then immediately test via the Desert Festival testing XD)

wind remnant
#

howdy guys! could i get a fresh set of eyes on an issue im having getting my custom farm to boot up? ive gone over and over the JSON and Tiled files and i cant figure out why content patcher doesnt seem to be agreeing with it; every time i try to open it SMAPI says it cant find my farm in the /maps folder.

i have a zip of it on the forums, but so far no help and i dont have much more free time this week to mess with it haha
https://forums.stardewvalley.net/threads/custom-farm-map-cp-content-file-not-found.36612/

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.

ember lily
#

@toxic hornet Using -# is blocked, thus why your message isn't going through

lucid iron
#

Most likely you forgot to load something

wanton pebble
#

While you're here chu

#

You're the maker of Trinket Tinker yeah?

lucid iron
#

Yeah

wind remnant
ocean sailBOT
#

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

wanton pebble
#

Just to be clear, you have to have combat mastery in order to use any of the trinkets added via it, right?

lucid iron
wanton pebble
#

Or does it unlock trinkets earlier

lucid iron
#

Did you have file extensions off?

wind remnant
#

the file its asking for is definitely right where it says it isnt. what do you mean by file extensions being off?

lucid iron
wanton pebble
#

Thank you, that's all I needed to know SDVpufferheart

latent mauve
lucid iron
#

It was discussed that unlocking the slot earlier is something doable via a trigger to set the stat, in content patcher

#

And I am thinking of alternate ways to equip trinkets, unrelated to having a slot

wind remnant
toxic hornet
uncut viper
#

-# become Farmer rank and you, too, can speak in a soft voice

wanton pebble
#

or a loud one

ocean sailBOT
#

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

wanton pebble
#

Depends on what you want voice wise SDVkrobusgiggle

fervent horizon
#

looks like you are not using a relative path

uncut viper
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.

uncut viper
#

(im on mobile so i can't download your zip)

toxic hornet
# lucid iron Because of how content patcher is done, making the first one is pretty simple an...

I was planning on the latter .... I thought that one would be easier than the first one sweats

An example of a small tweak I already did to Elle's Coop Animals:
My friend is obsessed with the blue chicken so I added an extra blue chicken recolor into Elle's mod and added some the sprites + code for blue bunnies and ducks to be possible skins. This is only so my friend can have an All Blue Coop. The assets are Elle's, I just did a recolor of them. I would never consider sharing this outside of the 3 friends who are playing on the farm with me. I also did a recolor of one of the Elle ragdoll cat sprites to look like my kitty and added a new breed of dog (Shiloh Shepherd) to the options in the cuter dogs mod. The Shioh Shepherd sprite and patterns were made by me but in Elle's style and with reference to a variety of Elle's existing breed sprites. Even though it's technically new I wouldn't consider it different enough to be something that could be published.
(In some hypothetical where I wanted the Shiloh Shepherd sprites available in a published mod I'd contact Elle, offer the sprite sheets, and see if she wanted to include them... and then leave it at that if she declined. Not something I'm looking to do but using it as an example of my current outlook with tweaking mods.)

Currently, my mini project is to use sprites I made (referenced Elle's art so nothing would clash since that's what made me want to start this in the first place but they are entirely new species and the patterns on the sprite bases are also made by me) to try to replace the goose, camel, & bear from SVE and the naked mole rat from Dwarven Expansion. Still not planning to publish though. I made the sprites with color variety and baby versions for each of them. I'm having trouble with:

  1. targeting the goose/camel/bear/mole rat to be reskinned since they're not from the base game
  • having the randomly chosen color options for variety once they are targeted
  • applying the skin to the baby version rather than just adult
  • keeping the baby skin on the baby instead of having it be the permanent skin
    โฌ†๏ธ I had partial success with the goose but only when it is fully grown and it seems to go to a single adult skin, so no variety and no baby retextures.
wind remnant
#

here you go! ive tried my best with a very small understanding of how this works, so thank you for taking a look

latent mauve
#

okay, your Load is targetting Isaiah.FriendFarm, but your map name isn't using that.

wind remnant
#

i was told that would be the best way to lay it out, but ill try changing it to the maps file name!

latent mauve
#

MapName needs to match your Load target.

#

It's an asset name

fervent horizon
#

yeah, just remove isiah. from the load

latent mauve
#

Or add Isaiah. to the MapName. ๐Ÿ˜›

fervent horizon
#

yep

uncut viper
#

(do the one fireredlily said)

ocean sailBOT
#

@uncut viper You leveled up to Cropmaster. That's level 500! The deepening purple represents your mad descent into the server.

uncut viper
lucid iron
latent mauve
#

Keeping Isaiah in there is safer because of unique IDs and all that

lucid iron
#

If you are set on 3 and 4 you may have no choice but to make alternate purchase
Skins have BabyTexture

fervent horizon
#

Yeah, don't listen to me

wind remnant
ocean sailBOT
#

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

lucid iron
latent mauve
#

Your filepath for the v16_Waterfalls tilesheet is incorrect, you likely edited your map somewhere weird so it's not a relative path?

#

Are you using the vanilla Waterfalls tilesheet?

wind remnant
#

how can i fix that? => and yes, i opened the town map in tiled and pulled the sheet from there so they would still be animated

uncut viper
latent mauve
#

If so, you can open your TMX in a text editor and change the image source for that one to remove everything but v16_Waterfalls in the image source name for that tilesheet ๐Ÿ™‚

#

No need to reopen Tiled to change the path, text editor will handle that just fine.

wind remnant
#

thanks! do i need to do anything to the file after, or can i save it and try opening again?

toxic hornet
# lucid iron ~~If you are set on 3 and 4 you may have no choice but to make alternate purchas...

Dwarven Expansion has baby skins for the mole rat. I'm just struggling with how to target that vs adult properly. It either doesn't put in a baby skin at all or only does so once the mole rat is all grown up, turning it into a tiny permababy.

SVE seems to be using the baby white chicken for the baby goose skin. It shows up with the Elle retexture for baby white chicken but not my baby goose.

I believe the SVE baby camel uses the sprite of the adult camel they have but resized to be smaller. Not sure with that one.

I don't understand what FlashShifter did when it comes to the bear

latent mauve
wind remnant
#

removing this portion of text, right?

#

okay!

uncut viper
#

if its a .tsx, you might need to do it in the .tsx file as well

lucid iron
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.

lucid iron
#

Im not at a computer so I can't help you with verifying the edit targets but the important thing is 1. Make your mod dependent on SVE 2. Use TargetFields to drill down to skins

wind remnant
uncut viper
#

no. the sources should have no filepath in them. just the name of the tilesheet

lusty elm
#

If its a Tsx, make sure you've embeded the tilesheet into your tiled map.

latent mauve
#

Tilesheet sources all need to be relative, which in this case, means no filepath other than the name of the file itself and the file extension if applicable.

uncut viper
#

a tsx is if you didnt embed

#

you can use tsx's if you want to

lusty elm
#

ye

#

wait we can do that now? it used to break everything

latent mauve
#

And if you're using the Town file as your basis and just made the mistake of doing "Save As" for your map and saved it directly to your mod folder, that creates the issues you saw.

uncut viper
#

there are only like one or two niche cases where a tsx is useful over embedded tilesheets but they do work

latent mauve
#

You have to do your Save As copy in the same location as the unpacked original, and then copy/paste it to your mod folder at the end after editing.

toxic hornet
# lucid iron !json you can send what you have here

Right now I just shoved the goose skins and code into Elle's Cuter Coop Animals (which is why it keeps referencing Elle's mod IDs in the code) because I didn't know how to make an independent file that would work. I could make a new thing if that would keep things cleaner/make it work better but I'd need some help with how to go about making it in the first place, keeping in mind I don't want it published.

This is the code in the content.json that I added for the goose:

          "AllowValues": "GooseAmerican, GooseCanadian, GooseCzech, GooseEmbden, GooseBlue, GooseCadBlue, false",
          "AllowMultiple": false,
          "AllowBlank": true,
          "Default": "GooseCanadian",
          "Description": "This is the default skin for your Geese and what Geese on an existing save will look like. List only one, leave blank or write false to disable"},
      "Goose Skins": {
          "AllowValues": "GooseAmerican, GooseCanadian, GooseCzech, GooseEmbden, GooseBlue, GooseCadBlue, false",
          "AllowMultiple": true,
          "AllowBlank": true,
          "Default": "GooseAmerican, GooseCanadian, GooseCzech, GooseEmbden",
          "Description": "These are the skins your Geese can have when purchased or hatched. You can list multiple options separated by commas, leave blank or write false to disable"},```
---
```{
      "LogName": "Goose Default",
      "Action": "EditImage",
      "Target": "Mods/FlashShifter.StardewValleyExpandedCP/Goose",
      "FromFile": "assets/Goose/{{Goose Default}}.png",
      "When": { "Goose Default": "GooseAmerican, GooseCanadian, GooseCzech, GooseEmbden, GooseBlue, GooseCadBlue" }
    },
    {
      "LogName": "Goose GooseAmerican",
      "Action": "EditData",
      "Target": "Mods/FlashShifter.StardewValleyExpandedCP/Goose",
      "TargetField": [ "Goose", "Skins" ],
      "Entries": {
      "Elle.CuterBarnAnimals_Goose_GooseAmerican": {
        "Id": "Elle.CuterBarnAnimals_Goose_GooseAmerican",
            "Texture": "Mods\\Elle.CuterCoopAnimals\\Goose\\GooseAmerican",
            "BabyTexture": "Mods\\Elle.CuterCoopAnimals\\Goose\\GooseAmericanBaby",
            "Weight": "1.0",
            },
        },
      "When": { "Goose Skins": "GooseAmerican" },
    },
    {
      "LogName": "Goose GooseCanadian",
      "Action": "EditData",
      "Target": "Mods/FlashShifter.StardewValleyExpandedCP/Goose",
      "TargetField": [ "Goose", "Skins" ],
      "Entries": {
      "Elle.CuterBarnAnimals_Goose_GooseCanadian": {
        "Id": "Elle.CuterBarnAnimals_Goose_GooseCanadian",
            "Texture": "Mods\\Elle.CuterCoopAnimals\\Goose\\GooseCanadian",
            "BabyTexture": "Mods\\Elle.CuterCoopAnimals\\Goose\\GooseCanadianBaby",
            "Weight": "1.0",
            },
        },
      "When": { "Goose Skins": "GooseCanadian" },
    },```
---
```{
      "LogName": "Load Goose Images",
      "Action": "Load",
      "Target": "Mods\\Elle.CuterCoopAnimals\\Goose\\GooseAmerican, Mods\\Elle.CuterCoopAnimals\\Goose\\GooseAmericanBaby, Mods\\Elle.CuterCoopAnimals\\Goose\\GooseCanadian, Mods\\Elle.CuterCoopAnimals\\Goose\\GooseCanadianBaby, Mods\\Elle.CuterCoopAnimals\\Goose\\GooseCzech, Mods\\Elle.CuterCoopAnimals\\Goose\\GooseCzechBaby, Mods\\Elle.CuterCoopAnimals\\Goose\\GooseEmbden, Mods\\Elle.CuterCoopAnimals\\Goose\\GooseEmbdenBaby, Mods\\Elle.CuterCoopAnimals\\Goose\\GooseBlue, Mods\\Elle.CuterCoopAnimals\\Goose\\GooseBlueBaby, Mods\\Elle.CuterCoopAnimals\\Goose\\GooseCadBlue, Mods\\Elle.CuterCoopAnimals\\Goose\\GooseCadBlueBaby",
      "FromFile": "assets/Goose/{{TargetWithoutPath}}.png"
    },```

(not sure if this is what you were asking me to share or something else)
uncut viper
#

and theyve worked as long as ive been active in here, but that was only when 1.6 released, so ive not got old hat knowledge

latent mauve
#

holy text wall, please use the JSON parser for that

#

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

wind remnant
#

im pretty sure ive been careful not to move it during the save as, as the wiki was pretty explicit not to. after removing the source paths, its giving me this error; "Friend Farm loaded map 'assets/FriendFarm.tmx' with invalid tilesheet 'untitled tile sheet'. This tilesheet has no image source." does that have to do with imbedding them properly? ๐Ÿ’€ or would it be easier to scrub them and add them in a more proper fashion, and redo the pieces of map affected?

lusty elm
uncut viper
#

with our knowledge combined, we have no real useful information about tsxs or their history SDVpuffersquee

#

(or well, the history of how they changed anyway)

latent mauve
lusty elm
#

All i know is I see TSX and my brain screams "EMBED IT".

latent mauve
#

That is the path of least resistance, Draylon

wind remnant
latent mauve
lusty elm
#

i just use them as savesets for animations on specific tilesheets, and when i need those animations i click the swirly arrows, click it, then click embed and voila I have them on my map.

gentle rose
#

I also have no useful information about taxes OR tsxs, can I join the secret club now?

uncut viper
#

the secret club is for level 500+ only

wind remnant
latent mauve
#

basically-- is there a TSX in your mod folder, and is there supposed to be one (for extra animations and such), or are you using the vanilla tsx/tbin tile animations entirely?

gentle rose
uncut viper
uncut viper
lusty elm
#

considering he's new to it, id assume he's just stealing the animations off another map to use on his.

wind remnant
latent mauve
#

I only ask because the reference was weird

wind remnant
#

i would happily remove it and add it in a better way if you could explain how to

toxic hornet
wind remnant
#

i was following (a kind of old) tutorial from youtube when i added it, so it could have been bad or outdated information and thats why this all went to spaghetti so bad

latent mauve
#

ah, video tutorials-- the bane of my existence

wind remnant
#

LOL

uncut viper
#

if a tutorial is uploaded before ~april of last year, its too old

wind remnant
#

good to know!

gentle rose
#

wait button did you literally just hit 500 half an hour ago? congratsssss aSDVpufferparty

uncut viper
#

a lot of things completely changed with 1.6

#

i did!

#

purble

gentle rose
#

ourple

latent mauve
#

okay, so a quick check here: in the Town base file, the waterfalls tilesheet is embedded, which looks like this: <tileset firstgid="5939" name="v16_Waterfalls" tilewidth="16" tileheight="16" tilecount="900" columns="36"> <image source="spring_Waterfalls" width="576" height="400"/> followed by tile IDs and an <animation> section with a bunch of frames and durations (that's your embedded tile animations from the TSX)

wind remnant
#

that makes sense! in that case yes, alright, ive added 2 tile sets (both vanilla, ones the island set and ones the waterfall tsx) so should i remove them and add them fresh, in a better way? lmao

#

alright. is that something that would need to be manually added to the farm then? to properly embed it?

devout otter
wind remnant
#

(several people are typing LOL im trying my best sorry for the hassle)

latent mauve
#

Ideally you would START from a map that has the sheet already in it, for simplicity.

lusty elm
#

The Basics Are.

  1. Make sure that when you edit maps, you do so in an unpacked maps folder, only move it to your mod folder when you are testing/Done.
  2. Make sure any tilesheets you load or currently reference in your map, are in the same folder as your current map, aka maps. (Click the gear w Page icon and tileset at the top, then Tilesetproperties, and look at source under image, if its not in maps you should click image then edit and retarget the one in maps.) Each one is Seperate so you may have to do this multiple times.
  3. If you have a TSX, I'd just say embed it, if its in use on your maps. The arrow going onto the page (Each tileset is seperate so you might have to look through multiple).
lucid iron
latent mauve
#

But that can be tricky since not all the farm bases have waterfalls on them. ๐Ÿ™‚

velvet narwhal
lucid iron
#

As for the actual edits, the goose ones look correct

lusty elm
#

rooKek I checked out of Curiousity and I'm currently lvl 499 with 2 pips from 500

lucid iron
#

Oh except for how they are targeting the wrong thing

reef kiln
#

Question? I am making a custom item that is found by foraging. I then want to put it in a preserve jar to process. But because I gave it the forage category the game keeps ignoring my output and making it pickeled instead. I can fix it by changing the category. But I want the category to say forage when you hover in game. Is there a way to make it prioritize the output I set up?

lucid iron
#

You still need to target Data/Animals

wind remnant
#

okay! i think im wrapping my head around this then. im trying to test that the warps and buildings are placed correctly, so im trying to boot up, but everything otherwise is saved to the unpacked content folder. i copy it into the mods folder when i save it. ill try embedding it and double checking all of the paths for the images and get back to you =>

lusty elm
#

Hopefully that fixes any tilesheet issues. SDVpufferthumbsup

lucid iron
#

But use a target field like

[
    "FlashShifter.StardewValleyExpandedCP_Goose",
    "Skins
]
#

(assuming this is the right internal id for goose)

latent mauve
#

What I'd suggest at this point if it's still acting up, is to go ahead and copy all the vanilla tilesheets you're using to your mod folder, reopen the map in Tiled, and then replace all your tilesheet sources with the ones in your mod folder, so that all the paths are updated to be relative.

You just need to remember to remove the vanilla tilesheets after you're done editing

lucid iron
#

You can do patch export Data/Animals to see what the fully loaded version of that asset looks like in game

#

Wow steem

latent mauve
#

This is a bold place to try that

#

We're Junimo central over here

reef kiln
#

Are you just trying to add more skins to the goose?

uncut viper
#

damn i looked away for like literally 10 seconds and i missed it

winter dust
wind remnant
latent mauve
lusty elm
#

you shouldnt need any vanilla tilesheets in your mod folder at all.

latent mauve
#

They live there only during the Editing process. ๐Ÿ™‚

toxic hornet
latent mauve
#

Draylon, this is for editing in your mod folder rather than in the unpacked Maps folder.

#

Which some people do!

lusty elm
#

ah, rooBlank

latent mauve
#

You just have to remove the copied vanilla sheets after or you break every recolor mod ever on your map

lusty elm
#

unless you're okay with doing that SDVpufferwoke

#

Which I have done before, The Curse of wanting/needing custom tiles

latent mauve
#

I mean, I can see it, what if your map looks terrible with a recolor on?

#

So you just... break the recolor capability on your map. ๐Ÿ˜›

#

Or you add stuff from Tilesheets/Furniture that you've loaded to Maps instead of using the Arbitrary Tilesheet Access mod.

lusty elm
#

I've done it before to make certain maps work, yeah. i dont need to much anymore, as we have gotten a LOT of tiles since 1.4 Moving forward. but yeah, sometimes we just didnt have stuff

#

like how i know how to do chained corners of cliffs without extra layers, have it look nice and not break, now that we have extra layers inbuild i dont need to do that anymore. Old Man Knowledge!

wind remnant
#

I did want to ask, by using the basic normal vanilla tiles, it'll automatically go through the seasons right? lol

lusty elm
#

any tileset marked "Season_" in the front naturally rotates

uncut viper
#

(as long as there are actually seasonal variants! dont name a custom tilesheet spring_whatever and expect it to work if you dont make other ones SDVpuffersquee)

lusty elm
#

True

uncut viper
#

i guess technically it WILL rotate... it will rotate you into a crashed game

wind remnant
#

LOL okay, good to know! thank you!

#

im speedrunning every possible mistake so my next map is perfect ofc

lusty elm
#

There is always more to learn rooBlank

ocean sailBOT
#

@lusty elm You leveled up to Cropmaster. That's level 500! The deepening purple represents your mad descent into the server.

wind remnant
#

congrats haha

uncut viper
#

copycat

lusty elm
#

Ironic comment to level up on

winter dust
#

I find it interesting that the desert doesn't change in any of the seasons
Because deserts near green land do experience some changes.

gentle rose
wanton pebble
#

Several level 500s in one day eh

#

Also that is a great comment to level up on!... unlike my poop framework comment for level 1000 XD

lusty elm
latent mauve
#

I'm happy with my level 213

wind remnant
#

thanks for the help everyone! it finally opened!

vale stream
lucid iron
#

Yeah as mentioned you still need to Target Data/Animals

#

patch export Data/Animals SDVpufferthumbsup

toxic hornet
lucid iron
#

I don't actually know if i have the right Id for the sve goose

#

So you would want to double check that

#

The other thing is that u probably want to use your own mod id rather than elles

#

Using the {{ModId}} token

#

The convention is author.ModName, so you can do something like pixie.ElleStyleSVEAnimals

#

This goes in uniqueid of the manifest

median dune
#

I wonder how much should I separate my classes, is there any drawback to having more of them, or even having multiple near-same methods or should I come up with a way to make one piece of code as multi-purpose as possible

lucid iron
#

There's not really any drawback to having more classes

toxic hornet
#

right now the edits were tossed into Elle's code because this is literally my first time coding anything and i didn't know what to do with all the different files (manifest vs config vs content) but i can try making my own. {{ModID}} would just take the place of Elle.CuterCoopAnimals and then reference whatever mod ID was listed in that particular folder's manifest, right?

lucid iron
#

Yep

#

To clarify, manifest.json defines a mod, all smapi mods have one of these

#

in your case, you are making a pack for content patcher, which is a C# mod

toxic hornet
#

The Mod's passport

lucid iron
#

That's what content.json is, stuff provided to content patcher

toxic hornet
median dune
lucid iron
lucid iron
reef kiln
#

How do I get the game to prioritize my recipe over a vanilla one. I tried to copy sturgeon roe. But the game still makes the base game version? Do I need to make my code appear "above" vanilla code? If so how do I do that.

lucid iron
#

Put it before vanilla roe rule

reef kiln
toxic hornet
lucid iron
#

Basically this is the relative path in ur Content folder

opaque cobalt
ocean sailBOT
#

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

uncut viper
toxic hornet
opaque cobalt
patent lanceBOT
#

@calm nebula: remove the atracore dependency listed for Less Mini Shipping Bin (17h ago)

calm nebula
#

No u

median dune
#

uhh should I even take into consideration compatibility with multiple spouses mods? I have no idea how to even get to that

lucid iron
#

A lot of people use those mods, but you don't have to do any compat if u don't wanna

dusk mulch
median dune
#

the thing is, as far as I'm concerned it should work with one spouse, the last one married I think

#

cus it overwrites the player.getSpouse() value

#

but tbh I probably shouldn't even make them compatible as spouses would end up like slaves on the farm xD

#

yep, thats settled

uncut viper
#

doesnt really seem like a comfortable joke to be making

median dune
undone quail
toxic hornet
uncut viper
#

.. not the point

median dune
#

what is then?

#

oh I see, pardon me I have just a lil bit of dark humour

uncut viper
#

rule 6

median dune
#

yeah sorry, never had someone point that out to me

lucid iron
#

What is applying is the EditImage that was targeting the base texture

#

It let you pick skins

#

You can also use alternative textures (bucket?) on ur goose

rotund elm
#

What would be the most appropriate way of having the player unlock catchable fish? I was thinking of having a specific machine recipe being crafted for the first time unlocking the new fish location data

#

but the only way I know I could check for this is if they have the crafting recipe, or using the player stat gsq for itemscrafted

toxic hornet
#

about to buy a new baby goose just to see

lucid iron
#

The other thing to do is patch export Data/FarmAnimals again

#

See if you have the data you expect under the Skins field

toxic hornet
#

yea the baby geese are broken too

dusk mulch
#

When the game defines "Edibility", what does the number represent? Like how much health it gives?

devout otter
# toxic hornet ~~So should the target be `FlashShifter.StardewValleyExpandedCP_Goose` instead ...

So, these are basically two different things. If you open FarmAnimals.json in SVE, you can see there are basically two types of Edit actions, right? One is like { "Action": "Load", "Target": "Mods/FlashShifter.StardewValleyExpandedCP/Goose", "FromFile": "assets/FarmAnimals/Goose.png" }, Which loads an image asset into the game, and another is like { "Action": "EditData", "Target": "Data/FarmAnimals", "Entries": { "FlashShifter.StardewValleyExpandedCP_Goose": { "Texture": "Mods\\FlashShifter.StardewValleyExpandedCP\\Goose", "BabyTexture": "Animals\\BabyWhite Chicken", }, } } which edits the farm animals data in the game.

#

So if you want to edit the image of the goose already in the game, you do EditImage targetting Mods/FlashShifter.StardewValleyExpandedCP/Goose.

acoustic summit
uncut viper
#

Edibility goes through a formula to determine health and energy

dusk mulch
#

Ah, alright. Follow up on that, what does each "category" represent? I cant find anything on it on the wiki

devout otter
#

But if you want to edit what assets the goose is using, you'd do EditData targetting Data/FarmAnimals and specify it to be FlashShifter.StardewValleyExpandedCP_Goose entry,

acoustic summit
uncut viper
#

"A numeric value that determines how much energy (edibility ร— 2.5) and health (edibility ร— 1.125) is restored when this item is eaten"

dusk mulch
#

EW I have to do M-M-MATH to mod?!

acoustic summit
#

Just a descriptive term, also used for things like what can go into certain machines

#

The wiki shows what each category does

#

Some have an effect, some dont

dusk mulch
#

Ohhhh cool, thank you so much! Yall are such lifesavers sometimes lol

devout otter
#

In this case, I assume you want to both edit the image already loaded (Mods/FlashShifter.StardewValleyExpandedCP/Goose) and also change the FlashShifter.StardewValleyExpandedCP_Goose Farm Animals entry to have baby texture other than Animals\\BabyWhite Chicken?

lucid iron
#

They actually want to add a new skin

toxic hornet
lucid iron
#

I.e. like elle's barn/coop animals

#

Pixie could you post your content json again?

devout otter
#

Oh, then you'd need to load both of your skins first and not touch Mods/FlashShifter.StardewValleyExpandedCP/Goose at all.

lucid iron
#

Im gonna be afk for a bit but hopefully others here can help

patent lanceBOT
#

@calm nebula: check for tilesheet invalidation at season change (18h ago)

devout otter
dusk mulch
#

that feeling when you freehand the code and get it right the first time:

calm nebula
#

(Fine)

devout otter
#

Do you also want to change the default SVE goose or leave it alone?

toxic hornet
#

thwv

#

l[l

#

Sorry my dog face smashed the keyboard so I would pet him

devout otter
#

Last, do you want it to be customizable like Elle's? So a user can choose what type of goose they want in the game or not?

toxic hornet
#

I would like to change the default SVE goose to one of the skins I made for it so all our farm animals have the same style

toxic hornet
#

Seems like a good thing to know how to do in general but that's like lowest priority

#

(also thank you)

devout otter
#

Alright. So which one of the pngs would you like to be the default sprite?

lusty elm
#

Personal Projects/mods/alterations is how a lot of modders start rooVV

dusk mulch
lusty elm
#

My first delve into modding was editing a custom farm map to remove tiling errors that were bothering me during play, then i found more, and before i knew it i was redoing about 20-25% of the map, and said $#&^ it, if imma draw a map, I'll Draw MY OWN!, so I did.

lusty elm
devout otter
#

Let's take it step by step, then. What I'm about to say might not be the most efficient, coding-wise, but I think it would be easier to understand how things work. Do tell me if I'm going too slow.

toxic hornet
#

(i'm a tired grad student that has been studying pathology for hours, my brain has melted and comparing me to a toddler is pretty generous atm)

devout otter
#

FarmAnimals.json in SVE use Mods\\FlashShifter.StardewValleyExpandedCP\\Goose as adult tetxure and Animals\\BabyWhite Chicken, right? So you want to change the base adult goose texture, but I assume you don't actually want to change Animals\\BabyWhite Chicken since that would also change the vanilla chicken.

#

So first thing first, you'd want to EditImage the asset already loaded by SVE and change it to your GooseCanadian. It should look something like this { "Action": "EditImage", "Target": "Mods/FlashShifter.StardewValleyExpandedCP/Goose", "FromFile": "assets/Goose/GooseCanadian.png" },

#

For the adult.

#

For the baby, since SVE doesn't actually load any asset for that, you'd have to Load that asset yourself. So it'd be something like { "Action": "Load", "Target": "Mods/<YourModID>/GooseCanadianBaby", "FromFile": "assets/Goose/GooseCanadianBaby.png" },

#

(Note that your Load Target can actually be anything as long as it's unique. Instead of Mods/<YourModID>/GooseCanadianBaby, it can be HeyMerryHohoItsNotaDuck if you want. This is just the accepted practice to make it easier for people to know which assets come from which mod.)

#

Lastly, you'd want to make the SVE Goose to data actually use your loaded baby texture as the base skin. (the adult one has already used Mods/FlashShifter.StardewValleyExpandedCP/Goose, so you can leave it alone.)

lusty elm
#

.Choose Small Pond, Normal Pond, Water Flows into underground.

patent lanceBOT
#

Choose result: Small Pond

devout otter
#

So you can see again in SVE's FarmAnimals.json, it does EditData on Data/FarmAnimals, and you can see that it has an entry of BabyTexture under FlashShifter.StardewValleyExpandedCP_Goose. So that's the field you need to target.

#
            "Action": "EditData",
            "Target": "Data/FarmAnimals",
            "TargetField": [ "FlashShifter.StardewValleyExpandedCP_Goose" ]
            "Entries": {
                "BabyTexture": "Mods/<YourModID>/GooseCanadianBaby",
              },
        }```
#

Shoule be something like this. Note that on TargetField there's no "Skins" field. This is because currently we are altering the base texture first and hasn't touched the alternative skins.

flint stratus
#

Hiya, was wondering if anyone could tell me what I'm doing wrong with Appearances https://smapi.io/json/content-patcher/ab6e5f3831dc413c8dbcef5fc6e5fbeb That is my SMAPI log, I keep getting this error message. [Content Patcher] 'BestOfFriends' has multiple patches with the 'Exclusive' priority which load the 'Characters/Estelle' asset at the same time (BestOfFriends > Sprites #1, BestOfFriends > Sprites #3). None will be applied. You should report this to the content pack author. It has to do with trying to have my character have a certain sprite on saturday's but I cannot for the life of me figure out this 'Exclsive' priority??

devout otter
#

And that's all for the base skins! You may want to test this first to see if it works.

flint stratus
#

that is my content.json**** not smapi log

devout otter
uncut viper
#

you can Load into more than one target. you cannot do more than one load into the same target

devout otter
#

Yar, I misspoke.

#

Secondly, you have your appearance field to use InternalAssetKey, so you don't actually need to Load, really.

#

If you Load your assets like this { { "LogName": "Portraits", "Action": "Load", "Target": "Portraits/Estelle", "FromFile": "Assets/Portraits/EstellePortrait.png" }, { "LogName": "Sprites", "Action": "Load", "Target": "Characters/Estelle", "FromFile": "Assets/Characters/Estelle/Estelle.png" },

uncut viper
#

also, targets are not folders. so Loading into just "Portraits" does not make sense

toxic hornet
#

(i apologize for poofing, it was my pup's dinner time and i had to get some food too x.x)

dusk mulch
devout otter
#

Then your appearance field should use that Loaded assets like this { "ID": "Spring", "Season": "Spring", "Indoors": true, "Outdoors": true, "Portrait": "Portraits/Estelle", "Sprite": "Characters/Estelle", "Precedence": 0, "Weight": 1 },

median dune
#

well that's something

devout otter
#

This bypass the Loaded assets entirely and go straight to the files { "ID": "Spring", "Season": "Spring", "Indoors": true, "Outdoors": true, "Portrait": "{{InternalAssetKey: Assets/Portraits/Estelle.png}}", "Sprite": "{{InternalAssetKey: Assets/Characters/Estelle/Estelle.png}}", "Precedence": 0, "Weight": 1 }, which would also work but generally not recommended because it'd make it harder for others to patch your image.

flint stratus
#

Ok!! Thank you so much for all of your help you two, always appreciated. I think I get what you are saying!!

#

If I need any further clarification ill be sure to ask

median dune
flint stratus
#

It's fixed!!! TYSM'

latent mauve
#

Because I saw someone mention that they didn't need to Load because of InternalAssetKey: Please remember that using InternalAssetKey should be reserved to only assets that you never want anything else to edit (including portrait packs, seasonal outfit mods, or recolors) and anything you don't want to use an additional EditImage or EditMap on later.
For a personal mod, this is usually fine. But if you want anyone to be able to build upon your work in their own mods in the future, it's better to Load.

uncut viper
#

that was mentioned

latent mauve
#

I must have missed that, apologies

#

My comment was more meant as just a generic mod author reminder, regardless, but if that was explained in that much detail earlier, then I did not catch that message.

devout otter
#

I only mentioned that it's not recommended because it'd make it harder for others to patch your image, but you explained it in much greater detail. SDVpufferthumbsup

flint stratus
#

I appreciate the explanation!! Ive been digging through lots of mods trying to learn myself and I think I personally used it because I saw another mod use it and didn't really know what I'm doing. So It is really nice to know what the reasoning and facts are!

devout otter
rotund elm
#

Anyone here know what happens if I omit putting roe as a produced item in the fish pond data, will it still produce roe or only the listed items?

reef kiln
#

This is off topic, but I was doing a Google search for help with a issue I had in my mod. Boy do I hate the AI blurb at the top of searches now.

devout otter
dusk mulch
#

Oh lord... I was doing a depo idea and I didn't realise how big it would need to be. (They want every villager to have a sailors mouth, so I would have to edit each dialogue file)

reef kiln
#

I think the roe is generated a just by adding the fish but the list is what is used for the actual ponds. Look at the alligator in SVE it does not make roe.

rotund elm
#

ok cool I don't mind roe showing, but its a shark so it doesnt produce roe instead itll produce shark teeth so thats good to know

#

and do you possibly know how the max/minstack is calculated, I have it set to drop a max of 2 and a min of 1 but I cant find anywhere that explains how the chance for additional drops is calculated? The shark tooth is worth a pretty penny so I don't want it to be a get rich quick thing

#

also does anyone know if the min and max stack is scaled with population

royal stump
#

Afaict, minstack and maxstack just uses normal randomization, i.e. an equal chance of each number from min to max. For 1 and 2, it'd be a 50% chance of each. Fish ponds also modify their results like this, so I think animal crackers would affect your results:

if (item.Name.Contains("Roe"))
{
    while (random.NextDouble() < 0.2)
    {
        item.Stack++;
    }
}
if (this.goldenAnimalCracker.Value)
{
    item.Stack *= 2;
}```
#

I don't see it modified by anything else, so population probably wouldn't affect the amounts

rotund elm
#

ok cool! thank you very much, I was getting worried I may make the best gold farm known to stardew....... XD

#

DOES NOBODY ELSE SEE 3 COOKIES??? SO WHY IS IT CALLED COOKIE!! ITS NOT 1 COOKIE OK, THERE IS CLEARLY 3 COOKIES!!! CONCERNEDDDDD APPPPPEEEEEEE WHYYYYYYYYY

#

I am making a mod that fixes the name so cookie is cookies.

lucid iron
#

Maybe it an upside down mickey mouse cookie (singular)

reef kiln
#

I never noticed. But I do agree I thought it was 3 cookies

rotund elm
#

Is it possible to change the name without the id so other mods donโ€™t break that use the cookie

#

Iโ€™ve already started making the mod

tiny zealot
rotund elm
#

I guess Iโ€™ll just die

royal stump
#

(i'm dying at the variable names in SDV for that)

case "Cookie":
    last_minute_1_5_hack_name = "Cookies";```
calm nebula
#

(Just change the display name)

royal stump
#

but yeah I'd assume the display name is safe, just not the ID/name

calm nebula
tiny zealot
calm nebula
#

That's myuu and Casey erasure

#

Myuu do you use snake case plz let us know

tiny zealot
calm nebula
#

To be fair my only way to tell if it's myuu code is if it is recent and fuckign close to c, it's myuu

dusk mulch
#

Just finished my first mod depo

ivory plume
#

(If it's a recent change related to multiplayer, Casey and/or Myuu wrote it while I fled.)

calm nebula
#

Hi Pathos!!!

ivory plume
#

Hi!

calm nebula
#

So how is central station gonna handle splitscreen SDVkrobusgiggle

ivory plume
#

Bye!

calm nebula
#

No come back I didn't mean it!!!!

rotund elm
#

I will try the display name

ivory plume
#

It should just work in theory, since it doesn't have any special per-player state. It just adds the maps/data to the content pipeline, and loads the stop data when you open the menu.

calm nebula
#

I recall Train Station having an issue with audio code in splitscreen

#

Ie, the whistle never ending

rotund elm
#

Iโ€™m gonna have to change all the mail and everywhere else cookie is mentioned to cookies

#

Omg

ivory plume
#

That shouldn't be an issue with Central Station. It uses a different approach that's a lot safer.

uncut viper
#

just only play the audio on one screen. whats the problem SDVpuffersmile

calm nebula
#

I'm not sure how that is how audio works, button

#

Then again, I don't know how audio works and I've already asked y'all to hit me on the head if I start asking questions

reef kiln
#

Is Central Station a mod that combines all the train boxes into one. My train station is getting clogged with them.

normal trout
#

Does anyone know if the NoSpawn All property will prevent truffles from being found on a tile?

ivory plume
calm nebula
#

Lol, I just went to make myself a final cup of coffee after my coworker told me I was the last person in the building

#

Five minutes later, tired brain hearing the coffee machine "ooh who else is here?"

#

Me.

#

Just me

reef kiln
ivory plume
reef kiln
#

Central Station just sounded like that to me. If it is different that's cool. You always do good work.

ivory plume
# reef kiln The tickets stations. So far one is added for Aquarium, SVE, VMV. Why can't the...

Stardew Aquarium uses the Train Station mod, so it'll automatically appear in Central Station's ticket machine (so you'll have one machine for both Central Station and Train Station). I'm not sure about SVE and VMV off-hand, but Central Station works in a way that'll let them easily add their destination to the Central Station menu while still (if they want) having a fallback if it's not installed.

So basically yes, it's meant to be the one train (and boat and bus) menu to combine them all. I also intend to support it at the same level as my other mods like Content Patcher, which should hopefully encourage more mod authors to use it instead of implementing their own separate machine in each mod.

calm nebula
#

To be fair, the multiple ticket stations are realistic to IRL

reef kiln
#

That cool. There are a bunch of mods that stop getting support and break other mods. I have more then once been tempted to learn C# just to make some old mods work agian. Not that you do that, you are great. I may learn it later, I am still learning CP.

ivory plume
#

That'd be great, more people updating old open-source mods is always welcome.

lime vapor
#

Hello there y'all! I'm working on a custom NPC mod; is it possible to have an NPC organically changed names throughout their story? As in, have conditional displaynames or anything of a sort so that when the player sees a future heart event, the npc is now listed under a different name?

calm nebula
#

Sure! See how the wizard works in sve

acoustic summit
#

Yes, conditionally target the "DisplayName" field in their Entry in Data/Characters

lucid iron
#

what is the trigger action that sets player stat

#

i swear there was one i found it it was IncrementStat

lime vapor
acoustic summit
#

This is how I do it in Roses In The Sand
{ "Action": "EditData", "Target": "Data/Characters", "When": {"HasSeenEvent": "NAT_Sandy8", "OnlyDisplaySandy": "false"}, "Fields": { "Sandy": { "DisplayName": "{{RealName}}" } } },

#

In reference to an event with eventID "NAT_Sandy8"

uncut viper
#

doesnt take a player argument

lucid iron
#

hm that's kinda bad

uncut viper
#

why

lucid iron
#

well wouldnt that unlock stats for everyone

uncut viper
#

it only does it on the current player

lucid iron
#

oh thats fine then yay

uncut viper
#

bc stats arent synced normal in MP

acoustic summit
#

Oh also ignore the "OnlyDisplaySandy" thats a config token, so you can leave that out for your purposes

lime vapor
#

Oh, okay, I was looking into that

lucid iron
#

i wonder if i should just bundle in an early trinket cheat

#

so that mods dont have to roll their own trigger actions just for this

lime vapor
uncut viper
#

tbh if u ask me id leave that to another mod

acoustic summit
#

For me thats also a config token, but you can just put their name there

#

You could also add it to your i18n, and then use a i18n token there if you are familiar with that

calm nebula
lime vapor
#

But it's been turning out that way for the past few days...

uncut viper
lime vapor
#

Oh! My bad

lucid iron
uncut viper
#

havin the displayname of your custom NPC change over time is ezpz

lucid iron
#

by including feature in the framework i can also do the part where i edit data can drop random to false until mastery for reals

uncut viper
lime vapor
#

But how do you identify your customtoken of RealName, I'd love to reference it

royal stump
uncut viper
#

its not like people are making trinkets unaware of what trinkets are or how to unlock em

lucid iron
#

it is just convienance really monS

acoustic summit
#

I'll show it here

#

1 sec

normal trout
acoustic summit
#
    "RealName": {
        "Default": "Valentina",
        "Description": ""
    }
}```
uncut viper
#

!codeblock

ocean sailBOT
#

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

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

royal stump
lucid iron
#

the form would still be a trigger anyways, it'd just be custom action rather than generic IncrementStat

calm nebula
#

Why though

lucid iron
#

by including feature in the framework i can also do the part where i edit data can drop random to false until mastery for reals

lime vapor
uncut viper
#

why not just patch the places that call CanSpawnTrinket

acoustic summit
#

Alright! Note that that section should be outside your changes section ๐Ÿ™‚

lucid iron
#

bc i dont want to Dokkan

uncut viper
#

its basically just one function, TrySpawnTrinket

#

can do your own prefix, check normal CanSpawnTrinket, if its false, then do your own "but can i spawn these specific trinkets?" and if so, spawn it

lucid iron
#

but i dont want to turn on harmony for no reason

uncut viper
#

well. this seems like A reason

lucid iron
#

i'd just do a second mod for this if it comes to it

uncut viper
#

i do recall saying that about 5 minutes ago and u said no u (paraphrased)

#

/lh

tiny zealot
#

if you need harmony (or if it would make your life easier), use harmony. it's not a badge of dishonor

lucid iron
#

i also dont really have strong feelings about controlling the random drops of trinkets

tiny zealot
#

(SMAPI don't @ me)

uncut viper
#

use harmony to patch the SMAPI warning away

lucid iron
#

there r many other ways u can obtain an Object

calm nebula
#

What if I enjoy not using harmony

lucid iron
#

so i think ppl should just use these ways

uncut viper
#

i dont disagree. i personally wouldnt build it in as a cheat for a framework tho

#

thats just my onion however

lucid iron
#

yea i am on the fence about it myself

tiny zealot
uncut viper
#

i prefer when frameworks are very "ill let you do something, but its up to you how you decide you want to do it" and dont do too much elsewise

#

(special power utilities doesnt do that, bc i was very new to things at the time. i wouldnt make it the same today)

calm nebula
lucid iron
#

well i think SPU is more of an UI mod than a pure framework

calm nebula
#

I still owe button that PR

uncut viper
#

im pretty sure you can actually find a netevent for every vanilla way a trinket spawns

#

its monsters killed and objects broken, and both of those things are netlists on a gamelocation, yeah?

lucid iron
#

yea i can just steal debris again

#

that seems worse than just

#

doing a data edit pass though

uncut viper
#

(the only one idk about is the treasure rooms in the skull cavern. dont know about those)

lucid iron
#

i already have to do one to put in my class

uncut viper
#

im not sure how a data edit can make a trinket randomly drop upon killing a monster or breaking a crate

#

(without editing the drops of ALL monsters in the case of the former. but again, a mod can also do that on their own, no framework needed)

lucid iron
#

no im just preventing that from happening

lusty elm
#

So much Detailing Work SDVpufferwaaah I've been at this for 4 hours and imma be at it for at least another 2-3 even if i shortcut it. maybe more like 4-5 if i don't.

lucid iron
#

Data/Trinkets DropsNaturally = false

#

thats it

#

and ill not do the edit once player has combat mastery

uncut viper
#

i thought what you wanted was a way for players to get a trinket early?

lucid iron
#

no ppl can sell trinket items whenever they want already

uncut viper
#

but they wont appear without the stat

lucid iron
#

or mail them or idk make a fish drop them from pond

uncut viper
#

not naturally

lucid iron
#

they r just regular old items

uncut viper
#

im confused what the cheat you were talkin about was for then i think

lucid iron
#

the only thing that i am preventing is dropping vanilla trinkets before mastery

#

this is so that a mod could add early game trinkets if they wish

#

just sell them at adv guild or something

uncut viper
#

but like you just said people can already do that

lucid iron
#

they dont have a slot to equip them to

#

so yea the final effect of this is just ez way to do

  • set trinketSlots to 1
  • Data/Trinkets DropsNaturally = false on all non trinket tinker trinkets, until mastery
  • combat mastery unchanged
uncut viper
#

i see

#

i do think thats more of another mods purview

dusk mulch
#

Where can I find the data that defines the rubish bins possible rewards?

lucid iron
#

it is just that if 2 mods desire this then they r duplicate some work right blobcatgooglyblep

uncut viper
#

however i think if you made it so that a mod can give a Condition to each individual trinket that controlled its drop, that would be good, but that would be harmony territory

#

a lot of mods already duplicate work

lucid iron
#

the Data/Trinkets DropsNaturally = false in particular is

#

much easier in C# than CP

uncut viper
#

i didnt say a CP mods purview

lucid iron
#

and CP is primary target audience so

uncut viper
#

im sayin it doesnt much fit in a framework for making new trinkets to also itself change when trinkets are available wholesale, unless you could edit it more granularly

#

this is just my subjective thoughts though

#

mostly bc like if you just toggle it for all trinkets at once then all the trinket mods using your framework have a lot less control over when their trinkets appear

winter dust
lucid iron
#

that goes back to "there are lots of ways to give the player an item" deal

uncut viper
#

yeah, and some mods might want to have that control of how they give the player the item, and might prefer to rely on knowing that trinkets cant drop before mastery

#

a player can just install another mod that does the "you get trinkets whenever" thing anyway and ruin that, yes, but the difference there is that when someone makes a trinket with Trinket Tinker, they know theyre signing up for just making a trinket. they can assume that trinket spawning rules will follow the defaults

hallow prism
#

Or both

uncut viper
#

whereas if u add the toggle then they have to both accept that they are using a framework AND that the framework may override their preferences

lucid iron
#

but this would be a mod targeting cheat

winter dust
#

Ridgeside Village has custom Garbage Cans.

lucid iron
#

its a thing a trinket tinker mod opts into

uncut viper
#

and that would be undesirable imo when Trinket Tinker is the only option for trinkets

dusk mulch
#

found it...

#

thank you ๐Ÿ˜…

hallow prism
#

Sure

uncut viper
#

but you're also changing the rules of the vanilla trinkets, though

#

even if the outcome might be the same, its still messing with expected behaviour

lucid iron
#

blobcatgooglyblep well i think we r just doing pendatry now

uncut viper
#

if you would rather not receive input on the idea then i will leave you to your decisions as ultimately you are the framework author

lucid iron
#

no i only feel confused about even if the outcome might be the same, its still messing with expected behaviour

lime vapor
#

@acoustic summit I finally got this portion of my mod to work. Thanks for helping me out!

lusty elm
lucid iron
#

can you elaborate on what you mean by this

acoustic summit
#

For the many other mods which have logic depending on whether trinkets drop naturally SDVkrobusgiggle

lusty elm
#

I Just noticed a depth layer error, now i've gotta redo that bit of the map rooCry

acoustic summit
uncut viper
#

im saying that in my personal opinion i dont think a framework mod should change behaviour that it does not need to in order to provide frameworky things

#

and that i think "Making Trinkets Available Early" is not so much a framework thing as it is just a different mod idea

#

unless that framework provides a way for specific and fine-tunable customization of when a triunket is available

#

rather than a binary yes/no

lucid iron
#

yea this much i got

#

i think i was like

#

"how is doing data edit impl different than harmony impl"

uncut viper
#

my Harmony suggestion wouldnt touch the vanilla trinkets whatsoever

#

or the mastery requirement

lucid iron
#

but u r change the behavior of them regardless?

uncut viper
#

changing the behaviour of the trinkets that exist through your framework, not trinkets in general

lucid iron
#

lets say i am indeed just make "early game trinkets"

rotund elm
lucid iron
#

im fairly sure "harmony patch CanSpawnTrinket" and "do data edit based on the stats trinketSlots and mastery_4" leads to same outcome from player side

calm nebula
#

Enjoy!

uncut viper
#

the latter effects everyone who installs Trinket Tinker all the time whereas the former only comes into effect if a user installs a specific trinket mod

lucid iron
#

oh its ok i already got nudged back over the fence on that one

#

it is lets say i am indeed just make "early game trinkets" mod and talking two hypothetical impl

uncut viper
#

if we're talking about a hypothetical other mod then the entire discussion no longer applies

#

because my point was that i think it would be better as a separate mod

lucid iron
uncut viper
#

if its a separate mod then there is no point. you did it

lucid iron
#

yea for a while there was just 2 convos going on bolb

#

but its ok i do feel reasonably convinced that i should do this Dokkan

#

*should leave this feature out i mean

#

that said, i am actually able to somewhat do the GSQ conditional drop thing i think

#

it'd just be more data invalidation than i like

brave fable
rotund elm
#

I genuinely cannot figure out how to add a recipe to the dehydrator what file is this info even in? machines.json?

lucid iron
#

yes

#

dehydrator is a normal machine

rotund elm
#

but how am I supposed to read this XD

#

i seeee omg ๐Ÿ˜

#

but what data am I editing just data/machines?

#

and the targeting the dehyrdator?

brittle pasture
#

yes
use TargetField to add a new entry to the OutputRules array

#

there are two important things in an OutputRules entry : the Triggers field which contains a list of triggers for the rule (like an input item), and the OutputItem field, which is a list of possible outputs if one of said trigger is fulfilled

#

to start, fill them in first

rotund elm
#

ok so for target field im putting both "(BC)Dehydrator", "Machines"?

brittle pasture
#

no

rotund elm
#

oh no

brittle pasture
#

there is no "Machines" field in the dehydrator entry

latent mauve
#

GOAT, if this is about the red mushroom thing, I'm testing code for that right now and happy to show you what I did if it works. xD

rotund elm
#

No this is for me adding a recipe to the dehydrator

brittle pasture
#

there is one named OutputRules, which as mentioned as the one you need to add to

rotund elm
#

2 infact

#

ok

latent mauve
#

Gotcha, there's an open mod request for dehydrating red mushrooms, so I was unsure if it was related

rotund elm
#

i didnt know you couldnt dehydrate them lol

lucid iron
#

if u got vscode u can see the breadcrumb like this

brittle pasture
#

(I think there's already a teeny mod somewhere for that)

latent mauve
#

(you can't normally, they are inedible and the base machine trigger wants edible_mushrooms only)