#making-mods-general

1 messages · Page 604 of 1

gentle haven
#

Thank you for your insight Midnight, I'll have to see if I can't figure it out

merry river
#

any ideas why using books for unlocking powers isn't working here? i have trigger actions set up that should unlock specific powers but nothing really happens and the icon in the powers tab remains grayed out. Debug gq output states that the trigger action has not been run
https://smapi.io/json/none/35bce147b69b4be8a2bdc10fb2820fdf

brittle pasture
#

any reason you need spacecore to run a trigger action instead of just checking the read book's stat (like what vanilla does)

merry river
#

i think i wanted to make use of the OnItemUsed trigger?

brittle pasture
#

yeah you can just follow vanilla unless you really want a custom message (in which case Button's SPU is probably a better fit, and you'd still be following the vanilla method)

#

set it a book item, reading it should automatically increment a stat, and then you can check that stat anywhere

merry river
#

Yeah, I wanted a message to pop up that's like "You learned how to brew a new potion" or whatever

#

not that it would be necessary, i just liked the extra message

brittle pasture
#

and to answer your original question: I believe reading books doesn't trigger SpaceCore's item used trigger so your idea was rip from the start

#

do look at SPU though, is gud mod

merry river
true coyote
#

thinks of a useful mod
finds a similar mod to look at how it was made
mfw .dll

sad :(

brittle pasture
#

which mod?

#

mayhaps source is available in description

true coyote
#

wanted to create a fertilizer(s) that increases yield, since I didn't see one

#

also thought about making a mastery like SVEs to increase either the time you can harvest tea leaves or increases tea leaf yield off the bushes, but that is also apparently C#

brittle pasture
#

yeah anything like that is C#

true coyote
#

I always end up thinking of useful things that are created outside of my scope :')

brittle pasture
#

something something bird xkcd

tiny zealot
#

you can also decompile a dll to see something approximating its original source code

true coyote
#

also is better junimos abandoned or just.. mod auth is away for an extended time

brittle pasture
#

didnt it receive a recent update

#

though the author stated they are inactive and want to hand it off yes

true coyote
#

december which I suppose is recent

severe cairn
#

If it's this year that's plenty recent imo

inland rain
severe cairn
#

Wowa

inland rain
rich seal
#

Mesmerize the crows and make them slam into the side of the farmhouse. Save the crops with epileptic flowers!

#

I am so downloading your mod the moment you upload it

golden spire
#

@inland rain I tried making a custom balloon, but the game didn't like it and then hard crashed.. maybe I am being a dummy and made a typo somewhere but I cannot see it.

inland rain
#

EditImage

golden spire
#

doh

inland rain
#

can set custom prismatism, e.g. two-tone:

        {
            "Action": "EditData",
            "Target": "aedenthorn.PrismaticFlower/dict",
            "Entries": {
                "597": {
                    "Speed": 2,
                    "Color1":"#237FFF",
                    "Color2":"#BFE4FF"
                }
            }
        }
#

for blue jazz

#

use fairy dust to make a flower prismatic

#

or flowers have 5% chance to be prismatic when they grow up

inland rain
# golden spire doh

I was going to add an option for custom balloon items, but it got complicated around texture loading

golden spire
#

(I still have my error-lewis mod on)

inland rain
#

this is why we do what we do

golden spire
#

sorry Tilly

gray bear
#

NOT THE SHORTSSS

golden spire
wanton pine
#

when did content patcher add audio support?

#

asking b/c I'm writing a bit about the depreciation of Custom Music (and dont' want to dig through CP's massive changelog).

tiny zealot
#

SDV 1.6 added the Data/AudioChanges asset

#

i'm not sure if CP needed any special code to support patching that asset, but 2.0 was the first version for SDV 1.6 so that's when it became possible

wanton pine
#

TY

golden spire
#

audio changes are a bit different and less flexible than other changes

wanton pine
#

I know and I still and not completely sure how to implement them -.-'

brittle pasture
#

is this for a conversion guide thing

#

since we have a tool for that

wanton pine
#

Wym by "conversion guide thing"?

#

I'm looking to do the equivalent of action:load, target:[kind of footsteps], fromfile:[mod asset], when:[playerisridinghorse] and I'm pretty sure I know what my targets and condition are named, but I'm having a hard time figuring out what I'd do differently from the wiki's example in Modding:audio - specifically, setting it up to play the mod's audio instead of the vanilla ones when the player is horseriding. I'm espically clueless as to how the game's audio files are targeted.

golden spire
#
            "Action": "EditData",
            "Target": "Data/AudioChanges",
            "Entries": {
                "{{ModID}}_horse_flute": {
                    "ID": "horse_flute",
                    "Category": "Sound",
                    "FilePaths": [ "{{AbsoluteFilePath: assets/horse_flute.ogg}}", "{{AbsoluteFilePath: assets/horse_flute2.ogg}}", "{{AbsoluteFilePath: assets/horse_flute3.ogg}}" ],
                    "StreamedVorbis": true,
                },
            }
        },```
uncut viper
#

You won't be able to do that with Content Patcher, and even in C# it won't work right because once you change an audio asset with Data/AudioChanges, it can't be un-changed. If you wanted it to go back to vanilla, you'd have to then put the vanilla sound in your mod too and re-patch it with the vanilla audio to reset it.

urban patrol
#

i don’t think you need to worry about When though because the game already has different audio cues for walking footsteps vs horse hooves

#

so you can just unconditionally change horse hooves to be motorbike sounds

uncut viper
#

If that's the case then yeah just replacing the hoof sound permanently is fine

wanton pine
urban patrol
#

that’s adding a new audio cue

wanton pine
uncut viper
#

I'm not sure what you mean. An audio cue is an asset.

wanton pine
#

that naming convention seems bonkers - cues are usually signals telling something to happen, right?

urban patrol
#

audio cue isn’t like an official term or anything

#

or rather an audio cue is a type of asset like images are a type of asset

uncut viper
#

Cue is the official class name. I wouldn't say the word cue can only be used in the strict context of "something that triggers something else"

golden spire
#

the ID should be the same name as the vanilla one if you want to replace the vanilla sound

uncut viper
#

It's just the aural equivalent of a visual cue

wanton pine
urban patrol
#

i wouldn’t use a mod from 2020 as an example

#

1.6 was released in 2024

uncut viper
#

That mod predates even 1.5

golden spire
#

sandyStep
snowyStep
stoneStep
thudStep
woodyStep
Cowboy_Footstep (which is used by pets, some menu sounds and Prairie King)
grassyStep

wanton pine
#

except the json in question, which before it was depreciated did exactly what I am trying to do, address three footstep cues, all of which are listed in the modding:audio page as being used by the player:
{
"Music": [

    {
        "Id": "thudStep",
        "File": "vroom.wav",
        "Preload": true,
        "Loop": false,
        "Conditions": "LC Game1.player.isRidingHorse()",
    },
    {
        "Id": "stoneStep",
        "File": "vroom.wav",
        "Preload": true,
        "Loop": false,
        "Conditions": "LC Game1.player.isRidingHorse()",
    },
    {
        "Id": "woodyStep",
        "File": "vroom.wav",
        "Preload": true,
        "Loop": false,
        "Conditions": "LC Game1.player.isRidingHorse()",
    },

]

}

urban patrol
#

limey is there anything with horse in there

golden spire
#

I forget what the horse uses, can just ride it and use the debug logSounds

#

to see what sound it uses

uncut viper
#

If there is no horse specific audio, then my original response will apply again

wanton pine
#

there does not seem to be any horse-specific sound, according to the wikipage

#

which brings us to "how do I construct these six conditional audio replacements"

urban patrol
#

C#

golden spire
#

game often uses sound effects for one thing and merges them together with other sounds, which might have unexpected results for sound effect replacement.

urban patrol
#

if you’re not wholesale replacing one audio cue permanently then the answer is C#

uncut viper
#

And specifically you would need to harmony patch the game code itself if not going through AudioChanges

#

Not going solely through it, anyway

urban patrol
#

but again this all depends on what sounds actually play when riding a horse

golden spire
#

horse mainly uses thudstep on ground and stonestep on stone.. and just plays at a different speed to a player walking

urban patrol
#

well enjoy your dive into harmony then 🙃

uncut viper
#

Thought the leaf was a fancy red horseshoe

wanton pine
#

Whelp, guess I'm doing this while not great at CP... feeda.

golden spire
uncut viper
#

There's no place like Forest (100, 25)

wanton pine
#

esp fitting becase the horseshoes are a nice, shiny silver!

golden spire
#

I don't think we're at Forest 99,25 anymore

wanton pine
#

Out of curiosity, does anyone know why Platonymous stopped maintaining his framework mods?

#

since he's the author of one that would've allow me to skip the C#.

barren tapir
wanton pine
barren tapir
#

-# I said that bc its the first 4 digits of pi 😅

urban patrol
rough lintel
#

^

#

some got eaten by cp, some got eaten by the game updating

uncut viper
#

Those are the same thing

rough lintel
#

well yeah. its called an elaboration

wanton pine
#

fair enough, although I think Custom Music's functionality needs to be added to cp properly as it currently doesn't actually let you patch audio. Mleh.

strong kite
#

Can I use %revealtaste to reveal an entire category/context tag for an NPC?

calm nebula
#

No

strong kite
#

Could there be some kind of trigger action workaround? Or at least to make it not one disgustingly long entry in the i18n file?

uncut viper
#

Content Patcher does not add it's own functionality save for very few exceptions.

#

It's purpose is to let you patch assets and that's basically it.

#

It's not going to add it's own way of editing audio.

#

It _does _ let you patch audio already.

strong kite
#

Actually, what other ways are there to reveal an NPC's taste? Is it actually just the %revealtaste dialogue command?

uncut viper
#

The fact that the patch can't be easily undone is the games fault.

wanton pine
#

clarification: patch as in "conditionally replace sfx"

uncut viper
#

You still can do that, you just need the opposite condition to replace it back as necessary. Annoying, but you can do it, and again, not in CP's purview

golden spire
#

music and sound is stored differently compared to other assets

wanton pine
#

okay then. Would either of you happen to know of a C# mod that does the described function that I can use as a reference, then? -_-'

autumn tide
#

oh whoop this is general not art

#

..okay message deleted carry on code ppl

uncut viper
#

I'm not aware of any mods that edit horse footsteps specifically. Lots of mods out there that use Harmony though, but you'll almost certainly need a transpiler or multiple. There's a guide on the modding wiki for Harmony, I know that

#

Using Harmony or C# in general to do custom things is very often very DIY, including the "figuring out the best way to do it" part

wanton pine
#

Clarification: the temporary overwriting of a base game audio file bit, not the horse sound

uncut viper
#

But any mod that uses Harmony can at least be a good reference in how to use Harmony in general

#

Yes I know

#

It would be the same idea regardless

#

You have to find where the cue is used in the decompile and figure out the best way to replace the cue id, and the best way to do that will vary depending on the specific cues

#

Sometimes it will be very simple and sometimes it will be very difficult

#

So the first step I would take is finding exactly which function controlled the footstep audio

brittle pasture
wanton pine
wanton pine
# brittle pasture does your mod have to be a vanilla horse replacer; if not you can look into this...

On account of permissions, steps 4 & 7 of my mod's instructions are as follows:

  1. Download CK's Ducati Motorbike (https://www.nexusmods.com/stardewvalley/mods/2918) and the classic version of Tractor Engine Sounds (https://www.nexusmods.com/stardewvalley/mods/5781); Do Not install them or download and install any of Tractor Engine Sounds' listed requirements (unless you want the Tractor Mod).

  2. Move "horse.png" and "tractor.wav" from their original locations (listed in step 6) to the "assets" folder inside the "[CP] Horse to Ducati Motorbike Conversion Kit" folder.

Nexus Mods :: Stardew Valley

This mod allows you to ride a miniature version of the 1972 Ducati 750 Sport motorbike, either as a direct replacement of your first horse or as a replacement of any other horses you may have on yo

#

However I will now go look at that mounts mod as it looks like I can use it as a means of avoiding C# and, by extension, my brain's annoying quirks.

brittle pasture
#

you don't even need to tweak your code that much; just make your stable changes into a separate building and load the bike textures into a new path

#

additional work would be registering your building with that mod

wanton pine
#
  • which wouldn't even be that much additional work. Man, I should've thought of using something like that earlier!
#

I wouldn't need to specify a new animation cycle if using the default horse one, correct?

#

so, the to-do is now:
1 establish independent loads for the mod assets
2 establish the bikeshed building

#

3 specify assets used by new mount

gentle haven
#

What TMX editor do y'all use?

wanton pine
#

tiled

gentle haven
#

Much appreciated!

#

Oh, it doesn't seem to open .xnb files

golden spire
#

!unpack

ocean sailBOT
#

Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!

golden spire
#

xnb is not a map file

gentle haven
#

Omg thank you I am a total newbie at this

dusky vigil
#

@brittle pasture I am doing something wrong in Extra Animal Configs, right now my dodos are vicious little murderers. They're supposed to dig 1 random bone a day, but right now, uh...

#

Would you be willing to look at it for me? wheeze_drops

rich seal
#

Necromancer dodo... scary

glossy frost
dusky vigil
placid coral
#

it seems harmony transpiler patches are more efficient because it doesn't have to inject the code at runtime during function call? so if I'm patching something called frequently, I should go with the transpiler regardless? can anyone confirm that?

brittle pasture
#

hmm dig up animals only dig when they're outside right

dusky vigil
#

Yeah

#

But the state of my coop says otherwise:

brittle pasture
#

wacky

uncut viper
dusky vigil
#

They will go outside and dig their normal item

calm nebula
#

You can check this by turning on Harmony's debug features and inspecting the file it dumps on your desktop

brittle pasture
# dusky vigil

I'll be at work for a few more hours so I'll look more closely later
for now can you also upload it to smapi.io/json? thanks

gentle haven
#

How do I know what layer something I want to remove with EditMap is on?

urban patrol
#

view the map in Tiled (press H to highlight only the current layer)

gentle haven
#

Ahhh, gotcha!

brittle pasture
# dusky vigil

I think your code managed to uncover a bug in EAC; please try this version and see if the issue persists
(your code is also missing the dig up override for the bone fragment produce (881), but it's only part of the issue)

#

(for anyone interested the issue might be that I overwrote FarmAnimal.GetHarvestType to also take an animal's current produce into account, and also used it to check an animal's base produce type like an idiot. this is likely also responsible for the various bug reports on Immersive Manure of people being able to milk manure from their goats)

#

gods I want to burn this mod's code base into the ground and do over

uncut viper
patent lanceBOT
barren tapir
#

Whelp, time to see where I left off last night

warped vessel
#

(sorry if my lingo is wrong, I'm still learning how to phrase mod things)

Is it possible to make it so viewing a certain dialogue string is a trigger? I'm guessing not :P

I'm working on a small tv channel mod to teach myself basic token use, and the scope creep wants me to have villagers react to what was mentioned. The episodes are randomized, so I can't rely on a certain time, only what string in the i18n has been seen by the player

lucid iron
#

Iirc it supports running trigger actions

strong kite
#

Ah.. shoot.. I'm gonna have to map patch the festival of ice with my change to Cindersap Forest...

warped vessel
gentle haven
#

So I need to find a way to have it let me inside to fix that

#

Tiled cannot open these files it seems so I need to know how

ornate drift
#

I don't have an event idea for the player, Manny, and the wizard

torpid sparrow
#

Well do you need one

verbal glacier
proven spindle
gentle haven
wanton pine
#

where can I find the list of (smapi) console commands?

proven spindle
proven spindle
wanton pine
warped vessel
barren tapir
#

Is this not how you replace maps via C#?

public const string MapAssetPath1 = $"{ModEntry.ModId}/Maps/Basement1";
///
// On Asset Request
if (e.Name.IsEquivalentTo(MapAssetPath1){
  e.LoadFromModFile<Map>("Maps/EmptyBasement1A.tmx", AssetLoadPriority.Medium);
}
if (e.NameWithoutLocal.IsEquivalentTo("Maps/LewisBasement"))
{
  var editor = asset.asMap();
  var test = ModEntry.StaticHelper.ModContent.Load<Map>(MapAssetPath1);
  editor.ReplaceWith(test);
}
gentle haven
barren tapir
#

Bc I'm getting the following error:

#

"Failed loading asset 'Nullnnow.MS-Books/Maps/Basement1: The specificed path doesn't exist"

ornate drift
verbal glacier
ornate drift
#

Otherwise it would just be kept as a mystery

barren tapir
#

I also put a log statement right before calling LoadFromModFile<Map>("Maps/EmptyBasement1A.tmx"), and that never seems to be called either

#

i.e., when loading MapAssetPath1

warped vessel
wanton pine
urban patrol
#

your texture needs to match the target of your load

#

lines 33 and 61

jaunty shuttle
#

How do I properly ask for a mod that's an AI translation of my own mod to be taken off nexus?

#

The report button thingies system is confusing me

dusky vigil
strong kite
#

Well it only took a LOT of frustration and messing up my unpacked file for the festival of ice map but I think I've corrected the map for those festivals

barren tapir
#

I'm still really struggling with trying to replace maps via C# 😅

hoary tartan
wanton pine
#

second question: why isn't the collision "matrix" working?

#

answer: typo

round dock
jaunty shuttle
#

Ok yeah, that's what I had mostly assumed but I wasn't sure, thank you both!!

round dock
#

I'm not sure what Nexus' policy is on this but as the author of your own mod, I'd reckon they'd take your report seriously and take action.

uncut viper
#

Nexus is very author-favoured when it comes to permissions

round dock
#

(also applies to unauthorized publication of translations, if your perms explicitly state it!)

lucid mulch
#

did the perms specified on your nexus page actually limit anything though?

jaunty shuttle
#

I had just used the default perms

#

Their translation is opted in to donation points too so ik that at least is explicitly stated as not allowed

#

I'll make the report, ty guys for all the help! SDVpufferheart

barren tapir
#

Progress update: the print statement is now get called when trying to load the map, but I'm getting the following error:

[Money Sinks - Books for Dark Offerings] Mod crashed when loading asset 'Nullnnow.MS-Books/Maps/Basement1'. SMAPI will use the default asset instead. Error details:
SContentLoadException: Failed loading asset 'Maps/EmptyBasement1A.tmx' from SMAPI\nullnnow.ms-books: the specified path doesn't exist.
#

And this is my project structure

lucid iron
#

Are you using the relative path?

#

This SMAPI/whatever thing is probably not right

wanton pine
# wanton pine Alright, I have changed my elaborate stable reskin into an entirely building and...

I'm still having problems with this. Updated json: https://smapi.io/json/content-patcher/73da7606d66b4d519ee551f62268b73d
The animaldoor animation and custom mount portions are just not working and I'm not sure why
Custom Mount: https://www.nexusmods.com/stardewvalley/mods/35810

Nexus Mods :: Stardew Valley

Lets you create custom mounts with custom stable, texture, size, speed, flute, carrot, and footprint sounds.

barren tapir
# lucid iron Are you using the relative path?

I currently have the following:

public const string BookAssetPath = $"{ModEntry.ModId}/Books";
public const string MapAssetPath1 = $"{ModEntry.ModId}/Maps/Basement1";
//public static Texture2D BookTextures = null!;

public static void OnAssetRequested(object sender, AssetRequestedEventArgs e)
{
    IAssetName name = e.NameWithoutLocale;
    if (e.Name.IsEquivalentTo(BookAssetPath)) 
    {
        // This works just fine
        e.LoadFromModFile<Texture2D>("assets/books.png", AssetLoadPriority.Medium);
    }
    if (name.IsEquivalentTo(MapAssetPath1))
    {
        // This doesn't work
        ModEntry.StaticMonitor.Log("Loading Map Asset", LogLevel.Debug);
        e.LoadFromModFile<Map>("Maps/EmptyBasement1A.tmx", AssetLoadPriority.Medium);
    }
lucid iron
#

Your offsets r back to 0 again

wanton pine
#

of course its that bleeeeeh

jaunty shuttle
#

Does a translation mod work if has an i18n, but the mod that it's a translation of does not have an i18n?

lucid iron
barren tapir
lucid iron
#

Either move that to assets/ or look up the thing to include the folder in build (iirc it was something modbuildconfig does)

#

assets and i18n are special bc modbuildconfig already include those

#

I'm pretty lazy so i just put my shit in assets always

lucid iron
#

It's not impossible that the original set their translations up in a weird way

barren tapir
#

Progress!

lucid iron
#

But normally you dont really even make a i18n mod

#

It's just i18n file with matching folder structure so that it goes into the og mod

barren tapir
#

It still isn't working, but that's bc it isn't recognizing a tile sheet

hard fern
#

well if a mod has no i18n/translation support at all then it wouldn't work though

uncut viper
#

Not necessarily true

#

Love of Cooking for example I believe uses i18n mods

lucid iron
uncut viper
#

Because it uses tokenizable strings

#

A translation mod can use an i18n file in its own mod to use in editing Strings/Whatever to be used in tokenizable strings in the original mod

#

(I'm not saying LoC doesn't use its own i18n files either, I don't know, but it wouldn't need to for translation mods to work if it did do its edits this way)

barren tapir
#

OOOOHHHH

#

NO ERROR UPON LOADING THE GAME

jaunty shuttle
#

Ok good to know, thanks!

barren tapir
#

... And nothing changed SDVpufferwaaah

strong kite
#

aauughh that's problematic.
He's completely fine once I talk to him but at the start of the festival he's only 16 x 32

barren tapir
#

Is this not how you replace maps in C#?

private static void EditBasement(IAssetData asset)
{
    if (true)
    {
        var editor = asset.AsMap();

        Map map = editor.Data;
        var test = Game1.content.Load<Map>(MapAssetPath1);
        editor.ReplaceWith(test);
        //// TODO: Add minecart location
        //editor.PatchMap(patch);
    }
strong kite
#

can setting up additional characters specify a 32x32 sprite?

#

oh goooodddd please tell me I can make it a 32x32 sprite for the festival

urban patrol
#

what framework are you using normally

strong kite
#

Is that to me or Null?

urban patrol
#

you

strong kite
#

Content Patcher I'm assuming

urban patrol
#

how do you have your NPC be 32x32

wanton pine
urban patrol
#

pooh core? something else?

strong kite
#

I just have their size marked as 32 x 32 in the characters file?

urban patrol
#

oh wild i didn’t know CP did that

#

how do they path find

strong kite
#

Sorry If I sound a little rude, I'm very out of it right now Tiredkip

uncut viper
#

CP doesn't, the game does. That said,

Note: sizes bigger than 16×32 will cause issues like broken spawning, pathfinding, misalignment in the perfection end-game slide show, etc.

#

Plausibly just part of the "etc"

wanton pine
strong kite
#

Yeahhhh they don't Pathfind, I don't make them outside of one event where I have them move in a single straight line where it worked just fine

urban patrol
#

one workaround i can think of is patching your NPC in as a TAS and having something like BETAS handle the dialogue to fake an NPC

wanton pine
#

(not asking chu{e} in particular, btw)

ornate trellis
#

me: hm, i could use the junimos popping up everywhere in the CC when completed for an event thing...
me: doesnt find it anywhere welp, ok, new idea-

strong kite
urban patrol
strong kite
#

wait no that wouldn't work with them moving during the event...

uncut viper
#

I'm actually not sure if tile actions are allowed to work inside events/festivals

#

At least not yet?

urban patrol
#

custom ones definitely aren’t

strong kite
#

Ngl I don't know what TAS is outside of the speedrunning community

uncut viper
#

I feel like I remember something about that in the 1.6.16 alpha thread

uncut viper
#

That might be it, might be custom ones

#

Which all of the BETAS ones are

urban patrol
#

oh damn yeah

uncut viper
#

(also TAS = TemporaryAnimatedSprite)

urban patrol
#

they’re vanilla to me

barren tapir
uncut viper
#

There are vanilla tile actions that can create dialogue, though

strong kite
#

I can use TemporaryAnimatedSprites during a festival? I guess it is an event?

urban patrol
#

yep

#

you’d just use text operations

urban patrol
uncut viper
#

TextOperations can also be incompatible when you're dealing with editing a festival script, though

#

There is also just that one NPCMessage one with the dialogue box isnt there?

urban patrol
#

yeah there’s no good way i can think of

barren tapir
#

Progress!

uncut viper
#

The one that requires an NPC to be nearby, but you could just hide your cut-in-half Darkrai just off to the side beneath a tile or something

#

Like put em beneath a tile on the AlwaysFront layer

#

That you'd probably EditMap in

strong kite
#

yeah honestly I might just try to hide it like that

#

man finding positions for him was already a goddang nightmare 😭

urban patrol
#

care about compat last

#

is my advice

strong kite
#

Wait I'm supposed to care about compat at all? heehee

urban patrol
#

djkajdks i mean maybe not

strong kite
#

-# that's a joke lads heehee

#

But yeah any festival taking place in town should be easy enough, I know a vanilla tree. granted players may be able to chop it but... That's on them heehee

strong kite
#

Oh, true...

wanton pine
#

specifically, behind them

strong kite
#

I also gotta take into account BOTH vanilla layouts which is really frustrating cuz some festivals get REALLY limited

#

Festival of Ice loses a TON of space because the second year places boundaries way closer

barren tapir
#

How do you make a map brighter?

hard fern
#

ambient light?

strong kite
#

Hey y'all does this look out of place? heehee (Flower Dance)

gentle haven
#

I think it looks fine!

strong kite
#

I might actually need to move it one over...

wanton pine
#

I've looked it over myself but can't figure out what's wrong

strong kite
#

I've (I think) fixed 6 of the 8 events
But I'm not gonna lie I was ALREADY struggling with the 2 beach events, I got NO clue how I'm gonna hide his right half in either of them

wanton pine
#

floating behind willy's fish shop

#

hovering ominiously over the water, unseen to all but the mod author

strong kite
#

Well he should actually be accessible by the player heehee

#

Theoretically could work, but he's also meant to be hiding from the residents of the valley. And I imagine they don't see the world in the top-down-ish perspective we do LUL

wanton pine
#

behind the fish barrel then?

barren tapir
#

Boom finches!!!

strong kite
#

It wouldn't be so hard if pierre (the prick) didn't completely change the location of his shop between the two layouts heehee

#

although.. I do have an idea..

#

That doesn't look terrible at all heehee

#

But I can also re-use this idea for the moonlight jellies!

ornate trellis
#

1.5?

barren tapir
#

Yes? It's been out for a while

ornate trellis
#

we already at 1.6

barren tapir
#

I'm gonna have dinner, then I'm going to add the powers!

Version 1 of this mod is steadily drawing closer to release!

strong kite
#

oh sonuva-

wanton pine
#

LOL

tough osprey
#

I can't get these temp actors to work...do I have to use TAS if I want to add kids to an event or am I just doing something wrong? No errors on smapi, event runs perfectly fine aside from the kids' sprites not showing up. It is the second one on here:
https://smapi.io/json/none/89e42b57cc794f44bfa50b9a9674560e

real agate
# ornate trellis 1.5?

It may have been an old post on X or somethng. Sorry about that. Yes, it was an old account.

urban patrol
tough osprey
#

they are ready at time of patch, right now I have them as Toddler_dark and Toddler_girl_dark

barren tapir
#

Yall, I just got jumpscared by my birdfeeder. I was watching the videos it gathered throughout the day, and for a brief moment thought my fence was on fire (it's not, its just the way the light looks through the leaves 😅)

urban patrol
#

you can also try a patch parse and/or patch export

tough osprey
#

I'll try to patch parse and export rq

jaunty shuttle
# real agate It may have been an old post on X or somethng. Sorry about that. Yes, it was ...

Version 1.6 was released march of 2024, so yes mods are updated (and created) for it now. Also the author of SMAPI specifically, Pathoschild, is one of the Stardew developers currently working on the 1.7 update for SDV SDVpufferheart

And whenever the 1.7 update comes, I believe I've heard that mod authors are given time to update their mods before game updates officially go live (pls correct me if i'm wrong though)

strong kite
ocean sailBOT
#

Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 10 (10.0.19045.0), with 19 C# mods and 2 content packs.

tough osprey
#

what if I hit a three for three and this whole problem is bc of another typo (tb to "recieved" and extra "Data"

urban patrol
#

what does a patch export of data/events/forest look like

tough osprey
#

the tokens do look like they're being applied correctly

urban patrol
#

yeah hmmm

#

and just to make sure, you have the coordinates correct? they're not accidentally off in the void or off screen or anything?

#

i'd also maybe try changing {{Toddler}} to Linus or something to see what does and doesn't work

devout otter
#

(Also this is unlikely the cause of the issue of the toddlers not appearing at all, but the sprite height should be 32, yar?)

ornate trellis
#

man, first time ever using advancedmove command and they do fine until they reach their destination and just voidwalk, sigh

urban patrol
#

i always have to do that

tough osprey
#

omg i figured it out

#

it was triggering the "NoKids" event, so kids werent spawning duh 🤦 I should probably add some more preconditions to that

ornate trellis
tough osprey
#

tysm for your help @urban patrol process of elimination helped me realize my mistake

urban patrol
ornate trellis
cyan sleet
#

Curious if anyone has a solid Tiled terrain brush for the ocean floor? Utilizing the corner option, but it's a bit choppy.

ornate trellis
#

both

urban patrol
#

line 38 and 40?

ornate trellis
#

yea

urban patrol
#

oh 0 isn't a facing direction

ornate trellis
#

context is they walk into the place and both walk up to the kitchen where the other npc is. i thought it was p straith forward but i guess its more complicated?

urban patrol
#

advancedMove only knows it's a pause/direction when both integers in the pair aren't 0

#

so it uses 4 instead

ornate trellis
#

huh

urban patrol
#

To make an actor pause, use the direction to face and the number of milliseconds to pause. 1 is right, 2 is down, 3 is left, and 4 is up. The reason 4 is up and not 0 is so that advancedMove can tell the difference between a pause command and a move up/down command.

ornate trellis
#

oh frick i forgot about that

#

yup, that was it, oops. typical 3am moment, i guess. thanks for the help!

#

aaaand i just found out by accident that all my regular gift taste i18ns are gone for all npcs? including Constance? huh

urban patrol
#

do you use git

ornate trellis
#

yes

strong kite
#

I'm not proud of this solution, but... heehee

ornate trellis
#

but i am not editing the mod directly in my git folder

urban patrol
#

i was just hoping you had a backup

ornate trellis
#

hmm

#

misery, it was already gone there when i started using it

#

no one ever reported anything to me, sigh

#

nothing a bit of repeatitive copy-pasting wont fix, i guess

strong kite
#

I forgot about the dialogue I gave darkrai here, suddenly I am EXTREMELY happy with my choice of cover for him LUL

wanton pine
#

@strong kite Question: Why have you been sticking that haunter emoji at the end of every post?

#

*almost every

strong kite
#

It's like a non-serious jokey emote, from the Pokemon Infinite Fusions discord

#

Like a self acknowledgement that something's silly or sarcastic

wanton pine
#

It comes across as a ""creepy" ha ha lookit this" to me, thus the question. Probably the result of emojis' connotations not always - uh, coming with them when used on other servers, if that makes sense? So I've been interpreting its meaning based on its image and name alone, and thus have not realized the full extent of its original connotation, if that makes sense? (More info on this phenomenon can be found by looking up the "communication process" if anyone's interested)

#

Also, thus why I asked.

late pewter
#

Hi Everyone! Did I, like, miss the Memo that went out where we all as modders collectively agreed that Oak Resin is the single most important fluid in the entire game? Started a new modded playthrough recently and all my mods are asking for like 5, 10, 15 bottles of Oak resin for every machine. I need to know, I have a few mods on my list of mods to make, I need to know if they must use Oak Resin.

wanton pine
rancid hazel
#

lol i think i asked in the wrong channel, but i am still having issues changing some dialogue around. is someone free to help walk me through it :')

wanton pine
wanton pine
strong kite
#

mrshrug I don't see much wrong with it

#

I mean I added like 8 tilesheets for one map for like only a handful of assets each heehee

wanton pine
#

Give me a bit and I'll dig up a better solution for you from the vanilla tilesheets or make a new one for you to use - my only caveat with the latter is that credit is given where it is due.

strong kite
#

I mean- I don't need a better solution tbh, what I've got works

wanton pine
#

It does exactly what it's supposed to but it sticks out like a sore thumb.

#

Suggestion:
Use the three-tiles-tall potted tree found in the upper left hand corner of TownInterior2 and a one-tile-wide bush of the correct season from bushes.png (found in tilesheets, not maps)

#

For clarity, only use the pot and trunk of the potted tree.

#

This should look much more congruous with the rest of the festival than your current solution without deviating from its concept. However, it might also not cover enough of Darkrai (sp).

#

Assertion: I find your solution clever and wanted to honor its spirit, which is why I'm trying to do the same things with different plants.
Sorry if I'm being a bit overbearing about it, I'm - not great at social interactions.

nova gale
#

does anyone know, if I used a randomized dynamic token to set the reward of a special order, would it stay whatever it was when generated or would it change each day?

#

even after generated on the board/accepted

#

(if nobody knows I'll test it soon and can report back if anyone else cares :P)

strong kite
wanton pine
#

Exactly!

strong kite
#

I'll see how it looks in game

#

Oh shoot actually it doesn't work... the map struggles to find something not located in the map folder, and the bushes aren't in the map folder

urban patrol
#

!tilesheetclimbing

ocean sailBOT
#

When creating or editing maps in Tiled, one common error is tilesheet climbing, marked by red text containing "invalid tilesheet path '../../..'. This is caused by SMAPI not being able to find the tilesheets needed by the map file. To prevent this error, make sure that you have a copy of all necessary tilesheets in the folder containing your WIP tmx file. Copies of vanilla tilesheets can later be deleted, but must be present while working on your map.

If you get this error with a completed map, an easy way to fix it is to open your tmx file in VS Code or a similar text editor, find all of the places with <image source=, and remove the filepaths to so that only the tilesheet names remain. For example, if the code says <image source="Content (unpacked)/Maps/townInterior_2" width="512" height="64"/>, change it to just <image source="townInterior_2" width="512" height="64"/>.

urban patrol
#

oh hmm that doesn’t say it

#

you have to specify the relative path

strong kite
urban patrol
#

just open the tmx in a text editor

wanton pine
#

When I had this problem, I found that solution to be a very easy fix!

strong kite
#

So I tried this, I like the pot a lot. I'll try with the actual bush now

#

How much do I need to add to the path??

oblique meadow
#

You can just add ../tilesheets/bushes as the source

#

Add a ../ before tilesheets

strong kite
#

Oh okay

#

I kinda like it? It covers up everything it needs to but it itself is a bit strange being cut off at the sides

#

Alright yeah I'll go with it

#

Thanks!

nova gale
wanton pine
#

(three vanilla potted plants cut apart, cloned, grafted together and then reanimated, lol)

#

Please don't feel obligated; I was inspired and wanted to make it.

valid folio
urban patrol
#

i don't know exactly how to fix that but giving the default torch recipe is what happens when there's some kind of mismatch between like the object and the recipe name or something

valid folio
urban patrol
#

here's the most recent occurrence of this error i could find

inland rain
#

@golden spire You should be able to create custom balloon objects now, just tell the mod about their texture path:

{
    "Action": "EditData",
    "Target": "aedenthorn.CraftableBalloons/dict",
    "Entries": {
        "MyMod_PurpleShortsBalloon": "MyMod/PurpleShorts"
    }
}
urban patrol
#

maybe going through old conversations like that could help?

valid folio
barren tapir
#

I JUST REALIZED I FORGOT TO DO THE ANCIENT FRUIT BOOK SDVpufferwaaah SDVpufferwaaah SDVpufferwaaah SDVpufferwaaah SDVpufferwaaah

urban patrol
oblique meadow
#

I’m here. But I do not check the box as smarter than Nic

urban patrol
#

means a lot coming from the wise old lorax

valid folio
urban patrol
#

just a search for 'torch recipe' is what i did

wanton pine
#

Buenas noches, senor. 🙂

oblique meadow
valid folio
oblique meadow
#

It’s been a long day and my eyes are tired, but I think this would work:

"Entries": {
"{{ModId}}_Turkey_Feather_Omelette": "-6 1 Mizu.Turkey_TurkeyEgg 2 Mizu.Turkey_TurkeyFeather 1/{{ModId}}_Turkey_Feather_Omelette/null/Turkey Feather Omelette"
}

#

(On mobile so poorly formatted)

urban patrol
#

(if/when you do figure it out, lmk what the issue was? so i can more accurately tell others in the future how to fix it)

proven spindle
#

null might work there too? I forget, but that field can't be skipped

oblique meadow
#

Fair enough. Was running off memory and I haven’t done a recipe in a hot minute

latent mauve
#

I wouldn't think that the unlock condition and the display name fields being blank should not be the issue here as the number of / field dividers appear to match up, and the blanks between the / are for fields that are default or unused? I would expect it to be something along the lines of the feather or egg or the omelette not being properly defined as objects.

#

(I am also tired, so it's possible I miscounted, but I think that was the right number?)

valid folio
oblique meadow
#

There should be rules against helping while tired /lh

proven spindle
#

(although looking at the vanilla recipes you might be right that it shouldn't matter at all)

valid folio
#

I’m lost now... I don’t even know what you all think I should try anymore. See, this is what I already did before coming here to ask:

  • I wrote it the way I usually do for the other recipes in my mod, and it didn’t work.
  • I wrote it another way, didn’t work.
  • I rewrote it replacing the ingredients with vanilla objects, didn’t work.
  • I changed the recipe to the way Mizu writes them, which is how you see it in the link I shared, and that didn’t work either.
  • I checked the recipe IDs and item IDs, they seem correct, but it still fails.
  • I removed the conditions and it was still failing.

That’s everything I tried hahaha.

latent mauve
#

Question: Is this editing Mizu's mod, or is it yours?

valid folio
latent mauve
#

If it's the second, then the {{ModId}} may need to be written out to Mizu's if the yielded dish is from Mizu's

#

Unless the yielded dish is created in your mod and uses your own mod ID in the object name

#

(I closed the log, so I'm not sure what the object name was anymore)

valid folio
latent mauve
#

okay, reopened it, ignore me, I see the object being created earlier in the code

#

do you by chance have an error log to share?

gaunt orbit
#

seriously tempted to ignore my ongoing projects in favor of doing my own take on vanilla hybrid crops

latent mauve
#

the field is unused but it might still need SOMETHING present even if the value gets ignored, since it doesn't have a default value listed

torpid sparrow
#

Pick up ur butt and sleep in a nice fluffy truffula tree

valid folio
torpid sparrow
#

Iirc you need something in the unused field

#

Might not throw an error

proven spindle
#

(think that's three of us now that have said that lol)

latent mauve
#

If it does in fact not throw an error if that unused field needs a value in it, that is quite annoying.

#

And if that is the solution, it necessitates an update to the wiki to indicate that a value must be present.

torpid sparrow
#

I’m like 70% sure this has been a thing

latent mauve
#

I'm super tired but I also can't recall a time I haven't put a value in that field

torpid sparrow
#

When I first did recipes I struggled with it

valid folio
#

Oh, similar to one of my mods haha, although I’ve kind of left it a bit abandoned because I’m juggling a lot right now three things at once yes three not two hahaha with some translations and my main mod.

ocean sailBOT
#

Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 95 C# mods and 271 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

latent mauve
#

Reminding me, I need to convert parts of my mod to i18n still, ugh

proven spindle
#

I think it's one of those 'someone experienced with programming would default to not skipping it but someone who isn't would think it can be skipped' things

#

I'll go toss a note into the wiki

torpid sparrow
#

It’s been discussed over and over it’s just never been put on the wiki I think?

#

HAHA

#

I knew I was talking about it back then

proven spindle
latent mauve
#

Thank you!

proven spindle
#

That whole wiki page could use an overhaul though, I'll see if I can work on it later

torpid sparrow
#

But I haven’t tested

#

Would be good to test and add that if it’s the case

#

Pick any two numbers you want but the field must be present/filled in

latent mauve
#

Hayato, which of your mods is this?

#

Because I'm looking at the log and trying to figure out if it even TRIED to add the recipe due to the empty field, but I'm not sure it has.

proven spindle
torpid sparrow
#

Peak

#

Let me get a slice

valid folio
#

The funny thing is that when I look at recipes from other mods, every modder writes it in a different way. If you guys need to go rest, go ahead. I should do the same, and like I said, this isn’t urgent to fix and it can wait until tomorrow.

latent mauve
#

Answer my question first LOL

#

What's the mod name I should be looking for in the log

torpid sparrow
#

Or the numbers are different?

valid folio
latent mauve
#

okay, so it did try

valid folio
ocean sailBOT
#

@valid folio You leveled up to Farmer. You're now a prettier shade of blue. Thanks for sticking around!

proven spindle
#

-# also thanks to wumbus I now get to test this mod while listening to cantina music, praise wumbus SDVitemwumbus

proven spindle
valid folio
torpid sparrow
#

Bc the structure can’t change?

proven spindle
torpid sparrow
#

@proven spindle confirmed that the different numbers wor

#

OMG

#

stop..we are so together brain

proven spindle
#

I'll update the wiki note

torpid sparrow
#

The structure looks the same

proven spindle
valid folio
#

Well, looking at Modder’s Pie, it looks very similar to how I usually make them. I was thinking, could it be a load order issue? I mean the mod load order, and if that were the case, wouldn’t removing the recipe conditions have fixed it?

proven spindle
#

Hmm hasmod should have taken care of that

#

Just to confirm, have you added that pair of numbers field? And have you slept a day in game after reloading it with that?

valid folio
#

I’m going to try something. I don’t think it will work, but there’s nothing to lose by trying.

valid folio
torpid sparrow
torpid sparrow
#

Wait so it’s not filled in?

valid folio
torpid sparrow
#

Fill in all the fields before testing

valid folio
torpid sparrow
#

Hmm

#

I’d still fill it all in

valid folio
torpid sparrow
#

Oki :3

valid folio
proven spindle
#

Looks like it does work even if the numbers aren't filled in as long as both slashes are present (not going to change the wiki note yet bc I think that might be more confusing to explain in there in the current wiki page format)

torpid sparrow
#

Maybe change the entry name in the shop to the same @valid folio

#

Instead of adding _Gus at the end

valid folio
torpid sparrow
#

(If it does then great if it doesn’t then idk SDVpuffersquee)

torpid sparrow
#

Yeah like that

#

Same as item name

valid folio
torpid sparrow
#

Fingers crossed

#

Since you’re not at farmer level yet (level 25), you’ll have to have someone else do it for you

#

And the mod must be free of NSFW and AI

fossil osprey
valid folio
torpid sparrow
#

Nooo

#

Is it still wood and sap?

valid folio
torpid sparrow
#

Ugh rats

valid folio
proven spindle
#

Have you slept a day after restarting the game? Not sure whether recipes get defined day before or day of

torpid sparrow
#

Try changing Name in the item entry to match the one with modid?

torpid sparrow
torpid sparrow
#

so I’m just trying to figure out where there could be different ids

#

And where they can be unified

#

Here

valid folio
#

waiting gus...

torpid sparrow
#

You can debug shop

#

To open it without waiting for ol’ Gus

valid folio
torpid sparrow
#

What is the error again?

proven spindle
#

Is the error only visible in the game shop menu or are there any messages in smapi?

valid folio
# torpid sparrow And where they can be unified

I’m visually disabled, I can’t see anything with a white background because I literally see everything as white even if there’s text or images, it blinds me hahaha. I don’t know how to debug it without waiting for Gus. No, I already checked the SMAPI log and there’s no error, but since I haven’t closed the game yet, I’m going to check if it throws any error. Was there something else you wanted me to test with the IDs?

torpid sparrow
#

In your Data/Objects entry, you have {{ModId}} as ur entry( and then the “Name”: field under it

#

The name and the entry name is different

#

Try making those the same

#

Lmk if you know what I’m talking about

valid folio
valid folio
# torpid sparrow Lmk if you know what I’m talking about

This way?
"Entries": {
"{{ModId}}_Turkey_Feather_Omelette": {
"Name": "{{ModId}}_Turkey_Feather_Omelette",
"DisplayName": "{{i18n:Turkey_Feather_Omelette.DisplayName}}",
"Description": "{{i18n:Turkey_Feather_Omelette.Description}}",
"Type": "Cooking",

torpid sparrow
#

Yes

proven spindle
#

ooo good catch wem

torpid sparrow
#

Mayhaps dolphin is here to save the day

torpid sparrow
valid folio
proven spindle
#

you're right tho, that is supposed to be the internal name

devout otter
torpid sparrow
#

So it is that one?

devout otter
#

Oh wait sorry, it seems wem has pointed that out.

proven spindle
#

not sure if that's what's causing this specific issue but it is an issue that has to be resolved either way

torpid sparrow
#

I am grateful for the confirmation dolphin SDVpuffersquee

#

I wasn’t sure

valid folio
devout otter
#

Yar, so the Name field defines the item ID.

#

So you did set the item ID to be {{ModId}}_Turkey_Feather_Omelette at the beginning, but then the Name field changes it.

valid folio
#

it works

torpid sparrow
#

YAYYYYYY

#

YAAAAAAYYYY

valid folio
torpid sparrow
#

Hmm is that in the wiki

#

That it should match up with the Name field

devout otter
#

The wiki does say that the Name field is the item's internal ID.

valid folio
devout otter
#

Both the entry at the top and the Name actually define the internal ID. It's just that the Name supersedes.

valid folio
torpid sparrow
#

I usually just make everything the same now SDVpuffersquee

devout otter
#

The Name field is basically if you want to change the internal ID after the fact. Like in another mod or.something

devout otter
valid folio
uncut viper
#

The Name vs ID thing is complicated and it's not always the case that Name supersedes it

#

Recipes however is one such case

#

"its complicated" is why the tl;dr is "just make them match always unless you specifically have reason not to. you will find out if you have specific reason not to"

devout otter
valid folio
uncut viper
#

I am truthfully not aware of what all might break by changing the Name of an object rather than its ID

#

It might be completely fine or it might not be

torpid sparrow
#

Or any shop

#

Or is it given another way

valid folio
valid folio
torpid sparrow
#

Hmm the answer is probably it’s complicated then xd

valid folio
# torpid sparrow Hmm the answer is probably it’s complicated then xd

I know that changing the recipe ID or ingredients doesn’t affect anything even if it’s already been purchased. What worries me more are the items in my mod, like seeds or crops, so I changed the Name field in the seeds and the fruit of my Vanilla plant. It generated some with the original Name, and I went to sleep in-game. Now I changed the value of that field and restarted the game, so we’ll see what I end up with in my inventory in the morning.

torpid sparrow
#

Ohh yeah

#

If I change an id I would use migrate id but I’m not sure if that works with Name

#

Instead of the entry? Although they both set the internal ID

valid folio
# torpid sparrow Ohh yeah

Have the others already left? I wasn’t able to thank them properly because they stayed here for hours with me trying to solve it, so if you see them, please pass along my thanks to them, and to you as well, of course.

valid folio
valid folio
torpid sparrow
#

Ah that makes sense

valid folio
torpid sparrow
valid folio
valid folio
torpid sparrow
#

My people is strawhatwem

valid folio
torpid sparrow
#

ex. Joja Boja (what the hell is a boja?)

valid folio
torpid sparrow
#

That me 4yippe

valid folio
#

Well, technically it’s today hahaha. Thanks again, and I’m heading out now.

torpid sparrow
#

night!

valid folio
torpid sparrow
#

It’s 2:30 pm for me as I’m on vacation on the other side of the world (relative to Canada) :3

golden spire
#

Perth? (random guess)

torpid sparrow
#

No haha

#

China

golden spire
#

would have been my 2nd guess, 3rd would be Indonesia

midnight eagle
#

just joined, are we allowed to plug our own mods? doodlPeek

unreal spoke
#

Absolutely.

valid folio
midnight eagle
golden spire
#

do you want me to send that to the modshowcase?

midnight eagle
#

if you think its worthy, hell yeah SDVpufferwow

golden spire
#

done

rose bobcat
#

using C#, i want to load event data from a .json and patch it in during runtime, this is the general format where "foo" is the event id, "bar" is the event data, and "Farmhouse" is the location
how do i access the properties of the generic object in Farmhouse?

#

in JS, i'd just do loadedJson.Farmhouse[0].foo, i am having the damndest time with doing this with C# because i have no idea what types to load things as

uncut viper
#

You can reference Newtonsoft directly (its in your smapi-internal folder in your game folder), but most often people will make a class that matches the properties and types you expect and specifically load it as one of those classes (which SMAPI does via Newtonsoft of course but has helpers for you to do it without you needing to touch newtonsoft directly)

#

That said, are you sure loading event data from a json like this is the way you want to go about things (I don't know what mod you're making)

rose bobcat
#

okay, so that is why ModData is a thing

uncut viper
#

Yeah, that'll load files from your folder for you

#

There should be a like, ReadJsonFromFile<> or something in there

#

In your helper

rose bobcat
#

yes, it's a mod that requires C# for other things and i don't want to have two separate things for both CP & a .dll (as i understand it, they are mutually exclusive within a single mod)

#

yeah, that exists

#

i just thought it would be easier

#

but no, no shortcuts lol

uncut viper
#

Well loading it directly into a class is about as easy as it gets

rose bobcat
#

yarrr, i'm just used to it literally being trivially easy in JS

uncut viper
#

I guess you can maybe technically load it as a dynamic or something. Or just as an object and reflect to get its properties

#

But both of those sound painful

rose bobcat
#

what does reflecting even do? i've seen it mentioned a few times

#

google, i guess

uncut viper
#

I'm not sure if I can properly explain it in a succinct way but it is basically getting information about types and classes and methods and such at runtime instead of compile time

#

e.g. use reflection on your object to find if the real underlying type has a Property named foo in it, and then grab it via that reflection

rose bobcat
#

ahhh, "reflecting" is "reflecting" on the assembly, like looking at itself in runtime

uncut viper
#

(that said, dunno what the actual underlying type would look like when its a newtonsoft JObject. you'd more likely need to reflect to use Newtonsoft's methods on that JObject)

#

yeah basically

#

There's no point to doing so in this case, but it can be very helpful in other cases. So helpful that SMAPI has helpers for it as well in your ModHelper

#

Often times, it's used to gain access to private members

#

Like private methods or internal fields

rose bobcat
#

isn't that a symptom of poor code?

#

or are there valid reasons to do it regarding stuff you've written yourself?

uncut viper
#

Not necessarily. In an actual production codebase? Possibly. In modding, though, what other choice do you have?

#

(The answer is: a publicizer, which is what I use instead of reflection)

#

You wouldn't reflect for your own things

#

You reflect to gain access to the games private code, or another mod

rose bobcat
#

okay, so if i'm writing something and reading my own data, if i'm reflecting i'm probably goobering it up, reflecting is for when i need to do things with other people's stuff

uncut viper
#

Generally yeah

#

And I only say generally because I wouldn't proclaim to know otherwise with certainty SDVpuffersquee

rose bobcat
#

nonsense, make broad sweeping statements at 12 AM

#

live a little

#

thank you so much by the way, been tearing my hair out

uncut viper
#

You might reflect for your own stuff if you're doing some wild dynamic assembly/member construction or something

#

But most people do not do that

rose bobcat
#

i hear assembly and my eyes glaze over

uncut viper
#

When I say assembly I mean like, your .dll is an Assembly

#

You can construct a .dll (practically but not literally speaking, though literally too if you really really want to) on the fly at runtime if you really want

rose bobcat
#

christ

#

i'll take my duck typing and implicit arraylists and quack on back to JS, thank you very much

uncut viper
rose bobcat
#

i can't, i'm too busy loading my 60 nested promises

#

so no worries there

uncut viper
#

.then().then().then().then().then().then()

rose bobcat
#

{{{{{{{{{{{{{{{{{{{{
}}}}}}} if(x > 0) y++ }}}}}}}}}}}}}

uncut viper
#

every linter's dream

brave fable
#

await promise(); 🧘‍♂️

blissful panther
#

(And to be clear, this is just me being scared by non-strongly-typed languages because it hurts my brain. SDVkrobusgiggle)

echo wharf
#

When I install the mod, does my cooking skill need to reach level 10 to start unlocking the secret room, or do I only need the 5 vanilla skills?

fossil osprey
#

That would be a question better asked in #modded-stardew, but I think mastery is unlocked with vanilla skills (may someone correct me if I'm wrong)

hard fern
#

for real thought i was in modded stardew for a second LOL

inland rain
tough osprey
fossil osprey
#

Congrats! Do you want me to showcase it?

tough osprey
#

oh! sure SDVpufferaww

fossil osprey
#

There you go SDVpufferheart

tough osprey
#

thank you! SDVpufferparty

verbal glacier
#

congrats :D

clever monolith
#

Not at pc so I can't check the decompiled game files so hoping I can get answers here: do legendary fishes have any special mod data that sets them as the once per save file catch? Or are they just checked via their item id?
Asking because I need to exclude modded legendary fish from fishing quests and wondering if there's a generic mod data I can check for, instead of hardcoding item ids.

calm nebula
#

It's in the fish data

clever monolith
#

Nice
Thanks!

strong kite
#

Question: How would I add a custom portrait for an NPC? Would I add a custom tilesheet of their portraits including the new one? Do I just have a 64x64 image of the new portrait I can append to the end of the existing vanilla tilesheet?

gray bear
#

You can load your assets directly into the game and use it from there

strong kite
#

How would I call upon it in dialogue? Just by using the next ID in the order starting from the end of their vanilla portrait sheet?

gray bear
#

you mean like change expressions?

strong kite
#

Yeah, like using it for a dialogue box

gray bear
#

^

strong kite
verbal glacier
#

what do you mean it can be anything?

gray bear
#

generally speaking there's like a set list of facial expressions

#

but you can just use the numbers

strong kite
#

This implies the ID can be anything rather than just a number

#

Which I didn't realize

verbal glacier
#

that would be $6 and up not just anything

gray bear
#

oh yeah you can add expressions

#

you would need to use the number bc custom ones don't have shortcuts like $h

strong kite
#

Wait so it DOES have to be a number?

fossil osprey
#

yes

gray bear
#

the id is just the number, yeah

verbal glacier
#

yes because it has to match the number of your portrait

strong kite
#

Alright

fossil osprey
#

it's even worst, it's automatic, you don't choose what it is

strong kite
#

Oh phenomenal

fossil osprey
#

Your 7th portrait is $6, your 8th $7, etc.

gray bear
#

thats cause it starts on $0

strong kite
#

Alright yeah

#

I've done a full set of portraits before so I know how it works, but I haven't added a portrait to a vanilla NPC until now

#

So I was just making sure

fossil osprey
#

It just works the same then

gray bear
#

you can call any of their portraits in dialogue as long as each one is 64x64

#

don't know its there's like, a limit of how many portraits you can do but like, you can do a lot

#

just look at RRRR

strong kite
calm nebula
#

You extend downwards and hope no one else did lok

fossil osprey
#

basically lol

strong kite
#

Alright cool

fossil osprey
#

That's why you make compats

gray bear
#

you can just look at the portrait and use accordingly

#

when someone does a replacer its important to use the same order of expressions, at least

strong kite
#

I mean this is just a very specific portrait used in a single circumstance so I guess if it gets messed up it's not a huge deal

#

If anything I guess I'm worried about mine messing up other people's mods

gray bear
#

like the base ones are:
neutral
happy
sad
unique (character specific Shruge )
love
angry

#

just add stuff after those

tiny zealot
gray bear
#

,,,does avi know about that?

fossil osprey
#

don't tell them

tiny zealot
#

yeah avi is how we (some of us) figured out the limit was removed

gray bear
#

ah right i forgot they were testing portraits limits

#

generally speaking you can edit the portrait to add a new expression but you'd need like, dialouge that uses it

tiny zealot
#

they also know about the texture size because somebody did a 256 (4x) version of their 104 portraits and some of their users crashed due to exceeding said texture size limit

rose bobcat
#

if i want to patch Data/Events/<location>.xnb w/ C#, should i be using the assetrequested event still? it doesn't seem like the events are ever touched on game startup

#

je suis confuse

gray bear
#

graphics too high quality, computer dieded

tiny zealot
#

lots of assets are loaded on-demand instead of ahead of time at game launch

gray bear
#

hey ichor how many expression does Lacey have

tiny zealot
#

9

rose bobcat
#

or at least that's what seems to be happening...?

#

oh wait

#

i'm an idiot

tiny zealot
#

probably some other cause for that issue. if you are using assetrequested, the data will arrive before the game needs it

rose bobcat
#

i missed the call HA HA

strong kite
#

I'm debating adding support for this with the Seasonal Cute Characters mod just because I actually use that mod, and It's not like the asset-side of things is gonna be difficult, basically just copy-pasting one part of the portrait to all the others... but then I'm gonna have to figure out how to actually implement that 😭

rose bobcat
#

i have it printing out all the asset requests instead of just the one i'm looking for (like a smart person would) and i missed it in all the other start of day assetrequests

#

tyty @tiny zealot

strong kite
gray bear
#

mhm

strong kite
#

I like it a lot :3c
Though I just don't want to figure out the when conditions with season conditions and all that.

gray bear
#

uhhh pretty sure its using the appearence system which is pretty straightforward

tiny zealot
#

doesn't that mod use Appearance now?

#

so you would just EditImage the assets they are using for that, dusting off hands motion

strong kite
#

Idk mrshrug
This is new territory for me HehSweatCloseup

gray bear
#

im unsure what exactly u wanna do. edit the seasonal or like, add more?

strong kite
#

I mean I'm also not replacing anything, I'm adding.

gray bear
#

oooh

#

depends on what exactly you're editing you can just, edit existing appreance fields or even add new ones

strong kite
#

I might just not worry about it for now. I should figure out how to add for the vanilla appearance portraits first before figuring out how to do the same for a mod HehSweatCloseup

gray bear
#

if you mean checking the vanilla code, that doesn't use the appearance system

strong kite
#

I legit don't know what I mean 😭
Again, new territory for me. Legit 0 clue what I'm doing

#

I'm saying things based on the context of what y'all have said and hope I'm getting it right HehSweatCloseup

gray bear
#

feel free to use the link i sent, might help. but yeah, first figure out how to do before editing

calm nebula
#

You have other ways if you're in an event

strong kite
#

This is for gift dialogue

#

So just having loads for the files like this should just work?
Assuming purely based on this being how my custom NPC's portraits have worked (as in just loading them and they work without any extra work)

gray bear
#

wouldn't this just replace the portaits

strong kite
#

That's why I was asking how to do it before 😭

gray bear
#

if you're adding new portaits for an existing npcs you're gonna have to use the "add to original image" methood

#

as in psychically paste them in

strong kite
#

Oh, alright! How do I do that? Is it literally just pasting the original image into my files with the new portrait added onto them?

gray bear
#

you take the old portraits, than add the ones you made below them. don't think there's a way to do without that

strong kite
#

Alright yeah that's what I was saying. Alrighty!

tiny zealot
#

surely you could PatchMode: Overlay your new portraits?

gray bear
#

but what about the size

tiny zealot
#

or just FromArea/ToArea

gray bear
#

i guess patch mode overlay would work, you'd just need to like, have a big ol empty space

strong kite
#

I mean like- I'm fine with whatever works and preferably is most compatible with other mods

gray bear
#

would to area work because the applied image would be bigger than the currect one

tiny zealot
#

yeah editimage lets you extend downward (but only downward)

gray bear
strong kite
#

Extending to the side sounds messy anyway cuz that changes the ordering of IDs

tiny zealot
#

that's why CP doesn't let you do it lol

gray bear
#

yeah don't do that anyway

#

so like for vincent you'd need to uhhh

strong kite
#

Alright so basically: Use this, editimage and overlay?

gray bear
#

yeah

strong kite
#

Alrighty!

gray bear
#

as far as compatibility goes its hell, just so you're aware

strong kite
#

I'm gonna need to load the images to a blank, right?

gray bear
#

that is the wrong word

#

nope

strong kite
#

I am never gonna understand when I need to use the blank heehee

gray bear
#

just edit image on patchmode overlay

#

blank is when you're adding new content. you're just editing existing one rn

strong kite
#

Ah, alrighty

gray bear
#

it isn't used for portraits anyway, really

strong kite
#

Do I still need to explicitly load the portraits at all?

gray bear
#

not for vanilla characters, no

tiny zealot
#

no. it will cause problems if you do

gray bear
#

loading over an existing portrait would just override it, yeah

strong kite
#

Alrighty!

tiny zealot
#

Action: Load is for two things:

  1. replace a vanilla asset entirely
  2. provide a new asset
#

editing a vanilla portrait sheet, or a portrait sheet provided by another mod, is neither

strong kite
#

Alright, so does this look good? Anything I might be missing or got wrong?

#

I see missing commas hold on

tiny zealot
#

129 is probably wrong

#

you likely meant 128

strong kite
#

Oh shoot right cuz it starts at 0?

tiny zealot
#

yes

strong kite
#

Alright, thank you! Thank you both of you!

#

I should probably turn off the portraits mod I mentioned earlier for the sake of testing...

#

Okay firstly, that was definitely the issue. This is completely incompatible with that mod which is very unfortunate.

#

Secondly... Why does he have an afterimage 😭

gray bear
#

i mean when i said compatibility would be hell this is what i meant. any mod that edits portraits just collapses in on itself

#

dunno about that blue

#

vincent is attempting to become 3d

fossil osprey
#

shouldn't have eaten that /j

strong kite
#

Maybe I just don't do the custom portrait HehSweatCloseup
Not a big deal, just a silly little thing I considered

void aspen
gray bear
#

get rid of the patchmode overlay

#

for the sake of the games sanity

tiny zealot
strong kite
#

Since I'm gonna be playing games with friends in a bit, I'd definitely prefer just scrapping this one idea that would cause nightmares of compatibility with other mods including ones that i use instead of spending the time to try and figure this out LUL

gray bear
#

is the mod you're using SCO?

strong kite
#

Oh okay removing patchmode overlay actually fixed the afterimage

gray bear
#

hmmm

#

i guess overlay made a ghost

#

see you're gonna need to do this for every seasonal variant to be fully compatible

strong kite
#

Well the thing is it wasn't working at all when I had the seasonal portraits mod enabled

gray bear
#

as in adding the goober to every one of these

strong kite
#

I do have the winter variant from vanilla though

gray bear
#

mod uses a whole different winter variant

strong kite
#

I can see that

#

Again, I think I'll just scrap this idea

gray bear
#

it can be done, wouldn't be too difficult, really. just tedious

#

what you can do is ignore vanilla and just edit Portraits/Vincent_Spring and such

strong kite
#

I could, but then it wouldn't show for anyone who doesn't have this particular mod

#

I mean I could probably just do vanilla AND all the modded ones

#

But again, compat nightmare

gray bear
#

can have both. they are disconnected, really

#

yeah just, a lot of portraits

#

and also editing gift tastes to use that portrait

#

it's a cool idea! if u feel like doing the extra work

strong kite
#

I imagine the code would by default just use the corresponding sprite for the season without much work from me

gray bear
#

yeah SCO handles those

strong kite
#

But that's also why I held off on figuring out the modded stuff cuz I wasn't sure

#

Either way, I've changed the dialogue to not imply that he's eaten it immediately

#

Adding portraits would be so much more compatible if you could assign any ID for it yourself. Maybe we see if ConcernedApe can add that for 1.6.16 or 1.7?

#

If it's not already planned. I don't know what's confirmed coming

tiny zealot
#

i would file that under "unlikely, even if asked for"

strong kite
#

dang...

severe cairn
#

Longer weapons for 1.7 trust SDVpuffersquee

gray bear
#

adding portraits is inherently a very complex issue

calm nebula
#

looks left, looks right

#

Actually I think it's doable in a new dialogue command that changes the portrait sheet

#

is chased off stage left by people saying "be the change"

gray bear
#

oh?

#

come back

faint ingot
#

Can I put a dialogue break (#$b# or #$e#) inside of one half of a gender switch command ${him^her}$ ?

rose bobcat
#

i think i understand why no one makes events in the farmhouse

#

accounting for the different upgrades is extremely annoying for positioning unless i am missing an obvious quick trick

severe cairn
#

Farm and farmhouse is scary

#

For events

faint ingot
#

can you even do events in the farmhouse?

rose bobcat
#

yup

#

going to have to patch it every day to update coordinates based on upgrade level

#

i am only going to do this one time, i refuse to do this again LOL

severe cairn
#

Also furniture... Scary...

rose bobcat
#

i am being very careful to put the player somewhere you are very unlikely to have furniture

#

starting in front of the fridge, moving left to the oven, then moving to the sink, it's 3 tiles total in the kitchen

#

just the farmer having a late night snack, not feeling well, angry emote, done -- yet it's probably going to take longer than any other one in this project LOL

brittle pasture
rose bobcat
#

haha, you mean

#

incompatibilites

brittle pasture
#

-# totally understandable if you just say "not my problem" though

#

-# yep lol

rose bobcat
#

unless everyone decides they want to include the coordinates of those tiles in a .json or an api or i want to try to find it by automatically trying to match the sink/fridge/oven sprites to the positions on a spritesheet, i have no idea how to cover more than just vanilla

#

i guess i could make it easy to define patches by just pulling those values from a config file? but uh, this mod is 80% just for me, so

tiny zealot
rose bobcat
#

interesting, i'll give that a try (once i figure out how to elegantly patch the stupid coordinates, ugh)

#

oh wait, i know how to do it, i'm dumb

severe cairn
#

What's the event command again?

calm nebula
#

The actual video game hardcoded a lot of that lol

verbal glacier
severe cairn
#

Woh

verbal glacier
#

harvey's event in the farmhouse uses that iirc

severe cairn
#

When in doubt yoink from vanilla 🙂‍↕️

#

It's how I got the parrot to work in both Leo's hut and treehouse

#

First time using specific temporary sprite SDVIridiumKek

#

Cus hardcoded

rose bobcat
#

ooh i caused my first crash

tiny zealot
#

harvey's farmhouse event is also seriously hardcoded (of course)

#

specificTemporarySprite harveyDinner or whatever it is also hands off to a big C# function that figures out where your fireplace is and sets up the dinner table, etc.

rose bobcat
#

silly me, i called my patch list "patchList" instead of "patches" lol

calm nebula
hard fern
#

Huh...

rose bobcat
#

is there a convenient way to access Monitor without passing it into other classes?

hard fern
#

What if you already have furniture in front of the fireplace

#

And is it possible to have a non friendable npc who still has gift tastes?

tiny zealot
severe cairn
rose bobcat
#

are there labelled maps anywhere

#

of all the maps in the game w/ coordinates for each tile

severe cairn
#

Tiled is how I do it

#

Opening the unpacked maps in tiled I mean

rose bobcat
#

hmm

#

that is probably more efficient than shrimply starting the game over repeatedly

calm nebula
#

!hotreload