#making-mods-general

1 messages Β· Page 609 of 1

warped vessel
#

darkrai is the mythical for diamond/pearl i think

whole prism
#

ahh okk! tyyy

#

been playing heartgold on my dsi thats why i asked

warped vessel
#

yep gen 4

whole prism
#

hey

#

i can help you out

#

send me a DM with the zip file for ur mod

#

after dinner i'll check out the issues : )

#

(i do fishi mods all the time so dw ur in safe hands)

#

and yeah its more involved so id have to see your actual code

#

sadly 1 ss isnt enough

signal nova
#

It's working for all other locations except the beach 🀷

#

That's why I'm confused

whole prism
#

as i said earlier, feel free to shoot a DM and I can take a look

#

one screenshot doesnt help sadly

signal nova
#

I can send two πŸ˜‚

#

or three

#

or five

whole prism
# signal nova or five

We do not know the hierarchy of your mod, and where all your data is stored, defintions for said fish, and more. It can be from a simple ModId mismatch, to a typo, and really anything else.

Also, we take it as SMAPI logs usually, screenshots are sometimes okay, but for this bug that your talking about, it may be better to share your codebase, either to me, or publically here in multiple json validation files.

Link: https://smapi.io/json/i18n.

deep cypress
#

Is there a way to set a certain location's weather to always be a certain thing?

#

(I think I once knew how to do this, but I no longer do. My memory is... flawed of late.)

golden spire
#

LocationContexts I think

deep cypress
#

I will try this! Thanks!

signal nova
#

Thanks for the help tho, if I'll need help about fishies, can I shoot ya a dm?

whole prism
#

Feel free to ask in public channels.

nova gale
#

This is why I used colored objects so much πŸ˜›

signal nova
whole prism
#

For future reference, it's best to add some sections of your codebase inside the JSON validator, else, we wouldn't have been able to figure out that issue that you faced

#

Like the ModId, some defintions and then the issue your facing, other than that you were good

royal stump
#

yes, mail flags are just strings in 3 hash sets, attached to each farmer and net synched; you can add or remove them whenever
also, set them as "received" so they don't change states or interfere with the mailbox; the other states are "now"/mailbox and "tomorrow" that gets moved to the others overnight
e.g. Game1.player.mailReceived.Add("your flag here") if you're on the host client

#

CP mods can read them too, and write them with events/triggers/etc (so whatever your implementation is, they should just be easily accessible flags)

clever monolith
#

??? It's my own code and I don't remember putting this as reward 😭

round timber
#

500???

viral gazelle
#

Perfect for when you have to complete 500 museum collections

nova gale
#

Or give dwarf 500 likes gifts

barren tapir
#

I have the following. How would I change what sprite sheet the Lave Lurker created should use?

azure aspen
royal stump
#
lurker.Sprite = new AnimatedSprite("texture asset target here", lurker.Sprite.CurrentFrame, lurker.Sprite.SpriteWidth, lurker.Sprite.SpriteHeight);```
assuming you want to reuse the existing sizes* and such
<https://github.com/Esca-MMC/FarmTypeManager/blob/master/FarmTypeManager/Utility/Spawning/Monsters/ApplyMonsterSettings.cs#L172>
ocean sailBOT
#

Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Unix 7.0.5.200, with 41 C# mods and 45 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

valid folio
#

Hi!
Quick question, is it possible to make an animal drop an item with a specific quality or qualities? For example, make my woolly mammur drop silver and gold quality fur?

barren tapir
golden shadow
#

The main/first player is referred to as 0 when it asks for <player> right?

barren tapir
#

Realized I probably won't be able to test that thing I've been putting of for a while, considering I need the pig to both grow up and for it to not be winter πŸ˜…

golden shadow
uncut viper
#

Do keep in mind that often times a $query like that will be out of date.

royal stump
uncut viper
#

Also no if you're talking about game state queries, <player> is a target player like Current or Host

barren tapir
#

Would setting a pig's "Current Produce" to null let it keep digging for truffles?

golden shadow
calm nebula
#

Iirc one of either Stamina or Health isnt even netsynced

uncut viper
#

A good choice I'd say

#

That mod still uses regular game state query functionality though and the Target player is the same Host, Current, etc choices

#

and it can still be out of date

calm nebula
#

(But the other one is)

uncut viper
#

A quirk of $query is that it is calculated when the dialogue string itself is parsed, which is not always the moment you talk to them

#

One notable thing that makes it get parsed is an NPC starting to move to a new schedule point

golden shadow
#

this is just for spouse dialogue at night, so it should be okay right?

uncut viper
#

Or even just, hovering over them to get the "can talk to" cursor

#

Probably not

#

Depends on their spousal schedule or if the player happened to accidentally hover their mouse over the NPC without talking to them

#

(bc hovering your mouse makes the game check if they CAN be talked to in order to show the appropriate speech bubble cursor)

golden shadow
#

ah i see.

uncut viper
#

Basically, the $query might work fine and accurately assuming the NPC never moved at all, or it might not

#

don't bank on it being 100% accurate

#

It's best used for things that cannot change over the course of a day

barren tapir
#

I'm trying to figure out where/how the game keeps track of how many truffles a pig can still dig up, and I can't seem to find it anywhere in the decompile (unless I'm being blind)

golden shadow
#

That was something i was worried about πŸ˜… I just wanted to have the spouse react if the player had really low health

uncut viper
#

If you're using BETAS already, you could actually try a SetNewDialogue trigger action action when the player enters the farmhouse

#

And just overwrite their dialogue completely

golden shadow
#

oh? how would that work :o I'm not super advanced at coding so I am kinda learning as I go haha

uncut viper
#

You could either give them a new dialogue line that also has the $query in it, or check in the Trigger Action you use to do this itself to only set new dialogue if the player's current health is low enough

#

(the latter might run into a situation where the player enters at low health, so the NPC gets new dialogue, but then the player eats food and heals before talking to them... but that might also happen with the first method too, where the player triggers the dialogue to be parsed but then eats food before speaking to the NPC.)

#

If it were me I would go with the second option and just write the dialogue to recognize that they were at the very least hurt when they walked in/when the spouse saw them walk in, even if not right at the moment they actually speak to the NPC

golden shadow
#

Thank you so much, you are a tremendous help!!!

barren tapir
#

Okay, I think I have pig related plan

strong kite
#

Oh this is nice, I forgot to check my warp hub for compatibility, however it appears only 3 need to be updated for SVE. The Desert Pillars and Skull Cavern (unsurprisingly) as well as the mastery cave (also unsurprisingly)

severe cairn
#

is this enough fish

verbal glacier
#

i can still see the house so no

severe cairn
#

it worked

#

gonna try dataedit this file from my mod now πŸ€”

golden shadow
# uncut viper If you're using BETAS already, you could actually try a `SetNewDialogue` trigger...

Is something like this correct..?

    "Format": "2.8.0",
    "Changes": [
        {
            "Action": "EditData",
            "Target": "Data/TriggerActions",
            "Entries": {
                "{{ModId}}_SpouseInjuryCheck": {
                    "Id": "{{ModId}}_SpouseInjuryCheck",
                    "Trigger": "LocationChanged",
                    "Condition": "LocationName = FarmHouse, Spiderbuttons.BETAS_PLAYER_HEALTH Current 1 15",
                    "Actions": [
                        "Spiderbuttons.BETAS_SetNewDialogue Sebastian dialogue$s true",
                    ]
                }
            }
        }
    ]
}```
iron ridge
#

{{ModId}} should just be that

#

itll replace it with your mod id when it runs

strong kite
#

omg yesss my warp hub map patches for SVE are working perfectly

#

Hooray with that detour done I can go back to doing stuff I actually want to do like adding 23 more forage!

clever monolith
#

I wonder if there's a better way to get clean modded location names
Cuz with more mod compatibilities I'll need to add more lines like these and it looks so bad 😭

barren tapir
golden shadow
iron ridge
#

when something tells you to write {{ModId}}, you just write {{ModId}}

golden shadow
#

oh!

iron ridge
#

currently i tihnk it'll error since there's no token called Pathoschild.ContentPatcher for it to substitute in

#

maybe just a warning? either way its not ideal

barren tapir
#

is there a debug command to set the happiness of a specific animal?

royal stump
barren tapir
#

That works for me!

severe cairn
#

hmm... i dont think thats meant to happen... SDVIridiumKek

golden shadow
#

most advanced game of musical chairs

scenic ferry
#

anyone happen to know how the game handles the garbage can reaction? My familiars are lookin at me weird and Ideally they would not react but I cant find what actually triggers it

hard fern
warped vessel
#

I don't know directly, but if you want to poke around in another mod, I know 'the stardew squad' has a config that prevents people from caring

scenic ferry
#

right, so its possible, thats a good start lmfao

royal stump
#

it does that with a Harmony patch, apparently

#

if your familiars are defined in Data/Characters, you can choose the emote type & set the friendship to 0, but it still applies to any character other than horses

scenic ferry
#

yeah I just found it too
I've been avoiding harmony thusfar

The reaction doesnt negatively impact familiar friendship, so im mostly just trying to get it to not pop dialogue / emote

#

or - is there a way to at least change what the dialogue says maybe? If i can change the emote and the text that pops up I can at least reframe it as like, " ? What are you doing?" or something less specifically negative

royal stump
#

if they're a custom subclass, ig you could override doEmote on them, but otherwise you'll probably need to at least prefix something

#

the dialogue uses "DumpsterDiveComment" for that NPC if they have a dialogue asset, but otherwise it's just the generic Strings data line based on age
Data/ExtraDialogue rather

#

also in any case, ig it's going to do the multiplayer popup about getting caught too

scenic ferry
#

bahhh im sure I'll end up using other small harmony patches anyways... it seems like the cleanest work around

#

success, that wasnt too bad

strong kite
#

All that work just for these to be mostly blue 😭

inland rain
severe cairn
strong kite
#

ok giving my hyper berries a whole bunch of random debuffs was fun but now that I gotta make 23 more I am NOT doing that 23 more times 😭

void aspen
#

guess who had to do it over 50 times

golden shadow
severe cairn
#

thank u!

#

It's coming along so well ^O^

#

Yippieee

#

I'm gonna go draw some koi fish now...

golden shadow
#

respect to anyone who does full dialogue rewrites, because this is a lot (i am likely making this way more complicated than it needs to be). no actually respect to anyone who makes mods because this is a lot

barren tapir
#

The pig power book is finished!

signal nova
#

Anybody knows if there is any way to modify items obtained from hoeing the ground? I know it's possible to do it with artifact spots using:

              "ArtifactSpots": [
                  {
                      "Id": " ",
                      "ItemID": "(O)",
                      "Chance": 1
                  },

]

but is it possible to do the same just from hoeing the ground like trying to get clay?

brittle pasture
#

not without c#

severe cairn
#

How big are the aquarium fish SDVpufferwaaah

#

Oh wait nvm 24 24

barren tapir
#

I have coding questions, but I think I'm gonna wait to ask until tomorrow. In the meantime, I think I'll finally start working on some of the building textures

round timber
#

if youre anything like me, make sure you write them down somewhere so you dont forget after going to sleep lol

barren tapir
#

I think Imma start with Emily's tent

#

Jokes on you, I already have no less than 3 different TODO statements in my code saying the same thing

#

If that ain't proof I have ADHD, nothing is

lucid iron
void aspen
#

Someone said four funny letters

inland rain
#

putting stuff on fences

rich seal
#

The shorts

#

peak

severe cairn
#

Display

rich seal
#

I can see it now; a fence surrounding the shipping bin, holding nothing but lucky purple shorts. A true display of your dominance, because Lewis has to walk in there to collect the stuff you ship.

tall atlas
#

question for those making character mods, what is the usual number of lines a character should have? how many words can we expect from one character? trying to figure out the writing budget

ornate locust
#

However many or few you want

#

you can go vanilla numbers or get crazy with randomization, world's your oyster

tall atlas
#

hmm okay maybe i should ask more specifically. what's vanilla like in terms of number of lines? also, let's say if we assume the character comments on not only festivals (before and after), but also on other vanilla character's major events... how many lines is that?

brittle pasture
#

!unpack best way is to look yourself

ocean sailBOT
#

Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!

brittle pasture
#

marriage candidates tend to have more lines

round timber
#

selph literally stealing all the words out of my mouth lol

brittle pasture
#

I think Abigail has the most lines among all vanilla chars

round timber
#

i wrote down the number of lines my NPC has (excluding events) somewhere. let me try to find it

ornate locust
#

Apparently Abigail has 151

#

but some of them are for things like breaking up or the "cheating with everyone" events

tall atlas
#

hmm apparently always raining in the valley as 1000+ lines for 3 characters, but since only sterling is marriagable i assume he takes most of the lines

ornate locust
#

That's also vastly more than vanilla

#

ten times vanilla

#

For modded characters, vanilla's probably your baseline and the sky's the limit, it can be anywhere in there

round timber
#

honeyfuggle has 214 lines

ornate locust
#

my npc hassss one second

#

742, including gift dialog and movie dialog and such

round timber
#

waow

ornate locust
#

oh this might also have CTs from other NPCs in it

round timber
#

suddenly feeling very inadequate /j

ornate locust
#

My i18n is NOT set up for this estimation LOL

#

okay I think 661. Includes mod crossover dialog, gift dialog, movie dialog, excludes events

#

I did some stuff with dialog pool randomization

tall atlas
#

impressive! how many mods did you end up crossovering with?

ornate locust
#

Well it's via CTs or dialog pool additions, it's not full "we both wrote a scene together"

#

And some of it is gift dialog for modded items specifically

tall atlas
#

ohh

ornate locust
#

It just makes everyone feel more connected if NPCs refer to modded NPCs

tall atlas
#

yeah i really love that about many of the character mods here

ornate locust
#

So there's some lines that get added to the dialog pool with SVE, Ridgeside, East Scarp, and a whole lot of other things

tall atlas
#

and they all react to character events from other mods

ornate locust
#

I am told my compatibility section is immense, I'm Compatibility Georg

tall atlas
#

not all but enough to feel like it's all connected and not me downloading random character mods to putting them in one folder XD

ornate locust
#

and some of it's just moving stuff so other stuff doesn't collide, but I've got several lines and stuff in

#

Oh, Ayeisha does have a proper little crossover scene though

#

That's the first one I've got, though I there's one for Hurst (in alpha) too

tall atlas
#

ooh i just checked out mod

ornate locust
#

I like dialog pools because they're less immediate and in waves than CTs

#

I think a mix is ideal

#

but you can do whatever really

tall atlas
#

so you have 2 new characters in the mod. how many lines in total is that?

ornate locust
#

Alicia's mainly a desk who cameos other places, the numbers I gave were just Bill

tall atlas
#

ohhhh

ornate locust
#

Alicia's not friendable, she's got a handful of lines and a handful more if you use Central Station or Downtown Zuzu

#

where she can be a tourist or show up to the block party

#

and she talks in events

molten jackal
#

Hey modders, trying to fix my mizu's turkeys retexture right now (and get my unreleased reindeer retexture working, same issue) and running into issues - is there any workaround to target animal skins that use internalassetkey with a content patcher mod? And if so, what's the correct syntax here?
Chu wrote me a content.json forever ago for my metalcore goes cottagecore portraits that successfully managed to pull this off, and I've been referencing that trying to figure it out, but either the syntax is messed up or animal skins cant be targeted the same way and I. Don't know which it is l_cry_ila

tall atlas
#

ok from what i gather thus far, around 150 lines for vanilla, around 600 lines if including crossovers and randomised lines and etc

ornate locust
#

It depends on how fancy you want to get with the code too

brittle pasture
#
  • skins
ornate locust
#

With dialog pool randomizing, you can just add to the pool however much you want for daily dialog. With vanilla, it's set up in a very specific way

brittle pasture
#

if your code doesn't work feel free to post it here

molten jackal
#

Ok lemme try one more time

ornate locust
#

You can do dialog on specific days, specific weekdays, specific month/weekdays, it's pretty time-locked. And you can change it out with when conditions if you want. If you're doing estimating, I'd highly recommend looking at Abigail for example and the wiki page on how dialog works to see how the keys work. That changed how I planned out my writing, at least until I got the randomizing figured out

#

and for dialog about other mods with vanilla style, it'd be in CTs. You write a key for the mod's CT and your NPC will say it when the event happens basically

tall atlas
#

i'd ask how many words since that's what's usually needed for budgetting but that's highly dependant on how verbose the character is - they could be the type who just utters a word, or they could be the type who speaks in paragraphs lmao

round timber
#

shane vs elliott

ornate locust
#

Also hard to estimate if you have lines that change after events! Or if you have a mod enabled

molten jackal
# brittle pasture if your code doesn't work feel free to post it here

I'm definitely doing something wrong lmao
{ "Format": "2.8.0", "Changes": [ { "Action": "EditImage", "Target": "Mizu.Turkey/BrownTurkey", "FromFile": "assets/BrownTurkey.png" }, { "Action": "EditData", "Target": "Data/FarmAnimals", "TargetField": [ "Mizu.Turkey_Turkey", "Skins" ], "Entries": { "Skins": { "ID": "White", "Texture": "assets/whiteturkey.png", } } }, { "Action": "EditImage", "Target": "Mizu.Turkey/shopicon", "FromFile": "assets/shopicon.png" }, ] }

#

only the white turkey uses internalassetkey which is why its Like That

inland rain
brittle pasture
#

you also did not load the png into an asset you want to use and instead is providing the png path

#

to fix the first you can either use TargetField deeper and replace only the Texture field in the entry with the Id White, or use the correct key (White)

#
{
  "Format": "2.8.0",
  "Changes": [
    {
      "Action": "Load",
      "Target": "{{ModId}}/WhiteTurkey",
      "FromFile": "assets/whiteturkey.png"
    },
    {
      "Action": "EditData",
      "Target": "Data/FarmAnimals",
      "TargetField": [
        "Mizu.Turkey_Turkey",
        "Skins",
        "White",
      ],
      "Entries": {
        "Texture": "{{ModId}}/WhiteTurkey",
      }
    },
    // Other changes omitted
  ]
}
#

also it might be worth bringing up to Mizu if this isn't intended idk, then you can just wait for the fix on her end

molten jackal
#

thank you I have a really hard time wrapping my head around content patcher everything

#

I think it's probably intended bc all her reindeer skins use internalassetkey, but if I can figure out a workaround I don't have to bother her LOL, going to test it

#

I'M FREE

#

christ almighty, thank you selph you are my hero

atomic bay
#

i want to make a cp mod in which i change the texture of iridium bars and refined quartz to fit the rest of the bars. what would be the target i would write in the content.json

brittle pasture
#

Maps/springobjects is where object sprites are stored

#

you need to find the coordinates though; feel free to use an image editor of your choice that supports 16x16 grids and showing x-y coords

atomic bay
#

ok, coordinates of which corner of the textures

eager tree
void aspen
brittle pasture
viscid quiver
#

if i add multiple dialogue lines for the same item, im guessing it chooses one of them randomly every time, right? also do omitted gift -ables in npc gift tastes default to the universal? uh and should i bother adding i18n support even though its meant to be just a personal project..... i checked out some mods' dialogue & i18n files n it looks so much neater.................... ||zero experience in everything please bear with me 😭||

viscid quiver
#

oops i mean like item specific dialogue

#

for gifts

round dock
#

I don’t think my explanation is very good, let me just give you an example SBVLmaoDog

viscid quiver
round dock
#

My i18n has these entries, respectively: "CSS.GLH.AcceptGift(O)421_0": "Wow, aren't they just beautiful?$h#$b#These are my absolute favorite! Thanks, @!", "CSS.GLH.AcceptGift(O)421_1": "I love sunflowers! Aren't they the prettiest?$h#$b#Thank you!!$h",

#

I'm sure there's a way for you to just have one dialogue entry containing multiple lines set for randomization but I think this is just a cleaner and more organized way to do it. Nomori made an i18n converter for ease of internationalization

viscid quiver
#

thank you so much!! going back and forth mods' dialogue and i18n files was too much for me 😭 will check the converter out !

round dock
inland rain
#

cats sleeping on cat trees, dogs sleeping in dog houses

daring skiff
#

At last.

round dock
#

At long long last omg awwfrog

golden spire
#

cats sleeping and getting stuck in real trees

viral gazelle
#

Finally, functioning pet furniture

blissful panther
#

Is... is this extensible at all? Like specifying a tile on the furniture for pets with a specific ModData or custom field or something to sleep on? SDVpuffereyes

Even if it isn't, completely worth it!

inland rain
#

here's what you can do now:

"Action": "EditData",
"Target": "aedenthorn.PetBed/dict",
"Entries": {
    "Doghouse": {
        "X": 12,
        "Y": 20,
        "PetTypes": "Dog",
        "CanFlip": false,
        "FrontTexture": "{{ModId}}/DogHouseFront"
    }
}
blissful panther
#

Yes.

gray bear
gray bear
#

np ❀️

west thunder
#

Regarding the custom monster framework or whatever it's called.

#

If I were to make a monster that uses the lava lurk as a base, how would spawning in an area work?

#

Will it automatically detect water/lava tiles in a space, modded or not, or do I need to somehow set something to work?

inland rain
#

They won't spawn just using the framework, you need to make them spawn somehow

west thunder
#

Oh yeah?

#

So you just use the framework to just make the monsters and their loot tables and such?

inland rain
#

sorry, that's not quite correct, the framework has two fields that let you spawn them as replacements for other monsters

#

but they won't just spawn separately

#

You can use DMT to make them spawn, it should be pretty easy

iron ridge
inland rain
#

you really have to read the documentation for Custom Monsters, it's not a simple thing mostly because there are multiple ways of instantiating monsters. it explains about DMT as well as gives examples.

west thunder
#

I've looked over the documentation of both mods. I'm set for life.

west thunder
#

What's the difference between the values:
"DMT/monster_Enter";
"DMT/monster_On"?

inland rain
#

Enter doesn't really have any business being in DMT, I'm not sure where it came from lol

#

oh right, yes, it could be used to change a specific tile when a player enters... but I don't see any code to actually make it work

west thunder
#

Then how would I go around implementing monsters to pre-existing mines?

#

Would replacing them be the only option?

inland rain
#

replacing them would be the easiest option

west thunder
#

Would the entire species get replaced or would they just spawn in place of a random individual monster?

inland rain
#

you can specify a chance, which is calculated for each vanilla monster of the right type

#

for DMT, probably Load is the trigger you want

#

that will trigger when the location loads

#

though in mines, I'm not sure how that works

#

bc they aren't really locations

#

You could also create a C# mod accessing the Custom Monsters API and spawn them as you like

west thunder
#

If I were to have unique modded maps for the monsters to spawn in, would I do the same as in the example of Custom Monsters where I just edit the map?

#

Though I don't quite get the XY stuff, can you not make them spawn randomly in non-mine locations?

inland rain
#

spawning randomly is a bit vague... you could use Content Patcher to specify your randomness

#

x and y are the position on the map

west thunder
inland rain
#

content patcher has randomization

#

I could add some sort of location spawn field

west thunder
#

I'll see what I can do. Thanks.

west thunder
#

Although I'd assume if this were to be implemented in a custom location, I could just XY it.

#

But I'm unsure if it would start swimming in the ground after a while.

inland rain
#

it would behave like a lava lurk, I'm just making a field for spawns in specific locations

inland rain
#

MaxAmount is the max number of this monster that can exist in the location (they won't spawn more if it's that many or more already)

west thunder
inland rain
#

no need for DMT

west thunder
#

are you the one who blessed us with the custom monster framework this whole time

inland rain
#

I might have created it

west thunder
#

twin

#

you're my hero πŸ₯Ή

inland rain
#

I'm just happy to see someone actually trying to use it lol

west thunder
#

Are you kidding? After finishing my Vanilla monster retexture mod, I've been DYING to try and implement completely new ones to the game.

west thunder
inland rain
#

yes, it probably wouldn't work in mines

west thunder
#

Good either way, as I plan on another mod that adds unique locations for equally unique monsters to spawn.

inland rain
#

you can dm me if you have more questions, I guess this isn't the best place to have detailed conversations about this

inland rain
#

Added LocationSpawns to Custom Monsters https://www.nexusmods.com/stardewvalley/mods/45642 :

LocationSpawns

List of entries for causing this monster type to spawn in specific locations. Each entry takes the following fields:

  • Location - the name of the location for the monster to spawn in (e.g. "Forest" or "Mountain").
  • MinSpawn - the minimum number of this monster type to spawn at once.
  • MaxSpawn - the maximum number of this monster type to spawn at once.
  • MaxAmount - the max number of this monster type that can be present in the location at once (if omitted, no limit).
  • MinTile - the minimum x,y tile coordinates for the monster to spawn at.
  • MaxTile - the maximum x,y tile coordinates for the monster to spawn at.
  • Respawn - the period after which to trigger a respawn. Can be one of "Daily", "Hourly", or "TenMinutes".

Example:

"LocationSpawns": [
    {
        "Location": "Forest",
        "MinSpawn": 1,
        "MaxSpawn": 3,
        "MaxAmount": 10,
        "MinTile": {
            "X": 0,
            "Y": 0
        },
        "MaxTile": {
            "X": 100,
            "Y": 100
        },
        "Respawn": "Daily"
    }
]
Nexus Mods :: Stardew Valley

Lets modders create and spawn custom monster types.

#

@west thunder ^

upper forum
#

Hey so I have a question. I keep having issues setting up my portraits mod. Everything's working perfectly except Leo's portraits. I'm using Portraiture's HD Portraits framework and for some reason, when I try and load up Parrotboy to edit and replace the portrait, nothing happens. No errors on SMAPI, just the portrait doesn't get modified. But when I change the name and the png names to Leo, it does work. Which is strange, isn't it? The in-game vanilla file is called Parrotboy

#

Surely I'd be loading up /portraits/MOD NAME/parrotboy, not /portraits/MOD NAME/Leo?

gray bear
#

Portraiture doesn't use the exact match than Shruge dunno if it has docs

fossil osprey
#

was gonna say, portraiture may not use sdv internal names

ornate drift
#

hmmm, maybe this is the issue thats making the game not recognize pierre

#

oooooo i forgot his direction.....

#

shit

gray bear
#

yeah ur telling abigail to pierre

#

i think, events are mysterious

upper forum
#

hmm, I guess that explains why other HD portraits seem to use Leo, but non-HD portraits are using Parrotboy... I see

gray bear
#

I guess portraire just like, uses their names.

upper forum
#

The other issue I'm running into is that I can't figure out how to replace the answering machine file lmao. I have it set to edit and replace /portraits/MOD NAME/AnsweringMachine, which again matches the vanilla vile name, but it's not working? And I can't seem to find another mod that successfully replaces it lol. Everyone I've tried that has the answering machine portrait doesn't seem to work either

#

and no SMAPI errors show up either

#

any ideas what I could be missing?

fossil osprey
#

doesn't portraiture have some documentations?

#

if not, that's a miss on them

gray bear
#

not that i see

upper forum
#

yeah I couldn't find anything πŸ˜”

#

is there any mod I can use that would let me know what the name of a given asset is in-game? or something like that?

torpid sparrow
#

Err wdym

#

Lookup Anything feels like what u want

#

Or do you mean like

#

Pngs and stuff

gray bear
#

wouldn't help here

torpid sparrow
#

Oh wait I see lol

gray bear
#

portraiture isn't using the names of the in-game assets

fossil osprey
#

since portraiture doesn't always use the correct asset name that'd be useless :/

upper forum
#

ah

torpid sparrow
fossil osprey
#

where is your framework iro SDVpufferpensive

gray bear
#

for reference the in-game asset is called "AnsweringMachine"

#

but i wouldn't know how to gauge what portraiture uses

fossil osprey
#

but basically, there is a chance portraiture simply doesn't touch this asset at all, so you can't replace it

upper forum
#

oh hm

fossil osprey
#

or it does, but how to know the used name? no idea

#

decompiling would work ig

gray bear
#

you can uhh use the code methood and not just placing stuff in files, might help

#

no, nvm, same issue

upper forum
#

So far Dacar, Talkohlooey and Shie's portraits all don't work with the answering machine

#

hmm, it might actually be an issue with Portraiture...

gray bear
#

maybe they just, changed how to refer to it, like how they did for leo

#

might be silly, but try Answering Machine

#

like add a space

upper forum
#

That could also be it. Might try a few alternative names lol

fossil osprey
#

maybe it's just "phone" 🀷

upper forum
#

maybe phone too-- yeah lol

gray bear
#

the source code is out there so perhaps some C# wizard could like, check, but otherwise Shruge

fossil osprey
#

cmon CA, why is it called answering machine, it's a god dang phone /silly

torpid sparrow
#

i guess bc it works when the vendors arent there

#

i wonder if that was the original purpose, and he just scope creeped

#

sounds right for stardew

upper forum
#

trying out some alt names right now lol, will report back

#

another funny quirk I've found: Mr Qi needs two files. MrQi AND Mr Qi

#

no idea why, but one is used in a cutscene, the other is just for normal dialogue

torpid sparrow
#

Qi^2

gray bear
#

two of em

upper forum
#

honestly on brand for him tho

gray bear
#

yeah qi did that himself

upper forum
#

hrm, phone, telephone and answering machine all don't work

nova gale
#

I wish you could start construction projects from the phone (anything that isn't buying a good really)

fierce vault
#

Been thinking about this a bit, and writing is one of the hardest parts of modding (to me)

clever monolith
#

Relatable

fierce vault
#

I like event making, but it’s more fun after I can follow the script instead of writing it, I think

tranquil olive
#

I understand that, it's taking me a bit to do event things because I'm stuck on the writing script part a bit

fierce vault
#

I don’t hate writing, but I procrastinate doing it so much lol

#

It’s not fun in the same way art is to me. I know it’s the opposite for some people

#

I genuinely enjoy sprite making, and portrait making, and room decorating

daring skiff
#

My writing process is very iterative, and is usually only accomplished by waiting a while and seeing how I feel about it later. Sucks!

fierce vault
#

So you make first drafts and then edit them

#

(after you’ve given the idea some time to rest)

fierce vault
strong kite
#

Question: Should I feel bad about pushing out multiple updates for a mod in succession

fierce vault
#

I think I really needed time to figure the very basic foundation out

torpid sparrow
#

no

#

i updated every 2 days for a while 2cat_sweat

fierce vault
#

I’ve added new characters to it too because I ended up making art I really liked lol. Wouldn’t have happened if I had created and finshed the mod last year

strong kite
#

Alright. cuz I released the major update, first one in 2 years 2 days ago. Then yesterday I released 2 different patches, one to fix cutscenes and one to add SVE compatibility.
Today I was planning on releasing another for more SVE Compatibility and also new forage that is 100% unnecessary but a comment asked for it so

torpid sparrow
#

i dont think my npc process is as iterative as it could be but when i start on my expansion it will get much more iterative

clever monolith
torpid sparrow
#

also maybe clark since i have to do rival hearts

clever monolith
#

As long as it doesn't reset config everytime I think it's fine

barren tapir
#

Two Questions:
A) do you think pigs with golden animal crackers would be too OP if they dig up 2 truffles at a time? Should it be a percent chance of happening?

B) how would a C# mod change what drops from a specific monster instance when killed (I can elaborate more on this later - I'm still waking up)

fierce vault
#

Wait what lol

#

Mr beast disappeared as suddenly as he came

barren tapir
#

It's a scam

fierce vault
#

ohh

#

Like a discord one? I thought someone accidentally just shared the wrong picture

#

I can see that now though

#

well, that was quick

barren tapir
#

Yes. IDK what it does, but I've seen it occur a few times on a few different servers

fierce vault
#

unfortunate

fossil osprey
#

i've seen it too many times now, I see the 4 pictures and auto ping mods x)

barren tapir
#

A small part of me wants to setup a secure VM to analyze it and see what it does

fierce vault
#

Idk what that is πŸ˜…

fossil osprey
#

it's just a screen of a twitter post telling you how to earn money, then a picture of someone doing it then their filled bank account

#

nothing too fancy

barren tapir
#

VM stands for Virtual Machine. It's how cyber analysts analyze malware in a secure setting

fossil osprey
#

simplest scam ever tbh

fierce vault
#

Oh, interesting

#

Cyber security stuff is neat

barren tapir
fossil osprey
#

I had the time to look through it once, I had pinged a mod in another server and, I swear, he just asked "yes?" in the chat and did not delete the post

fierce vault
#

oh wow

fossil osprey
#

it took a good 10 minutes for them to realised what it was about

#

genuinely impressive

barren tapir
# fierce vault Cyber security stuff is neat

Yep! I'm more of a blue hat, as I find cryptographic algorithms fascinating (#math-nerd)!

-# I should clarify, I have a BA in cybersecurity and a Masters in Quantum Computing πŸ˜…

fierce vault
#

Very cool

fossil osprey
#

-# i'm not sure the "hat" terminology is well known outside of the domain

fierce vault
#

that is right

#

I think

barren tapir
#

My bad. Blue hat just means that I prefer protecting machines as opposed to attacking them

fierce vault
#

Oh, ok

barren tapir
#

Red hat refers to people who try to attack a system. This doesn't always mean they are malicious though.

fossil osprey
#

red hat does have a subtext of malicious attacker

fierce vault
#

Right, I’m vaguely familiar with that

barren tapir
#

A lot of red hats are hired by companies to perform security analysis

fierce vault
#

white hat hackers might be a term I've heard

fossil osprey
#

there is another one for people specifically hired to attack systems to pinpoint vulnerabilities

#

-# i just know them as pentester because we don't use the hat terminology at work

barren tapir
#

White hat: Good hackers
Grey Hat: Neutral hackers
Black Hat: Bad hackers

And yes, pentester is the better word (I'm still a bit groggy πŸ˜…)

fierce vault
#

I am no math or computer nerd, but modding in general has helped me become a bit more computer literate

#

In basic but helpful ways

barren tapir
#

Red hat/blue hat is also more commonly referred to as Red team and Blue team iirc

fierce vault
#

And search for files lol

fossil osprey
barren tapir
fierce vault
#

Interestingly enough, modding has also taught me little bit about marketing. There are actual skills learned in this hobby

#

I’m mostly glad to be albe to put my pixel art to use though

#

I can’t make a video game

#

But I can mod one (this one)

#

and only this one lol

fossil osprey
#

same ^^'

#

and "mod" is very broad, as I haven't really done anything for now lol

#

(my only mod has been entirely done with smithy, so I haven't coded anything yet SDVpufferpensive )

fierce vault
#

I’m glad there are so many people willing to help newbies here lol

#

I wouldn’t have accomplished the stuff I have without help

barren tapir
#

Yeah, this is a good community!

#

Speaking of which, I'm gonna ask this again since I accidentally de railed this channel:

Two Questions:
A) do you think pigs with golden animal crackers would be too OP if they dig up 2 truffles at a time? Should it be a percent chance of happening?

B) how would a C# mod change what drops from a specific monster instance when killed (I can elaborate more on this later - I'm still waking up)

fossil osprey
#

pigs are already OP, so anything making them do more will be SDVkrobusgiggle

brittle pasture
#

for B) have you tried reading monster code

barren tapir
#

Granted, I should probably reread it now that it's not midnight

jaunty trench
#

would any of y'all be interested in music for one of ur mods or other projects? πŸ‘‰πŸ‘ˆ

brittle pasture
barren tapir
barren tapir
fossil osprey
dusky vigil
#

@brittle pasture Would "Animal is a Heater" be possible with EAC?

jaunty trench
jaunty trench
dusky vigil
fossil osprey
glossy cargo
#

Now that the Farmhouse is a moveable building... how resilient would the game be to a mod that just deletes the farmhouse?

brittle pasture
#

well the game seems to be null checking GetMainFarmhouse in all but one case (some old save migration code which hopefully will not run ever if you intend the mod is to be installed on a new save)

#

I say go for it
after all if the game explodes it isn't going to be my fault

barren tapir
#

How would a c# mod add a number slider to their GMCM config menu?

brittle pasture
#

I think that should be a number field with min/max/interval

barren tapir
#

Gotcha. Thanks!

brittle pasture
#

I sure hope no mod is relying on environment.numberOfObjectsWithName("Heater") returning an accurate count instead of just caring whether it returns 0

fossil osprey
#

-# I saw my screen blinked

barren tapir
#

I currently have the following left to do for my book update:

  • Add logic that adds monsters throughout the day around the player at Ginger Island
  • Maybe add a boss monster to the caldera?
  • The logic for at least 3 new books (at least one of which is going to be a massive pain to test bc it requires the desert festival)

I may also try beginning to figure out how to even begin approaching my traps mod, since that is probably going to be rather difficult to figure out (I'm almost certain it will require a new class).

whole prism
#

Hello! Two quick questions:

"When": {
   "Season": "Fall",
   "Query: {{SkillLevel:Fishing}} >= 3": true
},

For an event (cutscene), is this the best way to check if the season is Fall and if fishing level is 3 or over?

#

Or is there better practice for this

barren tapir
#

Wait, nvm

whole prism
#

No, it should be >=

#

that would mean 3 and under

barren tapir
#

I thought the original message was 3 or lower, not 3 or over πŸ˜…

brittle pasture
#

try to avoid conditional patching as much as possible

#

Season Fall/Skill Fishing 3

whole prism
#

would skill fishing 3 only limit it to 3?

brittle pasture
#

3 or higher

whole prism
#

ah tyty

whole prism
#

like for event conditions like this

#

cause when I read event data i didnt see anything bout skill fishing originally

#

or in the game state queries page

brittle pasture
whole prism
#

ah im blind

#

ty!

signal nova
#

Is there any way to make any item tagged as "has_shark_fins" to be used in a crafting recipe as an ingredient to make something? (This doesn't work)

brittle pasture
#

only possible with spacecore

signal nova
#

I got spacecore installed, how would I do that?

brittle pasture
whole prism
brittle pasture
#

specifically the "Crafting/Cooking Recipes" section

#

for examples you can check out Flexible Cooking on Nexus

barren tapir
#

That feeling when you launch SV but accidentally forgot to build your mod first

whole prism
#

(i had it where 20 needed updating and cried)

dusky vigil
brittle pasture
#

-# yeah I lowkey already have the code in place for a mod I'm not working on

blissful panther
#

(I'm going to choose to believe it's actually just absurd competence.)

barren tapir
#

Yay, it works!

#

2 Books Left to Go!

#

-# I still need to actually add the 3 remaining books, but at least one of their logic is finished

brittle pasture
#

something that will probably come out in 2029

barren tapir
#

GOD DANGIT. STOP GIVING ME BOOK IDEAS TO STEAL

brittle pasture
#

here's one more teaser because I delight in suffering by showing people what they cannot have

barren tapir
#

Though in all seriousness, I've felt a lot of my books have been doing what other mods do. Some examples include:

  • Enabling ancient fruit to grow all year long
  • Mining extra stone (granted, I just learned about a mod that does this)
  • Letting you feed golden animal crackers to pigs
  • Letting you age pickles
  • No longer having fishing rods consume bait and tackle (I originally planned on having it still consume bait, but eventually gave up)
  • Increasing slime hutch capacity

And probably a bunch of other things as well if I'm honest

rich seal
#

Don't let that get you down. Having different options is always good; maybe a mod that lets you age pickles has ONLY that, and you'd want that feature along with something else but reduce your mod count; the option is there. Something something two cakes, and all that. Do what YOU want to do, and if there's overlap, that just means there's more of <thing> to download!

strong kite
#

Does this seem too high a value? Thonking

rich seal
#

Wine should be 3x the price of whatever you put in, so no. The wine isn't overpriced; it's whatever you threw in there to make the wine lol

strong kite
rich seal
#

Ah, that explains it then

#

Then yeah, that's a bit pricey lol

strong kite
#

It's 3.75x base price - 5000

#

Oh right that IS also iridium quality

#

my cursor is over the star Tiredkip

rich seal
#

Oh I see the pixels now lol

strong kite
#

yea that's my bad lol

rich seal
#

Even then, that is a bit of a high price lol.

blissful panther
#

I mean... technically it being overpriced or not depends on the difficulty of obtaining the source item.

#

If it's a crop that grows in 30 days... maybe a bit much. SDVkrobusgiggle

rich seal
#

True. We do need a bit of context in that regard.

barren tapir
#

It's a crop that only takes an hour to grow

strong kite
#

It's basically meant to be an endgame money maker, this is the absolute highest value item you can get out of there and that's only from making it into wine and letting it age

rich seal
#

Well if you think that the effort required to unlock it justifies the price, then that's fine!

#

If it had a few more digits, it MAY be a bit too pricey, but balancing is an endless process

strong kite
#

It's not necessarily meant to be balanced just because it's gotten at a point in the game where like... there really isn't much else to be doing

blissful panther
#

Seems perfect to me then!

strong kite
#

Awesome!

rich seal
#

Fair. Plus, it is entirely up to you on its price, so by all means, stick with it!

strong kite
#

I'm also including a warning when you unlock the Abyss saying that the stuff there is lowkey probably overpowered and encouraging people to ignore it if they don't like it

#

I might also make a config option to make the super duper high value forage even rarer, but I'll need to do like actual testing first

#

i also don't want to spoil it to players yet because technically this is all part of a secret thing heehee

strong kite
#

The secret is basically everything I've been doing for the last 2 months OMEGALUL

#

This whole questline with Darkrai and such is technically a secret you access by drinking an item that hurts you for like -787 energy (supposed to make you sleep and force the next day) So like.. no one would realistically drink it
But I've been adding hints and stuff to generate intrigue around the item so hopefully people will try it and find there is so much more to this mod

#

Like I have just this image on the mod page with no context other than "...?"

whole prism
#

wait

strong kite
#

So I'm really hoping people will take a chance :3c

whole prism
#

is this mod just about darkrai or

strong kite
#

NOPE NOT AT ALL LUL

whole prism
#

is darkrai the secret spotlight character

#

LMFAO

strong kite
#

This is a mod about having the berries from pokemon as growable crops

#

DARKRAI WAS THE CRAZIEST SCOPE CREEP I'VE EVER EXPERIENCED

#

and also one of the first I ever experienced

fossil osprey
#

that is such a scope creep

#

scope creep master among us πŸ™‚β€β†•οΈ

strong kite
#

quaint little mod about growing pokemon berries :3c
sip nightmare smoothie
Fully friendable NPC with a fucking community center-esque line of bundles to complete and BIG rewards for doing so

fossil osprey
#

oh wow it's a secret secret thing

#

awesome, wonderful, I love that

strong kite
#

Yeah, like 80% of what I've added is only accessible after you drink something that on paper kills you LUL

#

And it does! but then the fun begins :3c

#

Community Center bundles are one of my favorite things in Stardew I love completing them and always find myself with struggling motivation to keep playing after I've completed them. So I figured with all these foods and berries I'm adding for my mod, I should have bundles to complete! And everything just fell into place with Darkrai and the fact that 2 years ago I made an item that kills you and does nothing else LUL

#

god that's literally how this all started, I saw the Nightmare Smoothie I made 2 years ago with an edibility of -299 and thought "this should like.. ACTUALLY do something" and now it's technically the most important item in the mod

#

Now I'm gonna expand the playable area of the Abyss where this forage spawns, because after adding 23 more forage and doubling if not tripling how many spawn per day, a 48 x 24 map with a good chunk of dead space might not be cutting it lol

#

OH RIGHT- That's also why I came here I forgot-
I wasn't sure if I should increase the height of the zone to 48, 72, or 96

whole prism
#

Meow

strong kite
#

I have a habit of yapping lmao

barren tapir
#

Okay, I think I have the pseudo code to make calico statues more likely to spawn.

barren tapir
#

Time to test it. I doubt it'll work

#

Would yall say having 9 statues spawn in a row would count as increased calico statue odds?

strong kite
#

Uhhh yes I'd say so rawbea2LUL

barren tapir
#

Okay, I've reached level 30, and only 2 floors did not have any statues

#

I'm pleasantly surprised that that worked

blissful panther
#

Always good when something wildly experimental works first try!

barren tapir
#

That also means that I only have 1 more book left to figure out the logic for!

#

But before I do that, I think I'm going to properly implement the shrine logic

#

Which means yall should expect to hear from me soon asking about how to draw over sprites and add animations πŸ˜…

#

I also need to figure out book titles

whole prism
#

i think it happened once where i did it first try 0 bugs in code

strong kite
#

Man I just love making the most spaghetti pasta map shapes

#

It's not done yet but this is the general layout (spawnproofing out of bounds is gonna be pain with this one)

barren tapir
#

What are yall's thoughts on the following prompts?

-Dark Shrine of the Ancients-
Ancient evils who lay long dormant will be awakened, causing monsters to invade Ginger Island.
Make an offering of one Dinosaur Egg?

And

-Dark Shrine of the Ancients-
The ancient evils invading Ginger Island will be put to rest, preventing monsters from appearing on the island.
Make an offering of one Dinosaur Egg?
fierce vault
#

I got this as a comment in the errors section of my forum today lol If you skip the building event Jack doesn't show. I guess that's realism.
I actually wasn’t able to figure out why he doesn’t become visible again when I used the proper command before the /skippable… but I did add a trigger action as a failsafe since it doesn’t work. He’ll just show up a day late. πŸ˜†

barren tapir
#

Is \n how you force a line break in an i18n entry?

fierce vault
#

I think it’s a <#$b#> for dialogue?

lucid iron
#

It depends solely on where that string is used

#

For example message boxes use ^

barren tapir
#

It's going to be used in a yes/no prompt (the type that appears when interacting with the shrines at the witches hut)

#

So I should use ^ instead of \n?

fierce vault
#

oh, that sounds like a ^ I think.

#

I can check my mod

#

ok wait

fierce vault
#

Your’s is a map string too right?

barren tapir
#

OH MY GOD, WHY DOES THE GAME HAVE TO MAKE THIS SO DANG COMPLICATED

barren tapir
fierce vault
#

Oh wait. Question

#

this is purely a line break in a paragraph, right?

barren tapir
#

Yes

fierce vault
#

ok

#

Then I think it should work

#

Because that’s how I have it in mine when the map patch is examined

barren tapir
#

I have a plan. Since there's several line breaks, I'm just going to use all of them. One of them is BOUND to be correct πŸ˜…

fierce vault
#

You mean at once…. or in succession?

barren tapir
#

In succession

fierce vault
#

Ok

#

I’d go with # first

lucid iron
#

yknow u can just go look at decompile to find out for sure SMCPufferjail

#

sometimes it might not even be supported anyways

barren tapir
#

Turns out it was ^

fierce vault
#

Oh 0_0

#

interesting

#

So what was the context of your string?

#

Was it a map patch?

barren tapir
#

Now that that's settled. First of probably a few map drawing questions. I have the following tile sheet for a map. How would I go about conditionally drawing the items on the right above the skull on the left. (The vines should look like they are coming out of the skull, and the blob should appear in its mouth)

barren tapir
fierce vault
#

oh wait

barren tapir
fierce vault
#

Oh, then I’m not the person to ask lol

#

I think you need to ask a far more experienced modder for this

#

I am barely getting by when it comes to JSON stuff

proven spindle
#

Editmap patchmode replacebylayer is probably the easiest option for conditionally layering stuff in there

ornate locust
#

Or overlay

barren tapir
#

Is there a way to toggle layer visibility? For example, if I placed the egg on a layer called "SFX" I could toggle that layer's visibility? (to be clear, this is related to my next question seeing as I just learned how to make animated tiles via Tiled)

ornate locust
#

Don't name layers weird stuff, they draw based on name

#

Overlay, you just put, for example, the egg on a layer like Building2 if your skull is on Building and have no other layers in the patch. And activate that map patch and it will put the egg on top of the skull.

#

Are you doing this in an event?

barren tapir
#

No. The plan is as follows:

  • Have the vines be added based on a config value
  • Add/remove the egg whenever the shrine is active or inactive respectively
  • Add/remove animated flames to the eye sockets while it is active or inactive respectively.
ornate locust
#

like if it's just a map change, conditional map patches are fine

#

If the vines are based on a config, you could overlay them onto the skull image itself tbh

#

think that'd be as efficient as anything

uncut viper
#

Not that I'm saying there aren't ways to do this with CP, but if Nullnow is using C#, odds are timing things around patch lifecycles in CP instead is going to be rather unnecessarily limiting

barren tapir
#

And would that still work if the map in question is being extended to a different map (and yes, this is a C# mod)

ornate locust
#

oh, C#, that's over my head

barren tapir
#

I believe I could also add an animated sprite for the eyes via the AnimatedSprite class, but I could be wrong. I wonder if the same would also be true for the other textures as well now that I think about it

wanton pine
#

Does anyone have up-to-date tutorials on making hats and adding items to stores?

uncut viper
#

I am not able to help much with brainstorming a good way to do it now, but you might get some ideas from looking at the secret woods class in the decompile with the Gemberry guy statue

#

Since his eyes light up upon being activated

#

Conditionally drawing sounds easier than conditional patching, to me

barren tapir
#

I've actually been following along the shrines in the witches hut (I just found them, which is why I brought up the sprite idea πŸ˜…)

fierce vault
#

It is not a purchasable item though

wanton pine
#

I am asking because the wiki tutorial for adding an item to a shop is marked obsolete, I can't see one for hats and I'm not sure what exactly is going on with the code of the mod I downloaded to use an example in tandem with the modding:hats page.

wanton pine
fierce vault
#

I’ll go get it

proven spindle
#

Modder's Pie has a section on adding items to shops, and the technique for hats is pretty similar to that for cooking recipes as far as how to interpret the modding wiki

wanton pine
#

...Seeing you typing is making me suspect that adding something to a store is part of modder's pie.

#

I was right!

barren tapir
#

I think I'll try my animated sprite idea sometime either later today or next week. I think I'm gonna take a break for now.

fierce vault
# wanton pine that would be much appreciated, thank you!

Here's my example you can use as well ```{
"Action": "EditData",
"Target": "Data/Hats",
"Entries": {
"{{ModID}}_JacksHat": "{{ModID}}_JacksHat/{{i18n:JacksHat_Desc}}/false/false//{{i18n:JacksHat_Name}}/0/\Hats\{{ModID}}_JacksHat",
}
},

    {
        "Action": "Load",
        "Target": "Hats/{{ModId}}_JacksHat",
        "FromFile": "assets/JacksHat.png"
    },```
rare orbit
#

quick question? when making portraits for a custom npc? if they don't have outfits for different seasons how do i add that in my mod?

round timber
#

you mean you plan on not having outfits? or they dont have them now and you want to give them outfits?

rare orbit
#

essentially the author said i could make portraits and sprites for this mod

round timber
#

the appearance system, vanilla uses it for the winter outfits

rare orbit
#

where's the tutorial for that and seasonal?

round timber
rare orbit
#

thank u!!

#

so i would need to add that if their mod only supplies one portrait and sprite?

round timber
#

yeah

rare orbit
#

kk i'll have to set that up after finishing up the portraits hopefully it'll work

wanton pine
#

Do I have the right index numbering going on? I have two hats on a 40x80 vertical sprite sheet, with the silver one on the left and the orange one on the right. (and no i18n.)

    {
    "LogName": "Helmet Hats",
    "Action": "EditData",
    "Target": "Data/Hats",
    "Entries": {
        "{{ModID}}_SilverHelmet": "An silver motorcycle helmet./hide/false//Silver Helmet/0/\\Hats\\{{ModID}}_Helmet",
        "{{ModID}}_OrangeHelmet": "An orange motorcycle helmet./hide/false//Orange Helmet/1/\\Hats\\{{ModID}}_Helmet",
        }
    },
#

There's also an extra comma SDVpufferfush

brittle pasture
#

(wrap your code in two pair of triple backticks ``` so it shows up properly and not hide characters)

#

you're missing the internal item name as the very first field

wanton pine
#

Just noticed that myself; it is now present

brittle pasture
#

making it the same as the ID should work

wanton pine
#

yep, just ctrl c + ctrl v'd it

#

Main concern is double checking that the sprite index #s should be 0 & 1 and not 1 & 2.

#

TY!

wanton pine
#

How do you do a CP "when" condition mirroring the BUILDINGS_CONSTRUCTED gamestate query?

uncut viper
#

You don't, not directly, unless you use Esca's Modding Plugins as a dependency.

#

What you can instead do is set up a trigger action using that GSQ as a condition to send a mail flag, and then use the mail flag for your When condition

cyan jungle
#

hiya guys, could anyone please help me troubleshoot my mod?

golden spire
#

just ask.. rather than ask to ask πŸ˜›

round timber
#

just go ahead and explain your problem and ppl will answer if they can!

cyan jungle
#

Well, I'm trying to add a seasonal patch to a custom map I made and I'm having trouble with it. No errors show up in my smapi log but the patch doesn't show up

wanton pine
#

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

cyan jungle
fierce vault
#

hey, is the event tester mod for speeding through them currently hidden?

#

because i can not find the modpage

proven spindle
wanton pine
wanton pine
proven spindle
#

Mailflags are internal flags that the game can use as conditions ('when player has mailflag do x'). Letters are just mailflags that are set up to be visible to the player in game

cyan jungle
proven spindle
#

Trigger actions can be done in cp, the modding wiki has examples on them

#

[[Modding:Trigger actions]]

wanton pine
# cyan jungle Does it make that much of a difference? Cause I mean it works fine it's just the...

I'm not sure it's actually working. You're missing a lot of commas after close brackets. This means that it will only run as far as the first close bracket missing a comma. ex:

"Action": "example",
"Target": "example",
"rest of action that will be completed"
}
{
"Action": "example",
"Target": "example",
"action that will not be completed"
}```
vs
```{
"Action": "example",
"Target": "example",
"rest of action that will be completed"
},
{
"Action": "example",
"Target": "example",
"rest of action that will be completed"
}```
proven spindle
cyan jungle
proven spindle
#

Make sure vscode is set to json schema

wanton pine
cyan jungle
#

how do i change it to json schema?

proven spindle
#

(I swear there was a command for how to do that but I can't find it)

wanton pine
#

and then when I check it again, it finds the next one

wanton pine
cyan jungle
#

but shouldn't the smapi json validation show the errors as well?

uncut viper
#

They're not missing commas after their closing braces, they're just next to the comments

wanton pine
#

Ah. I am reffering to the validator as a checker.

cyan jungle
uncut viper
uncut viper
fierce vault
cyan jungle
uncut viper
#

If it's not being used in a CP Include action then you do need the Format part

cyan jungle
#

how do i know which one it is?

uncut viper
#

Well, you set up the mod. Did you tell Content Patcher to load this json as part of an Action: Include?

cyan jungle
#

the action is editdata

uncut viper
#

Or is this all inside your content.json file?

cyan jungle
#

no this is inside a data json i called maps that edits the custom map

#

and i wanted to add a seasonal patch to the custom map i made

fierce vault
#

is that event tester mod retired?

uncut viper
#

If you haven't told Content Patcher to include that json, then that data json is doing nothing

cyan jungle
#

oh it is included in content

uncut viper
#

Also, since this isn't your content.json, you do not put the Format part

cyan jungle
#

and it works

#

i added the format part now!

uncut viper
#

Please send your content.json uploaded through the SMAPI validator

wanton pine
uncut viper
#

And the previous json you sent is Data/Maps.json? And you do have a folder called Data in your mod folder with a Maps.json in it, with matching capitalization?

cyan jungle
#

@uncut viper i added the format part and now my whole custom map disappeared ;-;

uncut viper
#

If the previous json is your Maps.json, then do not add the Format part, as said

#

Format is only for content.json

uncut viper
#

an Include file does not use Format

cyan jungle
#

oh okay so i'll remove the format

#

but the patch hasn't been working

uncut viper
#

Which patch specifically?

cyan jungle
#

this is how my mod is organized, if that helps. the first log i sent was the Data/Maps json

#

I'm trying to get the FallPatch.tmx to patch my original custom map ForestGarden

uncut viper
#

By ForestGarden do you mean your EditMap patch on line 32 in the original json you sent?

#

Or is there another custom location called ForestGarden

uncut viper
#

Then your seasonal patches are targeting the incorrect thing

#

You have your Targets set to Maps/Forest/ForestGarden

#

It should just be Maps/Forest like your original EditMap overlay

cyan jungle
#

huh! i'll try removing that and see if it works

#

wait but

#

i tried that before. i had it as maps/forest and it wasnt showing up

uncut viper
#

(sorry your original Replace not overlay)

#

Well Maps/Forest/ForestGarden is not a thing that exists

#

So it can only be an improvement towards finding out the actual issue to fix it to say Maps/Forest

cyan jungle
#

okie ill try it rn. so do i just change Maps/Forest/ForestGarden to Maps/Forest?

uncut viper
#

Correct, just like your original patch that added your forestgarden.tmx to the forest in the first place

#

You're still editing the same map

cyan jungle
#

and i should keep it as overlay or should i change it to replace?

uncut viper
#

That depends on whats in your .tmx and what you intend your patch to do specifically so I can't answer that

cyan jungle
#

ill try overlay

uncut viper
#

If you're unsure you can reread what each mode does on the CP docs or just try them all one by one if you want

cyan jungle
#

@uncut viper okay so now the FallPatch worked but instead of patching it based on the season it's just like- permanently set as that. i did overlay btw

uncut viper
#

If you're changing time with CJB Cheats or something, you need to sleep.

cyan jungle
#

oh, awesome! i tried that and it worked. thank you!

uncut viper
#

Content Patcher patches by default will only ever update when a new day starts, so that goes for all patches, not just your map edits

#

Which for seasonal edits is good enough

wanton pine
fierce vault
#

Hey, you can cheat mail flags as seen relatively easily right?

#

It would be a debug thing probably, ive just never used the command

proven spindle
#

debug broadcastmail mailflag_id_here

fierce vault
#

thanks

#

just to be sure, debug broadcastmail parcy.jack__hatGiven would be the correct format, right?

#

also realized while doing this that my mail flag has a double underscore lol. Too late to change that now

proven spindle
#

Yep to the format

#

You actually could change all instances of that in vs code by opening the mod folder in it and doing find and replace all

#

(I assume notepad++ has a similar feature but don't know for sure)

uncut viper
#

I assume it's because Parcy's mod is already released and players already have the other flag

fierce vault
#

yup

proven spindle
#

Ah fair enough

uncut viper
#

But you could also just set up a trigger action to send everyone the new flag if they have the old

#

CP might have a migrate mail flag trigger action already

fierce vault
#

assuming I did fix the flag correctly in 1.0.2

fierce vault
#

Thanks. I don't think it would be worth it for that though. The double underscore is fine if changing it means more work πŸ˜…

#

I looked into all this btw to warn a commenter who might want to skip his last event on replaying the mod lol

#

I was not able to conditionally give the player jack's hat upon skipping the event unfortunately. It may be possible, but it was too complex for me to accomplish

#

at least when I was working on it anway

proven spindle
#

Is it sent via mail command in the event? You can put the mail command before the skippable command

fierce vault
#

so, this is kind of weird, but I've had issues using setSkipActions

#

putting that aside though

proven spindle
#

I meant without sstskipactions

#

Skippable commmand doesn't habe to be at the start of the event, you can put regular event cmds before it

#

The skippable command can be placed at any point during the event script

fierce vault
#

I would need to still use some kind of check that does not get ignored like setSkipActions so that the game still checks if the player has the right heart amount. I'm guessing I'd do that with more DTs?

#

I haven't deeply thought this thru yet

#

It would be related to the skip actions I think

#

Oh

#

I could maybe make that whole thing a conditional DT

proven spindle
#

(Not at my computer so I can't see what your script looks like atm) so an event could look something like

"eventid/t 1000 1400/f Penny 2000": "jaunty/20 30/Penny 10 20 1 farmer 11 20 1/action addconversationtopic ct_name 3/action addmail mail_here/skippable/fade/..."

Then the mail gets sent before the player has the option to skip it

fierce vault
#

right

#

so, this made me think

#

I have action AddMail Host {{ModID}}__hatGiven received

#

and I could add a setSkipActions to that

#

and then

#

I could put all that inside a DT that I use in the event

#

and I could make the DT conditional based on the heart level

#

so players below the requirement would not get any hat

#

would that work?

barren tapir
#

Managed to get the eyes at least somewhat functional via temporary animated sprites

fierce vault
#

Ooo

barren tapir
#

Now, I need to figure out how to make them not temporary πŸ˜…

wanton pine
#

are mail keys and mail flags the same thing?

proven spindle
#

The DT should work

fierce vault
fierce vault
#

the flags register the mail has been received

golden spire
#

depends what you mean by "mail keys"

proven spindle
#

Depends on the cobtext, mail key as in 'key value pair' (which is the structure jsons use) is the same as a mail flag

fierce vault
#

Oh, ok

wanton pine
uncut viper
#

There are contextual differences but colloquially people use them to mean the same thing. But I wouldnt

#

To me, "mail key" implies an entry in Data/mail, since that is indeed a key value pair

#

A mail flag is just a single string

#

(which would be identical to the key in Data/mail if it exists there, but does not need to exist there in key form)

proven spindle
#

I18ns use key value pair structure too, so key in both contexts actually refers to the same part of the structure lol

uncut viper
#

All json is key value pairs

#

But not all i18n is mail

golden spire
#

why does jason need so many keys... ?

wanton pine
#

So the "{{ModId}}_MailName" is the mail frame?

proven spindle
#

Cuz it opens lots of doors SDVdustykek

wanton pine
#

*flag

proven spindle
#

Yep

void aspen
#

I never asked myself before

uncut viper
#

If you're only using CP, a TAS is a Temporary Animated Sprite and it's only available to you in Events (or possibly some other times if frameworks are involved)

void aspen
#

hm

wanton pine
fierce vault
#

Hey, related to topic of setSkipActions earlier... is there any reason why this never worked? setSkipActions SetNpcVisible {{ModID}}_Jack

#

I checked my event, and I apparently have scrapped it from there entirely, but I had it written down in a note as not working next to my trigger action

#

Jack would not show up with this which is why I had to put a trigger action in place

wanton pine
#

Which - how do you arrange that field? : { "MailFlag", "MailFlag" }, ?

uncut viper
#

It's a list of strings. So,

"AddMailOnBuild": [
  "StringOne",
  "StringTwo",
  "etc"
]
barren tapir
# uncut viper If you're only using CP, a TAS is a Temporary Animated Sprite and it's only avai...

Random question, is there something special a C# mod needs to do to change the text shown when reading a book? Bc I've tried several things to try and change that message via the special powers utility mod, but nothing seems to work πŸ˜…

I currently have the following when creating books:

Dictionary<string, string> customFields = new Dictionary<string, string>
{
    ["Spiderbuttons.SpecialPowerUtilities/Books/Messages"] = Translation.Get($"{book}.Book.Message")
};
wanton pine
uncut viper
#

List = [ ]
Object/Model/Data Model = { }
πŸ™‚β€β†•οΈ

#

List of Objects: [ { stuff goes here } ]

uncut viper
barren tapir
#

OMG, I feel like an idiot. Thank you!

uncut viper
#

(partially my fault for mixing singulars and plurals in that key there. Special Power Utilities was my second real mod ever and my first framework and there's a lot i would do differently if i remade it today)

#

alas, backwards compatibility

barren tapir
#

IT WORKS!

uncut viper
#

If you're doin that in the C# remember to invalidate the asset when the locale changes SDVpufferthumbsup

barren tapir
#

I think I'm doing that already? I hope so at least

uncut viper
#

If you're invalidating Data/Objects whenever you detect a language change then that's good enough

barren tapir
#

Dammit. Misunderstood what you meant there then. How do I do that SDVpuffersquee

uncut viper
#

one of the events you can subscribe to (like AssetRequested) is one for detecting the locale changing

#

Don't remember which category it's in though

#

There are honestly good odds that a different CP mod in a players mod list is already going to be causing CP to invalidate Data/Objects when that happens, but yknow.

barren tapir
#

I'll add it to the docket!

#

BTW, does anyone know what function(s) in SVE spawn a bunch of monsters at night when you activate a certain shrine?

#

I plan on digging through SVEs code after dinner, but I'd be more than happy with any leads!

uncut viper
#

I don't know what it does, but if I were SVE, I would just set Game1.spawnMonstersAtNight

#

Unless you mean it spawns them right then and there when you hit the shrine

#

In which case I have no idea

barren tapir
#

It makes a bunch of monsters spawn every night throught the town every 10 minutes

uncut viper
#

Oh, in town? No idea then. Probably just a custom TimeChanged thing.

#

SVE is open source I think but you can also open its dll in ILSpy and try searching for wherever a Monster is initialized

barren tapir
#

OMG, I just accidentally got the CC cutscene after randomly walking around in my testing save...

... Its Day 16 of Spring, YEAR 4

barren tapir
#

I need to make a mod that makes it easier to trigger that scene. I feel like a not insignificant number of my saves required me to look up how to trigger it

signal nova
#

For

"Action": "EditData",
"Target": "Data/Powers",

Can I have the "UnlockedCondition": be a purchase from a shop NPC?

uncut viper
#

If you set the shop entry in the shop in question to do an ActionOnPurchase to set a mail flag, you can use that mail flag as the UnlockedCondition for your Data/Powers edit

signal nova
#

Also, is it possible to detect if a player has a power, and if so, it increases the sell price of either given items or items from a specific tag?

lucid iron
#

a power is intrinsically something with a Condition

#

so checking that Condition would be same thing

signal nova
#

Yes, I'm asking: how would I check the condition?

#

Has_power ?

#

or something?

lucid iron
#

ah u mean in content patcher land?

signal nova
#

Yessir

lucid iron
#

if its a mail then HasFlag is the when condition

signal nova
#

I'm not asking about the mail, I'm asking about a power made using Data/Powers

lucid iron
#

yea and im saying powers are thin wrappers around a condition Dokkan

#

so for example skull key power in vanilla has "UnlockedCondition": "PLAYER_HAS_MAIL Host HasSkullKey",

#

checking for the skull key power = checking for the mail HasSkullKey

signal nova
#

I get it now

#

Huh, okay

lucid iron
#

they exist mostly for having pretty icons Bolb

signal nova
#

How would I go with increasing the base price of any given items, though?

lucid iron
#

they dont rly do anything themselves

#

well u might do something like

#

mailflag vortz.priceup

#

and then u do a HasFlag editdata Data/Objects

#

increase price there

#

then make a power conditioned on PLAYER_HAS_MAIL Current vortz.priceup so u can show a +money icon to the player

signal nova
#

Yes, I see that

#

I'm wondering HOW to increase the price

lucid iron
#

Data/Objects has the price info, which u can edit

#

watch out for "data change wont increase price of existing items"

uncut viper
signal nova
#

I'm willing to use frameworks

lucid iron
#

well i dont rly think its relevant to what u wish to do Bolb

signal nova
lucid iron
#

C# stuff

signal nova
#

I want a similar power that increases sale price of other items

#

I was using SVE's code as reference and I don't see that they have any C# code unless I'm blind

lucid iron
#

what u can do is, do the data edit first, then use BETAS to update the price of all instances of that object

signal nova
#

But they managed to somehow achieve the price increase

uncut viper
#

(if you control both the power and the prices then yeah the frameworks for checking the unlock more precisely is unnecessary)

signal nova
#

Can't find where though πŸ˜‚

lucid iron
#

SVE has a whole ass C# component

signal nova
#

Where?

lucid iron
#

its the .dll

#

thats compiled C#

signal nova
#

Ahh makes sense

uncut viper
#

Tons of SVE is controlled via C#

signal nova
#

Cool, cool

#

I'm trying to make my mod as a hybrid of CP and C#

#

So I don't mind using C#

#

CP is just the lazy and easy way

uncut viper
#

(to be clear by borrow chu means use BETAS as a dependency here, not actually take my C# code and put it in your own mod)

lucid iron
#

i'd tackle this in this order

  1. setup the mail + data edit conditioned on mail
  2. check that this works for newly spawned objects of what you changed
  3. setup the trigger action so that u can update old objects
signal nova
#

Though, I'm not familiar how powers work in multiplayer

#

If 1 player obtains the skull key, does everyone else get it?

lucid iron
#

if u r invested in only one player then i'd skip step 3 Bolb

#

in that case, items newly generated by the player who has the power would get the price increase

signal nova
#

Is that possible to do?

lucid iron
#

yea thats one of the powers of content patcher

#

the EditData action can do this

signal nova
#

Okay, thank you

#

Though, I know I can override a value

#

Can I directly apply some multiplier to the price value?

lucid iron
#

nop

signal nova
#

Only C#?

lucid iron
#

im not aware of any existing C# frameworks which does this so yea prob just gotta roll your own

#

remember frameworks are just someone else's C# Dokkan

signal nova
#

πŸ˜‚

lucid iron
#

i feel like someone was making something tho...

#

but i forgor who so that someone might as well be you AnnelieStare

#

item prices framework

brittle pasture
#

I think it was @barren tapir who's working on a global condition-based price modifiers mod

barren tapir
#

Yes! It's one of my many mods I'll get to one day (tm)

#

In my defense, I'm concurrently working on several different mods πŸ˜…

#

-# It's been so long since I played SV

void aspen
#

I haven't done anything in a while and not sure I will for some time

#

:(

wanton pine
brittle pasture
#

hats are (H) not (O)

#

you also need the qualifier in your shop entries because they default to (O)jects if not specified

wanton pine
#

ugh

wanton pine
brittle pasture
#

and ItemId

#

Id doesn't actually matter but it doesn't hurt making them match

uncut viper
#

(the Id field does nothing but identify that shop entry)

wanton pine
#

do I need to add the (H)at to the data/hats entries too?

#

I'm assuming not

brave fable
#

all entries in Data/Hats are being created as hats. you need to add the prefix when referencing item IDs in contexts that are ambiguous and may or may not be hats

brittle pasture
#

like how you shouldn't add (O) in the keys of Data/Objects

wanton pine
#

Righton.

#

Well, this was indeed what was causeing the problems. Ty!

hard fern
#

How much mental and physical damage will i take from even thinking of trying to add a turn based combat grid into the game

#

It's not fair sebastian is the only one who gets to play games

brittle pasture
#

definitely sounds like a ton of C#

hard fern
#

I can't think of any ways I'd make it without C#..

#

Oh god i would need to make a board game type map too

#

Urgh

#

Maybe i should just go back to working on the mod i initially was instead of... This isn't even scope creep this is me coming up with a completely different idea that is about 100 times larger in scale

inland rain
#

To apply Alternative Textures to immersive scarecrows and sprinklers, I spawn a copy of the thing at tile 10000,10000 then make Alternative Textures think that I clicked on that tile with the paint bucket, then after the Alternative Textures menu closes, I remove the object from 10000,10000. Somehow this works πŸ‘

uncut viper
#

Either way it's actually probably not that THAT difficult if you just make your own IMinigame. Definitely lots of C# though

#

(which is what I planned to do for my own turn based combat overhaul that I shelved a bit ago)

brittle pasture
#

(please enjoy the esoteric and inescrutable wall of text explaining how everything works)

round timber
#

i love inscrutable explanations

hard fern
# uncut viper Do you mean like a game you can play within the game? Like how Junimo Kart and P...

A secret third thing, it's separate from the arcade machines or the combat itself. I had a (maybe bad) idea to recreate a game inside stardew just for fun, and the combat system in that game uses a grid for its combat. I haven't really figured out how any of this would work, even in the slightest outside of the non-combat elements, but the basic idea would be you press a button (or a map tile) and it brings you to the battle map.

I guess a minigame would work for this? Where you'd have something akin to chess pieces on the grid, and be able to move them around and use skills

uncut viper
#

That is exactly how Junimo Kart and Prairie King work

#

So it is the secret first thing /lh

hard fern
#

XD

#

I guess it doesn't actually have to be an arcade machine to function like one

uncut viper
#

an IMinigame class is very very DIY for better or for worse. You basically control everything that happens on the screen however you want

#

That does mean you would have to essentially make the whole game yourself, but it also means that you can just... make the whole game yourself largely the same as you would if you weren't doing it in stardew, except for the actual methods you use to draw and load textures

hard fern
#

I also would be concerned about how saving would work, since in the game it's possible to save mid-battle.

Outside battle, the player would be "in the game world" and the game wouldn't progress unless the player specifically advanced to the next section, (basically a safe zone)

uncut viper
#

"very very DIY for better or for worse"
How saving works depends on how you make it work SDVpufferthumbsup

#

You can do ~anything~

hard fern
#

SDVpuffersweats hm, scary..

#

Well, I don't exactly plan on working on this massive project right now, but it's good to at least know "cursed diy minigame" will be what i need to look at

uncut viper
#

I made an entire NES emulator in an IMinigame for a mod so I wouldn't worry about limitations here, as long as you know C# to do it to begin with

hard fern
#

I'll have to learn how to C# from scratch haha

uncut viper
#

Which is much easier when there is an end foal to be motivated for SDVpufferparty