#making-mods-general

1 messages · Page 603 of 1

proven spindle
#

PLAYER_HAS_MAIL targetplayer ccPantry
(I think that's the right bundle)

gray bear
#

thank u!

#

thonk perhaps i am doing something wrong

#

im trying to add a conditional warp ehre

#

lemmeee

#

ok it's Current and not TargetPlayer but aye

#

i18n_reload has failed me again PensiveButtPuffer

#

nvm i spelled it wrong

subtle condor
#

Okay guys, ignore my question XD I went DEEP and I can see in FTMs decompiled code, that for ore spawn, there are only the existing names in there. Definitely good to know, so that won't work then XD

#

Its like a big list with 20ish cases and any custom name will just not work

royal stump
# subtle condor Okay guys, ignore my question XD I went DEEP and I can see in FTMs decompiled co...

You could try spawning the ore as forage instead, but it may not work correctly there either. FTM sets IsSpawnedObject = true on any unrecognized object IDs there. Something like this might work around that, since it prevents pickup in a different way, but I haven't tested it on ore: ```json
"SpringItemIndex": [
{"Category": "Object", "Name": "Your ore ID here", "CanBePickedUp": false}
],
//add the same thing to summer/fall/winter if needed

#

(upcoming FTM stuff will make it easier, and I think Item Extensions can add custom ore that spawns correctly in FTM, but otherwise it's not really compatible with new ore until 2.0)

subtle condor
#

Nvm, didn't read fully through, wait XD

royal stump
#

"CanBePickedUp": false should prevent pickup anyway, but if that didn't work, unfortunately there isn't a better workaround

subtle condor
#

Let me try

#

It actually works XD thank you, that'll definitely be useful for me. I was already thinking about some workaround with overlaying textures for this specific area and stuff like that. Glad that I don't have to do this XD

ornate drift
#

outfits are ACTUALLY done this time

#

thank god

rugged elm
#

hellooo, im very VERY new to modding in stardew valley, im trying to learn some coding just so i can cover the basics. im just curious, do you guys have any tips regarding coding in a new npc? ive been wanting to make one for a while now dhawkjhdjkawdkSDVpuffertbh

fossil osprey
#

!npc for tutorials :)

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:

fossil osprey
#

(the "unknown" thread does exist and work :))

vernal crest
#

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

vernal crest
#

There's no coding (programming languages) required for making an NPC, it's all just writing JSON (and making sprites and potentially making maps)

nova gale
#

Dynamic tokens update on day start by default right?

royal stump
#

yes, and iirc dynamic tokens update at the rate of each edit they're used in, similar to built-in ones

rose bobcat
#

is there a way to access the player's current hair tint values in C#?

#

ah, Game1.player.hairstyleColor i think

ornate drift
#

is there a role for pixel artists?

#

i wonder

dire kestrel
#

there are two artist roles and neither require pixel art experience to obtain

ornate drift
#

aw man, I don't know if I've been featured or not

calm nebula
#

There is also the pixelsmith role

#

Which you can ask bouncer for once you get the mod author role

#

Which you can get if you've released a mod

ornate drift
#

alrighty

merry river
#

Is there a way to add a shop entry of a random custom flavored item since FLAVORED_ITEMonly applies to vanilla ones? I tried looking into PeliQ but I don't think it can do what I need
more specifically, my mod adds mushroom extract as an item and the "flavor" is dependent on the mushroom that you put in the custom machine for it. So how would i add a randomized shop entry for that? Please ping on reply if possible SDVpufferheart

                            "Id": "{{ModID}}_PotionVendor_Essences",
                            "ItemId": "RANDOM_ITEMS (O)",
                            "PerItemCondition": "ITEM_CONTEXT_TAG Target mushroom_extract",
                            "Price": 1000,
                            "AvailableStock": 3,
                            "MaxItems": 2,
                            "AvailableStockLimit": "Player",
                               "PriceModifiers": [ {
                                "Id": "EssencePrice",
                                "Modification": "Multiply",
                                "RandomAmount": [ 0.5, 0.7, 1, 1.5, 2, 2.5]
                            } ]
                        },```
brittle pasture
merry river
calm nebula
#

peliq

#

(a chue mod)

ornate drift
#

wait

#

Hol up.....

merry river
# calm nebula peliq

I tried to look into it but I am not sure how to make my specific case work since it's not vanilla flavored items I am trying to add

vernal crest
#

Wait until chu is awake and then make puppy dog eyes at them

ornate drift
#

@orchid glade so i know the beach sprite needs to be stated lowercase in the json

...does it also have to be lowercased in the PNG?

vernal crest
#

Wuh? What beach sprite needing to be lowercase?

ornate drift
#

Any name with _beach is required to be lowercase

#

that's stated in like a bunch of guides

#

otherwise it won't work

vernal crest
#

The only thing requiring lowercase that I know of is the sleep animation think_eyes

ornate drift
#

hm

#

maybe i confused it with that then

vernal crest
#

Is this for appearance?

ornate drift
#

yes

tiny zealot
#

resort animations require lowercase (_beach_towel et al)

vernal crest
#

Ah, perhaps that is what Speedy means

ornate drift
#

no i just need my beach portrait and sprites to work

merry river
vernal crest
brittle pasture
#

you still need to set display and internal name

#

but price, color and flavor is automatic

#

though the market definitely is in need of a proper "put this item in this machine and grab the output"

ornate drift
#

💔

brittle pasture
#

-# hmm can PeliQ chain item queries (put result of iq 1 into iq 2, put that into iq3, and so one)

vernal crest
#

That is how sleep is done...? Is it not? (Wow I am away for a month and lose everything)

ornate drift
#

Yeah but _sleep has a specific thing where it doesn't let you interact with the NPC or give gifts

ornate drift
#

and they have a "Zzz..." on top of their head when it happens

brittle pasture
#

I know if can do 1 to 2, I'm asking if it can do step 3

verbal glacier
vernal crest
ornate drift
#

oh i made it Manny.Sleep

#

should probably change it into {{modid}}_speedymanny_sleep

verbal glacier
#

yes

hard fern
#

If you dont want real sleep name it something like snooze or nap

vernal crest
#

Once it's got "sleep" in it just be aware that if you use it during the day he won't wake up again. He'll sleepwalk if he does anything else that day.

ornate drift
#

that's funny

ornate drift
verbal glacier
#

multiple times a day

ornate drift
#

dedication

#

before starting anything else i should probably edit the interior bakery map to add a non-interactable door

brittle pasture
#

-# and I think we should all do more math

brittle pasture
analog jungle
#

😍

ornate drift
#

is there a way to rewatch events

tiny zealot
#

yes, you can use a trigger action to mark them as unseen

brittle pasture
#

console commands

#

if for debugging

#

otherwise yeah what ichor says

tiny zealot
#

there's at least one mod out there that lets you replay events more easily (like pick them from a menu easily), though i have no idea what state they are in

brittle pasture
#

debug ebi from memory

tiny zealot
#

be warned that events with side effects will happily apply them again and there's no good way to prevent this

ornate drift
#

and for mod events im assuming you have to use the internal event name to load them

tiny zealot
#

yes, same for all events. you need the id

ornate drift
#

is that normal for a noninteractable door?

#

im in tiled btw

severe cairn
#

It looks weird in tiled yuh

#

Doors look kinda weird there just gotta see it in game

ornate drift
#

!tilesheetclimbing

severe cairn
#

Oh yeah

#

Did you use tilesheetinator or manual

ornate drift
#

uhhh manual i think

#

i just pulled a door from the 1 tilesheet

brittle pasture
#

the ol tilesheet climbing, gets em every time

#

!tilesheetclimb i think this is the right one?

severe cairn
#

Yea manual is painful

brittle pasture
#

nope

verbal glacier
#

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

ornate drift
#

i already have tilesheetinator

verbal glacier
#

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

ornate drift
#

i used it for the hxwtilesheets

#

thanks

severe cairn
#

!mapfixer

ocean sailBOT
#
Stardew Valley Map Fixer

There is a map fixer tool by Spiderbuttons that can fix common map errors such as tilesheet climbing.

Upload your map file(s) as .tmx and click FIX to run. Your fixed maps will be downloaded as a .zip file and will need to be extracted in order to replace your old versions.

Feel free to let Spiderbuttons know if you run into an issue it can't fix.

severe cairn
#

Huh

#

Why doesn't it work :(

fossil osprey
#

What doesn't work?

severe cairn
#

Oh waiy

#

It didn't show up for me lol

#

Took a while

fossil osprey
#

Oh ^^

ornate drift
#

??????? wait WHAT

#

i just added the bakery outfit to Appearances and loaded it

#

but i didnt tell the game to use it anywhere

#

how'd it do that?

tiny zealot
#

if it's the same priority as another outfit, it could have been selected randomly

severe cairn
#

I mean it would be default if

#

Yeah

ornate drift
severe cairn
#

If there's no conditions at all it'll just be loaded using the other stuff ya SDVpufferthinkblob

ornate drift
#

does that automatically disable it?

severe cairn
#

Isn't there a location for bakery or

#

Anyway yeah it should disable it I think

#

If theres no scenario where none of the others would load anyway

ornate drift
#

oh he wears it everywhere

rose bobcat
#

if you give a player control w/ playercontrol during an event, does that effectively end the event?

tiny zealot
#

no, but playercontrol is pretty cursed and hands off event control to one of the hardcoded options which are unlikely to be useful outside of their original context

rose bobcat
#

thank you!

ornate drift
#

nvm that made it worse
i thought putting a Doors property would fix it

brittle pasture
#

I think they want to duplicate an existing machine rule

#

instead of rewriting everything

tiny zealot
ornate drift
#

what about tile property

#

the game wont recognize it as a door if theres no tile property
itll just be transparent

vernal crest
#

Is that a door that you go through without changing map? There doesn't appear to be any room behind it to go into.

ornate drift
#

its noninteractable

vernal crest
#

Then ichor is right, you should not have a door map property or tile property. Just paint it on the map.

lucid iron
ornate drift
#

hold on lemme try that

lucid iron
#

I'll do that so that u can use it with pickled eggs

ornate drift
#

yeah like i said it turns out transparent

vernal crest
#

Are you copying the door from Animal Shop?

ornate drift
#

its whatever interior door there is

vernal crest
#

You're using the transparent interior door, of course it is going to be transparent

#

Instead of this one, use this one near Gil

ornate drift
vernal crest
#

Not (to my knowledge) unless you happen to find a copy of it somewhere on the tilesheet that is not transparent

#

Or make one yourself

ornate drift
#

thanks, that works better SDVpufferheart

#

now i need to add a warp there that can only be accessed by an NPC

#

could probably do that in map properties

vernal crest
#

NPCWarp is your friend there

ornate drift
#

so tiledata instead of map data?

vernal crest
#

Nope NPCWarp is a map property

#

Should be listed on the maps wiki page

ornate drift
#

hm

#

the idea is that manny goes there to change his outfit for atleast 10 ingame mins
where should he warp to if theres nowhere?

devout otter
#

You'd need to make a special warp room just for him.

#

Load a 3x3 map or some such.

ornate drift
#

ah....now i have to go through the pain of that again tired

#

ill try though

tiny zealot
#

could you just punt him off to -2000 -2000 or somewhere equally offscreen?

devout otter
#

(Honestly I usually just use vanilla barn map...)

ornate drift
tiny zealot
#

although i guess if you want him to change outfits he has to change location, so

tiny zealot
merry river
ornate drift
#

im guessing the load should be like this

#

i genuinely do NOT remember how i first started making and loading locations

ornate drift
#

i....dont think ive had that error before

stark mason
#

Need some .json help

So I had a working .json and then added i18n tokens for translations. Now SMAPI gives me a warning saying this:

(https://smapi.io/log/6a99e6e56c40418ba94a242fe3379459)

I checked the lines from the warning in my .json and nothing seems wrong. The SMAPI json validator doesn't see any errors with the json either. Here are my specialorders.json and default.json since everything was fine before adding them.

specialorders.json
default.json

Thanks for any help.

ocean sailBOT
#

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

#

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

tiny zealot
#

the error says you have an unclosed content patcher token

#

---> ContentPatcher.Framework.Lexing.LexTokens.LexFormatException: Reached end of input, expected end of token ('}}').

#

could be this one (474), or maybe there are others too
"Text": "{{i18n:blue704.Pelican_Town_Wholesale.EggsOrder.collect.text",

void aspen
#

2874 lines 😭

#

I checked some potential issues but ichor got it methinks

stark mason
#

Wow thanks. And yeah 2874 lines had my eyes bleeding after a while.

stark mason
tiny zealot
#

i don't know either. probably just luck

#

although i had a very good idea what i was looking for

ornate drift
void aspen
#

I once randomly found a coma instead of a dot which broke the whole thing

#

in someones code

ornate drift
#

wait why am i even using a token

#

i dont use i18n

#

ill just make the DisplayName the mod id

latent mauve
# ornate drift uh

Just to double check, because I am not used to seeing {{ModId}} in these errors, is that entry part of a Load or EditData?

ornate drift
#

editdata because its adding a custom location

#

i fixed it myself by changing the displayname

#

and now i have a new issue

latent mauve
#

Ok, was just not expecting the {{ModId}} to not be parsed, because usually that means you did something wrong with a Load somewhere when you needed EditData for CP to recognize that it's a token to be parsed

merry river
#

{{ChangeOutfit}}is a dynamic token, I only really saw the smapi screenshot and don't know if you have defined a dynamic token before, but - have you done that?

latent mauve
#

That or you used {{ModId}} or the other tokens inside a Tiled file which doesn't work

ornate drift
#

nope i dont know about dynamic tokens i just copy and pasted {{modid}} there and it fixed itself

latent mauve
#

Are you adding the Warp property inside Tiled or through code?

ornate drift
#

tiled

verbal glacier
ornate drift
#

7 7 {{ModId}}_ChangeOutfitLocation 1 2

latent mauve
#

Okay, so you can't use tokens inside Tiled

ornate drift
#

oh

latent mauve
#

Tiled doesn't know what to do with them and CP can't intercept it from the TMX

latent mauve
#

You could use EditMap to set the Map Properties and add the warp that way, which would accept tokens

ornate drift
#

do jsons accept map properties?

latent mauve
#

Even easier then, you use CP's NPCWarps code

#

You are basically creating a patch in your content.json (or an included JSON) that tells it to change the map after it has loaded in as a game asset from the Tiled file

#

Once it's a game asset (which is what Loading to a Target does), Content Patcher can act on it and make the necessary edits with the EditMap action

ornate drift
#

like that?

#

oh wait its AddNpcWarps

#

mb

latent mauve
#

Scroll down a little further on the page for the sample code block

ornate drift
#

oh

latent mauve
#

There's no "Entries" involved in this bit of code.

ornate drift
#

is mapproperties necessary?

latent mauve
#

AddNpcWarps is great, because it (and AddWarps also) automatically creates your new warp property if the map doesn't have one, and adds to the existing property without replacing it if there are already other warps

ornate drift
#

oh wait nvm

latent mauve
#

Nope, MapProperties is not needed for just adding the warp with AddNpcWarps

ornate drift
latent mauve
#

Looks right to me from what I can see

ornate drift
#

aaand, to warp out of that map, i have to do the same thing but make the name {{ModId}}_SpeedyShop

latent mauve
#

You got it

ornate drift
#

map

#

it has to target {{ModId}}_SpeedyShop

latent mauve
#

Lol, yeah, you want to target the map you are adding the warp tile on to

#

Good catch

ornate drift
#

can warp in and warp out be on the same tile?

#

or does the NPC get stuck

void aspen
#

not recommended

latent mauve
#

I wouldn't suggest it

void aspen
#

considering how it works with player

ornate drift
#

so warp in 7 7
warp out 7 8

latent mauve
#

When the new update comes out, NPCs won't trip on their other warp points if they aren't part of the schedule, but we aren't there yet. So we still need to place them so they won't be in the path for the current version.

ornate drift
#

ew

#

LMAO instantly banned

#

looks like i cant warp to it myself

void aspen
#

are you trying to do it via debug command?

ornate drift
#

debug warp

#

yeah

void aspen
#

you need to type the mod id

tiny zealot
#

you can't use the token in the console ^ that

void aspen
#

cuz console also don't see tokens

#

tokens are only used by content json and such

urban patrol
#

happily enough, debug warp does fuzzy search

void aspen
#

anything else is what you need to type manually

tiny zealot
#

{{tokens}} are specific to content patcher. and even if CP were in charge of the console, it wouldn't know which mod you meant by {{ModId}}

void aspen
#

fuzzy search my beloved

urban patrol
#

so you can just type debug warp outfit or something

ornate drift
#

speedy.mannynpc_ChangeOutfitLocation

#

i forgot about that

#

thanks

void aspen
#

you can just do the part of it when using debug warp

ornate drift
#

ill test out the warp by making manny move to the tile and then try coming back

grand gale
#

it is not possible to get multiple items from a machine like a keg, right?

#

with only one input, of course

void aspen
#

I think you can get multiple items from furnace or cool furnace

tiny zealot
#

i think you can output a stack, but only one distinct item (get a second opinion)

void aspen
#

or get something random like a seedmaker ig

#

not sure how it works

tiny zealot
#

so you couldn't do 1 egg + 1 milk as outputs

grand gale
#

understood thanks!

calm nebula
#

EmC allows it

brittle pasture
ornate drift
#

warp did not work at all

autumn tide
#

hellooo do additional buildings layers also have that same effect of not being passable? sorry if this makes no sense I am unwell

ornate drift
#

buildings2,3,4, (and so on) is for decorations

#

it does not act as a proper buildings layer

#

you can only have one buildings

autumn tide
#

ohhh okay

#

and buildings1?

ornate drift
#

buildings is buildings1

autumn tide
#

..oh?

#

gotchaaa okay

#

did not know that

ornate drift
#

the game recognizes just "buildings"

tiny zealot
#

i think Buildings1 comes between Buildings and Buildings2

ornate drift
#

oh

tiny zealot
#

i don't know for sure though

autumn tide
#

interesting okay

tiny zealot
#

anyway the main thing is only Buildings does collision and any number suffix is just decorative

autumn tide
#

thanks guys!

heady crest
#

can i make a map patch apply the moment an event triggers?

autumn tide
#

wait, can suffixes vary or can they only be mubers?

autumn tide
#

maybe look into how the game does it for pam's trailer

tiny zealot
autumn tide
#

gotcha!

#

ty ichor SDVpufferheart

ornate drift
#

again?

#

two bots today

ornate drift
#

how does it not exist

latent mauve
ornate drift
thick anchor
#

Hello did something change in regards of Portraits usage ? I ran an Event to show Beach outfit in Bathhouse but it didnt show up.... Do I have to use some kind of specific names? For example SouthIsland, Beach, etc based on location?

latent mauve
#

Still send it, please? Just in case

ornate drift
#

okay

#

wait what website was it again?

#

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

heady crest
heady crest
#

i kinda wanted it to change like the moment the event triggers

latent mauve
#

Speedy, also, are your sleeping after your make schedule changes? Or loading an entirely new save? Both work to get around the fact that pathfinding is chosen before the day starts

heady crest
#

but i might just make a dummy map or smth

ocean sailBOT
#

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

ornate drift
#

i havent slept

verbal glacier
latent mauve
ornate drift
latent mauve
#

I don't see a map load anywhere in your log for that location, but it might be named something different

#

When you created the EditMap patch for your NPC Warp, did you possibly replace your Load action for the tmx instead of making a new patch?

ornate drift
#
    "LogName": "Add custom locations",
    "Action": "EditData",
    "Target": "Data/Locations",
    "Entries": {
         "{{ModId}}_SpeedyShop": {
    "DisplayName": "{{i18n: location.Speedy-Shop.name}}",
            "DefaultArrivalTile": {
                "X": 12,
                "Y": 28 
                                       },
              "CreateOnLoad": {
              "MapPath": "Maps/{{ModId}}_SpeedyManny_Interior" } 
                   },
                   
         "{{ModId}}_ChangeOutfitLocation": {
    "DisplayName": "{{ModId}}_ChangeOutfitLocation",
            "DefaultArrivalTile": {
                "X": 1,
                "Y": 2 
                     },
                   }
               }
           },
           {
    "LogName": "Load Change Outfit",
    "Action": "Load",
    "Target": "Maps/{{ModId}}_ChangeOutfitLocation",
    "FromFile": "assets/Maps/ChangeOutfit.tmx"
},```
latent mauve
#

Hmm

ornate drift
#

the game just hates me bro 💔

latent mauve
#

You are missing the CreateOnLoad and MapPath portions for that location

ornate drift
#

ah

#

i know what creatonload is but what about mappath

latent mauve
#

You have them for the previous location entry

ornate drift
#

yeah, thats for the interior of the bakery

latent mauve
#

map path tells the location which map to use

#

So if you aren't using a map path for your change into outfit location, it doesn't exist because it's missing a map

ornate drift
#

"CreateOnLoad": {
"MapPath": "Maps/ChangeOutfit.tmx" }

#

this should work

latent mauve
#

Make sure it matches the exact target you loaded the map to

#

So if you have {{ModId}} in the target it needs to be in the map path too

tiny zealot
#

the MapPath must be an asset name, not a file name (.tmx)

latent mauve
#

Also that, yes, thanks ichor!

#

I'm distracted because I am quickly trying to finish lunch before a meeting, LOL

ornate drift
#

isnt that how its formatted?

#

x y target x y

latent mauve
#

The validator sometimes falsely flags the {{ModId}} token as invalid syntax in warps, you can ignore that if the rest is correct

ornate drift
#

oh ok

rose bobcat
#

w/ remove or replaced delimited, does it accept an array of values for search? or would i need to do it multiple times if i am removing a few values?

#

specifically looking at removing most of the universal likes categories w/ CP without removing all support for modded content by simply using editdata (as i understand it)

gray bear
#

if you edit an universal like it'll override everything, not sure modded items won't be affected unless you manually add them back

latent mauve
# ornate drift oh ok

To be fair, the validator isn't wrong to say it's invalid, but CP makes it so that the game never sees the unresolved token and replaces it with the uniqueID before it causes any issues

thick anchor
ornate drift
#

wait why do i need Front?

rose bobcat
gray bear
#

you're correct

ornate drift
#

i swear its either one or the other 😭

gray bear
#

unless the mod added gem isn't in the gem category, that is

verbal glacier
gray bear
#

i mean, does your map not have a front layer?

latent mauve
# ornate drift

Could be a number of reasons why it needs Front, such as door logic or other default object rendering. It's easy enough to add an empty Front tile layer to your tmx to fix it

rose bobcat
#

that is fine, what i want to avoid is using "editData" to effectively delete all of, say, "universal likes" and replace it with my stuff, which would overwrite anything other users have done
specifically this would be bad for like, <character> loved gifts, etc

latent mauve
#

Most* maps are expected to have the following layers, even if there are no tiles on them:

  • AlwaysFront
  • Front
  • Paths
  • Buildings
  • Back
rose bobcat
#

so remove/replacedelimited is what i want to use, but i want to call it once in the .json

gray bear
#

character loved gifts are usually specific

latent mauve
#

*AlwaysFront is not always used in vanilla files

brittle pasture
ornate drift
#

....what?

gray bear
#

[opens vanilla map] hmmm

rose bobcat
gray bear
#

yeah editing universal gifts is a pain tbh

#

hence why most people just don't

latent mauve
rose bobcat
#

it would be so easy to simply shove my own crap in there

rose bobcat
ornate drift
#

sorry i cropped it incorrectly

grave quarry
ornate drift
#

why is spacecore causing so many issues

gray bear
#

if you're just adding your stuff to universal likes you can do it without removing the rest

rose bobcat
#

it's also character specific stuff, i.e. modifying all the bachelor/bachelorettes

#

not hard, it'll just take a while

gray bear
#

as mickey mouse would say, "oh boy!"

#

i wish you good luck

rose bobcat
#

as my dad would say, "if there's a problem with the code, there's a problem with you"
NO LUCK IN CODING

gray bear
#

the npcs will still have some gifts left, but jebus

brittle pasture
#

-# honestly doing string manipulation stuff is one thing that's way more convenient in C#

rose bobcat
gray bear
#

yeah was just gonna ask you, Selph, about that maybe being possible in C#

rose bobcat
latent mauve
rose bobcat
#

i am not sure how to edit the gift tastes w/ C# like you can with CP

brittle pasture
#

that's more than sufficient credentials, to the C# mines you go

gray bear
#

-# why would it specifically mention gender tho ? misleading

rose bobcat
calm nebula
#

(Paths can be gendered)

brittle pasture
calm nebula
#

Bathhouse

gray bear
#

Oh

latent mauve
#

(that's been a point of confusion for a while, Spacecore spits out that message but it isn't always related to that specific issue)

gray bear
#

they done gone gendering the warps /j

latent mauve
#

That said, if your warp is in one of the changing rooms at the bathhouse, it can absolutely be the exact issue as written xD

ornate drift
#

manny is supposed to go onto that tile (7 7)
that tile has a warp that puts him on 1 2
from 1 2 he walks onto 2 2 which has another warp back to mannys bakery on 7 8

latent mauve
#

Nothing on your Buildings layer obstructing either?

ornate drift
#

nope

latent mauve
#

And you slept after making your location fully accessible?

ornate drift
#

one sec

#

i keep forgetting that

latent mauve
#

Next step after that is probably to patch export your map to see if the warps applied correctly

ornate drift
#

okay it fixed ONE of the issues

wanton pine
#

What is the correct order of operations when replacing a building sprite with part of a png that is larger than the vanilla sprite sheet, and also adding a dynamic image edit to part of the new building tilesheet?
The code would need to load the new tilesheet as a new game asset, followed by a load for replacing the vanilla sprite that specifyings which chunk of the new tilesheet replaces the building, then the dynamic edits to the tilesheet, correct?

rose bobcat
#

oh hold on, i think i've found out how to patch npcgifttastes w/ C#

#

let's goo, i'll just edit it on GameLaunched...? i guess?

brittle pasture
brittle pasture
#

the "Load and edit content" page on the wiki has more details

wanton pine
rose bobcat
#

was this what you meant? it seems to apply to not just CP

brittle pasture
rose bobcat
#

YEAH, JUST FOUND IT LOL

#

god dang it hahahaha

barren tapir
#

I'm hoping after work today to debug the bone mill power amd begin working on the powers that do map edits.

I feel bad bc I asked about how to do some of those edits before, but I ended up not working on them. I'm gonna try looking at some other mods first though to see if I can figure out my questions.

rose bobcat
#

okay, and this is shrimply a string dictionary, completely freelo

wanton pine
rose bobcat
calm nebula
#

Selph, sed mode plz

bright glacier
#

is there a better way to make a conditional change to an asset than calling the "when" function within each patch?

wanton pine
#

"Action": "EditImage",
"Target": "assets/BikeShed.png"
"FromFile": "assets/BikeShed.png",
"ToFile": "assets/BikeShed.png",

#

This should work while bikeshed.png is also being loaded as stable.png, correct?

#

There are coords in this string which I cut for clarity. one part of the image is being pasted on another.

urban patrol
#

ToFile isn’t a thing, you need a target instead

wanton pine
#

this is what I get for coding while tired! ty, will remove those lines.

ornate drift
#

ok so i decided to use NPCWarp on the map instead of in the json by using the internal NPC name

#

he gets warped now, but he isnt warping back for some reason

urban patrol
#

did you add a warp back

#

they don’t go both ways

wanton pine
#

"Action": "EditImage",
"Target": "assets/BikeShed.png"
"FromFile": "assets/BikeShed.png",
question on previous version of this still needs to be answered

brittle pasture
#

target has to be something you previously loaded

ornate drift
urban patrol
#

and should not contain a file extension

ornate drift
#

warp in 1 2
warp out 2 2

wanton pine
#

so I correctly ordered this (in the full json, said png is already loading as stable.png). Yay!

urban patrol
wanton pine
#

wait, should I be targeting stable.png instead of bikeshed.png since this is the case?

ornate drift
#

oh hey thats a good extension

#

ill use that

wanton pine
#

I'm confusing myself

urban patrol
#

also is there a reason you’re using NPCWarp instead of AddWarps or AddNPCWarps

urban patrol
ornate drift
wanton pine
#

vanilla, the stable

urban patrol
#

unless you don’t want the player to use it

ornate drift
#

i dont want to, yeah

urban patrol
#

that would be its location in unpacked data

urban patrol
#

and this is on a custom map right?

ornate drift
#

yeah

latent mauve
#

And the warp is pointing to the internal ID of the location from the Data/Locations entry? (Sorry, just ended my work meeting)

ornate drift
#

internalnpcname_mapname

wanton pine
# urban patrol in that case you need to find what the vanilla target would be

My words fail me, so - here:

    {
    "LogName": "Stable Reskin",
    "Action": "Load",
    "Target": "Buildings/Stable",
    "FromFile": "assets/BikeShed.png"
    },
    {
    "LogName": "Spring & Summer Day/Night BikeShed BG" 
    "Action": "EditImage",
    "Target": "assets/BikeShed.png"
    "FromFile": "assets/BikeShed.png", 
    "FromArea": { "X": 129, "Y": 0, "Width": 64, "Height": 96 },
    "ToArea": { "X": 65, "Y": 0, "Width": 64, "Height": 96 },
        "When": {
            "Time": "{{Range: 2000, 2600}}",
            "Season": "spring, summer",
        }
    },
urban patrol
ornate drift
#

hes just stuck in a black space all alone :(

uncut viper
ornate drift
rose bobcat
#

wtf, why are neutral gift tastes at the end of the gifttastes string

severe cairn
#

Was there a building

bright glacier
ornate drift
wanton pine
#

Clarification: as I am continuing to overthink things, everything after the first action needs both the target and fromfile to be buildings/stable, correct?

severe cairn
#

It should say [empty]

urban patrol
#

@wanton pine at risk of making things more confusing: this is a model of what to target. the blue squares are assets. they can only replace things in the content pipeline, not each other

ornate drift
severe cairn
#

I had the same problem lol

ornate drift
#

hm

uncut viper
# bright glacier is ` ``` "When": { "HasFlag": "ccVault" ...

I don't have all the mail flags memorized (though there'd be a bunch on the wiki, not the GitHub docs) but that looks like the correct flag to me. that said you may want to check the HasFlag of the host player specifically, I'm not sure if farmhands get the cc flags set

ornate drift
#

does the mod specify warp or npcwarp?

bright glacier
wanton pine
urban patrol
#

target: the “home address” of things in the content pipeline. does not contain file extensions.
fromfile: the file path as exists in your mod folder

urban patrol
ornate drift
#

i want manny to warp into a void where he immediately changes clothes (to his chef outfit), and then come back

urban patrol
#

and just to make sure you want that to be like part of his schedule?

ornate drift
#

yes

urban patrol
#

okay cool

latent mauve
#

This is just trying to force the Appearance to update with the moving between maps, yes? Like Shane and Sam at Joja Mart?

ornate drift
#

yes

#

i dont know how to do that yet, im just getting the warp to work

latent mauve
#

Did you do the patch export for the broken warp's map already?

ornate drift
#

yeah so the mod doesnt list npc warps

ornate drift
#

the one hes warping to?

#

cause that one works
warping back on that map doesnt work though

urban patrol
#

is that map 1x1?

ornate drift
#

3x3

#

he warps onto 1 2
and warps back on 2 2

#

but he doesnt move at all when warped

urban patrol
#

what does the schedule point say

ornate drift
latent mauve
#

Just in case, can you try moving the warp point one further away? Sometimes NPCs get stuck in a loop if they are accidentally spawned in touching a warp point, and 1 tile distance might be too close.

ornate drift
#

xy is the tile he should arrive on right? so i just move him onto the warp tile

urban patrol
#

i wouldn’t

latent mauve
#

Ideally, you want the NPC to walk onto the tile, don't warp him straight onto it.

ornate drift
#

ill make him walk to 2 0 instead

latent mauve
#

Also, you don't need to direct him to a schedule point on the same temporary/void map once he's there, you can direct him straight back to the shop and he should use the warp if it's valid

ornate drift
#

okay okay

#

maybe the 2 2 on the schedule is the reason hes not getting warped

#

theres no way to reach 2 2 on the shop

#

it should be 7 8
one tile below the warpnpc

#

....ah

#

He really just said "Nope im not changing my outfit, bye"

urban patrol
#

is he blocked by buildings tiles

ornate drift
#

there are none

urban patrol
#

also share your appearances block via smapi.io

ornate drift
#

its 3x3

urban patrol
#

that’s a common cause of void walking so

ornate drift
#

so the game cant make a path unless theres buildings...?

urban patrol
#

no i meant that the reason he walked off forever might have been he was running into buildings tiles

#

i do think every map needs a Back, Buildings, Front, and AlwaysFront layer though maybe

ornate drift
#

i have those

#

okay now i know he WALKS

#

but just doesnt know where to walk for some reason

#

heres the schedule

#

im testing it on Wed specifically

severe cairn
#

Why 7 7 2

ornate drift
#

7 7 2 is the tile for the warp

#

he walks to that warp

#

7 8 2 is the tile he'll end up on if he touches the void warp back

severe cairn
#

O
You dont have to do that :P you can just put it wherever in that area and then back

urban patrol
#

don’t path him to the warp, path him to where you want him to go in the outfit change area

ornate drift
#

oh

#

YES IT WORKS

#

FINALLY

#

okay, now i gotta make him switch appearances after entering that void room

#

keep in mind im gonna need this void for later for him to switch OUT of the bakery outfit and back into his seasonal

#

i dont know if that works

wanton pine
#

How well does this icon represent CK's Ducati Motorbike? Is there anything I should change to improve it?
Please note that I ever publicly release this mod, part of the instructions will be to download CK's mod and move its art into my mod's assets folder due to CK's non-permissions.

ornate drift
#

oooh i like the sprite :3

wanton pine
#

Yeah, CK did really good work on it!

void aspen
#

wondering how easier would it be to do things or how detailed game would be if sdv had 20px based tilesheets

brittle pasture
#

you get roughly 56% more pixels to work with

#

so quite an amount

vernal crag
#

Does anyone know where I can find starting money related code? Wanna lower it for 50% margin

void aspen
#

I wonder if trash bin upgrades bypass the margin thing

void aspen
#

16 extra pixels on a tile would allow a lot of things

#

maybe not 16

#

400-256 so 144

#

okay I was a bit off

uncut viper
spice inlet
#

Unlockable Bundles Feature Vote

placid coral
#

do people play on older versions of SV? is it generally worth trying to get backwards compatilibilty working?

grand gale
#

I don't think so

uncut viper
#

I personally would not bother whatsoever

placid coral
#

got it, thanks! 👍

uncut viper
#

Especially since so much changed between 1.5.6 and 1.6 that you'd basically be redoing the entire mod in a completely different way most of the time

golden spire
#

and 1.7 will come out at some point

deep cypress
#

That thought frightens me.

#

Excites me too. But…

sullen rain
#

I don't think 1.7 is gonna be nearly as big of a change from 1.6 as 1.5-1.6 was

brittle pasture
#

wdym 1.7 adds ||Moss 2|| that's huge

void aspen
#

LFG

brittle pasture
#

||it's 50% greener than Moss 1. no there is no other difference||

brittle pasture
autumn tide
#

omg that would be so funny-

deep cypress
#

Moss2? I heard through a verified source that there’s a special new dish called Second Breakfast! You use Moss2 to make it!

autumn tide
#

yeah, actually a verified news source said that

#

the EPA, in fact

sullen rain
#

Second breakfast?

#

Will we also get elevensies? Dinner? Supper?

proven spindle
#

Luncheon? Afternoon tea?

barren tapir
#

How can I share larger sections of code for help?

uncut viper
#

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

uncut viper
#

Oh wait do you mean C#

barren tapir
#

Yes

#

C#

uncut viper
#

If you mean pastebin then a link to a repo with your code is best, otherwise pastebin or github gists or similar

#

er, if you mean C#*

calm nebula
#

Github repo would be best

barren tapir
#

Question, Is this how you would modify the output rules of a machine in C#?

millData.OutputRules = (List<MachineOutputRule>)millData.OutputRules.Prepend(shardRule);
millData.OutputRules = (List<MachineOutputRule>)millData.OutputRules.Prepend(artifactRule);

I'm trying to change the behavior of the BoneMill when it receives artifacts and regular bone shards

ornate drift
wanton pine
#

I, uh , don'thaveastabletotestitwith right now.

strong kite
#

I just realized why Darkrai's facing directions end up so weird...
Look left, right, and up are all in the wrong positions on the sheet...

#

It's easy enough to fix on the sheet, but.. now I gotta go and edit all of my events to correct this Waaa

brittle pasture
barren tapir
#

It's still doesn't seem to be doing anything

#

Give me a sec and I can upload my code

ornate drift
brittle pasture
#

everything looks fine to me

barren tapir
#

No (other than the default Bonemill rules)

brittle pasture
#

and patch export?

barren tapir
#

Give me a sec to boot up the game and run it

#

also, the command to list all player stats is "patch parse {stats}", right?

brittle pasture
#

stat's not a token that I know of

barren tapir
#

Also, patch export doesn't seem to be a valid command

uncut viper
#

there is no stats token

#

and patch export is a valid command, its a CP command, make sure you have it installed

barren tapir
#

I have Content Patcher installed and enabled

uncut viper
#

you have to tell it what asset to export

strong kite
barren tapir
#

Now I'm getting "Couldn't load asset '(BC)90' using a likely type (tried: System.Object). Try either specifying the type, or waiting until the game loads it before exporting it. See the SMAPI log for details."

uncut viper
#

(BC)90 is not an asset

brittle pasture
#

patch export Data/Machines

strong kite
#

Anyway now I get to go through all of my events that feature Darkrai and see if my fixes work properly

barren tapir
#

Huh, the json doesn't appear to have changed at all*

*for the Bonemill at least

rose bobcat
#

there must be a better way than this to convert ids into non-magic numbers lol

private readonly string coffee = "395";
private readonly string truffleOil = "432";
private readonly string cloth = "428";
private readonly string lobster = "715";
private readonly string lobsterBisque = "730";
...
barren tapir
#

WAIT, I THINK I KNOW WHAT THE ISSUE IS

rose bobcat
#

would it work to #yolo it and just use the real name to find the id using the item metadata?

barren tapir
#

OMFG. I'M AN IDIOT

#

I forgot to disable a line I had put in to debug a different power that forced the function to return. NO WONDER IT WASN'T DOING ANYTHING.

UGGGGHHHHHH

#

Well, the good news is that its working and now I only have the following things left to do for this mod:

  • The 2 lewis books
  • Add the powers
  • Actually add the books to the shop

I'm gonna have dinner and regret everything in my life before trying to figure out the lewis books.

-# I spent so much time trying to fix that freaking bone mill book

brittle pasture
whole prism
#

cheeseburger

barren tapir
wanton pine
#

(asking bc the above seems to be broken.)

gaunt orbit
#

hm, the bot's not working

uncut viper
#

(you misspelled Modding)

gaunt orbit
#

oh it dropped the i

wanton pine
#

as it so happens, I am on that page and my eyes have failed me.

gaunt orbit
#

damn you windows and your shoddy drivers

gaunt orbit
#

the rest of it is the same as adding custom sounds

wanton pine
#

Ah. I see. The table lists a cue id, a dec id and a hex id for each, but I'm not seeing directions on which to use...? Going by the example CP, it seems that the cue ids are the ones to use but it isn't outright said, so I would appreciate confirmation on that.

ornate drift
ocean sailBOT
#

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

ornate drift
#

um so my event is having an issue

#

cant seem to be parsing it

dawn ore
#

I'd suggest trimming it back to basics and working up

ornate drift
#

nvm found it

sullen rain
#

How do I apply temporary spritesheets and portrait sheets to an event without making them permanent to the overall game?

devout otter
#

What do you mean by permanent to the overall game?

sullen rain
#

Sam and Seb are only supposed to be shirtless for part of this event and Seb is supposed to have pink hair for the second half

#

But the way I have it wirtten, they're shirtless and Seb has pink hair all the time, even outside of the event

hard fern
#

I think there's an event command for that 🤔

sullen rain
#

I have changePortrait and changeSprite but then it keeps saying no npc with the name found

#

Or asset not found

devout otter
#

What's the shirtless Sam loaded as?

sullen rain
#

{
"Action": "Load",
"Target": "Characters/Sam",
"When": "Sam_Shirtless",
"FromFile": "assets/Vanilla/Characters/Sam_Shirtless.png"
},

devout otter
#

Load it as Characters/Sam_Shirtless

#

And then use changeSprite Sam Shirtless.

sullen rain
#

I did that and it said No npc named Sam_Shirtless found

devout otter
#

Without underscore.

sullen rain
#

Oh

wanton pine
#

Ok, where'd I royal f-- up?

barren tapir
#

How would a C# mod get the config value of a CP mod?

brittle pasture
#

switch to Fields

wanton pine
#

also the following needs to be removed, correct?

    {
    "LogName": "Stable Tilesheet Expansion",
    "Action": "EditImage",
    "Target": "Buildings/Stable",
    "FromFile": "assets/BikeShed.png",
    "FromArea": { "X": 0, "Y": 0, "Width": 192, "Height": 176 },
    "ToArea": { "X": 0, "Y": 0, "Width": 192, "Height": 176 },
    "PatchMode": "Replace"
    },
#

I have no idea why it's not reskinning the horse, however.

brittle pasture
#

"Target": "Animals/horse.png", extraneous file extension

brittle pasture
sullen rain
#

Dolphin you're a genius. idk why that worked but it did

#

Thank you

devout otter
#

Yey!

wanton pine
#

Well, the horse is now being reskinned and the stable now has collision again, but it still has the wonky sprite issues. Tips?

brittle pasture
#

can you post your code + the tilesheet

wanton pine
#

I probably screwed up the coord values regarding where one of the draw layers (default animaldoor open, most likely) ends up

brittle pasture
#

ah yeah you also need to set the SourceRect field

#

in top level building data

lucid iron
#

hm why r ur animal doors like this

wanton pine
brittle pasture
#

if it isn't set it draws the entire spritesheet; you need to limit it to just the first sprite

lucid iron
#

the door's movement is done by the game u dont need that second layer

brittle pasture
#

-# thank goodness you're here chu now i can leave to clean my place (it's overdue)

lucid iron
#
Stardew Modding Wiki

Last edited by AtlasVBot on 2025-09-13 18:56:16
Stardew Valley 1.6 revamped how buildings work and now you can add a new building with just Content Patcher. There are also new ways to add textures/skins to existing buildings that have advantages over previous methods. This guide will walk through how to use these features, starting from "put my ...

#

in the wiki example u can see how there's a purple thing set to be animal door

#

and it gets offset when you "open" it

brittle pasture
#

-# (to be clear I don't mind helping at all)

lucid iron
#

so how it work for the vanilla barn and stuff is that the door draw layer is higher sort offset, making them draw behind the barn itself

#

so the door kinda "shrink" into the barn

#

the shadow looking texture is there bc we need that to draw behind animals leaving the barn, it's got a even higher sort offset

#

in summary
Default_AnimalDoor -> thing that slides up
Default_AnimalDoor_Open -> thing that's always there, but revealed bc the door has slid up

barren tapir
wanton pine
#

....why on earth is my open door so far over??? Ugh, I probably flipped the numbers

lucid iron
#

patch reload should update the draw layers immediately iirc, so u can test with that

ornate drift
#

why does this issue always happen in events

#

why is my character slightly above the tile hes supposed to be on

#

this happened with Vincent too

wanton pine
finite ginkgo
ornate locust
#

I have now fit a ramp to the SLIGHTLY DIFFERENT position of the railroad for Rurals of Italy. And Gus's door. eternally consigned myself to wiggling stuff around

wanton pine
#

It's there but it's just flickering in and out of existence.
...This is because I haven't added an actual door and an interior to the stable, isn't it.

strong kite
#

So, I'm using the quickQuestion event command for the first time and I just wanna ask now if this looks like it'll work?
quickQuestion \"{{i18n:Darkrai7HeartDialogue9}}\"#\"{{i18n:Darkrai7HeartAnswer1}}\"#\"{{i18n:Darkrai7HeartAnswer2}}\"#\"{{i18n:Darkrai7HeartAnswer3}}\"\\\"{{i18n:Darkrai7HeartResponse1}}\"\\\"{{i18n:Darkrai7HeartResponse2}}\"\\\"{{i18n:Darkrai7HeartResponse3}}\"

lucid iron
#
// Data/Buildings "Coop"
{
  "Id": "Default_AnimalDoor",
  "Texture": null,
  "SourceRect": {
    "X": 0,
    "Y": 112,
    "Width": 16,
    "Height": 16
  },
  "DrawPosition": "32, 96",
  "DrawInBackground": false,
  "SortTileOffset": 0.02, \\ <- important
  "OnlyDrawIfChestHasContents": null,
  "FrameDuration": 90,
  "FrameCount": 1,
  "FramesPerRow": -1,
  "AnimalDoorOffset": {
    "X": 0,
    "Y": -13
  }
},
wanton pine
#

ah

#

🤦‍♀️ 🤦‍♀️ 🤦‍♀️ 🤦‍♀️ 🤦‍♀️ 🤦‍♀️ 🤦‍♀️ 🤦‍♀️

lucid iron
#

im also still fairly sure u did ur asset incorrectly bolbsun

ornate drift
#

4 events done XevYay

#

6 left

wanton pine
#

Welp, after the last two edits, it is no longer flickering and is occasionally making the door open/close noises, but there is no accompanying animation or change in appearance. It's just closed.

lucid iron
#

thats bc u got "AnimalDoorOffset": { "X": 0, "Y": 0 }

lucid iron
#

did read this or the guide yet? was there anything unclear about how i described things?

wanton pine
#

I'm just mostly confused and my brain finds things to get confused by in instructions that most brains would understand easily

lucid iron
#

just to be clear "Id": "Default_AnimalDoor" has no functional meaning, its merely the id

#

the AnimalDoorOffset value is what controls where the door moves to on "open"

#

for a vanilla coop, it has "AnimalDoorOffset": { "X": 0, "Y": -13 }
Y means up/down, and -13 would be up 13 px (just under 1 tile)

#

i eyeball ur door to be about 48px tall so you'd want something like Y=-40 to have a lil bit of door peeking out

wanton pine
#

Oooohhh! okay, that's what I wasn't getting. Thank you!

lucid iron
#

and since u already have the stuff behind the door draw onto the building there's no need to have Default_AnimalDoor_Open

#

altho hrm, stable already has "SortTileOffset": 1.0,

#

i guess you'd actually need a layer that's the building instead of the interior to make it all work properly

wanton pine
#

With how I'm currently doing things, I have a facade sprite, a door sprite, and then two backdrop sprite variants that integrate the facade sprite so the sprite sheets looks cleaner and, via edit image, swap out with each other depending on season and time of day.

lucid iron
#

Basically

  • Buildings/Stable texture -> inside of the bike shed, take advantage of SortTileOffset=1 from vanilla
  • DrawLayer 1 (Door) -> just the door, give it SortTileOffset=0.02, give it some AnimalDoorOffset to make it open
  • DrawLayer 2 (Exterior) -> the actual outside of the shed, give it SortTileOffset=0 so that it can actually cover the door
#

doing it this way means you never duplicate any sprite PecoWant

#

and you'd be editing Buildings/Stable to change the interior as you wish

#

does this all make sense

strong kite
wanton pine
strong kite
#

I think something went very wrong heehee

#

It's treating all the rest of the script like it's a command and I'm not certain why

#

Maybe I don't need the \" for each dialogue?

ornate locust
#

I mean you definitely do

#

/textAboveHead Morris \"Waa..?!\"/pause 500/speak Morris \"All my customers...Here?!?$s#$b#This isn't good...$s\"/move Pierre 0 4 1/textAboveHead Pierre \"How does it feel?\"/move Pierre 4 0 1/move Pierre 4 0 1/question fork1 \"#Let's be reasonable.#Let's settle this the old-fashioned way.\"/fork Punch/showFrame Morris 12/textAboveHead Morris \"Hmmph!\"/pause 1000/speak Morris \"It's of no consequence! I'll just run a 75%-off sale and all my customers will come crawling back to me, begging for forgiveness! You'll see!$h\"/pause 1000/speak Pierre \"No...not this time...$u\"/faceDirection Pierre 3/textAboveHead Pierre \"Gather 'round, everyone!\"/pause 1500/globalFade/viewport -1000 -1000/stopAdvancedMoves/warp Demetrius 35 14/faceDirection Clint 3/faceDirection Demetrius 3 true/warp Pam 28 15/faceDirection Pam 1 true/warp Gus 28 14/faceDirection Gus 1 true/warp Robin 36 15/faceDirection Robin 3/warp Emily 29 9/faceDirection Emily 2 true/warp Willy 35 16/faceDirection Willy 3 true/warp Jodi 36 9/faceDirection Jodi 2 true/warp Caroline 35 9/faceDirection Caroline 2 true/warp Clint 37 13/faceDirection Clint 3 true/warp Gunther 30 18/warp George 28 16/faceDirection George 1 true/viewport 32 10 true/faceDirection Pierre 2/faceDirection Pierre 3/faceDirection Pierre 0/faceDirection Pierre 3/pause 1000/speak Pierre \"I remember when I first moved to Pelican Town... This building was active and vibrant.#$b#We worked together to make the town a better place. There was a real sense of community.\"
Just a random cut of a random vanilla event

#

All the dialog quotes are marked like that

wanton pine
#

It works! But my interior has vanished...? Probably a conflict with the day/night image edits.

strong kite
ornate locust
#

It is needed for all dialog.

#

I have it in my quick questions

strong kite
#

Could you post an example of one of your quickQuestions please? So I can hopefully figure out what I'm doing wrong in mine

ornate locust
#

Let me see if I have a short one...

wanton pine
#

@lucid iron Success! Thank you very much for your help.

ornate locust
#

quickQuestion #\"{{i18n:MV.Municipal.BillRivalHeartsEvent.10}}\" #\"{{i18n:MV.Municipal.BillRivalHeartsEvent.12}}\"(break)speak Wizard \"{{i18n:MV.Municipal.BillRivalHeartsEvent.11}}\"(break)speak Wizard \"{{i18n:MV.Municipal.BillRivalHeartsEvent.13}}\"/pause 400/quickQuestion #\"{{i18n:MV.Municipal.BillRivalHeartsEvent.14}}\" #\"{{i18n:MV.Municipal.BillRivalHeartsEvent.16}}\" #\"{{i18n:MV.Municipal.BillRivalHeartsEvent.18}}\"(break)speak Wizard \"{{i18n:MV.Municipal.BillRivalHeartsEvent.15}}\"(break)speak Wizard \"{{i18n:MV.Municipal.BillRivalHeartsEvent.17}}\"(break)speak Wizard \"{{i18n:MV.Municipal.BillRivalHeartsEvent.19}}\"/

#

Mine are localized, but it's still dialog in there

strong kite
#

Oh woah uhhhhh

ornate locust
#

Yeah I'm not sure how helpful it'll be. Maybe I can find a vanilla one, those have in-line text

strong kite
#

Ohhhh wait a darn second the responses are scripts!

ornate locust
#

Oh you didn't have the "speak" commands and stuff?

strong kite
#

Nope Tiredkip

ornate locust
#

That'd do it

strong kite
#

Do I need to use (break) or does \ work too?

ornate locust
#

(break)

strong kite
#

That'll also do it then LUL

#

Alright, here's hoping!

#

Of course this is happening towards the end of the event after like 8 other dialogue boxes so testing is painful heehee

#

YIPPEE!!
I know that's an arrow, I need to use {{PlayerName}} don't i?

ornate locust
#

@ should work fine

strong kite
ornate locust
#

hm. Maybe someone else can correct on that one

strong kite
#

I know {{PlayerName}} is needed for text above head

ornate locust
#

but that should be right...

strong kite
#
"Darkrai7HeartResponse1": "I appreciate your words, @, truly.$13#$b#Even if I still have my doubts...$6#$action addFriendshipPoints TntDove.PBB_Darkrai 10#",```
My guess here is that I've improperly implemented the action command
#

I'll test one of the other 2 responses though, since those don't use action commands. I can see if the issue's just with the responses in general

#

wait... if it's a script I don't need to run the action through the text dialogue...

latent mauve
#

There isn't a way to remove special orders with a debug command without completing them or clearing all of them, correct?

#

Trying to figure out if I'll need to rig up a personal mod patch to fix things via TriggerAction, since one of our multiplayer group decided to play with an NPC that the rest of us didn't have, and has started a snowballing chain of events -> special order -> festival

#

Where this particular farmhand is the only one seeing any of it correctly

barren tapir
#

I'm trying to call helper.ModContent.GetActualAssetKey, but am getting the error "IModContentHelper" does not contain a definition for "GetActualAssetKey"

lucid iron
#

why are u using that

strong kite
#

wait why did I think a token would work from the translation file.....

#

Also it's my responses that are borked gosh darnit

ornate locust
#

yeah tokens don't work, @ should be correct

#

I don't know why it's being an arrow

barren tapir
lucid iron
#

hm i dont think GetActualAssetKey is a method anywhere

#

wiki's prob wrong here

strong kite
#

Well considering that @ didn't work (I don't doubt that it's correct but I'm not dealing with this shit lmao) I'll just replace Darkrai saying the farmer's name there

ornate locust
#

yeah that's fair, I don't know what's going wrong and the SKY IS EXPLODING over here right now so FOCUSING isn't working out exactly

lucid iron
#

but more importantly just do the normal Load handling

#

like that e.LoadFromModFile<Map>("assets/Farm.tmx", AssetLoadPriority.Medium)

ornate locust
#

I thought Dove wasn't using i18n but I may have read things wrong.

lucid iron
#

the modern version is called GetInternalAssetName but if you dont know what this means then dont use it

lucid iron
#

am local internal asset key hater

ornate locust
#

Oh then I totally read things wrong

brave fable
#

i'd expect the translation file to be i18n

strong kite
#

Also shite I still don't know what's going on

ornate locust
#

I thought your text was in-line, sorry. That's really odd, I've used @ in i18n fine too

brave fable
#

please send error messages as text, not screenshots

strong kite
brave fable
#
- you can still make them a menacing red colour if it helps us share the fear
strong kite
#

/pause 300/quickQuestion \"{{i18n:Darkrai7HeartDialogue9}}\"#\"{{i18n:Darkrai7HeartAnswer1}}\"#\"{{i18n:Darkrai7HeartAnswer2}}\"#\"{{i18n:Darkrai7HeartAnswer3}}\"(break)\"speak Darkrai {{i18n:Darkrai7HeartResponse1}}\"/action addFriendshipPoints {{ModId}}_Darkrai 25/(break)\"speak Darkrai {{i18n:Darkrai7HeartResponse2}}\"/(break)\"speak Darkrai {{i18n:Darkrai7HeartResponse3}}\"/pause 1500/
Adding the / before each (break) made the error bigger so I imagine I don't want those

#
[game] Event 'TntDove.PBB_Darkrai7Heart' has command '(break)speak Darkrai I appreciate your honesty...$2' which couldn't be parsed: unknown command '(break)speak Darkrai I appreciate your honesty...$2'.
[game] Event 'TntDove.PBB_Darkrai7Heart' has command '(break)speak Darkrai I appreciate your candidness...$2#$b#Perhaps it was wrong of me to think you could answer such a question...$8' which couldn't be parsed: unknown command '(break)speak Darkrai I appreciate your candidness...$2#$b#Perhaps it was wrong of me to think you could answer such a question...$8'.```
brave fable
#

you have an open doublequote before your speak command SDVpufferthumbsup

#

hmm wait did i get that right

ornate locust
#

oh a tornado watch, that explains the thunder-caused ringing in my ears

brave fable
#

which i18n key matches the I appreciate your words dialogue?

strong kite
ornate locust
#

I don't think you need a \ before or after (break)

strong kite
#

Yee lemme get the error up without the / before each break

brave fable
#

yeah it looks like you don't need to quote your answers and scripts per the wiki, though it's not explicitly stated. if i were you i'd search the unpacked data/events files for quickquestion to get an example

strong kite
#

THAT'S WHAT I THOUGHT Waaa

#
[game] Event 'TntDove.PBB_Darkrai7Heart' has command 'action addFriendshipPoints TntDove.PBB_Darkrai 25(break)speak Darkrai I appreciate your honesty...$2(break)speak Darkrai I appreciate your candidness...$2#$b#Perhaps it was wrong of me to think you could answer such a question...$8' which couldn't be parsed: required index 2 (int points) has value '25(break)speak', which can't be parsed as an integer.```
ornate locust
#

You don't quote the script, just the part that's your i18n key

brave fable
#

yeah i was wrong earlier, the error shows the entire answer script is being parsed as a single "word":
'speak Darkrai I appreciate your words, @, truly.$13#$b#Even if I still have my doubts...$6'
which would only be the case if it were "quoted"

strong kite
#

Alright I see where I went wrong now...

barren tapir
#

I have questions about editing a map via C#, but I'm gonna wait until tomorrow bc its very late.

TLDR; what I'm trying to do isn't working, and I suspect the guide I'm following may be outdated <cough cough> wiki <cough cough>

strong kite
#

Ok! The Dialogue worked! but I still got this error [game] Event 'TntDove.PBB_Darkrai7Heart' has command 'action addFriendshipPoints TntDove.PBB_Darkrai 25(break)speak Darkrai I appreciate your honesty...$2(break)speak Darkrai I appreciate your candidness...$2#$b#Perhaps it was wrong of me to think you could answer such a question...$8' which couldn't be parsed: required index 2 (int points) has value '25(break)speak', which can't be parsed as an integer.

#

I may have to come back to this later, but I greatly appreciate the help, Midnight and blueberry!

#

Before I leave let me just post what my event script looks like now /pause 300/quickQuestion \"{{i18n:Darkrai7HeartDialogue9}}\"#\"{{i18n:Darkrai7HeartAnswer1}}\"#\"{{i18n:Darkrai7HeartAnswer2}}\"#\"{{i18n:Darkrai7HeartAnswer3}}\"(break)speak Darkrai \"{{i18n:Darkrai7HeartResponse1}}\"/action addFriendshipPoints {{ModId}}_Darkrai 25(break)speak Darkrai \"{{i18n:Darkrai7HeartResponse2}}\"(break)speak Darkrai \"{{i18n:Darkrai7HeartResponse3}}\"/pause 1500/

urban patrol
#

idk if this will help you, but i recommend writing and testing your event script first, then i18ning it

proven spindle
dusky vigil
#

Is there any reason why this wouldn't take Cheese for a Special Order? I can get it to take Goat Cheese, but it's being stubborn and I am missing something obvious, I think.

                        {
                            "Type": "Ship",
                            "Text": "{{i18n:GusSpecialOrder_objective}}",
                            "RequiredCount": "30",
                            "Data": {
                                "AcceptedContextTags": "item_cheese, quality_gold",
                                "AcceptedContextTags": "item_goat_cheese, quality_gold",
                            }
                        }
                    ]
brave fable
#

Data is a dictionary, and adding duplicate entries to the dictionary will overwrite the previous value. in this case, AcceptedContextTags is added twice, which is replacing the initial value item_cheese, quality_gold with your new value item_goat_cheese, quality_gold

dusky vigil
#

Arughh thank you

brave fable
#

possibly using item_cheese/item_goat_cheese, quality_gold

rancid hazel
#

Ok, so I edited some dialogue from sve to change an event, but it's not changing in game

I will preface this with I have never made or edited mods before, and I have no idea what Im doing wrong 😅

I was hoping it would be simple enough to just rework some lines of text, but there's clearly something im missing...

inland rain
#

fillable vases

tiny zealot
rancid hazel
#

I edited straight in the dialogue file of the mod in question (Stardew valley expanded, wondered why it didn't work, realized I had to edit romanceable Rasmodia). So I did that. And it didn't change

tiny zealot
#

in that case, try reloading the game if you didn't before. if you still see no change, make sure 1. you saved the file changes and 2. you are editing the correct copy of the files (the one directly in the Mods folder and not somewhere else)

inland rain
#

different kinds of vase

rancid hazel
#

I saved the file and restarted the game. Even deployed in vortex

haughty bobcat
#

If wanna get into modding, is Stardew a good starting point? asking for a friend

urban patrol
#

definitely! there are many tutorials, wiki articles, and other resources available, and it's considered one of the easier games to mod

haughty bobcat
#

thank you!

#

*my friend said

urban patrol
#

your friend is also welcome to ask for help in this channel if they run into trouble

#

!startmodding here are some aforementioned resources

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.

rose bobcat
#

does anyone know why regenerate bundles would cause bulletin board in particular to not be openable?

#
    "Bulletin Board/31": "Chef's/O 221 3/724 1 0 259 1 0 430 1 0 376 1 0 228 1 0 194 1 0/4///Chef's",
    "Bulletin Board/32": "Field Research/BO 20 1/422 1 0 392 1 0 702 1 0 536 1 0/5///Field Research",
    "Bulletin Board/33": "Enchanter's/O 336 5/725 1 0 348 1 0 446 1 0 637 1 0/1///Enchanter's",
    "Bulletin Board/34": "Dye/BO 25 1/420 1 0 397 1 0 421 1 0 444 1 0 62 1 0 266 1 0/6///Dye",
    "Bulletin Board/35": "Fodder/BO 104 1/262 10 0 178 10 0 613 3 0/3///Fodder",

this is the only contentpatcher code i have affecting it and it's all directly copied from the vanilla .xnb, manually unlocking by adding items and doing other bundles lets me open the bulletin board bundles up fine

#

debug jn 5 is the only thing that does not work

arctic hill
#

is there any reason not to use a whole bunch of flipped/rotated tiles in a map? Like are they more performance heavy or anything

ornate locust
#

Some tiles have shadowing that looks odd when you do it, and you can't do it with sittable things like couches or you sit wrong

#

other than that, I don't know of any problems

hard fern
#

I can attest to the couch curse.

#

I just have to pretend it doesn't matter

#

And never sit on that couch

ornate locust
#

hey I made a whole mod to flip couches

hard fern
#

😭 unforch doesn't work for everything

arctic hill
#

perf, never manually making a mirrored version of a cliff ever again

hard fern
#

But yeah i flip tiles all the time and havent noticed any glaring issues aside from like. Sometimes it looks a little funny and u have to just live with it because you refuse to make a custom tile just for that

ornate locust
#

Mainly stuff with built in shadows can look weird, or maybe a foor tile aligns weirdly when you flip it

#

But if it's not a chair, as long as it looks good to you, go for it

hard fern
#

I've wanted to use the walls and floors wallpapers but urghhgb. I have to make sure they look good with several different recolors

#

Well, wallpaper recolors/replacements

#

I'll just pick only my favorites

ornate locust
#

Yeah Earthy alone really throws in some wrenches when it changes a wallpaper color altogether

#

or a couch

hard fern
#

At teast the recolor i use is pretty neutral in tone so it's guaranteed to look decent

ornate locust
hard fern
#

Vs something that uses more colors

ornate locust
#

why yellow be purple??

hard fern
#

Why not :)))

ornate locust
#

and the purple carpet turns blue

devout otter
#

Yar maybe yellow toned down and earthied would look to similar to the middle couch.

rose bobcat
#

#vanillacolors4lyf

ornate locust
#

I spent too much time in the Recolor Mines rotating things, ended up reporting like four little bugs just because I was staring at them too long while rotating LOL

devout otter
#

Yeah Earthy, desaturated yellow would probably just be brown. Like the dirt!

ornate locust
#

like how one of Starblue's couches has the colors in the wrong order from lightest to darkest

#

so the shadowing looks kinda weird

#

stare into the pixels long enough and you become one. or something

rose bobcat
#

if that generalizes, then am i a modding wiki page

ornate locust
#

Probably

hushed scroll
#

I thought I’d never encounter someone else who notices those tiny details until I ran into Midnight hahaha

rich talon
#

I love hair 💇‍♀️

round dock
low shell
#

bruh do i have to use multiple pngs for each crop instead of one big one? sprites arent showing and just looked into SVE as a reference and they have them seperated

tough osprey
#

alo I decided to try and experiment adding temporary actors in events. Is it possible to add the farmer's kids as temp actors? or would I have to use TAS?
Right now I've tried using temporary actors and wrote this, but the child sprites aren't loading in. I'm not sure if I'm doing anything wrong?
addTemporaryActor {{Toddler}} 16 20 51 26 2 true Character
where the token value is Toddler_girl_dark based on config

{ "Name": "Toddler", "Value": "Toddler_girl_dark", "When": { "ChildGenders |valueAt=0": "Female", "ToddlerSkinColor": "Dark", }, },

iron stream
#

In what situation would I need to use "Priority": "Default+10" like what does the +10 do?

tough osprey
#

no errors are popping up on SMAPI either which is why I didn't link a log

tough osprey
# iron stream In what situation would I need to use `"Priority": "Default+10"` like what does ...

This explains it a little better than I would: https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-load.md#format
but basically priority is a range of -1000 to 1000. High is 1000, Low is -1000, Med is 0.
When you do "Priority": "Med+10" its gonna increase the value by 10. This is if you need very specific ordering and you don't really use it though. From what I know, you'd never use "Priority": "Default+10" because the Default is exclusive which is all or none

iron stream
#

Ahhh thank you, I was looking through the guide but couldn't find the priority section SDVpufferheart

uncut viper
#

Default isn't a thing for Loads, Exclusive is. Writing "Default" will break it. Also, only Loads use Low, Medium, and High
EditData/EditImage use Early, Default, Late, which can have numbered offsets, and "Default" is how you'd write it there.

#

(and EditMap)

#

(and to be clear, "Default" for EditImage/Map/Data is not an exclusive all or none thing)

tough osprey
ornate drift
#

Morning

torpid sparrow
#

Meowning

dawn ore
#

How do I add something (a new modded Item) to randomly appear at the travelling cart?

verbal glacier
# dawn ore How do I add something (a new modded Item) to randomly appear at the travelling ...

I think it would be something like this but i'm not 100% certain, and you fill out the other parts of the item field

{
"Action": "EditData",
"Target": "Data/Shops",
"TargetField": [
    "Traveler",
    "Items"
],
"Entries": {
    "ItemId": {
        "Condition": "RANDOM <chance>"
    }
}
}

The target field documentation: https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-editdata.md#target-field and the random GSQ being explained here https://stardewvalleywiki.com/Modding:Game_state_queries#Randomization.

dawn ore
#

would random refresh the list every time i open it?

verbal glacier
#

no clue, you'd have to test that

#

or someone else might know

dawn ore
#

yeah it does
how do i make it not do that

verbal glacier
#

with other conditions

viral gazelle
#

Good day, I need some help placing a map edit. I want to expand the adventures guild with an extra room (see picture). How do I tell content patcher to expand the map 7 tiles to the left?
Here is what I've got so far

    "LogName": "Edit AdventureGuild",
    "Action": "EditMap",
    "Target": "Maps/AdventureGuild",
    "FromFile": "assets/maps/AdventureGuildStarSouls.tmx",
    "FromArea": { "X": 0, "Y": 0, "Width": 8, "Height": 19 },
    "ToArea": { "X":  0, "Y": 0, "Width": 8, "Height": 19 },
},```
verbal glacier
dawn ore
#

I guess, but surely theres a more 'vanilla' way right? how does the travelling cart get stocked normally?

uncut viper
royal stump
dawn ore
#

would
"Condition": "SYNCED_RANDOM day seed 0.25"
work?

edit - seems too!

viral gazelle
royal stump
#

SDVpufferthumbsup generally a good idea except for major reworks, yeah

#

the game and maps just categorically treat 0,0 as the top left corner & don't interact with negative coordinates

viral gazelle
#

Good to know, thanks

languid knoll
#

Hii Is there any way to find out the ID of each emotion in portraits? I know there are the vanilla ones like $h, But I want to modify some of the Looking for Love portraits, which I believe have portraits with unique emotions for the NPCs that can be dated with the mod 💔

ornate trellis
#

the first six are fixed, anything beyond is custom

severe cairn
#

its just 0-whatever number ya

ornate trellis
#

neutral, happy, sad, unique, love, anger which can just also be referred to $0-$5 instead of the letters

golden spire
#

but do have to remember that even the vanilla portraits are not always consistent with the emotion order. So always check the actual image

severe cairn
#

Honestly I forgot anger exists as a "set" thing

#

Arumi's anger sprite is sad 2

golden spire
languid knoll
#

Alr ty!!

severe cairn
#

her real anger sprite is 11 SDVIridiumKek

ornate trellis
#

i can never get over how pams mouth looks upside down in that portrait

severe cairn
#

maybe it is

languid knoll
severe cairn
#

9 emotions is 0-8 cus 0 is the first

languid knoll
#

Alr alr, tysm

inland rain
jaunty shuttle
#

Whoa!!!! SDVpufferwow

tiny zealot
#

(decompiling, linux) trying to use ilspycmd to get the IL for a specific class in Stardew Valley.dll, ideally with C# like the (old and busted) GUI ILSpy i have previously used.
does anyone know a working incantation for this?
according to the --help output, this should work (using DialogueBox as an example):
$ ilspycmd -il -t StardewValley.Menus.DialogueBox -o . <dll path here>
... but that seems to ignore the -t and decompiles the whole dll into a single monolithic IL file, which is not great. similarly, -il --nested-directories -p -o generates a decomp source tree but ignores the -il and just generates C#

ilspycmd: 10.0.1.8346
ICSharpCode.Decompiler: 10.0.1.8346```
blissful panther
#

Uhhh... yup, 1.5 million lines of IL definitely does not seem like it's just the DialogueBox.

lucid iron
#

My spellwork is weak and I just search through the thing :u

#

The end of method whatever comment helps

tiny zealot
#

alas. thanks

viral gazelle
blissful panther
strong kite
#

Oh right, is there an easy way to make my NPC attend static festivals after you've seen a certain event?(as in not the come and go as you please events like the night market and desert festival)
Do I have to map patch every event I want him to appear in? My plan is something kinda like the Wizard who appears out of the bounds of the event, where you can see him but not interact with him

craggy goblet
strong kite
#

Yea like that

royal stump
strong kite
#

Ah, alrighty! I don't necessarily want him attending passive festivals but I might look into it!
even if he can navigate as a 32x32 sprite, I don't think he can actually get down from his pedestal because there's only a 1 tile wide gap to walk down heehee

#

I might be able to add like.. an NPC warp to the tile next to him that would let him instantly warp to one, which would fit the fact he teleports (mostly) so.. I guess I could try that, but then I'd also need to add a warp back I imagine

#

Uhhh is there a simple mod I can use as reference (like one that adds only 1 or a few NPCs?)

verbal glacier
#

that was the wrong link lol

strong kite
#

I noticed heehee

#

Ty!

verbal glacier
#

i went to do something else whoops

tiny zealot
ornate drift
verbal glacier
ornate drift
gray bear
#

not the concerned featherless ape duck

gentle haven
#

How hard would it be for a beginner to make a mod that removes the rocks by the bus stop? Or how hard would it be to fix a mod that says it does it but is no longer compatible & abandoned?

(for personal use)

#

The like 3 other mods that looked like they didn't have them actually still do and/or introduce more bugs

lucid iron
#

What are the rocks

balmy venture
#

guys...Will I get kicked from discord if I post a mod in Nexus made with the help of AI? 🥺

ornate locust
gentle haven
ornate locust
#

Removing rocks is pretty easy

balmy venture
#

Thank you! I have no intention to promote it anyways. I made for my personal use initially. Gonna leave it there with the code open, if any real modder likes the ideathey can take over it and I will remove.

tough osprey
#

hallo has anyone added kids to events by using temporary actor?

ornate locust
#

You can do a little map patch to remove the rocks or just clear the building layer on the tiles where the rocks are with content patcheri edits

gentle haven
#

Interesting!

void aspen