#making-mods-general

1 messages · Page 434 of 1

latent mauve
#

I remember 3-high wall paintings not working right/requiring a custom offset sometimes.

shut edge
#

i don't think so, i've tried a few

#

this map i did before, that left side does work

#

so maaaybe building layer stuff is invovled but so far no dice

latent mauve
#

only other thing I could think of is that maybe you accidentally have a tile on a layer over where the painting would show up, yeah

#

The wiki does call out wall furniture here

#

You can enable Wallpaper, Flooring, and wall furniture (windows, paintings) in decoratable locations like farmhouses, cabins, or sheds by adding these map and tile properties. The location must have or be subclass of StardewValley.Locations.DecoratableLocation

#

right before the wall and floor ID sections

shut edge
#

i did that, i think

#

"CreateOnLoad": {
"Type": "StardewValley.Locations.DecoratableLocation",
"AlwaysActive": true

latent mauve
#

so may be worth temporarily replacing your not-working wall with something from a walls_and_floors sheet just in case?

#

just to try

shut edge
#

that's a good idea

latent mauve
#

might as well rule it out if you can!

shut edge
#

does patch reload put in map changes or do i need to do a fresh load of the game?

urban patrol
#

patch reload does but you may need to exit and re-enter the location

latent mauve
#

I've personally had to reload the game to see changes before, especially with map properties involved, but others have sworn you can just patch reload.

shut edge
#

yeah it feels hit or miss with that kind of thing

latent mauve
#

I don't know what makes it work or not, so I reload just in case because I know that works as intended.

urban patrol
#

yeah like i know for a fact light and day/night tiles require exiting and re-entering

latent mauve
#

just going back to title and back into the save after patch reload is usually sufficient, no need for a new save

shut edge
#

yeah gonna do that now. changing rooms didn't work, nor did making a new PIF door

#

one or both of the things i did this time...should....work

lime maple
#

can I dynamically add a Flag through an Action/Trigger?

#

HasFlag is the best way for me to check if a player has ever purchased a stardrop seed and disable it

urban patrol
#

yeah, just set up a trigger action to send mail but make sure the mail ID doesn't actually exist in Data/Mail

#

just make sure you can have a GSQ for having purchased the seed

shut edge
#

note to self: hiding a layer when you save doesn't actually save it without that layer

slow basin
#

guh

latent mauve
#

Also if you're intending to have it purchaseable from a particular shop and disabled there, you could set it as an ActionsOnPurchase action for the shop item?

urban patrol
#

also, if you're worried about this being a super rare once-in-a-lifetime crop and need to consider interactions with other mods, take it from me, the person who accidentally made people billionaires with their flower: ask players about mods that add random seeds etc (like MES, for example)

slow basin
#

things i need to do today

  • fix content folder for first 20 items
  • add in 20 more items
  • look into sending mail to player (i think i need an additional mod dependancy for this right)
  • set up practice pedastel in museum
latent mauve
#

Really just depends on the use-case for the block/flag once the seed is purchased once

urban patrol
#

yeah i was assuming it was for the "only available once during a save" feature

slow basin
#

i wish i could just poof my mod into existence like a piece of furniture in the sims

latent mauve
slow basin
#

OO

#

it mostly just needs to explain that you CAN donate cards to the collection and thats it

latent mauve
#

You can edit the Data/Mail asset to add new letters, and then use trigger actions to send them.

slow basin
#

Awesome!

shut edge
#

my toast mod sends a bunch of conditional mails using only cp

#

if you want an example

slow basin
#

Oo ok id love to look at it :0 is your user the same on nexus?

shut edge
#

here, mail should be towards the bottom

slow basin
#

awesome sauce!

shut edge
#

8(

#

it is also somehow ignoring my Passable F blocks

#

walls are confusing it seems

urban patrol
#

wait if i recall correctly the way Passable works is that it's passable no matter what you put, F or T

shut edge
#

lol, that'd be why

urban patrol
#

what layer, and are you intending it to be impassable?

shut edge
#

these collumns, yeah

latent mauve
#

Passable changes its behavior based on the layer its on

shut edge
#

i did it on building objects

urban patrol
shut edge
#

oh weird ok

latent mauve
#

Tiles on Building are impassable by default, so putting Passable on them makes them passable

shut edge
#

that makes sense but i dunno

#

why would it not just be a true or false anywhere lol

latent mauve
#

There's a few properties that work like that.

urban patrol
#

that's what the little superscript 2 means on the wiki

shut edge
#

ahh

#

this is the stuff i have to relearn every time i make a map i swear

latent mauve
#

it's under the table, but it's there

shut edge
#

so i know the wall tile propery block has to be the top piece of a wall yea

latent mauve
#

yep

shut edge
#

do i need to specifically also make a z_walls for this or should this be working?

latent mauve
#

as long as your tile there is from something with walls_and_floors, then it should be working for that particular test.

shut edge
#

ok

latent mauve
#

What is your furniture placement property, in the furniture data?

shut edge
#

the furniture i've been trying to use is just vanilla stuff

latent mauve
#

placement restriction, that was the phrase

#

ok

shut edge
#

i just...cannot wall

slow basin
#

omg i found out what hapepned to my cards :L
i skipped like 11 of them on accident so I have more to make now actually

shut edge
#

would it be mad that i have the animated fans there on the front layer?

latent mauve
#

not if the fans aren't hitting your painting's bounding box

lime maple
#

I'm baffled that Vanilla doesn't have the action PlaySound, I had to use spaceCore

latent mauve
#

It's not something silly like your map having the Outdoors property and the vanilla paintings being Indoor furniture only, right?

shut edge
#

it might be something like that

#

maybe i need an outdoors false?

latent mauve
#

Outdoors is another one where if the property exists, your map is outdoors, so as long as you don't have that property, it's an Indoor map..

shut edge
#

hm can build here is an outdoor location thing

latent mauve
#

IsFarm may also be forcing outdoors treatment

shut edge
#

alright, i'll try

latent mauve
#

and IsGreenhouse is yet another subscript 2

shut edge
#

looks like i have all those same ones on my other one that did let me place stuff....shrug

latent mauve
#

You don't have any other tile properties there, right?

shut edge
#

like overlapping ones?

latent mauve
#

yes

shut edge
#

the passable and column walls are currently

uncut viper
shut edge
#

i should say specifically the error ingame is that it "must be placed on a wall"

latent mauve
#

this is how my bathroom is set up, if it helps at all?

#

(should also answer your fan question, as I also have a fan on Front and it does not care in the slightest about it, the wall replaces under it just fine)

#

I've been able to put paintings on that wall just fine

slow basin
shut edge
#

yeah that's what i would expect it to do

shut edge
#

so i dunno what my prob is

#

would you be willing to look at my file?

latent mauve
#

however, my wallpaper is on the BACK layer, except for the bottom most part of the wall.

#

Opened it up to try to compare to yours

shut edge
#

i have been playing around with that and so far they aren't behaving differently

#

hm does that work?

#

guess so

#

if anyone cares to poke at that for issues, go for it

#

it's kind of in a state of disrepair anyway graphically until i figure this out

latent mauve
#

all the walls except for Front4 work, or are they all broken?

shut edge
#

nothin works

#

4 was just where i was trying things at the moment

latent mauve
#

so, something interesting... if I patch export the fishfactory file once it's in game, the Tile Properties are completely lost for the wall and floor IDs

shut edge
#

well that's suspicious

#

would explain the issue. but what the hell would cause that

#

i'm gonna try another thing in a few here, maybe that'll help

#

thanks for peekin at it

#

ok no that didn't do it either, hm

#

what was the command you used to patch export?

#

wanna see something on my end

latent mauve
#

patch export and then whatever you loaded your map to as a Target

#

so for me, that was patch export Maps/fishfactory

shut edge
#

yeah i'm having trouble tracking down where it's at i guess then

latent mauve
#

It'd also be whatever your MapPath was in the Data/Locations edit?

shut edge
#

PIF does things a bit different maybe

latent mauve
#

probably, I'm trying it outside PIF for now, because if it doesn't work outside PIF, it won't work in there either

shut edge
#

makes sense

latent mauve
#

well

shut edge
#

interesting

latent mauve
#

I dropped floor and Wall IDs down to just one value

#

and renamed it so it wasn't Front4

#

and it works

#

It's FishFactoryFront4 now

shut edge
#

weird. i was using one value previously...

#

hah

latent mauve
#

I think there might have been a bad character somewhere in there, because as soon as I recreated the string properties, it was fine with the single entry

shut edge
#

that is possible

#

that or it like...demands floor tiles too?

#

i'll remake em and see if i get new results

latent mauve
#

Well, I made the floor first to check that

shut edge
#

thank you

latent mauve
#

and the floor worked immediately but the walls still didn't until I recreated it

shut edge
#

odd

#

maybe i did type something wrong then, or there's a stray space or somethin

latent mauve
#

I do tend to put my ModID or an abbreviation in front of the wall/floor IDs when I make my maps, not sure if that's necessary or had any impact

shut edge
#

i would imagine? no but that's probably wise anyway

latent mauve
#

I can add back the other wall IDs to see if they all fix this way.

#

just to make sure it's not something that happened when multiple were introduced

shut edge
#

ok, i'll try putting them all in as just wall on my end

latent mauve
#

...

#

I found your issue

shut edge
#

oh boy it's embarrasing isn't it

latent mauve
#

Go to every single one of your TileData objects

#

and add TileData to the Name field

shut edge
#

lol

#

of course

latent mauve
#

I did that instinctually when I recreated them, so of course mine worked. xD

shut edge
#

aaaaaaa

#

thank you

latent mauve
#

"I don't know what's different about mi--- oh."

shut edge
#

yeah that has to be in, my joja storage has the same thing

latent mauve
#

that will fix your issue

shut edge
#

i wonder if i can feature request a warning about that for the tiled addon lol

#

thanks again

latent mauve
#

of course!

#

Hopefully that solves everything on your end as well xD

shut edge
#

sorry i wasted so much of your/the channel's time haha

#

mod in a little bit, hopefully

latent mauve
#

hahaha

shut edge
#

although it was still not letting me build in there, hm

#

might be the same problem tbh

latent mauve
#

proof of fan behavior

shut edge
#

hah

#

i doubt there's a terribly elegant solution for that?

#

like i could just make smaller wall TileData

latent mauve
#

Not putting the fan on Front

shut edge
#

ah

#

well since this was the issue, building1 layer was not

latent mauve
#

The wallpaper will try to fill in the Back layer where possible, so unless you force a column or pillar in front of that section of wall where the fan is, it will be included in the wall area for that wallID.

#

You could also intentionally put a non wall_and_floor tile on that column in particular, which just wouldn't be replaceable with the wallpapers.

shut edge
#

hm

#

maybe it'll be a while before that release then after all, i'll ahve to mess with this

#

on track now tho so thanks again

latent mauve
#

A spot marked with WallID TileData objects that isn't actually using a tile from walls_and_floors will "take" a wallpaper but won't actually change the tile visually.

#

Meaning you can consume a wallpaper on it but nothing will happen.

shut edge
#

so what will happen if i have the fans and vents and levers on the building layers and the back layer gets wallpapered?

#

will they just still be there with their grey tiles and all

#

i suppose i could make transparent versions

lucid iron
shut edge
#

they weren't, cuz i forgot to add TileData

lucid iron
#

When i wanted a wall that could take paintings but not wallpaper I had to hide the wallpaperable layer underneath

#

And put the actual tiles on Buildings1

shut edge
#

hmm

#

might end up doing that then, i'll experiment a little

latent mauve
#

I'm trying a trick

#

The column is on Buildings

#

and the grey wall is on the same layer as the wallpaper

shut edge
#

i suppose if i put the vents and levers on back, they would get overwritten by wallpaper

#

complex stuff kinda

latent mauve
#

Back1 would draw over the wallpaper still.

lucid iron
#

Fun times

shut edge
#

would vents on back1 make sense?

#

cuz i could just use building for the sides and non-passable blocks for the wall collision

#

er, fans on back 1 rather

latent mauve
#

I also removed all your Passable tiledata and turned them into invisible tiles on the Buildings layer for my file testing, LOL

#

the classic method

shut edge
#

nice

#

was not totally sure that worked

latent mauve
#

yep, works just fine

shut edge
#

like just any blank tile or does it need something more specific?

#

as long as you "paint" it in anyway

latent mauve
#

any blank tile works, I used the tile on the first row and 4th column on the bathhouse_tiles sheet since it was right there.

#

the important thing is that it's a "solid" tile but you can't visually see it so it won't interrupt your wall's look

shut edge
#

right

#

that's cool

#

so i'm thinkin i put all the standard wall and details on back, so it can be totally replaced by players if they want

#

then the vents on building 1 so they stay on top of any changes?

#

or do i want them under wall decor, hm

latent mauve
#

Back1 would keep them under paintings and such.

#

But it would make sense for the pipes and vents to not be replaceable

#

and not be able to have paintings over them

shut edge
#

true

latent mauve
#

easiest way is probably to make transparent versions of your pipes and vents if you don't have them, and put them all on front.

#

that way the wallpaper can be swapped out, but the 'functional' parts of the fish factory are left in place.

shut edge
#

right, right

#

makes sense

latent mauve
#

you would still be able to put paintings UNDER them, but you could always put them on Buildings instead (or block it with invis tiles) to try to avoid that?

#

or just use the "NoFurniture" tiledata on the back layer where those pieces are

shut edge
#

well at that point that's just player choice i think

#

as long as it makes some degree of sense

#

do we still need to do the z_ stuff or does that get handled now?

latent mauve
#

It will try to automatically prepend the names, but I do it myself anyway to be safe.

shut edge
#

ok

#

prob take a break and come back and fix these up later and release yet tonight hopefully

#

then go fix up my joja warehouse lol

wheat sundial
#

guys how do i strike things out

shut edge
#

pitch well

wheat sundial
#

the line inbetween it all

#

?

#

chat dies as soon as a talk

#

good stuff

shut edge
#

just jokin

lucid iron
#

like this u mean?

wheat sundial
lucid iron
#

~~ around the txt

wheat sundial
#

ok

#

,',|,'_'

#

now i can do that

shut edge
#

lol

latent mauve
#

sorry, I went to go see about food once I figured out cryo's issue xD

lime maple
#

is there a way to perform actions when people harvest a crop? the same way players trigger actions we purchase items

#

something like ActionsOnHarvest

urban patrol
#

i think that requires C#, unless button added it to BETAS. let me check

brittle pasture
#

it is in betas

urban patrol
#

it's one of the new ones i think

lucid iron
#

I think what you don't have access to is the crop position

urban patrol
#

yeah you only have item and location

brittle pasture
#

if you do need crop/position for whatever nefarious reasons (though I assume applications outside of C# or extremely specialized triggers are limited) you can use Machine Terrain Framework’s version of the trigger

wheat sundial
#

thought of a funny mod idea

#

replace the desert bus with asgore's truck

lime maple
#

what on Earth is Button?

#

is like the beta for next version or smapi?

#

Oh, it is a mod

brittle pasture
#

Button is the author

oblique meadow
#

Button should make a mod where you press a button and it gives you in game buttons

#

Call it “Button’s button button”

urban patrol
#

the sequel to button's bebber bobbers

lucid mulch
#

I kinda unironically would like a Buttons Button mod that added an ingame button in the qi nut room that opened GMCM config or something 4th wall like that

vernal crest
#

Erm, how? If I pick up something at one end of my museum and want to put it at the other end, I have to scroll to get it there.

uncut viper
uncut viper
uncut viper
vernal crest
#

I know you can, I was using it for rearrange, not donate. But I also didn't know if Candy was planning on doing a "this is definitely two separate museums despite being the same museum" or "this is the same museum across two 'floors'" thing and my point still stands for the latter.

uncut viper
#

if its across two "floors" and the floors are actually 1000 tiles apart in Tiled so the second floor was far to the right, then you would not need to scroll all the way from 0 to 1000 to rearrange something on the right side

vernal crest
#

I am still not understanding how. I can't do anything once I've picked my thing up except put it back down again.

#

I am meaning if I have picked something up on the left side that I want to put on the right side.

#

Not if I want to rearrange things only within their respective areas

uncut viper
#

if they are made to look like two different maps though that idea shouldnt even pop into a players mind, though

#

if you have to warp to the "other floor" and it looksl ike you're actually going to another map, then you wouldnt think you could scroll back to the original one

vernal crest
#

Yes but that doesn't negate the fact that it happens which is all I was trying to inform Candy about

vital lotus
#

@uncut viper ,
Is this particular patch could be a cause of freeze up when dialogue box opened?

            "Action": "EditData",
            "Target": "Data/TriggerActions",
            "Entries": {
                "{{ModId}}_HideInfoBox": {
                    "Id": "{{ModId}}_HideInfoBox",
                    "Trigger": "Spiderbuttons.BETAS_DialogueOpened",
                    "Condition": "!Spiderbuttons.BETAS_ITEM_MOD_DATA_RANGE Target BETAS/DialogueOpened/Friendship 1",
                    "MarkActionApplied": false,
                    "Actions": [
                        "AddMail Current {{ModId}}_HideInfoBox received",
                        "Spiderbuttons.BETAS_PatchUpdate {{ModId}}"
                    ]
                },
                "{{ModId}}_ShowInfoBox": {
                    "Id": "{{ModId}}_ShowInfoBox",
                    "Trigger": "Spiderbuttons.BETAS_DialogueOpened",
                    "Condition": "Spiderbuttons.BETAS_ITEM_MOD_DATA_RANGE Target BETAS/DialogueOpened/Friendship 1",
                    "MarkActionApplied": false,
                    "Actions": [
                        "RemoveMail Current {{ModId}}_HideInfoBox all",
                        "Spiderbuttons.BETAS_PatchUpdate {{ModId}}"
                    ]
                }
            },
            "When": {
                "HasMod": "Spiderbuttons.BETAS",
                "InfoBox_HideForNonSocialNPCs": true
            }
        },```
uncut viper
#

i have no idea but im assuming from you asking me that it does? nothing immediately pops out at me besides maybe just some weirdness with patch updating from an asset that would be updated from it, i guess

#

thats a complete guess though

#

also depending on when exactly friendship is added via social interaction these Conditions may not work as expected

vital lotus
#

There's report of a freeze when opening dialogue box but it didn't happen on my end (maybe I'm just used to slight load time). Is it problematic that this patch is part of the patchupdate or wouldn't it be an issue?

slow basin
#

when adding a warp to a new map im supposed to put the location name in as GummiGecko.Cardshop_(Mapname) right in the tiledata

#

just checking its been a long time since i messed with maps

vital lotus
tiny zealot
uncut viper
#

is it something that requires the patch update to function? if it doesnt freeze for you and you're not able to recreate it then i wouldnt even be 100% sure its your mods fault in the first place

#

would need a log and reproducible steps

slow basin
#

allright will do! o7

#

thank u ichor

shut edge
#

back to the fish factory

#

somehow walls are STILL giving me some shit

#

floors and building are mostly working, although the floor ate the flooring without changing graphics, hmm

drowsy pewter
#

I wish I had a huge inheritance so I could just make mods all day

shut edge
#

mood

drowsy pewter
#

I have so much I want to work on

inland rain
craggy nest
#

holy guacamole harmony is the devils work

quick sand
#

Hello guys. 👋
I'm making a custom food item in CP/json. Is there a way to make the item not consumed when I eat it or maybe to execute a player_add when it's eaten?

craggy nest
#

I got all my code tidied up, and nothing ran. set up a brand new postfix, with the exact same layout and syntax as the original, with a warning log to alert me if it ran- log works. copy-paste the old code into the new postfix (which is identical to the old one), everything works. WHY

craggy nest
uncut viper
#

but there may be a small moment of them not having the item before the trigger action happens

#

or alternatively there may be a small moment of them having 2 of them

inland rain
craggy nest
#

regardless we so back

tiny zealot
#

what if you gave the food a buff (of your own making) and gave the buff an ActionsOnApply

brave fable
uncut viper
#

i always forget buffs can run trigger actions

#

that would also work though there'd be a bigger gap of no-item i think

#

not the most important but can have some minor consequences sometimes

tiny zealot
#

same timing problems, of course

uncut viper
#

but less dependency SDVpufferthumbsup

shut edge
#

eat the food, buff duration, then it pops back out of you

tiny zealot
#

sadly i don't think there's an ActionsOnExpire SDVpuffersquee

uncut viper
#

unfortunately there is no ActionsOnBuffRanOut

shut edge
#

dang

uncut viper
#

also thatd be a much longer period of time without the item

#

during which the player may fill their inventory

brittle pasture
#

but yes, if the players fill inventory from all the sap and bat wings then well

tiny zealot
#

a wild dependency appears

shut edge
#

is there a video or something for doing wall and floor IDs in tiled? i must still be missing something

craggy nest
#

So actual advice time:

#

Let's say you've got an old mod, it's garbage, you want to supersede it with something new entirely. What's the best way to update the old mod's mod page and mod update keys to point to the new thing?

uncut viper
#

well the update keys wouldnt change

#

unless you're making a new mod page too

brittle pasture
#

you can hide that mod page and set it to point to a new page

uncut viper
#

but you can just write whatever numbers you want in the manifest

brittle pasture
#

then you'd need a new update key yes

craggy nest
#

I was planning on a new mod page entirely, the new stuff exceeds the old in original scope to the point where the original mod name is a misnomer now

shut edge
#

i am considering doing something similar in the maybe near future

tiny zealot
#

-# farm type manager moment

craggy nest
#

literally tho

brave fable
#

there's nothing stopping you from having a Machine Terrain Framework (and Aquatic Crops - formerly Custom Tapper Framework) moment

shut edge
#

the manual way would be to just put a big link in the mod desc and slap a DEPRECIATED on the name

brave fable
#

deprecated*

shut edge
#

which has the benefit of staying there for players that want it

craggy nest
#

truly the most aesthetic of options

uncut viper
#

that said, there are some people who do still play on 1.5 who may want your old mod

shut edge
#

make an acronym mod and change what it stands for monthly

uncut viper
#

so i dont know if id recommend hiding the page completely

brave fable
#

is yours a content mod, a framework mod, or a system/feature mod?

craggy nest
#

system/feature mod, it's definitely not robust enough to call it a framework (yet)

shut edge
#

EMT: emergency medical tool. ethical midnight troutfishing. elaborate mechanical teddybear

brave fable
shut edge
#

i agree that it should be as simple as that, lol

#

it seems to disagree

#

i'm loading up with literal copied from vanilla tiledata now so if that doesn't work i suspect PIF

brave fable
#

your location does inherit from decoratablelocation, right?

shut edge
#

yeah at this point i feel it must be my json or PIF itself

#

what's the syntax for a codeblock in here again?

brave fable
#

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

shut edge
#
      "Target": "DLX.PIF/Farms",
      "Entries": {
          "{{ModID}}_FishFactory": {
          "DisplayName": "{{i18n: FishFactory.name}}",
          "DefaultArrivalTile": {            "X": 15,            "Y": 20          },
          "CanPlantHere": false,
          "ExcludeFromNpcPathfinding": true,
          "CreateOnLoad": {
            "Type": "StardewValley.Locations.DecoratableLocation",
            "AlwaysActive": true```
#

is that the correct method for doing that?

#

couldn't find much documentation on DecoratableLocation

brave fable
#

i think that should be fine

shut edge
#

it's weird tho cuz PIF is targeting it's folder...

#

so i dunno if this is doing things different or what

brave fable
#

not sure what you mean

shut edge
#

seems like PIF doesn't actually edit the usual location data

#

Note that CreateOnLoad.MapPath is being replaced by PIF.
CreateOnLoad.Type defaults to DecoratableLocation to allow for the seasonal paintings.

#

hm so it does it by default anyway

#

oh damn is it the walls_and_floors thing again after all

#

looks like i'm not the first to have this problem then

#

at least i'm not going insane (about this) (this time)

#

guess that'll be break time then lol

lime maple
#

is there a command in smapi that repairs the greenhouse?

#

nvm stardewHack helped me

slow basin
#

how would one write the patch / i18n for a piece of dialogue that i put a key in for on my map in tiled, i cant quite find the exact info i need yet

#

for more info i put in GummiGecko.CardCollector_(characterspeaks)
with character speaks being the key but im a little lost on what to do next im afraid

vernal crest
slow basin
#

ah lemme reread it

vernal crest
slow basin
#

i think i understand

#

cant test it rn because im talking to someone irl tho 😭

#

(back at comp now but friendo wants to dbd so i need to wait longer lmaoo

desert ibex
#

working on a more simplistic custom npc and i have a question... is it possible to make an npc dateable but not marriageable??? like a "oh we can go out and stuff but i dont believe in marriage" type of person... lookUp

tender bloom
#

Have you tried reject_item on marriage pendant? I have some fuzzy memories of this being possible

finite ginkgo
#

Yup that's possible with reject item

desert ibex
#

wait yay

#

thank you <333

devout otter
#

Would that work for the poly mods, too?

desert ibex
#

i wonder if it'd be possible to make the marriage pendant have the same effect as the wilted bouquet... im trying to stay in line with my oc that im turning into an npc and i just think that'd be really Really funny

vernal crest
#

I think polysweet can force marriage upon an NPC? If so, I am planning to give Hiria marriage dialogue that just says "Hiria isn't supposed to be marryable and has no content."

desert ibex
#

damn...

#

i mean i would like to give my character an item that could make him move in as a roommate similar to krobus... but not marriageable and 0 adopting or kids 💭

devout otter
devout otter
desert ibex
#

OK YAYYY ill figure out a way to make it work.. maybe i can look at krobus's files and see whats going on there

little field
tender bloom
#

Some aspects of Krobus might be a little special but the roommate stuff iirc is mostly dehardcoded

#

I think his spritesheet is a special size

little field
#

I just started modding and I think the first hard lesson I learned was that a simple missing or extra comma can break everything.

I was trying to put a letter in game and it wouldn't work and I spent like 5 hours trying to figure it out before I realized it was all because of a missing comma. sparky_snicker

Also hi hello!

finite ginkgo
slow basin
# vernal crest How did you go?

ok im able to see if i wrote ir right now, is it like this?

            "Action": "EditData",
            "Target": "Strings/StringsFromMaps",
            "Entries": {
                "{{ModId}}_Caltalk": "{{i18n: dialogue.Caltalk.hello}}"
            },
             
                "{{ModId}}_Arthurspeak": "{{i18n: dialogue.Arthurspeak.hello}}"
            },
            {
        }```

just with the 'hello' replaced with the actual dialogue i want?
vernal crest
# slow basin ok im able to see if i wrote ir right now, is it like this? ``` { "...

You have an extra few brackets there that you need to remove (the one after the Caltalk like and the { on the second to last line) but otherwise, yes. Except you don't replace the "hello" with the dialogue you want. That dialogue.Caltalk.hello is an i18n key just like the i18n in the other places in your mod. You write the dialogue that you want in the default.json file like this "dialogue.Caltalk.hello": "This is the actual dialogue!".

slow basin
#

Oh!

#

ic!

#

ty aba puffer_heart

finite ginkgo
#

@teal bridge not urgent but I noticed that the stickied posts on Star Control's mod page about the radial menu -> star control breaking update still mention Sword & Sorcery as potentially not working with Star Control without an update when we've had star control support for a while now;

If you wouldn't mind could you potentially edit the post to remove the specific mention of S&S to avoid any confusion on mod users' side (we recently had someone who was confused about it because of it is where I'm coming from)

uncut viper
#

focustense has been kind of awol for months

finite ginkgo
#

Ah, couldn't hurt to try anyways

woeful lintel
#

hoy, what's the process to use i18n in a C# mod? The goal is to allow Furniture Pack authors to provide translations for their furniture name and description, but there are still some CP style tokens to replace in the strings once the translation is applied

#

does changing language reload assets or should I reload it manually?

slow basin
#

im trying to add a simple mail to my content json and the text to my i18n and i followed the tutorial and im looking at examples but im not sure i did it quite right is it like this?

    "Action": "EditData",
    "Target": "Data/Events/Farm",

    "Entries": {
        "012344667/u 2/d Mon Wed Thu Fri Sat Sun/x CardCollector_mail_1": "null"            
    }
}```

im p sure my custom mail is written right so i wont send that/ im gonna use my nexus id once im ready to publish like it says on the wiki nw about that part btw
vernal crest
#

You should be editing Data/TriggerActions to send mail, not adding an event

#

(I want the link to the tutorial so I can fix it or make it more clear that it's deprecated)

brave fable
slow basin
#
Stardew Modding Wiki

It's really, really, really easy to send a letter in Stardew Valley thanks to Content Patcher. In fact, it's so easy it's usually just bundled into the information about events, and it's hard to find a mod that just sends mail - usually the letters are part of a mod for more dialog, events, getting recipes, new NPCs, etc. But today, we're going ...

vernal crest
slow basin
#

Imblind

#

sorry

vernal crest
#

There is a giant notice on that page saying not to do it that way

brave fable
#

actually do you even intend to have an event here, or is it just for sending mail?

slow basin
#

its just for sending a single piece of mail

#

advertising the card shop basically

vernal crest
slow basin
#

how would I do the i18n part of mail wait maybe its on the i18n thing imma check

urban patrol
#

are you aware of nomori's i18n converter?

slow basin
#

wait would it b like

#

no

#

lemme search it to find it :0

urban patrol
woeful lintel
#

Is it realistic to use the internal translation system of the game? Like, the way vanilla Furniture have a translation token in their data?

slow basin
#

i dont see an option for mail but maybe i can figure it out by seeing how this works :3

urban patrol
#

i believe you just use dialogue

slow basin
#

oh really :0

vernal crest
slow basin
#

🙂‍↕️

woeful lintel
#

Also, changing directly Furniture.Name will probably cause issues because of stuff like drawHeldObjectLow.Value = Name.ContainsIgnoreCase("tea"); in the vanilla code

#

Maybe I can just bet on the game properly using Object.LoadDisplayName

urban patrol
woeful lintel
slow basin
#

ok it said to use this as the key but should i put 'dialogue.' in front of it?
"CardCollectormail"

vernal crest
urban patrol
#

ok that's what i do as well but i wasn't sure if it was actually mandatory

slow basin
#

ooh do you edit mail data to put the title as well in the same way

#

like itll read it

vernal crest
# slow basin ok it said to use this as the key but should i put 'dialogue.' in front of it? "...

It doesn't matter. There is no required format for i18n keys, they just have to match between the i18n token in your data/mail entry and the i18n key in your default.json. Like I said in my note in your files, I just wrote your keys the way that I did because that's the format I use for my i18n keys to make them easier for me to read. You could make yours "AHHHHHAEHRWAILFJODSNGFESPFREAS" if you wanted to 🤷

vernal crest
slow basin
#

oohh

#

ok now i can test to make sure i did it all right phew

#

no red or yellow upon bootup woot

#

um

#

ok actually

#

let me test with a fresh save

#

i tested on my original testing mods save and got mail but couldnt open it lmao

#

it just poofed

#

guh it still poofed

#

but no errors yet

vernal crest
#

Did you make sure that your Data/mail entry is exactly the same as the mail ID in your Data/TriggerActions Action AddMail Current <mailID>?

#

Entry key*

slow basin
#

lemme check

#

ok i think i forgot to change the name back after undoing a mistake oops

#

oh wait i just noticed, i can put an item in the mail?

#

ooh

#

it says its supported in the text so id add it like i would the title?

#

thats so cool

#

i thought id need something else to do this

#

yippee

#

ok quick q

#

are custom items possible to send through mail

#

forgot to hit send

#

like with just content patcher

vernal crest
#

Yes

#

The game can't tell they are custom items

slow basin
#

aah ok hm

#

ill double check my syntx on it then

#

my friends keep asking me why ive launched sdv like 10 times in a minute

lucid mulch
#

Patch reload, and the i18n reload commands are your friend

slow basin
#

🙂‍↕️

#

ok

#

dang

#

i am feel not so smart rn

fossil osprey
#

You're just with people that really know how all this works, that doesn't mean you're not smart too ^^

slow basin
#

im following the mail thing to send items but i think i put it in wrong?

vernal crest
#

Pretty much everybody restarted the game to test their updates before someone told them about patch reload

vernal crest
slow basin
#

%item id (O){{ModId}}_Boosterpack 5 %%

shut edge
#

hmm, so if i want a when to match a location do i need this whole thing? DLX.PIF_MINE_cryomancer.fishfactory_FishFactory

lucid mulch
#

I restart the game to test my updates but I live in c# land

shut edge
#

"LocationName": "{{ModId}}_FishFactory" was working before...

slow basin
#

i wanna learn C# one day but im so intimidated by it lol\

vernal crest
vernal crest
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.

shut edge
#

i guess since it's PIF it's actually DLX.PIF_MINE_cryomancer.fishfactory_FishFactory_8370164760804875645_cryomancer.fishfactory_fishdoor1

#

maybe that breaks some stuff

vernal crest
#

Doesn't PIF do instancing so you can't know its actual ID in advance?

shut edge
#

i think so

#

not sure what would have changed that is making this not work now

slow basin
#

https://smapi.io/json/content-patcher/0c8f678e0dbc48f6a99c84502e503805
this is the patch and this is the i18n:
"CardCollectormail": "WELCOME TO PELICAN TOWN, now you may be wondering to yourself, 'why have i recieved this flyer?' WELL! I am here to INFORM YOU my good friend that I have created a Card Shop to display only the HOTTEST CARD GAME released by Joja funded by the Governor and collected by YOU, now, if you are so inclined I have a bit of, uh, bad luck actually getting said cards, BUT I am willing to PAY HANDSOMLY for my collection to be completed by a DELIGHTFULLY HELPFUL stranger such as yourself! To donate to the collection just go to the Bus Stop and take a short ride to my corner of the woods! CHEERS FRIENDO!%item id (O){{ModId}}_Boosterpack 5 %%[#]Mysterious Card Collector Flier"

vernal crest
slow basin
#

oh i thought that was needed

#

XD

#

and in game basically you know the no texture item im getting that when recieving the mail but when searching the item it pops up as normal in item spawner with texture

vernal crest
#

You can't have more than one format field in your mod

slow basin
#

i only have one i just cut eveything else out so it wa s easier to read the patch

vernal crest
slow basin
#

i didnt think json would read it without it

#

hmm ok

#

🙂‍↕️

#

i will double check the item id

vernal crest
slow basin
#

oo ok thanks aba

shut edge
#

yeah wtf my reskins are just not even happening anymore

#

maybe i should stop looking at this for today

#

feels like i'm doing things correctly at this point and it's just PIF bugs happening maybe

#

ehh i'll try one more thing

#

yeah no dice, tomorrow problem

slow basin
#

ugh

#

i still cant figure it out

#

i swear i have the same id :L

#

(From i18n)
"CardCollectormail": "WELCOME TO PELICAN TOWN, now you may be wondering to yourself, 'why have i recieved this flyer?' WELL! I am here to INFORM YOU my good friend that I have created a Card Shop to display only the HOTTEST CARD GAME released by Joja funded by the Governor and collected by YOU, now, if you are so inclined I have a bit of, uh, bad luck actually getting said cards, BUT I am willing to PAY HANDSOMLY for my collection to be completed by a DELIGHTFULLY HELPFUL stranger such as yourself! To donate to the collection just go to the Bus Stop and take a short ride to my corner of the woods! CHEERS FRIENDO!%item id (O){{ModId}}_Boosterpack 5 %%[#]Mysterious Card Collector Flier"

urban patrol
#

try taking the action out of i18n

gentle rose
#

you can't use tokens in i18n

vernal crest
#

Oh dear that is on me, I'm sorry Candy!

gentle rose
#

(so {{ModId}} basically)

vernal crest
#

I should've picked that up

slow basin
#

oo

#

its ok aba not your fault

gentle rose
#

fresh eyes always help, dw SDVpuffersquee

slow basin
#

ik eventually this stuff will be at least like aprtially memorized but wow i hate feeling so silly

#

ty irocendar!

vernal crest
#

You can either split your i18n up so the action isn't in i18n (so one key for the message text and a second for the letter name) or you can pass the mod id token through. In this situation I recommend splitting it up so there's no risk that translators will translate the item id

gentle rose
#

I agree with nic though, behaviour doesn't go in i18n, everything in i18n should be something that needs to be translated

slow basin
#

ty nic

vernal crest
shut edge
gentle rose
shut edge
#

this could be related to why my stuff isn't lining up right lol

slow basin
#

Rowanrowanrowancontinues

shut edge
#

yea lol

#

it's def doing (cryo) multiple times in my save so perhaps that's mangling the location data too much or such

slow basin
#

are those the names of the rooms youve been working on?

shut edge
#

nah that's someone else's screenshot

slow basin
#

aa ok

shut edge
#

mine is fish factory

slow basin
#

oo

#

i think i saw your using pif right?

shut edge
#

trying to!

slow basin
#

i need to utilize that more 🙂‍↕️

#

excited to see the finished result O_O

shut edge
#

it's a good mod, has some issues tho it seems

#

it's just a place to put a bunch of fish ponds tbh

#

thanks tho

slow basin
#

tbf that sounds useful to me for if i want my farm to be designed a certain way so i might use sometime, especially on the smaller maps, v cutieful but i like stuff lol XD

shut edge
#

yeah fish ponds bug me cuz they eat up a lot of space

slow basin
#

(also: it worked ty guys sm!!)

#

woohoo on to phase 2 of testing, making sure my maps work

#

then its phase 3 and 4 adding more cards and setting up the museum to test XD

#

maps need fixes some places but the first interior works yippee

woeful lintel
#

Is there a built in way to access i18n of content packs made for my mod with SMAPI?

#

the wiki page only account for IModHelper.Translation, but the i18n files will be contained in the individual content packs' files, not in my mod's files

slow basin
#

if i want to make it where my character can go between 2 interior maps like no door to click, would that be a touchaction or just action

#

i have it set as action warp rn but i wanted to double check cause theres 2 options

brave fable
#

it's also a little brutal to reflect into it

vernal crest
uncut viper
#

if the content pack is literally made for your specific mod as in you are the contentpackfor and can get the IContentPack, you can get its translation helper

slow basin
#

aaa

#

map property hmm i can use that or just do touchaction since idk if im gonna have any npcs interact with my collections mod tbh

woeful lintel
vernal crest
slow basin
#

ah true

#

haha ig ill make it map property

brave fable
#

that'll learn me not to make a mod with content packs

slow basin
#

is a map property something thats already on the maps we edit or is it a thing i can create

uncut viper
#

the reflection is actually quite easy if that's more palatable, blueberry

brave fable
#

mine was grotesque

#

which i mean in the literal and figurative senses

uncut viper
#

it's a lot easier if you reflect into SMAPI to get it's internal registry rather than reflect into your registry helper

woeful lintel
#

now I gotta find a way to get the IContentPack to where it's required...

brave fable
#

oh i did lol

uncut viper
#

well

#

skill issue I suppose

vernal crest
woeful lintel
slow basin
#

dang it

#

i think i deleted that

#

i see it in map properties but cant find it on the map

#

i cry now

vernal crest
#

If it's in your map's map properties, it's not deleted?

slow basin
#

oh thank goodness

slow basin
#

OH

#

i finally uinderstood how it worked my b

slow basin
#

ok

dapper crown
#

I wish GMCM had a way of specifying field dependencies so you could hide those that aren't relevant when a certain option is selected

slow basin
#

i am getting a weird thing when i try to check the dialogue for StringsFromMaps it just says 'strings/stringfrommaps"

hard fern
#

with a log or screenshot or whatever

#

or a json

drowsy pewter
#

you should always share your code

hard fern
#

preferably all idk

slow basin
#

ill grab it

#

its at line 25

#

am i supposed to also load it or something? i have the i18n put in in my default folder already

tough narwhal
#

sorry to interrupt the convo rn, i'm facing a slight error (? it's simple yellow text) that doesn't allow me to load an asset for my mod, here's the log https://smapi.io/log/944677f55ea84291995456262a775fd6 and the line i was describing

Content Patcher Error loading patch 'Yandere Shane 1.6 IU Version > Load Mod Default': file contains fields which aren't allowed for a secondary file (Format)..

ocean sailBOT
#

Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26100.0, with 19 C# mods and 12 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

lucid mulch
#

only the content.json file is allowed the Format field, and for your others would need to see Data/DynamicChanges/ExclusionChanges.json

vernal crest
slow basin
woeful lintel
#

hell yeah, i18n support for FF!

#

(french tw)

vernal crest
# slow basin

Could you also take a screenshot of what it looks like when you interact with it in game, please?

slow basin
#

ofc

#

gimme a moment to get it open

vernal crest
#

You've capitalised your mod id differently between the two tiles and it might be case sensitive. If it is, one of them should work while the other doesn't (unless they're both a different capitalisation from your actual mod id).

slow basin
#

yea 😭

#

im so embarrassed

#

i checked cal and he spoke and then arthur didnt and i checked and saw captilization and was like "noooo"

vernal crest
#

Don't worry meow_googlychecks_pat I wrote some of my dialogue syntax wrong four times in a row tonight

slow basin
#

yippee its working and so is my map (i had the warp written wrong)

#

now the final chapters

#

adding in the other cards + setting up the actual museum part

#

and then after that ill be working on collectible CDS + Comics 😄

#

oop scratch that sigh it cant find the location

#

oh it might also be ccaps

#

ksdfjdskf nvm i forgot to change the id when i edited the target

#

or i mean

#

I forgot to change the target when i changed the name of the tmx

woeful lintel
#

How would one transpile a new "case" in a switch statement? Does it require handling branches?

gentle rose
#

usually I think of transpilers just in term of IL tbh, not in terms of changing the original C# version

what does the IL look like for the switch statement?

woeful lintel
#

Hoy, I just made a version that supports i18n! ping me if you want to try it, it's not released yet

woeful lintel
#

damn, I can't find the person who originally asked for i18n in FF on this server, maybe a Nexus comment?

#

The IL has a bunch of

call bool [System.Runtime]System.String::op_Equality(string, string) /* 0A000456 */
brtrue.s

so I'm going to just make a prefix that checks for the specific value I want to add a case for

lucid mulch
#

the brtrue.s would have a label presumably pointing to the relevant block

royal stump
#

if there's no actual switch opcode in the IL it's probably that simple, yeah
(I misread; transpiling is easier if the switch statement is optimized out, but a prefix can circumvent it either way)
sometimes that exists & I'm not sure how to parse the operands/labels with harmony, e.g. switch Labels0,1,2,3

woeful lintel
#

the important part is that the transpiler I made doesn't have branch and label logic, so I'm not doing any of that if I can avoid it

woeful lintel
# royal stump ~~if there's no actual `switch` opcode in the IL it's probably that simple, yeah...

actually, yeah, it does have switch instructions, I think it's checking the string length to go faster:

    IL_0014: ldloc.0
    IL_0015: call instance int32 [System.Runtime]System.String::get_Length() /* 0A0002D0 */
    IL_001a: stloc.1
    IL_001b: ldloc.1
    IL_001c: ldc.i4.7
    IL_001d: sub
    IL_001e: switch (IL_012d, IL_011e, IL_00fd)

    IL_002f: ldloc.1
    IL_0030: ldc.i4.s 17
    IL_0032: sub
    IL_0033: switch (IL_010f, IL_0195, IL_008b, IL_0195, IL_0195, IL_00a0, IL_0074, IL_005d)
royal stump
lucid mulch
#

Made progress in my GC tracking feature for profiler

#

this log was fairly clean and only had 2 blocking GC pauses > 0.5ms and were both during early startup that were 1.5-2ms each.
I'll probably need to add config for tuning sampling though because in this 4 minute log had 1916 gc events with only 26 being >0.1ms and 16 being >0.5ms

woeful lintel
#

I noted the user who wanted customizable dresser condition as "@B" but I can't find anyone with this name on the server does anyone know who that is?

#

cuz I managed to make a new Storage special type with no condition on what items go inside, but adding tabs and conditions is going to take a while so I wanted to know what they wanted in the first place

#

I think @latent mauve was also interested at some point?

woeful lintel
#

Making a fully new custom tab system seems to be much easier than what I'm trying to do now: adding conditions to the Furniture Catalogue's existing tabs

#

It seems like the IL for inline functions is not on my level

gray bear
#

i am once again struggling with GSQ

woeful lintel
#

Like, no, I'm not touching that

IL_00db: ldsfld class [System.Runtime]System.Func`2<class StardewValley.ISalable, bool> StardewValley.Menus.ShopMenu/'<>c'::'<>9__61_1' /* 04002EC9 */
IL_00e0: dup
IL_00e1: brtrue.s IL_00fa

IL_00e3: pop
IL_00e4: ldsfld class StardewValley.Menus.ShopMenu/'<>c' StardewValley.Menus.ShopMenu/'<>c'::'<>9' /* 04002EC6 */
IL_00e9: ldftn instance bool StardewValley.Menus.ShopMenu/'<>c'::'<UseFurnitureCatalogueTabs>b__61_1'(class StardewValley.ISalable) /* 06004498 */
IL_00ef: newobj instance void class [System.Runtime]System.Func`2<class StardewValley.ISalable, bool>::.ctor(object, native int) /* 0A00094B */
IL_00f4: dup
IL_00f5: stsfld class [System.Runtime]System.Func`2<class StardewValley.ISalable, bool> StardewValley.Menus.ShopMenu/'<>c'::'<>9__61_1' /* 04002EC9 */
gray bear
#

spooky

#

will this check if it's the desert festival or it's not sunday?

finite ginkgo
#

Yes

gray bear
#

cool

#

the wiki only states ANY in the meta, are there more? i heard about ALL i think

finite ginkgo
#

"ALL" is the default behavior of GSQs

gray bear
#

i see, ty

lucid iron
woeful lintel
#

great

lucid iron
#

But since this is that bit in shop menu which add tabs

#

You can just postfix and add another tab right

#

Don't actually need to break into the switch i feel

#

Spacecore has custom shop tabs through this route if i wanna go look

little field
#

When making a mod that expands upon an NPC what is a good amount of events to add? Also I'm toying around with the idea of the events being item locked to keep pacing normal so people aren't bombarded with back to back cutscenes since I'm pretty sure a lot of people would have already maxed friendship with this NPC.

Not sure if I'm making total sense, this is all new to me GirlShy

woeful lintel
#

The goal is not to add tabs but to change the Filter condition on the Catalogue Furniture tabs

#

I think I found it with ILSpy at ShopMenu.<>c.<UseFurnitureCatalogueTabs>b__61_x(ISalable) : bool With x at the end from 0 to 5

#

no idea how to target it though

tiny zealot
vernal crest
slow basin
#

i love doing the art for my mods so much more than every other step but its so addicting to watchs tuff start to work

lucid iron
#

You may be able to replace the delegate if it's actually something stored somewhere but i dunno

woeful lintel
lucid iron
#

Yeah that's just a class name in IL land

#

Is not a generic

vernal crest
lucid iron
#

You can try yourself (iterate and print class names) and see if it works

#

It doesn't look like ur thing says display class so maybe it is just on ShopMenu? Not sure

#

Either way some reflection nonsense is gonna happen

little field
# vernal crest Timegating events is possible, Sword & Sorcery 2 does it (though I believe they'...

Ah okay! I've already have the initial starting event that kicks off everything properly timegated to:

Must be at least Year 2
Must be Married to NPC for one year
Must have 14 friendship hearts

I made the first event too so that's all set up to trigger after receiving an initial letter as well as meeting the previously stated conditions.

I'd be lying if I said I wasn't nervous about the whole thing, my brain with the coding feels like it's mush.

woeful lintel
#

damn, I would have to manually do that. I already have a system where the patcher matches the class method name in the game to the prefix/transpiler/postfix method I wrote, but I can't create a method with this name...

lucid iron
#

Just gotta expand ur system to do fuzzy searches i guess

vernal crest
lucid iron
#

There's no much ways around it

little field
#

Oh! Right important question! My mod also surrounds Morgan, do I need to ask permission to make a mod for them? If so, how do I go about doing that 0-0

vernal crest
lucid iron
#

Morgan sve right

little field
#

Yeah

lucid iron
#

That one is open perms no need to ask SDVpufferthumbsup

little field
#

Huzzah

lucid iron
#

You can check perms on the nexus mod pages

little field
#

Ooh! Good to know! I never knew that!

vernal crest
#

In general the etiquette is to check even if perms are open if you're going to be doing something as much as adding new content for an NPC but in the case of SVE it seems Flash is fine without being asked

little field
#

Where would one find the perms on a mod page? kannapeek
I also have concerns since my mod is inspired by another mod RRRR. I tried to get in contact with the mod author but their discord is locked down. I'm concerned since it's inspired by it, I made sure to include hecka credits too but I didn't wanna overstep.

vernal crest
#

The permissions drop down lol

little field
#

I'm blind then L_Pensive

#

OH

#

ITS RIGHT THERE

#

I SEE THE TAB

vernal crest
#

If you're not editing RRRR in any way nor using its characterisation or anything then you don't need perms just for inspired by

#

But if you're using the RRRR characterisation or assets, check the mod page and then ping the author here (if they are in here) or DM them on Nexus if perms are needed.

#

If you do need perms and can't get in contact with them, that's the end of your mod I'm afraid

#

At least in a publishable form

#

Nomori's not RRRR, right? He's Rasmodia which is...female RRRR?

little field
#

Jellonip is RRRR

tiny zealot
#

correct, nomori is just assorted patches into various wizard mods to do the gender swap

#

(in the event that you publish your mod, you may wish to reach out to nomori about that anyway)

little field
#

About what? Oh using the original mod as inspiration?

vernal crest
#

Nah I think ichor meant about Rasmodia compat

little field
#

Sorry, like I said this is all new to me, apologies for the silly questions GirlShy

stoic prism
#

hello, does the stardew immersive family mod for the children also work for player to player children

tiny zealot
#

i mean nomori's female wizard mod is very popular and they (or you) may want to offer compatibility

lucid iron
little field
#

Oh!!!

vernal crest
#

They aren't silly, we always appreciate when someone comes in to ask about permissions and etiquette rather than just go ahead and publish a mod that violates Nexus perms

stoic prism
#

oh I'm sorry i thought i was in the correct channel i mis clicked...

little field
#

I have a follow up. What if there is a code another mod made that does what I wanna do already? I've seen some mods say Borrowed from and then input the code. Is that normal etiquette?

tiny zealot
#

It Depends™

vernal crest
#

It usually depends on how bespoke it is

little field
#

Is code considered an asset?

vernal crest
#

If it's something really complex that the person put a lot of work into, you risk them getting miffed if you yoink it without asking. If it's pretty bog standard stuff that every mod of the same type has to have, nobody is even going to know where you got it.

tiny zealot
#

it depends on how much "authorship" the stuff in question represents, the amount of copying, and the license on the mod

vernal crest
#

(I'm assuming we're only talking json here?)

tiny zealot
gray bear
#

i had someone asking to use my code as a base for their mod that did a similar thing, and i mean, it does depend but asking always nice

little field
#

Like, I enjoy using a 32 portrait system rather than the traditional one due to freedoms of expression. Which was also done by Jellopnip in their config file but I wasn't sure if it was an asset since it says on permissions to not use any assets without permission but I'm having trouble contacting them.

Just wanna make sure because I can prolly maybe make my own version of the code? Aw jeez I feel weird typing all this out loud lol but getting different view points is so helpful to me.

gray bear
#

there's only so many ways you can do something

vernal crest
#

More portraits than vanilla is very normal

gray bear
#

yeah lots of mods do that

tiny zealot
#

having 32 portraits is not something you can "own" so there's no need to ask permission for that

vernal crest
#

You do not need any special json for it outside of the additional portrait commands in dialogue

tiny zealot
#

(quill do not @ me about patent law, kthx)

vernal crest
#

So if RRRR has a bunch of extra json for it, it's not normal

little field
#

No it's just in the main content.json

vernal crest
#

No I mean there shouldn't be any

little field
#

Using the ${{e5}} token for example

gray bear
#

rrrr sure does do many things

vernal crest
#

Except in the dialogue calling $19 instead of $4 for example

gray bear
#

the what token

vernal crest
gray bear
#

oh wait is that just a dynamic token

little field
#

Yeah

vernal crest
#

I assume so but it's weird that there's a dynamic token for it

tiny zealot
#

it's gonna come down to "could someone tell by looking at your json that you copy-pasted it from the other mod", and likewise "will the other author be okay with that"

little field
#

Overthinking intensifies

gray bear
#

i wonder if that has anything do to do with the config which i assume rrrr has

little field
#

Goodness I love that mod though, it's what got me into modding to begin with Lcnod

tiny zealot
#

see the link above re:boilerplate, which attempts to explain how some things are necessary structure and you can't get in trouble for copying them

vernal crest
#

If you download a bunch of NPC mods and find json that's only in one of them, it's probably more of a "check about this" situation

little field
#

I really appreciate the input yall thank you so much

#

It means a lot

desert light
#

Does anyone have any idea what in particular is preventing me from setting PathFindController endPoint(s) that are near the edges of maps? In particular, near the edges of the standard farm map currently. The npcs just don't move at all when the destination is too close. Works normally otherwise though.

royal stump
#

very few people work with SDV's pathfinding code, but that said, it might be due to the NPCBarrier tile properties around all the farm exits?

true coyote
#

I should look into the farm map im using and see if they put in the npc barrier, cause my dog (if considered an npc) runs off to the bus path never to be seen again for days

royal stump
#

SDVpufferchicksweatsip that and farm animals might be why it's there, yeah

little field
#

I keep getting this error, not sure what's wrong with my code to keep reproducing this error 0-0

[game] The social page found conflicting NPCs with name Morgan (one at Custom_Morgan_WarpRoom {X:2 Y:3}, the other at Custom_Morgan_WarpRoom {X:2 Y:3}); only the first will be shown.

vernal crest
little field
#

Ah ty, trying to configure and code a spouse and housemate being active simultaneously is making my brain fizzle Ldizzy

vernal crest
#

Yeah that seems quite complex for someone new to modding given that it's not possible in vanilla

true coyote
#
       "Action": "EditImage",
       "Target": "birdb.CP.Donkey/donkey",
       "FromFile": "assets/Donkey/{{Color}}.png",
    },```

this should work right? ![SDVpufferthink](https://cdn.discordapp.com/emojis/280082838773301258.webp?size=128 "SDVpufferthink")  trying to figure out why im not getting a change when its identical to how another mod makes changes to a different mod, aside from the {{token}}
vernal crest
#

Try doing a patch summary on the asset to see what's happening. patch summary asset "birdb.CP.Donkey/donkey"

true coyote
#

I mean I can throw in /asset/donkey, but Idk why i would need to when other mods don't target through asset

#

in this format

vernal crest
#

There is no Load patch for that asset so I don't know if the donkey is being loaded for you to be able to edit it

#

If it is definitely there, try using Lookup Anything to confirm you have got the right asset name for your edit

true coyote
#

which is weird because referencing one that changes cornucopias stuff (and works) it doesnt have a load

#

lol

vernal crest
#

You mean doing a patch summary on another asset?

#

I don't mean that it should have a load patch from you

#

I mean that I would expect that doing that patch summary would show the original mod's load patch and then your EditImage one, so the fact that it doesn't could indicate that you have the wrong asset name (or that I'm wrong to expect the load to show up in the patch summary)

true coyote
#

should the target then be the id? birdb.CP.Donkey/Donkey and I just misunderstood? SDVpufferthinkblob

vernal crest
#

I don't have a great deal of context but I would usually expect your Target to be whatever is in the Texture path for the animal if you're doing EditImage

true coyote
#

if you mean further up, I mean it could be but every time I do a patch summary it seems to load so much stuff that it only gives the bottom half of my list? like, I scroll all the way up in smapi and it doesn't even show all the start up stuff from when i launched anymore lol

vernal crest
true coyote
#

but the asset names are definitely correct, since I looked at the original asset name while typing it up

#

in what way do you expect it to be loaded, just to clear up my own confusion. because I mean.. it's loaded? In the way my brain defines that as I'm looking at the original mod's donkey in game atm

balmy python
#

Anyone know where exactly I can find the sprite sheets for the buildings in the game for a building retexture mod? As well and the sizes? Specifically town buildings and houses? Pretty much everything besides the farm buildings

vernal crest
#

If this is the Donkeys mod by birdb, that is what your Target should be

gentle rose
#

Maps/townoutdoors I think?

royal stump
true coyote
#

ah yes lets just make the target a completely different name than how ill actually name the file

#

(╯°□°)╯︵ ┻━┻

gentle rose
#

I would try esca’s thing first SDVpuffersquee

royal stump
#

looks like the town naming scheme is [season]_town and townInterior, yeah SDVkrobusgiggle

vernal crest
true coyote
#

guess I've just been getting lucky till now 🤷🏻‍♀️

vernal crest
#

I guess so, but now you know for future

gentle rose
royal stump
#

season_outdoorsTilesheet is one of the other big ones

gentle rose
#

ah, that explains it

royal stump
#

that does have most of the not-town buildings on it too

vernal crest
oblique meadow
#

Random question. Just verifying. Producer Framework mod is still necessary. Content patcher hasnt replaced it yet. Correct?

drowsy pewter
#

Er

#

depends on what you are talking about

#

main feature of adding machine rules: you do that in CP now

#

PFM has additional special mechanics, but EMC also covers those

#

EMC is an extra framework that adds onto CP content packs, while for PFM you make a PFM content pack

oblique meadow
#

I want to add the ability for a placed BC to spawn items. Ive been googling and results are pointing at PFM but... it also may be outdated

drowsy pewter
#

for a placed bc to spawn items?

#

I have no idea what that means exactly

#

like the worm bin?

#

or literally spawn items around it?

oblique meadow
#

spawn items around it

drowsy pewter
#

I dont think PFM can do that, its only for machine stuff

#

but feel free to read the docs first, its usable

lucid iron
#

I'm pretty sure you need to do own C# for that

drowsy pewter
#

yeah i honestly dont think theres any framework for that but who knows idk maybe digus was cooking something crazy behind the machine stuff

lucid iron
#

Though you could make a day update machine that just produces whatever

drowsy pewter
#

But it kind of boils down to like. "Would anyone else have ever bothered to code this mechanic before"

lucid iron
#

And it may be fun to do a standalone c# mod that looks at that item and then try to place it "nearby"

#

(controlled by a custom field etc)

calm nebula
#

Garfield cat

royal stump
#

SDVpufferlurk FTM will be able to do that when my 2.0 alpha stuff is ready, but I'm not quite ready to commit to a release date for it

#

either placing items around the BC or throwing debris items from it, if I remember to add the latter action

drowsy pewter
#

Wow

#

esca coming in clutch

royal stump
#

I'm pretty happy with how nonsensical the tile query feature can get SDVkrobusgiggle
stuff like "TileCondition": "IS_NEAR_OBJECT <ID> <MinTilesAway> <MaxTilesAway>" + whatever settings for the items to spawn

#

not that I've written "near object" yet, but it's straightforward

oblique meadow
#

So i need that today. If you could work on that. /s /jk

royal stump
#

currently refactoring some stuff but it's in progress

gentle rose
oblique meadow
#

People need to stop creating fun toys I can take and run with 😜

shut edge
#

no keep doing it

#

more toys more cakes

royal stump
#

example of my current test pack shenanigans, with the existing actions SpawnObject and DespawnObject

"Trigger": "Esca.EMP_OneSecondUpdateTicked",
//...
"ExampleEntry_SpawnObject": {
  "ActionType": "SpawnObject",
  "TileCondition": "AREA_CIRCLE 30 30 20, ANY \"!AREA_CIRCLE 30 30 17\" \"AREA_CIRCLE 30 30 14\", ANY \"!AREA_DIAMOND 30 30 11\" \"AREA_DIAMOND 30 30 8\", ANY \"!AREA_DIAMOND 30 30 5\" \"AREA_CIRCLE 30 30 2\"",
  "ItemList": //misc objects
  "MinTimes": 10000,
  "MaxTimes": 10000
},
"ExampleEntry_DespawnObject": {
  "ActionType": "DespawnObject",
  "TileCondition": "AREA_CIRCLE 30 30 15",
  "ItemMatchData": null,
  "MinTimes": 300,
  "MaxTimes": 300```
shut edge
#

what happens if you're standing on an item when it spawns in

oblique meadow
#

Whelp. I kinda love that

royal stump
#

you get stuck, but stardew has a built-in thing that destroys items if you right-click them while clipping into them

shut edge
#

ah ok

royal stump
#

there're some less silly tile conditions to make sure the tiles are clear

#

("NOT" stuff is ! because caching stuff is easier that way)
(also other mods can add actions/queries if they want)

true coyote
#

yay \o/ thanks @vernal crest

little field
#

I decided to take a break from frying my brain with my ModEntry.cs and I just finished my first event cutscene sparky_yay

dim forge
#

I'm currently trying to spawn a monster i made as a subclass of the monster class using FTM. The problem is that FTM can't find it when it tries to spawn it, although it does show up using FTM's list_monsters command.

Right now the subclass is essentially a copy of the Monsters.Skeleton subclass with a few edits to string names and a few code changes to fix bugs that FTM mentions in its skeletonFTM code.

My only guess is that the subclass isn't being generated in the data/monsters directory, but I don't know how to check the modified version of it. Does anyone have an idea what might be going wrong?

lucid iron
#

Do you have to make ftm do the spawning?

#

It sounds like you are in C# which means you can just add the monster to location.characters yourself

dim forge
#

I suppose I can try that, but it'll take more time to figure out

lucid iron
#

Remember to get rid of them when player leaves ofc

royal stump
#

FTM mostly offers that for auto-serialization (also handled by spacecore) and so content packs can use them

#

it's pretty rarely used so I'm not sure what the issue could be off-hand, looking around the code now SDVpufferthinkblob

royal stump
dim forge
#

yes. I based it off the skeleton.cs code from the base game

royal stump
#

ah, that doesn't actually count as a Vector2-only constructor; the compiler just automatically fills in isPriest every time

#

FTM's list command doesn't filter properly for things it can spawn, just the* Monster subclass, but the actual spawner can only use the Vector2-and-nothing-else constructor

#

adding* something like this should work if you do need that constructor, though FTM can't toggle the bool itself

public Draugr(Vector2 position)
    : this(position, false)
{

}```
(edit, should've been false instead of true)
dim forge
#

I'm not overly familiar with c#, and i only know basic coding to understand how some of the values are handled for sprites and damage values, etc. Does adding that code not interfere with the first vector2 constructor

royal stump
#

now that you mention it, yes, the constructor I posted would probably take the place of any references to your optional argument

#

the result would be the same, but the optional argument wouldn't really be used, it'd just take the matching constructor

#

(iirc anyway, it's a bit weird about those)

#

I'd probably just remove the = false and make that constructor explicit, and have the Vector2 one use whatever default value you prefer

#

like this, to be clear

public Draugr()
{
}

public Draugr(Vector2 position)
    : this(position, false)
{
}

public Draugr(Vector2 position, bool isPriest)
  : base("Draugr", position, Game1.random.Next(4))
{
  //etc```
dim forge
#

alright. thank you, i'll give it a try

autumn tide
#

Hey! I’m trying to make an engagement event for krobus, and I think I have that part down (using BETAS!), but how would I prevent the normal engagement with a void pendant? Would giving them the RejectItem_808 (void pendant) line work, or is it more complex?

royal stump
#

as far as I know that should work, but if not, you could remove the context tag* propose_roommate_krobus from the item or try the RejectRoommateProposal key(s)

autumn tide
#

huh, okay! didn't know I could edit the item

#

how might I do that?

royal stump
#

yep, it's explicitly attached to it in Data/Objects, so CP should be able to

autumn tide
#

oh sweet! tysm :)

shut edge
#

somehow this fish factory of mine keeps developing confusing new problems

#

the tiers aren't upgrading properly now

autumn tide
shut edge
#

ah i am dumb

#

gotta sleep before the map changes, ok

autumn tide
#

also, tysm for all your help! SDVpufferheart

royal stump
brisk edge
#

hi everyone SDVpufferparty

I have been considering making a mod where after farmer marries Shane there’s a possible optional event where the farmer (if they also have enough hearts with Marnie) and Shane could adopt Jas and Jas could live with them on the farm

however I have no idea how to mod or where to start with that

could I have some ✨advice✨ pretty please and thank you

fading walrus
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.

fading walrus
#

You want the content patcher tutorial

#

In addition, check the Events tutorials on the modding wiki here

brisk edge
#

thank u ur an angel

fading walrus
#

People more knowledgeable about events than I can help you with finer details later if you get stuck

little field
#

Me: Makes their .cs and sees 0 errors

Notices, its not open in the .csproj and loads it in

Over 70 errors found

calm nebula
#

Cosmic, what are you making that requires c#?

little field
#

It's like this whole story mod and stuff

#

Nothing too... fancy DeerPeekLurk

shut edge
#

sounds fancy!

little field
#

I'm learning as I go so all this is really new to me

shut edge
#

hmm is there a way to do locationname but like...fuzzy

#

wildcard ish

#

like the location contains this string but maybe more too

urban patrol
#

in debugging?

shut edge
#

in content patcher

urban patrol
#

ah hmm

shut edge
#

what i am trying to do is change the graphics on some vanilla things, but only when inside my PIF room

#

but PIF uhhh...does things

urban patrol
#

maybe use contains?

shut edge
#

do you have an example?

urban patrol
#

well before i recommend it to you, what do you want to use it for? i’m not sure if it works outside of When conditions

shut edge
#
      "Target": "Buildings/Fish Pond",
      "FromFile": "assets/Fish Pond.png",
      "PatchMode": "Replace",
      "When": {
        "LocationName": "{{ModId}}_FishFactory"
      },
      "Update": "OnLocationChange"```
#

this was working, previously

#

but i think PIF gets wacky with locationnames internally

#

and they don't stay terribly consistant or something

urban patrol
#

oh yeah if CP has a location name token you could totally use contains

#

let me check

shut edge
#

ah cool

#

i'm lookin at the dox but not seeing it yet

uncut viper
#

that isn't how contains works

#

it doesn't look for substrings

royal stump
#

yeah, I think |contains= is an exact match in a list, so at best it'd specify multiple names
"Query: '{{spouse}}' LIKE 'Abig*'": true can use wildcards before or after the string, but not in the middle

shut edge
#

"LocationName |contains="_FishFactory": true"

#

would that work maybe

uncut viper
#

will not work

shut edge
#

ah

urban patrol
#

my bad

royal stump
#

Query: '{{LocationName}}' LIKE '*_FishFactory'": true
I think, I've never tested queries

uncut viper
#

contains looks for values in a set

#

e.g. looks for one flag in the entire set that HasFlag returns

#

LocationName returns a set that has just one thing in it, the location name

shut edge
#

but maybe it's needing a full reload or somethin

uncut viper
#

you have the right Update rate right

shut edge
#

"Update": "OnLocationChange"

#

iv'e done this same thing before for animal barns but not PIF

royal stump
#

test it in the console while you're there with patch parse "{{Query: ...}}", I guess?
it seems to work for me with {{Query: '{{LocationName}}' LIKE '*house'}} in the farmhouse

shut edge
#

is that right?

#

yeah house returns true

#

when in the house

royal stump
#

what does it return in your factory with just {{LocationName}}? you might need {{LocationUniqueName}} instead depending on how the internals work

#

though that may just add weird UUID/hashes instead

shut edge
#

Parsed value: "DLX.PIF_MINE_cryomancer.fishfactory_FishFactory_3128846940094110487_Spa'"

#

yeah PIF does shit to location names like that

royal stump
#

ah, yeah, that's not gonna work unless you switch to a prefix or look for another end bit

shut edge
#

could i have it check for the current map file directly?

royal stump
#

I don't think CP keeps track of that, but someone might know better

#

if this part is always consistent, you could switch * to the other side, e.g. DLX.PIF_MINE_cryomancer.fishfactory_FishFactory*

shut edge
#

worth a shot

royal stump
#

"Query: '{{LocationName}}' LIKE 'DLX.PIF_MINE_cryomancer.fishfactory_FishFactory*'": true
or similar

shut edge
#

well how about that

#

that seems...i dunno, dirty? suboptimal? lol

royal stump
#

it's a bit messy, but CP (and a lot of game code) isn't really made with dynamic locations in mind

#

query and string trickery aren't ideal but I wouldn't expect it to cause slowdown by itself

little field
#

I'm getting this warning message:
Dereference of a possibly null reference.

I'm not exactly sure how to... fix it... unless I don't even need it at all? Any insight is greatly appreciated... HSusKitty

shut edge
#

thanks for the help Esca

#

now to massage my other graphics into their correct places

#

one odd side effect i won't bother addressing

#

when you are building from robin, you are somewhere else, so it has the vanilla art

royal stump
#

yeah, more complicated tokens could enable it at her shop, but I wouldn't worry about it SDVpufferdizzy

shut edge
royal stump
# little field I'm getting this warning message: Dereference of a possibly null reference. I'm...

Technically you don't need to do anything. I think you've got null safety enabled (probably the default nowadays), so it warns you if anything could logically be null, e.g. that API method's output. It might have some suggestions if you right-click and select "Quick Actions and Refactorings" at the top of the menu, I'm not sure.

You can also edit the C# project file and disable Nullable like this, apparently:

#
  <Version>1.25.0</Version>
  <TargetFramework>net6.0</TargetFramework>
  <EnableHarmony>true</EnableHarmony>
  <LangVersion>latest</LangVersion>
  <Nullable>disable</Nullable>
</PropertyGroup>```
#

someone else might know more, all my projects are too old to enable nullable stuff on me SDVkrobusgiggle

uncut viper
#

put a ? on it

#

alternatively, wherever you're defining your SEhelper, initialize it as null!

#

as long as you're sure you're assigning your helper in your Entry function

#

im assuming you have a like, public static ModHelper SHelper; in your file or smth

shut edge
#

yeah this should be pretty cool

#

too bad the walls and floors won't behave but that seems to be a PIF side problem so shrug

spice inlet
#

what issue are you running into with the walls? SDVpufferthinkblob

shut edge
#

they refuse to be counted as walls for decor purposes

#

probably because it's not from the walls_and_floors sheet i guess

#

maybe i could duplicate them onto another one with that name tho

#

the floors act like they work but just eat your flooring with no visual change

#

i will just wait for potential updates i think

spice inlet
#

mind sharing your project?

shut edge
#

you want the tmx?

spice inlet
#

it'd probably be better to have the entire project to test

shut edge
#

we ran around with this a bunch yesterday unfortunately and it seems like it's just a sort of bug in PIF

#

i am almost certainly not using projects correctly in tiled but i can give you the map if you wanna peek at it

#

this is needed too