#making-mods-general

1 messages · Page 504 of 1

ornate locust
#

Like Sophia's position is right, but it shows her standing on Caroline, who got moved via map patch

peak halo
#

Any videos I can watch on this anywhere?

vernal crest
ornate locust
#

yeah, the more I look at this, the more it seems like people were moved in the SVE map patches and that didn't come across in the positions on the site. I thought they'd moved it later, but maybe position changes just weren't caught since they were in maps.

silk basalt
#

hrmmm okay, how do i go about making something on a map interactible? is it something i do in the programming phase or is it something i can do in tiled?

calm nebula
#

What type of interaction do you want

silk basalt
#

like, going up to a sofa and remarking that it looks comfy, or identifying a person in a photo hanging on a wall

#

my tiled project, while not impressive wasn't as scuffed as i remembered!

ornate locust
#

The sofa one might be odd because sittableness is part of objects you can sit on

silk basalt
#

ahhh that's very true, i might not add the sofa one then

#

i definitely want to keep the one with the photos though!

ornate locust
#

But otherwise, that'd be a touch action. You can do that in Tiled, let me see

short temple
ornate locust
#

sorry, not a touch action, the name of that one always confuses me. An action

#

Lots of mods use those to pop up flavor text when you use a spot

#

You just put the text into strings

summer spoke
#

I'm working on the json.file for the SMPAI mod and Content Pack and it's asking for a description. It's not set in stone, is it? Like, if I decide to add something to it, it won't destroy anything if I change it, will it?

summer spoke
#

Thank you

#

What's a D11 File?

hard fern
# summer spoke What's a D11 File?

a dll file is (very very simply put) kind of like the content.json for SMAPI mods. it has all the information for the mod to work in it

#

if the mod you want to make doesn't need C# then you don't have to worry about it

summer spoke
#

Right, okay. Thank you. So, how do I know if I need a C#? I've been reading the wiki pages, but I still don't understand that. Sorry

hard fern
summer spoke
#

Right, since that doesn't sound like something I'll be doing, can I just pass it by and ignore it?

hard fern
#

i mean yeah if you don't think you need it you don't have to look at any of the C# articles

summer spoke
#

No, sorry, I should've been more clear, my fault. I was talking about the D11 File.

hard fern
#

you mean DLL right?

summer spoke
#

Is that what it is? Sorry, my brain doesn't work well sometimes. It kinda looks like two 1

silk basalt
#

in tiled, which objects in the path layer mean there's a monster?

summer spoke
#

EntryDll

#

Right from the past

#

paste

hard fern
#

yeah, you only need that if you're making a C# mod

summer spoke
#

Thank you

hard fern
#

(a SMAPI mod)

vernal crest
iron ridge
summer spoke
#

No, I'm kind of going by the wikipedia page

#

I thought that was just kind of teaching me the outline

#

Was I wrong?

vernal crest
summer spoke
#

Okay, I understand. Thank you

#

What are the update keys?

vernal crest
#

They're how your users know that there's an update. If you release on Nexus, the key for that is the number of your mod page.

summer spoke
#

Thank you

#

Is it okay if I copy and paste my manifest.json here to see if it is what it needs to be?

vernal crest
#

!codeblock Sure, but please use a codeblock

ocean sailBOT
#

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

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

summer spoke
#

''' {
"Name": "DemonSlayerPitiable",
"Author": "MySafeLittleCorner",
"Version": "1.6.15",
"UniqueID": "MySafeLittleCorner.DemonSlayerPitiable",
"UpdateKeys": [40724],
"ContentPackFor": {
"UniqueID": "MySafeLittleCorner.ContentPatcher",
"MinimumVersion": "1.6.15"
}
}

#

Right?

vernal crest
#

You want backticks, not apostrophes

summer spoke
#

I'm going to be honest and say I don't know the difference. Sorry

vernal crest
#

Backticks are usually on the same key as the tilde ~

summer spoke
#
{
    "Name": "DemonSlayerPitiable",
    "Author": "MySafeLittleCorner",
    "Version": "1.6.15",
    "UniqueID": "MySafeLittleCorner.DemonSlayerPitiable",
    "UpdateKeys": [40724],
    "ContentPackFor": {
            "UniqueID": "MySafeLittleCorner.ContentPatcher",
            "MinimumVersion": "1.6.15"
    }
} 
#

There we go!

#

Thank you

vernal crest
#

Two parts are wrong:

  • UpdateKeys, you need quote marks around it and you need the word Nexus: in front of it like this "UpdateKeys": [ "Nexus:2400" ]
  • Your mod is a content pack for Content Patcher so you need to use CP's unique ID instead of MySafeLittleCorner.ContentPatcher
#

@silk basalt Are you wanting to add a vanilla tilesheet to your map or one from a tilesheet mod?

vernal crest
summer spoke
#

Knew I was missing something. Thank you

fresh lintel
#

Happy new Year!!!!!

silk basalt
#

happy new year y'all!!

fresh lintel
#

🎆 Happy New Year! 🎆

I’m welcoming the new year the best way I know how:
releasing a new version of the mod to fix a bug 😄

Version 0.0.9 is now out, bringing a small but important fix.

If anyone is around and willing to help, I’d really appreciate it if someone could post this update on the mod’s showcase — that would help a lot.

Thanks to everyone for the support, feedback, and patience. I'm glad to be part of this community. All of you are very special
May your crops grow fast, your saves stay safe, and your mods never break ✨

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

Nexus Mods :: Stardew Valley

A Large New Farm Type, huge Farm with Forest Farm benefits and two optional extensions.

summer spoke
#

Happy New Year

forest rover
#

Happy New Year Everybody!

summer spoke
#

Do I need to put ContentPatcher and SMAPI both in the mod file I'm working on, or do they just go into the all-around mod file?

iron ridge
#

you dont include dependencies in your mod's files

crude plank
#

I actually have no ideabolbcatgooglyconfused

summer spoke
#

Right. Okay, thank you

iron ridge
#

and you cant load the content pack without content patcher and smapi so they dont need to go into the dependencies section

ornate locust
#

Yeah sorry to deliver bad news. But I think the vanilla NPCs moved in map patches for SVE instead of by text are not updated right. I went through the fair maps first and that seemed to be the case. When the sky isn't exploding, I can try to figure out how to do a PR to fix that? And maybe the icon for Andy being Sandy.

#

I was going through the maps but then the fireworks started up again and I can't hear myself damn think

summer spoke
#

How do I find CP's unique ID?

iron ridge
#

Pathoschild.ContentPatcher

#

it's in the manifest.json

summer spoke
#

Thank you

#
    "Name": "DemonSlayerPitiable",
    "Author": "MySafeLittleCorner",
    "Version": "1.6.15",
    "Description": "After helping the child you found unconscious near the bust stop, you never expected to be drawn into the mystery that surrounds the Demon Slayers. Now you need to help them figure out exactly how they got there in the first place, and just what they're going to do in a world wihtout demons to slay."
    "UniqueID": "MySafeLittleCorner.DemonSlayerPitiable",
    "UpdateKeys": ["Nexus:40724"],
    "ContentPackFor": {
            "UniqueID": "Pathoschild.ContentPatcher",
            "MinimumVersion": "1.6.15"
    }
}```
#

Better?

#

I feel like I could do better the with Description the farther along I get with the game, but that was the best I can do right now.

iron ridge
#

minimumversion is the framework's version

#

not the game

#

same for your mod version, not being the game version

summer spoke
#

right, okay

#

So, should they be found in the manifest?

#

Right, dumb question. Should've thought a little more before asking, truthfully.

north plover
#

Does anyone know if it's possible to retexture mod-added craftables using Alternative Textures? If so, how would one go about doing so, is there a guide to doing so that I can check out? Asking because I got a request from a mod user of one of my AT packs.

vernal crest
silk basalt
#

how do i add properties to a tile in tiled, then? :0

#

like, touchaction or regular actions?

vernal crest
#

Have you looked at the maps page on the wiki?

#

It explains that

north plover
silk basalt
#

i just wanna make sure i don't make it completely explode lmao

#

like, i'm trying to make it so you have to be a certain friendship level to enter his room, this is the right way to do it yes?;;

#

or should i use the door action instead?;;; sorry, it's overwhelming a bit again

vernal crest
#

Yes, but if you want it to be on a door rather than just a doorway, you should use the Action instead of TouchAction.

silk basalt
#

i think i have it, thank you

#

will i need to make an entry in one of the .json files to have the text pop up when interacting with an object? or is there a simple, like, show text command i missed?;;; sorry

vernal crest
# silk basalt will i need to make an entry in one of the .json files to have the text pop up w...

You should, yes. There are ways to do it without json but then you can't use i18n and it means anyone translating your mod would have to share a copy of your entire map. It's not considered good practice.

To do it the best practice way, you'll want to use Action Message or Action Letter in the map, with a key like <ModId>.string.bookcase (it can be whatever you want and written however you like, mine is just an example - but do put your mod id in it so it's unique).

In your json you write a EditData patch with the Target Strings\StringsFromMaps. The entry keys will be the keys that you put in the map. The value will be an i18n token, and then in your default.json you write the actual text for the player to see.

Let me know if you need an example.

silk basalt
#

i THINK i know what to do but after my war with the commas last night i'd like to have something to start from lmao

vernal crest
#

Ok give me a minute

#

!tilesheetinator @silk basalt By the way, are you using the Tilesheetinator?

ocean sailBOT
#

You can use the Tilesheetinator tiled extension to create Stardew Valley maps that work in-game without having to copy vanilla and modded tilesheets back-and-forth, rename files with a . in front of their name, edit maps only in the unpacked content folder or make symlink workarounds.

See the mod page for full installation and use instructions.

vernal crest
# silk basalt an example would be great, actually, if you don't mind;;

Screenshot shows the map, then below we've got the strings and the i18n. You can do even the map part in json if you want to, by using an EditMap patch with the MapTiles field.

{
// content.json
            "LogName": "Add map strings",
            "Action": "EditData",
            "Target": "Strings/StringsFromMaps",
            "Entries": {
                "{{ModID}}_LongDrop": "{{i18n: map.long-drop}}",
                "{{ModID}}_Track1": "{{i18n: map.track.1}}",
                "{{ModID}}_Track2": "{{i18n: map.track.2}}",
                "{{ModID}}_RoadSign": "{{i18n: map.road-sign}}",
                "{{ModID}}_PicnicSign": "{{i18n: map.picnic-sign}}",
            }
        },
// default.json
{
    "map.long-drop": "It's a long drop. You realise that maybe you don't want to go in there.",
    "map.track.1": "The track continues for a way before turning right and disappearing. Maybe one day you will take a walk down there. Not today, though.",
    "map.track.2": "You see a small wooden bridge over the river and then the track disappears into the gloom under the trees. This must be the return point for Star Trail.",
    "map.road-sign": "Zuzu Highway, 3 miles. This must be how Hiria got her RV into the park. The gate is closed for now.",
    "map.picnic-sign": "Cindersap Forest picnic area. Dispose of litter thoughtfully."
}
silk basalt
#

thank you!!

vernal crest
#

I strongly recommend starting to use the tilesheetinator if you're not already. It makes mapmaking much less error prone.

silk basalt
#

where can i find that? thxIloveit

#

oh there it is never mind

#

thank you!! sorry for the trouble

silk basalt
silk basalt
#

so uh, let me see if i understand...? i'm going to be putting all of the dialogue and map text into the i18n folder instead under a default title, then using that as a key to inject the data into the files in the assets folder...?

#

sorry, i understand the basic stuff, but i get intimidated when i see all the. other stuff

#

like, with this example from the github page, i know what's going on until we get to the double brackets, and then i start worrying i'm not getting it anymore;;;

#

sorry for being difficult about this, i'm just. trying to make sure i get it

vernal crest
silk basalt
#

oh the default title i meant is. er. default.json like you said yeah
i wasn't sure too should i call that english instead? or keep it as default?

vernal crest
vernal crest
#

When you say the double brackets, do you mean just things like {{TargetWithoutPath}} or {{i18n: blabla}}?

silk basalt
silk basalt
#

like, you give the npc a gift they like, so the game checks the dialogue file, and the dialogue file says to check the default.json in the i18n folder. right...? or am i super off alskdjf

vernal crest
#

You're correct ^_^

silk basalt
#

thank you!!!

vernal crest
#

And the purpose of doing that is that translators can just copy the default.json file and make a file named whatever their language is, then change all the values to be in their language. They never have to touch any of the actual "code" of the mod at all. It makes it safer because they're less likely to accidentally translate something that's intended as instructions to the game instead of player-visible dialogue. And it also means that your hard work stays just inside your own mod, because all a translator has to give players to download is the zh.json (for example) instead of all your maps, dialogue files, etc.

#

The double curly brackets indicate something called a token. They're used to tell Content Patcher to put the right value where the token is. A non-i18n example is the {{Season}} token. You might sometimes see a texture mod with a FromFile field with {{Season}} in it, like "FromFile": "assets/Sebastian_{{Season}}.png". When CP goes to find the file to replace Sebastian's portrait in game, it checks what season the current save is in and replaces the {{Season}} with that word. So in fall, CP will grab the Sebastian_fall.png file, for example, so you get to see Seb wearing a sweater in game.

(The game itself has tokens, but they're indicated with square brackets, like [LocalizedText <asset:key>] - same principle, different syntax.)

silk basalt
#

so, uh, one more time. i can take all of the dialogue i have written out and copy and paste it into the default.json, then i just need to tell it to check the i18n file with the same key? right?

ocean sailBOT
#

@silk basalt You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!

silk basalt
#

i can do the same for the gift taste stuff, yes?

vernal crest
#

You can use Nomori's converter to make it easier

#

!converters

vernal crest
#

The first bullet point under "Other tools". It should let you easily convert your existing dialogue and gift taste stuff to i18n.

#

Are you loading a blank.json?

silk basalt
#

i believe so still yes

#

yes i am

vernal crest
#

Okay that's good, because you can't use tokens inside a file you're Loading.

#

That's the purpose of Loading the blank. You Load a blank file, then use an EditData patch to put the actual data in there.

#

If you tried to Load your dialogue directly and had tokens inside it, you'd see those tokens as plain text instead of the thing that's supposed to be there.

silk basalt
#

ooo okay

#

so let me. try to get it

#

in the content.json:
"Action": "EditData",
"Target": "assets/blank.json",
"Entries": (the dialogue?)

#

er, the .json?

vernal crest
#

Nope, not quite

#

You never edit actual files with mods

#

You edit the assets in game

#

So your Target should never be a real file path

#

Can you show me your blank.json Load patch?

silk basalt
#

oh, it's loading for the schedule right now

vernal crest
#

Okay, you'll need to add the dialogue asset to the Target

#

"Target": "Characters/schedules/{{ModId}}.Hugo, Characters/Dialogue/{{ModId}}.Hugo" - also, you're missing the s at the end of Characters there.

silk basalt
#

thank you!

#

so it needs to load both, then?

#

ah, do i need to have it load a blank on the marriage dialogue too then?

#

i don't have that one done yet but

vernal crest
#

Yes, you will need the marriage dialogue asset in there too if you're doing marriage

silk basalt
#

okay, so just add it in the same way?

vernal crest
#

Yup, just at the end

silk basalt
#

then just replace the dialogue.json with the indicated text in the converter? if that's it then i'll go test it out furisalute

vernal crest
#

Since you weren't already loading a blank for the dialogue after all, you'll need to change your dialogue.json first

#

Right now does it look like this? In terms of the brackets, and it not having any "Action", "Entries", "Target", etc fields in it?

{
  "Introduction": "bla bla",
  "Mon": "bla bla",
  "spring_Tue": "bla bla"
  // etc
}
silk basalt
#

i swapped it to the i18n tokens, but before it did yes

#

did i skip a step thxIloveit

#

sorry, i got hyped lol

vernal crest
#

Yes, so you need to adjust it so that it's got an EditData patch

silk basalt
#

soo lemme try again then!!

#

er, sorry, an edit in the dialogue.json?

#

or one in the content

vernal crest
#

In the dialogue.json.

#

So instead of it looking like this (using one of my NPCs as an example):

{
    "Introduction": "{{i18n: Louisa.intro}}",
    "MovieInvitation": "{{i18n: Louisa.MovieInvitation}}",
    "breakUp": "{{i18n: Louisa.breakUp}}",
    "divorced": "{{i18n: Louisa.divorced}}",
    "WipedMemory": "{{i18n: Louisa.WipedMemory}}",
    "DumpsterDiveComment": "{{i18n: Louisa.DumpsterDiveComment}}",
    "HitBySlingshot": "{{i18n: Louisa.HitBySlingshot}}",
}

It looks like this:

{
    "Changes": [
        {
            "LogName": "Louisa Dialogue",
            "Action": "EditData",
            "Target": "Characters/Dialogue/{{ModID}}_Louisa",
            "Entries": {
                "Introduction": "{{i18n: Louisa.intro}}",
                "MovieInvitation": "{{i18n: Louisa.MovieInvitation}}",
                "breakUp": "{{i18n: Louisa.breakUp}}",
                "divorced": "{{i18n: Louisa.divorced}}",
                "WipedMemory": "{{i18n: Louisa.WipedMemory}}",
                "DumpsterDiveComment": "{{i18n: Louisa.DumpsterDiveComment}}",
                "HitBySlingshot": "{{i18n: Louisa.HitBySlingshot}}",
            }
        },
    ]
}
silk basalt
#

so this should be good to test out then?;;

#

thank you so much again for being so patient with me lol

vernal crest
#

I see a red squiggly underneath that opening bracket above Changes, so you've got a problem somewhere in the file

#

So what you're showing me looks right, but something that's outside the screenshot is wrong

silk basalt
#

it says property expected?

vernal crest
#

There shouldn't be anything in the file before that curly bracket. Is there?

silk basalt
#

OH there was a rogue bracket yes

vernal crest
#

All good now? No more errors?

#

Don't try testing it yet

#

It won't work

silk basalt
#

i think we're good, it's just mad about commas

vernal crest
#

Trailing commas?

silk basalt
#

yeah

vernal crest
#

After we get your dialogue sorted I can teach you how to make it stop complaining about them

#

Okay, now you need to make sure you change your content.json as well.

Where before you had (maybe still have) a patch like this:

{
    "LogName": "Load Louisa's Dialogue",
    "Action": "Load",
    "Target": "Characters/Dialogue/{{ModID}}_Louisa",
    "FromFile": "data/louisa_dialogue.json"
},

You need to remove that (not the blank.json Load, but one that's Loading your dialogue.json file if it's still there) and replace it with this:

{
    "LogName": "Include Louisa's Dialogue",
    "Action": "Include",
    "FromFile": "data/louisa_dialogue.json"
},
silk basalt
#

like these?

vernal crest
#

Yes, did you already have those?

silk basalt
#

i just replaced the ones from before with the text you gave, below the one from before that loaded the schedule and dialogues into the blank.json

#

er, should i upload it again?

#

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

vernal crest
#

Sounds like you got it right, but if you want to be sure I am happy to check

silk basalt
#

thank you so much!!

vernal crest
#

Ah, your marriage dialogue target is not quite correct

#

How did you decide upon that as a target?

silk basalt
#

that was what i named the json before, do i need to pick a different name?

vernal crest
#

Also, it looks like at some point you switched his internal name from {{ModId}}.Hugo to {{ModId}}_Hugo, so make sure you're not still using {{ModId}}.Hugo anywhere (like you are with your blank load).

vernal crest
#

Marriage dialogue has to have a Target of Characters/Dialogue/MarriageDialogue<NPCInternalName>

silk basalt
#

OH okay thank you

vernal crest
#

You will also need to do the same switch with your schedule later than we're doing with the dialogue, but you can test your dialogue once you've fixed the targets in the blank load patch.

silk basalt
#

so this?

vernal crest
#

Close, but the marriage dialogue one is wrong. Can you identify why?

silk basalt
#

do i still need to have the mod id at the end?

vernal crest
#

Do you understand the difference between an NPC's internal name and their display name?

#

(This is relevant to your question, I'm not just ignoring it)

silk basalt
#

i thought i did, but i apparently do not as well as i thought i did alksjdf

#

i assume that the internal name is so it's something unique, and then you can have the display name as whatever, right?

vernal crest
#

Yes that's right

#

Their internal name is the ID we use to refer to them in the data and code

silk basalt
#

so the {{ModId}}_Hugo is how to make it check for the internal name, right?

#

er, that. is the internal name i mean

vernal crest
#

Yep, that's right

silk basalt
#

the red cursor feels so ominous with troubleshooting lol

#

like this then, yes?

vernal crest
#

So the only time you ever want to use just Hugo is in player-visible text, like in an event where someone else is talking about him or in his introduction dialogue where he says "Hello, I'm Hugo" (for example). Everywhere else, it's always internal name.

silk basalt
#

right!! i think i've got it then

#

i. can only give him things. and not talk to him

vernal crest
#

Are there any errors in your log?

silk basalt
#

oh there it is yeah

vernal crest
#

The red one is just to do with schedule so you can ignore it for now

#

Can you figure out what the yellow ones mean is wrong?

hard fern
#

mismatch between fromfile and the actual file location/name 🤔

vernal crest
#

Thank you Forsy but I was trying to encourage el to learn how to read it lol

silk basalt
#

i was going to ask if it was because i had the load command in the same thing but aslkdjf yeah that was my other guess

hard fern
#

Oh- lol

silk basalt
#

thank you for the help though alksdjf

#

er would it be better if i dmed about all of this? i don't want anyone else needing help to feel like they need to wait

vernal crest
#

Nope, if there's anyone else around they will hopefully just jump in and ask

#

We're used to having multiple conversations going at once

silk basalt
#

so do i need to just check the files it's looking for then?;;

vernal crest
#

Well, have a look at the FromFile lines

#

And then have a look at your file structure

#

What folder is it looking for?

silk basalt
#

OH DATA NOT ASSETS

woeful lintel
#

it already does, but some FF features require a specific layout of the tilesheet that vanilla content doesn't have

silk basalt
#

bruh i was going to ask why only one of his unique gift accept dialogues wasn't working but i realized it's because. i didn't add it yet. yeah that one's on me laksjdf

#

i'm going to have to do more troubleshooting tomorrow, i'm getting tired lmao

#

happy new year and thank you for all the help!!

vernal crest
#

Happy new year!

noble ermine
#

Happy new yearSDVpufferheart

elder hornet
#

Hii! Do you need to restart a new game for slight dialogue/schedule changes or is just reloading the game enough. It's for playtesting 🙂

#

Also happy new year! SDVpufferparty

proud wyvern
#

if it's Content Patcher stuff, you can use patch reload iirc

#

due to the nature of schedules, changes to these only apply on the next day after loading a save file

elder hornet
#

Okay, thank you!

whole raptor
#

For schedules I believe you might have to sleep a day

vernal crest
inland rain
#

Pet Coats, lets you define custom coats for specific pets, either swapping specific colors, tinting the entire texture, or replacing the texture outright (this one swaps the bandana colors for neutral colors and tints the entire texture grey). Here's the Content Patcher code:

{
"Format": "2.7.0",
    "Changes": [
        {
            "Action": "EditData",
            "Target": "aedenthorn.PetCoats/dict",
            "Entries": 
            {
                "{{ModId}}.BorderCollie": 
                {
                    "PetType":"Dog",
                    "PetBreed":"3",
                    "Tint":{
                        "R":155,
                        "G":155,
                        "B":155
                    },
                    "Swap":{
                        "180,67,58":"255,255,255",
                        "147,51,72":"200,200,200",
                        "87,39,55":"155,155,155"
                    }
                }
            }
        }
    ]
}
uncut aspen
#

does any1 know if the "introduction" dialogue works? i can't get it to trigger the dialogue for the life of me. It just defaults to the NPC's monday dialogue . those are the only 2 dialogues in the code atm. The save im testing it on shows the NPC's name as ??? still so it should be triggering the introduction 1 but i can't figure out why it wont.

vernal crest
uncut aspen
#

It's not a new save, but its a save without the NPC existing before. And no i havn't set up their gift preferences yet.

vernal crest
#

You need both, because the introduction CT only lasts for 6 days after save creation so any NPCs who are installed after that won't be able to say their Introduction line. And no CTs will work without gift tastes - you can just copy a vanilla NPC's tastes for now and adjust them later if needed.

uncut aspen
#

Oh ok, so the "introduction" only works on the first week of playing?

vernal crest
#

Yes

uncut aspen
#

That complicates things cuz the npc only spawns 1 day a week till an event is done. Guess I should do an event as an intro instead of just the dialogue.

vernal crest
#

You can create your own CT and use that as their introduction dialogue line instead

uncut aspen
#

Any suggestions on what to tie the CT trigger to for an introduction?

vernal crest
#

You could just set it for much longer than the vanilla one so it starts as soon as your NPC is installed but will still be present if the player doesn't meet them for a while.

#

And if it would be possible for the event to play before the player meets them and weird for the introduction dialogue to happen after the event, you could remove the CT right after the event so the player doesn't get the dialogue if they met them for the first time during the event.

uncut aspen
#

I guess what i'm asking is, what causes the CT to load? Will it just auto load if there's no trigger to load it?

vernal crest
#

You create it using a trigger action. If you have no condition on the trigger action, it'd just run the first time it could, which would be the first day your mod is installed or the first day of the save if a player started with the mod.

#

But if you wanted a condition, you could control it - we have quite a lot of control over trigger actions.

uncut aspen
#

so i just leave "conditions" blank and the trigger on "DayEnding" and it'll trigger after the first day. Do i need to do something to make it only fire once, or is it gonna repeat the trigger every time a day ends.

vernal crest
#

That's right, but no you don't have to do anything to make it only fire once. That's the default for trigger actions.

uncut aspen
#

Ok i think i have everything figured out to make this work. ty for the help.

elfin kindle
#

Im stealing this idea to make my mod a little more friendly to people who add the mod on an existing save

opaque field
#

If I override Shane's bedroom and want to add TileData, I do it on the Objects layer the same name as the layer the thing is on, Name it TileData, add Action and then Message "ShanesNewRoom.1" or do I put it on the Animal Shop Map?

summer spoke
#
    "Name": "DemonSlayerPitiable",
    "Author": "MySafeLittleCorner",
    "Version": "4.3.2",
    "Description": "After helping the child you found unconscious near the bust stop, you never expected to be drawn into the mystery that surrounds the Demon Slayers. Now you need to help them figure out exactly how they got there in the first place, and just what they're going to do in a world wihtout demons to slay.",
    "UniqueID": "MySafeLittleCorner.DemonSlayerPitiable",
    "UpdateKeys": ["Nexus:40724"],
    "ContentPackFor": {
            "UniqueID": "Pathoschild.ContentPatcher",
            "MinimumVersion": "2.8.1"
    }
}```
#

Is that correct?

#

Also Happy 2026

opaque field
#

Happy 2026 :3 looks good to me

summer spoke
#

Great! Thank you!

vernal crest
#

Unless you've already released at least 8 versions of this mod already

summer spoke
#

I have not. I'm sorry, can you tell me where I went wrong?

vernal crest
vernal crest
summer spoke
#

I see. Thank you. so it's just "version" and not "minimumversion"?

vernal crest
opaque field
summer spoke
#

Thank you for your patience and help. So, I just put a 1?

vernal crest
gaunt orbit
#

The usual convention for versioning is major.minor.revision, where major version is for updates that break compatibility, minor is updates that don't break compatibility but have significant changes from the previous version, and revision is for anything smaller.

vernal crest
#

As Wren said, though some content modders just go "big change, little change, bugfix".

vernal crest
summer spoke
#

That makes sense. Thank you.

latent mauve
#

You can place the TileData on your custom TMX for Shane's room and as long as you are adding TileData objects and not Map Properties, they will carry over to the AnimalShop map in that section when you patch your TMX in with EditMap

opaque field
summer spoke
#

Truthfully, I always wondered why they were written for that

opaque field
latent mauve
vernal crest
#

Patch export Maps/AnimalShop and check if your objects are present

latent mauve
#

And you have an actual tile below it on the coordinating tile layer?

vernal crest
#

It has to be Buildings, too

opaque field
#

Can it be “Buildings2?”

latent mauve
#

No

opaque field
#

Ah. Ok that’s why

#

Good to knowwww

latent mauve
#

Layer names with numbers are for drawing visuals only

gaunt orbit
#

(extra layers are purely decorative and do not have logic)

latent mauve
#

The non numbered layers are the only ones that have collision or related tile properties such as data objects

opaque field
#

I’ll find somewhere else to tuck then notes then - ty!

#

Updated my personal notes sheet too

latent mauve
#

You can still use Buildings for your message even if you have the notes visually on Buildings2 (because another tile is usually on Buildings if you are using Buildings2, so it still has a tile in those coordinates to attach the property to)

summer spoke
#

Now, do I go onto Content Pack Frameworks since I finished my manifest?

vernal crest
#

Are you referring to the wiki?

summer spoke
#

Yes, I had one open and now that's turned into 12 open somehow, so I'm just a bit confused.

vernal crest
summer spoke
#

Thank you

#

Dumb question, but does smapi and contentpack go into the mod folder or does it stay in Stardew Valley game folder?

lucid iron
#

SMAPI is installed via the installer script

#

All mods, including content patcher and what you are making, go into <gamefolder>/Mods

summer spoke
#

Thank you

#

Oh, I messed up again. The same error is popping up, so I'm going to fix that then come back.

#

Thanks for your help everyone!

vernal crest
#

CP doesn't go into your mod folder though

summer spoke
#

Maybe this would be easier if I take a class considering how I learn. Does anyone have an online class that they would recommend?

ocean sailBOT
#

@summer spoke You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!

lucid iron
#

Ah yeah im referring to the folder called Mods

#

You want to end up like

Mods/
    ContentPatcher/...
    YourMod/(manifest.json etc)
vernal crest
summer spoke
#

That makes sense. Maybe a video game making course then? Get the basics of programming if nothing else

vernal crest
#

And it's not programming, so although programming knowledge definitely helps, you can't directly apply it exactly as you'd learn in a class but instead have to use the concepts

summer spoke
#

Right

lucid iron
#

Take it slowly at own pace SDVpufferthumbsup

vernal crest
#

And learning programming just to make a json mod is like learning how to drive a truck so you can ride a bicycle lol

summer spoke
#

I'll figure something out. I'm really do want to make this mod. Thank you for all the help. Sorry I messed it up

vernal crest
#

You don't have to apologise and you're very welcome to keep asking questions here

latent mauve
#

Welp, just got a comment from a user informing me that another NPC mod placed their entrance blocking the Pelican Valley Loft apartments

vernal crest
#

There's certainly nothing wrong with looking into free game dev courses, but it might overwhelm you due to how much additional work game dev needs compared to this kind of modmaking

latent mauve
#

The mountains have such limited space, so I can't really move it again or make yet another alternate entrance xD

#

User didn't bother telling the NPC author about the issue though??

vernal crest
vernal crest
latent mauve
#

Yeah, it's not great

summer spoke
#

Maybe I can make a sort of list that I can follow? Either way, gotta fix this mistake first.

latent mauve
#

I mean, Central Stationing it does not fix the NPCs having to path back in, chu

hallow prism
#

it's easier to add npcs warp to area now

#

VMV has one in the town hidden behind a building and it works well so far for the limited use i make for it

vernal crest
latent mauve
#

I am going to make it CS compatible for players at some point but there is not a good way to handle the NPC path in just yet, unless the proposed NPC specific warp property finally got implemented

lucid iron
#

Oh i think we did get addnpcwarp

#

In EditMap

#

You still have the issue of overlapping npc warp tiles though gotta be careful on that one

latent mauve
#

Chu, specifically it was suggested that we get an additional parameter for NPC Warps that allowed a warp to be ignored if it wasn't valid for a specific NPC

#

That's the one I was referring to, not AddNPCWarps, which just behaves like AddWarps by allowing new NPC Warp map properties to be added without overwriting preexisting ones 🙂

lucid iron
#

Ah yes 1.6.16 then Dokkan

#

Schedule changes
NPCs will no longer be affected by warps they touch while following their schedule if those warps are not the one they intend to go to.

tender bloom
gaunt orbit
#

@sly gull !startmodding

lucid iron
#

It's not additional param tho hrm

gaunt orbit
#

Damn it what's the command

tender bloom
#

It’s such a problem to find space for stuff that like…maybe not everything can fit with everything

gaunt orbit
#

I forgot everything today

tender bloom
#

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

tender bloom
#

Hug

#

Huh

#

I think it didn’t like something about the format w ping??

gaunt orbit
#

Oh I guess I have to put the ping on the end

hard fern
#

you're not having command luck today

lucid iron
#

Bot only look at ! at the start o message right

hard fern
#

yeah

latent mauve
#

Just kind of bold for a user to suggest that the earlier-existing mod creating 70+ available NPC living spaces is the one that should move for a mod that creates one, and their mod will also run into further compat issues with Baldur's Village and Crazy Ed's Crazy Fruit Trees (both of which I made alternate paths for).

#

I only wrote an alternate path for Crazy Ed's compat because it released before my mod and I overlooked it when choosing my spot, which is on me.

tender bloom
#

Yeah, at that point in your shoes I would just tell the user that you checked mods when you released, by etiquette it’s on the other mod, and they can learn to make personal edits if the other author won’t/can’t add compat

pale river
# summer spoke Maybe this would be easier if I take a class considering how I learn. Does anyon...

i think it's better to write down what you want to do in your mod, have a list of the things you want to do; so people will have an idea of what you want to do;

After you have an idea of what you want to do, you can try to figure out ways on how to do it. Or ask people here, and they can tell you how you can get around to doing it. Like breaking it down into steps

it's not going to be easier if you did learn how to code because it's the same formula, but hopefully this strategy helps you feel less lost and overwhelmed SDVpufferheart although it would be helpful to know the fundamentals such as events/functions/tokens given what you want to do

latent mauve
#

Actually, considering that one of the alternate entrances I made was for SVE and they didn't create their own alternate, I think that NPC's mod author has bigger issues to be worried about for compat than mine.

#

SVE is a mess to build compat for with location entrances.

pale river
tender bloom
#

Yes

#

That’s the reason

#

It edits a whole bunch of maps (not inherently bad! But makes compat hard) and has a lot of users with stupid complaints about compatibility (because it has a lot of users and a small fraction of them do inexplicably stupid things)

latent mauve
#

You get a whole new level of "is this location taken" with SVE maps, because of the changes

hallow prism
#

it was also not the best about compat in the past, which explains a bit of the fatigue around it from mod authors

#

althought progresses were made on that regard

latent mauve
#

Some mod authors don't even bother trying for SVE compat anymore because sometimes free vanilla locations are hard enough to find

tender bloom
#

There’s a somewhat asymmetric dynamic because users disproportionately complain to other, less popular mods’ authors

latent mauve
#

The first part, anyway

glass sphinx
pale river
hallow prism
latent mauve
#

Questions about making mods are fine for here, questions about playing with mods less so, mainly because there's a valid running joke that mod authors don't actually play the game anymore xD

tender bloom
#

Once in a blue moon…

pale river
latent mauve
brittle ledge
#

(I love seeing these stats every month SDVpufferheart )

I've been wondering about this for a few months now, but I'm surprised to see a 1.4 format in the top five with the 1.6 formats, and all the 1.5 formats dropping out. Curious as to what you think the reason might be? Like, is it because most 1.4 mods were never updated to 1.5 or 1.6 while a lot of 1.5 mods were updated, or were the 1.5 mods more splintered across different CP versions?

pale river
glass sphinx
#

I’m thinking about making something myself to track seasons, plants, etc. — I’ve built bots and mods/cogs before, so it could be a fun little project. It’s such a cute game. a1_heart Is there one already for this.. hmm, there is so much that can be made!

brittle ledge
#

Depends on what you mean by tracking, I've seen a number of mods that might fit kyuuchan_nod2

tender bloom
#

There’s a few websites that break down profitability and there’s the Stardew checkup website, if you’re curious about external sorts of tools

urban patrol
#

you can definitely two cakes it though

summer spoke
#

@pale river right. Thank you

glass sphinx
brittle ledge
#

if you want to make a thing, make a thing kyuuchan_nod2 I was just trying to answer your question about if there was one already SDVpuffersquee

#

!twocakes

ocean sailBOT
#

If you discover that someone has made or is making a mod with a similar concept to yours, don't stress! Our community promotes the idea of "two cakes", where two versions of the same idea can peacefully co-exist. Your mod will have your own unique stamp on it that makes it special.

latent mauve
#

We do love our multiple cakes here

urban patrol
#

!startmodding your project sounds like it may need C#—are you familiar?

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.

urban patrol
#

!decompile to see the game code also

ocean sailBOT
clear bough
#

Can someone assist? I have the portraits, and I used the mod by Zeroxpatch to create the content and manifest. However, I need to edit this so that the NPC changes clothes whether he is indoors or not. Similar to how Shane doesn't wear his winter coat while working at Joja. I'm confused about where to add the basic Appearances code block.

uncut viper
#

for starters don't use their mods because they are all AI generated and thus a) not suitable for this server per the rules and b) broken more often than not
you don't need their stuff to make a content or manifest anyway
https://stardewvalleywiki.com/Modding:NPC_data
this wiki page describes what the NPC data looks like and on there it describes appearances as well

round dock
#

Button out of topic but

#

I finally finally watched frieren

uncut viper
#

have you already unpacked your files? You can also look at the vanilla NPCs for examples

round dock
#

I regret not watching it sooner Frieren7

clear bough
#
Stardew Modding Wiki

Last edited by AirynS on 2025-10-23 07:04:19
If you want to add seasonal outfits for your NPC, there's two ways you can do this: the token way or the Appearances way. Appearances is a new code structure added in SDV 1.6, so if you're looking at an older NPC's code for reference, they'll most likely be using the token way. The main difference bet...

#

I have a content and manifest right now.

uncut viper
#

that's a tutorial that tells you how to use the data on the wiki page I linked you

round dock
#

Lmao when i reached the :3 scene, i was like wait dats button Frieren9

uncut viper
#

following that tutorial should get you to do whatever it is you want to do too, though it may help to understand what the underlying data is and what is doing

uncut viper
clear bough
#

I'm aware of that. Do I need to copy and paste that over what is in my content file currently

round dock
#

I see why it won anime of the year awards, the storytelling is superb FrierenKuruKuru

#

New season is in a few weeks SDVpufferwoke

uncut viper
#

if you intend to edit that asset, then obviously don't overwrite it. If you don't, then replace it

clear bough
#

This came from the program they uploaded once I inserted the images.

autumn tide
#

I got a template you can use!

uncut viper
#

well that code has absolutely nothing to do with NPCs

#

and the format number is out of date

tawny burrow
#

is this a good channel to ask how to install mods? or is there another one

round dock
#

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

uncut viper
#

Don't use their program, not in the least because if you intend to keep using it, we literally can't help here

round dock
ocean sailBOT
uncut viper
#

Follow the tutorial that you said you were referring to in order to write your json and scrap what the program gave you. That will give you the json you need to have an indoor vs outdoor outfit for your npc

tawny burrow
autumn tide
# clear bough This came from the program they uploaded once I inserted the images.

hey there, looks like the base you were using was incorrect. I do have a template if you're interested! https://www.nexusmods.com/stardewvalley/mods/39706?tab=description

Nexus Mods :: Stardew Valley

Hey! This is just a file that has all the code necessary for a portrait mod, just follow the instructions to replace stuff (the code for making portraits is very simple, so luckily you won't have to c

round dock
tawny burrow
uncut viper
autumn tide
#

ohh it's just basic seasonal

round dock
#

Hi pathos happy new year FrierenWave

uncut viper
#

that doesn't tell me anything

#

basic seasonal stuff can and should still use the Appearances system, which is what they wanted to use

autumn tide
#

it enables a singular variant for all seasons using CP tokens

lucid iron
#

I'm disappointed in you/lh

ivory plume
# brittle ledge (I love seeing these stats every month <:SDVpufferheart:544718683486814228> ) I...

If we look at the format versions over time and the attached charts:

game | SMAPI | Content Patcher           | dates
---- | ----- | ------------------------- | -----------------------------------------
1.2  |       | 1.0  – 1.3  (4 versions)  | 2018-02-25 through 2018-09-26 (30 weeks)
1.3  | 2.6+  | 1.4  – 1.9  (6 versions)  | 2018-08-26 through 2019-11-26 (65 weeks)
1.4  | 3.0+  | 1.10 – 1.19 (10 versions) | 2019-11-26 through 2020-12-05 (53 weeks)
1.5  | 3.8+  | 1.20 – 1.30 (11 versions) | 2020-12-05 through 2024-03-19 (171 weeks)
1.6  | 4.0+  | 2.0  – 2.8  (9 versions)  | 2024-03-19—                   (93 weeks)

There are three possible factors that stand out:

  1. Stardew Valley 1.5 lasted 323% longer and had 133% more format versions than 1.4, so content packs were likely split across more versions as you thought.
  2. Content Patcher 1.19 was for both Stardew Valley 1.4 (1.19.0) and 1.5 (1.19.1+), and Android was stuck on Stardew Valley 1.4 for a long time. Many content packs likely targeted 1.19 to support Android players. You can see that in the chart — even though 1.19.0 released in December 2020 and was only the latest version for nine weeks, it kept climbing until 2024 (when Content Patcher 2.0 took over as the baseline version).
  3. With a few exceptions (like 1.29), most format versions have a long tail of content packs which never update. So often it's not so much that a format version dropped out of the top five, as a newer version became more popular (since the rate at which Content Patcher packs are created has increased over time).
uncut viper
#

then that template won't help them with indoor vs outdoor appearances

lucid iron
#

Did the modding wiki guide get linked already

uncut viper
#

yes, by them

autumn tide
#

ohhh, i figured they just wanted a simple version

lucid iron
autumn tide
#

yeahhh, I'm just still learning how I might make an appearances version that makes total sense to complete beginners

#

I try really hard to make sure my templates make sense and the apprearances system makes that more complex

uncut viper
#

not using appearances however is bad practice when there is no reason not to use them, so I'd say it's worse to recommend the token version over them in the first place

lucid iron
#

I would probably make it LocalTokens because i am LocalTokens enthusiast

uncut viper
#

and if the appearance system on its very own is complex, then there will never be a template that somehow makes it less complex than itself, so you may as well just make the template

lucid iron
#

But it really depends on the goal here, do you want people to just put in 3-5 values and it go brr

autumn tide
#

ig, again I'm decently new myself and I wanna make stuff simpler

lucid iron
#

Or do you want to actually show the whole structure without added complexity

autumn tide
lucid iron
#

That doesn't answer the question though

brittle ledge
autumn tide
#

3-5 values go brr™

uncut viper
#

you cant make the Appearances system simpler, is my point. you have to have at minimum, yknow, the fields that go into the Appearance system. if the existence of those fields themselves is whats making it confusing, then there is no way around that besides explaining what they do

#

you cannot make it simpler by removing the fields because then it is not the Appearance system

lucid iron
#

Because you can approach it such that the actual local token include is "it goes brr do not touch" to the consumer of the template

autumn tide
#

ig, again I do plan on doing apprearances eventually, I just thought this might be helpful since there are no other templates

lucid iron
#

The other template is vanilla game, winter outfits Dokkan

uncut viper
#

or the wiki guide, which is basically a template

brittle ledge
#

I get where you're coming from, but I do agree it's better to get people on the best practices at the ground floor kyuuchan_nod2 when I do my "simple" NPC for people to use as an example/template, I'm still going to i18n it even though I do think that's an extra layer of complexity, because it's something people should do.

autumn tide
#

I'm just tired rn LOL

brittle pasture
#

(also I downloaded your seasonal template and:

  • the seasonal tokens are not even being used at all? it's only loading the base variants
  • you're Loading and EditImage-ing the same asset in two separate blocks, with no explanation of the difference between the two)
autumn tide
#

fuckkk okay lemme see

brittle ledge
#

(I'm going to have to learn Appearances when I do this since my 'simple' NPC has seasonals SDVpufferchicksweatsip )

brittle pasture
#

(I appreciate the efforts you're putting in to make modding more accessible, but I do feel you should be more knowledgeable with the basics before teaching said basics to others)

autumn tide
#

yeahhh i'll take down the seasonal then

#

well i've fucked up-

urban patrol
#

i do think chu has a point where you could use tokens to allow users to plug in values like “do you have summer portraits?: yes” to enable/disable things as needed

autumn tide
#

..gonna disappear a little while i emotionally recover byeee

brittle ledge
brittle pasture
#

it is also possible to be too knowledgable and write documentation that's utterly incomprehensible to all but other code divers

lucid iron
brittle pasture
#

stares at Extra Animal Config

uncut viper
#

yeah i dont think anyone thinks you fucked up or anything

autumn tide
lucid iron
urban patrol
#

it’s very nice of you to want to make more modding resources! we’re all a pack of optimization-loving problem solvers lol

lucid iron
#

I hook <this thing> to <other thing> and it can be used for A B C

uncut viper
#

i like to think im pretty good at tutorials and docs personally

lucid iron
#

When it comes to docs people want linear story telling and it harder blobcatgooglyblep

brittle ledge
brittle ledge
lucid iron
#

Or they ask hey how do I do à not knowing that it's just A with 1 extra step

brittle pasture
lucid iron
valid folio
#

Hi, how are you all doing? I hope you had a lovely end of the year and a great New Year!

By any chance, do you know if it’s possible for a mail to have more than one condition to be delivered? For example, reaching a certain skill level and having a specific friendship level with an NPC?

lucid iron
#

Assembling the pieces is part of the process

urban patrol
#

yep! in the trigger action you send the mail with, simply list multiple GSQs separated by commas

uncut viper
uncut viper
#

i think people also arent used to nesting things very deeply which doesnt help with some BETAS stuff

urban patrol
#

i wouldn’t expect it from docs, but i do appreciate when there are notes and hints like “by the way, you can combine this with X to do Y” when it’s something creative i might not have thought of

lucid iron
#

Yeah at some point you approach problem that this traction stuff is nearly a DSL

uncut viper
#

idk what a DSL is

lucid iron
#

Domain specific language

#

A embedded scripting language basically

brittle pasture
#

clearly we need lua scripts for trigger actions

uncut viper
#

at one point i had plans for an actual custom scripting language for BETAS

#

i still do a little bit

lucid iron
#

Buttonscript

calm nebula
#

Also your name is very festive, pathos

#

Just fucking embed lua lol

brittle pasture
#

"selph.CustomTapperFramework_TransformCrop Cornucopia_MintSeeds 1 false \"selph.CustomTapperFramework_NEARBY_CROPS 1 \\\"ITEM_ID Input Cornucopia_MintSeeds\\\" 3 true, RANDOM 0.8\"" example of real code from real coders (me)

uncut viper
#

nope

#

no lua

brittle pasture
#

lisp then

lucid iron
#

What about COBOL

calm nebula
#

Tcl

uncut viper
#

whats the most natural language sounding scripting language

lucid iron
#

Snek

uncut viper
#

though ill admit even though i understand when things must be nested, figuring out how many slashes is still something i struggle with sometimes bc of not being able to remember how many layers of quote-saving and quote-escaping and quote-removing something might go through lol

calm nebula
calm nebula
#

It doesnt exist.

#

Oh no

uncut viper
#

dont forget to add an extra escape if you're testing it on your IDE console, too

calm nebula
#

Rockstar

#

Rockstar is best

brittle pasture
#

unrelated but i just wanna ramble that dwarf fortress is adding lua support for generating object data; it's literally "the content modder yearns for foreach" manifested

uncut viper
#

so what you're saying is we need to PR in Lua scripting to content patcher?

calm nebula
#
Rockstar

Rockstar is an esoteric programming language based on the ‘lyrical conventions of 1980s hard rock songs and power ballads.’. It was created by Dylan Beattie in 2018.

calm nebula
uncut viper
#

fucked up escaping nightmares was like 33% of the reason i added tokenizable string support and trnalsation key support to the relevant BETAS features that could use it

calm nebula
#

What's the other 67%

#

Yolo?

uncut viper
#

the other 67% was i was using a fucked up custom format for things like offset numbers bc i forgot tokenizable strings existed at the time

#

right now i have like [CharacterCoordinate Haley X] which turns into haley's current X coordinate, which is nice
before it was something weird like Coordinate:NPC:Haley:X or some shit that i then parsed myself

#

bc i needed some way to differentiate someone trying to grab a coord likew that vs manually writing a number

#

this is why BETAS went to 2.0.0 so quickly bc changing that was a breaking change even though i think i had 0 users at the time

#

and now all that work to add tkstring support to tractions and GSQs will be all for naught since vanilla is going to have that anyway in 1.7 SDVpufferpensive

urban patrol
#

you can plant your flag on that rock and say “but i did it before it was cool” SDVpuffersquee

uncut viper
#

that would be more of a consolation if it didnt coem with the fact that ill likely have to redo all my stuff again just to make sure my stuff still actually works with the vanilla system

lucid iron
#

Unfortunately I didn't forsee how often I'd need a texture + sourcerect in a space delim string

uncut viper
#

not too late to add tkstring support yourself SDVpufferthumbsup but also you dont limit yourself to just strings anyway dont you, you could just add a data model

urban patrol
#

space delim string?? fear.jpg

uncut viper
#

you've already been using those

lucid iron
#

Yeah I do just give up and data model eventually but not always

urban patrol
#

oh yeah some BETAS stuff has it i remember

lucid iron
#

So there's a lot of inconsistencies SMCPufferjail

uncut viper
#

vanilla has it

#

everywhere

#

gift tastes are slash delimited strings of space delimited strings

lucid iron
#

A space deliminated string is just like

urban patrol
lucid iron
#

"thing thing foo bar"

uncut viper
#

this sentence is a space delimited string

lucid iron
#

As opposed to comma delim like

#

"thing,thing,foo,bar"

patent lanceBOT
urban patrol
#

actually i just remembered. spacecore spawning has a space delim string of slash delim strings of comma delim strings for the Action

#

final boss of strings

uncut viper
#

yeah that woulda made a good data model probably

gaunt orbit
#

if I try to load a foreign model dictionary asset as an IReadOnlyDictionary<string, object> do you think that will make things explode?

#

or do I have to do horrible things with code generation again

#

maybe if I just load it as IEnumerable...

uncut viper
#

why do you need it to be readonly

lucid iron
#

im reading "foreign model dictionary" as another mod's asset

autumn tide
#

okayyy I added more detail about how the game works to the basic portrait replacement, uhhh would appreictae feedback to make sure i got everything right/phrased it all correctly

gaunt orbit
#

yeah, I'm trying to read another mod's data without hard-referencing it, but I don't need to keep it around, just process it when it gets invalidated

autumn tide
lucid iron
lucid iron
#

but Helper.GameContent is own cache so it's ok

#

however idk about the ireadonlydict stuff

calm nebula
#

Unlike the list variant it's not covariant

gaunt orbit
royal stump
#

I'm not aware of any useful way to do that, at least; the content pipeline always errors about casting if I don't know the actual k/v types

gaunt orbit
calm nebula
#

Sorry, I meant the other message on IReadOnlyDictionary

#

That one isnt covariant

#

IReadOnlyList is

gaunt orbit
#

how is it not covariant?

#

if it's readonly

calm nebula
#

See the out keyword?

gaunt orbit
#

okay, admittedly that was a dumb question and not actually what I meant to ask

#

what I meant was, why is it not covariant if you can't insert entries

calm nebula
#

No idea, ask Microsoft lol

gaunt orbit
#

fair enough

brittle pasture
# autumn tide

yeah this is a good start, though the "why" instead of the "what" is also needed
if your template is aimed at portrait replacers of other NPCs I think EditImage is preferred

autumn tide
#

hmm, could you elaborate?

brittle pasture
#

(alas I'm going to leave in a moments)

autumn tide
#

ohhh it's okay dw!

gaunt orbit
#

maybe I should just say fuck it and ignore c# mods that don't do type matching

lucid iron
#

what is the actual usecase here blobcatgooglyblep

royal stump
#

SDVpuffersquint oh, I'm surprised it puts up with this

Monitor.Log($"Testing some content load type nonsense...", LogLevel.Alert);
dynamic asset = Helper.GameContent.Load<dynamic>("Data/Objects");

foreach (dynamic entry in asset)
    Monitor.Log(entry.Key, LogLevel.Alert);```
lucid iron
gaunt orbit
royal stump
#

yeah, it never liked object, but ig dynamic resolves whether your uses are valid at runtine

#

(and doesn't make the content loader die, more importantly)

uncut viper
#

i load Secret Note Framework's asset as I think a Dictionary<string, object> and just use newtonsoft to use it after, it works fine

royal stump
#

though it's possible someone who knows better will say this corrupts the cache or something SDVpufferlurk

#

yeah, newtonsoft tricks probably help too, I'm only familiar with doing that on my own assets

uncut viper
#

oh wait no i just load it as a straight up object not even a dictionary

#

i dont think i would do that again if i made that mod today lol (not in the least bc SNF has an API now)

#

i also use Game1.content for it and not my helper

lucid iron
#

original instance unchanged

uncut viper
#

yeah it creates a new JObject

#

from the object

#

wow this code is awful

#

maybe i shouldnt have linked it SDVpuffersquee

#

(in my defense this was like month 1.5 of me learning C#)

gaunt orbit
#

I think what I'm going to do is use reflection to get the type, bind it to GameContent.Load, then cast to dynamic after calling and manipulate it directly

autumn tide
#

okayyy tinkering more with the basic portrait mod template, uhh lemme know if my explanations make sense!

final arch
#

whats the correct way to remove a vanilla trigger action? just edit it with

  {
    "Id": "<ID_OF_VANILLA_TRIGGER_ACTION",
  },```
?
uncut viper
#

same way you'd remove anything else with content patcher, null it out with the ID as the entry key

final arch
#

thanks!

ornate locust
#

Pillow festival site PR step 1: filling in a bunch of missing sprites...

#

Now step 2, SVE nudging, send me an energy bomb or something, I'm gonna need it

urban patrol
#

thank you for the reminder that i still need to PR my characters

#

oh man where's that link

ornate locust
#

This is both going to help and give a headache to people who did SVE positioning, I know it

#

but a headache now is less headaches later

urban patrol
#

yeah i already had a bug report about one of my characters colliding with SVE positions despite using the tool, because a third unrelated mod moved them lol

ornate locust
#

Well Nic, I got bad news LOL

urban patrol
#

nah to PR

ornate locust
#

Oh that's linked at the bottom

#

as "source code"

urban patrol
#

aha! thanks

ornate locust
#

My bad news is that the site seems to use vanilla positions for vanilla NPCs

#

on SVE maps

#

which is what I am currently going to try to fix

#

so it may not even be anythin moving them other than SVE

urban patrol
#

yeah that's what i was referring to! although i didn't think it was vanilla positions

#

i see

ornate locust
#

Also adding NPCs that show up later in SVE, like Lance, so you won't be jumpscared Y3 by Morgan standing on you or something

urban patrol
#

helpful!

ornate locust
#

I hope so, because this is gonna take some time holds breath, dives into files

urban patrol
#

i want to PR src/lib/positions right?

elfin kindle
#

I love when a random player tells me that my NPC collides with Bertholomew the Third and im like who.. tf is that, especially when they dont link to the custom NPC (speaking of positions and collissions)

urban patrol
#

yeah after updating my character positions on the site, i'm fully prepared to say "nope i've moved positions 397573 times, learn to do a personal edit or deal with overlap"

#

festival positions are my least favorite thing ever

lucid iron
#

ur npc is a hermit

opaque field
#

me finding reasons for why my NPCs don't attend so I don't have to do it

lucid iron
#

never goes to festivals

elfin kindle
#

Yeah, its boring and tedious, you cannot force me to redo it cus NPC XYZ is also there. Same with schedules honestly

lucid iron
#

actually imagine if u just park them in front of bus stop on fest day and be like "these ppl r loud im raising a complaint"

elfin kindle
#

"Every once in a bluemoon, your NPC collides with this other custom NPC" aight, well they're having a little chat but forgot about personal boundaries for a second, it happens

#

Im making it a cannon hangout event for them rn actually

opaque field
elfin kindle
#

Truly

opaque field
#

Honestly I never report stuff like that mostly cuz it makes me giggle so hard

#

Shane walks through a bush in an event if you have SVE installed and I haven't fixed it because I think it's funny (and no one's opened a bug report about it)

urban patrol
#

(idk github PR stuff--do i have to/should i be PRing every file i change separately, or is there a good way to do it in bulk? is it annoying to receive several PRs?)

lucid iron
#

so first you wanna go make a fork

#

after that, commit all changes to the fork

#

this can be 1 commit or several

urban patrol
#

oh i did that! i'm here

lucid iron
#

lastly open PR from your fork to original

#

yea press the green button and u good Bolb

urban patrol
#

okay and i do the last step each time?

lucid iron
#

you should just do all your changes in 1 PR

#

unless pillow has other opinions

#

u may change many files and do many commit

urban patrol
#

okay so i back out and go edit a different file then at the end big green button

#

makes sense thank you

lucid iron
#

yee

ornate trellis
#

pillow was fine with me doing all in one at least

#

tho there was some mention of me doing soemthing wrong that needed to be fixed, but idk waht exactly it was

ornate locust
#

Looked like a formatting thing

#

They did another update to fix that, I saw it when I was forking

ornate trellis
#

yeah tho not too sure what exactly i did wrong since i copy pasted the entries and changed only my npc name and position to fit hmm

ornate locust
#

Looked like a missing } situation

ornate trellis
#

ahh

#

my mortal enemy

#

alongside commas

#

and tbh formatting in general...

ornate locust
#

Accursed tiny punctuation that is easily missed

#

progress: the only person who moves in SVE Jellies Y1 is Haley by two tiles, adding the people who show up late now...

#

I think I'm just gonna get a list of everyone moved/new first and then actually do the code stuff once I have all the details.

elfin kindle
#

I pressed something accidentally in VSC and now it highlight the nearest letter instead of just a line where i'm typing SDVpufferwaaah Im not actually VSC savy, wtf did i even presssss

ornate locust
#

Was it Insert?

#

I don't know about VSC, but that sounds like a thing Insert can do

elfin kindle
#

No? I dont think so, i was just trying to fix an error with VSC not recognising a } as a closer or smth

uncut viper
#

definitely sounds like Insert to me though

elfin kindle
#

Probs then, well at least i now know where to see how to turn that off

uncut viper
#

maybe look for an "overtype" setting

#

its default hotkey is Insert but idk maybe it got changed in your install at some point

elfin kindle
#

hold on gotta google what hotkey insert even is

ornate locust
#

It's Insert

uncut viper
#

the literal key on your keyboard

#

that says Insert on it

ornate locust
#

Look left of Home

#

Right of backspace

elfin kindle
#

omg yeah, i have never even paid attention to it

#

bless ya'll

ornate locust
#

I'm not sure a ton of people use it

elfin kindle
#

fixed it lololol

ornate locust
#

I only know it because of accidentally hitting it and having to hit it again to stop it

elfin kindle
#

just a little silly goober momentSDVitemblobfish

opaque field
#

I hate accidentally pressing insert 😭😭

sleek flint
#

Hey everyone, can someone help me please SDVpufferwaaah
I am trying to make it possible to add a question BEFORE a channel plays in my Channel Framework. But no matter what I do, it never works. I have tried everything I could think of, and every time the question plays, but the channel doesn't run. When I check the log, it seems that the callback never works, and it never really knows when the player has answered, and because I tried too many things, it most likely is because of a core game logic running. Anyway, I don't know what to do, I could be doing something stupid, or that might not be possible, and I was wasting my time (doubt it).

I have already asked this before, but I had to go and couldn't work on my mod anytime since. So, can someone please help SDVpufferchickcry

https://github.com/Astraios-911/Temp
The things you will want to look at are ChannelPlayer.cs, ModEntry.cs, and TVPatches.cs .

lucid iron
#

I understand it as some like

#
  1. Player uses TV
  2. <Pre channel action?>
  3. The channel is rendered
  4. <Post channel action?>
#

And you are having issues getting 2 to work

tame moat
#

anyone know off hand what function I should target with Harmony prefix to stop the sword block animation before it starts? I'm looking in ILSpy but can't find the function under Farmer.

sleek flint
#

Post channel actions work normally

lucid iron
#

Ok let me actually go look at the spaget now

ornate locust
#

"ah, most of these aren't too bad, just a person or two off-" gets to the ice festival which has a whole different shaped map in SVE ohno

urban patrol
ornate locust
#

yeah the vanilla positions things causes some problems...

#

one with the trees

tame moat
#

lost in the woods

ornate locust
#

I think some of the people in the center won't need moving, but everyone else is gonna

lucid iron
sleek flint
lucid iron
#

when you test, do you ever reach the [SelectCustomChannel] Channel has BQuestions, showing question dialog branch?

sleek flint
#
[23:46:09 DEBUG More TV Channels] [SelectCustomChannel] Called with answer: Astraios.CP_Test_TestingChannel

[23:46:09 DEBUG More TV Channels] [SelectCustomChannel] Found custom channel: Astraios.CP_Test_TestingChannel

[23:46:09 DEBUG More TV Channels] [SelectCustomChannel] Channel has BQuestions, showing question dialog

[23:46:09 DEBUG More TV Channels] [ShowBQuestions] Starting for channel: Astraios.CP_Test_TestingChannel

[23:46:09 DEBUG More TV Channels] [ShowBQuestions] Question: What do you want to watch?

[23:46:09 DEBUG More TV Channels] [ShowBQuestions] Answer count: 3

[23:46:09 DEBUG More TV Channels] [ShowBQuestions] Created 3 response options

[23:46:09 DEBUG More TV Channels] [ShowBQuestions] Question dialog created

The console stops here.

ornate locust
#

there are six vanilla NPCs in the right spot on this map, I am moving ALL THE OTHERS. rolls up sleeves

lucid iron
#

ah so i think you may have bumped into a problem where the previous question dialogue is not bonked yet, it's very jank

lucid iron
#

right now once u reach [ShowBQuestions] Question dialog created im guessing it just stop and you don't get anything right

#

can the player move?

sleek flint
#

btw please ping me every time in the conversations because I am doing something while texting rn so I might not see your messages otherwise.

sleek flint
silk basalt
#

sorry, real quick-- when using the i18n generator, do i put the entire gift taste section from the content.json into the field? or do i just put the dialogue into the field?

#

sorry the i18nifier

#

i was thinking like doofenshmirz lmao

urban patrol
sleek flint
#

And if I select a channel again. It plays the rest of the log and writes in the console as if the channel played then starts the questions again and then stops at the same place.

#

it's very wierd

lucid iron
sleek flint
#

No

silk basalt
#

OH of course the tutorial has. multiple tabs. sorry for the dumb question lol, thank you

sleek flint
urban patrol
#

no worries lol i wasn't sure if you were aware of the instructions

lucid iron
#

hm ok Bolb

lucid iron
sleek flint
#

I tried that already. But I will try it again just in case I did something stupid.

#

I do that a lot SDVpufferclueless

lucid iron
#

its possible that you didn't skip prefix

#

which you'd have to cus you want your custom channels to get priority

sleek flint
lucid iron
#

oh actually another possibililty is

#

bc u are making a question dialogue in the afterquestionbehavior

sleek flint
#

We will see now in another episode of am I stupid or not! SDVpufferclueless

lucid iron
#

the afterquestionbehavior of the new question dialogue is being lost

#

from public virtual bool answerDialogue(Response answer)

afterQuestion(Game1.player, answer.responseKey);
afterQuestion = null;
Game1.objectDialoguePortraitPerson = null;
return true;
sleek flint
lucid iron
#

so there's a few thing u can try here

#

one is to hold the new question for 1 tick, and make it next tick

#

easy way to do it is DelayedAction.functionAfterDelay

#

use 0 for timeout

sleek flint
lucid iron
#

the way i did it in mmap is a postfix on answerDialogue

#

so im holding the afterquestion elsewhere first and the slapping that on there

#

this i know to work bc i wanted ability to nest answer dialogues

sleek flint
#

We are getting ahead of ourselves though. Let's try to prefix TV.selectChannel first.

lucid iron
#

no i was dumb earlier

sleek flint
#

Ok, so I was not dumb when doing this, hurray!

lucid iron
#

so yea you gotta somehow restore the afterquestion you want after answerDialogue

lucid iron
sleek flint
#

ok

west geyser
#

Hi, how is y'all?

Also, I am tryin to make a mod for the first time and am following a tutorial, but kinda can't find the json file type thing on Visual Studio. I just wanna make a full NPC and a couple of new crops.

urban patrol
#

visual studio 22 is a bit overkill for making a content pack. if you want something simpler, you can try visual studio code or notepad++ (which is what i use)

#

you can of course still use VS22 if you want

west geyser
#

Wait, I can use a content patch for making a whole new NPC? I thought it could only be used to change existing NPCs.

urban patrol
#

!npc nope! you can find a tutorial to making a new NPC here:

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:

urban patrol
#

it's basically the same as editing existing ones, except you have to load blank.jsons for assets that don't already exist and you have to target your NPC's internal name

west geyser
#

Am I able to use a content patch to make a new area too? Sorry if I am askin too many questions.

ornate locust
#

Yep

urban patrol
#

you are! and no worries this channel is for questions

ornate locust
#

You can make a whole lot in content patcher

urban patrol
#

there's a tutorial for a new area, let me link it

ornate locust
#

I think Lewis and Pam are the only people positioned right in Y2's setup, ohno^2

urban patrol
#

a good rule of thumb is that as long as you don't want to edit game mechanics, you can use CP

lucid iron
#

If u r a C# enjoyer though don't let us stop you Dokkan

west geyser
#

Mk. So, I could make an area ya travel to like Ginger Island with just a content patch?

lucid iron
#

It's just not as nice tho lots of ppl who do C# mod choose to also use CP on the side cus it's just less boilerplate

#

Yeah

urban patrol
#

if you wanted it to be "fix up this boat" it's a tiny bit more complicated but yeah still possible for sure

west geyser
#

Thanks, I am gonna go look at the tutorial stuff and hopefully get some of the stuff started.

sleek flint
#

I hate myself.

#

I tried delay action and it worked -_-.

lucid iron
#

It's ok sometimes all u need is for a med to amedstare your stuff

sleek flint
#

I could have saved myself 2 weeks of crying if I had gotten it right the first time SDVpufferchickcry

lucid iron
#

To confirm that u r right all along

sleek flint
#

Well, thank you so much Chu. I was about to give up on the whole question thing, but now I don't have to.

ornate locust
#

Final changes for the ice festival are about eight times as long as the others SDVpufferchickcry

rigid abyss
#

hey there, im new to this chat

#

does anyone know how to get the expanded mod of stardew

hallow prism
#

but searching for expanded on nexus should be a pretty solid way to find it

rigid abyss
#

thank you, i really appreciate it

silk basalt
#

to confirm rq-- in tiled, if i want to add a message to a specific location when the player interacts with it, i need to have:
"Action Message (Name of message)"
Then put into the content.json to load the default.json string using that same name, yes?

autumn tide
#

By default.json you’re referring to the i18n, right?

tame moat
silk basalt
ivory plume
autumn tide
silk basalt
#

OH that's valid alksdjf

ornate locust
#

I'm down to all three Spirit's Eves, datawise

#

Ice Festival worst by far, so far

silk basalt
#

how do i indicate on a map that something can be sat on like a chair or a bench? yaethink_anyuki

ornate locust
#

If you use vanilla tilesets, it just works

#

Some modded tilesets also just work

#

if you want to make a new tileset object sittable, that is a different thing that I do know how to do, but I'm gonna make sure you need it before I launch into that LOL

silk basalt
#

ah, well, i'm using a copy of the secret woods map that i've edited, and i wanted to be able to have characters sit on one of the fallen pillars... i might just remove it and add a bench there though if you think that would be better salkdfj

ornate locust
#

That's doable, though I believe you'd need to make a custom tilesheet and apply the chair data to it, which isn't super recolor compatible

#

It depends on how much you want to do to make that happen

silk basalt
#

i'll just add a bench for now, i just want to be able to test the map to start lol

ornate locust
silk basalt
#

thank you!!

#

also, uh, can you explain like i'm five how the npc warp and warp touchactions work in tiled? thxIloveit i have had a stroke of genius and decided to have my npc's home location be entered from the backwoods, so i need to have him pop out at the bus stop to avoid the headache that is. backwoods pathing

ornate locust
#

It's one of those "a line of info separated by slashes" kinds of deals. Since it's just a pillar, you shouldn't need chair tiles, I don't think (those are for things like the arm of a couch that will show in front of your character when you sit on it)

urban patrol
silk basalt
#

er, i meant. what the code means on the wiki page? sorry i should have been more specific lol

#

but. thank you alskdfj is there one for JUST the player, so i don't have the game explode when he tries to leave?

urban patrol
silk basalt
#

yes, that is the plan

#

OH could i maybe put the npc warp one tile ahead of the regular one?

urban patrol
#

the pathfinder will automatically calculate that the shortest route is to use the NPC warp, not the warp to the backwoods

#

but yes you should not overlap them

silk basalt
#

so like, to the left of these two

urban patrol
#

yeah that should work

#

how do you plan on having them get back? NPC warp as well?

silk basalt
#

yeah, i figured i'd put an npcwarp off to the side of the bus stop he could pathfind to

urban patrol
#

yep cool. just make sure that that warp endpoint is to the left of the "leaving the map" npc warp startpoint

#

this is easier to explain with visuals lol

silk basalt
#

thank you alskdfj

urban patrol
#

also looking at that picture are you sure those tile data don't need to be moved down one?

silk basalt
#

do you mind explaining what all of these parts mean, too? i THINK i know what i'm looking at, but i'd rather know if possible thxIloveit "NPCWarp [<int fromX> <int fromY> <string toArea> <int toX> <int toY>]+"

urban patrol
#

int means integer, which is a whole number (1 2 3, not 1.5 2.0 3.75)

#

from X and from Y are the coordinates on the map that you stand on to warp

#

to X and to Y are the coordinates on the other map where the warp dumps you

silk basalt
#

stringtoarea being the map name it wants to take me to right?

urban patrol
#

string toArea is the name of the location as a string

#

yep

silk basalt
#

ayy okay, i can work with that for sure lol thank you

urban patrol
#

wait acutally clarification: it wants the location name, not the map name

#

do you understand maps vs locations?

#

also for illustration purposes: red is an NPC warp to BusStop or wherever. blue is where the warp you add to BusStop will dump them

silk basalt
#

and thank youuu that makes sense

#

also, how do i make tiled display the. y'know. tiles as the x and y coordinates here instead of pixels?;;

urban patrol
#

map: a tmx or tbin that gets loaded to Maps/MapName. contains data about the physical map, like warps, music, lighting, where the player can walk, etc

location: an abstract thing tied to a map, generated on load. contains data about fish, forage, and is what's used for things like schedules and warps

urban patrol
#

like 5, 7 (298)

silk basalt
#

OH i do thank you

urban patrol
#

yep that's the coords SDVpufferthumbsup the (298) is the tile index, which is helpful for things like day and night tiles

silk basalt
#

do i need to keep the coordinates and the location string in the <>s?

urban patrol
#

no, <> indicates that something is a required field

silk basalt
#

so this looks right? "NPCWarp [56 16 BusStop 18 11 ]+"

urban patrol
#

a warp should look like 2 8 BusStop 16 30

#

no [ ] either, and no +

#

[ ] on the wiki (usually) means these fields are allowed but not required, and + means you can add multiple of the same thing after that

#

so a list of warps on the map would look like 2 8 BusStop 16 30 2 9 BusStop 16 31 etc etc

silk basalt
#

and does this look okay for the player's exit warp?

urban patrol
#

also, when you get to editing the bus stop map, let me know. map properties are different for when you're EditMapping vs Loading

#

yeah assuming your coords are correct

silk basalt
#

honestly the maps part is somehow significantly scarier than the rest of it,,, since there's so many little intricacies lol

urban patrol
#

once you have a handle on the most important things, it gets easier i promise

#

my first map was soooooo fucked up, i had no idea that the layers did different things, so i was just slapping things willy nilly on the buildings layer and creating new layers like Layer9

silk basalt
#

i think the maps are done for now,,, it's just a matter of figuring out how to get the game to load them in and get the i18n to cooperate too

#

oh, right, is this the correct way to get this text to display...?

autumn tide
urban patrol
silk basalt
urban patrol
#

if you followed the wiki format then you're probably good

silk basalt
#

i was given an example last night that looks like this

#

so that makes me worry i'm doing the wrong string for it

urban patrol
#

i'm absolutely not admonishing you, but you'll save yourself a lot of time if you test things and then come in here if they don't work, rather than waiting for approval on everything you do

silk basalt
#

i'd wanna do the one that's on the left there, right?;;

#

er, like, for the items in question though, not that

urban patrol
#

that being said i don't see map.blockingshelf anywhere in there

silk basalt
#

ah, that's just the text i copied and pasted in, i still need to edit it

urban patrol
#

and you wouldn't want to use the i18n key, you would want to use the key in Strings/StringsFromMaps

silk basalt
#

okay, i'm gonna just. try it and see thxIloveit

#

i always get worried i'm going to break things beyond repair lmao

#

sorry if i'm taking over chat;;; not trying to i promise

urban patrol
#

in 10 months of modding the worst i've done was had the game crash on entering the new save menu, which was harmless overall

#

and don't worry if other people had questions we would be getting interrupted

ornate locust
#

I have finished collecting all the spots that need adding and changing

#

🎉

ornate locust
#

why is Elliott on the vanilla map twice for the egg festival main event? In the actual map in the vanilla game?

urban patrol
#

you likely have both main and setup on

ornate locust
#

Me: oh that's odd, this lists him twice, let's see where he is on the map- BWEH?

#

I have it on in that image, but he's actually lower in the setup. I turned it off and that is still what you see

#

No I mean

#

Ingame

#

I am in the files

urban patrol
#

well i see emily twice in your image too

ornate locust
#

As I said, on the image, it's on.

urban patrol
#

oh she disappears but elliott doesn't?

#

odd

ornate locust
#

Setup Elliott is neither of those, he's over here

urban patrol
#

is this y1?

ornate locust
#

Yeah

#

the elliott is multiplying

urban patrol
#

my best guess is that the whole list gets parsed but the second one (the lower left one) wins and overwrites the first

ornate locust
#

If I run the festival ingame, it appears that the higher one wins since he isn't here

urban patrol
#

welp then never mind lol

ornate locust
#

Actually... LOL he appears to be facing the way of the lower left one but positioned like the upper one

#

confused elliott

urban patrol
#

as confused as me lol

#

unless there's a faceDirection command in the event script somewhere

ornate locust
#

If I talk to him, it fixes him and he faces left

urban patrol
#

you can talk to them during main event?

ornate locust
#

Well, once the egg hunt starts

#

when you can move freely

urban patrol
#

i never knew you could lol too busy egg hunting

ornate locust
#

I think it's just like that...

calm nebula
#

Huhhhh

#

I thought was fixed

ornate locust
#

Maybe it's fixed in the alpha? I'm not running that

calm nebula
#

It would have been 1.6

#

I have absolutely ignored 1.7

inland rain
lucid iron
#

do pets have like 3 layers of appearancy things now

tiny zealot
inland rain
#

type also affects the sound it makes I guess

lucid iron
#

yea i meant [with this mod]

inland rain
#

I also learned by accident that you can have a pet turtle, though idk how that happens

lucid iron
#

when is the last time you played game Dokkan

inland rain
#

I TRIED YESTERDAY but then I wanted a black dog, so here I am smh

#

I'm only safe playing games I can't mod

wispy bramble
#

you can buy the turtle from Marnie after getting max friendship with the starter pet

summer spoke
#

Is it possible to make a different map and put some new community boxes there?

autumn tide
#

hmm, do you mean like the junimo bundles?

summer spoke
#

Yes. I don't know if I want to use the sprite of a junimo like the community center, but that's exactly what I mean

#

But them again, the junimo are really cute and I won't be against using them

lucid iron
#

Unlockable bundles is what u want

#

It has many visual options

vernal crest
#

Unlockable bundles is a mod, in case you're not already familiar with it

summer spoke
#

Great. I was given the advice of writing it down first, but I don't want to accidently write in something that I won't be able to do if that makes sense.

#

Thank you

ornate locust
#

4 festivals down, 4 to go (including the Ice Festival and Spirit's Eve, so it's not exactly halfway done...)

summer spoke
#

you've got this

upper rune
#

Got permission to post my portrait mod for Jade! I felt like her high detail portraits were a little out of place so did some light tweaking. Might have just been me but if anyone is interested it's here https://www.nexusmods.com/stardewvalley/mods/40752

Nexus Mods :: Stardew Valley

A portrait mod for Jade that is a more simplified, vanilla style.

vernal crest
upper rune
#

That would be great thank you 🙂

ocean sailBOT
#

@upper rune You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!

ornate locust
#

I have conquered the ice festival

autumn tide
#

ooh?

ornate locust
#

Two of these have few changes, but then I have to fight the Three Variants of Spirit's Eve spooky oooOOooOo

#

that's the final boss battle

autumn tide
#

godspeed voyager 🫡

ornate locust
#

Might need more changes than I know how to do for Y3...

urban patrol
#

do other mod authors bother to do y3?

ornate locust
#

wait I think I see the change I need.

#

I dunno, I did.

#

and since I'm putting moved vanilla characters up there, I've got their locations too

uncut viper
#

most dont because doing y3 will break NPCs that dont have a y3, as i recall

#

same with y4, y5,etc

lapis steeple
#

Is it possible to use the heart level to determine a character's schedule? Specifically I'm imagining editing the wizard's schedule to be completely different once you hit a certain heart level, and when I tried it, it didn't work but I also could have made a mistake somewhere

ornate locust
#

It doesn't use Y3 like that

#

It has a condition that checks the year, it's technically Y1