#making-mods-general

1 messages · Page 135 of 1

rancid temple
calm nebula
#

The weirdness you're encountering is b/c Object js both big craftables and objects lol

#

Use the other constructor

#

I believe Pathos xml documented this

winged basin
#

I saw TemporaryAnimatedSprite inside the HotHead.DropBomb() method however Im not quite sure how to reuse it since it does some funky stuff.
I take a closer look at ItemRegistry.Create

tender bloom
#

TAS is a funky funky class

#

someone was in here trying to make custom bombs recently

winged basin
#

but first I check the other constructor lol
public Object(string itemId, int initialStack, bool isRecipe = false, int price = -1, int quality = 0)

calm nebula
#

Damn that is old code lol (the githib link)

#

Ignore the bullshit about Random and use Random.Shared. Use Game1.Multiplayer

winged basin
#

bomb.placementAction(Game1.currentLocation, 5, 5);
it does go boom, but it doesnt do any damage lol

pale summit
#

does gmcm have an option for a Left Text Right Text widget or do I need to design it?

uncut viper
#

(doesnt solve the problem of "what if they lose the teaset after getting it" tho but whether or not thats actually a problem is up for Agent Lyoko to decide)

calm nebula
#

Eh, is fine for it to be expensive

#

It's a winter star gift

#

It's checked once per year

#

(In game)

uncut viper
#

you cant put GSQs on individual winter star gifts tho

calm nebula
#

Oh

uncut viper
#

i guess you mean just making the trigger run ONLY on like, december 24th?

calm nebula
#

This is what I get for not checking lol

uncut viper
#

actually wait im wrong i was looking at the wrong field

#

it IS a list of item spawn data

#

in that case yeah When conditions arent needed at all

#

that said i didnt backread too closely so im just trusting you that its about winter star gift pools

#

and that t his actually applies

wanton pebble
#

...honestly this entire conversation amuses me because you guys are likely operating under the mistaken assumption I'm using the Winter Star pools

uncut viper
#

this is what i get for trusting atra /lh

wanton pebble
#

whereas the truth is this is a small project I'm working on for Date Night Redux instead SDVkrobusgiggle

#

As a completely unrelated question, is there a consensus over what music should be playing at a nighttime event at the farmhouse?

rancid temple
#

Nighttime music KEK

uncut viper
#

i am curious what item pools you might be talking about that are changed with CP only but arent item spawn data fields

wanton pebble
#

Dynamic token fields, of course

uncut viper
#

but what pools do those dynamic tokens have an effect on?

wanton pebble
uncut viper
#

if you can say without spoiling the project ofc

wanton pebble
#

Oh, simple randomization. Get a list of item IDs, randomize over them, pick something from the list

rancid temple
wanton pebble
#

You can add to a list as well like that, Button

rancid temple
#

Like, nighttime music, music that plays when the time is night

wanton pebble
#

here, let me grab an example from the Island date I still have to port SDVkrobussad

grave warren
#

what's the command to reset a texture when making an item mod>

uncut viper
#

i know you can, i was just going to wonder if there was a better way to just selectively add just teaset to whatever it is you were doing when necessary rather than changing the whole token

rancid temple
#

Reset a texture?

wanton pebble
#
{
         "Name": "RSVIslander",
         "Value": "{{Random:Aguar,Alissa,Anton,Ariah,Bert,Blair,Carmen,Corine,Ezekiel,Faye,Freddie,Ian,Irene,Jeric,Jio,June,Keahi,Kenneth,Kiarra,Kimpoi,Kiwi,Lenny,Lola,Lorenzo,Louie,Maive,Malaya,Naomi,Olga,Paula,Philip,Richard,Sean,Shanice,Shiro,Sonny,Trinnie,Ysabelle,Yuuma,Zayne}}",
         "When": {
             "FarmName": "Fortune",
         },
    },
    {
         "Name": "RSVIslander",
         "Value": "{{Random:{{RSVIslander}}, Pika}}",
         "When": {
             "Bartender |contains= Pika": false,
         },
    },
rancid temple
#

Do you mean like, you changed the texture and you're trying to reload it without restarting the game?

wanton pebble
#

example

#

Basically, I can add the teaset like I would add Pika to that tokenset

#

just with conditions that require your mod and the GSQ

#

So using the prior method above, I'd triggeraction a mailflag in, then check that flag

uncut viper
#

im familiar with the process! just my default mindset is to try and figure out if theres workarounds that dont involve CP's update propogation for optimization purposes SDVpuffersquee

#

sometimes there is not though, much to my dismay

grave warren
uncut viper
#

(nor are those optimizations always even necessary or at all noticeable, but yknow. principle of the thing and all that. i like easy optimizations)

grave warren
#

im working on a texture for a hat, and the positioning is off, so i need to edit/adjust it.

#

Is there a way i can reset the texture in-game so i dont have to close re-open the game

rancid temple
#

If you already spawned it, the texture is cached, so after doing a patch reload YourModsUniqueID you also need to spawn a new hat

#

Or at least, I think it's cached

grave warren
#

thx

rancid temple
#

I know a lot of stuff about items are cached when they're spawned

#

But draw might not be

uncut viper
#

SpriteIndex isnt cached but i cant remember about the texture itself

eternal mortar
rancid temple
#

Schedule should start at 610

#

Or later

#

And you should have a spring entry

#

spring is used as the fallback

#

Is the location reachable?

#

And your animation names should be more unique

tough crater
#

It's hard-coded to act a certain way

rancid temple
#

It depends on what you named the animations

#

Any animation containing sleep will trigger your NPC to sleep

tough crater
#

oh, nvm then

grave warren
rancid temple
#

[[Modding:Console commands]]

rancid temple
#

I have no idea, I use mods for that

calm nebula
#

Debug fin

uncut viper
#

me when im a fish but cant swim as fast as i used to

rancid temple
#

The other great thing about using CJB Item Spawner for testing is that I don't even have to spawn things to check their texture

#

The menu reloads it when you open it so just closing it, patch reloading and opening it is good enough

#

Though you're testing positions so I guess you will need to spawn it

#

All equipment is cursed

vital epoch
#

Hello, Im a stardew veteran, but I have just now gotten into modding, my gf really likes foxes so Im trying to substitute the cat4 file with my custom fox spritesheet using content patcher, but for some reason smapi says that my file is empty and doesnt load the mod

#

I apologise if I am missing a very well known thing, again, Im very new

rancid temple
#

!fileextensions are you sure you're using jsons?

ocean sailBOT
#
Hidden File Extensions

Windows and Mac hide most file extensions by default. If you are creating or updating mods, it's helpful to show file extensions so that you can be sure all mod files are named correctly.

To show file extensions on your computer:

On Windows 10, open File Explorer, click on the View tab, then check the File Name Extensions box.

On Windows 11, open File Explorer and click on View > Show > File Name Extensions.

On Mac, open Finder, and in the menu bar, click on Finder > Settings (or Preferences) > Advanced, then check the Show all filename extensions box.

vital epoch
#

just a sec

drowsy pewter
#

Are you sure you're using jsons?

#

They cannot be text files with .json in the name

vital epoch
#

I might not be using Json files

#

holdon

drowsy pewter
#

I would recommend following the instructions above

vital epoch
#

I am indeed not using json files

#

I apologise

drowsy pewter
#

No prob, it was a fast fix

vital epoch
#

how can I convert it to json?

rancid temple
#

With file extensions on you can just rename them

#

content.json and manifest.json

vital epoch
#

thank u guys

#

I really appreciate the patience

drowsy pewter
#

By the way, you can easily add new pets to the game as well

#

Which can be picked in the starting farm menu, or can be purchased from marnie

vital epoch
#

its just that we already have a save file

drowsy pewter
#

Makes sense!

vital epoch
rancid temple
#

Once you max friendship with a pet, Marnie sells more pets you can adopt

drowsy pewter
#

Yes, 1.6 added a pet shop to marnie after you get max friendship

vital epoch
#

I see

#

well then

#

I might look into that

#

as the game is not responding right now

#

which might showcase a problem

drowsy pewter
rancid temple
#

Gotta be careful when loading

vital epoch
rancid temple
#

If you click out of the screen while it's loading, sometimes it'll hang indefinitely

vital epoch
#

I am afraid I clicked out

rancid temple
#

That's just a SDV thing in general

vital epoch
#

alright gime a secx

#

I will be back soon

rancid temple
#

Not sure if it's just something wrong with MonoGame or what

vital epoch
#

IT IS ALAIVE

#

thanks guys, really appreciate it

#

btw, I'm a semi professional spriter, if anyone need help my comissions are open

rancid temple
#

!commissions you can also add yourself to here

ocean sailBOT
rancid temple
#

Makes it easier to point people asking about who does commissions to the right place

vital epoch
#

interesting

#

thank you buddy

deep cypress
#

If u have a map error cause u somehow screwed up, is there any way U can force a day end to not lose all the cool things u did?

latent mauve
#

debug sleep exists, but I don't know if you'll get penalized if you fall asleep somewhere not safe

deep cypress
#

thanks!!!

rancid temple
#

debug sleep is safe anywhere, not sure what effect it will have on your save if you save with map errors

#

I use debug sleep when testing a lot, all over the place lol

latent mauve
#

Testing out my island farmhouse 2nd floor again, wish me luck!

rancid temple
#

Sleeping in the doorway of NPC's rooms is always fun for them I'm sure

deep cypress
#

Debug Sleep almost worked... the game just wouldn't get over being angry at the missing tileset.... What's funny is it always worked before, so I have no idea what happened, but somehow, it climbed to a different folder in the mod?

rancid temple
#

Season change?

latent mauve
#

very possible that you were missing a seasonal tileset if you referenced a spring version that existed inside the mod folder

tender bloom
#

moving around files?

#

oh, also that

latent mauve
#

also, oops, my 2nd floor has a butterfly in it and clouds, must have missed labelling it as Indoors. xD

rancid temple
#

Just gotta patch some roof holes

latent mauve
#

there's also a single room that refuses to let me decorate it, so I need to doublecheck my IDs anyway

rancid temple
#

And drop it out of the cloud layer

latent mauve
#

screenshot just for you, atra:

rancid temple
#

A butterfly inside the Island Farmhouse actually makes sense lol

latent mauve
#

The clouds are a bit weird though.

rancid temple
#

A little

latent mauve
#

If I could get just the butterflies and not the clouds, that'd be fine. >_>

#

...they're multiplying. xD

calm nebula
#

Adorable

latent mauve
#

I'd love to be able to better mimic a room that has open walls or is above the farmhouse but open, so you can see the land around it, but that's a big ask.

#

I'd need to redo all the borders to be transparent and then recreate an approximation of the island around the farmhouse

#

(I don't care that you wouldn't see any structures or people outside, just want the look of it, you know?)

rancid temple
#

Hm, I wonder how all the empty background is made

#

The Summit has that custom background, I see it has a constructor specifically for that, there's also a constructor with a bunch of options that's never used, including a texture

lucid iron
#

The black background is default I thought

rancid temple
#

Yeah I guess if there's no background provided it just makes it black

#

I'm already working on a different C# project... don't wanna deviate to see what happens if I set a background lol

latent mauve
#

Yeah, I did a fake-out method with my Rito Roost map to just add the background tiles from Harvey's balloon ride and placed them on the back layer

rancid temple
#

I'm technically pretty close to done with this one, MVP anyways, gotta finish up the config and decide what to do about the big craftable

lucid iron
#

I did always want whatever summit has

latent mauve
#

uhhhh. Turning Outdoors as a map property to false did not remove the cloud shadows. xD

#

Clearly still missing SOMETHING

lucid iron
#

This seems ideal tbh

latent mauve
#

It took away the butterflies but not the clouds. This was the exact opposite of what I wanted.

lucid iron
#

What's the thing u r trying to use again

latent mauve
#

This is a 2nd floor for the island farmhouse

#

The outdoor area will come later, but this one is meant to be indoors

lucid iron
#

No I meant what's the map property

rancid temple
#

Outdoors isn't a true or false

latent mauve
#

Then I misunderstood it

rancid temple
#

Outdoors is a "does the value exist? if it has a value then use it"

latent mauve
#

When I didn't have Outdoors as a map property at all, it defaulted to behaving like it was outside

rancid temple
#

Any location without Outdoors should be considered Indoors unless you made it inherit from somewhere with weird hardcoded rules

latent mauve
#

Ah, maybe the LocationContext Island is messing with it

rancid temple
#

Possibly

latent mauve
#

but that's on the normal island farmhouse map too

#

So I just copied that over. :/

calm nebula
#

The game is telling you to make a balcony

rancid temple
#

Farmhouse locations have their own hardcoded logic

latent mauve
calm nebula
#

I'm not at home so I can't check

#

But have you considered making it an IslandFarmhouse as the c# type

rancid temple
#

Yeah, I'm not sure there's anything special about the Island Farmhouse that would cause issues if you did

calm nebula
#

Well it spawns beds

rancid temple
#

There's also StardewValley.Locations.IslandLocation

#

Caves and Qi's Nut Room use that

#

Hm, but those aren't decoratable

#

IslandFarmhouse probably is the easiest solution, random bed aside

latent mauve
#

Yeah, I ended up making the type the decoratable one because my code freaked out when I made it the IslandFarmhouse type.

#

I'll try it again in case that was more due to a second code error that I've since fixed, though

shadow pagoda
#

Bumping this question. I've thought about more, but can't think of any other way besides hard coding all the trees #making-mods-general message

latent mauve
#

so, in addition to the beds, it also spawns in the fireplace, the rugs, and the palm trees. In places I seemingly can't control.

#

I had a void fireplace for a minute there

#

oh, it also spawned the windows

rancid temple
latent mauve
#

Yep

#

the freshly loaded second floor with the IslandFarmhouse type

#

furniture placements are identical to the normal (first floor) positions, it does not care about building tiles when it spawns them.

drowsy pewter
#

rather than cycling through each items one by one that doesnt account for modded items

latent mauve
#

I think I'm just gonna have to live with it thinking we're outdoors and having random clouds

#

and potentially rain, which could be more of an issue

#

hmm

tawny ore
#

Working on a new feature for Expanded Storage that lets you customize the color palette, and apply custom sprites for each color as well.

rancid temple
#

I converted a room I had made for a tutorial to be LocationContext Island and using the StardewValley.Locations.DecoratableLocation Type

#

I don't get any indoor clouds and when it's raining on the island there's no rain inside

#

Have you tried with a new save?

#

I'm wondering if the map properties are getting cached or something

#

Or saved even

latent mauve
#

I've been reloading the game every time, but this floor didn't even exist until I'd already set the type to be DecoratableLocation in the code

#

So I'm not sure what it would even be caching

#

Ideally, I'd like this to be able to be added mid-save and not require a new save to work

rancid temple
#

Mostly just wondering if the Outdoors property got stuck somehow

latent mauve
#

It didn't have the Outdoors property at all when the initial butterflies and clouds appeared.

#

I only added it after that to try setting it to False

#

Well, I restarted everything and now there's no sign of clouds or butterflies, so... I have no clue.

#

I'm just gonna add AmbientLight to make it not so dark and call it good, LOL

royal stump
#

SDVpufferlurk if it's relevant, I think the "outdoors" property doesn't care about "false", just whether it exists

if (this.map.Properties.ContainsKey("Outdoors"))
{
    this.isOutdoors.Value = true;
}```
latent mauve
#

Yeah, I just ran into a weird incidence of butterflies and clouds on a map that didn't have the Outdoors property at all at the time

#

But I'm going with "game didn't like that many patch reloads, even though I did them on the title screen"

faint ingot
#

Had some issues with special order testing and saw that using debug commands to add an iridium item to my inventory resulted in the tag quality_none instead of quality_iridium. Hoping this is just a bug with these commands and not my special order code

rancid temple
#

Works properly when I add an item to my inventory with debug item

#

And also CJB Item Spawner

royal stump
#

that's probably specific to the SMAPI command, since it predates some of that tag logic

oblique meadow
#

Can someone help me. So in my content file I know how to change and tweak the items on Robin's home renovations list. Is there something i can change to remove items

royal stump
#

automatic tags like that are populated when the item's tags are generated, then cached, so it's possible SMAPI is setting the quality after that happens (so item.quality is correct but the tag is still none)

#

I should make sure FTM doesn't have that issue SDVpufferdizzy
(okay, it can't in most cases, though custom forage with quantity > 1 might)

latent mauve
oblique meadow
#

Is there a way to use my own HomeRenovations.json file instead of the default?

rancid temple
#

Have you tried just making those entries null?

latent mauve
#

^

oblique meadow
#

I did. Replaces it with ?

latent mauve
#

Did you null both Add and Remove?

oblique meadow
#

Yes. this is what it does now

latent mauve
#

Which entries specifically are you nulling?

oblique meadow
#

Textstrings, AnimationType, CheckForObstructions,Price,RoomID,Requirements,RenovateActions,RectGroups

latent mauve
#

You're replacing that text itself with null, yes?

oblique meadow
#

yes

latent mauve
#

And not just putting null in each of those individually?

#

ok

rancid temple
#

Just null the actual entry

#

Not the fields inside it

latent mauve
#

Like

"build_crib": null```
 correct?
#

That's how I interpreted it, at least

#

Except the entry keys are whatever entry you're actually removing

rancid temple
#

Yes

#

I'm testing it now

#

I set open_bedroom to null

latent mauve
#

Yeah, seems fine here too

faint ingot
#

is there a list of all the actual location names somewhere? I can remember most of them but don't know the name of the volcano forge level or how to find it

oblique meadow
#

Awesome. And it's SO much less work haha

rancid temple
#
    {
      "Action": "EditData",
      "Target": "Data/HomeRenovations",
      "Entries": {
        "open_bedroom": null
      }
    }```
faint ingot
#

OK, thank you but that's 40,000 lines long and searching I can't find anything with 'volcano' or 'forge' sooo..... more advice is requested, please : ) : )

oblique meadow
#

@rancid temple thank you

faint ingot
#

and if I'm -in- a location can I spit out the name of it to console? 'debug ppp' only prints coordinates without the map id

rancid temple
#

You can use Lookup Anything, I think maybe Debug Mode also gives the location name

#

I think it's Caldera

faint ingot
#

OK thank you for your help and your patience

royal stump
#

FTM also has a whereami command for location/tile info, if you happen to have it installed

oblique meadow
#

Volcano is indeed Caldera

royal stump
# faint ingot Had some issues with special order testing and saw that using debug commands to ...

@ivory plume Minor issue with Console Commands (see reply for context): When an item with quality is added by player_add, its context tags always include the default quality_none until the cache is reset, e.g. after saving and reloading. Those tags are applied by Item._PopulateContextTags, so I guess that's being called before the item's quality is adjusted.
Example of an item picked up from the beach, vs one added with player_add name Cockle 1 2:

calm nebula
#

A number of mods cause issues by calling population of context tags too early

royal stump
#

yeah, I can imagine it's pretty easy to cause depending on spawn/read logic

ornate trellis
#

man, I am having my moment™️ again

ocean sailBOT
#

Log Info: SMAPI 4.1.9 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Pro, with 19 C# mods and 20 content packs.

ornate trellis
rancid temple
#

I feel like I've seen this error before but I'm blanking hard on what it means

ornate trellis
#

i keep staring at my stuff trying to find the issue

#

like

#

and I made sure to put this in my content.json

     "LogName": "Load SeaDude Home Indoor Map",
     "Action": "Load",
     "Target": "Maps/VoidWitchCult.TheFishmonger_LostIsland_SeaDudeHome",
     "FromFile": "assets/Maps/VoidWitchCult.TheFishmonger_LostIsland_SeaDudeHome.tmx"
   },```
#

and thats the name of my map

#

i swear its probably a typo variat on the path or something stupid

royal stump
#

looks like the error when you don't have all the tilesheets in the same folder while saving the map, but I'm not sure

ornate trellis
#

huh i thought then it'd talk bout tilesheet climbing, hm

ivory plume
royal stump
#

I might be mixing it up, it's been a while & I never really make maps myself

rancid temple
#

That's when you're using a sheet from a different folder

#

Saving without all the tilesheets present usually causes a tile GID error I thought

#

If you didn't pull in a sheet from a different folder anyways

ornate trellis
#

i only have my two custom tilesheets and a copy of paths but those are all in my folder

rancid temple
#

What's your path for the tmx?

#

Like I see what you wrote in code, but I mean in the actual folders

ornate trellis
#

well, its the pic for the file which i sent above and the folder its in is

#

why the kek josweat

rancid temple
#

MY SHIT lol

ornate trellis
#

OH, lol

rancid temple
#

I wasn't ready

ornate trellis
#

yeah i sometimes name my folder like that

rancid temple
#

Hm, you can check the xml to see if it does have any climbing

#

Are you using any tilesheets from other mods that load them?

ornate trellis
#

no

#

only a copypasted paths and my two custom ones and i aalready use those in my other maps that work

real flicker
#

Hello, is there any framework(?) similar to Portraiture Plus but for Character Sprites??? Im thinking on using CP but CP doesn't have Location tokens for NPC.

ornate trellis
#

man, i cant figure out the issue

rancid temple
#

Scale Up 2 can be used to load whatever size textures onto character sprites

ornate trellis
#

ruh roh

#

i think i am having an issue, not sure if its THE issue but

#

man, i am so confused

drowsy pewter
#

Plenty of CP based sprite change mods can do location based outfits

ornate trellis
#

at some point i mustve made tsx files for my tilesheets for some reason

rancid temple
#

Oh, yeah my brain shut off at Portraiture lmao. Appearance system would use the Condition to check for location

real flicker
ornate trellis
#

i didnt have any of my custom tilesheets embbed...

ornate trellis
#

sadly that wasnt the cause for the map issue tho

rancid temple
#

Same errors after fixing the embedding?

real flicker
ornate trellis
#

I have all my tilesheets twice in my map now...

#

but if i get rid of my tsx then my maps break, i think i am just really confused on what to do

#

or do i only get rid of the tsx when the map is done....i think i really need to re-read the wiki...

#

no wait...i made the tsxs to keep my animations...squinty god, maybe i should take a break

rancid temple
#

You would export the tsx to have the animations, but you should be able to embed them and still have the animations

ornate trellis
#

yeah but now the map show me having twice the tilesheets

#

or is that just...a thing that happens

#

cuz when i look at other mod maps i dont see tsx files

rancid temple
#

Did you add them and embed them? Should be a button that lets you just embed tilesets you already imported

ornate trellis
#

i first added the tsx and then embed them but it keeps the tsx AND the embed one

#

in all my maps

#

so my question was that once I am finally done with the maps if i get rid of the tsx files or jsut keep em in alongside the pngs when i release

#

ugh, alright, i actually gotta go to bed. its alright to ping me btw if anyone happens to know the answer to my weird issue

rancid temple
#

When you're done editing, as long as you have your tsx embedded, you remove them

#

If you don't embed a tsx, you have to ship it with your map

#

Tilesheets you have to ship with your maps unless you Load them to Maps

ornate trellis
#

ahh, ok. so i jsut keep em for now until i am fully done with editing the maps.(just need to remind myself to copy the mod folder to keep an editing version just in case)

#

thanks for clearing this up, now i jsut gotta figure out tomorrow what this one map is having issues with

wheat seal
#

Hey, I am wondering if anyone has made a SMAPI release for arm64 to allow for retro handheld compatibility? And if not then I would like to build one myself because I am really craving some quality of life mods on my linux handheld device.

wanton pebble
#

Can't SMAPI already work on Steam Deck, which is technically Linux?

brittle pasture
#

steam deck is x86 not ARM

wanton pebble
#

I see

wheat seal
#

For games to work on retro handhelds, the game runs off the compatibility branch on steam.

latent mauve
#

If running on a retro handheld requires the vanilla game to be on compatibility branch, then you will likely not be able to run SMAPI on it regardless. Even on PC, SMAPI does not install on the compatibility mode branch of Stardew Valley.

wheat seal
#

I know, I am not looking for a way to get PC version of SMAPI working just out of the box, that would be impossible, I was just wondering if anyone had attempted to build/port SMAPI to arm64. As far as I know there is a version of SMAPI that does work on compatibility mode, but it's a really old version of SMAPI that runs on early 1.2.x version of the game (or similar).

lucid iron
#

No I think no one tried to port to arm

#

The portmaster ppl only did vanilla

#

It is open source MIT LGPL so if u got the dev environment you can try just building it maybe?

uncut viper
#

(its LGPL)

lucid iron
#

But hm even if it work a lot of mods won't

#

Might be IL differences

wanton pebble
#

We can always ask Pathos, but if it requires compatibility mode, I'm fairly certain there are logistical concerns that make it impossible to port to arm64

#

!compatibility

#

okay, that's not the command

#

is it...

#

!compat

ocean sailBOT
#

See https://smapi.io/mods for a searchable list of mods updated for the latest versions of SMAPI and Stardew Valley, with links to download them. :)

wheat seal
#

Yeah, the plan is to build it myself, I was making sure that there's currently no alternative or project for it, and try get something working for the latest version of Stardew Valley, I know most mods (if not all mods) won't work. I am not new to coding and development so I'm not just randomly malding and smashing projects/code together.

wanton pebble
#

okay, gonna try gov mansion. brb

lucid iron
#

Good luck, it'd be cool if you pull it off wew

wanton pebble
#

!legacy

ocean sailBOT
#

The game has two 'legacy' versions you can use:

  • legacy_1.5.6 is the last version before Stardew Valley 1.6. This is a (probably temporary) branch for players whose mods don't work in 1.6 yet.
  • compatibility is the latest game update, but using outdated frameworks. This is more compatible with some older systems, but mods do not work in this branch.

To switch branch:

  • On Steam: In your Steam library, right-click Stardew Valley and select Properties... > Betas, and then choose the branch under the dropdown.
  • On GOG: From the game's page in GOG Galaxy, click the settings icon > Manage installation > Configure... and choose the branch under the Beta channels dropdown.
wheat seal
wanton pebble
#

!legacymodding

ocean sailBOT
#

The compatibility branch has the latest game update, but using outdated frameworks. This is more compatible with some older systems, but mods do not work in this branch.

See SMAPI doesn't work with the compatibility branch for more info, including potential workarounds to use mods.

wanton pebble
#

no, it's impossible

#

Pathos wouldn't have stated the previous stuff and written up why not if it was possible

uncut viper
#

that page doesnt say its impossible? just difficult

#

current SMAPI just doesnt support arm or the compatibility branch

wanton pebble
#

It seems that way when you check it first, Button

uncut viper
#

primitheus wants to make a fork of SMAPI that does

wanton pebble
#

But the writeup specifically mentions that even if you do, the mods won't

uncut viper
#

well yeah, but thats not the point either

wanton pebble
#

It is. Why run SMAPI without mods?

lucid iron
#

just make ur own arm mods

wheat seal
#

💀

uncut viper
#

because if they get it working they can port open source mods themselves that they really want

wanton pebble
#

If Primitheus is willing to go that far and port every mod, then sure, not impossible

uncut viper
#

or someone might make porting to arm smapi easier if it exists

wanton pebble
#

but honestly it's prohibitively infeasible to get it working and use mods for it. That's the key problem.

wheat seal
#

Thanks Button basically summing up everything I wanna say perfectly before I can even read whats goin on

lucid iron
#

if u get arm content patcher working thats 9811 mods (as of nov 2024)

uncut viper
#

which is a far cry from a flat "no, its impossible"

wheat seal
#

Lemme explain how crazy I am, I have a different project porting modern Stardew Valley to the PS Vita.

wanton pebble
#

The vita version stuck on pre-1.3?

wanton pebble
wheat seal
#

Porting SMAPI, then porting the mods I want, or even writing a translation layer to allow for the majority of mods to then work on a modified build of SMAPI is a lot easier and fun.

wanton pebble
#

But the amount of work for that for very little gain makes it a practical impossibility usually. That said, they're apparently porting all the stuff to Vita, so they may actually be that (and I mean this positively, not negatively) crazy

lucid iron
#

i wonder what is relative difficulty of android smapi vs arm sdv+smapi bolbthinking

uncut viper
#

(personally, if arm smapi existed and it wasnt difficult to port my mods to it, i would do it for mine too)

wheat seal
#

bro why are you trying to talk for me so much xd

lucid iron
#

you arent beholden to the aot stuff for the later right

#

depending on how u do it

uncut viper
#

didnt they roll back the aot thing

lucid iron
#

they rolled back the roll back

uncut viper
#

damn im out of date

lucid iron
#

aot will be on for .15

wanton pebble
rancid temple
#

Lmao, well I guess there will at least be a version of 1.6 that can run on mobile

uncut viper
#

i dont have access to whatever msg link that is

wanton pebble
#

oh yeah, Myuu

lucid iron
#

from myuu

uncut viper
#

what channel is that from anyway

wanton pebble
#

The support channel

rancid temple
#

Support Discussion

uncut viper
#

ahh

wanton pebble
#

only support peeps have access to it, so this makes sense.

rancid temple
#

I think you could request access

wanton pebble
#

Not sure Button was angling for access XD

uncut viper
#

i dont hang out in or provide support in the support channels so its not for me

rancid temple
#

I was offered access despite not helping in support after I got mod author

fervent horizon
#

Anyone know what method makes animals enter and exit the barns?

lucid iron
#

i think it was in animalhouse?

#

nop its FarmAnimal.cs

#

look for the places that call getRectForAnimalDoor

fervent horizon
#

Cool thanks

pine elbow
#

Hello,
Does anyone know if Gil's sprites aren't located in the Character folder like everyone else?
I even did a fresh reinstall because I thought I messed with my Content folder and the unpacker somehow, but I can't find him in his rocking chair...

wanton pebble
#

Isn't Gil's sprite painted onto the map?

#

Actually, wait, duh, I know how to solve this

#

pulls open SCA

lucid iron
#

gill is 4 tiles and animated

#

hes on towninterior or smth

wanton pebble
#

Gil's on two places

#

towninterior, yes, is the main one

#

if he's at the Movie/Joja Theater, that's on the Maps/MovieTheater_TileSheet thing

#

or the MovieTheaterJoja thing

rancid temple
#

Gil is just tile actions

wanton pebble
#

either way, Gil's sprites are painted on the map itself with tilesheets, not a character

rancid temple
#

And animations

wanton pebble
#

here, I'll yoink the code in SCA rq

#
//Normal Gil
        {   
            "LogName": "Gil - TownInterior 1",
            "Action": "EditImage",
            "Update": "OnLocationChange",
            "Target": "Maps/townInterior",
            "FromFile": "assets/{{NoNose}}/Random/townInterior_{{Season}}.png",
            "FromArea": { "X": 181, "Y": 624, "Width": 26, "Height": 64 },
            "ToArea": { "X": 181, "Y": 624, "Width": 26, "Height": 64 },
        },
        {   
            "LogName": "Gil - TownInterior 2",
            "Action": "EditImage",
            "Update": "OnLocationChange",
            "Target": "Maps/townInterior",
            "FromFile": "assets/{{NoNose}}/Random/townInterior_{{Season}}.png",
            "FromArea": { "X": 214, "Y": 657, "Width": 24, "Height": 31 },
            "ToArea": { "X": 214, "Y": 657, "Width": 24, "Height": 31 },
        },
        
// MISCELLANEOUS
        {
            "LogName": "Gil - Movie Theater",
            "Action": "EditImage",
            "Update": "OnLocationChange",
            "Target": "Maps/MovieTheater_TileSheet",
            "FromFile": "assets/{{NoNose}}/Random/MovieTheater_{{Season}}.png",
            "FromArea": { "X": 228, "Y": 217, "Width": 21,  "Height": 29 },
            "ToArea": { "X": 228, "Y": 217, "Width": 21,  "Height": 29 },
        },
        {
            "LogName": "Gil - Joja Theater",
            "Action": "EditImage",
            "Update": "OnLocationChange",
            "Target": "Maps/MovieTheaterJoja_TileSheet, Maps/MovieTheaterJoja_TileSheet_international",
            "FromFile": "assets/{{NoNose}}/Random/MovieTheaterJoja_{{Season}}.png",
            "FromArea": { "X": 228, "Y": 217, "Width": 21,  "Height": 29 },
            "ToArea": { "X": 228, "Y": 217, "Width": 21,  "Height": 29 },
        },        
pine elbow
#

oh boy okay got it, thank you! I thought I was losing my mind a bit

wheat seal
# wanton pebble But the amount of work for that for very little gain makes it a practical imposs...

In my opinion, porting SMAPI to work with arm64, and allow for retro handhelds to run the framework is incredibly useful and more importantly, really fun. I really enjoy coding cool stuff, and this is something I want for myself even if it's only a niche thing and there's only a few people who also want it and find it cool. The argument that it's too much work or little gain is just invalid for me. Even if I never get a mod working, I would still find it amazing if I could get SMAPI to run in the first place. it's not impossible.

uncut viper
#

i wish both you and the person who may or may not still be trying to port it to android the best of luck with ur smapi ports

lucid iron
#

r there such thing as compat/translation layer for transpilers

wheat seal
lucid iron
#

this might be the thing casey wants cecil for but i dont rly know whats up

wanton pebble
#

shrug In that case, we differ on what's worth effort, which makes sense esp. if you're porting to Vita. I personally go for results in terms of worth, which enjoyment is a big factor, so for you I understand it's worth it. To me, however, it's as simple as the steps make it prohibitively time-intensive to work on.

#

If you'd like, do feel free to take my statement as a challenge and work to create it bug free.

lucid iron
#

man we r doin mods for casual farming game already people should do what they think its farm

#

i spel fun wrong but ill leave it

wanton pebble
#

nah, farm makes it better

#

Makes it a nice pun XD

wheat seal
#

I mean this was just as an argument to "it's impossible" which it isn't, yeah work is required to be put in, and not many people are willing to put the effort in which is fine, it just sounded like you were so against the idea and also just saying it's impossible, but in the end for me it's not really even about usability or practicality. My speciality is coding shit no one uses (not even myself).

calm nebula
lucid iron
#

ok but this post-it note i got says you are "C# Consultant Stardew Aquarium, Visit Mount Vapius, and East Scarp"

wanton pebble
#

(If I am to answer seriously, though, I agree with you, ch2e11, which is why I stated enjoyment is a big factor. If I was just like "bleh only do what is popular!" or something dumb like that, I wouldn't be working on UWS-RSV. You can do the projects which give enjoyment and not results, which is why I said it'd be worth it for them. For me, the steps required looking at it would be:

  • Code the entirety of an Arm64 thing from scratch
  • Code every single mod from scratch, when people can use hundreds to even thousands
  • then finally, 200 years later, get to play the game

Primitheus is stating that their goal is the end result of "haha, I've done it", essentially, which means they find intrinsic enjoyment in completing the challenge, which makes it worth the likely hundreds of hours of work ahead of them. Personally speaking that's not my jam and wouldn't be any logical person's jam, but they're apparently doing vita ports, and I know there's a decent amount of people that flat-out upgrade old shit like iPods. So I understand there is that level of crazy and that they might do so.

TL;DR: I can believe both it's a practical impossibility and that they can go ahead and do it if that's for them - as I said previously, if they're willing to do that, then it is not impossible. That being said, they'll likely get very little support and the reward will solely be the intrinsic "I did it" with not much time for actual playing.)

latent mauve
#

As long as the end result is not asking the very likely overworked Pathos to maintain it once it's done, have fun with your experiment

velvet narwhal
calm nebula
#

(searching her name and "cecil" is six pages)

wheat seal
# wanton pebble (If I am to answer seriously, though, I agree with you, ch2e11, which is why I s...

Doing it for the sake of doing it is not a illogical thing to do, and it's not even my main goal, my point was if I completed the challenge but it didn't live up to my expectations with mod support (i.e, no one cared and didn't port their own mods), then I'd still be happy if the initial goal of it running were to be achieved. People doing things for the sake of doing things is what even gives us projects like SMAPI in the first place. Insinuating that it's an illogical thing to do is similar to just saying it's illogical for people to seek out and do things they enjoy or want in their life. I want something to be done, so I go out of my way to do it. I don't really know why you went on a big spiel about it in the first place, it's fine if you don't think it's worth it or think it's really hard to whatever the case may be, it just seems like from the get go you're just trying to discourage me from doing it.

wanton pebble
#

... I disagree with several of those statements, but tbh I'm not really wanting to engage in this particular conversation any further - I'm trying to work on my own projects. As I've stated several times already, if it is worth it to you, go do it.

#

I'll reiterate if you want to take my prior words as a challenge, feel free. But at this point you should either proceed, or not. It's not conducive for either of us to argue this here.

calm nebula
#

There isn't a point arguing this

teal bridge
#

I have no horse in this race, but I'd like to point out one thing that I didn't see anyone else mention, which is that all recent Macs are arm64. They just run the game in emulated x86.

calm nebula
#

It will be cool if it happens

wanton pebble
#

Anywho. Speaking of my own projects, is there a way to add a dialogue to only one character's dialogue stack?

lucid iron
#

i thought apple's black magic thing is proprietary

calm nebula
#

I'm not sure anyone here knows anything about it

teal bridge
#

Well yes, Apple's ability to run .NET in emulated x86 mode is an Apple thing. But natively it's arm64 and all "made for Apple Silicon" apps are compiled for arm64.

calm nebula
#

Apples black magic won't help you

#

They have specific x86- like instructions and x86 memory ordering mode

wheat seal
#

I mean you're not taken hostage by any means, I replied to what was a message you wrote. I am not really even attempting to "argue", I am just happy to discuss anything and also kind of justify and defend my own projects that I wish to proceed with, and you seemed to be so strongly against the idea so, of course I kinda feel the need to defend it a little.

teal bridge
#

I was merely pointing it out in reference to an earlier comment along the lines of "no one uses arm64". Quite a number of people use arm64, whether or not they realize it.

wheat seal
wanton pebble
# wanton pebble Anywho. Speaking of my own projects, is there a way to add a dialogue to only on...

alternatively to this, is there a way to "store" a variable?
Context: trying to see if I can add some (optional) spouse displeased responses if you miss a date, since I won't be up for much longer (so a short, bite sized thing to do). For monogamous couples, it's fairly easy to add (just use the spouse variable), but for polyamorous couples the value of {{Date}} will change, so I need a way to keep the prior day's value of {{Date}}, then patch to that character's dialogue stack

velvet narwhal
#

the usual BETAS plugger lets you add dialogue via trigger action (also gets beyond spouse kiss dialogue)

wanton pebble
#

oh hell yes

velvet narwhal
#
          "Id": "{{ModId}}_RightInTheKisser3",
          "Trigger": "Spiderbuttons.BETAS_NpcKissed",
          "Condition": "ITEM_ID Target Lance, PLAYER_HAS_MAIL Current {{ModId}}_MODERATE12, SYNCED_RANDOM day cart_rare_seed .5 @addDailyLuck, PLAYER_HAS_SEEN_EVENT Current 6951319",
          "Actions": [
            "Spiderbuttons.BETAS_SetNewDialogue \"Lance\" \"{{i18n:Lance.MODERATE_{{Random:{{Range: 0, 5}}}}}}\" false",
            "MarkActionApplied Current {{ModId}}_RightInTheKisser3 false"
          ]
        },```
<https://stardew.button.gay/docs/betas/actions> ignore my messy conditions, but yeah
wanton pebble
#

that's quite the domain name XD

#

now my only question

gaunt orbit
#

I should've bought something more interesting than tlitookilakin.net
(no website there bc I have no hosting rn)

wanton pebble
#

This needs to happen on new day. I can set that trigger action, but unless my brain is failing me - which it might be - doesn't the dialogue stack get cleared at night?

velvet narwhal
#

uh afaik with my conditions without the synced random i could trigger it infinitely the same day, and then it'll reroll for next day

wanton pebble
#

oof. Yeah, the problem is for some dates in order to miss them you have to go to the next day

#

It's not QUITE the drawing board, but it's close

velvet narwhal
#

i wonder if you can do the uh

#

spacecore time thing?

#

it's all interconnectable

wanton pebble
#

Oh I have those, the problem is I don't think those spacecore time things will allow me to store the NPC name for the next day

velvet narwhal
#

though, button did put a morningstarted trigger SDVpufferthink

wanton pebble
#

Also doesn't help, unfortunately. shakes fist at Date token

#

if I can't figure it out in an hour I'll limit it to optional friendship loss

velvet narwhal
#

hum, a silent fail flag?

wanton pebble
#

Oh I've already kinda tried doing that, the problem is I need to dynamically determine whomst

velvet narwhal
#

ah

wanton pebble
#

here, let me grab...

#
{
            "LogName": "Optional Spouse Displeased Effects",
            "Action": "EditData",
            "Target": "Data/TriggerActions",
            "Entries": {
                "{{ModId}}_RoommateDatePrevention": {
                    "Id": "{{ModId}}_RoommateDatePrevention",
                    "Trigger": "DayEnding",                
                    "Condition": "{{SpouseDispleased |contains=words,friendship}}, ANY \"PLAYER_HAS_MAIL Current saloonDateAgree, !PLAYER_HAS_SEEN_EVENT Current 1116010\" \"PLAYER_HAS_MAIL Current forestDateAgree, !PLAYER_HAS_SEEN_EVENT Current 1116012\" \"PLAYER_HAS_MAIL Current libraryDateAgree, !PLAYER_HAS_SEEN_EVENT Current 1116014\" \"PLAYER_HAS_MAIL Current beachDateAgree, !PLAYER_HAS_SEEN_EVENT Current 1116021\" \"PLAYER_HAS_MAIL Current groceryDateAgree, !PLAYER_HAS_SEEN_EVENT Current 1116024\" \"PLAYER_HAS_MAIL Current campingDateAgree, !PLAYER_HAS_SEEN_EVENT Current 1116026\" \"PLAYER_HAS_MAIL Current emilyGemDateAgree, !PLAYER_HAS_SEEN_EVENT Current 1116016\" \"PLAYER_HAS_MAIL Current haleyDesertDateAgree, !PLAYER_HAS_SEEN_EVENT Current 1116018\" \"PLAYER_HAS_MAIL Current maruLunarDateAgree, !PLAYER_HAS_SEEN_EVENT Current 1116028\" \"PLAYER_HAS_MAIL Current alexGridballDateAgree, !PLAYER_HAS_SEEN_EVENT Current 1116030\"",
                    "HostOnly": false, 
                    "Actions": [
                        "AddFriendshipPoints {{Date}} {{MissedDate}}",
                        "AddMail Current {{Date}}Missed",
                        "AddConversationTopic MissedDate 1",
                    ],
                    "MarkActionApplied": false,
                },
            },
        },
calm nebula
#

It would be cool if there was a way for content packs to write arbitrary things to moddata

#

And read them later

wanton pebble
#

the problem is even though I added AbigailMissed I don't know how I can then say "hey, player has <NPC>Missed in their mailflags, write this dialogue to <NPC>'s dialogue stack"

gaunt orbit
#

That would be nice

velvet narwhal
#

i mean BETAS already has harmonyCP, how much worse could it get

gaunt orbit
#

You could totally do a trigger action for it, the difficulty is determining the target

wanton pebble
#

Yup. That's the sticking point right now

#

For monogamy, the target is fixed. For polyamory... the target is not fixed XD

velvet narwhal
#

ah

wanton pebble
#

(Also for monogamy + roomies, but regardless!)

velvet narwhal
#

wait

#

RelationshipChanged?

wanton pebble
#

?

velvet narwhal
#

this set as a trigger, to then do your whatever NPC flag?

wanton pebble
#

I'm unsure which of these would help

velvet narwhal
#

probably the BETAS/RelationshipChanged/Friendship one

#

since you said you already put in the friendship loss, yeah?

wanton pebble
#

Yeah, but that's a moving target

velvet narwhal
#

oh wait not friendship value

wanton pebble
#

Assuming I'm understanding it correctly, Friendship will either output hearts or the underlying number of points. someone could have 11 hearts and it goes to 10 or 11 hearts and it goes to 11, and one would trigger it, the other wouldn't. Similarly, people could have any friendship amount between 10-14 hearts (or even below) w/ spouse.

calm nebula
#

For some reason

#

Trigger action writes to moddata

#

CP token reads moddata

#

Perfect for looks around button?

wanton pebble
#

Oh it's a great idea and I hope someone takes it, but it's not a present thing I can do and I know you're retired, so it'll have to be Button, Casey, or someone else

#

At least for the moment XD

royal stump
#

SDVpufferlurk I legitimately thought I wrote a modData action already, so uh, maybe

velvet narwhal
#

some preview build SBVPensiveButt

royal stump
#

I didn't, apparently, but it'd go in EMP

wanton pebble
#

aw damn

royal stump
#

you can already do counting with local stat incrementing, but yeah, not setting/getting text from data yet

calm nebula
royal stump
#

(aside from very static mail flag stuff)

calm nebula
#

I just need a target

wanton pebble
#

If you mean in game target, take Leah?

calm nebula
#

No. A preexisting mod that would accept that feature

wanton pebble
#

Ahhhh gotcha

#

I'll make the bones of it presently regardless, that way I can just delete it after

uncut viper
#

content patcher tokens are not particularly BETAS's purview (but it does have GSQs to read mod data)

uncut viper
#

BETAS has no content patcher specific features at all, it uses the vanilla stuff only

lucid iron
#

button dont u pass stuff into triggers by putting it on mod data

uncut viper
#

its readonly, not write

royal stump
#

(oh right, that's probably why I thought it was done already SDVpufferdizzy)

lucid iron
#

well what if u just Dokkan

wanton pebble
#

Oh, but I don't need to write it as long as it can read a mailflag

#

but then again

#

I suppose it's moddata

uncut viper
#

it wont solve the problem of knowing which flag to read, though

wanton pebble
#

so that's distinct

#

dammit D:

tender agate
#

Hey, not a modder, but is there a reason why you can't add a fake item or something in the save file somewhere storing the value you want to carry to the next day then delete it right after?

uncut viper
#

the problem isnt storing the value

#

its knowing what value to check for afterwards

wanton pebble
#

it's retrieving it, yeah

#

it's like burying a treasure and then burning the map

#

Sure, the treasure could be found, but how do you find it?

uncut viper
#

DateName changes day to day, so if you write the value of DateName somewhere on Monday, it changes on Tuesday, and you cant get it anymore

#

(for example)

tender agate
#

you can place a fake item in like a chest on 0,0 of the farm map or something

uncut viper
#

its not possible to know what item to check for after the day is over

#

you cant check for DateName item because now DateName is something different

calm nebula
#

Yeah, I was thinking, write the value to moddata on farm

#

Then read it back

#

I think write is an easy trigger action

#

readback is more complex; so far I have no better ideas than "CP token?"

uncut viper
#

BETAS game state queries support tokenizable strings

#

which might help

#

vanilla actions and queries dont, however

wanton pebble
#

How so?

uncut viper
#

assuming i added one, you could have an action to do SetNewDialogue [ModData ModId/DateName] "hi this is my text"

#

so it would pull the value from the mod data field stored in ModId/DateName

#

and become e.g. SetNewDialogue Haley "hi this is my text" at runtime

calm nebula
#

difficulty is that moddata is a moving target

#

in that about everything has moddata on it

royal stump
#

(I'm not sure I follow the exact use case here, but if you want to PR something into EMP for lack of a better place, I'm fine with that SDVkrobusgiggle)

uncut viper
#

well, presumably the BETAS stuff would always only target one specific mod data

calm nebula
#

what about [ModData Character Leah ModId/FavoriteGift]?

uncut viper
#

likely either the farm or the current players mod data

calm nebula
#

yeah, that's a lot simplier

uncut viper
#

(assuming theres no weirdness with syncing or whatever with current player mod data. but it would go nicely with the GSQ for reading the current player mod data)

wanton pebble
#

Just so I'm not misreading - I could delete the moddata at the next day's end, correct?

uncut viper
#

last i talked about mod data stuff with BETAS, i was warned that placing mod data on specific locations or characters would be rough to do bc of the shadow locations and shadow npcs

calm nebula
#

(there isn't! anything weird! about current player mod data.)

wanton pebble
#

So that the moddata would be read at day start, allowed, then deleted at day end?

#

(I'd only want it to exist for a day anyway.)

uncut viper
#

id probably add an optional argument to delete the mod data yeah

tender agate
#

can you write to file? make a new txt to check

uncut viper
#

you cannot write to a file with CP

#

(besides config, technically)

calm nebula
royal stump
#

a trigger action could do that too (re: write to file), or use SMAPI's other generic data storage stuff, but modData would probably suffice in general

calm nebula
#

something like

TriggerActions: [ "SetNewDialogue [ModData ModId/LastDate] \"I'm very angry with you.\"", "RemoveModData ModId/LastDate"]
uncut viper
#

storing to current player mod data is probably also best anyway for multiplayer stuff

#

can a farmhand even write to any mod data that isnt their own?

#

or use the smapi data storage stuff at all?

royal stump
#

I'm pretty sure they can & it's just all net fields

calm nebula
#

the main farm instance, I think

uncut viper
#

id be surprised if they could write files and such though

calm nebula
#

it's always synced, it's special.

#

they can write files....you just don't have a valid save directory to write to

#

like, you could write to globaldata, that works fine

#

you can't use savedata (that's host only). And there's a third option I forgot

uncut viper
#

i dont think ive ever used that kind of data read/write stuff to be honest, so ive never looked into it

#

mod data has always been enough for me

calm nebula
#

I used to use it for something that I forgot SDVpufferthumbsup

wanton pebble
#

Hmmmm.... y'know, if this moddata thing happens, it actually kinda works out. My trigger action was a catchall for all dates, but if I'm able to write both the date and the date type (or unique date type, if not none) I can set a dialogue based on the exact date missing

royal stump
#

it's basically "write to json in the mod folder" (they can do that), "write to save file" (farmhands don't have those), and "write to global appdata or whatever"

uncut viper
#

i dont think id want BETAS to give people access to the file system at all anyway

calm nebula
royal stump
#

the latter two are pretty similar to using modData, they just predate it, but modData is cleaner for things like this

calm nebula
#

that would have been Very Handy if I updated my mods, lol

uncut viper
#

i just mostly dont wanna be partially responsible if a mod fucks it up and does something wrong with an actual file lol

calm nebula
#

which makes full sense! SDVpufferheart

uncut viper
#

same reason i thought about but then decided mostly against a console command action too tbh

calm nebula
#

getting ready to write a file with the filename ' ' <- yes just a space

velvet narwhal
#

pathos would hit you with a "really really really really bad idea"

uncut viper
#

(besides patch reload. ill probably still do that one)

royal stump
#

yeah, my thinking with FTM originally was "if somebody fills the farm with permanent rocks or w/e, you can just delete /data/" SDVkrobusgiggle

calm nebula
#

I do four bad ideas before breakfast SDVpufferthumbsup

royal stump
#

nowadays I'd probably just set up a clear command

uncut viper
#

itd be inevitable before someone wrote an infinitely running trigger action with an always changing token and flooded the persons mod folder with like 1000 files

#

WriteFile [FileName:{{DaysPlayed}}]

#

LocationChanged too ofc

#

add in the StepsTaken stat

calm nebula
#

WriteFile [FileName: {{DaysPlayed}} {{Time}} ]

#

dammit

uncut viper
#

dont even get me started if some other mod wants to do the same thing!

royal stump
#

thinks about adding the tick trigger again

uncut viper
#

WriteFile [FileName:{{ModId}}{{DaysPlayed}}] is better

#

very compatible, very clean

calm nebula
#

....why is Amazon trying to advertise laptops to me

#

does it know something I do not

#

(I am on Amazon buying running shoes.)

uncut viper
#

unfortunately i dont think i can have the mod data actions automatically prepend a mod id so it'd be up to mod authors to worry about that

royal stump
#

yeah, normal trigger action stuff is on an honor system, unless you somehow monitor data edits to see which mod did it SDVpufferdizzy

calm nebula
#

all of data edits is on the honor system

uncut viper
#

you could maybe have some luck parsing it from the trigger ID, but yeah, thats not a guarantee either

calm nebula
#

which is why I'm introducing an item into data/objects that has all fields set to null

uncut viper
#

content patcher could enforce it if it wanted to SDVpuffersquee

calm nebula
#

oh, and I'm adding a triggeraction with all fields set to null

#

oh, and I'm adding a schedule to demetrius that runs "spring": "GOTO spring"

uncut viper
#

i thought that puffer was wielding an axe and was very surprised

#

like a fire axe

calm nebula
#

(fun fact: that schedule will no longer break shit.)

royal stump
#

same a few times, whenever I haven't used it for a while SDVkrobusgiggle

calm nebula
#

game checks for that now

uncut viper
#

i could atra-proof my mods by specifically reading and modifying all the .json files inside mod folders whose unique ids start with atravita

calm nebula
#

I'm a paranoid chaos demon?

#

also, what if I do mathperson.NotAJokeModISwear?

uncut viper
#

well then that mod doesnt belong to atra does it

#

its atra proof, not mathperson proof

teal bridge
uncut viper
#

luckily i dont have triggers that can happen that fast

royal stump
#

iirc the console spam part was fixed, so it's totally fine now

uncut viper
#

ah yes, that was the reason it was not fine

calm nebula
#

you could probably do one-second, huh

uncut viper
#

you could have people select what tick interval they wanted too and dynamically register triggers for every one a mod uses

#

like e.IsMultipleOf(34)

teal bridge
calm nebula
#

brb adding a triggeraction to Game1.LoadString

uncut viper
#

im unsure how a user would patch a trigger to run every frame, but if they did, i think id be impressed

rancid musk
calm nebula
#

anyways

teal bridge
#

I would probably say the same thing hypocritical thing today about using publicizer to mess with the private state of someone else's mod.

calm nebula
#

every tick I want a triggeraction that searches the entire world for a teacup

rancid musk
#

silly atra

#

... that's a game state query not a trigger action

calm nebula
#

trigger actions can have game state queries attached!

#

(I think.)

#

I'll go do my atra-is-wrong-again penalty pushups

rancid musk
#

They can

teal bridge
#

Anyone can write a mod to slow game performance, though. Writing one to fill up all the user's disk space, that's an impressive feat.

rancid musk
#

Data/TriggerActions lets you specify a condition for a trigger to run.

teal bridge
#

Even better if you can write a mod that blue-screens the player.

calm nebula
#

Clearly, someone needs to write a mod that hooks up stardew to your phone step tracker

rancid musk
#

And there's the If built-in action.

royal stump
#

trigger actions even have 2 gsqs now, with SkipPermanentlyCondition SDVpuffermlem

#

which I had to look at in Content because it's not on the wiki yet

uncut viper
#

should be on the migrate page

rancid musk
#

I should revisit HyperGameQuery when my PC is alive again

calm nebula
uncut viper
#

just the ones that dont matter

rancid musk
#

I wasn't seeing the performance benefits I was hoping from before so clearly that means I need to go turbo over the top and start emitting IL or something

velvet narwhal
#

well mac already did that without us interfering KEK

teal bridge
uncut viper
#

(oh theres an idea, i could add a trigger to conditionally patch in a harmony patch)

#

(on top of the ordinary condition in the harmony patch asset, of c ourse. they call that 2FA right)

teal bridge
calm nebula
#

also, frankly, it's dirty easy to make a mod that crashes smapi on macs

#

I can even do it from a content pack

teal bridge
#

Oh? Color me skeptical. Crashes the game, maybe, sure. Eats up memory, sure. But crash the entire machine?

calm nebula
#

crashes the game, silent crash

teal bridge
#

Ahaha, nice stealth edit there.

calm nebula
#

(it's a skiasharp issue)

teal bridge
#

But BSODding (or Mac equivalent) is a world apart from crashing the game.

calm nebula
#

yeah, I think you would have to get into memory shenanigans there.

#

either harmony patch gone wrong, unsafe code gone wrong, or a single malformed png 😛

royal stump
#

speaking of malicious code, I wonder if layering sound effects still makes them louder SDVpuffersquint

calm nebula
#

that's also a fun way to crash teh game

uncut viper
#

my harmony patch feature in BETAS isnt limited to SDV code, so...

royal stump
#

I had an old note to let people trigger sfx, but I'd have to safety check that

teal bridge
uncut viper
#

find the right System.Whatever function to change the return value of

calm nebula
#

change return values with that?

royal stump
uncut viper
#

You can!

calm nebula
#

huh.

uncut viper
#

Subject to a GSQ, naturally

#

not all values mind you

calm nebula
#

yeah, you could be malicious with that if you wanted

teal bridge
#

I guess so, but you can only go as loud as the OS will allow the game itself to go.

calm nebula
#

got it

uncut viper
#

bools, numbers, and strings

calm nebula
#

patching GL.BindTexture

royal stump
#

I'm not sure what limits are actually involved, but I got some pretty bad noises during monster tests and such

#

during the brief period between "i'll add a spawn sfx option" and "oh that should only be once per group"

teal bridge
#

I suppress the gift/quest sounds in Pen Pals to prevent the "layering", but it's not really that bad when 10-20 play at a time. Just... kinda loud.

royal stump
#

it may require getting up to 100s/1000s, but I had some weird blown-out noises and such on top of being louder than anything usually is

#

but some of that testing was before the xna->monogame change on windows and such, things might've changed
(and before win11, etc)

calm nebula
#

yeah,

tiny zealot
uncut viper
#

without the pretty colour, though

#

the pretty colour is integral

tiny zealot
#

there were other colors involved

rancid musk
#

Sure is fun saturating the GPU

teal bridge
#

Definitely have to be careful with render targets.

uncut viper
rancid musk
#

Other colors like superviolet, actinic, octarine, squant, and purple.

brittle pasture
#

purple? digging deep for that one are we

uncut viper
#

i like the sound of superviolet

calm nebula
#

(so the ubuntu death screen color?)

uncut viper
#

i want that as a role colour

teal bridge
#

In general it's pretty hard to BSOD without kernel level access, though; you'd most likely have to exploit some security vulnerability.

calm nebula
#

you have a pretty role color

uncut viper
#

my role colour is not pretty

royal stump
#

SDVpufferlurk okay, this definitely isn't as bad as I recall it being (depending on settings/hardware/etc)
aside from breaking the background music for a second

for (int x = 0; x < 10000; x++)
    Game1.playSound("hitEnemy");```
uncut viper
#

anyway i forget was i supposed to add the mod data trigger action stuff or was esca doing it

rancid musk
#

I mean they recently changed the audio backend entirely

royal stump
#

yeah, whatever changes happened fixed it just multiplying the volume, at least

royal stump
uncut viper
#

guess ill open up rider

royal stump
#

I'm cool with writing a CP token to read modData somewhere, though I'm not clear on the scope needed (input being a field name, target + field, etc)

uncut viper
#

a CP token for it would still be useful, since i will not be doing that

royal stump
#

not personally familiar with tokenizeable strings though

uncut viper
#

mine are just going to work on current player mod data, so the only input i need for writing it is the key and the value

brittle pasture
uncut viper
#

and the tokenizable string just the key

#

tokenizable strings are basically like using @ in dialogue for a player name but for other things and with specific syntax

#

so, useful in more than just dialogue

#

though the places that support them in vanilla are more limited

#

namely, actions and game state queries do not support them

brittle pasture
#

they are usually only used for user-viewable strings right

uncut viper
#

yeah pretty much

#

all the [LocalizedText] stuff in Data/Objects (for e.g.) is tokenizable strings

calm nebula
#

(you guys are awesome.)

#

(just putting it out there.)

shadow pagoda
brittle pasture
#

just item.Category

uncut viper
#

(also i should actually correct myself from earlier bc i did forget, but BETAS isnt required to use a GSQ to check mod data of a player, it actually exists in vanilla. that said BETAS does add its own mod data GSQs)

brittle pasture
uncut viper
#

(and that vanilla GSQ does actually let you specify a target player for it, so... i guess i should follow suit with my stuff for consistencys sake)

royal stump
#

oh right, yeah, it has a read for players SDVpufferthinkblob

uncut viper
#

actually atra when you said earlier that farmhands can write to the farm mod data, does that mean thats the only one they can write to? i got a bit of mixed answer from you and esca

calm nebula
#

And also any activley synced locations (like farm)

#

They can always write to themselves

uncut viper
#

im mostly concerned with whether they can write to another player

royal stump
#

modData is a net field on the attached instance, so players can see and edit their own data + the farm (always synced) + whatever places are active, I'd guess

calm nebula
#

Writing to other players I've always had questions about

#

According to myuu, players can only write to themselves

uncut viper
#

like if i do WriteModData Host Key Value, would that work from a farmhand

royal stump
#

yeah, I'm not sure if players always see each others' instances or not SDVpufferthinkblob

uncut viper
#

id assume they cant

calm nebula
#

That said, auto-generated conversation topics

#

They can see other player instances but can't write

#

Things I know don't wprk: trying to change another player's inventory or mailflafs

shadow pagoda
# brittle pasture just `item.Category`

i mean, i knew that existed, and did use that but I wanted verify that certain items games are under a certain category. I've already had a lot of incidents where I assumed something and it bit me in the bit later.

uncut viper
#

alrighty, then i will go back to just having this mod data action only write to the current players mod data always

brittle pasture
#

hmm I was under the impression modData is fine, it's stats that you can't touch other player's?

calm nebula
#

Thing that works (somehow?) Changing another player's active conversation topics

uncut viper
#

the thing with stats is they dont get synced i thought

brittle pasture
#

then again I never tried writing, so don't follow my advice

uncut viper
#

til the end of the day

calm nebula
uncut viper
#

though the IncrementStat action doesnt let you specify a player so

calm nebula
#

Not only you can't write to another player, you can't even reliably read another player's

brittle pasture
calm nebula
#

It's only synced when the entire farmer instance is thrown into xml and synced

royal stump
#

stats are loaded from save but not actually a net field, was my latest understanding of it, yeah

calm nebula
#

Which is load game, every night, and a hail Mary when a player disconnects

royal stump
#

I limited EMP's PlayerStat CP token to the current player, rather than try to figure out how to handle that

#

for modData it should all be readable, I guess, just write-blocked somewhere

uncut viper
#

your playerstat token still frightens me

#

for the same reason my CMCT dynamictoken token frightens me

#

always saying "yes i have an update" SDVpufferpensive

lucid iron
#

did your fear ever stop you from doing crimes

brittle pasture
#

(is it write-blocked? I wanna test, but I'm sooooooo lazy)

uncut viper
#

no, but its unfortunate that that fear is probably why theres no base-CP playerstat token

#

all because stepsTaken had to be stored in player stats...

royal stump
calm nebula
#

It's less "write blocked" and more "you can write it but it will be overridden when synced"

uncut viper
#

shadow host

#

esque

calm nebula
#

Tbh on a personal level it makes sense

#

I don't want other people stealing fork my inventory

uncut viper
#

just kick em and speedrun to lewis

royal stump
#

(speaking of my stat token, I wonder if it'd be worth it to loop through the dictionary to see if any fields changed SDVpufferdizzy)
(it's not a net field, so reading it doesn't cost much, but foreach-ing on SerializeableDictionaryWithCaseInsensitiveKeys might)

uncut viper
#

if you did that you'd have to exclude stepsTaken, imo

#

thats literally always changing pretty much

#

which is why stats are so uncacheable as a whole

#

or a big reason anyway

royal stump
#

...right, yeah, I may as well assume that has changed SDVpuffersquint

calm nebula
#

You could recall the last time someone has checked the token

brittle pasture
uncut viper
#

(tbh id be fine with playerstat being a vanilla CP thing if it excluded stepsTaken. who needs to check that in a token anyway)

royal stump
#

I guess I could cache which stats mods are actually looking at, and just check those

shadow pagoda
# brittle pasture apologies, I'm not sure what problem you're having here?

It's not really a problem. I was just wondering if I could get a list like this but instead of ids, it would be the category. Using the category variable requires me to have an reference to said Item. I just want to verify what falls under a certain category without have to have an instance of all items. If I had to write pseduocode it would be "Get all item names where the category is {number}"

royal stump
#

for context, CP doesn't directly tell me the input during context updates, it's just "btw return true if anything changed"

/// <summary>Update the values when the context changes.</summary>
/// <returns>Returns whether the value changed, which may trigger patch updates.</returns>
public bool UpdateContext()
{
    InputOutputCache.Value = new Dictionary<string, uint>(Game1.player.stats.Values); //update the cache of the local player's stats
    return true; //assume values have changed
}```
uncut viper
#

that is actually pretty much what im doing with my Config token too in CMCT

#

just storing the ones mods look for

#

though ive been wanting to change that

royal stump
#

I think I did that in the other one for GSQs, which does actually check

gaunt orbit
brittle pasture
gaunt orbit
#

Iterate pairs and filter based on category field?

brittle pasture
#

there's so many ways to get object data I legit forgot that existed

uncut viper
gaunt orbit
#
var allInCategory = Game1.objectData.Where(p => p.Value.Category == MyCategory).Select(p => p.Key);
#

More or less

calm nebula
uncut viper
#

these are dynamic tokens! thats content patcher

#

the problem is with detecting when someone elses dynamic token has changed

calm nebula
#

Yeah..

#

Tbh it's okay

uncut viper
#

because even if that other dynamic token should change, it doesnt actually change yet. it just says it will change. so when my token goes to check... it thinks not

calm nebula
#

CP will only propagate asset if the value of the thingies changed

uncut viper
#

i got it semi functional at one point but my token lagged one update check behind and that was more unacceptable to me

royal stump
#

that's about where I was with trying to actually read and sync player stats, there isn't a great way to prepare ahead of context updates

uncut viper
#

need an UpdateUpdateContext method pathos pls

royal stump
#

UpdatingContextInASecond()

uncut viper
#

HoldYourHorsesUpdateContext()

calm nebula
#

ConsideringMajorLifeChanges()

#

ButHaventCommittedYet()

lucid iron
#

are u ppl trying to turn SDV into a database medlook

uncut viper
#

is Spiderbuttons.BETAS_WritePlayerModData too wordy do you think

#

trying to decide if i should drop the word "Player" in it but dont know if it should remain clear that its specifically for the player

lucid iron
#

do u plan on making other kind of write mod data

#

like current location maybe

uncut viper
#

if someone ever needs it maybe

#

i do want to leave myself open to add a like. AddToModDataList or something action too

lucid iron
#

should keep player then

uncut viper
#

so you can turn one mod data entry into a list of entries

#

instead of simply overwriting

lucid iron
#

i think Spiderbuttons.BETAS alone is long enough that i'd never write this by hand

#

so what is a few more letters to copy paste

uncut viper
#

fair enough

#

tbh my bigger worry is actually whether it'll look nice on my docs page

lucid iron
#

does farm animal gender do anything

uncut viper
#

like, functionally, or visually

lucid iron
#

either

uncut viper
#

changes some strings

lucid iron
#

tbh i assumed cows r u know

#

all female

#

cus i dont read LilyDerp

uncut viper
#

as far as i know it literally just changes pronouns in some dialogue boxes

lucid iron
#

ok i wont think about it then

#

male cow...

brittle pasture
#

~~literally the only place is in ~~the main place is in the pronoun of Marnie's single dialogue where she sends an animal to your farm

#

nowhere else, not even pregananant checks

uncut viper
#

its in their mood messages

#

FarmAnimal.getMoodMessage

lucid iron
#

wheres the farm animal gender neutral mod

uncut viper
#

being hungry doesnt care about gender

lucid iron
#

my cow deserves doors

brittle pasture
#

huh, I literally take so good care of my animals I never see any lines other than "X looks really happy today!"

#

(I guess there's the adoption message)

uncut viper
#

@wanton pebble new version of BETAS just posted. docs will be updated shortly but the stuff for what you want:
Action: Spiderbuttons.BETAS_WritePlayerModData <Key> <Value>
Action: Spiderbuttons.BETAS_RemovePlayerModData <Key> [Value]
Tokenizable String (for use in my queries/actions only): [Spiderbuttons.BETAS_PlayerModData <Key>]

for the RemovePlayerModData action, if no value is provided, it just removes the key from the dictionary straight up (it wont exist at all, so PLAYER_MOD_DATA checking for that key will return false). if you do provide a value, it will only remove the mod data if the existing value matches what you put in

#

also writing to mod data that already exists will just overwrite it

#

also also this is only for the current player, not for any other player

royal stump
#

(I'm still prototyping and will take longer, but currently I've got {{Esca.EMP/ModData <Target> <Key>}} as a CP token to read mod data, where <Target> is currently either Player or Farm)
(not that there's CP support for the latter, but it seems like an option to leave open for shared writes)

uncut viper
#

im very much of a fan of having both CP specific and vanilla adjacent ways for these things
and also for leaving the option to read open even if CP cant write. im sure theres some C# mods out there that put useful data in the farm mod data

#

im also now wondering again how much trouble it might cause if i patch all the vanilla GSQs to add tokenizable string support. surely theres not someone out there using tkstring syntax in their GSQs banking on the fact that it wont be parsed as one.... surely,

royal stump
#

I'm only really familiar with the vanilla GSQs and mine/yours, but I hope it's safe to assume nobody's using that syntax SDVpufferlurk

uncut viper
#

tbh.. i kinda doubt most people are really using a lot of the tokenizable strings in the first place lol

royal stump
#

yeah, people adding new data entries usually seem to ignore it, at least

uncut viper
#

the only one i ever see is LocalizedText

royal stump
#

I'd worry a bit about someone incidentally using [] in text, e.g. I could see somebody using it in my LogMessage action, but maybe you can validate around it SDVpufferthinkblob

#

as in like "Esca.EMP_LogMessage Info [{{ModId}}]: You just gained 10g!" to put the log-style braces around their mod ID

#

(my example doesn't do that, but I could see it happening)

uncut viper
#

from the few minutes where i was very confused why my tokenizable string wasnt working before remembering i didnt add my mod id in the string, i think if there is no parser for a given tokenizable string, it just outputs the same text

#

like when i put just [PlayerModData] instead of [Spiderbuttons.BETAS_PPlayerModData], it just outputted [PlayerModData]

#

without a warning or anything

#

its the uncertainty of edge cases that keeps me from trying mostly

royal stump
#

it's difficult to log that kinda thing without accidentally taking ownership of other random text

uncut viper
#

that and i havent updated my tokenizable-supporting argutility functions to match the 1.6.9 updates to em

#

i guess the other reason not to really bother is that most of the important tokenizable strings already have equivalent CP tokens SDVpuffersquee so its not useful there anyway

#

or rather, the things you'd use fancy tokenizable string tricks for can be avoided entirely by just using a content patcher when conditon with more sophisticated, scholarly tokens

tender agate
#

was just looking at my mods, doesn't Lasting Conversation Topics somehow do the thing you guys are talking about/ just implemented?

royal stump
#

as far as I know, conversation topics are similar to mail flags but with timers, rather than being arbitrary text in a specific place

uncut viper
#

that is correct, and you cant read the value stored in them to use elsewhere

#

you can check for a specific value, but you cant arbitrarily take what is there

royal stump
#

like there are several ways for mods to set a flag called "MyFlag" and then remove it later, but writing the text "my text here!" to "MyFlag" (and then reading or displaying it) is what we're enabling

uncut viper
#

the problem was that there was no way to have specific text to check for

naive wyvern
#

hi gang long time no see Wave_Aska
I'd like to be pointed to the right direction: I'm trying to make a retexture and removal for Butterfly Hutch depending on the toggle the user picks (Replace butterflies with petals, replace with stars, or just have no butterflies at all)

I made a sprite for the petal and star options (petal producer and star spawner respectively)

How do I go about editing the shop in the desert to replace the name (and how do I totally delete the butterfly hutch from the list for when they pick no retexture)

tender agate
#

Oh I get it now

uncut viper
light bramble
#

So, if my mod looks like this:

#

Where do I put my i18n

naive wyvern
#

Thank you button !! im gonna dive in SDVpufferheart

uncut viper
#

assuming its i18n for the CP portion, it goes in the CP folder

light bramble
#

otay!

faint ingot
#

I'm very frustrated with Pierre right now

#

I very specifically told him: "CanVisitIsland":"False", and here he is at the resort in defiance

light bramble
#

womp womp

latent mauve
#

Did you tell him yesterday/is he there after a sleep?

faint ingot
#

I guess I probably could change the update rate to tell him the same day

#

because it gets updated in response to an event but then wouldn't be loaded until the next day

latent mauve
#

Schedule changes take one sleep to happen, so...

faint ingot
#

so are you saying it wouldn't help to try changing the update rate, that he'll be wonky for a day regardless?

uncut viper
#

yeah it won't matter if you tell him same day if his schedule was already decided

faint ingot
#

ok, this is one reason i used 000 schedules but then i got the NPC duplication glitch

#

I mean I'm not trying to change what he does the same day as the event, I'm trying to change his behavior for the next day

#

I was advised to use warp locations so I'm trying that but it was a wonky case because of the island visit so i have to do more testing

light bramble
#

Tempted to make a timelord 2.0 greenhouse...EVEN LARGER greenhouse...

royal stump
#

I think having Custom NPC Exclusions installed fixes the issue with CanVisitIsland; even if you're not using the mod itself, it forces the island schedules to update after CP's changes

#

though it's usually easier to just skip a day
(and I'm not 100% sure if installing it post-scheduling still works SDVpufferdizzy)

pseudo roost
#

How do I make it so my NPC has a unique Dialouge for a specific gift given to them?

brittle pasture
#

AcceptGift_<id>

wheat nymph
#

hiya this is kinda specific but for emily's event where ||she has the dream sequence||, do the resources used happen to be re-used anywhere else in the game?

#

though i probably should also ask how to adjust events in general, i want to add some more content to emily and other characters

she likes ||magic and stuff so i was thinking of adjusting the events, or adding some to the game leaning towards that direction, so maybe she'll be a sort of witch?||

im really new to modding though so im not sure where to start, and im hoping for any pointers or tips, anything helps really!

vernal crest
#

Off the top of my head I can't think of anywhere the game reuses any of that stuff, no.

brittle pasture
#

did a file search, nope that's the only place

vernal crest
#

As for editing vanilla events: try not to edit them if possible, as that reduces compatibility with other mods, but adding new events is always fun.

#

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

slender badger
#

!makevents (Hey Aba, we've got a bot command for those SDVkrobusgiggle )

#

...and it would be great if I spelt said bot command correctly SBVLmaoDog

#

!makeevents

ocean sailBOT
hard rock
#

hi howe to fix this?.I try verify integryty but its not working

brittle pasture
#

did you use XNB mods nvm I saw you verified integrity of game files

#

(also FYI this channel is for making mods. for general mod questions go to #modded-stardew )

uncut viper
velvet narwhal
#

if you did make an xnb....

#

!xnb

ocean sailBOT
#

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

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

velvet narwhal
#

(that wasn't the zola one, but i assume it'd be a playing-with-mods thing)

wise needle
#

Is there any way to alter what the raccoon requests?

#

I'm trying to find out if there's a file with it but not finding it so far

brittle pasture
#

not without C#

uncut viper
#

nope!

brittle pasture
#

it's giga hardcoded

vernal crest
brittle pasture
#

and I don't say that lightly

wise needle
#

Damn, was fearing that was the case

lethal steeple
#

Hello 🙂 I thought I might try my hand at modding, and was wondering how hoppers are referred to in the code. is it simply chest type Hopper?

brittle pasture
#

think so yea

#

Chest.SpecialChestTypes.AutoLoader technically

lethal steeple
#

Right! Thanks

old edge
#

thanks selph

#

I learned how to create a custom trigger in C#

#

for rings to work even when unequipped

lethal steeple
#

And how do I make the dll file from the .cs?

#

I haven't used C# before

#

I assume it will package from my editor, like with other things

brittle pasture
#

!startmodding are you following the C# guide

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.

brittle pasture
#

building the project should do it

lethal steeple
#

I hadn't seen that, thanks

#

Ok!

round dock
#

Do you just mess with the strings if you wanna alter the Raccoon’s dialogue?

#

What if I don’t wanna be called stupid while giving them their stuff for the quests SBVPensiveButt

brittle pasture
#

yeah that should work fine

#

(I was about to say "wait they do?", then the realization hit me)

round dock
#

CA doin an oopsy funny with the raccoon SDVpuffersob

slender badger
#

Alternatively, go the other way and make the raccoon deliberately insult you SBVMischief

#

Randomised insults in various languages

uncut viper
#

"Here's your smoked fish!"
"thanks dipshit"

slender badger
#

Putting the "trash" in "trash panda"