#making-mods-general

1 messages ¡ Page 303 of 1

brittle pasture
lucid iron
#

the people demand more colors...

#

selph can we have color_#6495ED

brittle pasture
#

you can't add custom colors yet. one of the C# nerds in here can probably be sniped into adding that functionality though

ornate trellis
#

im sad enough that using color_prismatic gives me colorless jelly

calm nebula
#

In scope for smd

lucid iron
#

atra i become frighten u wont ever release that now

#

each time u say something is inscope

grizzled crescent
#

Thank you so much!

ornate trellis
#

me everytime I add another furniture piece: did I do that right?

calm nebula
#

In scope doesn't mean it'll make the first release

lucid iron
#

hrm

#

i think we just patch ItemContextTagManager.GetColorFromTags right

brittle pasture
lucid iron
#

i thought prismatic valley framework literally did that

calm nebula
#

When I say something is in scope I usually know how to do it lol already

ornate trellis
#

red

brittle pasture
#

that one doesnt seem to handle ColoredObject

lucid iron
#

why it no gif

brittle pasture
#

and my solution would not require transpilers

#

Also it seems to tint the entire sprite

#

instead of just the jelly goop/wine water/ect.

ornate trellis
lucid mulch
lucid iron
#

CanRevisitLeoMemory?

#

wow it just edits away the precondition

#

how does this handle things like mail being set

lucid mulch
# lucid iron CanRevisitLeoMemory?

The dehardcode idea of Leo memory was that any NPC should be able to have a dialogue prompt to see the events that are no longer possible due to multiplayer state making the event semi non-canon anymore wrapped around a "memory" of the event

#

Multiple layers of hardcoding too

  1. Hardcoded to Leo but only when in the mountain with I think some other conditions
  2. The list of eligible events are hardcoded
  3. The preconditions it will replace or ignore are hardcoded
#

It's a pretty neat feature that I don't think is even documented on the wiki as a feature Leo has, because it's multiplayer only

calm nebula
#

I was thinking

  1. A trigger action to play an event (I know spacecore has it but) which can optionally set the flag
#
  1. An event command to mark an event as a re-watch
lucid iron
#

this should become less bad now that we dont have forks right

#

or well, eventually wont have forks Dokkan

calm nebula
#

I was also going to do something about the forks yeah

lucid mulch
#

Oh yeah the other layer of Leo memory being hardcoded, someone needs to have progressed his story to do the world changing behaviour so that he will now go the valley.
In particular it doesn't need to be host, a farmhand can progress Leo to the point host needs to use the memory system to see the events

lucid iron
#

idk if this is still a dehardcoding

#

vs just making your own memory system

calm nebula
#

It's (b) tbh

lucid iron
#

ok whats the S name for this one sinz

calm nebula
#

The trigger action can happen as part of dialogue and the trigger action can also contain a gsq

brittle pasture
lucid mulch
calm nebula
#

Don't worry

#

Somewhat More Dehardcoding works too

lucid mulch
#

my goal would be to preserve its functionality, but extract out the layers of hardcoded-ness into an asset

#

now, whether SMD should do it, or 1.6.16...

calm nebula
#

1.6.16 always

#

Always beg Pathos first

odd ginkgo
#

event making question... is there a way to momentarily show an image on the screen? Specifically, I want to flash the world map (as it appears in the Loosesprites folder, and in the menu tab of the world map), almost like a cutscene? Like have a character say "look at this map!", then the image appears on the screen, then disappears and the event continues? I am so bad at event coding istg

hallow prism
#

you're not bad at this, this is advanced stuff

#

there are ways to display stuff but you can't display the exact world map as it would appear to the player currently in game without C# trickery to my knowledge

#

someone may have a clever workaround

odd ginkgo
#

hmmm, that's good to know. I was hoping to just pull it so that it could be compatible with the Remapping project... but I might have to think of a clever work around

lucid iron
#

if its just ur own map then drawing it is fine?

lucid mulch
#

if it was just showing a texture, it is more in the realm of possibility, but the actual worldmap is more complex than a texture

lime seal
#

maruthinking in terms of just having a Big image, I know Lucikiel and Lavril both have a "CG" moment in their respective intro events. Although Lavril's may have not been literally the 1st event because it's a series of events, so it might have been the 3rd or 4th

odd ginkgo
#

I'll take a look at L&L... thank you all! Yeah the map seems really dynamic, rather than being a still image, it's layered for the seasons, and for different farm maps

lucid mulch
#

they do it via taking you to temporary maps with it in the map

lime seal
#

(I should specify those are 2 different mods! Lucikiel is separate from Lavril, both on nexus huhu)

odd ginkgo
#

ahhh I see!

#

for context... hoping to use these sprites to have my npc show off her map, then have it come up on screen.... but maybe it doesn't have to exactly be the world map. I just don't want to have to worry about expansion compatibility and the remapping project.... so maybe a vague "world map" would do a better job

#

here i go back to the drawing board haha!

lucid iron
#

just give your expansion a world map of its own

ornate locust
#

I know Passerby shows an image in a cutscene, and the way it does it is making it a tilesheet and putting up a custom event location that's just that image

#

and all the NPCs are at -3000 so you don't see them

#

I know this because I just looked at how they did it because I want to have my NPC show some wallet pics of his family

odd ginkgo
#

I wonder if that's how Eli and Dylan do that opening cutscene with Dylan, with the tidepool

#

clever clever

#

okay, that's great fuel for thought

ornate trellis
#

so....about my adventures into furniture land...

#

I think theres a few things i still gotta figure out

#

like, why are my paintings aint behaving and wheres the rest of my coffee tables

odd ginkgo
#

on the plus side, I require both of those fireplaces

brazen arch
#

Hello, I'm trying to update my downloaded FF mods using the migration script but I stumbled on a problem. For one of the mods, the terminal is asking me to give an absolute path into "Stardew Valley/Content (unpacked)" since one of the images is taken from the game files. I copied the path but the terminal keeps saying that the path doesn't exist. Can someone help me out? This is what I did:

ornate locust
#

okay, possibilities: wrong tilesheet size for the coffee tables maybe?

ornate trellis
#

idk i tried looking at vanilla furniture

#

ah

#

typo there

ornate locust
#

Yeah that looks like a typo situation

ornate trellis
#

i did 2 1 instead of 2 2

ornate locust
#

The wall hangings... hm. What Type are you using for them?

ornate trellis
#

painting

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!

brazen arch
#

You can see in the screenshot that I used the path of the unpacked content yet it still doesn't work

warm imp
ornate trellis
#

ok, corrected a few things lets see how my furniture fares

ornate trellis
#

but i mightve found the issue so i will test

#

before i send the code again

#

ok paintings work now

#

guess when i set a specific tile size i cant jsut go -1 on the footprint

ornate locust
#

Oh yeah that was what I was gonna guess. but you beat me to it

#

-1 sets it to a default size that might not match what you're doing

ornate trellis
#

hm

#

coffee tables are still messed up

#

NEVERMIND

#

but they cant rotate...

ornate locust
#

oh wait I just saw something about rotations when I was double checking the fields

#

They have to be in a certain place on the tilesheet apparently

#

in relation to each other

ornate trellis
#

ohhh

#

i knew of the placement

#

but i didnt know the numbers had specific meanings

#

huh

#

im on that page why didnt i read to the end

#

still dont get it

#

i copied the exact placements for rug and coffee table

ornate locust
#

And you have it marked as having two rotations, I assume

ornate trellis
#

ya

#

ok i got one whole table now but only one rotation

#

dis my code for the two

                "VoidWitchCult.CP.TheFishmongerNPC_MermaidCoffeeTable2": "VoidWitchCult.CP.TheFishmongerNPC_MermaidCoffeeTable2/table/2 2/1 1/2/3000/-1/{{i18n:Furniture.MermaidCoffeeTable}}/72/Mods\\{{ModID}}\\vww_fishmonger_furniture/true/",```
#

a

#

already see i did the footprint wrong

#

what the hell

#

i really dont get rotations

ornate locust
#

That looks like your tilesheet is shifted up by one

#

I mean, your coordinates might be 1 off

ornate trellis
#

finally

odd ginkgo
ornate trellis
#

now i gotta know why my banner wont go onto the wall

#

"VoidWitchCult.CP.TheFishmongerNPC_PirateBanner": "VoidWitchCult.CP.TheFishmongerNPC_PirateBanner/painting/1 3/1 3/1/1000/-1/{{i18n:Furniture.PirateBanner}}/138/Mods\\{{ModID}}\\vww_fishmonger_furniture/true/",```
im blind
#

hm, maybe i forgor to spawn in a new one

#

yeah...

#

Anyway! My adventures are over for now, thats the furniture

#

thanks for the help, midnight

ornate locust
#

No problem! spent some time fighting it myself, it's easy to get lots in the numbers

ornate trellis
#

now im a small step closer to my mod update, yippie

trim sand
#

maybe someone who understands FTM better can help me with this. https://smapi.io/json/none/66120a95606841a6928fc42e0bb5d8fa
linked is the file im working with, and near as i can tell it simply doesn't work. im not really sure whats going on since nothing in the logs indicates anything major. but no forage spawns. for context below is the block in the farmtypes CP content file that defines everything. im assuming im targeting the farm area correctly. since ftm docs meantion using the ID.

      {
         "Action":"EditData",
         "Target":"Data/AdditionalFarms",
         "Entries":{
            "Silver.VerdantGladeFarm/VerdantGladeFarm":{
               "ID":"Silver.VerdantGladeFarm",
               "TooltipStringPath":"Strings/UI:Silver_VerdantGladeFarm",
               "MapName":"Silver_VerdantGladeFarm",
               "IconTexture":"Mods/Silver.VerdantGladeFarm/Icon",
               "WorldMapTexture":"Mods/Silver.VerdantGladeFarm/WorldMap"
            }
         }
      },
gaunt orbit
ornate trellis
trim sand
#

oh no esca's appeared again as im having ftm problems

royal stump
# trim sand maybe someone who understands FTM better can help me with this. https://smapi.io...
  • as posted, the file can't be parsed at all because this needs to be an integer, so it throws a yellow warning when I run it:
    "PercentExtraSpawnsPerForagingLevel": 12.15,
  • your farm type's entry key and ID don't match; I'm not sure which one FTM actually sees when it checks a farm type, but that might be causing it not to match
"Silver.VerdantGladeFarm/VerdantGladeFarm":{
               "ID":"Silver.VerdantGladeFarm",```
tiny zealot
trim sand
#

Also did not realize they were expected to be the same

royal stump
#

I'm not sure if there are any side effects if they don't match, but yeah, fields with both "ID" and an entry key (for json format reasons) are usually intended to be the same

#

FTM just checks the game's "current farm" value somewhere, and I'm not sure which one gets set there

ornate trellis
gaunt orbit
#

For future reference, hhd patches Utility.TryOpenShopMenu, so it's replaced before activeClickableMenu ever sees it, and also doesn't do any type matching.

royal stump
trim sand
#

oh. good catch

#

im assuming its fine to have extra conditions on a per area basis?

royal stump
#

yep, each area has that field/setting group

trim sand
#

cool. i was having trouble identifying what was a setting per area or for the whole forage setting block

#

at least from the documentation

brave fable
royal stump
#

it's a bit easier to tell with the HTML editor, but the "global" settings for forage as a whole are down at the bottom of a new file, and include a "PercentExtraSpawnsPerForagingLevel", the seasonal item indexes, and the forage CustomTileIndex list

royal stump
#

that and it's very slightly easier not to handle decimals

clear oxide
#

okay i released my 1st mod 😄

trim sand
#

in this case really the difference between 12 and 12.15 is trending to 96% instead of 97% by level 8 (thus doubled forage spawns shortly before level 10).

#

im not sure why my calcs were based on level 8

tiny zealot
#

i've programmed for enough computers without hardware floating-point that i also enjoy avoiding floats when practical

gaunt orbit
#

Floating point accuracy makes me distrust them for integer applications

tiny zealot
#

whomst among us does not enjoy the old chestnut 0.1 + 0.2

clear oxide
#

You can now capture monsters vanilla & custom monsters (pokemon) and have them attack other mobs for you.

gaunt orbit
#

That's a big part of why the game's excessive use of Vector2 over Point drives me nuts

trim sand
#

if its not actively causing noticable lag. its optimized enough is my stance on that subject. (ALL ITEMS GSQ moment)

gaunt orbit
#

Tile coordinates should only ever be integers, I don't want to know what kind of mantissa evil is happening where I can't see

calm nebula
gaunt orbit
#

What about halfs

#

Why doesn't anyone ever tall about those

tiny zealot
trim sand
#

fake news

calm nebula
#

Unless I'm doing something balls to the wall fast involving both big ass matrices and gpus I won't bother with halves

#

And I never do that, I'm not that smart

gaunt orbit
#

If I get to the point of trying to squeeze a fractional number in 16 bits I usually just switch to ints and use smaller units

#

Only time I ever actually worked with halfs was cbor

trim sand
brave fable
trim sand
#

what?

#

painpika
FTM continues to be an enigma i cannot make do what i want.

#

wait. i think i found the problem... my only entry in IncludeTerrainTypes is grass not Grass as its notated in the documentation. painpika

#

... nevermind. seems that wasn't the issue.

trim sand
#

okay its seeming like maybe im doing something wrong in packaging. since near as i can tell despite both mods being in the archive. the ftm pack is never getting loaded. im actually now not exactly sure the correct way to handle having a content pack for multiple frameworks in the same 'mod'

#

... wait might actually just be a bad json thing happening in the ftm packs manifest

#

this is so stupid that it was only broken because it wasn't being loaded.

hard fern
#

SDVpufferflat oh dear im going to be in dynamic token hell

trim sand
golden basin
#

is item extensions like gone for anyone else?

lucid iron
#

I can access it fine

golden basin
#

weird if i click it from the sunberry mod its not there

ornate locust
#

That's a Nexus bug

#

Something about swapping mod tabs and looking at the requirements?

#

been happening a couple days now, confused me deeply when I tried to see what mods used Furniture Framework and it was wall to wall 404s

gaunt orbit
#

Does picky know about that?

woeful lintel
#

Gotta love user bug reports, they even removed the part of the log that explains what to do...

merry rampart
merry rampart
quaint wadi
#

does anyone know how critters work or how to put them in a custom map? i always go to the modding index on the wiki first but there doesnt seem to be anything there

north palm
opaque field
#

Sry if this is a dumb question but can you make it so that a particular dialogue bit won’t set off until after a certain time? (The conversation makes the most sense if it can be set to only trigger after like 4:30 or 5pm) so far I don’t see anything on the wiki

drowsy pewter
drowsy pewter
#

and this is inside your i18n folder?

north palm
#

yes

#

the code that's calling for it was on IntroQuest.json

drowsy pewter
#

your other i18n lines are working i assume? Maybe it's some quest-specific syntax that goes over my head

north palm
#

yes. I'm using it on the mail and it's working fine

#

it's on the same file as this event code

drowsy pewter
#

did you ask for help with this before? Your question sounds like you already spoke about this problem in the past, but I couldnt find discussion of it. I just want to make sure I dont repeat stuff that you already tried

#

for example, i18n lines can't be reloaded on patch reload without an additional command

north palm
#

i deleted it earlier coz i tried to fix and find solution on my own 😓

#

but i couldnt

drowsy pewter
#

ah lol

#

sorry yeah I cant figure it out, I'm not experienced with event syntax. might have to wait for others to wake up

north palm
drowsy pewter
#

if you added the new i18n lines while the game was open, yes

#

Or you have to close and reopen the game

north palm
#

patch reload thelunariegrow.ZayneLi
debug ebi thelunariegrow.ZayneLi_IntroQuest

drowsy pewter
#

No you can't reload i18n lines like that

north palm
#

oh okie

#

how could i reload them

#

it's tiring to close and open the game worry_hide

drowsy pewter
#

reload_i18n and THEN do patch reload

north palm
#

okie i will try 0b_love

#

worry_cry imma cry.. that did it

#

it's now working

#

thank youuu

drowsy pewter
#

Hahah

north palm
#

i'm starting to get stressed out and you saved me love_flowers

drowsy pewter
#

no prob ^^

north palm
#

hehe thankies 0b_love

drowsy pewter
#

i18n lines are stored using a different system, so you'll have to do that in the future

north palm
#

I'll keep that in mind birb_love_lad

drowsy pewter
#

theres a lot of stuff like this that is easy to miss when debugging ! Also for example if you have problems with changing item or crop data, make sure not to test the changed code on an item that already exists, but delete and respawn a new one SDVpufferheart (kind of a similar reason)

next quarry
woeful lintel
#

Thanks for the help from everyone yesterday, I managed to fix the issue that happens when making a CP "Load" patch when the game is not in english: I added a DoesAssetExist check before passing the load method to AssetRequestedEventArgs.LoadFrom (should have done this from the start but didn't think it would be an issue).
But I still have an issue when doing an "EditImage" CP patch: if the game is not in english and I return to title after loading the patched Furniture, there's a NullReferenceException, then upon reloading the save and trying to display the asset again, there's a ObjectDisposedException.
If anyone wants to help, I have this answer from Pathos (reply link), but I have no idea what it means and how to fix it.

clear oxide
#

how does map modding work ? ive used tiled before but im not sure how to add in new maps

woeful lintel
#

!cp I think

ocean sailBOT
clear oxide
#

my brain hurts from reading the wiki on mapping mods

brave fable
#

which part in particular has you held up? creating the map、or adding it to the game as a visitable location?

clear oxide
#

so i have maps i have made in tile and want to import them over as new maps

north palm
#

i have a q. is it possible to have different set of outcomes for an event when choosing an option on a question box?

mighty ginkgo
fathom hound
#

I think I wanna try my hand at making FS outfits.... Where can I start?

hallow prism
#

look at a small FS pack and see how they do things

fathom hound
#

Good idea tySDVpufferheart

woeful lintel
#

Why does AssetRequestedEventArgs.NameWithoutLocale not remove _international? I'm don't know what I'm doing wrong, but I get a request for Data/Furniture_international and it breaks the system I have

lucid mulch
#

_international isn't a locale in the AssetName format

#

it is however a static suffix that can be checked

woeful lintel
#

I guess I can just skip the event altogether if the asset name ends with _international

lucid mulch
#

in vanilla its only used for CraneGame to replace text with iconography

woeful lintel
#

Is there any drawback to ignore requests of _international assets? I don't fully understand in what case they're used

woeful lintel
lucid mulch
#

the localizaed variant is attempted first, if that doesn't load (or in the upcoming changess doesn't have load handlers (and isn't vanilla)), it will then try _international, and if that also doesn't work then it does the base asset

woeful lintel
#

I noticed that, but I don't understand why

#

is the CraneGame _international asset only used if there's no localized asset for the current localization of the game?

lucid mulch
#

if someone loaded CraneGame.jp-JP or whatever, then it wouldn't use _international if in the japanese locale

#

but english would continue to just use the base asset directly

woeful lintel
#

I'm a dumbass, I can just use e.Name.StartsWith("Data/Furniture") instead of isEquivalentTo...

#

that was what I was worried about

lucid mulch
#

Data/Furniture/MyExtraThing wouldn't be equivalent to Data/Furniture

woeful lintel
#

yeah but Data/Furniture is a game asset, not a folder. If any mod uses Data/Furniture as a folder in a path to their asset, that's on them.

lucid mulch
#

nothing stops an asset being both, the asset pipeline doesn't care

#

asset names looking like paths is just a convention from vanilla being coupled to the filesystem, modded assets aren't constrained

woeful lintel
#

I know that, but if a mod has an asset path starting with Data/Furniture, which makes FF try to patch it, that's on them. Asset paths for FF are made with modIDs in them at the start to avoid anything like that.

lucid mulch
#

also Data/FurnitureExtensions would also pass a StarsWith check but fail an equivilency check

woeful lintel
#

How would I check if the asset is the vanilla Data/Furniture then? Do I have to check for the _international variant separately?

#

that's bothersome

uncut viper
#

(i also would say that it's the major frameworks responsibility to handle these things, personally, and not put it "on them" when they've done nothing wrong, especially when the issue is known and the solution only amounts to another string check)

brittle ledge
urban patrol
#

oops jinx!

brittle ledge
#

SBVLmaoDog both of us choosing to respond to the same question four hours later

urban patrol
#

right like what are the odds

woeful lintel
#

I'm guessing the answer is no then

steel plaza
#

for creating a custom location inside a custom building what files do i need? sorry new to modding

#

basically the building im creating is a garage which you can enter through 2 different doors

woeful lintel
#

If I want the asset name "abc/def/ghi" to be requested, what do I put in the "texture" field of the Furniture data? would the content pipeline translate the backslashes into slashes from "abc\def\ghi"?

#

it seems like it does work

gaunt orbit
woeful lintel
#

I'm pretty sure I just tried that, but _international wasn't removed from the asset's NameWithoutLocale... I'll check again if you want

gaunt orbit
#

Oh I thought you meant that as a language code placeholder. There's really an asset sufficed with _international?

lucid iron
woeful lintel
#

yup

gaunt orbit
#

Weird

lucid iron
#

Assuming this is farm building

lucid iron
#

Wren they use this in vanilla for trout derby

#

It's a new thing i believe

woeful lintel
#

SinZ gave quite a detailed explanation of the use case somewhere above here

gaunt orbit
#

So it's probably fine if I just keep using NameWithoutLocale then

#

Although furniture...

#

NameWithoutLocale probably should include _international assets

#

Argh, complications

#

I don't need more boilerplate for assets there's already so much

#

Maybe I'll make a source generator to handle it

calm nebula
#

_international is every one but English iirc

#

@ivory plume should NameWithoutLocale include _international ?

ivory plume
#

Technically yes, since <asset name>_international is the base asset name, rather than the international locale code.

#

(It makes sense with how the content pipeline works under the hood, but it's a bit of a special edge case at a high level.)

past knot
#

Does anyone know whats going on here. I wasnt aware that the game had an issue loading tiled maps....?

lucid iron
#

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

past knot
#

my bad heres the log. i managed to fix the json so theres no issue there. it just seems to be the map yelling at me

ocean sailBOT
#

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

lucid iron
#

you have to show us the json too

past knot
#

on it Lemme get all of that

ocean sailBOT
#

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

past knot
lucid iron
#

did you use a custom location

past knot
#

Yeah, one i made

lucid iron
#

asking cus i dont see a load to any maps on this json

#

so im presuming you used the deprecated CustomLocations in your main content.json?

past knot
#

oh shoot wait

lucid iron
past knot
#

Oh dang you're right I did

lucid iron
#

that said, im not sure why it tried to load as ContentConfig

#

still recommended to not do this now DokkanStare

calm nebula
#

is anyone else getting random mods not found?

#

2400 is SMAPI itself

clear oxide
lucid iron
# calm nebula

i think the goblin who manages dependencies is on strike

tawdry tundra
#

may someone expand on this

proven spindle
#

Huh, never thought of trying that but I see the logic

#

Okay so:

#

The patch export command generates a file of all items the game currently has loaded for that data set, regardless of whether it comes from a mod or vanilla

#

So patch export Data/Crops will generate a file that has all the crops in it

#

JA adds crops to the game's crops data set

tawdry tundra
#

tysmmmmm

proven spindle
#

And since the patch export will show those crops in vanilla format, it'll basically do the work of converting the format of those crop entries from JA into vanilla/what you need for CP

tawdry tundra
#

aaaaaa THANK YOU

proven spindle
#

The generated file will show up in a 'patch export' folder next to your mods folder

half tangle
#

Does anyone know where the 🔊 icon that shows during a night event (meteorite, summer 2 earthquake, etc.) is located? I tried to find it by checking SoundInTheNightEvent.cs and related code but I'm not seeing a reference to it so I can find it in the content files.

hallow prism
#

so once it's done you do a bit of copy paste, adjust ids and a few things if needed and boom, you converted stuff

tawdry tundra
#

yippppeeee

half tangle
#

yeah, I've looked through Cursors a few times... not saying I couldn't have missed it, but I'm not seeing it

merry rampart
#

I'll be on in a sec I can help look

#

Also I did not know that JA trick. I'll have to remember that

#

i found it

#

it's in cursors_1_6.png

#

@half tangle ^

half tangle
#

Oh, thank you! I did not see it because the code changes the color from the .png's white
Edit: for anyone who sees this later, yes, this is incorrect - I forgot that the game changes the background, not the volume sprite

merry rampart
#

np!

half tangle
#

I was very confused when I didn't see it there on my earlier looks at the file, so I appreciate the second set of eyes pointing it out

crude stump
#

hello, i have a question, i want to change a monster sprite from zero, but i want to make it bigger, like, from 32x32 to 34x52, does the game automatically identifies the size of each sprite? or i need to change some data for this?

lucid iron
#

Monsters are hardcoded as hell

#

What's the monster you need to edit?

clear oxide
#

monsters are a pain in the butt... my Slime Tamer allows for custom monsters but ill be updating it soon due to feedback and learning new things

crude stump
rigid oriole
#

Angry Roger isn't implemented i don't think?

crude stump
#

i'm trying to use content patcher for this

lucid iron
#

There's no behaviors implemented for him and he never appears in the game

#

You would need to make a c# mod to fix that

rigid oriole
#

There's art and a C# class but I don't think an instance of the class is ever instantiated

crude stump
#

well that's a shame

light jasper
#

what's the bot command for item ids?

lucid iron
#

!itemids

ocean sailBOT
rigid oriole
#

So there's some behavior that exists but it never gets used

crude stump
#

i was trying to change all monster sprites, and he was the first one

#

so i used him as a test

#

i didn't know he wans't implemented

lucid iron
#

So for a general answer no im pretty sure their bounds are hardcoded as hell

#

Not all sprites r used either

#

Tea has templates for each monster in the mod files

light jasper
#

(don't do this)

lucid iron
#

Monsters the Framework...

brittle pasture
#

I think monsters sizes are not that hardcoded, the sprite can take a different size than usual

#

still needs C# mind

clear oxide
#

monsters are hardcoded but you can change it with C# & you can define the spritesheet within the code, along with the size

brittle pasture
random helm
#

Hii was wondering if anyone knows how to edit a vanilla map. I made a custom one recently but I wanted to create a path from the vanilla map to the custom map. If anyone could help out that would be nice 🙂

rigid musk
#

You can use content patcher to add warps using EditMap

random helm
#

I have warps , its just theres no pathway in the vanilla map that leads to the custom location. For example in SVE the maps have little roads that lead to their custom map. I'd like to redo the vanilla maps as well if that makes sense 🙂

light jasper
#

coming along 🙂

proven spindle
languid geyser
#

Hey guys, I'm not sure if this is the right place to ask, but I want to make an already existing hair mod compatible with the "more elegant farmer body," but I'm unsure how to do it. The hair fits on the head perfectly; the only issue is that it causes the legs and feet to go back to the original body type.

note: the hair mod author said editing for personal use is okay

random helm
drowsy pewter
languid geyser
tender bloom
#

I’m pretty sure the problems you’re having would be related to odd framework interactions

#

You could try making this a CP hair pack if it’s small enough to fit

#

However, hair mods inherently aren’t supposed to affect body mods

#

I’m guessing that FS somewhere resets the body

#

But also farmed body mods have the weirdest bugs

#

I suspect caching is somewhere to blame with most of them

languid geyser
#

ill let the most jaw dropping beautiful hair mod go then, thank you for the help!

lucid iron
#

Do u think it's because of farmer renderer having it's own content manager

languid geyser
tender bloom
drowsy pewter
#

You should be able to make a lot of those hairstyles as CP hairs just fine

#

its straight forward too

tender bloom
#

I would try that route then!

lucid iron
#

It's not animated right

tender bloom
#

Here’s the guide on making new hairs through CP

languid geyser
#

ALRIGHT ill try to make it a CP! hopefully it goes well 🫡 🫡

tawdry tundra
#

question am i doing anything wrong doesnt seem to convert

valid folio
#

Hi everyone, how are you? I hope it's not too much to ask, but could you check the code I wrote to add a tree? I'm not sure if everything is correct—I tried to include everything in a single file.

inner harbor
#

Hello everyone, excuse me... I am wondering how one might add a new Tailoring Recipe into the game please. The formating for Tailoring.json looks different from the others and I am a little intimidated.

lucid iron
#

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

inner harbor
#

(usually I look at another mod for inspiration but I'm not sure who else does Tailoring)

inner harbor
#

Take an item and put it in the sewing machine to produce a hat

lucid iron
#

ah so u already added the hat item right

inner harbor
#

yep, so Hat is an item, pseudo hat is an object.

#

Like you do witht he Lucky Purple shorts.

lucid iron
#

oh i see

#

and it still takes cloth i assume

inner harbor
#

Issue is that the code for the tailoring looks like this: [ { "FirstItemTags": [ "item_cloth" ], "SecondItemTags": [ "item_ostrich_egg" ], "SpendRightItem": true, "CraftedItemId": "(H)93", "CraftedItemIds": null, "CraftedItemIdFeminine": null, "Id": "(H)93" },

#

so I'm just really wondering how I editData it in.

lucid iron
#

well its kind of like trigger actions

#

you still put entries as a dict

#

but content patcher will append it for you

inner harbor
#

Cool, do I need to define order at all like we used to do with fishponds?

#

(90% of what I know if from copying examples)

lucid iron
#

you can use id_o_your item id as the SecondItemTags

inner harbor
#

I Think I might have it, let me see.

lucid iron
#

to make it basically unique

hallow prism
#
{
    "Changes": [
        /* add item*/
        {
            "LogName": "TailoringRecipes",
            "Action": "EditData",
            "Target": "Data/TailoringRecipes",
            "Entries": {
                "Lumisteria.MtVapius_NevarilHat": {
                    "FirstItemTags": [
                        "item_cloth"
                    ],
                    "SecondItemTags": [
                        "item_nevaril"
                    ],
                    "SpendRightItem": true,
                    "CraftedItemId": "(H)Lumisteria.MtVapius_NevarilHat",
                    "Id": "(H)Lumisteria.MtVapius_NevarilHat"
                },
            }
        },
    ]
}```
#

is how i do it

lucid iron
#

the order only matters if you have a more generic context tag

inner harbor
#

THank you Lumina! I did look in VMV but I didn't see it. was probably lost

hallow prism
#

me : "i could makes tailoring recipes for my hats"
me later : "i made tailoring recipe for my hat, good enough" 😄

inner harbor
#

(If it helps, this was exactly how I was going to nut it out myself)

#

thank you for being ourpioneer. Also I clearly need a more updated version of VMV

hallow prism
#

it's a pretty small file and there's a lot of them so it's easy to be lost

#

and thanks 🙂

inner harbor
#

I"m gonna have wool as the first item I think

#

its just making some stitches so you can see

crude plank
#

that one needs to be manually converted it seems

inner harbor
#

Thanks Chu and Lumina!

tawdry tundra
#

is it like coded differently than the others ?

crude plank
#

no idea, i haven't really looked at any CON mods before

hallow prism
#

hmm, maybe it's a matter of size? i remember kaya having a lot of content

crude plank
#

yeah that is my suspicions as well

#

that the file is too big, since it's not giving me an error or a wrong conversion, just refuses to do anything when the convert button is pressed

safe kraken
#

Heya! I need some help with something. I'm trying to do an indoor/outdoor variants for each season that would change with a toggle and for some reason it only shows the outdoot variant and I don't know why,. Specially cause I tested it in a festival day and it worked but once I slept to go to another day it stopped working. I made it like this (I'm testing in summer)

                "{{ModId}}.RasmodiaSummerIndoor": {
                    "Id": "{{ModId}}.RasmodiaSummerIndoor",
                    "Condition": "SEASON Summer",
                    "Sprite": "Characters/Rasmodia_Summer_Indoor",
                    "Portrait": "Portraits/Rasmodia_Summer_Indoor",
                    "Outdoor": false,
                    "Precedence": -160
                },
                "{{ModId}}.RasmodiaSummerOutdoor": {
                    "Id": "{{ModId}}.RasmodiaSummerOutdoor",
                    "Condition": "SEASON Summer",
                    "Sprite": "Characters/Rasmodia_Summer_Outdoor",
                    "Portrait": "Portraits/Rasmodia_Summer_Outdoor",
                    "Indoor": false,
                    "Precedence": -160
                },```
#

It's like this for the rest of the seasons, I've looked up how SCA does for indoor/outdoor winter and it's like this so I don't know what I'm missing

hallow prism
#

(obviously while respecting the commas and such)

crude plank
#

yeah i thought about it but then went to nap instead and when i woke up i lost all my motivation lol

#

i also didn't 50-50 my mods today

hallow prism
#

"after a nap i'll be rested and more focused" "didn't work", a classic

crude plank
#

i'll try to find motivation tomorrow againSDVkrobusgiggle

safe kraken
#

OKAY NEVERMIND I FOUND THE ERROR I HATE MYSELF

#

I was just missing an "s", god I'm dumb

hallow prism
#

it's ok it will happen again if you continue modding

#

typos, commas, and editing the wrong file all this time are things that just happen

fossil snow
#

hi, if I want to make a new modded event, is there an easier way to test what the event looks like instead of loading the mod into sv?

safe kraken
#

Not the first time something like this happens to me so I'm mostly amused at how I overlooked this

brave fable
tropic quiver
#

how do i get started making mods guys ?

iron ridge
#

!startmodding

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.

brave fable
#

usually people start with an idea or a goal, then get into the brainstorming, then getting to know the tools. if you don't have an aim in mind it's harder to get started

tropic quiver
lucid mulch
brave fable
#

i don't know, i only look at stardew mods hahah

brave fable
tropic quiver
#

yesss haha, mixing my two favs is like a dream

#

what do you recommend for starting out smaller?

#

oh and do you know if you can like add in your own cut scenes? not gonna jump into that but like i been thinking about it lol

tender bloom
#

You certainly can

#

Making new events (one term for cut scenes) unfortunately does mean wrestling with the event syntax, which is 100% possible but not super beginner friendly

#

I’d start with your favorite character maybe?

#

Plenty of crossover mods only do 1 character

tropic quiver
#

oh okay ! thank youuu

lucid mulch
#

Advantage of events is that you can have 'temporary actors' where it's just portrait, sprite, name and dialogue without needing to build a full npc

tropic quiver
#

thats so cool what

#

when you change an npc like mod one, does it also change how they look in the events ?

lucid mulch
#

Yes*

tropic quiver
#

oh sickk !!

#

another question, can you like change things like the intro? where grandpa like dies and leaves you the farm? can you also add letters and stuff... 😭

#

oh and can you change tools? (sorry for all the questions, im having a creative burst lol)

brittle pasture
#

you can retexture almost everything in the game

#

as for the cutscene, you can retexture the images and change the text

#

you can't change how it plays out (without C#), but that's probably good enough

tropic quiver
#

okay !! thank you so much

calm nebula
#

Broken linknlol

lucid iron
#

Are you lost

merry rampart
#

Pretty sure advertising isn't allowed in this server

#

even for stuff like that

valid folio
#

By any chance, does anyone know the sprite path for the tea leaf in SDV?

merry rampart
#

check springobjects

valid folio
#

ok, thanks

ornate locust
#

If you refresh, it should give you the right link from the dependencies. Should

calm nebula
#

Lost

#

Help me find my way home

lucid iron
#

@acoustic summit hello, @crude plank said you can apparently catch Bugs with the fishing rod

crude plank
#

thanks again chu for pinging people for me

lucid iron
#

i feel like this is important enough to ping, but if u desire nexus bug report instead next time lmk

crude plank
#

nono, i also wanted to ping i just wanted to check if they're ok with ping before doing it lol

lucid iron
#

The fishing overlay is having a time...

pine ermine
#

Sooo, am I making XACP now? XML Adapter for Content Patcher?

lucid iron
#

Yes

#

But this time u can just do it as a PR

pine ermine
#

Yay!

lucid iron
#

Launch date in 6-8 weeks

#

I believe in u

pine ermine
#

o7

proven spindle
lucid iron
#

oh interest, i thought the description meant fishing specifically rather than as a net replacement

crude plank
#

integrated wildlife spawns critters when you do different things

#

this is literally, i can use my fishing rod and never have a net

lucid iron
#

This mod also adds a new feature which allows you to catch creatures using fishing rods.

#

Bolb perhaps thats the feature

crude plank
#

oh.

#

completely missed that ax_Panda_Derpy_Dumb

#

sorry

#

well then i'm glad we pinged them to now have confirmation the feature is working as intendedSDVpuffersquee

brave fable
#

catching an ant with a fishing rod sounds like a buddhist parable about a completely impossible task lol

abstract peak
#

I have a question for anyone who knows Fashion Sense. Would it be theoretically possible to make that mod have the farmer reach out their hand? (I'm wondering if I can take a stab at making an umbrella.)

glossy cargo
#

I finally got around to extracting this feature from Archipelago and turning it into a standalone mod 😄
https://www.nexusmods.com/stardewvalley/mods/33722

Nexus Mods :: Stardew Valley

Allows sleeping multi days at once automatically. You can select a set number of days, or sleep until a specific event.

#

I hope some people find use for it sleep more easily kek

proven spindle
#

I wish I could use that irl SDVpufferflat

glossy cargo
#

don't we all bearpat

#

but to be fair, the reason most of us play stardew is to do stuff we can't do irl Sadge

brittle pasture
#

I too wished I could milk pigs for truffle juice irl

versed wyvern
#

Would prefer if I didn't need to sleep at all IRL, so much time wasted I could be using on MODDING KannaWOKE

calm nebula
drowsy pewter
dreamy cedar
#

Hm. Something fishy is going on there.

drowsy pewter
#

Yup

trim sand
#

its also atleast a C+

versed wyvern
#

Susfishious, you could say

lucid iron
#

i always enjoyed the wow!!! cool!!!

acoustic summit
steel plaza
brittle pasture
#

add an entry to Data/Buildings

gleaming granite
#

hi! im so sorry if im interrupting anything 🙇 but i want to get into modding and i'm not too sure on how to go about it... i'm especially interested in making custom npcs

ocean sailBOT
#
Creating a Custom NPC

Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:

gleaming granite
#

thank you!!

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

vernal crest
#

You're also welcome to come back here to ask for help with stuff :)

gleaming granite
#

ooh okay!! tysm

#

i will do my best

shadow fjord
#

heya, Ive been thinking of trying to mod stardew, with just a simple mod, such as a portrait mod, do any of yall know how to get started modding somthing like that, or are there any guides out there??

fossil osprey
#

!gs

ocean sailBOT
fossil osprey
#

Wait wrong one

pine elbow
#

!startmodding

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.

pine elbow
shadow fjord
#

thanks!!!

merry thunder
#

My happiness was so short lived

hard fern
merry thunder
hard fern
merry thunder
#

I just hope it gets fixed soon, I was really excited cryign

merry rampart
#

Nexus has a tendency to mark rar files as virus even tho it isn't. If you uploaded as rar try making it a zip instead

#

Grats on first release!

shadow fjord
#

How do y’all turn a text file into a .json??? I need to do so, but my pc isnt letting me

worldly sundial
#

For win11: if you have that checked then when you rename a file you can see/change .txt to .json

shadow fjord
#

Thanks!

violet grotto
#

I'm still trying to make some more tests to determine an issue, but what could cause a pet to just stand still forever?
My current custom pet has a chance to just look in one direction and stay frozen like that.

I have a suspicion that it's one of these two parts here:

#

THough I'm pretty sure the one that only consists of "null" shouldn't be an issue, since the base-game pets have that.

brittle pasture
violet grotto
#

If that's the case, then I could omit the "Walk" in the picture I showed.

brittle pasture
#

(pls use smapi.io/json next time!)
nothing seems wrong so far. if you have Lookup Anything, enable data mining fields and F1 on the pet, and find the field CurrentBehavior. what does it say?

violet grotto
daring skiff
#

Anyone know of a way to target the menu and load screen music with content patcher? That's not just replacing the audio file.

#

It's not a location afaik.

#

I've been jumpscared by the music one too many times.

brittle pasture
brittle pasture
#

you want to add two entries, one for MainTheme and one for title_night, each replacing it with a file of your choosing

daring skiff
#

My bad. I have been reading through this and the content patcher wiki. I've already done what you suggested, but I would like to not replace the file in the event some other mod might use it.

daring skiff
#

I'm just wondering if you can target the main menu the same way you can target a location.

brittle pasture
#

that code looks good

daring skiff
#

Snippet of what I'm talking about. A Content Patcher config where I give the Joja Mart its own music and not ambience.wav.

    {
      "Action": "EditData",
      "Target": "Data/Locations",
      "TargetField": [
        "JojaMart",
        "Music"
      ],
      "Entries": {
        "JojaMart_Background": {
          "ID": "JojaMart_Music",
          "Track": "JojaMart_Background"
        }
      }
    }
brittle pasture
#

the main menu is not a location, it just is

#

the game calls Game1.changeMusicTrack("MainTheme"); directly

clear oxide
#

i got a question about #mod-showcase how does it update when a new mon is posted on Nexus ?

brittle pasture
#

it doesn't, you make a new showcase

clear oxide
#

oh i thought the bot was reading off api from nexus

hard fern
violet grotto
#

The pet was facing left, after the animation ended.

#

Wait, I see some extra commas here. Could tht be an issue?

brittle pasture
#

that doesn't matter

violet grotto
#

Like after "CallRight" the last "null" in the top part.

#

Oh...

brittle pasture
#

it doesn't animate?

violet grotto
#

Oh!

#

Then it's the "null" part.

#

Since it holds th current animation.

clear oxide
brittle pasture
#

I wonder if animation end behavior changes only activates if it's not looping

violet grotto
#

I'll have to test that.

#

Or look at the wiki again.

clear oxide
brittle pasture
#

if a non-looping animation changes into itself the game doesn't restart it

violet grotto
woeful lintel
#

Is there a way to tell if there's UI elements under the cursor when handling the ButtonPressed event? I just realized that FF can take from / place in slots through the menu...

violet grotto
#

Thanks for the help!

ocean sailBOT
#

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

violet grotto
#

Damn it

clear oxide
#

this is what i did

steel plaza
#

is there a command for making custom buildings?

violet grotto
woeful lintel
clear oxide
#
_cancelButton = new ClickableComponent(
                new Rectangle(_bounds.X + 650, _bounds.Y + 400, 120, 60),
                "Cancel"
            );
brittle pasture
#

is this a world interaction on the furniture? I think I'd just check that there's no menu active

woeful lintel
brittle pasture
#

oh you mean HUD elements
in which case I think iterate through Game1.onScreenMenus should grab them

#

(I thought you were referring to active menus lol)

#

then you can check bounds

clear oxide
woeful lintel
#

I think I have part of a solution now, but I'll just explain the situation just to be clear:
FF has a keybind to place or remove stuff from Furniture slots (like a table), and this action happens by going through Furniture in the map when the keybing is pressed by using the SMAPI ButtonPressed event hook.
My goal here is to prevent this action when the Furniture is not visible, so either it's behind HUD elements, or the game's menu (with inventory, map, etc) is open. I don't think (?) it's necessary to check UI buttons, just their bounding box would be enough.

clear oxide
#
Vector2 tile = furniture.TileLocation;
Vector2 screenPos = Game1.GlobalToLocal(Game1.viewport, tile * Game1.tileSize);
Rectangle screenBounds = new Rectangle(0, 0, Game1.viewport.Width, Game1.viewport.Height);

// Checks if furniture tile is on screen.
if (!screenBounds.Contains(screenPos.ToPoint()))
{
    return;
}
woeful lintel
#

that doesn't tell me if it's hidden behind a menu or HUD element

woeful lintel
clear oxide
upbeat mango
#

I'm just suffering right now

brittle pasture
#

what top left one

woeful lintel
brittle pasture
#

the clock/etc is top right and that should also be in onScreenMenus

woeful lintel
#

that thing

#

lmao I'm switching left and right now

#

I did that:

            Point screen_pos = e.Cursor.GetScaledScreenPixels().ToPoint();

            foreach (StardewValley.Menus.IClickableMenu menu in Game1.onScreenMenus)
            {
                if (menu.isWithinBounds(screen_pos.X, screen_pos.Y))
                {
                    log($"ON MENU {menu.ToString()}");
                }
            }

And it doesn't log anything when clicking on this, or when clicking in the game menu

brittle pasture
#

hmm, I'm already on bed so can't check the code, though I wouldn't be surprised if the bounds check is just not implemented for that one because it's not clickable in the first place

woeful lintel
#

yeah, makes sense

clear oxide
# woeful lintel that thing
int mouseX = Game1.getMouseX();
int mouseY = Game1.getMouseY();

// Block click if menu is open
if (Game1.activeClickableMenu != null)
    return;

// Block click if mouse is over any main HUD component
foreach (var menu in Game1.onScreenMenus)
{
    if (menu.isWithinBounds(mouseX, mouseY))
        return;
}
#

am i missing any ?

woeful lintel
#

I'll try that, thanks!

quaint kiln
#

i won't lol

woeful lintel
clear oxide
#

yea i thought that is what they would be called in the UI , ill have to actually check the ui coding

brittle pasture
#

if you're using AI, please don't

#

or at the very least check that whatever the autocompleter filled in actually exists before just posting it

clear oxide
#

no im looking at source code now

quaint kiln
#

end the stigma dudes dudettes and esteemed others

brittle pasture
#

IIRC the money dial/quest button/etc. are all in onScreenMenus already

quaint kiln
#

okay sorry lol

woeful lintel
#

logging everything in onScreenMenus give me this:

[18:03:44 DEBUG Furniture Framework] StardewValley.Menus.Toolbar
[18:03:44 DEBUG Furniture Framework] StardewValley.Menus.DayTimeMoneyBox
[18:03:44 DEBUG Furniture Framework] StardewValley.Menus.BuffsDisplay
[18:03:44 DEBUG Furniture Framework] StardewModdingAPI.Framework.SChatBox

Gonna check the bounding box of DayTimeMoneyBox and BuffsDisplay, the SMAPI doc says that inputs on the chat are not passed to the API

clear oxide
woeful lintel
#

yup, debugging why isWithinBounds doesn't work for this menu

clear oxide
#

i wonder if this would work than

if (Game1.onScreenMenus.Any(menu => menu.bounds.Contains(Game1.getMouseX(), Game1.getMouseY())))
{
    return;
}
frozen apex
#

hey guys, so...I don't know why this code just isn't working... like what am I missing?

{ "Action": "EditData",
"Target": "Characters/Dialogue/Wizard",
"When": { "Time": "{{Range: 1200, 2600}}"},
"Update": "OnTimeChange",
"Entries": {"WizardHouse8": "{{i18n:Wizard_Greeting1}} ${{e3}} #$b#{{i18n:Wizard_Greeting2}} ${{e3}} #$e#{{i18n:Wizard_Greeting3}} ",} },

Whenever the conversation reaches #$e#, it loops and restart the conversation again instead of keep going to {{i18n:Wizard_Greeting3}}...

#

Also...noob question 😅 how do i write in those fancy code boxes everyone has here on discord?

brittle pasture
woeful lintel
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.

clear oxide
frozen apex
woeful lintel
#

found out the issue: DayTimeMoneyBox overloads isWithingBounds to only check the zoom buttons and the quest button

frozen apex
brittle pasture
woeful lintel
#

long story short, this works:

foreach (StardewValley.Menus.IClickableMenu menu in Game1.onScreenMenus)
{
    Rectangle bounding_box = new(menu.xPositionOnScreen, menu.yPositionOnScreen, menu.width, menu.height);
    if (bounding_box.Contains(screen_pos)) return;
}
clear oxide
vernal crest
frozen apex
#

It's a dynamic token for expression list

        {
            "Name": "e0",
            "Value": "0",
            "When": {
                "Query: '{{Portrait Mode}}' = '32' OR '{{HasMod}}' = ('Jellonip.EMagnusPort, Jellonip.CMagnusPort')": true
            }
        },
        {
            "Name": "e1",
            "Value": "1",
            "When": {
                "Query: '{{Portrait Mode}}' = '32' OR '{{HasMod}}' = ('Jellonip.EMagnusPort, Jellonip.CMagnusPort')": true
            }
        },
        {
            "Name": "e2",
            "Value": "2",
            "When": {
                "Query: '{{Portrait Mode}}' = '32' OR '{{HasMod}}' = ('Jellonip.EMagnusPort, Jellonip.CMagnusPort')": true
            }
        },

//Expression list Compression
        {
            "Name": "expressionList",
            "Value": "|e0={{e0}} |e1={{e1}} |e2={{e2}} |e3={{e3}} |e4={{e4}} |e5={{e5}} |e6={{e6}} |e7={{e7}} |e8={{e8}} |e9={{e9}} |e10={{e10}} |e11={{e11}} |e12={{e12}} |e13={{e13}} |e14={{e14}} |e15={{e15}} |e16={{e16}} |e17={{e17}} |e18={{e18}} |e19={{e19}} |e20={{e20}} |e21={{e21}} |e22={{e22}} |e23={{e23}} |e24={{e24}} |e25={{e25}} |e26={{e26}} |e27={{e27}} |e28={{e28}} |e29={{e29}} | e30={{e30}} |e31={{e31}}"
        },```

It's not my code. This is from Jellonips RRRR code to get 32 portrait expressions instead of the default with only a few. But it's suppose to work in the same way as is $h etc, as I understands it
frozen apex
# vernal crest What's the `${{e3}}` meant to be?

Since I'm still super noob at coding. I'm borrowing a lot of codes from those who knows how to code, instead of relying on AI...(AI only gives me bad code). This code is mainly for my own use as well, and mainly for learning ^^

vernal crest
frozen apex
#

I've managed to make #$e# work when applied to the ending of events /end dialogue Wizard \"{{i18n: Wizard.spring.01 {{expressionList}} }}\"",

#

and then in i18n default folder having "Wizard.spring.01": "$1#$b#I'm a wizard. $3#$e#You're not.",

vernal crest
# frozen apex Nope, stops at "I'm a wizard" and then loops

Try removing the condition so the patch is applied all the time. Not as a permanent fix, but for identifying what's causing it to work incorrectly. Alternatively you could do a patch export on the dialogue the way it is now and see if it's showing up correctly there (patch export Characters/Dialogue/Wizard)

frozen apex
#

You mean removing the conditions so it becomes like this?

"Target": "Characters/Dialogue/Wizard",
"Entries": {"WizardHouse8": "{{i18n:Wizard_Greeting1}} ${{e3}} #$b#{{i18n:Wizard_Greeting2}} ${{e3}} #$e#{{i18n:Wizard_Greeting3}} ",} },```
#

Do you mean writing patch export Characters/Dialogue/Wizard into SMAPI?

#

Another super noob question 😅 How do I make these kinds of discord boxes?

vernal crest
#

Yes and yes. To make a code line, you just put one backtick instead of three. ` Like this, only yours will become a code line (I'm using the backslash to escape the backtick so you can see it) `

frozen apex
#

Okay, also, thank you soo much for you endless patience ❤️

shadow fjord
#

Do you guys know how to make non pixel art portraits? I’m trying to make a portrait mod, but Im not sure if using art with like, 100x more pixels would even work

vernal crest
vernal crest
shadow fjord
#

Okay!

#

Thanks!

frozen apex
#

Also I tried both solutions, and still the same results. Got this from SMAPI as well patch export Characters/Dialogue/Wizard [Content Patcher] Exported asset 'Characters/Dialogue/Wizard' to 'C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley\patch export\Characters_Dialogue_Wizard.json'.

#

Don't really know if that's how it's suppose to look like...?

vernal crest
vernal crest
#

Okay, looks correct. I wonder if it's related to it being location dialogue.

frozen apex
#

Could the space between the dialogue and $3#$e# make any difference?

vernal crest
#

Try changing it to a daily dialogue key instead. The fact that location dialogue is replayable might make #$e# go funny. I never use #$e# because I hate it so I'm not familiar with all its quirks.

frozen apex
#

Ok, so like this instead?

"Target": "Characters/Dialogue/Wizard",
"Entries": {"spring_Mon8": "Hi.$1#$b#I'm a wizard.$3#$e#You're not.",}```
vernal crest
frozen apex
#

So I guess #$e# does not play well with location dialogue

vernal crest
#

Okay if that was the change that worked, it looks like #$e# won't work with location dialogue because it's repeatable. So stick with #$b#.

frozen apex
#

Sounds like it. Thank you for the help! I just change out my location dialogues to daily dialogues instead

steel plaza
#

is there already a mod that add a completely new pet horse? one that dont replace the existing horse?

dire hatch
#

Does anyone know what to do when Content Patcher doesn't recognize your .json file as valid?

unreal spoke
#

!json
That just means there's some kind of error, probably a comma, a bracket or something.

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.

dire hatch
#

tyyy

unreal spoke
#

(Basically, upload your json, share the link here and someone will take a look.)

unreal spoke
#

There's a missing comma between the brackets on lines 20 and 21. I've next to no idea how map patches and NPCs work under the hood, though, so that's all I'll say.

minor falcon
#

does anyone know if it's possible to get a light periwinkle blue glow for a lamp? the mod uses FF so I'm using a custom light source. I've tried changing the hue and saturation of the light source to no end but I cant get a light blue color

#

here's a pic for reference

flat sluice
# minor falcon does anyone know if it's possible to get a light periwinkle blue glow for a lamp...

Not sure if I'll help, but a basic recomendation is to follow the mod's docs.
Something about lights is here:
https://github.com/Leroymilo/FurnitureFramework/blob/main/doc/Complex Fields/Lights.md
Never used FF, though, so no idea how it should work.

GitHub

A Mod Framework for Stardew Valley to give more options when making custom Furniture. - Leroymilo/FurnitureFramework

minor falcon
#

there's no information on how to tweak your light source for a specific color, so that's why I thought I'd ask here

#

I've also tried using the Color property, but for some reason I cant see any difference after using it?

flat sluice
dire hatch
#

Okay so I added the "," yet it still shows the same errors

woeful lintel
flat sluice
# dire hatch https://smapi.io/json/none/41ea35443ae64763ab5e88af4db9aadf#code.21

Corrected code:

  "Format": "2.5.0",
  "Changes": [
    {
      "Action": "Load",
      "Target": "Character/Fyodor",
      "FromFile": "assets/Fyo.png"
    },
    {
      "Action": "EditData",
      "Target": "Characters/Dialogue/Fyodor",
      "Entries": {
        "Mon": "hello world",
        "Tue": "test1",
        "Wed": "test2",
        "Thu": "test3",
        "Fri": "test4",
        "Sat": "test5",
        "Sun": "test6"
      }
    },
    {
      "Action": "EditMap",
      "Target": "Maps/Town",
      "Add": "Characters/Fyodor 27 67 2 Fyodor 500 600",
      "When": {
        "Time": "600 2600",
        "Weather": "Sun, Cloud, Wind, Storm, Snow"
      }
    }
  ]
}```
woeful lintel
#

One thing that might be hard to work around is that what Light Sources don't apply their light texture directly as-is, they remove a chunk of darkness from the game's night time filter iIrc

hollow gate
#

hey anyone can help me?why I add reference to StardewModdingAPI.dll but nothing happen T.T

#

I'm surely added it

minor falcon
#

upon further experimentation, I cans see that the color property does leave a tint, but still having trouble getting a blue color...the only color I manage to make is green

#

sorry, internet got cut
So, i did as you said made one lamp's color HotPink and the others Blue.

flat sluice
minor falcon
#

yeah, I think I need to change the color of the light source, but that's what I'm having trouble with

finite ginkgo
steel plaza
#

wait...how do i make a manifest for my mod, when i will be using both c# and content patcher?

flat sluice
steel plaza
#

can't i just put the entrydll line in the same manifest or no?

calm nebula
#

No

vernal crest
hollow gate
woeful lintel
flat sluice
calm nebula
#

(There is a helpful thing you can do via mod build config)

vernal crest
#

Bundling the content pack?

calm nebula
#

Yes!

#

Deploying it

#

Smth

vernal crest
#

Yeah I do that, it's nice for putting it all nice and tidy into the folders ready for play.

steel plaza
#

enlighten me please

vernal crest
#

Less nice for making changes to the content pack while the game is running, but we can't have everything haha

vernal crest
minor falcon
woeful lintel
#

I'm running tests on my side but I just realized that I broke the reload command at some point, so I'm fixing that first

#

welp, making the light texture white makes the game darker, which can be usefull

minor falcon
#

Just noticed another problem: when the lamp is at it's right rotation, the position of the light source is off. is there a way to have different light positions for each rotation?

woeful lintel
#

yes, the "Lights" field is directional

#

the "Position" field of the light itself is directional, it's even easier to do

#

Ok, so after some tests: you have to set the color of the light texture as the complementary of the color you want, and the "Color" field only works if the texture is white...

minor falcon
#

I see lemme try

woeful lintel
#

I should add color code support as well, it's not very hard to do...

minor falcon
woeful lintel
#

I could add a thing so that it's possible to put "#FF00FFFF" instead of "Aqua", which gives more freedom for the color

calm nebula
#

There is a utility method for that

#

String to Color or smth

woeful lintel
#

I'm thinking about also inverting the color when it's a light Source to make tint more intuitive with the "Color" field

calm nebula
#

Makes sense!

woeful lintel
#

but I'm not sure how I could fix the fact that the color won't apply to the default black texture since it's multiplicative...

#

right now, I'm just passing the color to SpriteBatch.Draw

#

here's an idea: having the Color field default to Black for Light Source and White for Light Glows, and instruct modders to provide a white texture in all cases.

#

no, that doesn't make sense, it should default to White in both cases, but take the complementary color when it's a Light Source, so the default white turns to black

minor falcon
#

one of the hardest parts of making this mod was making the light texture the right color, so it would be great if the process was made simpler (by always providing a white texture)

#

@woeful lintel
Also, can I get some help with the light position? Say, if the light position is
"X": 34, "Y": -48
and I want the right rotation to have a light position of
"X": 20, "Y": -48
how would I do that?

woeful lintel
#

you can change the position for each rotation independently

minor falcon
#

oh great! ill do it rn

#

thanks Leroy 🙂

woeful lintel
#

no problem!

steel plaza
#

how do i send my code here cleanly? like what is the command(the !)?

woeful lintel
#

!embedcode

ocean sailBOT
#

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

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

woeful lintel
vernal crest
#

If it's a small snippet, a code block is ok. If it's going to take up the whole screen, we prefer that people send a json validator link (the website Leroy mentioned).

steel plaza
#

ok ok i will, sorry if im asking too many questions still new to modding

crisp marlin
#

Where would I find the data for the stone chest mail delivery in the game files? I'm interested in unpacking it to see the correct syntax for attaching a crafting blueprint to a letter.

I'm at the point in my mod where the letter is showing up, the crafting recipe is appearing (proven via CJB Item Spawner) but the letter shows the syntax literally instead of just attaching a blueprint, so I assume I'm doing something wrong.

Cause the stone chest recipe shows up via mail after you complete the quest, I figured that's where I could see what syntax actually works.

#

I have that pack/unpack app and Staredew Hack unpacked files, I know how to get it just not which file to look at

ivory plume
# steel plaza https://smapi.io/json/content-patcher/0e59b1d034824f8590fd185e357f70c5 - here is...

A few issues:

  • You'll need to add the locations for the maps too; see location data on the wiki (and the 'simple location' example).
  • You should ideally use unique names for mod assets added to the Content pipeline to avoid conflicts (e.g. Maps/{{ModId}}_GarageTiles).
  • I'm not sure what Maps/Buildings is, but PatchMode doesn't make sense for an "Action": "Load" patch and there's no Position field for any patch type.
  • In your Data/Buildings patch: the BuildPrice field should be BuildCost; the indoor + tilesheets + tilesheetIndex fields don't exist; and materials should be BuildMaterials and use a different format. See buildings on the wiki, and I don't recommend using AI to generate mod code (it's usually wrong).
vernal crest
crisp marlin
crisp marlin
#

would this be how you would say in the manifest "you need Content Patcher and Machine Terrain Framework for this to work":

{
"Name": "Bat Boxes",
"Author": "fdoom6",
"Version": "1.0.0",
"Description": "Adds a craftable bat box that attracts bats.",
"UniqueID": "fdoom6.BatBoxes",
"EntryDll": "BatBoxes.dll",
"MinimumApiVersion": "3.0.0",
"UpdateKeys": [],
"Dependencies": [
{
"UniqueID": "Pathoschild.ContentPatcher",
"IsRequired": true
},
{
"UniqueID": "selph.CustomTapperFramework",
"IsRequired": true
}
]

}

I was copying the manifest from Cornucopia that looks like this, asking in case I misinterpreted something:

{
"Name": "Cornucopia - Artisan Machines",
"Author": "Cornucopia",
"Description": "An additional Artisan Goods and Machines mod for Stardew Valley 1.6 Content Patcher",
"Version": "1.0.9",
"MinimumApiVersion": "4.0.0",
"UniqueID": "Cornucopia.ArtisanMachines",
"UpdateKeys": ["Nexus: 24842"],
"ContentPackFor": {
"UniqueID": "Pathoschild.ContentPatcher"
},
"Dependencies": [
{
"UniqueID": "selph.ExtraMachineConfig",
"IsRequired": true
},
{
"UniqueID": "Cornucopia.MoreCrops",
"IsRequired": false
},
{
"UniqueID": "Cornucopia.MoreFlowers",
"IsRequired": false
}
]
}

lucid iron
#

So the type of content pack you are making is content parcher

#

Which is what cornucopia put in the contentpackfor section

#

And then, machine terrain framework adds more features, which is akin to extra machine configs in cornucopia

#

So it goes in the dependencies section

crisp marlin
#

ok, so, like, that's assumed then, don't need it? Should I still call out machine terrain?

lucid iron
#

You cannot have a mod with both content pack for and entry dll

#

If you have both you basically just make 2 mods with separate manifests that you ship as 1 thing

crisp marlin
#

Ya.....I see that, and honestly I managed to make it work on my own game like that, thinking of ways to fuse them that won't break stuff (don't worry all reference to JSON assets are gone lol), you may have seen earlier, it's mostly appearing now, having both isn't technically breaking anything, but I can see why 2 in 1 is not the best

#

I think I'll try moving the ContentPack folder out of the mod folder and adding data from it to my main one to see how it goes, if it messes up I can always put that guy back in

hallow prism
#

i want to add a buff to an item (and not a bug like initially written)

                "Lumisteria.MtVapius_ArtisanGoods_RosemaryTea": {
                    "Name": "Myriadin Tea",
                    "DisplayName": "{{i18n: MtVapiusRosemaryTea_Translated}}",
                    "Description": "{{i18n: MtVapiusRosemaryTea_Description_Translated}}",
                    "Edibility": "15",
                    "Type": "Basic",
                    "Category": -26,
                    "Price": 164,
                    "Texture": "Mods\\Lumisteria.MtVapius\\ArtisanGoods",
                    "SpriteIndex": 8,
                    "ContextTags": [
                        "mt_vapius",
                        "color_green",
                    ],
                    "IsDrink": true,
                    "Buffs": [
                        {
                            "Duration": 500,
                            "CustomAttributes": {
                                "FarmingLevel": 0,
                                "FishingLevel": 0,
                                "MiningLevel": 0,
                                "LuckLevel": 1,
                                "ForagingLevel": 0,
                                "MaxStamina": 0,
                                "MagneticRadius": 0,
                                "Speed": 0,
                                "Defense": 0,
                                "Attack": 0,
                                "Immunity": 2.0,
                            },
                            "CustomFields": {}
                        },
                    ],
                },```
Wiki says that "immunity" is a valid field but only the luck is displayed. Any workaround/solution/change?
#

the unpacked data/objects list this field, but maybe i need to make like a buff in data/buffs or whatever and then call this one?

brittle pasture
#

the new attributes added in 1.6.9 don't show icons sadly

#

you'd need data/buffs yeah

hallow prism
#

ok

#

and then how do i "call" it?

#

because maybe i can see about calling an existing immunity buff or something

brittle pasture
#

the buffid field

hallow prism
#

thanks 🙂

gentle rose
#

@ivory plume idk if you've been informed already and I keep forgetting to mention but the smapi log parser website has been having some parsing issues recently to do with mod names and error messages, I've seen this a few times now on several different logs from different people

ivory plume
odd ginkgo
#

Hey all, working on a 14heart event... is it not possible to have events on Ginger Island? I'm trying to start on Island_W but the game is telling me the event doesn't exist

hallow prism
#

if there's no event here invanilla

#

you need to load an event file

#

(put a priority that isn't preventing other mods to do the same)

#

then edit it

#
                    "Buffs": [
                        {
                            "Duration": 500,
                            "CustomAttributes": {
                                "FarmingLevel": 0,
                                "FishingLevel": 0,
                                "MiningLevel": 0,
                                "LuckLevel": 1,
                                "ForagingLevel": 0,
                                "MaxStamina": 0,
                                "MagneticRadius": 0,
                                "Speed": 0,
                                "Defense": 0,
                                "Attack": 0,
                                "Immunity": 2.0,
                            },
                            "CustomFields": {}
                        },
                        {
                            "BuffId": "Lumisteria.MtVapius_ImmunitySmall",
                            "Duration": 500,
                            "CustomFields": {}
                        },
                    ],```
My current attempt, but i still don't have any immunity buff listed
odd ginkgo
hallow prism
#
  "Changes": [
    //Buffs entries
    {
      "LogName": "Buffs Data",
      "Action": "EditData",
      "Target": "Data/Buffs",
      "Entries": {
          "Lumisteria.MtVapius_ImmunitySmall": {
            "DisplayName": "Immunity",
            "IsDebuff": false,
            "GlowColor": "#7F22007F",
            "Duration": 300,
            "MaxDuration": -1,
            "IconTexture": "TileSheets\\BuffsIcons",
            "IconSpriteIndex": 21,
            "Effects": {
              "CombatLevel": 0.0,
              "FarmingLevel": 0.0,
              "FishingLevel": 0.0,
              "MiningLevel": 0.0,
              "LuckLevel": 0.0,
              "ForagingLevel": 0.0,
              "MaxStamina": 0.0,
              "MagneticRadius": 0.0,
              "Speed": 0.0,
              "Defense": 0.0,
              "Attack": 0.0,
              "AttackMultiplier": 0.0,
              "Immunity": 2.0,
              "KnockbackMultiplier": 0.0,
              "WeaponSpeedMultiplier": 0.0,
              "CriticalChanceMultiplier": 0.0,
              "CriticalPowerMultiplier": 0.0,
              "WeaponPrecisionMultiplier": 0.0
            },
            "ActionsOnApply": null,
            "CustomFields": null
          },
      }
    },
  ]
}```
#

my buff entry

#

feel free to ping me with suggestion of fix

brittle pasture
hallow prism
#

in what sense? adding a description field?

brittle pasture
#

yes

hallow prism
#

hmm, it's listed as optional but i can always see

brittle pasture
#

it shows some text before the buff effects, most of the time for flavor

hallow prism
#

nope, maybe i need an explicit id for both buffs

brittle pasture
#

oh so the icon doesn't show at all?

#

weird cuz the code looks fine to me

hallow prism
#

yeah the icon isn't showing, i tried changing the order of patches and it's the same (added explicit ids too)

#

well i will drop that for now and see later

#

(but again feel free to ping/require additional data)

lucid iron
#

What if u give it another field like speed does that make it work

#

Also worth trying debug action AddBuff <the buff id>

hallow prism
#

let's buff the buff and try

#

still no buff on the tea. Using command briefly shows a buff that quickly disappears

acoustic summit
hallow prism
#

there's a different scale between buff and food buff, but i feel it should still be listed in the food and appears briefly?

lucid iron
#

I guess it's 2 issues

acoustic summit
#

I mean in reference to what happened when you used the command, not sure how it might be different when as a food buff with a different duration

lucid iron
#

Tea not call buff correctly

#

And duration short

hallow prism
#

yeah duration short is fixed now

#

it's just that i set a duration using the food buff duration in buff duration not being aware they were different

#

now, no idea why my tea isn't properly calling the buff
and my buff when used by action is only showing the speed buff but this may be because immunity is special

#

but then the big question would be "how do i know i'm indeed changing the value properly" (aka "does the field do anything?)

#

still i don't get why the buff isn't buffing, am i at wrong level or something?

acoustic summit
hallow prism
#

i tried that but didn't put updated data

#

                    "Buffs": [
                        {
                            "ID": "Lumisteria.MtVapius_RosemaryTeaImmunitySmall",
                            "BuffId": "Lumisteria.MtVapius_ImmunitySmall",
                            "Duration": 500,
                            "CustomFields": {}
                        },
                        /*{
                            "ID": "Lumisteria.MtVapius_RosemaryTeaLuckSmall",
                            "Duration": 500,
                            "CustomAttributes": {
                                "FarmingLevel": 0,
                                "FishingLevel": 0,
                                "MiningLevel": 0,
                                "LuckLevel": 1,
                                "ForagingLevel": 0,
                                "MaxStamina": 0,
                                "MagneticRadius": 0,
                                "Speed": 0,
                                "Defense": 0,
                                "Attack": 0,
                                "Immunity": 2.0,
                            },
                            "CustomFields": {}
                        },*/
                    ],```
Current version (with second buff commented)
#

currently in this version no buff is showing at all

hallow prism
#

does someone know of a food using a custom buff? i wonder if it's some limitation/case that wasn't tested

#

in which case it may worth pinging pathos to check?

steel plaza
lucid iron
#

hm i will try this n maybe report with min repro

hallow prism
#

thanks, let me know if you do manage to do it so i can compare and see

#

(also i hate minimal repro so yay i admire you for the will to make one and am grateful for sparing me this)

lucid iron
#

immunity is invisible but attack is not

#

oh i crash game somehow 3sSmolMiku

hallow prism
#

is it the raw buff or food one?

lucid iron
#

this is a Data/Buffs buf

#

i do see CustomAttributes having immunity tho, gonna try that in the proper repro pack

hallow prism
#

on the food level?

#

i tried that too without success

lucid iron
#

so i think the effect is successful, but theres no + immunity draw in the tooltip

#

this one is with food buff

hallow prism
#

ok

#

so it is applied but invisible?

#

which can be i suppose conveyed by a custom buff that will have a tooltip like "gives some immunity"?

calm nebula
#

Check the squid ink

lucid iron
#

BuffsDisplay.cs is missing entry for immunity yea

#

squid ink?

hallow prism
#

"28": { "DisplayName": "[LocalizedText Strings\\StringsFromCSFiles:Buff_Ravioli_Title]", "Description": "[LocalizedText Strings\\StringsFromCSFiles:Buff_Ravioli_Description]", "IsDebuff": false, "GlowColor": null, "Duration": 180000, "MaxDuration": -1, "IconTexture": "TileSheets\\BuffsIcons", "IconSpriteIndex": 28, "Effects": null, "ActionsOnApply": null, "CustomFields": null },
that helps me not that much 😄

#

Squid Ink Ravioli Buff.png Squid Ink Ravioli Buff You are immune to debuffs Consuming Squid Ink Ravioli
Chu this one

lucid iron
#

"28" is just hardcoded in a bunch of places lol

#

basilisk paw is the same way

hallow prism
#

i'm not surprised

lucid iron
#

so yea lumi just put desc i guess

hallow prism
#

ok so my next question is : i can either apply the buff directly to food (but it will not show because there's no tooltip) or have a custom buff with a tooltip

#

BUT

#

currently one of my issue is : custom buff (in buff data) exists

#

but food doesn't want to use it

steel plaza
#

is this correct?

hallow prism
#

how do i force food to behave?

lucid iron
#

hm that one i got it to work psure NotteThink

hallow prism
#

ok do you have the format? mine may be not correct

hallow prism
#

but maybe not all nospawn true

lucid iron
#

interesting its not overwriting 3sSmolMiku

hallow prism
#

(?)

lucid iron
#

when i ate apple with this buff and then eat spicy eel they seem to keep both buff

#

weird

hallow prism
#

hmm yeah since id is food it should be overwritten

#

writted, writ..; whatever

lucid iron
#

doing it as food buff like this at least does the overwrite

hallow prism
#

i will copy paste some stuff and test

#

maybe because in the first case it does add a buff by its id and then doesn't change the food one because it's basically "empty"

lucid iron
#

displayname is ignored tho

#

yea it looks like the food/drink thing is special for food

#

or rather, for buffs without a BuffId

hallow prism
#

i still can't manage to have a buff displayed

                "Lumisteria.MtVapius_ArtisanGoods_RosemaryTea": {
                    "Name": "Myriadin Tea",
                    "DisplayName": "{{i18n: MtVapiusRosemaryTea_Translated}}",
                    "Description": "{{i18n: MtVapiusRosemaryTea_Description_Translated}}",
                    "Edibility": "15",
                    "Type": "Basic",
                    "Category": -26,
                    "Price": 164,
                    "Texture": "Mods\\Lumisteria.MtVapius\\ArtisanGoods",
                    "SpriteIndex": 8,
                    "ContextTags": [
                        "mt_vapius",
                        "color_green",
                    ],
                    "IsDrink": true,
                    "Buffs": [
                        {
                          "Id": "Drink",
                          "BuffId": "Lumisteria.MtVapius_ImmunitySmall"
                        },
                    ],
                },```
#

i feel i'm playing a game "spot the differences" and failing at it

lucid iron
#

can u send Lumisteria.MtVapius_ImmunitySmall

hallow prism
#
  "Changes": [
    //Buffs entries
    {
      "LogName": "Buffs Data",
      "Action": "EditData",
      "Target": "Data/Buffs",
      "Entries": {
          "Lumisteria.MtVapius_ImmunitySmall": {
          "DisplayName": "Immunity +2",
          "Duration": 10000,
          "IconTexture": "TileSheets/BuffsIcons",
          "IconSpriteIndex": 21,
          "Effects": {
            "Immunity": 2
          }
          },
      }
    },
  ]
}```
#

the buff when added with debug action AddBuff Lumisteria.MtVapius_ImmunitySmall

#

(so it's not the classic "oh i forgot to include the file")

lucid iron
#

hmm the tooltip didnt show up

#

why...

lucid iron
hallow prism
#

yeah that is what puzzle me

#

you had a secondary buff, right?

#

maybe i need to try that

lucid iron
#

no i didnt

hallow prism
#

me earlier : "hey it'll be fun to have a non classic stat buff like immunity"
me now : (regret)

#

ok this is the patch export
"Lumisteria.MtVapius_ArtisanGoods_RosemaryTea": { "Name": "Myriadin Tea", "DisplayName": "Rosemary Tea", "Description": "It increase resistance to debuffs.", "Type": "Basic", "Category": -26, "Price": 164, "Texture": "Mods\\Lumisteria.MtVapius\\ArtisanGoods", "SpriteIndex": 8, "ColorOverlayFromNextIndex": false, "Edibility": 15, "IsDrink": true, "Buffs": [ { "Id": "Drink", "BuffId": "Lumisteria.MtVapius_ImmunitySmall", "IconTexture": null, "IconSpriteIndex": 0, "Duration": 0, "IsDebuff": false, "GlowColor": null, "CustomAttributes": null, "CustomFields": null } ], "GeodeDropsDefaultItems": false, "GeodeDrops": null, "ArtifactSpotChances": null, "CanBeGivenAsGift": true, "CanBeTrashed": true, "ExcludeFromFishingCollection": false, "ExcludeFromShippingCollection": false, "ExcludeFromRandomSale": false, "ContextTags": [ "mt_vapius", "color_green" ], "CustomFields": null },

#

let me try something silly

#

ok so i tried making it food but no change

#

(rather than drink)

#

i may have some mod interaction because i don't see why you have something so wildly different than me

lucid iron
#

i only have 3 mods installed

#

content patcher the test pack and console commands

#

gonna test with my typical setup now

hallow prism
#

meanwhile i am doing a limited group to see if that changes anything

lucid iron
#

Myriadin Tea already exists right

hallow prism
#

yes

#

ok there is a mod interaction somewhere because i DO get my buff applied (with still the limitation of invisible datas) in limited set up

lucid iron
#

the importants of min repro 3sSmolMiku

hallow prism
#

i didn't expect something weird to interact

lucid iron
#

if u 5050 it out im curious what it was

hallow prism
#

the base game features are weird too, this doesn't help 😄

#

it's apparently not spacecore/ie/ftm/esca modding plugin

lucid iron
#

i would look at mods that deal with tooltip somehow

#

informant uiis2

#

but if u never even get the buff hrm

hallow prism
#

this one i don't have

lucid iron
#

@ivory plume what are the chances vanilla get more of these for the newer buff attributes

hallow prism
#

(setting things up to try a 50/50)

#

(also appreciate the time you put in this)

#

ok it's apparently VPP which makes sense since it's likely editing several buff related things

steel plaza
#

where are the item IDs at? can't find it on the wiki

hallow prism
#

of objects?

#

data/objects

acoustic summit
clear oxide
#

!itemid

ocean sailBOT
brittle ledge
#

...okay, I'm a little stumped on this. I'm trying to do compat with Romantic 10 Heart Elliott. Their mod has mine as a false dependency.
Expected actions:

  • vanilla event is nulled (R10)
  • their version is patched in (R10)
  • I edit their version with a Late priority patch (RWE)

What has actually happened:

  • original event is not nulled and is my version (RWE)
  • SMAPI has yellow about not being able to patch the R10 event because it does not exist
  • R10 event (or at least, one version of it) is in patch export
  • Both events run when debug ebi is done

It seems like my edits are happening after theirs, even though they have a false dependency on mine. Does false dependency, uh, no longer affect load order or something?

tribal ore
#

Is there any way to make it dark during an event without loading in a temporary map without ambient lighting? I want light sources to still work but the room to otherwise be dark?

#

Trying to get the effect of a power outage, with a lantern on a table

brittle ledge
#

There's an event command for ambient light, though I think it'll affect lighting sources in the room as well since it pretty much acts like a filter.

tribal ore
brittle ledge
#

it does, but you can keep the hues the same (lower) value to get darker

#

The second union event in Jorts and Jean uses this (not that I recommend using those events as an easy example of anything SBVLmaoDog )

hallow prism
#

because you do want some of your edit to happen after their

#

so i guess it's not the fact that it's happening but rather that it's happening on everything rather than just what you want?

brittle ledge
#

I'm not really sure WHAT it's doing since if my mod was going first, the vanilla event should be null, but if their mod was going first, I should be able to patch their event.