#making-mods-general

1 messages · Page 370 of 1

robust oriole
#

Here's the mod if you want to take a look, but I'd really like to learn from this and get help fixing it if possible.

latent mauve
#

Alright, I don't know what to make of that error code exactly so I will leave that to someone else to decipher. It's also 6 am and I haven't slept yet, so I should probably do that

robust oriole
brave fable
#

dowe have some c# json object librarians around

gentle rose
#

I am absolutely not one but I am curious

brave fable
#

say i have some data model i'm loading with partial definitions for overrides, e.g.

"Rules": [
{
  "From": "BusStop",
  "To": "Desert",
  "Condition": "PLAYER_HAS_SEEN_EVENT etc",
  "MaxSpeed": 50
},
{
  "From": "Desert",
  // ...
}
]

and i'm currently loading it into a data model with default values in C#

public GameRules Rules
{
  public string From = null;
  public string To = null;
  public string Condition = null;
  public int MaxSpeed = 70;
  public double Acceleration = 1.5d;
  public double Deceleration = -0.666d;
  public double Braking = -7.5d;
  // . . .
}

is there a reasonable way to have a single defined "DefaultRules": {} object in the data asset to move those default values out of the C# class file?

#

ideally loading a GameRules DefaultRules object with the values from data, and then overriding the fields as defined in a given other "Rules": [ { ... } ] object, without applying the undefined fields

gentle rose
#

so they aren't hardcoded?

brave fable
#

precisely

#

it's 100% a joke mod but it's a problem i keep running into

gentle rose
#

ig you could make another data asset that's just the defaults? and then other packs can change them? but that seems annoying

brave fable
#

well yes but that doesn't solve the field overrides onto an object if defined problem

#

which is the problem

gentle rose
#

oh right

lucid iron
#

To make things easier 4 u tho I'd make it a property and check null in the getter on any not allowed to be null fields

brave fable
#

a dict as in acces every property by string key, or a dict as in don't use a conditional waterfall to fetch the rules

gentle rose
#

if I'm getting this right, you basically want some kind of operator that goes value1 op value2 = value2 if value2 is not null else value1 ?

#

well not operator

#

but that's one way to do this

#

I'm not thinking in words rn, I shouldn't be messaging pffft

vernal crest
gentle rose
hot oasis
#

Hi there! I'm having an issue where I'm removing paths in tiled but once I load the game they still appear!

gentle rose
#

how are you loading the map into the game?

#

and are you loading an existing save?

hot oasis
#

Im doing EditMap in CP I target Town and replace it with my edited tmx!

gentle rose
#

if this is for a mod you want to release, there will be some compat stuff we'll need to go over later, but in the meantime, are you making a new save every time you test?

#

things like bushes don't reset once they're in a save

hot oasis
#

I see. I'm starting the same save everytime I test it so that might be the problem. Also, the map edit is triggered via HasFlag so the changes are made at a later point in the game!

gentle rose
#

yeah, then it won't get rid of the bushes in that case

hot oasis
#

Dang. Is it possible to do with c# or basically no real work around?

gentle rose
#

everything is possible with c#

brave fable
lucid iron
crude plank
gentle rose
hot oasis
gentle rose
#

except for that they can use null

hot oasis
#

And no worries I can take a look and see!

#

I appreciate the help!!

lucid iron
#

My only warning was against the not string? that u r assigning null

robust oriole
#

All the data states "No furniture"

lucid iron
#

It's a map property

vernal crest
gentle rose
#

and warping to the wrong place

#

(because that's a known bug)

vernal crest
#

Single player save

#

Not sure how long ago the unofficial fix was made

robust oriole
#

@gentle rose These are the errors

gentle rose
#

if you've been trying for a while and are getting frustrated I think the best next step is to send your entire mod as a zip file tbh ignore me

vernal crest
#

That's already been done iro

gentle rose
#

wait, are you trying to get from the greenhouse to the cellar?

vernal crest
#

But Athanasia since you said you want to learn for yourself, I recommend reading the maps page of the wiki and also the Farmhouse Fixes mod page info.

#

But this is pretty hard mode for your first attempt at mod fixing.

robust oriole
#

I thought this would be a simple "Go in and change coordinates" and "Add warp point: X, Y, "Name of map here"

gentle rose
#

(the cellar is instanced and the greenhouse isn't iirc so that wouldn't really work)

#

(as in cellar to greenhouse should work, greenhouse to cellar wouldn't)

vernal crest
#

No, cellar stuff is not simple at all unfortunately

robust oriole
vernal crest
#

I probably could find it out, but my brain fog is pretty bad right now so I have elected for an evening of minimal thought to give myself a rest.

robust oriole
# gentle rose (as in cellar to greenhouse should work, greenhouse to cellar wouldn't)

I can go from the cellar to the greenhouse just fine. The problem is the cellar stairs warp me into a wall into the main house. There's no "Warp point" on custom properties to change coordinates like I thought there'd be....so I have no idea how it's warping me at all.

Then.....the green house main entrance doesn't work period. I can't go in or out.

#

I thought this was gonna be easyyy....TwT

gentle rose
hallow prism
#

the issue with some warps is that they are hardcoded

#

i don't know how the cellar warp is working at all

vernal crest
#

As chu has said twice and I have said also, there are warp map properties too and you need to check those. Plus I believe you need the Farmhouse Fixes mod to even allow a custom warp point out of the cellar to the farmhouse, hence why I keep repeating the need to read the Farmhouse Fixes mod info.

hallow prism
#

quick question, how costly it is to use trigger action that triggers on location change? i'd like to have maybe two, three quests that complete on reaching a location

gentle rose
#

aba is one of the more knowledgeable modders so if they suggest something that's always my first place to check SCyes so please do what they asked

hallow prism
#

going to eat something then i'll be back, feel free to ping me!

lucid iron
vernal crest
lucid iron
#

Yeah i believe it is special

vernal crest
#

So no Farmhouse Fixes required for the entire mod?

finite willow
#

python screamer

brave fable
vital lotus
brave fable
#

oh for a { ...other, ...this } collection syntax

eternal glade
#

Ok so made my greenhouse two wide, and making the door work right it's being really annoying, what's to stop me from just putting a warp to the farm there? Obv it'd be janky

calm nebula
#

But tbh i would read as jobject

#

Then do the ..

No plz don't actually use the nightmare reflection code

#

Read as jobject

#

Do the default application then

lucid iron
calm nebula
#

Then read to model

#

Jconvert

lucid iron
#

or i guess cp yggy

hallow prism
calm nebula
#

Iro no don't

brave fable
#

it's simply loaded via GameData data = ModEntry.Instance.Helper.GameContent.Load<GameData>("Mods/blueberry.DesertBus/Data")

lucid iron
#

does it not work as expected rn

calm nebula
brave fable
#

atra i beg you rebind enter to period

gentle rose
calm nebula
gentle rose
#

atra don’t what

#

I wasn’t even in this convo aSDVchickenrun

calm nebula
#

Actually use the nightmare reflection code you reacted to

lucid iron
#

my other suggestion was

private string? field = null;
public string Field {
  get => field ?? "default value";
  set => field = value;
};
hallow prism
#

i can look at what exists for quests, sure

#

lot of vanilla stuff is hardcoded so i figured that was too

#

but let's confirm

#

ok there is a field location

#

let's test this

#

thanks!

vernal crest
gentle rose
brave fable
lucid iron
#

Miku does NOT talk to people who don't use nullables

patent lanceBOT
calm nebula
vernal crest
gentle rose
calm nebula
#

I keep thinking I should get an adhd check but also I can read rust concurrency books cover to cover so

#

Ooh! I'm doing something new now. Instead of scrolling my phone between sets at the gym I knit

hallow prism
#

i will likely need one trigger action on location change to give the actual quest but hopefully it'll be fine

calm nebula
#

(It's fine!!)

fading walrus
vernal crest
# robust oriole I can go from the cellar to the greenhouse just fine. The problem is the cellar ...

And fixing the greenhouse to farm warp is just a case of deleting the Farmhouse Fixes properties that are present and replacing them with Action Warp <X> <Y> Farm. But make sure you don't make any edits to any of the maps without all the tilesheets present in the folder or you will break the maps.

Alternatively, you can make the changes entirely within the content.json using an EditMap patch, where you use the MapProperties field to edit the cellar and a MapTiles field to edit the greenhouse(s).

fading walrus
#

Maybe I'll become the modding weapon I know I could be

vernal crest
#

I self-diagnosed myself with ADHD a long time before I was officially diagnosed. My psychiatrist just confirmed what I already knew.

#

I don't put a lot of stock in needing official diagnoses...but maybe that's because I studied psych so I already know enough to self-diagnose lol

hallow prism
#

hmm

#

i got my quest but the location internal name is displayed despite my area having a display name

#

is it because i'm missing something or is the game just not using this field because of mentioned hardcoding?

eternal glade
#

neither of these work

brave fable
#

Warp goes on the right-hand side SDVpufferthumbsup

#

TouchAction ➡️ Warp Farm 28 16

brave fable
hallow prism
#

arg, i must have one field wrong

eternal glade
#

Ok, my greenhouse now works fine for my map, but id like to make the door actually work like a door

vernal crest
eternal glade
#

Oh yea! thank you, sorry, i havent been awake that long so im still a little frazzled

vernal crest
lucid iron
blissful panther
robust oriole
blissful panther
#

Ooh, we like a tourism!

eternal glade
lucid iron
vernal crest
calm nebula
lucid iron
eternal glade
#

Opposite

#

Greenhouse -> farm

#

Two wide door

vernal crest
#

Why is it a problem to have a two tile door?

#

It works the same way.

lucid iron
#

I have a 3 tile warp in my greenhouse mod it's fine

#

You do need a map property warp for Building HumanDoor reasons

eternal glade
vernal crest
lucid iron
#

Well if u don't have any map property warps then idk where the human door would put you

vernal crest
#

Maybe that is what is needed for the warp into the greenhouse, since Athanasia is also struggling with the warp in.

lucid iron
#

This is a general building entry thing

#

By default you are placed 1 tile above the first warp in the building

blissful panther
#

So wait, this AddNpcWarps... should it be Npc or NPC?

lucid iron
#

Lowercase

#

If u look at the sauce the field name is that

blissful panther
#

Aha, I see where the problem is!

#

It's right in one spot, but in another it's capitalised.

vernal crest
#

I don't know how to cheat my way into having a working greenhouse so I was just using debug warp greenhouse to get inside it lol

lucid iron
#

Cjb cheats has the option

vernal crest
#

Ooh thanks

lucid iron
#

Tick the pantry unlock

#

And sleep

calm nebula
lucid iron
#

The schema isn't tho I feel like it ought to remain consistent

gentle rose
calm nebula
#

It doesn't matter! Also the schema should be case insensitive

lucid iron
#

Then I hope that can be done yep

calm nebula
#

Enjoy your tourism+

blissful panther
#

It definitely isn't case insensitive in Rider, though maybe that's editor specific?

calm nebula
#

Bring us more souvenirs (pictures of random cats)

blissful panther
#

Importantly the cats.

calm nebula
#

This one i saw in China

vernal crest
#

Hm, yes. Adding a warp map property made it possible to warp into the greenhouse...but the player ends up in the wall because the door is in the north wall rather than the south.

eternal glade
#

couldnt find it exactly but i found this

vernal crest
eternal glade
#

Probably not, but ive changed it now anyway

#

I made the first map have the same size map space as the larger one and put it so the entryways line up, so both of the entry points are at 29 66 now i think

#

It also makes all the crops line up when you upgrade it

#

This could be a very nice mod if i can finish it

vernal crest
#

I still am not sure what issue you are having, sorry

eternal glade
#

The door by default is a one wide, and i want it two

vernal crest
#

What is stopping you from making it two?

eternal glade
#

And i want that to work on any map its on, not just mine

lucid iron
#

Oh you mean the exterior door

eternal glade
#

Mostly that second bit

lucid iron
#

On the building?

eternal glade
#

Interior

#

Normal greenhouse exit, but two wide now

vernal crest
#

I don't know why you are saying it wouldn't work on other farm maps

lucid iron
#

I don't think anything stop u and i literally have a mod that does it

vernal crest
#

Because this: Warp 10 21 Farm 28 16 11 21 Farm 28 16 works, I just tested it moments ago

#

(Chu is there any way to have a greenhouse->farm warp in the north wall without it being very strange?)

dusky sail
#

yeah if the game sees you exiting the "greenhouse" map it should automatically place you outside the greenhouse door regardless of where the warp is

lucid iron
#

So without a mod if you just put a warp there

#

You will be placed at the HumanDoor

#

(well 1 tile south)

eternal glade
#

Because the warp i placed there teleports outside of my modded farm where the greenhouse is in, i had to change the cords for that

dusky sail
#

humor me and change the warps to the wrong coordinates on your farm and see what happens?

#

bc it should just put you at the door regardless

opal tendon
#

Is it possible to get the sprites of your character the way you can the npcs?

lucid iron
#

If that's acceptable then you can put warps anywhere as long as the warp that should be used for entrance is the first one in the list

opal tendon
vernal crest
eternal glade
opal tendon
#

Darn

wanton rivet
#

Can I edit this? If so, how?

vernal crest
#

If by "this" you mean a spouse room, yes, edit the Maps/spouseRooms asset.

steel plaza
#

it's possibly in the maps folder

lucid iron
#

Remember to credit the artists

vernal crest
#

Make a copy of Maps/spouseRooms.tmx, edit whichever spouse room you want to change, crop the map down to just that spouse room, then use EditMap to patch over just that spouse room in game.

vernal crest
lucid iron
#

Additional note is that AddWarps always prepend

#

Add the "first" warp last

vernal crest
lucid iron
#

Warping inside...

vernal crest
#

Yes, from the farm

lucid iron
#

Did you use an action warp

#

Yeah that's what i mean

#

You need a warp at the south that's meant as main entrance

vernal crest
#

No, my greenhouse (well, Who.M's greenhouse) has a greenhouse door that is in the north wall.

lucid iron
#

Then u can have a back door at north

#

If you want anything else you need mmap

vernal crest
#

That is why I am asking if it is possible to have a greenhouse whose only door is north wall

lucid iron
#

That's what those special building warps are for

vernal crest
#

Okay, so that is the rub in fixing that map. It's currently using Lua to try to get around that issue and the Lua is not working.

lucid iron
#

They do not obey the normal first warp Y+1 so u can make em target any spot inside

#

Yep

#

This kind of thing is why i made those funny building warps

vernal crest
#

Okay thank you 🙏 My takeaway from this is to tell people who want non-south-wall greenhouse entrances to use MMAP

eternal glade
#

how do i pull up my crashlog again?

vernal crest
#

!log

ocean sailBOT
#

Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.

Please share your SMAPI log file. To do so:

  1. Open this page: smapi.io/log.
  2. Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
  3. After uploading, it will show a green box with a URL to share. Post that URL here.

Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didn’t occur in your last session, please load the game to the point where the issue occurs, then upload the log.

lucid iron
#

These are to be used inside a building's actiontiles

#

To just create arbitrary warp ins that aren't the human door

#

Although hm i should check if human door wins over tile action brb

wanton rivet
wanton pebble
#

Pssst

#

I'm at work or I'd do it now, but anyone want to update the !freelove command

vernal crest
wanton rivet
vernal crest
wanton pebble
#

You can see examples on several marriagable custom NPC mods if needed

wanton pebble
#

I'd explain more but again, work SweatSmileIan

wanton rivet
#

Thank you for the informationSDVpuffersquee

wanton pebble
#

(Ty Abagaianye)

vernal crest
#

I wonder why the wiki says that MapAsset is optional. Surely if you are defining your SpouseRoom you have to include a map for it to actually work.

wanton pebble
#

Nah blank spouse room is default iirc

vernal crest
#

I guess it's optional in the sense of "the code will not complain" because it gives Abby's room as default.

#

But I think that it's slightly misleading.

wanton pebble
#

Is it actually Abby's? Huh.

vernal crest
#

Hers is the first in spouseRooms

#

I was peering at the loadSpouseRoom code yesterday because glymr is having an issue with the spouse room not loading sometimes.

lucid iron
#

but hm it is good that you remind me of this feature aba i think i broke it a while ago Sleepden

#

since someone is potentially use it ill do a quick fix rn

eternal glade
ocean sailBOT
eternal glade
#

please help

vernal crest
vernal crest
brave fable
#

if it helps, i had a similar issue earlier this week. simply restarting the pc cleared it up

eternal glade
#

I already restarted it 😦 its been giving me problems for awhile and sometimes something just breaks

#

No i didnt touch anything but the tiled maps, and my content folder, but i undid everything i did so bleh

wanton pebble
#

Well don't touch the content folder

#

Probably didn't cause your issue mind but

#

!xnb

ocean sailBOT
#

XNB mods often break the game and are not recommended. See:

For mod creators, see editing XNB files for help unpacking & editing them (including for use with Content Patcher).

vernal crest
#

I have no idea if verifying your game files could help but you do have a modified xnb in there so it's probably worth verifying to get rid of that anyway

#

lol Lyoko same brain

eternal glade
#

I do have one xnb mod, might just make a replacement for that next

#

Its a cellar replacement

vernal crest
#

If nothing else, you can just turn it into a CP mod by Loading the .xnb with Content Patcher.

eternal glade
#

Wait how do i do that

brave fable
#

exactly the same as you would load a TMX map to the same target, but with your xnb file as the fromfile

vernal crest
#

Action: Load, Target: Maps/Cellar, FromFile: assets/cellar.xnb

eternal glade
#

Updated my graphics driver and it works now

#

Idk why it chose then to be so upset

prisma plover
#

Assuming this is something I'd have to do with C# modding.

But I'm wondering if any other mods have done it first.

Adding more travel options than just the bus or boat that you get on and go places. Like say, making the train station functional.

eternal glade
#

Theres a mod that does that i think

hallow prism
#

there's central station

#

it is a framework with a content pack associated, and people can do more of said content packs

#

!vmv for ex has it as optional compat, so you can use train to reach the place

ocean sailBOT
#

Visit Mount Vapius (https://www.nexusmods.com/stardewvalley/mods/9600) is an expansion mod that adds a new region in the mountains. Accessible by train, you'll enter the hamlet of Glimsap, with its tight-knit group of villagers, that holds a market twice a week. You'll get to explore new places, fight monsters, get new crops and forage, trade local coins for exclusive goods, and complete tasks to unlock special items, including machines, buildings, and animals.

brave fable
#

what's wrong with the bus..

stark spindle
#

you have to wait for pam to wake up?

lucid iron
#

blueberry boat game when

brave fable
#

i'm literally publishing bus game

lucid iron
#

yes im already clamoring for sequel

prisma plover
#

was just wondering cuz the mod idea I'm thinking of tossing myself into the deep end on is kinda involves making a new town. The kind of project I might never finish but like to poke at just to practice skills.

Start out small, figure out how to add new NPCs and stuff. Eventually move on to figuring out the mapping stuff. Maybe make my crazy idea a reality one day.

hallow prism
#

then my suggestion would be to use central station to go/come from there

eternal glade
#

{
"Format": "1.5.0",
"ConfigSchema": {
"GreenhouseType": {
"AllowValues": "Garden, Orchard",
"Default": "Garden"
}
},
"Changes": [
{
"Action": "Load",
"Target": "Maps/Greenhouse",
"FromFile": "Assets/{{GreenhouseType}} Greenhouse.tmx",
}
]

#

this is fine right?

prisma plover
#

crazy idea for the mod was that the player would live in the new town and have it's own story associated with it. With a 'maybe if I can figure it out' pipe dream addition of adding in stardew valley as a vistable place though restoring the train survice 😄

eternal glade
#

its not working anymore

brave fable
#

do you have a } at the end of the file that you didn't send in that message?

hallow prism
eternal glade
#

no

vernal crest
vital lotus
#

very basic barebones npc isn't too much but probably not what ppl have in mind when they say make an npc 🤣

lucid iron
#

@vernal crest ok i fixed the feature bolb

#

u add something like this to the greenhouse

"ActionTiles": [
  {
    // special alternate door
    "Id": "{{ModId}}_WrpBuilding",
    "Tile": {
      "X": 3,
      "Y": 5
    },
    "Action": "mushymato.MMAP_WrpBuilding 4 4"
  }
],
vernal crest
lucid iron
#

and from inside the greenhouse you can add a building layer action mushymato.MMAP_WrpBuildingOut 3 6 to leave by using the door

#

rather than regular map prop warp

#

u should move the default greenhouse humandoor somewhere else bolbthinking

vernal crest
#

Okay that makes sense I will play with it...at some point if I do not die in the next few days

lucid iron
#

no die pls

vernal crest
#

I will try!

#

I must stay alive to observe more tourism

open jewel
#

Hi all! I'm trying to test a mod I've made that changes the look of the white cat sprite in game. Unfortunately, I don't have a save with a white cat and I can't seem to edit the save file to give myself one. Plus, the Shrine of Illusions in the Wizard's basement also doesn't let me change the cat. Any advice? Or does anyone have a save file with a white cat

wanton pebble
#

I feel like there's a command to give yourself max pet friendship, then sleep a couple days and new cats available at Marnie's

#

I'd have to check what that is though

open jewel
#

Ooh I didn't even know that was possible

calm nebula
wanton pebble
#

Oh atra has it quicker

#

Ty atra SDVpufferheart

calm nebula
#

It would be very easy to make a mod that tied this to marnie friendship i think

open jewel
#

So if I just use that code, it'll unlock cats at marnies?

craggy goblet
lucid iron
calm nebula
open jewel
calm nebula
tiny zealot
#

^ see above. it's actually just as easy as replacing a vanilla cat but more compatible

golden oar
#

I'm looking to add a repeatable event, but on random days. I am open to it being triggered by mail, or by dialog, but the idea is that you have to do it that day, and if you miss it, you need to wait for another random trigger.
Ideally I'd like to do this all in CP

My first thought was using an worldstate ID, but I dont know how to remove one of those at the end of the day if the event isnt seen.

Any ideas?

hallow prism
#

use flags and use trigger actions to remove them/enable them as needed

wanton pebble
#

Take a look at Date Night Redux's triggers if you need examples. You can add the randomization in there easy with random flag applications

golden oar
wanton pebble
#

Also triggers

hallow prism
#

trigger actions

wanton pebble
#

Hence why I suggested DNR's if you need - I do exactly that for the dates

golden oar
#

Ok Im starting to understand. Is there a trigger action that adds/removes a worldstate ID? I cant find one on the wiki

lucid mulch
#

do you need it to be a worldstate id and not just a mailflag on host?

clear oxide
#

finally got back into finishing my mod 😄

golden oar
lucid mulch
#

yes

golden oar
#

ahhh ok i see. Thanks!

urban patrol
# hallow prism ok there is a field location

would you mind elaborating on this? i also have a quest that needs to update sorting immediately upon completion and resorted to using a trigger action on location change. if there’s a way around that i’d love to know!

hallow prism
#

i don't believe this is of much use for other quests however

urban patrol
#

ohh i see yeah unfortunately mine is item delivery

#

thank you though!

calm nebula
golden oar
# lucid mulch yes

Ok, slightly different problem. The letter doesn't get removed at the end of the day. What is wrong with this code?

        "Mail_HVAHL_Miss": {
        "Id": "Mail_HVAHL_Miss",
           "Trigger": "DayEnding",
            "Condition": "PLAYER_HAS_MAIL Current HVAHL",
            "Action": "RemoveMail Current HVAHL received"
            },
lucid mulch
#

did it actually trigger?
without something like MarkActionApplied set to false, a trigger action will only run once, store its id on the player and not attempt to run it again if its run before

golden oar
ornate trellis
#

can anyone explain buff icons to me? i thought I did it right but I always get the first buff icon only from all the 8 i did. heres one of my examples

                        {
                            "Duration": 860,
                            "IconTexture": "Mods/{{ModID}}/vww_fishmonger_bufficons",
                            "SpriteIndex": 7,
                            "CustomAttributes": {
                                "MiningLevel":  10,
                                "LuckLevel":  10,
                                "CombatLevel": 10,
                                "FarmingLevel": 10,
                                "FishingLevel": 10,
                                "ForagingLevel": 10,
                            }
                        }
                    ],
royal stump
#

"SpriteIndex" should be "IconSpriteIndex", so it's just missing that and defaulting to 0

ornate trellis
#

oh, really? i guess its wrong on the wiki then because i went by the example there, thanks!

royal stump
wanton pebble
ornate trellis
#

ah i was looking at the objects page part where the buffs were

wanton pebble
#

I think there's a specific way to check validity of a trigger action prereq too

ornate trellis
royal stump
#

ah, yeah, looks like that's incorrect
object buffs do have different fields, but it should be "icon-" there too
(edit: fixed)

opal tendon
#

with this when all of them are wearing it it clips is the only option to make the head thing smaller so it doesn't clip and or even touch?

lucid mulch
golden oar
hallow prism
#

(the naming convention would like to have a few words with you. The words are "{{ModId}}_ as prefix pls")

golden oar
# lucid mulch What are you using to determine if the 'letter' is still there?

},
"Mail_HVAHL_Miss": {
"Id": "Mail_HVAHL_Miss",
"Trigger": "DayEnding",
"Condition": "PLAYER_FRIENDSHIP_POINTS Current Abigail 1",
"Actions": [
"RemoveMail Current HVAHL received",
"MarkActionApplied Current Mail_HVAHL_Add false"
]
},
"Mail_HVAHL_Add": {
"Id": "Mail_HVAHL_Add",
"Trigger": "DayEnding",
"Condition": "LOCATION_ACCESSIBLE Railroad",
"Actions": [
"AddMail Current HVAHL",
"MarkActionApplied Current Mail_HVAHL_Miss false"
]
},

#

This is the current code

#

The first condition is just to make it so it always triggers

ornate trellis
#

wooo my buffs have diff icons now, yippie

golden oar
#

but letter only comes once, and is never removed nor resent

ornate trellis
#

i got a bit artistic with them but yay icons! now i really gotta check why i have 500% crit multiplyer cuz i think i understood them a bit wrong with the buffing lol

#

(i also cannot unsee the purple log looking like a cat paw)

royal stump
#

the last one kinda does too SDVkrobusgiggle

torpid sparrow
#

Paws everywhere with eyes to see

ornate trellis
#

maybe my cats influence me too much lol

opal tendon
ornate trellis
#

might be a good idea to see if your program has grids

#

then you will know if theyre properly in their space

#

i mean i see some sort of grid in the bg but idk f thats jsut the programs general bg or something but yea

half tangle
#

it's fine for textures to touch as long as they're in their bounding box (source rectangle) and those are all 16 pixels across so those are fine

wanton pebble
#

You have "MarkActionApplied Current ... false"

#

But that's not the syntax for that

cursive pike
#

How I Can make this Look normal?

uncut viper
#

MarkActionApplied is an action

wanton pebble
#

"MarkActionApplied": false

#

I just went and grabbed the docs

uncut viper
#

MarkActionApplied is also a trigger action

#

so you should look at the docs for that too

wanton pebble
#

Ah, misread the location of that - on mobile so the formatting looked strange and figured it was in another section. (I do know that's a way to do it - it's how Darkroom Portrait Shop was set up originally.)

brittle pasture
#

MarkActionApplied the field allows an action to mark itself as not applied
MarkActionApplied the action allows marking other actions as not applied

cursive pike
#

Ok thanks

wanton pebble
#

It does seem like swapping it to field on each would help with both code clarity and attempting to debug though

cursive pike
#

It doesnt work🥹

uncut viper
#

because they want one trigger to unapply the other

cursive pike
#

Where should I put MarkActionApplied?

golden oar
#

Right. Recieving the letter should allow it to be removed at the end of the day, and removing the letter should allow it to be resent the next day

wanton pebble
#

That's not to your issue princessclara

golden oar
#

I have no clue why it isnt working

wanton pebble
#

Sorry for confusion

cursive pike
#

Oh ok

wanton pebble
#

Or at the least just adding a "they don't have this mail and random is hit"

brittle pasture
wanton pebble
#

If this isn't resolved in like 5 hours I'll give examples, but button's a pro so I bet it will be

uncut viper
#

not with the action

#

they can set it to NEVER apply, but theyu dont want it happening every day

wanton pebble
#

That's why I said to use the field

uncut viper
#

that would make it happen every day

wanton pebble
#

Only with the current preconditions. They said, at the outset, they want it on a random

#

Every day is the goal for debug

wanton pebble
#

Remind me in 5 hours - this

patent lanceBOT
#

you bet your tail I will agentlyoko! (#6777675) (5h | <t:1752708539>)

uncut viper
#

(also im still on mobile, is why im not offering much more help right now. will be at my desk soon though for a proper look)

golden oar
#

Ok, thank you so much. Yall are so helpful

half tangle
#

You know how you have to escape certain characters for Content Patcher (and more) to accept them? If I have a string, is there a way to get the string with the necessarily escaped characters now escaped? Like if I input "my\string" the output is "my\\string" except the solution would cover all instances of needing to escape. (this was a weirdly hard question to phrase)

#

My goal is to be able to print out in one case the string that the user should be writing in their CP mod

uncut viper
#

you have to escape the character as n ormal, but then also add another escape before it, and escape that escape

#

so my\\\\string for example becomes my\\string when outputted

#

(i wrote it with 4 slashes both times)

#

i think the problem actually is that in order for them to even get that my\string input theyd have to know how to escape already

#

but if you're controlling the input then its fine

half tangle
#

Maybe I still phrased that poorly - I'm making a framework mod in C# so I don't have to escape as many characters as a CP mod would have to. But my output to console is to instruct a CP modder what string they need

#

tbf this is a tiny "could be neat" feature that I can just drop if there is not a good solution

uncut viper
#

then you'd be controlling the input, so that way should be fine. you do have to still escape the characters when you're writing a string in C#

#

you can also try C#s way of writing strings literally that i always forget. i think you put a @ in front of the string like you would a $ for a string template?

half tangle
#

Oh, true, I forgot that C# has that string literal - I think I'll end up just ignoring this for now and add it later if I have the brainpower to work through it then

uncut viper
#

basically you cant take a string and output it as it should be escaped bc the characters you're worried about will have already done their special effects (which is why you're even worried about escaping in the first place)
you have to come at it a bit backwards and construct a string that will basically escape itself into the correct form as the output

half tangle
#

I kinda hate that I follow that...

#

anyway, appreciate the insights

uncut viper
# golden oar }, "Mail_HVAHL_Miss": { "Id": "Mail_HVAHL_Miss", ...

ive taken another look at this and i believe the problem is actually that since Data/TriggerActions is a list, trigger actions run in order. you have your Miss trigger action happen first, which removes the mail and marks the other trigger action as unapplied. then immediately after that, you have your Add trigger action, which has just been marked unapplied so its free to trigger again, which will immediately add the mail back to be received tomorrow. then DayEnding finishes and its tomorrow, so you have the mail again immediately

#

(and because your Add trigger action marks the other one as unapplied, the same thing will happen again the next night, and the next, forever)

golden oar
#

Unfortunately, the mail isnt added every day

#

its the opposite. It gets sent once and never again

uncut viper
#

you said it was never removed

golden oar
#

By that i mean the letter never dissapears from my collection tab

#

Unless that wont happen regardless

uncut viper
#

the collection page specifically looks in your received mailbox and looks for a matching entry in Data/Mail

#

if its not in your received inbox and its not in Data/Mail it will not appear in the collections page in the first place. if one of those things is not true then it will not be there

calm nebula
golden oar
#

right, and the "Miss" action removes it with the "recieved" data, so why doesnt it dissapear from the collection?

uncut viper
#

is this your entire json?

golden oar
#

No, the setup stuff is also there

uncut viper
#

!json

golden oar
#

I have other actions in this file that work perfectly

ocean sailBOT
#

JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.

If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.

When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.

uncut viper
#

please send your entire json via that smapi.io site

golden oar
#

the relevant stuff is at the end

#

And the thing with the 1 point of friendship with abigail is because im not sure how to make a codition that always passes regardless

uncut viper
#

you can just omit the condition entirely if you want no condition

hallow prism
#

and have TRUE as an always valid condition

#

(but clean stuff is better, so i would go with Button's suggestion)

uncut viper
#

and you have the required friendship with all of those NPCs at once in your test save?

golden oar
#

Yes

#

The letter appears once, but after you read it, it never is removed, and never gets sent again

uncut viper
#

can you try changing RemoveMail Current HVAHL received to RemoveMail Current HVAHL All?

golden oar
#

Yay! It works!

#

Funny how it was that small of an issue

#

It fixed every problem with the system lmao

uncut viper
#

i have no idea why that fixed it, for the record

golden oar
#

Ikr? “Received” is the only part of “all” that really mattered

#

Anyways, thank you so much

uncut viper
#

i feel like by all accounts "received" should have worked, especially if it was showing in your collections page, but... c'est la vie, i guess. those actions work with player netrequest fuckery stuff that im not qualified to debug, so. glad it works now lmao

urban patrol
#

where does making a custom dungeon fall on the scale of “do it with CP” - “wait for 1.6.16” - “learn C#”?

uncut viper
#

define "dungeon"

urban patrol
#

enter a location, fight some monsters (ideally custom ones), unlock next room, repeat

uncut viper
#

more like the Mines, or more like the Volcano?

#

SpaceCore has some dungeon stuff

hallow prism
#

i don't believe 1.6.16 will help with that at all. My bet is either CP and compromise on a few things, or CP+spacecore and deal with the set piece feature

#

but this means tinkering a lot by yourself with documentation and S&S examples

urban patrol
#

it’s been a minute since i played the volcano lol iirc the difference is that the mines have different levels of difficulty?

hallow prism
#

the main difference is that mine has ladder

#

volcano has exits

uncut viper
#

SpaceCore actually has an entire Dungeons component to it separate from set pieces, though how understandabl the docs are will vary from person to person

#

and its more like the mines, i believe, with floors

#

but ive not messed with it much so i dont know how customizable it is

#

and yeah what lumina said about the differences

#

volcano also has like gated exits with buttons you need to press

hallow prism
urban patrol
#

the vibes of this one would be like a maze, so i guess it would be more like volcano

hallow prism
#

VMV has a serie of maps with fixed entrances/exit, and spawning monsters, for ex, no custom C# for that except a bit for some drops

uncut viper
#

you could probably do some stuff with FTM + BETAS

#

the BETAS for the monster-related triggers and queries and instant map patches

hallow prism
#

so it depends of how much you want custom stuff and how much ready you are to try stuff

urban patrol
#

makes sense! i’ll mess around with spacecore and BETAS since those are already dependencies and see where that gets me

#

related question: can i gate a whole section of game code behind a conditioned include? so like only include dungeon stuff when has mod framework

uncut viper
#

includes can have When conditions so yes

#

as long as everything that uses that framework is gated behind it, its fine

urban patrol
#

cool

uncut viper
#

(it might also be fine in some instances if some things are not gated, b ut why risk it)

hallow prism
#

yes, just a note that, as a mod author, if too much is gated behind a framework i prefer to make it mandatory

uncut viper
#

(easier to just say "gate it all" than list the exclusions)

urban patrol
#

i have one very dedicated player on android where BETAS doesn’t work and i don’t want to release separate versions from here until forever

hallow prism
#

it also depends of how much users may miss stuff

#

that makes sense, as long as you're fine with the downsides

urban patrol
#

downsides for the player or downsides for me

uncut viper
#

(ive still never been given an actual log for android for BETAS so i dont even know if it actually "doesnt work" entirely or if just a few specific parts dont)

hallow prism
#

well the player here has no downside since no mod at all is worse, and i mean more generally for the players, and so for you when they report stuff

urban patrol
uncut viper
#

nah no need to do that, just more amusing to me that a couple people using BETAS have gotten reports about it but BETAS itself hasnt lol

urban patrol
#

that is funny

hallow prism
# urban patrol ah gotcha

yeah, modders experimented will all sort of stuff so it's nice being able to, it's just about knowing what can happen sometimes

cursive pike
#

Can I quick ask what I have Done wrong here?

hallow prism
#

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

hard fern
uncut viper
#

the comma won't actually help as the issue is that they have that bottom patch completely outside of the overall json object rather than inside their changes field

#

presumably just pasted the bottom patch at the literal very bottom of their content.json

hard fern
#

Oh

#

Well,

#

Yeah that's a problem

gentle rose
floral stratus
#

Speaking of commas, looking into some mods' json files, I have found multiple instances of trailing commas toward the end of the files. Normally this would invalidate a json. Does Smapi just process it anyway?

proud wyvern
#

Newtonsoft allows quite a lot of things like that

#

(the lib we use for JSON parsing)

#

trailing commas, comments

gentle rose
pine elbow
#

do i need read both the making a crop tutorial and adding a crop tutorial

gentle rose
#

you should really read as many tutorials as it takes for you to be able to do what you're trying to do

#

never hurts to read multiple

blissful panther
#

(<insert rude interruption>

We're thinking of a bit of a tweak to the !json command. Thoughts on this new version?)

#

!json2

ocean sailBOT
#
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.

If you need help with your JSON file

Please upload it to smapi.io/json to see automatic validation and share the link here.

Recommended tools

When making mods, it's recommended to edit your files in a text editor with JSON support. See the !software command for a list.

pine elbow
#

its says json is obsolete on the tutorial in favor of cp

gentle rose
#

we need to pick what's big

brittle pasture
#

JSON is just a file format that both JA and CP uses

blissful panther
#

!json2

ocean sailBOT
#
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.

If you need help with your JSON file

Please upload it to smapi.io/json to see automatic validation and share the link here.

Recommended tools

When making mods, it's recommended to edit your files in a text editor with JSON support. See the !software command for a list.

gentle rose
#

also for what it's worth DH, this takes up nearly the entire screen on mobile

blissful panther
#

Yeah, that's not ideal... trimming the title down is next.

gentle rose
#

I'd say only the validator title should be big, everything else should be at most bold

#

but that's my opinion haha

hallow prism
#

i need help formatting a token for a when condition.
I want a patch to apply (token value)% of the time.

            "Query: {{Random: {{Range:1,101}} }} <= {{TOKENVALUE}}": true

Would this be a proper format?

gentle rose
#

the logic is sound and I don't see any problems immediately with the syntax but I can't quite remember query syntax

tawny ore
#

Or is Random not inclusive?

uncut viper
hallow prism
#

token max value will be like, max 30?

#

currently i think the max possible is around 20

gentle rose
# blissful panther True!

maybe instead of headings, we could have the line about the validator itself be big and then everything else can be heading free normal text? like

JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.

Use smapi.io/json if you need help

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. See the !software command for a list.

#

oh I accidentally disabled ping lmao, hopefully DH sees this

hallow prism
#

i'm also ok with 1% of inaccuraty as long as it doesn't cause stuff like crashs or whatever

haughty charm
#

That's a good idea, iro

uncut viper
#

(personally i think any big text at all in the command looks kind of weird)

tawny ore
#

I'm just saying, it's not actually applying token% of the time if 100% does not result in 100% but 100/101 %. So it's just being nitpicky, but fine if close enough is all you're looking for.

gentle rose
#

so I think it's a necessary change

uncut viper
#

bold would help, and isnt big

hallow prism
#

thanks! 🙂

uncut viper
#

i am just one opinion though, thoughts were asked for and thoughts were given, i dont think its a necessary change

gentle rose
hallow prism
tawny ore
#

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

tawny ore
#

!json2

ocean sailBOT
#

JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.

If you need help with your JSON file

Please upload it to smapi.io/json to see automatic validation and share the link here.

Recommended tools

When making mods, it's recommended to edit your files in a text editor with JSON support. See the !software command for a list.

tawny ore
#

Sorry, just wanted to see them side-by-side for comparison sake

uncut viper
#

{{Random: hood, jacket, raincoat}} doesnt make sense to have raincoat be non-chooseable

gentle rose
#

I meant range I'm just being bad at words, sorry

uncut viper
#

oh

#

in that case no its inclusive

urban patrol
#

related to the json command, can we link buttons' json tutorial in it (if you're comfortable with that?)

#

and or have a separate command for that? i can never find it for people haha

gentle rose
#

I think that should have its own command tbh! so we can link it separately without adding a line to this already long command

#

~~or button can add a proper link to it on her website CB_no_angry ~~ /lh

uncut viper
#

RE: this json2 command, i feel like the "See !software" part doesnt really make sense to put in it... like i get why it is, but its either not gonna be useful to the person anyway, or theyre just going to immediately do !software after it and then we have governor posting two commands back to back

#

in which case you might as well include it in the command

gentle rose
#

I agree tbh

uncut viper
#

but iirc the software command is quite long, so i think its fine to just leave off the last sentence, personally

gentle rose
#

it's not any shorter than the current !json version that does list it

uncut viper
#

or say "such as Notepad++ or Visual Studio Code"

tawny ore
#

There's so much information that would be helpful to cram, but then it becomes less useful when it gets too dense. Like showing file extensions, adding a json schema where applicable. It might be nice to list supplementary commands that bring up extra info, in addition to software.

brittle pasture
#

my opinion is that we should have a command that just links to the json validator site

uncut viper
#

since thats... basically all anyone is gonna recommend

blissful panther
gentle rose
#

I'd say we should remove it then tbh

brittle pasture
#

the vast majority of the time !json is used it's to beg request someone upload their json

uncut viper
#

the previous command links to three editors specifically, which i think is fine and better than directing to another command

haughty charm
uncut viper
gentle rose
#

and if you want to tell people to install vscode or n++ I think most of us would just tell them that

#

rather than use a command

#

commands are useful when there's something we need to remember or that's too long to type

tawny ore
pine elbow
#

is thier tutorial for making sprites

uncut viper
gentle rose
#

I mean there's a lot of commands for specific mods

urban patrol
blissful panther
#

...I kinda want to add the tutorial.

tawny ore
#

The quick json response is mainly to get the smapi link out there for sharing, so it would probably be more effective with less distractions

uncut viper
pine elbow
#

im assuimg for a format i need ot know how to make a manifest json

haughty charm
tawny ore
#

Maybe json can be slimmed down, and json2 can continue to be the detailed response for someone wanting to learn json

haughty charm
uncut viper
#

like the !log command just tells you how to share your log

blissful panther
#

(Oh, json2 is just the staging ground for what will become json.)

pine elbow
#

making a mod is complicated all im gonna say

haughty charm
#

I like the idea of json being parser command and json2 being info command

tawny ore
#

Or like !jsonhelp or something I dunno

uncut viper
#

you can add command aliases, right? what about !sharejson and !sharelog

gentle rose
#

what if

!json

Use smapi.io/json if you need help to see automatic validation and share the link here.

!aboutjson

JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.

A JSON tutorial by button is available at ...

It's recommended to use VSCode or Notepad++ to edit JSON.

haughty charm
#

we can add aliases, eys

#

yes

blissful panther
#

Maybe this needs a thread, actually... so that json command.

haughty charm
#

yeah good idea

pine elbow
#

give me a link to the json tutorial

haughty charm
#

(please goes a long way here, just fyi)

pine elbow
#

sorry about that please

#

just get frustrated sometime

haughty charm
uncut viper
#

you have also been linked the tutorial before as well

hallow prism
#

!patchparse using a command for myself don't mind me

#

well OF COURSE

#

it never works (i will ignore all the time it does)

#

now to test the token

#

but the patch is applied so progress 😄

haughty charm
#

I spy something new....

#

Don't mind me, just getting excited

hallow prism
#

it's not entirely new, more, a bonus way to access something existing, but i may have new stuff added too

#

now, if i wanted to have something perfectly clean i would need to patch coordinates back but hu

#

this is sounding like headache so maybe another day

haughty charm
#

I was looking at that new path opening/archway

hallow prism
#

yes!

#

so

pine elbow
#

i got manifes tjson done woohoo

#

tomorrow i make sprites

hallow prism
#

||you see the random rooms at the end? the idea is that, on a given day, you already get access to one, then two, once you progress. It will be opening access to a third but randomly||

haughty charm
#

omg lumi

#

see, this is why I get excited

hallow prism
#

so it's not entirely new in itself BUT ||i want to add a fifth room||

#

we'll see how it goes 😄

haughty charm
#

Wishing you luck! SDVpufferheart

hallow prism
#

thanks

#

current objective is reading patch parse doc

#

checking that i have all my tokens in a row like behaving little ducks

#

so far so good

pine elbow
#

and gusy if it not too much trouble to ask is their and art guide

hallow prism
#

ok tomorrow i'll try to look at the book stuff

#

and then the room maybe

#

hmm there was the sundrop one

#

i don't remember the command

#

try governor mansion

#

!artguide I try my luck

#

well OF COURSE

urban patrol
#

!pixelart

ocean sailBOT
#

Where to Start With SDV-Style Pixel Art
If you've never done pixel art before, don't stress! It's easy to pick up the basics - the key is to start small, ask for feedback, and incorporate that into your work.

To start, you'll want an art program. See a list of recommended programs in the !software command.

Here's some good beginner tutorials!
http://pixeljoint.com/forum/forum_posts.asp?TID=11299&PID=139322
https://medium.com/pixel-grimoire/how-to-start-making-pixel-art-2d1e31a5ceab

To start off, try opening an existing portrait and changing the outfit. Start small: edit a shirt pattern, change a jacket collar, or remove a scarf and draw the clothes underneath. Ask for feedback too! The best way to improve is learning how to identify what's wrong and why, so then you can work out how to fix it.

Here's more good tips from the artist of "Celeste":
General pixel art 1: https://www.patreon.com/posts/pixel-art-1-6971422
General pixel art 2: https://www.patreon.com/posts/pixel-art-part-2-11225146
Outlines: https://www.patreon.com/posts/outlines-14106192
Shading: https://www.patreon.com/posts/shading-13869731
Portraits: https://www.patreon.com/posts/portraits-8693396

SDV has a few quirks to remember too:

  • Colour limits: Limit the number of shades you use - stick to six including the outline.
  • Hue shifts: Rather than making shadows and highlights lighter or darker versions of the base tone, SDV shifts the hue too. Eg. a base orange will have yellow highlights and red shadows. This goes for skintones too!
  • Light source: SDV uses a top-right & slightly forward light source - check the vanilla art for reference.
    Most importantly, don't hesitate to ask questions and get advice from people. Have fun!
urban scaffold
haughty charm
#

Yes

urban patrol
#

are you noticing an error with it?

#

that is the recommended resource, if that's what you mean

urban scaffold
#

No, no. I was just making sure, the mod I am working on seems to have an item outdated so I just wanted to double check

#

thank you for confirming!

pine elbow
#

ive got an idea

#

i think it will work

#

thank you modding community

#

your all amazing people i hope you achieve your dreams

urban patrol
#

i have an NPC who's unlockable after a series of quests/events. a player is getting errors about her not being added to festivals, presumably because she doesn't exist yet, is that correct? if so, do i need to conditionally edit her in when the mail flag has been set, or can i do some sort of optional add-in like Kent? for the festivals

log: https://smapi.io/log/5225142fc5d0463dbcf3ee69685882b5

ocean sailBOT
#

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

pine elbow
urban patrol
#

if that actually is what that error means

gentle rose
#

the NPC straight up not existing causes issues in multiplayer and other things

urban patrol
#

okay so i misunderstood what unlockable meant then

gentle rose
#

@calm nebula you know more about this

calm nebula
#

No that's fine that's how unlockable works

#

Just put a thingies so they don't get added to the festival if they don't exist

gentle rose
#

didn't you keep telling me that npcs should exist at the very beginning suslysella

calm nebula
#

Now I will continue to not exist

urban patrol
#

okay cool that's what i thought the fix should be, thanks

calm nebula
gentle rose
#

ah

calm nebula
#

Anyways

#

What are you doing? I'm scrolling an app considering dinner

hallow prism
#

i'm playing the game

gentle rose
#

I'm scrolling an app eating dinner

hallow prism
#

and i modded it too

calm nebula
#

I lost the game

gentle rose
tawny ore
#

I'm eating an app and scrolling dinner

pine elbow
#

YES yes yes yes got a new idea kaiju

urban patrol
#

tasty

gentle rose
uncut viper
#

just put a thingies

tawny ore
#

Discord, so junk food

calm nebula
#

(Too good to go, actually)

#

Not very promising ngl

#

I was hoping for heb or whole foods leftovers

gentle rose
#

I got something decent from that a couple times

pine elbow
#

im making a burrito

#

guys what your fav fast food place

fading walrus
#

I don't have one where I live now, back home it was a pokey little south indian place lol

tender bloom
#

is auntie anne's fast food? i am a huge sucker for their pretzels

pine elbow
#

hell yeah brother

trim sand
#

Mhmmm... Mall pretzel

patent lanceBOT
wanton pebble
#

I saw it got solved we gucci

halcyon nest
#

god I could go for a cinnamon sugar pretzel cup rn

harsh radish
#

Hi! I'm kind of new to modding, and I'm working on an event for an NPC. I was wondering, how do I add an ID to a dialogue option?

eternal glade
#

what layer does IsGreenhouse T go on?

royal stump
#

it's a map property, so it goes here instead of a layer

eternal glade
#

kk ty

outer verge
#

does anyone know if i can (and how I can) plug in an animation from my animations file into spouse patio animation frames? The animation i'm looking to do is larger than the typical size, and I'm not sure how inputting that into the 'frames' section would look like

cold marsh
#

Can you add multiple /A preconditions to a single event? If so I suppose it would look like this? /A ConvoTopic1 /A ConvoTopic2

calm nebula
#

Sure

cold marsh
#

Good to know, thanks

royal stump
# outer verge does anyone know if i can (and how I can) plug in an animation from my animation...

So...that field needs to be a list of entries like "SpriteAnimationFrames": [[20], [20], [21]], optionally with a specific duration (in milliseconds) after each frame, which I think is the same between data animations and the patio (100ms).

If you're okay with the default durations, you can copy the animations you want (like the part between slashes) into a text editor, then use CTRL+H to replace the text like this:

#

(4 images SDVpufferdizzy)
(also you can modify it slightly to add durations, if needed)

gentle rose
ornate locust
#

speaking of short/long preconditions
{{ModID}}_BillSeb/SawEvent {{ModId}}_BillLinus/Friendship Linus 1000/Friendship Sebastian 1000/Weather rainy/Time 900 1800":
Something seems to be wrong with the friendship bit? I get the feeling I'm using it wrong with multiples

#

(I'm converting my short preconditions to long ones and the previous way had /f for both)

outer verge
#

Ive currently got an error that crashes my game, and it says that it can't find a xnb file for a custom spouse patio im trying to make. How would I get that patio? I assume its an issue with my content json or disposition json, but I can't figure out whats wrong

royal stump
#

I think you can consolidate it into /Friendship Linus 1000 Sebastian 1000/, but that seems like the correct check for 4 hearts

ornate locust
#

Ah never mind, found a typo somewhere else. Thanks anyway

#

typooos shakes fist

royal stump
outer verge
#

the crash log is really long lol, its the easiest to search for the error by looking up 'phainon'

#

this tiled stuff is quite difficult SDVpufferwaaah

royal stump
#

you'll need to upload the log to the log link, not the json, it won't even load for me in the json one SDVpufferdizzy

outer verge
#

wups,

ocean sailBOT
#

Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on macOS Unix 14.5.0, with 29 C# mods and 21 content packs.
Suggested fixes: One or more mods are out of date, consider updating them, SMAPI is out of date, consider updating it

outer verge
#

i forgot to remove a bunch of my mods while play testing so those are just gonna be there

royal stump
#

!tilesheetclimbing

ocean sailBOT
#

When creating or editing maps in Tiled, one common error is tilesheet climbing, marked by red text containing "invalid tilesheet path '../../..'. This is caused by SMAPI not being able to find the tilesheets needed by the map file. To prevent this error, make sure that you have a copy of all necessary tilesheets in the folder containing your WIP tmx file. Copies of vanilla tilesheets can later be deleted, but must be present while working on your map.

If you get this error with a completed map, an easy way to fix it is to open your tmx file in VS Code or a similar text editor, find all of the places with <image source=, and remove the filepaths to so that only the tilesheet names remain. For example, if the code says <image source="Content (unpacked)/Maps/townInterior_2" width="512" height="64"/>, change it to just <image source="townInterior_2" width="512" height="64"/>.

royal stump
#

^ it failed to load the spouse patio map because it was last edited without the tilesheets in the same folder, I think
(not my area of expertise, but it's a common editing issue)

outer verge
#

oooh

#

thank you so much <333

ornate locust
#

it doesn't help that my validator shows that one line differently from the others. Hm, wonder why

#

(not the online one, just the one in my text editor)

uncut viper
#

that error just means the source of the tilesheets is not in the folder bc you probably just navigated to your Unpacked folder from inside Tiled to select them

#

if the map was last edited and saved without tilesheets present (in the folder or otherwise) you get GID errors

#

(you can also try tossing it into my map fixer if you'd like, but you'll want to move the tilesheets into the same folder as your tmx if you plan on editing it further anyway)

outer verge
#

would that mean just to resave the tilesheets inside the folder?

uncut viper
#

is your working folder different from your actual mod folder? i.e. do you copy the stuff into your mod folder after you make progress

#

bc that kind of tilesheet climbing is a little strange in that it does climb up and then back down into your mod folder

outer verge
#

no, all my progress is done in the same folder, but I am pulling assets from other files to help me with my project

uncut viper
#

and the only way i can think of that happening is if you were using Tiled on a .tmx in a different folder somewhere else and selected your sheets from your mod folder

outer verge
#

like one of the tilesheets in the folder is a sheet i created from scratch, but the other png is one I pulled from a different mod's folder as reference

uncut viper
#

ah thatd do it, same thing basically but with a different mod pulled from then

#

then yeah you dont wanna do that, you want the .pngs to be in the same folder as your .tmx when you select them in Tiled

#

if you fix your map by hand or with my map fixer and then just move the pngs into the same folder as your tmx, it should just work

outer verge
#

alright, thank you so much SDVpufferparty

stuck vigil
#

So anyone know the chat debug commands to build buildings

outer verge
#

is it alright that theres a difference between the image sources?

urban patrol
#

no, you should strip the /../../ stuff out of the second one so that you just have SpringOutdoors.png

outer verge
#

alright, ty -o-/

uncut viper
#

the ../../../ is what the "climbing" is in "tilesheet climbing"

#

.. is how you "climb" up one directory

#

the fact that there is more stuff between the ../ and the SpringOutdoors.png is a symptom of the climbing so it also needs removed

halcyon nest
#

yeah, try to keep your tilesheets and your actual tmx in the same folder to prevent this!

#

or at least within the same group of folders (I think sve has their tilesheets and maps in different folders for organization’s sake, but theyre in the same general mod folder)

outer verge
#

o777 thank yall

uncut viper
#

the image source must point to the same folder as the .tmx no matter what

#

the only exception is if you want to nest your sheets like Maps/Mines/mine.png

#

aside from Mines though this is rarely ever done

#

(and by "point to the same folder" i mean, SpringOutdoors.png when written as just that is pointing to the same folder as the .tmx)

ornate locust
#

I have a workspace folder I jam all of that in, then I copy the tmx files back into their proper folders when it's done. Your tilesheets don't have to be stored in the same place in the mod itself as long as everything is set up correctly

#

but when you edit them, they need to be in the same place

uncut viper
#

correct. so not enough to just keep them in the same group of folders when editing

#

(but, for vanilla tilesheets, you may as well keep them in the same folder as the .tmx, since they shouldnt be present in your mod folder at all when the mod is finished anyway)

outer verge
#

good news: it didn't crash!!!

#

bad news:

#

uh

pine elbow
#

The void beckons

outer verge
#

i imagine its an issue with the tile sheet, but im confused on the logistics and how to fix it 😭

royal stump
#

make sure you're not putting those on the Back layer, I guess? SDVpufferthinkblob I assume they'll replace the ground if they are

outer verge
#

ah that'd do it

#

thanks SDVpufferheart

copper egret
#

hello modding people i have a question about not making mods but a question abtut mods

urban patrol
#

!mh

ocean sailBOT
#

For help with modding issues, please ask in #1272025932932055121! When asking for assistance there, sharing an error log will help others identify your issue (see https://smapi.io/log for instructions).

copper egret
#

TY SO MUCH

ivory plume
outer verge
#

is there a place i can look at the vanilla tile sheets without having to open every xnb map?

uncut viper
#

!unpack

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!

outer verge
#

ah, thanks

urban patrol
#

how do you do an AND when condition, again?

#

my two conditions are has SVE installed and "HasFlag: |contains={{ModId}}_NikoCured": true,

uncut viper
#

everything listed in a When condition must be true already

#

so just listing multiple things is already an AND

urban patrol
#

oh, OR is the weird one, ok

uncut viper
#

that and when you want to use the same token but for two different values i.e. Has Mod false for one mod and true for another

lucid mulch
#

ORing different tokens is where it gets semi spicy

uncut viper
#

but you're not doing that so it's fine

lucid mulch
#

ORing the same token but different value is ez, "HasFlag": "{{ModId}}_NikoCured, {{ModId}}_NikoCured2" is an OR

urban patrol
#

i can already tell that's going to confuse me forever lol

#

but! no need to worry about it rn

uncut viper
#

just remember that the stuff in the value of your when keys is always a big ol OR

lucid mulch
#

I do want OR to be easier, but doing it without actually making everything more complex is hard

uncut viper
#

merge is pretty easy at least, not to say it wouldn't be nice if it was easier

urban patrol
#

before i copy paste this 100 times, checking that this is correct:

    "HasMod |contains=FlashShifter.StardewValleyExpandedCP": true,
    "HasFlag |contains={{ModId}}_NikoCured": true,
},```
#

wait no SVE true

uncut viper
#

remove the : after hasmod

lucid mulch
#

Merge is a nice pattern, but it doesn't feel intuitive of what you would immediately jump to from skimming the docuumentation

uncut viper
#

it's not an input argument

#

same with hasflag

urban patrol
#

like that?

uncut viper
lucid mulch
#

that is still an AND

uncut viper
#

they want an AND

urban patrol
#

yes an AND is what i want here

#

actually i do need one AND and one OR

uncut viper
#

in the same When?

urban patrol
#

4 different patches: SVE + Niko, no SVE + no Niko, SVE + no Niko, no SVE + Niko

#

but i only need to write the ones with Niko

uncut viper
#

well if you wanna try and combine both an AND and an OR in the same When condition then uhh good luck because I'm on mobile in bed and definitely not gonna try and write that spicy one out SDVpufferthumbsup

urban patrol
#

no, two different patches haha

#

patch #1: has SVE and has niko (as seen above)
patch #2: no SVE and has niko (problematic because one true and one false?)

lucid mulch
#

that is still an and

#

just change the true in the value to false

urban patrol
uncut viper
#

when you write false as the value, you are checking that the token resolves to false

#

It will be True that "HasMod SVE" is false

urban patrol
#

ohh i see

lucid mulch
#

The way CP when conditionals work is that there are 2 sets being built, one in the json key, and one in the json value.
The condition entry passes when those sets overlap, and the overall patch passes the conditions if all conditions pass.

"When": { 
    "HasMod": "FlashShifter.StardewValleyExpandedCP",
    "HasFlag |contains={{ModId}}_NikoCured": true,
}

In this example, the first conditions key becomes the set of all loaded mods, and the condition will pass if it contains the value FlashShifter.StardewValleyExpandedCP.
The second condition is the set of all flags, but then using the |contains reserved input argument, changes the set to now do an overlap check with its input argument, making the set either contain true if it overlaps, or false if there is no overlap. It then will use that boolean set and compare with the value, which is true so the condition passes if HasFlag contains {{ModId}}_NikoCured.

"When": { 
    "HasMod |contains=FlashShifter.StardewValleyExpandedCP": false,
    "HasFlag |contains={{ModId}}_NikoCured": true,
}

With this example,
the first condition will be transformed into the overlap boolean test, but now the condition will pass if it doesn't overlap, and the second condition is the same as before.

urban patrol
#

oh that lays it out very clearly! it's like when they had us do those logic tables where like !p AND !q = F

crude plank
#

it is exactly that

urban patrol
#

for some reason that just wasn't clicking until now haha

lucid mulch
#

The main reason why people do "HasMod |contains=FlashShifter.StardewValleyExpandedCP": true over "HasMod": "FlashShifter.StardewValleyExpandedCP" isn't directly CP constraints at all, but JSON constraints of duplicate keys

urban patrol
#

oh because if you didn't use contains, you couldn't check for has the mods SVE and RSV?

lucid mulch
#

yes

urban patrol
#

sorry if these are stupid questions, i just learn best by confirming examples

lucid mulch
#

but if you aren't doing AND checks with the single token, you don't need |contains for these simple cases, but people generally do anyway to be consistant

#

technically slightly more performant without the |contains as one less set comparison is done (and a bit less parsing overhead etc) but the performance difference is negligable

spice inlet
#

owh, nexus just ate a ton of comments SDVpufferthinkblob
tried moving a long comment section into a bug report, but it just took the head and is loading forever

lucid iron
#

Eventually the very first comment get successfully moved

spice inlet
#

it should move all of them, not just the first one though

lucid iron
#

Yeah it's been broken for a few months now

brave fable
#

note: never try using any options on nexus that sound even slightly cool because they won't work

#

even copy/paste/undo in the wysiwyg editor somehow manages to fail

craggy goblet
cursive pike
#

I have this error I wanted to make a way from the Mountain to my own area what should I do I have the tilsheets in my folder?

brave fable
#

!tilesheetclimbing

ocean sailBOT
#

When creating or editing maps in Tiled, one common error is tilesheet climbing, marked by red text containing "invalid tilesheet path '../../..'. This is caused by SMAPI not being able to find the tilesheets needed by the map file. To prevent this error, make sure that you have a copy of all necessary tilesheets in the folder containing your WIP tmx file. Copies of vanilla tilesheets can later be deleted, but must be present while working on your map.

If you get this error with a completed map, an easy way to fix it is to open your tmx file in VS Code or a similar text editor, find all of the places with <image source=, and remove the filepaths to so that only the tilesheet names remain. For example, if the code says <image source="Content (unpacked)/Maps/townInterior_2" width="512" height="64"/>, change it to just <image source="townInterior_2" width="512" height="64"/>.

cursive pike
#

Thanks

brave fable
#

(named after a jellyfish? SDVpufferpleading)

brave fable
#

(yes!)

cursive pike
#

Sorry I dont get itSDVpufferwaaah

brave fable
#

(oh nevermind then! borrowed a friend's comic with your name in it a while ago hahah)

open jewel
#

Hey all! Thanks for your help yesterday! I've made a mod but when I try and load it SMAPI tells me that the folder is empty (it isn't) and I'm not sure what's wrong. The mod does exist in the Stardew Valley/Mods folder and isn't empty, so I don't see where I've gone wrong

gentle rose
#

can we see a log?

#

!log

ocean sailBOT
#

Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.

Please share your SMAPI log file. To do so:

  1. Open this page: smapi.io/log.
  2. Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
  3. After uploading, it will show a green box with a URL to share. Post that URL here.

Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didn’t occur in your last session, please load the game to the point where the issue occurs, then upload the log.

vernal crest
#

Also a screenshot of your mod folder please

open jewel
hallow prism
#

all the files should be in the ash cat folder

#

all YOUR files

open jewel
#

They are as well

hallow prism
#

not the other mods

open jewel
#

Which is why it's a bit confusing

vernal crest
#

See the "View" button in your folder? Go into there and find the "show file extensions" option. Click that, and then you will see that your files are actually content.json.txt and manifest.json.txt

#

Because currently they are text files, not json files, so SMAPI can't read them

hallow prism
#

ok so what aba said next then 🙂

open jewel
#

Ohhhhh

hallow prism
#

yeah!

open jewel
#

How do I convert them to json files

#

omg i feel so silly hahaha

hallow prism
#

just renaming them whatever.json

vernal crest
#

(And then once you've done that, delete the ones that are outside the "Ash Cat" folder.

hallow prism
#

it's not silly

#

the extention being hidden got more than one modder

vernal crest
#

Yup once you can see the file extensions you'll be able to rename them to remove the .txt bit and they will convert to json then.

hallow prism
#

(in the future we also really really prefer the log being shared by the link, but for this specific case this was enough)

open jewel
#

Thank you both SO much ❤️ ❤️ ❤️

vernal crest
#

I agree with Lumi, it's not silly. It's common enough that I suspected this was the issue the moment I read your first message. It's Microsoft's fault for hiding file extensions by default.

open jewel
#

No but you have both been wonderful thank you so much!!!

open jewel
#

You have been amazing and I've managed to upload my first Stardew mod now thanks to you!both @vernal crest & @hallow prism! 😄

https://www.nexusmods.com/stardewvalley/mods/35780

Nexus Mods :: Stardew Valley

Bring a witchy white cat to your Stardew Valley farm with this mod! You'll be able to select the new cat from the start of the game or from Marnie's shop.

vernal crest
fading walrus
halcyon ivy
inland rain
#

am I tweaking or is there really no "stairsup" sound in Stardew Valley?

brave fable
#

sure isn't SDVpufferthumbsup the ExitMines ladders are just regular, quiet warps

lucid iron
#

Isn't there some kinda footsteps into doorway sound

reef siren
brave fable
reef siren
brave fable
lucid iron
#

You have a hanging [ ] value with no field

brave fable
#

you'd accidentally cut-out the FriendshipConditions key to your [] list

lucid iron
#

Although do u actually need mfm here? CP can send mail now

#

And u can also use mfm via cp too

reef siren
#

Wait can it?!

lucid iron
#

Yeah most vanilla mod is sent via trigger actions

reef siren
lucid iron
#

You can reference those

#

It's fine to keep using mfm if u don't feel like changing im just pointing it out

reef siren
#

I've only really just opened MFM for the first time and I think it would be better off to keep learning just Content Patcher tbh so I'll chuck MFM out the window lolol

#

Any tips where to start with CP mail though? Like a template would help 1000%

brave fable
#

have you unpacked the game content yet? it's always the best place to start!

reef siren
#

Ah I'm yet to look into the code part of my unpacked folder I've just been looking at the pngs lol

#

I will look there thank you!

steel plaza
#

what did the new update of content patcher changed?

fading walrus
steel plaza
#

ohmk thankss

#

just saw it, not much

#

i thought it would change some or add some tokens

twilit quest
#

@lucid iron You added it!!! ❤️

#

@lucid iron You rock! Thank you again!

lucid iron
#

Feel free to try tho

twilit quest
#

They're map properties same as "mushymato.MMAP_FarmHouseFurnitureAdd", right?

lucid iron
#

No they are trigger action actions

#

Tractions

brave fable
#

i'm seriously impressed at how simple it is to add custom interactible items. transpile checkForAction? nope, just ```json
{
"Action": "EditData",
"Target": "Data/Machines",
"Entries": {
"(BC)blueberry.DesertBus_Arcade": {
"InteractMethod": "DesertBus.ModEntry, DesertBus: CheckForActionOnDesertBusArcade"
}
}
}

lucid iron
#

You'd want to write a one use Data/TriggerActions which call em

brave fable
#

it even sends a console warning describing how you slipped up. Method was found but not static. unbelievable

lucid iron
#

I think i might have been the first person to actually use em in a mod (livestock bazaar)

brave fable
#

InteractMethod club 🤝

lucid iron
#

That said ppl tend to use furniture tile action these days

brave fable
#

sure, that sounds more flexible. but this is simplicity codified

lucid iron
#

Actually i wonder if better crafting uses interact actions (nop it was custom fields)

twilit quest
#

BTW, @lucid iron, the Farmhouse Upgrade trigger always took time. I was able to get it down to 2 nights instead of 3 by changing whether it triggered on day end or day start, but it always took time

lucid iron
#

When i called it via debug action it happened immediately after sleep

torpid sparrow
#

Is there a warp that prevents NPCs from using it? I feel like there is but i cant remember

twilit quest
brave fable
#

Action Warp should behave roughly the same, but for interactions only

torpid sparrow
#

Thanks! Having an issue with NPCs trying to use the warp even though the location it leads to is excluded from pathfinding SMCPufferjail

lucid iron
#

Default still 1

twilit quest
#

I'll experiment and let you know

twilit quest
brittle pasture
inland rain
brittle pasture
inland rain
#

oh yeah that's really similar

brittle pasture
#

digging holes in the ground, the universal hobby

tiny zealot
#

pretty similar, but mine is for storage and general utility and not really for fast travel. it gets a second entrance late game so you can do some minor teleport shenanigans with it but it's more of a bonus

brave fable
#

can machines do non-working idle sprite animations, or only when working? without extensions

brittle pasture
#

only when working yes

opal tendon
#

What is the context for these two blue outfits?

tiny zealot
#

top left: emily rock meditation cutscene
bottom right: sleeping (pajamas)

whole raptor
#

Rock meditation cutscene? SDVpufferthink

twilit quest
whole raptor
#

Ah! I genuinely thought there was some kind of event where she sits on a giant rock that I didn't know of SDVpuffersquee

reef siren
hallow prism
#

you don't receive any of them, or you receive only a few?

reef siren
#

I dont recieve any of them

#

Maybe its a fault for my i18n??

urban patrol
#

your trigger actions need a time of delivery

#

AddMail Current MailName tomorrow

hallow prism
#

it should default to tomorrow according to doc

urban patrol
#

or whenever you want

#

oh never mind if it defaults