#making-mods-general
1 messages · Page 135 of 1
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
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
TAS is a funky funky class
someone was in here trying to make custom bombs recently
but first I check the other constructor lol
public Object(string itemId, int initialStack, bool isRecipe = false, int price = -1, int quality = 0)
Damn that is old code lol (the githib link)
Ignore the bullshit about Random and use Random.Shared. Use Game1.Multiplayer
🙂 thank
bomb.placementAction(Game1.currentLocation, 5, 5);
it does go boom, but it doesnt do any damage lol
does gmcm have an option for a Left Text Right Text widget or do I need to design it?
(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)
Eh, is fine for it to be expensive
It's a winter star gift
It's checked once per year
(In game)
you cant put GSQs on individual winter star gifts tho
Oh
i guess you mean just making the trigger run ONLY on like, december 24th?
This is what I get for not checking lol
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
...honestly this entire conversation amuses me because you guys are likely operating under the mistaken assumption I'm using the Winter Star pools
this is what i get for trusting atra /lh
whereas the truth is this is a small project I'm working on for Date Night Redux instead 
As a completely unrelated question, is there a consensus over what music should be playing at a nighttime event at the farmhouse?
Actually, that might be more of a question for #modded-stardew ... brb
Nighttime music 
i am curious what item pools you might be talking about that are changed with CP only but arent item spawn data fields
Dynamic token fields, of course
but what pools do those dynamic tokens have an effect on?
rolls eyes no, no careless whisper or something. Think less suggestive and more just a quiet moment with your spouse
if you can say without spoiling the project ofc
Oh, simple randomization. Get a list of item IDs, randomize over them, pick something from the list
Oh I wasn't trying to be suggestive, I was being a turd :D
You can add to a list as well like that, Button
Like, nighttime music, music that plays when the time is night
here, let me grab an example from the Island date I still have to port 
what's the command to reset a texture when making an item mod>
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
Reset a texture?
{
"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,
},
},
Do you mean like, you changed the texture and you're trying to reload it without restarting the game?
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
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 
sometimes there is not though, much to my dismay
yes
(nor are those optimizations always even necessary or at all noticeable, but yknow. principle of the thing and all that. i like easy optimizations)
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
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
thx
I know a lot of stuff about items are cached when they're spawned
But draw might not be
SpriteIndex isnt cached but i cant remember about the texture itself
my schedule for my character isnt working? Shes just moving around at the bus stop. Heres the Json: https://smapi.io/json/none/a5245f7c24064b59b9de175616d168b7. Btw its all the same just cause im trying to test it first. And yes those are all custom locations.
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
If I'm not mistaken, "sleep" isn't a valid animation name. The proper label for it would be in lowercase: <npc name>_sleep
It's hard-coded to act a certain way
It depends on what you named the animations
Any animation containing sleep will trigger your NPC to sleep
oh, nvm then
whats the one to spawn it in again?
[[Modding:Console commands]]
I have no idea, I use mods for that
Debug fin
me when im a fish but cant swim as fast as i used to
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
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
!fileextensions are you sure you're using jsons?
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.
it should be fine, smapi doesn't recognize my assets, I will provide a screenshot
just a sec
I would recommend following the instructions above
No prob, it was a fast fix
how can I convert it to json?
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
its just that we already have a save file
Makes sense!
purchased by marnie you say?
Once you max friendship with a pet, Marnie sells more pets you can adopt
Yes, 1.6 added a pet shop to marnie after you get max friendship
I see
well then
I might look into that
as the game is not responding right now
which might showcase a problem
Feel free to use the code from this mod https://www.nexusmods.com/stardewvalley/mods/25361
Gotta be careful when loading
careful of what?
If you click out of the screen while it's loading, sometimes it'll hang indefinitely
I am afraid I clicked out
That's just a SDV thing in general
Not sure if it's just something wrong with MonoGame or what
IT IS ALAIVE
thanks guys, really appreciate it
btw, I'm a semi professional spriter, if anyone need help my comissions are open
!commissions you can also add yourself to here
If you're looking for people who do mod commissions (either art or code), here's a wiki page with a non-comprehensive list of people who do them: https://stardewmodding.wiki.gg/wiki/Stardew_Mod_Commissions
Makes it easier to point people asking about who does commissions to the right place
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?
debug sleep exists, but I don't know if you'll get penalized if you fall asleep somewhere not safe
thanks!!!
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
Testing out my island farmhouse 2nd floor again, wish me luck!
Sleeping in the doorway of NPC's rooms is always fun for them I'm sure
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?
Season change?
very possible that you were missing a seasonal tileset if you referenced a spring version that existed inside the mod folder
also, oops, my 2nd floor has a butterfly in it and clouds, must have missed labelling it as Indoors. xD
Just gotta patch some roof holes
there's also a single room that refuses to let me decorate it, so I need to doublecheck my IDs anyway
And drop it out of the cloud layer
....keep the butterfly
screenshot just for you, atra:
A butterfly inside the Island Farmhouse actually makes sense lol
The clouds are a bit weird though.
A little
If I could get just the butterflies and not the clouds, that'd be fine. >_>
...they're multiplying. xD
Adorable
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?)
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
The black background is default I thought
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
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
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
I did always want whatever summit has
uhhhh. Turning Outdoors as a map property to false did not remove the cloud shadows. xD
Clearly still missing SOMETHING
This seems ideal tbh
It took away the butterflies but not the clouds. This was the exact opposite of what I wanted.
What's the thing u r trying to use again
This is a 2nd floor for the island farmhouse
The outdoor area will come later, but this one is meant to be indoors
No I meant what's the map property
Outdoors isn't a true or false
Then I misunderstood it
Outdoors is a "does the value exist? if it has a value then use it"
When I didn't have Outdoors as a map property at all, it defaulted to behaving like it was outside
Any location without Outdoors should be considered Indoors unless you made it inherit from somewhere with weird hardcoded rules
Ah, maybe the LocationContext Island is messing with it
Possibly
The game is telling you to make a balcony
Farmhouse locations have their own hardcoded logic
I'm not at home so I can't check
But have you considered making it an IslandFarmhouse as the c# type
Yeah, I'm not sure there's anything special about the Island Farmhouse that would cause issues if you did
Well it spawns beds
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
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
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
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
Are those all your map properties?
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.
I dont know anything about C# but are you aware that all eggs have a certain category number? Eg could you just check if player has the desired amount of items with the egg category number?
rather than cycling through each items one by one that doesnt account for modded items
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
Working on a new feature for Expanded Storage that lets you customize the color palette, and apply custom sprites for each color as well.
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
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
Mostly just wondering if the Outdoors property got stuck somehow
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
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;
}```
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"
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
Works properly when I add an item to my inventory with debug item
And also CJB Item Spawner
that's probably specific to the SMAPI command, since it predates some of that tag logic
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
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 
(okay, it can't in most cases, though custom forage with quantity > 1 might)
you're looking for something like the Add/Remove Crib function?
Right. Like I can change the strings by calling EditData and I can tweak that. But i want it to not even show on the list since it's not used
Is there a way to use my own HomeRenovations.json file instead of the default?
Have you tried just making those entries null?
^
I did. Replaces it with ?
Did you null both Add and Remove?
Yes. this is what it does now
Which entries specifically are you nulling?
Textstrings, AnimationType, CheckForObstructions,Price,RoomID,Requirements,RenovateActions,RectGroups
You're replacing that text itself with null, yes?
yes
Like
"build_crib": null```
correct?
That's how I interpreted it, at least
Except the entry keys are whatever entry you're actually removing
Yeah, seems fine here too
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
Awesome. And it's SO much less work haha
{
"Action": "EditData",
"Target": "Data/HomeRenovations",
"Entries": {
"open_bedroom": null
}
}```
Data/Locations
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 : ) : )
@rancid temple thank you
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
You can use Lookup Anything, I think maybe Debug Mode also gives the location name
I think it's Caldera
OK thank you for your help and your patience
FTM also has a whereami command for location/tile info, if you happen to have it installed
Volcano is indeed Caldera
@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:
Are you using the birdie mod
A number of mods cause issues by calling population of context tags too early
yeah, I can imagine it's pretty easy to cause depending on spawn/read logic
man, I am having my moment™️ again
I swear, I copy-pasted the location stuff from my other indoor maps and yet.... https://smapi.io/log/d159445aca174c768ac7cc4f9307c20d
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.

I feel like I've seen this error before but I'm blanking hard on what it means
i keep staring at my stuff trying to find the issue
like
https://smapi.io/json/content-patcher/33b3fa6c24fe4fa18a37e200ee29a647 thats my locations
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
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
huh i thought then it'd talk bout tilesheet climbing, hm
Fixed in the upcoming Stardew Valley 1.6.15. Thanks for reporting it!
I might be mixing it up, it's been a while & I never really make maps myself
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
i only have my two custom tilesheets and a copy of paths but those are all in my folder
What's your path for the tmx?
Like I see what you wrote in code, but I mean in the actual folders
well, its the pic for the file which i sent above and the folder its in is
why the kek 
MY SHIT lol
OH, lol
I wasn't ready
yeah i sometimes name my folder like that
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?
no
only a copypasted paths and my two custom ones and i aalready use those in my other maps that work
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.
man, i cant figure out the issue
Scale Up 2 can be used to load whatever size textures onto character sprites
ruh roh
i think i am having an issue, not sure if its THE issue but
man, i am so confused
Have you read up on the 1.6 appearances system at all?
Plenty of CP based sprite change mods can do location based outfits
at some point i mustve made tsx files for my tilesheets for some reason
Oh, yeah my brain shut off at Portraiture lmao. Appearance system would use the Condition to check for location
No, sorry im new to this, where can I read that?
i didnt have any of my custom tilesheets embbed...
sadly that wasnt the cause for the map issue tho
Same errors after fixing the embedding?
Thank you everyone!♥
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...
god, maybe i should take a break
You would export the tsx to have the animations, but you should be able to embed them and still have the animations
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
Did you add them and embed them? Should be a button that lets you just embed tilesets you already imported
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
Took me a minute to remember how to do this, when I saved and reopened the map, the extra tileset went away
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
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
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.
Can't SMAPI already work on Steam Deck, which is technically Linux?
steam deck is x86 not ARM
I see
Yeah SMAPI supports Steam Deck, but it's not about operating system, it's the CPU architecture
For games to work on retro handhelds, the game runs off the compatibility branch on steam.
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.
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).
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?
(its LGPL)
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
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. :)
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.
okay, gonna try gov mansion. brb
Good luck, it'd be cool if you pull it off 
!legacy
The game has two 'legacy' versions you can use:
legacy_1.5.6is 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.compatibilityis 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.
No, there's nothing that makes it impossible, nothing is impossible 😉. The actual reasoning is... no one uses ARM64 and no one runs 32-Bit systems.
!legacymodding
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.
no, it's impossible
Pathos wouldn't have stated the previous stuff and written up why not if it was possible
that page doesnt say its impossible? just difficult
current SMAPI just doesnt support arm or the compatibility branch
It seems that way when you check it first, Button
primitheus wants to make a fork of SMAPI that does
But the writeup specifically mentions that even if you do, the mods won't
well yeah, but thats not the point either
It is. Why run SMAPI without mods?
just make ur own arm mods
💀
because if they get it working they can port open source mods themselves that they really want
If Primitheus is willing to go that far and port every mod, then sure, not impossible
or someone might make porting to arm smapi easier if it exists
but honestly it's prohibitively infeasible to get it working and use mods for it. That's the key problem.
Thanks Button basically summing up everything I wanna say perfectly before I can even read whats goin on
if u get arm content patcher working thats 9811 mods (as of nov 2024)
which is a far cry from a flat "no, its impossible"
Lemme explain how crazy I am, I have a different project porting modern Stardew Valley to the PS Vita.
The vita version stuck on pre-1.3?
Like I said - if they're willing to port all the mods, then you're correct, it's not a flat "no, it's impossible"
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.
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
i wonder what is relative difficulty of android smapi vs arm sdv+smapi 
(personally, if arm smapi existed and it wasnt difficult to port my mods to it, i would do it for mine too)
bro why are you trying to talk for me so much xd
didnt they roll back the aot thing
they rolled back the roll back
damn im out of date
We'd probably have to ask Pathos or atra or similar
Lmao, well I guess there will at least be a version of 1.6 that can run on mobile
i dont have access to whatever msg link that is
oh yeah, Myuu
The support channel
Support Discussion
ahh
only support peeps have access to it, so this makes sense.
I think you could request access
Not sure Button was angling for access XD
i dont hang out in or provide support in the support channels so its not for me
I was offered access despite not helping in support after I got mod author
Anyone know what method makes animals enter and exit the barns?
i think it was in animalhouse?
nop its FarmAnimal.cs
look for the places that call getRectForAnimalDoor
Cool thanks
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...
Isn't Gil's sprite painted onto the map?
Actually, wait, duh, I know how to solve this
pulls open SCA
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
Gil is just tile actions
either way, Gil's sprites are painted on the map itself with tilesheets, not a character
And animations
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 },
},
oh boy okay got it, thank you! I thought I was losing my mind a bit
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.
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
r there such thing as compat/translation layer for transpilers
thanks! I would find it cooler if I could get my Vita port to work but that's so so so much work that I am neglecting because I have university to fight :(
this might be the thing casey wants cecil for but i dont rly know whats up
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.
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
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).
Ask myuu! I'm just a dumb idiot who knits now
ok but this post-it note i got says you are "C# Consultant Stardew Aquarium, Visit Mount Vapius, and East Scarp"
(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.)
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
afaik cecil was wanted for harmony annotation* rewriters? i could be wrong as heck though
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.
... 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.
There isn't a point arguing this
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.
It will be cool if it happens
Anywho. Speaking of my own projects, is there a way to add a dialogue to only one character's dialogue stack?
i thought apple's black magic thing is proprietary
I'm not sure anyone here knows anything about it
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.
Apples black magic won't help you
They have specific x86- like instructions and x86 memory ordering mode
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.
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.
that didn't even cross my mind xd
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
the usual BETAS plugger lets you add dialogue via trigger action (also gets beyond spouse kiss dialogue)
oh hell yes
"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
I should've bought something more interesting than tlitookilakin.net
(no website there bc I have no hosting rn)
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?
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
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
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
though, button did put a morningstarted trigger 
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
hum, a silent fail flag?
Oh I've already kinda tried doing that, the problem is I need to dynamically determine whomst
ah
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,
},
},
},
It would be cool if there was a way for content packs to write arbitrary things to moddata
And read them later

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"
That would be nice
i mean BETAS already has harmonyCP, how much worse could it get
You could totally do a trigger action for it, the difficulty is determining the target
Yup. That's the sticking point right now
For monogamy, the target is fixed. For polyamory... the target is not fixed XD
ah
(Also for monogamy + roomies, but regardless!)
?
I'm unsure which of these would help
probably the BETAS/RelationshipChanged/Friendship one
since you said you already put in the friendship loss, yeah?
Yeah, but that's a moving target
oh wait not friendship value
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.
I actually like this idea tbh
For some reason
Trigger action writes to moddata
CP token reads moddata
Perfect for looks around button?
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
I legitimately thought I wrote a modData action already, so uh, maybe
where
some preview build 
I didn't, apparently, but it'd go in EMP
aw damn
you can already do counting with local stat incrementing, but yeah, not setting/getting text from data yet
It'll take about fifteen minutes to implement
(aside from very static mail flag stuff)
I just need a target
If you mean in game target, take Leah?
No. A preexisting mod that would accept that feature
Ahhhh gotcha
I'll make the bones of it presently regardless, that way I can just delete it after
content patcher tokens are not particularly BETAS's purview (but it does have GSQs to read mod data)
Which ones?
BETAS has no content patcher specific features at all, it uses the vanilla stuff only
button dont u pass stuff into triggers by putting it on mod data
(oh right, that's probably why I thought it was done already
)
well what if u just 
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
it wont solve the problem of knowing which flag to read, though
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?
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?
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)
you can place a fake item in like a chest on 0,0 of the farm map or something
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
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?"
BETAS game state queries support tokenizable strings
which might help
vanilla actions and queries dont, however
How so?
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
difficulty is that moddata is a moving target
in that about everything has moddata on it
(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
)
well, presumably the BETAS stuff would always only target one specific mod data
what about [ModData Character Leah ModId/FavoriteGift]?
likely either the farm or the current players mod data
yeah, that's a lot simplier
(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)
Just so I'm not misreading - I could delete the moddata at the next day's end, correct?
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
(there isn't! anything weird! about current player mod data.)
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.)
id probably add an optional argument to delete the mod data yeah
can you write to file? make a new txt to check
you could literally delete it immediately after reading it
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
something like
TriggerActions: [ "SetNewDialogue [ModData ModId/LastDate] \"I'm very angry with you.\"", "RemoveModData ModId/LastDate"]
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?
I'm pretty sure they can & it's just all net fields
the main farm instance, I think
id be surprised if they could write files and such though
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
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
I used to use it for something that I forgot 
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
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"
i dont think id want BETAS to give people access to the file system at all anyway
oh, okay
- More Fertilizers/GiantCrop Fertilizer wrote JA item ids into it for future migration (welp)
- A number of mods of mine track items players have ever received
- this bullshit: https://github.com/atravita-mods/StardewMods/blob/6484107b7f394c72fe9cbd4f370f05b997c607e8/AtraShared/MigrationManager/MigrationManager.cs#L17
the latter two are pretty similar to using modData, they just predate it, but modData is cleaner for things like this
that would have been Very Handy if I updated my mods, lol
i just mostly dont wanna be partially responsible if a mod fucks it up and does something wrong with an actual file lol
which makes full sense! 
same reason i thought about but then decided mostly against a console command action too tbh
getting ready to write a file with the filename ' ' <- yes just a space
pathos would hit you with a "really really really really bad idea"
(besides patch reload. ill probably still do that one)
yeah, my thinking with FTM originally was "if somebody fills the farm with permanent rocks or w/e, you can just delete /data/" 
I do four bad ideas before breakfast 
nowadays I'd probably just set up a clear command
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
dont even get me started if some other mod wants to do the same thing!
thinks about adding the tick trigger again
....why is Amazon trying to advertise laptops to me
does it know something I do not
(I am on Amazon buying running shoes.)
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
yeah, normal trigger action stuff is on an honor system, unless you somehow monitor data edits to see which mod did it 
all of data edits is on the honor system
you could maybe have some luck parsing it from the trigger ID, but yeah, thats not a guarantee either
which is why I'm introducing an item into data/objects that has all fields set to null
content patcher could enforce it if it wanted to 
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"
(fun fact: that schedule will no longer break shit.)
same a few times, whenever I haven't used it for a while 
game checks for that now
i could atra-proof my mods by specifically reading and modifying all the .json files inside mod folders whose unique ids start with atravita
well then that mod doesnt belong to atra does it
its atra proof, not mathperson proof
1000 is probably a conservative estimate for a spammy action. That's not even 20 seconds of play. In an hour of play, it could write over 200k files.
luckily i dont have triggers that can happen that fast
ah yes, that was the reason it was not fine
you could probably do one-second, huh
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)
User A uses your Harmony patcher to patch one of your own triggers to run every frame. User B creates a trigger action to write a file. User C decides that action should run on that trigger. User D reports it as a bug with your mod and demands you fix it.
brb adding a triggeraction to Game1.LoadString
im unsure how a user would patch a trigger to run every frame, but if they did, i think id be impressed
Me: oh god what kind of person would let content packs just add actions that run every tick
Past me: https://github.com/KhloeLeclair/StardewMods/blob/main/CloudySkies/author-guide.md#trigger
anyways
I would probably say the same thing hypocritical thing today about using publicizer to mess with the private state of someone else's mod.
every tick I want a triggeraction that searches the entire world for a teacup
trigger actions can have game state queries attached!
(I think.)
I'll go do my atra-is-wrong-again penalty pushups
They can
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.
Data/TriggerActions lets you specify a condition for a trigger to run.
Even better if you can write a mod that blue-screens the player.
Clearly, someone needs to write a mod that hooks up stardew to your phone step tracker
And there's the If built-in action.
trigger actions even have 2 gsqs now, with SkipPermanentlyCondition 
which I had to look at in Content because it's not on the wiki yet
should be on the migrate page
I should revisit HyperGameQuery when my PC is alive again
do you want smapi marked as a virus on EVERY platform?
just the ones that dont matter
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
well mac already did that without us interfering 
I don't think SMAPI could get blacklisted for one mod doing that.
(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)
Also add one to unpatch. That way, users can add conflicting triggers that try to patch and unpatch on the same frame.
also, frankly, it's dirty easy to make a mod that crashes smapi on macs
I can even do it from a content pack
Oh? Color me skeptical. Crashes the game, maybe, sure. Eats up memory, sure. But crash the entire machine?
Ahaha, nice stealth edit there.
(it's a skiasharp issue)
But BSODding (or Mac equivalent) is a world apart from crashing the game.
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 😛
speaking of malicious code, I wonder if layering sound effects still makes them louder 
oh!
that's also a fun way to crash teh game
my harmony patch feature in BETAS isnt limited to SDV code, so...
I had an old note to let people trigger sfx, but I'd have to safety check that
It does, but I wouldn't consider that malicious?
find the right System.Whatever function to change the return value of
wait, you can ...
change return values with that?
intentionally playing the same effect 99 times to make it max volume, which can be pretty awful
You can!
huh.
yeah, you could be malicious with that if you wanted
I guess so, but you can only go as loud as the OS will allow the game itself to go.
got it
bools, numbers, and strings
patching GL.BindTexture
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"
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.
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)
yeah,
when at one point i was creating new render targets on... most frames and forgot to dispose them, after a few minutes i brought my entire computer to its knees and had to hard power off, which is effectively a bsod
there were other colors involved
Sure is fun saturating the GPU
Definitely have to be careful with render targets.
ominous
Other colors like superviolet, actinic, octarine, squant, and purple.
purple? digging deep for that one are we
i like the sound of superviolet
(so the ubuntu death screen color?)
i want that as a role colour
In general it's pretty hard to BSOD without kernel level access, though; you'd most likely have to exploit some security vulnerability.
you have a pretty role color
my role colour is not pretty
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");```
anyway i forget was i supposed to add the mod data trigger action stuff or was esca doing it
I mean they recently changed the audio backend entirely
yeah, whatever changes happened fixed it just multiplying the volume, at least
idk if we came to a specific conclusion, just that atra might write it and send it somewhere 
guess ill open up rider
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)
a CP token for it would still be useful, since i will not be doing that
not personally familiar with tokenizeable strings though
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
I loved that the 1.6.9 changelogs briefly had "updated FAudio version to fix bugs" followed immediately by "migrated from FAudio to OpenAL" (paraphrasing)
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
they are usually only used for user-viewable strings right
yeah pretty much
all the [LocalizedText] stuff in Data/Objects (for e.g.) is tokenizable strings
do you know if there's an easy way to check the category number of an item? Like how you can you use console commands in order to check the id of an item. I want to see if I can look for all items in the game that have a certain category number
just item.Category
(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)
(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)
oh right, yeah, it has a read for players 
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
They can write to their current location
And also any activley synced locations (like farm)
They can always write to themselves
im mostly concerned with whether they can write to another player
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
Writing to other players I've always had questions about
According to myuu, players can only write to themselves
like if i do WriteModData Host Key Value, would that work from a farmhand
yeah, I'm not sure if players always see each others' instances or not 
id assume they cant
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
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.
alrighty, then i will go back to just having this mod data action only write to the current players mod data always
hmm I was under the impression modData is fine, it's stats that you can't touch other player's?
Thing that works (somehow?) Changing another player's active conversation topics
the thing with stats is they dont get synced i thought
then again I never tried writing, so don't follow my advice
til the end of the day
Stats is the worst of all of them
though the IncrementStat action doesnt let you specify a player so
Not only you can't write to another player, you can't even reliably read another player's
apologies, I'm not sure what problem you're having here?
It's only synced when the entire farmer instance is thrown into xml and synced
stats are loaded from save but not actually a net field, was my latest understanding of it, yeah
Which is load game, every night, and a hail Mary when a player disconnects
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
your playerstat token still frightens me
for the same reason my CMCT dynamictoken token frightens me
always saying "yes i have an update" 
did your fear ever stop you from doing crimes
(is it write-blocked? I wanna test, but I'm sooooooo lazy)
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...
I haven't actually tested it, but from what atra said, probably? there're some checks in Farmer inventory net events for local player and such
It's less "write blocked" and more "you can write it but it will be overridden when synced"
Tbh on a personal level it makes sense
I don't want other people stealing fork my inventory
just kick em and speedrun to lewis
(speaking of my stat token, I wonder if it'd be worth it to loop through the dictionary to see if any fields changed
)
(it's not a net field, so reading it doesn't cost much, but foreach-ing on SerializeableDictionaryWithCaseInsensitiveKeys might)
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
...right, yeah, I may as well assume that has changed 
You could recall the last time someone has checked the token
thank goodness, because I forgot to add a host-only check in Fresh Farm Produce (I save a field to the host farmer)
(tbh id be fine with playerstat being a vanilla CP thing if it excluded stepsTaken. who needs to check that in a token anyway)
I guess I could cache which stats mods are actually looking at, and just check those
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}"
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
}```
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
I think I did that in the other one for GSQs, which does actually check
I think you would want to read the raw data for that
ah got it
to get all items with a certain category you'd do something like iterate over ItemRegistry.GetObjectTypeDefinition().GetAllData(). this doesn't create an instance for each item, just its data, and there's a category field
Couldn't you also just do Game1.objectData
Iterate pairs and filter based on category field?
there's so many ways to get object data I legit forgot that existed
(really though what i actually wanna fix somehow is my dynamic token so that i dont have to return true either, but ive been at a complete loss for how to do that for months... rip)
var allInCategory = Game1.objectData.Where(p => p.Value.Category == MyCategory).Select(p => p.Key);
More or less
thanks
Clearly just patch gmcm's save button to...(don't do this.)
these are dynamic tokens! thats content patcher
the problem is with detecting when someone elses dynamic token has changed
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
CP will only propagate asset if the value of the thingies changed
i got it semi functional at one point but my token lagged one update check behind and that was more unacceptable to me
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
need an UpdateUpdateContext method pathos pls
UpdatingContextInASecond()
HoldYourHorsesUpdateContext()
are u ppl trying to turn SDV into a database 
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
if someone ever needs it maybe
i do want to leave myself open to add a like. AddToModDataList or something action too
should keep player then
so you can turn one mod data entry into a list of entries
instead of simply overwriting
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
does farm animal gender do anything
like, functionally, or visually
either
changes some strings
as far as i know it literally just changes pronouns in some dialogue boxes
~~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
wheres the farm animal gender neutral mod
being hungry doesnt care about gender
my cow deserves doors
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)
@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
(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)
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,
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 
tbh.. i kinda doubt most people are really using a lot of the tokenizable strings in the first place lol
yeah, people adding new data entries usually seem to ignore it, at least
the only one i ever see is LocalizedText
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 
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)
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
it's difficult to log that kinda thing without accidentally taking ownership of other random text
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
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
was just looking at my mods, doesn't Lasting Conversation Topics somehow do the thing you guys are talking about/ just implemented?
as far as I know, conversation topics are similar to mail flags but with timers, rather than being arbitrary text in a specific place
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
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
the problem was that there was no way to have specific text to check for
hi gang long time no see 
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)
Oh I get it now
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-editdata.md#target-field
you'll want to look at this to both edit the specific entry in the Desert Shop's Items list and/or delete it from that list
Thank you button !! im gonna dive in 
assuming its i18n for the CP portion, it goes in the CP folder
otay!
I'm very frustrated with Pierre right now
I very specifically told him: "CanVisitIsland":"False", and here he is at the resort in defiance
womp womp
Did you tell him yesterday/is he there after a sleep?
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
Schedule changes take one sleep to happen, so...
so are you saying it wouldn't help to try changing the update rate, that he'll be wonky for a day regardless?
yeah it won't matter if you tell him same day if his schedule was already decided
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
Tempted to make a timelord 2.0 greenhouse...EVEN LARGER greenhouse...
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
)
How do I make it so my NPC has a unique Dialouge for a specific gift given to them?
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!
Off the top of my head I can't think of anywhere the game reuses any of that stuff, no.
did a file search, nope that's the only place
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
Making mods can be broadly divided into two categories:
- Content packs are formatted text files, and don't need any programming knowledge. They can add/edit NPCs, maps, new items, shops, and more. To get started, see the list of framework mods, the wiki tutorial for Content Patcher, and there might be relevant guides on the tutorial wiki.
- C# mods use programming code to change fundamental game mechanics. See getting started with C# modding.
Usually it’s easier to start with making content packs, since you don't need to learn programming.
Here are some links for event-specific modding (be aware that some of these tutorials are older so their advice might not be current best practice - like if they recommend your event IDs are numeric instead of strings): https://stardewvalleywiki.com/Modding:Event_data, https://stardewmodding.wiki.gg/wiki/Tips_for_Heart_Events_-_Writing_and_Narrative_Design, https://stardewmodding.wiki.gg/wiki/Tips_for_Making_Events_by_Arknir, https://stardewmodding.wiki.gg/wiki/Tips_for_Making_Events_from_a_Novice_by_LenneDalben, https://stardewmodding.wiki.gg/wiki/Tips_for_NPC_Movement_in_Events, https://stardewmodding.wiki.gg/wiki/Tutorial:_Anatomy_of_an_Event, https://stardewmodding.wiki.gg/wiki/Tutorial:_Creating_an_Event, https://stardewmodding.wiki.gg/wiki/Tutorial:_Events_For_Babies, https://stardewmodding.wiki.gg/wiki/Events_for_Everyone
(Avi, I didn't link to yours because of it being more advanced.)
You're also welcome to ask more questions in here, or join us in the NPC thread or the creative writing thread. https://discord.com/channels/137344473976799233/1277457201077813280 https://discord.com/channels/137344473976799233/1263202101803352106
!makevents (Hey Aba, we've got a bot command for those
)
...and it would be great if I spelt said bot command correctly 
!makeevents
This is a compiled masterlist of event-making tutorials. If any more are made, feel free to add them into this command!
Arknir
Tips n Tricks
NPC Movement
CG Events
Thylak
Events for Everyone
Meeliebones
Narrative Writing for Events
LenneDalben
Tips for Novices
SMC's Funniest Home Skits
Anatomy of an Event
Lemurkat
Creation and Story
Code Breakdown
Skellady
Events for Babies
Aviroen
Final Boss of Events
hi howe to fix this?.I try verify integryty but its not working
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 )
(and for modded support you can go to #1272025932932055121 )
XNB mods often break the game and are not recommended. See:
- using XNB mods for more info and a list of Content Patcher alternatives;
- reset your content files to fix problems caused by XNB mods.
For mod creators, see editing XNB files for help unpacking & editing them (including for use with Content Patcher).
(that wasn't the zola one, but i assume it'd be a playing-with-mods thing)
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
not without C#
nope!
it's giga hardcoded
Nice! I wondered if maybe one had sprung up but I couldn't be bothered to go looking for the bot commands haha
and I don't say that lightly
Damn, was fearing that was the case
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?
Right! Thanks
thanks selph
I learned how to create a custom trigger in C#
for rings to work even when unequipped
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
!startmodding are you following the C# guide
Making mods can be broadly divided into two categories:
- Content packs are formatted text files, and don't need any programming knowledge. They can add/edit NPCs, maps, new items, shops, and more. To get started, see the list of framework mods, the wiki tutorial for Content Patcher, and there might be relevant guides on the tutorial wiki.
- C# mods use programming code to change fundamental game mechanics. See getting started with C# modding.
Usually it’s easier to start with making content packs, since you don't need to learn programming.
building the project should do it
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 
yeah that should work fine
(I was about to say "wait they do?", then the realization hit me)
CA doin an oopsy funny with the raccoon 
Alternatively, go the other way and make the raccoon deliberately insult you 
Randomised insults in various languages
"Here's your smoked fish!"
"thanks dipshit"
Putting the "trash" in "trash panda"
