#making-mods-general

1 messages · Page 147 of 1

desert crane
#

Whats that?

#

I think its FTM

#

I mean the mod for meteorite is ftm

#

The map is with tiled and use CP

tender bloom
#

Ah, I mean that the paths layer doesn’t regenerate unless you reset terrain features

#

!rtf

ocean sailBOT
#

Reset Terrain Features (https://smapi.io/mods/#Reset_Terrain_Features) is a mod that lets you reset, clear, or generate everything that spawns on a map using an in-game menu. That's especially useful when changing maps mid-save, as the debris will otherwise use the old layout (causing things like trees in the water or bushes blocking exits).

desert crane
#

Not sure this is what I need. This is gonna edit the file. I need that to never happen when starting the game at all

tender bloom
#

I’m very confused—unless you’re making a new save, your first attempt at the Paths layer in Tiled is sticking around

#

And if that included a weeds, you get weeds

desert crane
#

No I make a new save at each try

#

Now I moved the stuff and still do like this, but with other stuff

tender bloom
#

Ah, I see—yes, then you don’t need rtf

desert crane
#

I think they can spawn anywhere free in the map, and since I need those space free to let the metoerite spawn, I need to elimitate te properties that make this happen

calm nebula
#

Esca would know for sure but I thought there was a way to have ftm place a meteorite even on top of things

desert crane
#

@royal stump You know anything about this problem?

tender bloom
#

It’s in the documentation

#

No need to ping esca

vernal crest
#

Especially not on Christmas!

tender bloom
#

It’s the settings on how much the checks are strict about

desert crane
#

Oh I put medium because this was the setting on flashshifter mod. I put it back to max and try

#

Thank you!

#

And sorry for the ping

tiny zealot
#

hey could a few more people download my (excellent) mods, please /j

desert crane
#

You maybe also know why this mod create a folder with the save data inside the mod folder itself?

#

Like this

#

It's normal?

desert crane
calm nebula
desert crane
#

By the way I fixed the spawning thing right now. I put strictness to NONE. Now the stuff still spawn, but above the meteorite, which is still ok

gentle rose
loud trench
#

How does one make a mod for clothing?

deep cypress
#

WHat type are you trying to make?

#

Mostly, though, you will make it using Content Patcfher.

#

!cp

ocean sailBOT
deep cypress
#

You will edit the specifc data of where you want to make it.

versed wyvern
#

Is it possible to insert a new once-a-week routine into NPCs' schedules? I can barely find anything on schedules and it's looking like I have to alter their entire schedule which sounds like a compatibility nightmare

tender bloom
#

Yes, you can

#

You’d use EditData to add a schedule entry

#

Like “Monday”

#

Keep in mind schedule priorities

#

There’s also heart levels

versed wyvern
#

It's priority I'm concerned about, wouldn't adding an entry slot it in at the bottom, which means their default routine takes priority?

tender bloom
#

No, the wiki page on schedules says the priority, based on the key

rancid temple
#

I believe the order is the order it's listed on this page?

versed wyvern
#

Oh, is that order also their priority order? I was under the impression it was simply a list of keys and their ordering in the json determined the priority

rancid temple
#

The order on the page is their priority, regardless of the json organization

uncut viper
#

their schedule is a dictionary, there is no actual order

rancid temple
#

Day of week is relatively low on the priority

vernal crest
#

Content patcher patches are done in order of position on the json file, but the game's data is not, AFAIK

versed wyvern
#

Ahh, okay, I missed the important line "If multiple schedules apply, the first match in the order listed here is used."

rancid temple
#

Depends on the specific data, like shop Items is ordered

versed wyvern
#

Thank you, that clears up a lot RemFive

rancid temple
#

So if you want to move an entry that you've added to Items you have to use MoveEntries

calm nebula
#

In general, lists are ordered

#

And dictionaries are not

#

Please do not tell me about the outliers

vernal crest
#

Oh yeah I forgot about shops

rancid temple
#

The real problem is that most people who just do CP don't know the difference

#

Square brackets just look like square brackets

vernal crest
#

I find it really difficult to tell the difference for Stardew, yeah.

#

Everything in Stardew looks like it has a key to me

uncut viper
#

thats content patcher to blame, to be fair

rancid temple
#

The wiki and docs are decent about marking the difference but honestly I usually just keep track of which ones are ordered and not individually

uncut viper
#

list items dont have keys if you're working in C#

vernal crest
#

I would blame CP but I also can't tell in the game files

#

Unless they are just set up that way because that's how Pathos made the unpacker (it was Pathos, right) in which case I blame him lol

uncut viper
#

no it pretty much matches the C# classes

versed wyvern
#

This is gonna be my first attempt at writing an NPC schedule and I can tell this is going to be painful despair

uncut viper
#

telling the difference would then just be a json thing

#

yobaspeed SDVpuffersalute

rancid temple
#

I think schedules are more straightforward than events

#

Though harder to test I guess

vernal crest
#

Use fast forward to zoom them around

rancid temple
#

Need a mod that lets you forcibly change an NPC's schedule

tiny zealot
#

the worst part of schedules is you need to install fast forward (or make it) so you don't have to wait soooooo long

vernal crest
#

Also that "go to your next schedule point" command blueberry (I think) told me about

rancid temple
#

debug hurry?

vernal crest
#

Yes probably

#

I can't risk opening Firefox to check lest it makes poor Indy lag

#

It was really helpful when I had to test the same schedule point over and over again

calm nebula
#

Yeah I'm gonna lift Gima's schedule tools into event testee

#

Probably won't make the next release

#

But eventually

#

I'm thinking of automatically pathing the farmer too

#

Behind the npc to follow

#

At like 7x speed

vernal crest
#

Oh that would be handy because I can't use fast forward very fast because I run into things

latent mauve
#

Friends, I could use some help figuring out which category to add my NPC Apartments mod in

#

Modding Tools? Modding Resources? Maps? Locations? Something else?

#

It is a location that allows mod authors to put NPCs inside it

vernal crest
#

Locations would be where I would look for it first

uncut viper
#

buildings, maybe
i dunno i literally neveru se nexus categories

calm nebula
#

I play some tricks on farmer speed to make it easier to control

#

(I believe it is both a console command and a chat command, Event Tester.)

vernal crest
#

I think yours is the one that I can't control my farmer while using, let me double check though

calm nebula
#

I only added the farmer movement in the second to last version, it wasn't there originally, but I can tweak it moee

vernal crest
#

Hmm I have yours installed but I don't think I have actually used it, because it's the other one by ch20youk that I run into stuff with.

#

Because I haven't actually tried to use any version of fast forwarding on purpose yet, I just keep accidentally hitting the hotkeys for ch20youk's one lol

calm nebula
#

Yeah, mine is very much not advertised lol, that mod has now become "suite of debugging tools the mod"

#

It's accessed via either console or chat command, and I basically repeatedly reset the farmer movement so at most they are going 3x faster

tender bloom
#

So GIMA 2.0? SDVpuffersquee

calm nebula
#

This one is more sane though

#

It is, on the tin, suite of debugging features

#

It has no effect whatsoever unless you use one of the chat or console commands

latent mauve
#

Okay, well, supposedly my mod is up on NexusMods now! 😄

calm nebula
#

(It doesn't even hook events unless you use a command!)

vernal crest
#

Hm, the config for the copy of Event Tester I have says there is a FastForwardKeybind of K. Does that mean I have something old?

calm nebula
vernal crest
#

It's sinZandAtravita.SinZsEventTester version 0.1.6

calm nebula
#

Yeah, there are three ways to activate it, lol

#

Sorry! K was supposed to be out of the way

#

(And if you don't get a Nexus update alert it is the latest version, I'm pretty anal about keeping that straight.)

vernal crest
#

No no, it is out of the way! I have never accidentally hit yours.

#

The one by ch20youk uses tilde so I was hitting it all the time because I have a tiny escape key and giant tilde key lol

calm nebula
#

Keyboards, man

vernal crest
#

Lol

versed wyvern
#

Just to be sure... NPCs use their rain schedule when the weather is Stormy, right?

#

Setting up some outfit conditions and I just wanna be totally sure I'm not accidentally sending anybody out to the Beach in their swimsuits during typhoons shockedpeko

peak furnace
#

is there a way to add new furniture but only appear in shop (not in regular Furniture Catalogue) ?
I've tried to add furniture in Vendor from desert festival but its keep appear in regular Catalogue

this is the code

"guxelbit.KNTL.testtest55": "guxelbit.KNTL.testtest55/decor/1 1/1 1/1/0/2/{{i18n:testtest55}}/0/Mods\\{{ModId}}\\furniture_kntl"

and I'm adding this

{
    "Action": "EditData",
    "Target": "Data/Shops",
    "TargetField": [ "Vendor", "Items" ],
    "Entries": {
        "guxelbit.KNTL.testtest55": 
            {
            "Price": 500,
            "AvailableStock": 1,
            "Id": "guxelbit.KNTL.testtest55",
            "ItemId": "(F)guxelbit.KNTL.testtest55",
            "Condition": null
            }
                    }
}
brittle pasture
#

adding /true at the end of the entry should do it

tender bloom
#

For an example, my Magic Furniture mod isn’t sold in catalogues

#

(It’s too magic for that SDVpuffersquee )

peak furnace
#

thank you! I thought there's something with the Vendor code

versed wyvern
#

Hmm... does anyone know where the Ginger Island schedule files are located? I'm trying to reproduce the GI beach animations but I'm having trouble understanding the syntax described for animation in https://stardewvalleywiki.com/Modding:Schedule_data as the presence of quotations doesn't seem to be allowed

brittle ledge
#

IIRC you just set the right name for the schedule animation and the NPC will do it there

vernal crest
#

Yes you can give them schedule animations and dialogue keys for GI but you can't actually give them schedules

#

I am pretty sure the GI schedule stuff is all hardcoded

versed wyvern
#

Ohh, wait, I see, that example is how to add a key to the animation descriptions file, not how to play it in the schedule

vernal crest
#

Try looking at a vanilla NPC for how their GI stuff looks

brittle ledge
#

I think you just need a regular schedule animation named NPCName_beach_thing

#

where thing is the types of animations, e.g., chair

#

Not sure how many are vanilla though, GIMA added more but I'm not positive which ones

oblique meadow
#

So for a long time I questioned why people would make mods for free for games. Then I made one… and got this comment. Aaaaannnndddd I get it now haha

rancid temple
#

The duality of users

#

"This is broken, no I won't post a log"/"Is this compatible with SVE?" <---> "I love your mod, thanks for making it"

oblique meadow
#

Yeah. But I’ve worked customer service long enough you realize anyone can complain in the moment. It’s easy. Those that take the time to be kind and give a compliment…. That takes more effort and has a little more weight.

vernal crest
#

I think many of us also just really want to create for the sake of the joy of creation/learning/challenge. And then once you have made something, why not share it?

rancid temple
#

I only started modding because I wanted to update some mods I wanted to use, share it because I can but don't actually care if anyone uses them

vernal crest
#

That being said, the few compliments I have received on my mods (one of the best of which was actually from rokugin haha) have definitely been contributing factors to wanting to continue.

oblique meadow
#

Funny enough. I started because my girlfriend and I liked like… 90% of mods. And had parts we didn’t like. So I just wanted to learn how to tweak for our personal use….. and now here we are

vernal crest
#

I also started by editing mods I was using and then progressed to "there is not a mod for this, I guess I will try to make one".

#

Mind you I haven't actually done that much yet. I talk a bigger game than I play lol

light jasper
#

I started because UIInfoSuite had a broken cloud texture and that bothered me
now all the old maintainers don't have time and I'm rewriting the mod basically from scratch SDVpufferdizzy

#

going on 3 years modding now lol

haughty charm
#

Hey, y'all. I'm trying to figure out the base sell price of cooked or crafted items. If I understand correctly, the "price" set in the objects.json is a placeholder. So looking at the code, the sell price would be the base price of the ingredients multiplied by the quality and any specific multipliers and/or difficulty modifiers?

Assuming base quality, no custom modifiers and default difficulty, that would mean base sell price is base.Quality * 0.25?

#

(for reference, looking at sellToStorePrice in Object.cs)

rancid temple
#

Cooked and crafted are always normal quality (without a mod to change that), trying to remember if there's anything else that modifies cooked or crafting items sell price

#

I don't think there is, pretty sure their sell price would just be whatever the Price is in the data

haughty charm
#

Yeah, that's where things get funky, because the item data is all the same, but in-game it's very different.

#

by the same, I mean, the objects.json lists price as 100, but when you actually make the items in-game, the price is very very different

uncut viper
#

does qi seasoning affect it?

rancid temple
#

I don't think I've ever used it lol, not sure what it even does

#

Oh it bumps it to gold

#

So that would give the quality modifier at least

haughty charm
#

Qi seasoning increases the sale price, yes. But I'm just trying to find a way to calculate prices without having to make all 1 godzillion items

#

So if I knew that an item was 1 cherry, 1 orange, and 1 wheat, I could calculate off their individual base prices multiplied by whatever

#

It's just the "whatever" that I don't know

rancid temple
#

What's the terrible menu everyone has to patch

#

clickCraftingRecipe?

brittle pasture
#

it's base price * (1 + quality * 0.25), with quality being 0 for normal, 1 for silver, 2 for gold and 4 for iridium

#

and food item uses the exact price as set in the object data

inner harbor
brittle pasture
#

there's no rhyme and reason to food prices really, in vanilla everything is set by vibes

rancid temple
#

It'd be great if everything was calculated based on its parts

latent mauve
#

The only other thing to check should be if the shop has a PriceModifier entry, I think?

rancid temple
#

Do PriceModifiers affect selling to a store though?

haughty charm
#

Thanks, Selph. Something is weirdly off, then, because the mod-added food item has a "price" set at 100 but when you sell it in game it's more

#

Normal quality, no price modifiers, default difficulty

brittle pasture
#

hmm which item? maybe some other mod is affecting it?

haughty charm
#

When I built out the WAG wiki, for example, Flour and I had to make every single item to get their base sell prices because the object data price was just a placeholder. That's how it was explained to me

rancid temple
#

Hm, I just crafted a Void Delight from SVE, it's Price in the data is 800 and the item I got upon crafting is worth 800, about to go sell it

brittle pasture
#

ok, so machine items can have their price dynamically set by the machine rules

#

cooking and crafting should use the price in Data/Objects

rancid temple
#

Sold for 800

brittle pasture
#

WAG mainly uses machine rules with dynamic pricing depending on input

rancid temple
#

Ah

#

That would certainly make the Price a placeholder

latent mauve
#

Yeah, machines are their own beast with pricing output

haughty charm
#

Most of WAG is that way, yes, but there are cooked items and items made in vanilla machines that didn't have dynamic pricing

brittle pasture
#

do you recall what the item is?

haughty charm
#

I don't off, the top of my head, sorry! I've been swimming in data from other mods

#

But it does sound like I have more digging to do if the price in this particular objects.json is not what it actually is, that means something else is affecting it

rancid temple
#

If you come across it again, it might help to narrow down the issue

haughty charm
#

Absolutely. Thanks for helping me understand things!

wide flint
#

Where are custom animals added by CP mods stored? I found FarmAnimalData but the description says it only contains Data/FarmAnimalData which is the vanilla data only.

rancid temple
#

CP adds things without changing the base files

#

So while the game is running, they're part of that content asset in the pipeline

#

If you're trying to edit another mods added animals, you would write your patch as if that data did exist in Data/FarmAnimalData

wide flint
#

I just want to access it, no editing

rancid temple
#

If you just want to see what they have set then you would check their CP files that they shipped

wide flint
#

Let's say there's 5 CP mods that add custom animals. I would like to be able to loop through them

#

So there's no way around checking the specific files?

brittle pasture
#

this is C#?

wide flint
#

yes

brittle pasture
#

Game1.farmAnimalData contains all animal data, vanilla or modded

wide flint
#

Oh, then the description is misleading. thanks

brittle pasture
#

what those animal mods do is add their own entries to Data/FarmAnimals

#

from the game's perspective there is no difference between "vanilla" and "modded" animals

wide flint
#

CP mods add their entries to Data/FarmAnimals? Didn't know

brittle pasture
#

CP mods can add entries to any vanilla game assets

#

(or even make new assets, but that's a story for another time)

wide flint
#

That just made life so much easier. Thanks

tawny ore
#

You can’t edit Game1.farmAnimalData and have your changes stay since game data can be reloaded at any time

wide flint
#

Just need the data, no editing involved :)

inland cedar
#

umm is faux core down?

velvet narwhal
#

last time i checked, no?

#

and that's on the .15 ver

rancid temple
#

Seems currently hidden on Nexus

velvet narwhal
#

oh

rancid temple
#

Maybe the vitriol spilled over from Better Chests

velvet narwhal
#

think_eyes it redirected me to moddrop, i know matt stopped support on better chests so maybe they're dropping support on-- yeah

lucid mulch
#

oh I didn't see the timestamps, that convo was a lot longer ago than I thought

#

one day I'll make infographics to explain how the asset pipeline actually works

astral prism
#

merry christmas folks :)

tame anchor
#

The custom NPC I added will not act according to the schedule in the old archive, but it can act normally in the new archive, please ask why

fallow musk
#

is there a way to store and update persistent data which is to be used by a mod?
Im trying to make a mod which rewards giving variety of gifts instead of just the same gift everytime. but for this, i need to store a history of gift given, even after the game is closed and reopened

#

first thought was to use an asset file and update it during run time

#

wanted to know if theres a better way

#

also will need to figure out a way to differentiate different saves

tawny ore
#

Lots of ways tbh. One thought comes to mind for me would be to create a global inventory per npc and store a copy of items given in there.

#

A global inventory is like an invisible chest.

#

So you can tell what items were given and how many of each.

#

They’re unique to each save, saved automatically, and are easily accessible data

#

If you use a unique id it should be ignored by vanilla and other mods like “YourModId.NpcName”

fallow musk
#

oh i see,, thanks

versed wyvern
tame anchor
#

I'll try. Thank you

high maple
#

Hello! I put out an update for my mod on nexus and some users have been reporting that the mod wont load and the console gives an error saying that "its DLL couldn't be loaded." Its strange because on my end the mod loads fine and in the bug reports, the mod loaded fine for one user's friend. I'm confused on whether its an issue on my end or the user's end. If its on my end, what would I need to do to fix it? If its on their end, what do they need to do to fix it?

tawny ore
#

The log with Trace enabled should help indicate why it’s not being loaded. Also make sure they are running it on a pc with the correct version of SDV+smapi.

#

I’ve seen people neglect to share they’re attempting to run my mods on Android which I haven’t tested compatibility with for example

high maple
#

but it seems without the refrence in there, things break.

tawny ore
#

I’ve done that before. That’s an unintentional hard dependency.

calm nebula
#

Merry Christmas!!!

thick pelican
#

for christmas. i might update "alex is troy bolton" to have the sharpay haley as requested once.... i just gotta remember where the files are

tight rivet
wanton pebble
#

Merry Christmas/Happy Feast of the Winter Star!

tight rivet
#

You know. As much as I want to know, maybe I don't want to know.

#

Back to puzzling over this mod

patent lanceBOT
#

@calm nebula: add whatever example that was on the wiki (4d ago)

wide flint
#

Is there a way to determine which Mod added an asset? Doing edits on Data/FarmAnimals in OnAssetRequested.
Or something like author or uniqueID of the mod?
FarmAnimalData doesn't seem to provide anything like that.

calm nebula
#

Not really no

royal stump
#

There's no built-in way to do that, no. Most data assets have unique keys that mods should prefix with their ID, but they don't necessarily have to, and asset entries aren't otherwise tagged with whatever added them

calm nebula
#

And no good way to find out without reflecting the hell out of smapi/CP lol

wide flint
#

me sad

royal stump
#

yeah, it'd probably end up being "Harmony prefix every SMAPI asset event" if you really needed the info

#

even then, CP would be even more complicated

calm nebula
wide flint
#

Haven't figured out a way to do it without that information.

Let's say a CP mod adds an animal with 3 colored variants. Usually there's only one shop option available which gives you a random variant of that animal.
I want to make all variants available in the shop and mirror the price of the default one.
The only thing that somehow/sometimes matches is a part of the DisplayName. But can't really rely on that

tawny ore
#

Might need manual overrides or an opt-in system if you don’t want to get too complicated. There is a variants field in the FarmAnimal data model. Maybe it should only work if the model provides that info.

#

Then “adding support” is just updating that field

royal stump
#

yeah, the game itself seems to pick randomly from among that AlternatePurchaseTypes field, so you'd probably just want to try and change that from "add one random variant" to "all variants", and ignore mods that just add entirely separate but similar animals

wide flint
#

Oh, that actually helps! Randomly checked some of the CP mods I use for debugging and they all provide AlternatePurchaseTypes. Can just compare the requested asset with that list

wide flint
#

Maybe I'm blind or what am looking for doesn't exist.
AlternatePurchaseTypes contains the IDs of all variants but FarmAnimalData itself doesn't expose them?! There's only DisplayName but that's not the same as the Key/ID.

calm nebula
wide flint
#

Just figured...

calm nebula
#

Tbh I have no clue how that menu works lol

#

Just that every animal is secretly a chipped amphora

hard fern
#

It's a what

novel garnet
#

Can anybody explain what is causing the non-green pixel on top of the shoulder, I'm currently using a FS mod if that helps

#

Haven't been able to find the part of the code that causes it

drowsy pewter
#

In today's context tag shenanigans

#

Apprently CA used food_pasta to just denote any vaguely italian food

#

for example

#

spaghetti is pasta
eggplant parmesan is pasta
bruschetta is pasta

knotty phoenix
royal stump
# hard fern It's a what

these SDVkrobusgiggle
I didn't know until now, but uh, yeah: Utility.getPurchaseAnimalStock fills the shop by making objects with ID 100 (so those), overwrites their name with the animal's afterward, etc
i.e. weird roundabout logic to make a shop sell animals

tender bloom
#

Bruschetta who knows

calm nebula
#

(it's relevant because in the 1.6 alpha for a while, the game was also overriding all animal purchase prices with 2x the price of chipped amphoras.)

#

I love how bonkers the game is sometimes, never change

royal stump
#

SDVpufferheart yeah, figured it probably came up at some point with string IDs or something

drowsy pewter
#

risotto

#

has the pasta tag

#

that was the most egregious one and I forgot it

royal stump
hard fern
#

SDVpufferflat it's all pasta

gray bear
#

that doesn't look right thonk

rancid temple
rancid temple
tiny zealot
tawny ore
# tight rivet o.O

It's not even that bad. It's just that it was impossible to make anyone happy. Every update was met with comments about how the mod used to be better, it's broken now, and that they're switching over to X mod instead. So if people prefer every other mod to Better Chests, then why should I pour weeks of development into it when I'm not even getting any satisfaction out of it anymore.

serene tapir
#

I'm really sorry people weren't more supportive of you Matt, you deserved better SDVpufferheart I know I personally won't be looking at alternatives until better Chests is entirely unusable. Full respect for you taking it down, but it'll definitely be missed

opaque cobalt
#

Do I need target all on one line or does it work with a line break to make it easier to track portraits vs. character sheets?

    {
        "LogName": "Load Penny's Outfits",
        "Action": "Load",
        "Priority": "High",
        "Target": "Portraits/Penny_Spring, Portraits/Penny_Summer, Portraits/Penny_Fall, Portraits/Penny_Winter, 
                Characters/Penny_Spring, Characters/Penny_Summer, Characters/Penny_Fall, Characters/Penny_Winter",
        "FromFile": "assets/{{TargetPathOnly}}/Penny/{{TargetWithoutPath}}.png"
    },
gentle rose
royal stump
royal stump
sullen sun
#

Hey friends, anyone who's got any knowledge about Content Patcher and adding crops; what's the proper path to use to make sure the modded crop tileset is used from my assets folder? Since moving over to CP I can't get either "assets/crops.png" or "Mods/{{modid}}/assets/crops.png" to load the correct sheet.

brittle pasture
#

you need to load them into an asset name first

#

use the Load action to load your assets/crops.png into an asset named something like Mods/{{ModId}}/assets/crops.png

#

that second string is what you use in the crop data

sullen sun
#

I do have it loaded already

brittle pasture
#

can you post your code then?

sullen sun
#

Just so I don't need to run the whole page over here

#

And one of the crops which isn't working.

#

One final note the objects file loads just fine.

brittle pasture
#

you loaded into Mods/DomTSVG.PlentifulHarvestCP/Crops

#

but you're using Mods/DomTSVG.PlentifulHarvestCP/assets/crops.png in your data

sullen sun
#

Oh my god you're right

#

Thanks

opaque cobalt
#

Also, for weighting outfits since I want three per season, does this look correct?

"{{ModId}}.PennySpring": {
"Id": "{{ModId}}.PennySpring",
"Condition": "SEASON spring",
"Sprite": "Characters/Penny_Spring",
"Portrait": "Portraits/Penny_Spring",
"Precedence": 1,
"Weight": 1,
},

calm nebula
#

what

tender bloom
#

O.o

calm nebula
#

I just compiled that too

#

I'm using an ancient version of both game and smapi so I guesss I do updates now

serene tapir
#

So if im using mail flags to check for cc / joja complete, and I only want the edits applied if they went for the cc route, can I just use IsCommunityCenterComplete or do I need to specify jojacomplete = false?

calm nebula
#

I wonder....

#

how big this minishipping bin can get

reef kiln
#

If you make a mod to make the mini shipping bin bigger please share it. I was literally looking for one yesterday.

calm nebula
#

well then

uncut viper
serene tapir
#

I'll aim on the safe side and specify then! Thanks button

calm nebula
#

in case you were curious

#

....how much worse can we get, really?

uncut viper
#

looked at it a bit more and you might be fine actually? the IsCommunityCenterComplete token checks for the mail flag "ccIsComplete" (seems to only be gained thru a junimo after the last bundle, so not possible with joja) or whether you have mail flags for every bundle, including the bulletin board
but there is no bulletin board in the Joja mart so the joja token just checks for any single joja flag and every other normal CC flag
so if you go joja i dont think you can get CC complete for the CP token?
someone might correct me if im wrong tho ive never done joja

calm nebula
#

somehow this doesnlt look stupid yet

reef kiln
#

You planning on publishing you mini shipping bin.

tender bloom
calm nebula
tender bloom
#

So if you want to be super sure I would check

rancid temple
#

I think every section that Joja has also marks the appropriate CC flag

uncut viper
#

where does joja mark ccBulletin?

rancid temple
#

But uses the JojaMember flag to determine which route you went in a couple places

uncut viper
#

it doesnt have a bulletin board

rancid temple
#

I think it skips that one

uncut viper
#

but the CC checks dont

#

so if you cant get ccBulletin, you cant complete the community center per t he token's requirements

rancid temple
#

This was specifically for a CP token?

uncut viper
#

i accidentally linked to the joja token but the CC one is right above it so

#

the only thing im not 100% sure on is the gaining of the ccIsComplete flag, but searching through my decompile only found that happening after a Junimo goes to get you your plaque star, which i didnt think would happen with joja

rancid temple
#

Yeah I don't think it should, trying to figure out if the ccBulletin flag is set somewhere on the Joja route to satisfy the hasCompletedCommunityCenter method

tender bloom
#

The flags are kind of wonky

#

I’ve been told they can in rare cases be unreliable

rancid temple
#

Yeah the ccIsComplete only being given by the Junimo's is a problem if you're using debug commands

uncut viper
#

the game's own Utility.hasFinishedJojaRoute doesnt even bother checkin for it

#

i didnt see it anywhere relevant in searching the decomp either but i may have missed one

rancid temple
#

meow_bongoderp Just remove the Joja route, easier fix

uncut viper
#

funnily enough the CompleteCc command adds ccBulletin twice lol

#

and boilerroom?

#

and pantry... but not vault or fishtank or craftsroom

rancid temple
uncut viper
#

i actually dont see where ccBulletin is even normally added, so im assuming thats actually either in bundledata or in some forloop that adds flags based on the name of a thing in a list somewhere that i dont know where to look for

#

so i spose it is possible joja does the same somewhere

rancid temple
#

It might also be part of an event?

#

Oh there's only the one event in the CC

calm nebula
#

okay a chest of 200 slots crashed the game

#

not doing that

uncut viper
#

cant go over 184

rancid temple
#

Oh yeah, chue was saying there was a limit

calm nebula
#

huh, why 184?

uncut viper
#

your guess is as good as mine

hard fern
#

184 is magic number

uncut viper
#

debug command CompleteJoja doesnt give ccBulletin either ftr

royal stump
#

SDVpufferlurk I'm not sure if the joja route actually calls this, but in the CC's doAreaCompleteReward:

case 5:
mailReceivedID = "ccBulletin";
Game1.addMailForTomorrow("ccBulletinThankYou");
break;
//...
Game1.player.mailForTomorrow.Add(mailReceivedID + "%&NL&%");```
which I guess is called by `areaCompleteReward`, which seems to be used in JunimoNoteMenu when purchasing bundles via Joja?
#

it's roundabout enough that I can't tell whether any joja menu buttons would actually trigger it, though, so it might just not happen normally

calm nebula
#

this is 180

#

we're going back to 120

reef kiln
#

Thats too big.

uncut viper
#

sounds like the best way to be super 100% sure about the joja thing is to just check in game after all

#

but that takes so much more work...

calm nebula
#

interestingly enough, I can actually make the enricher bigger, but it just ignores slots not the first

serene tapir
reef kiln
serene tapir
#

It looks like the most straightforward option is a dynamic token checking that they have not completed the joja route, but have reached the trigger mailflag for either cc or joja before that

#

Joja seeds is on my list, as soon as these shops are working nicely again! However, i do care about CS's permission before I share with folks. I know their perms will allow me to share the updates, but I still feel wierd about it

calm nebula
#

oh, my god, that enricher is Hardcoded TM to be One Slot TM

rancid temple
#

Yeah, check if they have the JojaMember flag and then check either IsCommunityCenterComplete or IsJojaMartComplete depending

reef kiln
calm nebula
#

that's enough of a mess I'm not going to touch that.

#

(re: enricher slots.)

rancid temple
#

I think you can buy a membership all the way up to just before completing the CC lol

calm nebula
#

(but personally I would have liked that in More Fertilizers.)

velvet narwhal
serene tapir
#

I've been very careful to meet all the caveats but I'm also adding new content and it feels important to me that I check with the original author

serene tapir
uncut viper
#

it does

#

no refunds

serene tapir
#

Very good to know 🤔

light jasper
#

smapi thinks it can best me. I think not

opaque cobalt
#

what is the condition set for an outfit during rain or similar whether? Can see the command to set appearances for weather but not what the game code calls them

velvet narwhal
#

you'd use game state query conditions

#

WEATHER <location> <weather>+ // The weather ID in the given location. The <weather> can be one of Festival, Rain, Snow, Storm, Sun, Wind, or a custom weather ID.

#

so iirc it'd probably be like, WEATHER here Rain

#

also about your precedences, the lower the number is (negative) the "stronger" it would be, so technically you can axe the "weight" part unless you have multiple outfits per season/weather/etc then the weight will determine rate of choice if all other conditions are the same

opaque cobalt
#

thank you, also; wouldthis be correct then?

            "{{ModId}}.PennySpring_Rain": {
                "Id": "{{ModId}}.PennySpring_Rain",
                "Condition": "SEASON spring",
                "Sprite": "Characters/Penny_Spring_Rain",
                "Portrait": "Portraits/Penny_Spring_Rain",
                "Weather Target": "Rain, Snow, Storm",
                "Precedence": -200,
                "weight": 1
            },
velvet narwhal
#

if you only want it in spring and during rain- where does weather target come from suspicious

#

"Condition": "SEASON spring, WEATHER here Rain"

opaque cobalt
#

On the seasonal outfits via appearences wiki

WEATHER TARGET (weather type): Used for weather-specific outfits. TARGET refers to the NPC's location, so NPCs on Ginger Island, Calico Desert, or a custom location with different weather will match their weather-specific outfits to the weather in their location rather than Pelican Town.

rancid temple
#

Link?

velvet narwhal
#

yeah afaik that's not a valid field

opaque cobalt
#

https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_Seasonal_Outfits_via_Appearances
This is what confuses me most. Was directed to look at wiki for guide but some parts feel vague

Stardew Modding Wiki

If you want to add seasonal outfits for your NPC, there's two ways you can do this: the token way or the Appearances way. Appearances is a new code structure added in SDV 1.6, so if you're looking at an older NPC's code for reference, they'll most likely be using the token way. The main difference between the two is that the token way is simpler...

uncut viper
#

thats listed under "A few commonly-used conditions are:"

calm nebula
rancid temple
#

Yeah that's part of the Conditions field

calm nebula
#

also in: added sliders for the big/smol chests too

#

also has an option to draw the first item in a chest (off by default)

#

(we are keeping this on the downlow for now.)

rancid temple
#

Page format could make it more clear that it's a GSQ as part of the Conditions field and not a field of its own

velvet narwhal
royal stump
#

there's a general overview of GSQs here: https://stardewvalleywiki.com/Modding:Game_state_queries
but weather is an example of a single GSQ, e.g. you'd use "Condition": "SEASON spring, WEATHER Target rain storm snow" or some such
(edit for the season thing, I missed that, so jamore's example earlier SDVkrobusgiggle)

velvet narwhal
#

we're all different authors

#

oh it's airyn, i go nag at him

calm nebula
#

okay, how do I with Pathos' thingie

rancid temple
uncut viper
#

i mean i dont think the wiki can indent the text, can it?

rancid temple
#

I'm unsure about the gg wiki

velvet narwhal
#

tbh i just subdivide with headers

uncut viper
#

not outside of a code block

rancid temple
#

I know the official can

uncut viper
#

to be fairrrr

rancid temple
#

One sec, lemme check my tutorials

uncut viper
#

its clear if you read the text and dont just skim

rancid temple
#

Because I was stealing official wiki formatting everywhere I could

velvet narwhal
#

what's stealing official wiki tutorials, i was slapdashing header1/2/3 everywhere

opaque cobalt
#

Also, how well formatted is the within wiki for content patcher on explaining how to do overlays? That is the part I have no idea how to do at all.

Would an overlay go on top of the appearance or how do those two play together

rancid temple
#

Yeah uh : should indent

velvet narwhal
#

so overlays will go over the loads and while they will always be above the appearances, it might act strange

uncut viper
#

interesting way to denote an indent

rancid temple
#

Looks like that when combined with ; to do the bolded

velvet narwhal
#

if i need a combination of appearances + overlays, i've delegated the "Appearances" to be like, Bald Ass Head™️ and the outfit

uncut viper
#

"One thing to note is that the TIME GSQ doesn't work for Appearances unless you also have a C# mod forcing a time-specific check, which has the same performance impact as using Content Patcher's Time When condition and "Update": "OnTimeChange""

this doesnt seem correct to me either, it will work once they change areas

velvet narwhal
#

with my overlays being the hair, accessories, etc, but you can do how you do

opaque cobalt
calm nebula
#

it's also not that bad, performance wise

velvet narwhal
#

OnTimeChange?

uncut viper
#

yeah updating an appearance manually is ezpz, you're not reloading patches or textures or anything

calm nebula
#

in other news, I do have a bit of ELR that suppresses outfit changes for npcs on on your map, in return for the ones on your map updating every 10 min

uncut viper
#

you're just rechecking conditions

velvet narwhal
#

tbh i just refuse to use it at all, i don't wanna be part of the problem

calm nebula
#

(they also update when you warp in.)

uncut viper
#

OnTimeChange is still potentially bad we're talking about just updating an appearance

calm nebula
#

yup

rancid temple
#

Appearance is checked regardless, may as well use it

uncut viper
#

the only reason that the TIME GSQ doesnt work as one might expect is bc the only thing that trriggers an outfit update is changing locations (without asnother mod)

velvet narwhal
#

ah, uhhhh iirc someone told me it just caches that query and remembers?

uncut viper
#

afaik the game doesnt ever cache query results

velvet narwhal
#

oh thonk

uncut viper
#

GSQs are meant to be checked on-demand

rancid temple
#

CP tokens are cached, GSQ's are not

#

Which is why they're more expensive

calm nebula
#

the game caches part of query caching

#

which anyone who has ever accidentally put in an npc's name lowercase knows too well

rancid temple
#

Though I dunno if saying a CP token is cached is quite accurate

#

The token is replaced with something unchanging before it even hits the pipeline

opaque cobalt
#

so, in y'alls opinion then, what would be the best route for me to go down coding side if I want to make a seasonal outfit mod that has two hair colour options and three eye colour options? The mod will have three outfits per season and as of current plans (especially with my skill) no unique portraits for festivals/events

velvet narwhal
#

i was just thinking about the time gsq because of my radioactive tree using the condition:time and it's all fine and good

velvet narwhal
calm nebula
calm nebula
#

because if you then try to fix that, it's just....cached as lowercase

uncut viper
#

i dont know if ive ever had that issue?

#

ive done a lot of query testing with NPC names and havent put much care into capitalization

calm nebula
#

huh...

velvet narwhal
#

no idea how this bodes performance wise, i've just kinda thrown it to the wind

uncut viper
#

maybe to do with the fact that i mostly test with debug gq?

#

shrugs

rancid temple
#

OnLocationChange should perform similarly to Appearance

velvet narwhal
#

iirc i did need to change the uh, eyepatch into an appearance because i wanted to completely remove OnTimeChange

#

i think how i have it right now, it doesn't Actually Work™️

uncut viper
#

i would think OnLocationChange would still be worse if it had to invalidate a bunch of data or potentially replace images

velvet narwhal
#

does overlay have the same correlation of invalidating

uncut viper
#

every time an asset is changed it needs to be invalidated

velvet narwhal
#

or is it just a call to editimage in general causes the invalidation thonk

#

ah ok

brittle pasture
#

yes, I think CP redoes all the overlays again

uncut viper
#

with Appearances, all the data is already loaded and all the portraits and stuff are ready and in the game

#

you're just telling the game to switch to them

velvet narwhal
#

tbh i just Really Didn't Want™️ to make that many separate instances for each and every combination of config

#

which is why i just opted for the overlay approach

rancid temple
#

Performance-wise you'll probably never notice it

uncut viper
#

im not saying you should switch

#

I agree you'll never notice it

velvet narwhal
#

good 'nuff KEK

uncut viper
#

just saying that it is less performant

#

so just hope not everyone does it lol

rancid temple
#

Maybe add a few thousand NPC's and then you have a different problem who cares about the appearance stuff anymore

gentle rose
#

someone give me the will to do a bug fix pls

velvet narwhal
uncut viper
#

also locationchanged will check it every time YOUR location changes and not the NPC so there is that too, a lot of pointless checks

rancid temple
#

Holiday treat: add a bug instead

velvet narwhal
#

do it in 5 business days SDVpuffersquee

gentle rose
#

make it a week for hannukah DogeSmile

velvet narwhal
uncut viper
#

tbh i thought CP updated config reliant patches immediately anyway

opaque cobalt
#

I will say this, i should not have tried to do this mod given how little I know on Json file modding. Most of the stuff discussed has gone over my head. However, I already made the okay looking portraits so I'm committed

uncut viper
#

!anyonecancook

ocean sailBOT
#
velvet narwhal
#

uhhh, i've had a mixed bag reaction based on how i've done portraits, so i Do Not Know™️

rancid temple
#

The idea of Marlon just taking his eye patch off and having a totally normal eye or switching sides depending on what location he's in is very funny to me

calm nebula
uncut viper
#

do those not update when their config change? huh

velvet narwhal
acoustic summit
#

How does the game differentiate between "fresh" wood/stone or other items and not fresh?

opaque cobalt
# uncut viper !anyonecancook

No, I have seen firsthand some people can't cook and should not be allowed anywhere near a kitchen... biscuits that are both burnt and undercooked is not a pleasent way to start your day

gentle rose
#

this might be a me thing but I've now had two different people report something and finish off with "..., so that needs to be fixed/changed." and for some reason that zaps the amount of energy I have to actually do the fix 💀

uncut viper
#

well boy do I have the upcoming action for BETAS for you avi-

gentle rose
velvet narwhal
uncut viper
#

(editors note: it won't actually really help)

gentle rose
#

like any quest that says "fresh" is just a quest that requires you to first collect X many materials and then drop X many materials to the person

uncut viper
#

i added a trigger action action that just calls 'patch update'

acoustic summit
velvet narwhal
#

it will not help, you're correct, i have no actual idea when i would need that

uncut viper
#

that way you can call that on location changed for 10x worse performance than you already do!

velvet narwhal
#

but i do love new toys

#

where's the 6480 quote

reef kiln
#

Does it know the difference. I finish quest by taking stuff from. Chests all the time.

uncut viper
#

it can help if you send a mail flag and have another token checking for that mail flag

brittle pasture
patent lanceBOT
uncut viper
#

you can refresh that mail flag token immediately

velvet narwhal
#

.q 6280

patent lanceBOT
#
#6280

Let's stop talking about making mods safer, why not make mods even more dangerous and user-harming

velvet narwhal
#

damn, 200 quotes off

uncut viper
#

I think you should have waited for

#

Yeah

gentle rose
rancid temple
#

Just gotta farm 200 quotes

#

I love those quests where Clint wants to inspect ore and I put it away and go show him nothing

gentle rose
brittle pasture
#

those collected eggs have never been in your stinky pockets so they count as fresh

rancid temple
#

Considering the terrible things I've kept in my pockets, fair

velvet narwhal
gentle rose
#

me keeping a fish in my pockets for days at a time:

rancid temple
#

Right next to the loose slime and sap

gentle rose
#

poisonous mushrooms. bug meat

brittle pasture
#

but yeah for special orders because every item becomes stinky the moment you get your grubby hands on them, they keep track of "collect fresh" and "donate" objectives separately

rancid temple
#

The bane of my existence, when I collect a bunch of items, forget I need to donate them and ship them off

drowsy pewter
#

I was given a gift card last week with the ending digits being 6379

uncut viper
rancid temple
#

It's not too late, just rewrite the event puffpensive

velvet narwhal
#

i wouldn't have to

#

i'd just throw in a trigger action after one of the sequences

rancid temple
#

Have you timed this thing yet?

opaque cobalt
#

So, the one last question as I realized the conversation spiraled and it was never answered. For weather like if I want a rain specific outfit. Do I use the wiki's command of "Weather target" or am I reading something wrong?

gentle rose
#

oh I see why there's a bug. it's because I was being an idiot SDVpufferflat

rancid temple
#

Avi did answer

gentle rose
#

object moddata is still a thing, right?

rancid temple
#

It's just part of the Condition field, you choose whichever GSQ's you need that match your desired conditions

velvet narwhal
#

it got drowned out by me getting distracted by that Weather Target field KEK

rancid temple
#

Objects have exposed CustomFields

#

They might have ModData if you're messing with them through C#

opaque cobalt
#

I saw conditions mentioned and that I read the format of the page wrong. Then you were discussing on time change and how sometimes something didn't work and that's where my brain stopped. Also, who is Avi? I only saw Jamore, Button, and you responding to my question?

velvet narwhal
#

👋 formerly Aviroen

gentle rose
velvet narwhal
#

though i haven't changed my username, just changed display name because i'm in J Club Jail

rancid temple
#

Yes, apologies, I'm slow on the uptake dogekek

opaque cobalt
#

okay, thanks. Yeah, didn't even see your condition message when I opened the wrong can of worms apparently. Time to go hide in my corner and hope I make it to spring

gentle rose
#

(also I didn't know what you meant by the wave emoji earlier but hiiii avi)

velvet narwhal
#

oh i have a mushroom mod

#

where like, most of the objects are toxic

gentle rose
#

ooooo nice. I need to check out more of you guys' mods later

velvet narwhal
#

SBVMischief the valley gets mad at you if you gift it to them with like, 3 exceptions, cause like, "why are you giving toxic mushrooms to people?"

gentle rose
rancid temple
#

Ah, Items have ModData but not Objects lol

#

Technically they should be able to access the Item's ModData since Objects are Items

velvet narwhal
#

but will it be a furniture thing, where a rectangle is not a square thonk

gentle rose
#

I need to reaquaint myself about what the different between those two are lol. BCs are objects, right?

calm nebula
#

yes

#

some items are objects. some items are not

#

it's Fun TM

#

anyways, inheritence is sane in C#

gentle rose
#

inheritence: never a cursed construct

brittle pasture
rancid temple
#

Not to be confused with StardewValley.Objects btw

brittle pasture
#

that's ModData's job

gentle rose
#

right, so moddata it is

rancid temple
#

ModData is also synced right?

gentle rose
lucid iron
#

jlasses

gentle rose
rancid temple
#

Synced over the network

#

Between players

lucid iron
#

usually yea

#

u can double check if the particular mod data is a net dict

#

oh and make sure its the mod data on the item, not the object data

rancid temple
#

Item's ModDataDictionary inherits from NetStringDictionary

lucid iron
#

ye u good

#

but like, if u put it on Data/Object it no work until u spawn a new one

#

the usual object deal

brittle pasture
#

ModData in Data/Objects: when a new instance of this object is created, put these fields in the modData field to start with

gentle rose
brittle pasture
#

item.modData, not Game1.objectData["Carrot"].ModData or whatevs

gentle rose
#

can do, this is inside a harmony patch anyway

light jasper
#

Can someone make sure I'm not crazy here? This event stage doesn't actually exist, right?

teal bridge
#

What do you mean "event stage"?

light jasper
#

want to make sure before I patch in another render event, the item description box is clipping under my menu addition if I use RenderedActiveMenu

light jasper
teal bridge
#

Well it's not a global render step, certainly, because it's just one specific menu, but that doesn't mean the menu itself doesn't expose some event. Where did you find that args definition?

light jasper
#

I patched in a custom MenuBackground event step because the normal MenuBackground step doesn't apply to the inventory menu, either my content will be drawn below the background (rendering) or be drawn above the mouse (rendered)

light jasper
teal bridge
#

Question still doesn't make sense to me. What doesn't exist? The event args that you wrote yourself?

light jasper
#

any method of achieving the effect I described above, where the content is drawn before the item tooltip

teal bridge
#

Usually tooltips are drawn within the menu's own draw method, so the menu itself would have to provide that kind of hook; there isn't a global "before tooltip" step because tooltips are up to the individual menu.

light jasper
#

rendering puts it below the background, but rendered puts it above the tooltip, which is the problem I'm trying to solve.
I just don't want to reinvent the wheel if there's already a rendering step I should be using, which is why I asked

#

if it doesn't that's fine, I already have a system in place to inject it, but I wanted to check 🙂

#

I tend to get carried away with the patching before checking and I've ended up making events that already exist before lol

teal bridge
#

I think it'll be clear if you look at the decompile for ShopMenu.draw. Menus draw their own tooltips in their one and only draw method. There isn't a distinct rendering stage for it because there can't be; it's just menu drawing.

fallow musk
#

are there any C# examples of sending a mail without using the mail framework

light jasper
teal bridge
#

The tooltip is not even the very last thing that gets drawn; the cursor and hover item is.

light jasper
#

bc at my core, I am idiot lol

teal bridge
#

Actually, it looks like portraits even get drawn after tooltips, which is bizarre.

light jasper
teal bridge
#

Anyway, you definitely cannot insert drawing between "tooltip" and "stuff underneath the tooltip" without Harmony patching, because that is all in one method.

light jasper
#

I've already made a couple patches for other menus to get above the background but below the cursor / tooltip and figured it was a lot of code rewrite for there to not already be an event for it

#

but ig not

teal bridge
#

I suppose you could always prefix drawTooltip itself if you like to live dangerously.

light jasper
teal bridge
#

Yeah, I meant prefix it one time to create the event you want to exist, as opposed to prefixing to customize the tooltip. You'd have to do a fair amount of work to unwind the context, but since drawing is (must be) single-threaded, it is possible to do more-or-less safely. And you'd only have to do one very dangerous thing as opposed to many somewhat-dangerous things. Horses for courses.

light jasper
#

Yeah that's what I was weighing. I figure since I already have several, I'll just make a generic patch I can slip into a draw() method with a CodeMatcher and link it to my own RenderingMenuContentStep event, which should cut down on the amount of work if the IL changes

teal bridge
#

I'm not sure how you'd do it generically with a transpiler, since some menus might not render a tooltip at all, or might have multiple conditional branches for different tooltips, etc. I think it'd have to be bespoke.

light jasper
#

it's less about the tooltip, more about the position. I'd have to get the right match for each draw event, but it's not about the tooltip, it's about the render order for me. I just want my event to be called after the background but before stuff that renders over it like the mouse or a tooltip

#
private static void InsertEventPatch(CodeMatcher matcher)
  {
    matcher.InsertAndAdvance(
      // IClickableMenu
      new CodeInstruction(OpCodes.Ldarg_0).MoveLabelsFrom(matcher.Instruction),
      // SpriteBatch
      new CodeInstruction(OpCodes.Ldarg_1),
      // Call Event
      new CodeInstruction(
        OpCodes.Call,
        AccessTools.DeclaredMethod(typeof(PatchRenderingMenuContentStep), nameof(CallRenderingMenuContentStepEvent))
      )
    );
  }
teal bridge
#

What do you mean by "background"... the "background" in SDV's UI parlance is like the fadeToBlackRect that draws on top of the world/HUD/etc.

#

The thing between the world and the cursor/tooltip is not the background, it's... the menu.

teal bridge
#

Yeah this is back to being unclear again. Menu and MenuBackground are distinct rendering steps, but it feels to me like the meaning of "background" is being misinterpreted.

light jasper
#

menubackground doesn't apply for things like ShopMenu or GameMenu, it's drawn without the call to Game1.hooks

 public override void draw(SpriteBatch b)
    {
      if (!Game1.options.showMenuBackground && !Game1.options.showClearBackgrounds)
        b.Draw(Game1.fadeToBlackRect, Game1.graphics.GraphicsDevice.Viewport.Bounds, Color.Black * 0.75f);
      ShopMenu.ShopCachedTheme visualTheme = this.VisualTheme;
#

I already tried using the built in render event, it doesn't get called with that step

teal bridge
#

So, there is a "menu backgrounds" setting in the game settings, which by default is "Standard", meaning it draws over the world.

#

There is a different, "Graphical" option that draws an opaque, custom menu background and completely hides the world.

#

If you change that setting and open the shop menu you get a background like this.

#

That's the "background" - that's what you draw over if you hook the MenuBackground step.

light jasper
#

ohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

#

I've never even touched that option lmao

#

makes sense why I thought it wasn't working

teal bridge
#

Yeah, it's easy to miss. Very few menus actually override drawBackground, it's just a base implementation in IClickableMenu.

#

(Which, ironically, checks its own menu type)

light jasper
#

well then I'm back to my original problem/solution then, just with a bit more knowledge lol

teal bridge
#

The transpiler code above looks very broad... just loading the menu and sprite batch args must happen many times in a typical menu.

gentle rose
#

just found out "Characters\\asldkfjsquaskutanfsldk" is a real, vanilla asset name and that makes me unreasonably happy

teal bridge
#

For instance, ILSpy shows me this:

#
// drawCurrency(b);
IL_0115: ldarg.0
IL_0116: ldarg.1
IL_0117: call instance void StardewValley.Menus.ShopMenu::drawCurrency(class [MonoGame.Framework]Microsoft.Xna.Framework.Graphics.SpriteBatch)
#

You probably don't want to run your handler before drawCurrency.

#

Mind you, I might have been misinterpreting, you only posted the snippet that inserts the instruction and not what it tries to match on, so maybe that's not what you meant.

#

(My point earlier about having to be bespoke was specifically the latter - yes you'll always insert the same instructions but matching generically is likely to be hard)

gentle rose
teal bridge
#

It's a sasquatch...ish thing.

#

One of the flavor animations you see in random locations IIRC.

light jasper
# teal bridge (My point earlier about having to be bespoke was specifically the latter - yes y...

Yeah you're completely right, I was just talking about the inserted code, since it's applicable to any menu I'd patch the draw method of

private static IEnumerable<CodeInstruction> TranspileShopMenuDraw(
    IEnumerable<CodeInstruction> instructions,
    ILGenerator generator
  )
  {
    CodeMatcher matcher = new(instructions, generator);

    matcher.MatchStartForward(
        new CodeMatch(OpCodes.Ldarg_0),
        new CodeMatch(i => i.LoadsField(AccessTools.Field(typeof(ShopMenu), nameof(ShopMenu.hoverText)))),
        new CodeMatch(OpCodes.Ldstr),
        new CodeMatch(i => i.opcode == OpCodes.Call)
      )
      .ThrowIfNotMatch("Unable to find insertion point content rendering in ShopMenu");
    InsertEventPatch(matcher);

    return matcher.InstructionEnumeration();
  }
gentle rose
#
Effects\ShadowRemove.xnb => Effect isn't a supported asset type.
Effects\ShadowRemoveMG3.8.0.xnb => Effect isn't a supported asset type.

is this a known thing btw? using StardewXnbHack

teal bridge
#

Well, some code reuse is better than none. I only brought up the (kind of dangerous and not recommended) patching or prefixing of drawTooltip itself because you'd only ever have to patch it once, assuming you got the implementation right, and then it would work for any menu including modded ones.

#

Then again, if the point of the exercise is to patch very specific UIs in very specific menus as part of your mod, then you don't really need that anyway.

light jasper
#

works like a charm

light jasper
teal bridge
#

For something like that example, probably not; no sense in writing an overly generic event system for 3 or 4 bespoke patches.

light jasper
#

it might be worth it if I had a good way to always position the harvest price box, but for modded menus it's always an unknown so not really worth

teal bridge
#

I, for one, would not be fussed about not being able to see the harvest price in a modded shop menu, because I don't think I ever sell actual unprocessed crops in a normal playthrough.

light jasper
#

I've actually been seriously considering transpiling drawTooltip to insert a lot of UIInfoSuite's overlay info directly into the item tooltip

#

but respectfully

#

that method is a trainwreck

teal bridge
#

You don't need to tell me, I just added full vanilla tooltip support back in v0.4.

light jasper
#

lmao

teal bridge
#

Some of the parameters literally don't do a damn thing, others don't do anything like what they claim to do.

light jasper
#

I'd have to write some sort of modular framework first where I can register pieces of information and then just have some hooks that modify the dimensions of the tooltip window

#

the most annoying part when I was experimenting with it is all the dimensions of the texture boxes and how the variables are optimized down in IL

teal bridge
#

You'd probably want to use Lookup Anything's system as a reference. Not my favorite design, but it works.

#

Unfortunately, if you go the reflection approach, then unless you want to implement your own duck typing system, you'll be limited to simple types since you won't get Pintail proxying.

calm nebula
#

I kinda wish C# had MyGenericClass<_> blah = whatever;, aka better generic inferenc

teal bridge
#

var doesn't count?

light jasper
#

the language I use most for work is C++ so tangling with all the reflective stuff you can do in C# is always an adventure for me lol

#

the proposals for c++ reflection are still in discussion (and look god awful ugly)

teal bridge
#

Using reflection to look up an arbitrary field on an IClickableMenu implementation is easy (like LA does). Dealing with any kind of complex data type that's not shared between assemblies, that's the hard part.

#

The C++ guys should probably have a gander at what Delphi was doing all the way back in the 90s with RTTI, but they won't.

gentle rose
#

is Gold Brazier a fallback value of some kind? I'm currently logging something to do with light-related methods and it seems to think there are gold braziers everywhere for some reason, and no other kinds of BC lights?

patent atlas
#

In generic inference

#

Given
A<T> where T : B

Instead of

MyClass<T1, T2> where T1: A<T2> where T2 : B

Should just be

MyClass<T1> where T1: A<T2> or something like that idk

teal bridge
#

I don't think that's actually a thing in TypeScript, unless default generics are involved. Generic constraints have to be fully expanded at compile time in both languages.

patent atlas
#

From what I remember in ts you could have the types within the restrictions also count as declarations

#

But idk been more than a year since i last did ts

patent atlas
#

Instead of having to fill the <> with object or some filler type

teal bridge
#

Knowing how the C# team tends to operate, that is probably never going to happen, since it is so trivial to just type nameof(Foo<int>.Bar)

reef kiln
#

can someone tell me how to make a CP mod to change a festival potion. I changed it tn the actual mod, but they just updated and now I have to cahnge it agian. I figure a CP mod that does it would be better.

light jasper
teal bridge
#

I think that definition is valid in C#... isn't it? Or am I getting it confused with Rust.

light jasper
#

How are Strings\StringsFromCSFiles localized? Is it not just Game1.content.LoadString?

gentle rose
#

I wonder why the game seems to believe there's a (possibly multiple?) gold brazier(s?) on the farm at (0,0)

teal bridge
#

Did older versions of Stardew actually have an implemented raft, or was it an aborted feature?

gentle rose
#

I could be wrong though

#

thank you for this summary, google ai! it's complete nonsense 💀

velvet narwhal
#

People wonder why were so adamant against ai, that. That right there.

gentle rose
#

I mean, a floating furniture mod isn't a terrible idea for all the aesthetic players... like a lilypad you can place on the edge of water like a crab trap and then place decor on

velvet narwhal
#

Iro do you know of the pain of the crab pot, I feel like that's a blacksmiths rite of passage

gentle rose
gentle rose
velvet narwhal
#

It'll probably make you go, "Right. Sprongobjects.png ain't so bad."

lucid iron
#

i think this is a feature of machine terrain framework?

#

lights on the water

gentle rose
royal stump
#

(mostly just being a giant index-based sheet of every object) (except stuff added in 1.6, which can be in other sheets)

gentle rose
#

ah, very fair

rancid temple
gentle rose
#

I'm just glad 1.6 apparently fixed the unqualified parent sheet index being used as ID half the time

royal stump
#

yep, ID used to be interchangeable with "position of this item's sprite in springobjects", resulting in various messes until JA took responsibility for managing all that
(which had its own buildup of issues, but worked pretty well)

light jasper
#

didn't realize the game always started in english

gentle rose
#

iirc that's what led to the staircases turning into trimmed purple pants when used as pants?

#

bc they had the same parent sheet index

light bramble
#

N3rdGirl's Nerdy Corner

versed wyvern
#

It wouldn't be possible to make an EditData or other action only occur while a game menu is open, would it?

drowsy pewter
#

not with CP

versed wyvern
#

Dang

drowsy pewter
#

not intended to do on the fly changes like that

gentle rose
#

what are you trying to achieve? this feels like an XY problem type thing

versed wyvern
#

Trying to see if there's anything I can do to sidestep around a sprite display incompatibility with Sprites in Detail and NPC Map Locations

#

A difficult task since I don't know how to C# Klee_Derp

royal stump
versed wyvern
#

Unfortunately it doesn't, even when I got the offset to successfully show the sprite it was distorted and located in the wrong spot

gentle rose
#
// Children sprites are short so give them a booster seat

what a cute comment from npcmaplocations

gentle rose
versed wyvern
#

Probably, I was just pondering if I could possibly work around it by having an overlay of the NPCs' vanilla heads in the original location on the sprite sheet only when the map's open, but I guess that's out of my league

proud grotto
#

Does anyone know how to force a mod to load only after Content Patcher is completely done loading everything? Turns out Clear Glasses breaks CP overlays but if it's enabled after CP is done rendering the sprites then everything is fine

proud wyvern
#

That’s not possible

#

Content Patcher does its things way after all mods are loaded

#

It would be on Clear Glasses to handle it properly

proud grotto
#

I mean it is open source I guess...

#

I was hoping there'd be some very easy hook to make that change because I don't have a C# environment set up and really don't want to invest that much time into doing it

teal bridge
#

What is "CP overlays" supposed to refer to? In general Clear Glasses does not have any incompatibilities with CP mods, it mostly patches the low-level graphics APIs.

proud grotto
#

That's the confusing part. I have a CP mod that doesn't change the map when the action is on overlay, but it does when it's on replace

#

So basically:

  • overlay, clear glasses on -> no sprite change
  • replace, clear glasses on -> sprite change
  • overlay, clear glasses off -> sprite change
  • replace, clear glasses off -> sprite change
#

Tested in the SMAPI console by updating/invalidating/exporting

#

I'm pretty convinced there's nothing wrong with the recolor mod; there's just a weird interaction between CP and clear glasses for some reason I can't explain

teal bridge
#

I'd take a look at some other mods that do that type of thing and see if they're broken too, before settling on the conclusion that it's either CP's or CG's fault. Unlikely that a bug like that would go unreported. Maybe it has been reported, check the Nexus bug reports on CG as well.

proud grotto
#

I went through recent bugs on all of them 😦 the author of CG said that macos is broken right now -- I'm guessing this is part of why? My CG experience has been perfectly fine except for the one interaction with overlays, so I was hoping I could fix it for myself by just delaying when CG gets turned on

#

Anyway I do have my silly workaround to manually toggle CG on/off so I'm not desperate, was just wondering if there's a quick solution (sounds like no)

calm nebula
proud grotto
#

yes........ I could make it 1 pixel off, would that help?

calm nebula
#

yeah

proud grotto
#

while debugging I DID try defining a to/from area but I used the image's actual dimensions

calm nebula
#

I don't know Clear Glasses well; I do know Spritemaster has had an issue with full-width overlays since, well

proud grotto
#

clear glasses's source code has a directory called "spritemaster" so I'm guessing it inherited it

calm nebula
#

(I don't know Clear Glasses well, but it's a fork of Spritemaster, which was written by ameise, who I did know.)

proud grotto
#

My brain is too tired to parse that PR right now, sorry 😔 Is the issue that it's an off by 1?

calm nebula
#

no, the PR makes full-width overlays take a shortcut that's faster

#

Spritemaster never accounted for that

proud grotto
#

ah gotcha that makes sense

#

ty!

tiny zealot
half tangle
#

Can I set the maximum stack size of an object with CP (without making it a tackle) or do I need to patch the maximumStackSize method to make that happen?

brittle pasture
#

Need C# yes

half tangle
#

Can I override that method for an object I made with CP or do I need to harmony patch it in order to include my object in the check done by maximumStackSize?

brittle pasture
#

is that object a separate child type of Object

half tangle
#

It's an item that is currently created by CP

gentle rose
#

then you can't override since it isn't a new class, you will need to harmony patch. I think child types of Object are discouraged anyway but I could be wrong was indeed wrong SDVkrobusgiggle

rancid temple
#

You would just need to register them with the serializer I think

half tangle
#

I figured I'd make the item using CP since I don't know how to make it via C# and I'd let CP handle adding it and such

#

Oh, how does that work?

#

or where can I read up on how that works

rancid temple
#

Well you only need to do that if you make the item through C# as a new item inheriting Object

#

Or any of the various other things that have to be registered when you make them, so the serializer doesn't explode

#

I'm not sure how you do it outside of SpaceCore, I would suggest just using SpaceCore's implementation of it

brittle pasture
#

you need to create a new type that descends from Object solely to override that function, patch the item registry to make your new type instead of Object if it's the object you want, then register that type with SpaceCore...
... or you can just postfix the stack size function. your call

rancid temple
#

A postfix with a check to make sure it's your item is way easier

half tangle
#

ah well, harmony was bound to make its way into this project at some point... might as well be now and just do the simple postfix

brittle pasture
#

i mean with your original approach you need harmony anyway

#

(the item registry patch)

tiny zealot
#

(harmony is good and fun and i remain slightly irritated that SMAPI warns you when a mod uses it)

brittle pasture
#

the game doesn't magically know to use your new type to create your item

half tangle
#

yeah, I asked originally because I was still enjoying not needing harmony for so long on this

rancid temple
#

Prefixes and postfixes are fine, they're just more C#

gentle rose
#

I still need to learn transpilers but I fear that's out of my league rn

rancid temple
#

Technically transpilers are too, but they're C# that affects IL, so more to keep in mind there

half tangle
#

cool, yeah, I've made prefixes, postfixes, and a transpiler, so no worries there

#

(for other mods)

rancid temple
#

It does feel like an accomplishment to make a mod without harmony lol

half tangle
#

and I was doing so well! I'm close to 10k lines and avoided it so far lol

gentle rose
#

my entire map event markers mod is harmony-free iirc and that seems like a miracle

half tangle
#

the game's data structures can be kinda magic like that, but that is impressive

teal bridge
#

tfw you realize you're putting more effort into a fake mod for demo purposes than you put into many actual mods.

dreamy cedar
#

I'm wondering how I can (in C#) go from BuildingData.ItemConversions.RequiredTags (which is a list of strings like "id_o_262"), and somehow churn out a list of ObjectData that have those tags... I'm guessing it's some kind of GameStateQuery mojo, but I haven't used that much. Hint plz?

tiny zealot
brittle pasture
#

the reason creating an actual item is needed because object data doesn't contain automatically generated tags (the id_o ones notably)

calm nebula
#

(you can also just call ItemContextManager.GetBaseContextTags)

#

but you will miss the weirdos

brittle pasture
#

I would suggest that, but that doesnt catch the weirdos

#

like the id_o ones

dreamy cedar
#

Thanks. That sounds doable!

brittle pasture
#

which is kinda important

opaque cobalt
brittle pasture
#

hmm should I release my mod updates now and risk stuff breaking in the month I'm away, or wait at the cost of other people who may rely on my stuff

gentle rose
#

set a timer to release half-way through for an optimally bad solution

brittle pasture
#

(I have: furniture machines, custom growing pots and custom lightning rods in the works, all features requested by other ppl)

#

(maybe I should ping them, but that feels bad)

latent mauve
#

Don't worry about me in that group, my stuff isn't publicly released yet

uncut viper
#

as long as you dont archive it

brittle pasture
#

hmm good point, though I don't expect some nexus users to follow it

uncut viper
#

if you put in the release notes on the file download page in big letters "IF THIS DOESNT WORK USE VERSION x.x.x" then its their problem if they dont listen

gentle rose
#

can't let the nexus users' reading abilities dictate how you mod...

brittle pasture
#

thouh these are frameworks, so if someone releases a new mod that uses a new feature only for said feature to break

#

well I hope they don't

uncut viper
#

if you were concerned about it, you can release the new version as a beta update instead

#

for mod authors

#

users wont get pinged about it (i think) or if they do they see its a beta, and mod authors can still use it

#

(i dont know for sure about the update notice ping though if the version number is listed as an alpha or beta. maybe? idk you can always just give it a completely different lower version number anyway)

brittle pasture
#

beta sg, thanks

teal bridge
#

Last time I put up a prerelease on GitHub, SMAPI notified users anyway. Though I think as far as Nexus goes, it only looks at the main file and might ignore optional files.

calm nebula
#

I...didn't do this.

uncut viper
#

its still christmas you still have time!

#

(but also its still christmas dont bother and just relax instead)

rancid temple
#

Also you're retired

brisk rover
#

I made a translation to a mod from Korean to English but like... I don't know what to do next lol

wanton pebble
#

Depends

#

Step 1: Do you want to post it?

brisk rover
#

Not really, I want to see iof it works first

calm nebula
#

but won't be released until...next cycle

uncut viper
#

when the atra orbit comes back around, i understand

wanton pebble
#

Personal mods you might as well just keep for yourself, Duskygirl, you won't need to do anything in particular

brisk rover
#

No i mean like

#

how do I make it work

wanton pebble
#

Oh, I see.

uncut viper
#

does the original mod have an i18n folder?

wanton pebble
#

You translated the mod but haven't made it work in game

brisk rover
#

yes

wanton pebble
#

Yeah see Button's question

brisk rover
#

and yes

wanton pebble
#

then you toss the translation in that folder

#

title it.... what's the korean code for i18n?

rancid temple
#

en.json?

wanton pebble
#

I know it's not zh

#

en.json is english

rancid temple
#

It was translated from Korean to English no?

uncut viper
#

(lyoko i didnt mean to interrupt you im just dumb, saw "santa [vague letters here]" and thought "oh lyoko isn't typing yet, i might as well respond")

#

(i did not realize you were santa lyoko)

wanton pebble
#

I'll only be Santa for the next... 3 hours

#

well, technically longer since I sleep

uncut viper
#

ko.json

wanton pebble
#

But tomorrow morning back to Agent lyoko

#

Thanks button!

brisk rover
#

okay i will try

wanton pebble
#

But yes, if you're running the game in korean, title it ko.json and toss in i18n folder

brisk rover
#

I'm ryunning it in english

#

the mod is korean

wanton pebble
#

Okay. In that case, en.json would be it

brisk rover
#

okie

#

hmmm doesn't seem to work

vernal crest
#

Is your en.json identical to the ko.json in terms of the keys?

brisk rover
#

keys?

vernal crest
#

Each line of dialogue in an i18n file will look something like this "key": "value" which as an example might then be "hiria.party": "I'm glad you could come to my party!"

brisk rover
#

yes

vernal crest
#

Is the Korean file named "default.json" or "ko.json"?

gentle rose
brisk rover
#

I made sure to not mess up the keys

#

the file is default

vernal crest
#

Change that to "ko.json"

brisk rover
#

okie

uncut viper
#

an en.json should still override it, i would think

vernal crest
#

The wiki says the default.json is the default English but you're right that en.json might override that

uncut viper
brisk rover
#

I'm seeing an error and here it is:

#

[Yoba] Mod couldn't load some translation files:
[Yoba] - en.json.json couldn't be parsed: Newtonsoft.Json.JsonReaderException: Can't parse JSON file at D:\Steam\steamapps\common\Stardew Valley\Mods[NPC] Yoba\i18n\en.json.json. This doesn't seem to be valid JSON.
Technical details: After parsing a value an unexpected character was encountered: I. Path '['NPC.cs.4294']', line 156, position 19.
at StardewModdingAPI.Toolkit.Serialization.JsonHelper.ReadJsonFileIfExists[TModel](String fullPath, TModel& result) in /home/pathoschild/git/SMAPI/src/SMAPI.Toolkit/Serialization/JsonHelper.cs:line 86
at StardewModdingAPI.Framework.SCore.ReadTranslationFiles(String folderPath, IList`1& errors) in /home/pathoschild/git/SMAPI/src/SMAPI/Framework/SCore.cs:line 2285

vernal crest
#

Then please upload your en.json file to the json parser so we can check it

#

Because you have an error in it somewhere

uncut viper
#

something about your json is invalid, but also you need to turn on file extensions

vernal crest
#

Oh yeah you have named the file incorrectly

#

Whoops

brisk rover
#

AAQAA

uncut viper
#

mightve missed a comma or done a quotation mark wrong, maybe

wanton pebble
#

probably a comma thing

#

if you're comfortable with it, toss in json validator

brisk rover
#

I found an extra quotation mark

brittle pasture
gentle rose
#

what does it work with?

brisk rover
vernal crest
#

Floating beehives that make carrots! What a wonderful world

brittle pasture
# gentle rose what does it work with?

thanks
I don't quite get the question 😅 anyway you can define whatever custom output you want, it uses Data/Machines rules with a custom lightning trigger

vernal crest
gentle rose
brisk rover
#

help please. I don't know what to do from here.

rancid temple
#

!json

ocean sailBOT
#

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

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

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

rancid temple
#

That took a while Gov

vernal crest
gentle rose
#

I should stop letting myself message after 3am 💀

brittle pasture
vernal crest
#

Oh the beehives use lightning to make the carrots, of course!

brittle pasture
#

that "beehive" is a custom machine that I reused the beehive sprite

rancid temple
#

Lightning is nature's energy source

gentle rose
brisk rover
#

sorry I should have done this first

vernal crest
#

Does the mod's dialogue file really just use "Mon" etc for its i18n keys?

uncut viper
#

is the original mod on nexus?

vernal crest
#

That seems confusing

brisk rover
#

yep yep

#

it's the 1.6 Yoba

rancid temple
#

Uh, don't you leave the keys alone?

uncut viper
#

i dont know what 1.6 yoba is

vernal crest
brisk rover
#

yup

gentle rose
vernal crest
gentle rose
#

you should only have one entry per key

rancid temple
#

I will be able to tell you more after I look at the original lol

half tangle
#

half an hour of irritation at my code and it finally clicked that I was trying to patch an abstract method when I only cared about the overridden version for a class

rancid temple
#

Woof, it's packed as loose files in the zip folder, that's crazy

vernal crest
#

Good way to introduce unneeded user error

uncut viper
#

did you make sure to fix the file extension?

rancid temple
brisk rover
gentle rose
gentle rose
uncut viper
#

that dupliocate key would not cause that error

brisk rover
#

gonna try it now, standby

gentle rose
uncut viper
#

the duplicate key is a red herring. did you fix the file extension issue mentioned earlier?

vernal crest
gentle rose
#

but also yes, the extension!

rancid temple
#

It should be

Zipped File
  [CP] Yoba
    assets
    i18n
    content.json
    manifest.json
uncut viper
#

you're 100% sure the file is now en.json and not en.json.json like it was before?

rancid temple
#

So when people extract it, it's all just in a parent folder already

brisk rover
#

yup yup

rancid temple
#

One of those should be default

#

ko probably

vernal crest
#

I always take psychic damage when someone has file extensions turned off

#

(Yeah sorry I told them to change it so this might be my fault :/)

brisk rover
#

I changed it back now ^^;

uncut viper
#

i dont think default.json should be strictly required, but ive never exactly tried, so, i dont know

#

that one im not sureo f

rancid temple
#

Swapping the default to ko and the en to default probably would have worked

#

But I forget if the eventual goal is to release this

brisk rover
#

I might

#

if it works

uncut viper
#

it would just be treating a symptom and not the cause anyway

gentle rose
#

is there not already an English translation bundled with the mod btw? the mod page seems to be giving english translation credits to someone

vernal crest
#

Nope

rancid temple
#

I only see default.json

#

Top to bottom Korean

uncut viper
#

they might be talking about their translator for the description

brisk rover
#

the english translation is gone

gentle rose
#

possibly, I didn't think of that

brisk rover
#

mostly because the two files are in two different formats now

vernal crest
#

Yeah the English translation was from before 1.6

rancid temple
#

The credit for the English translation is to a user page and they sure don't have any translations in their mods lol

gentle rose
rancid temple
#

So is it working with the renaming?

brisk rover
#

game is still loding lmao

#

530 mods

rancid temple
brisk rover
#

it's just the first load thats long

rancid temple
#

One of the many reasons it's suggested to test with minimal mods (I don't follow this advice)

brisk rover
#

loading in game is fast

vernal crest
#

WHenever I have to edit a mod I use in my play folder I move it to my testing folder first, then move it back once it's done

uncut viper
#

what about patch reload

rancid temple
#

Well would maybe be reload_i18n

#

or i18n_reload can't remember which direction that goes

#

But I dunno if it would work since there was an error