#making-mods-general

1 messages · Page 67 of 1

lucid iron
#

although, i dont want to make it for 1.6.8, because of 1.6.9 quest changes

velvet narwhal
#

and i don't remember if the uh

#

dialogue $action thing for maptiles is fixed in 1.6.9

#

i can retest it but SDVpufferthinkblob

tiny zealot
#

oh man don't make me work on the 1.6.9 stuff yet, i don't wanna

velvet narwhal
#

fix your stuff <t:1730731440:R> SMCKekLmaoDog

thorny tiger
#

so im a bit lost on what it means by: If you just use {{i18n: today}}, it'll show the literal text "today is {{DayOfWeek}}"). You can pass in the token like this instead: {{i18n: today |dayOfWeek={{DayOfWeek}} }}, in which case it'll show something like "today is Monday".

#

i dont understand what its saying you should call i18n with and what you should put in the i18n file

#

tried to look at the sve dialogue for examples but searching for }} }} it doesnt seem like they used it at all?

tiny zealot
#

it means i18n is just text storage and doesn't understand content patcher tokens

thorny tiger
#

yeah i get that but

#

i dont get what the actual text i need is

velvet narwhal
#

SVE uses it in things like characters/dialogue/NPCNAME

tiny zealot
#

but content patcher can edit the string when it fetches it for you ({{i18n}} is a CP token that fetches i18n strings)

thorny tiger
#

if i pass in {{i18n: today |dayOfWeek={{DayOfWeek}} }} what do i put in the i18n

tiny zealot
#

so you pass a parameter to the i18n token (that's what the |dayOfWeek={{DayOfWeek}} is in the example)

#

let me grab an example that doesn't use the same text for all three parts. one second

thorny tiger
calm nebula
#

(I have a lot of examples for fun things with i18n)

velvet narwhal
#

SVE is a very simplified thing in the form of it's literally only {{i18n: <key>}} i don't know if they actually use tokens within tokens SDVpufferthinkblob except maybe the gendered terms? but then idk

thorny tiger
# velvet narwhal

every time i think a mod uses assets/ only for images im missing so much stuff there and every time i think its got stuff there it uses it only for images SDVkrobussad

velvet narwhal
#

it's literally whatever the author wants to do with it, like i've named claire's .jsons something stupid like Chaos.json Incarnate.json

brittle ledge
#

Yeah, CP doesn't care, it'll just use whatever path you tell it too.

thorny tiger
#

so if im understanding this correctly then when you say |replacementToken={{InsertTokenName}} then in the i18n file you can just use {{replacementToken}} instead of {{InsertTokenName}} and it will recognise that?

tiny zealot
#

anyway in your i18n you make up your own "token", like this:
"my.i18n.key": "Here's some text but it has {{replacement}}."
and when you load it with the CP token, you do this:
{{i18n:my.i18n.key |replacement=style}}
and you would get
Here's some text but it has style.

brittle ledge
patent lanceBOT
#

yeah whatever. leave the request on my desk. i'll get to it. maybe. sip (#6307080) (8h | <t:1729202085>)

tiny zealot
#

typically the value of doing this is that you don't know what "style" is ahead of time, so often you use another token for that (like the {{DayOfWeek}} example you asked about)

thorny tiger
#

so youre effectively just loading a string defined by the i18n file with another string

tiny zealot
#

yeah, you are putting parameters into your i18n string using content patcher's ability to do so

thorny tiger
#

which is pretty much always a CP token otherwise no point replacing instead of just writing it in the i18n file

#

?

lucid iron
#

its cus i18n isnt a content patcher system, so it doesnt do tokens

calm nebula
#

Yeah

thorny tiger
#

doesnt do tokens but still uses tokenlike {{}} things?

#

not confusing at all trust

lucid iron
#

those are actually arguments

thorny tiger
#

right

#

ok that makes sense

#

ig its just the syntax throwing me a bit since its the same

lucid iron
#

you can raise concern with pathos ig

thorny tiger
#

i could

#

orrrrrrrrrrr

lucid iron
#

it'd be a big change though, i dont recommend it

#

think of all the old mods that change would explode

brittle ledge
#

Yeah, you'd need another rewriter in CP

tiny zealot
#

PR rejection any% speedrun

brittle ledge
#

And poor Pathos has done enough of those SBVLmaoDog

thorny tiger
#

yeah like it wouldnt be that difficult to change for old mods but it would be time consuming and a lot of mods just wouldnt and would break permanently

#

so many mods already lost to new updates because they didnt want to update to be compatible SDVkrobussad

tiny zealot
#

and for pretty limited value, at that

thorny tiger
tiny zealot
#

(potentially making it less confusing at a glance in exchange for modders needing to remember where the syntax is different)

thorny tiger
#

"yeah guys i know you lost half your mods folder but now we use single square brackets instead of double braces!"

#

dont think people would be too ecstatic

tiny zealot
#

you joke, but the vanilla string tokens use single square brackets SDVpuffersquee

velvet narwhal
#

make it 1.7, reasonable excuse since 1.6 was a 'maybe' as a modpocalypse

lucid iron
#

yea i mean, i guess you could use vanilla token strings??

#

idk if u can format stuff though

thorny tiger
calm nebula
#

With the space in between

#

Despite the fact that the parser doesn't need it

thorny tiger
#

because thats too many braces to never miscount by 1

calm nebula
#

One of the first mods I tried to make was a special orders mod

#

That uses {} for substitutes

finite ginkgo
#

But why SDVpufferlurk

calm nebula
#

Ask CA that

patent lanceBOT
#

@calm nebula: look at the dotnet string rehash code (3d ago)

finite ginkgo
#

Im going to leave that for someone braver than me

calm nebula
#

Why do special orders use {}?

#

To be fair it's likely an ask Podunk

blissful panther
#

It is fairly standard token syntax for things in various languages/frameworks I guess...

thorny tiger
#

is there some sort of tool for generating entries for content patcher actions

#

because there is just no way that flashshifter types out all of these fields that dont make a difference to the item

#

"Buffs": [
{
"Duration": 400,
"CustomAttributes": {
"FarmingLevel": 0,
"FishingLevel": 0,
"MiningLevel": 0,
"LuckLevel": 0,
"ForagingLevel": 0,
"MaxStamina": 0,
"MagneticRadius": 0,
"Speed": 0,
"Defense": 15,
"Attack": 0
},
},
]

#

you would think it would just be

brittle pasture
#

Maybe he grabbed a vanilla entry from the unpack and filled in only the fields he needs

thorny tiger
#

"Buffs": [
{
"Duration": 400,
"CustomAttributes": {
"Defense": 15,
},
},
]

latent mauve
#

The wiki should tell you which entries are optional and what the default values are if it's omitted

#

But it's really common to grab a completed example and just change what you need, as Selph said

tiny zealot
#

any programming language can spit out formatted text if you ask it to. i would expect any sufficiently large mod to have something of the sort (or at least a text editor macro or whatever)

thorny tiger
#

hm

#

ok

#

also whats up with like "Name": "Ancient Fiber"

#

dont you need to put the mod id

lucid iron
#

you dont have to but you should

#

SVE is kind of old mod so its got baggage blobcatgooglyblep

thorny tiger
#

fair enough

tiny zealot
#

if you are allowed to prefix something with your mod id, do it

lucid iron
#

usually yoinking from unpacked is a good start

tiny zealot
#

sometimes it is inconvenient (using your NPC's internal name in event scripts), but CP's tokens can solve that easily

thorny tiger
tiny zealot
thorny tiger
#

because clumps and nodes uses the very long "GlimmeringNodesAndClumpsEmeraldNode_Translated"

#

whereas sve is like "Phone.Leo" and calls it a day

velvet narwhal
#

Old mods typed out their modid, iirc {{ModId}} is a newer feature

#

If you're talking keys then only a few for npcs actually require their internal name because they're required

tiny zealot
thorny tiger
#

lmaooo true

blissful saddle
#

seems like DynamicNightTime can't handle times between 150 and 600, and I am a bit lost

tiny zealot
blissful saddle
#

and that's what Nightowl circunvents

#

the mod I am fixing right now

#

when the clock hits 2550, it changes it to 150 to avoid the abrupt end. and when the clock hits 600 again, the player colapses so the day can end and start a new one

#

most problems are fixed, like the fishes and the crash at 600 that was happening, because SMAPI updated how warp works

#

the last fix is to hit a light transition from 2550 to 150 and onwards that feels natural

#

the original code does this:

                // transition morning light more realistically
                if (this.Config.MorningLightTransition && Game1.timeOfDay > 400 && Game1.timeOfDay < 600)
                {
                    float colorMod = (1300 - Game1.timeOfDay) / 1000f;
                    Game1.outdoorLight = Game1.ambientLight * colorMod;
                }
blissful saddle
blissful saddle
# blissful saddle the original code does this: ```c# // transition morning light ...

I changed it to this:

                // transition morning light more realistically
                if (this.Config.MorningLightTransition)
                {
                    if (150 <= Game1.timeOfDay && Game1.timeOfDay < 400)
                    {
                        float colorMod = (2400 + Game1.timeOfDay) / 1000f;
                        Game1.outdoorLight = Game1.ambientLight * colorMod;
                    }
                    else if (400 <= Game1.timeOfDay && Game1.timeOfDay < 600)
                    {
                        float colorMod = (1300 - Game1.timeOfDay) / 1000f;
                        Game1.outdoorLight = Game1.ambientLight * colorMod;
                    }
                }
#

but the light doesn't go on as expected for the full night cycle

#

if someone has a suggestion, I am open

#

also thinking in how to make a compatibility patch to DynamicNightTime or the other way around

thorny tiger
#

vsc doesnt like trailing commas

finite ginkgo
#

Because VSC uses stricter JSON formatting, technically trailing commas (and comments as well) are not allowed by the JSON standard, but Newtonsoft (the library the game/smapi uses for JSON) uses is less strict and allows them

thorny tiger
#

yeah im using jsonc to allow comments but idk if its ever gonna stop complaining about trailing commas

blissful saddle
#

as long as it doesn't crashes, warnings can be ignored

thorny tiger
#

yeah its just annoying innit

blissful saddle
#

being on the fixing and updating old mods all week, I know

heady crest
#

i can just do this to add to her dialogue and schedule right?

finite ginkgo
#

Yes

heady crest
#

thanks

#

game is taking ages to load, would rather to make sure before waiting 30 minutes for it to load

tiny zealot
#

30 minutes seems like too long

lucid iron
#

how many mods are you running

#

but also u can patch reload yourmod.id

latent mauve
#

also to make absolutely sure: you haven't clicked the SMAPI window too much and put it in select mode by mistake?

tiny zealot
#

i could see 30 if you were already out of ram and thrashing constantly during the load, but otherwise i don't think you should hit that sort of load time

tender bloom
#

Occasionally people have weird antivirus problems

#

But 30 minutes is well outside the usual

latent mauve
#

Regarding select mode: If you accidentally click on the cmd or PowerShell window, it may highlight/ select text. When it does that, it pauses the output. This is also indicated by the title bar including the word "select" at the beginning of the title.

Hitting enter or space clears the selection and allows it to catch up.

tender bloom
#

Something like 1-5 min is typical, with a range of typical mod quantities

#

Occasionally people install a huge number of mods on a slower machine and load times go up, but that’s pretty rare and really hard to do by accident

oak dragon
#

I have a problem with save load, I changed my data model and then it doesn't read properly. I'm just simply reading and storing like this. The result of the debugging is that the model is fine before storage, but when I re-read it, the model is always null

#

oh sorry

blissful saddle
#

my problem is not the light, but the tiles

blissful saddle
#
// read data
var model = this.Helper.Data.ReadSaveData<ModData>("example-key");

// save data (if needed)
this.Helper.Data.WriteSaveData("example-key", model);
#

not sure if it works how you are trying to do

oak dragon
ocean sailBOT
#

@oak dragon You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!

blissful saddle
#

seems like to read, you need to use <ModData>

tiny zealot
#

ModData is just the name of the model in the example. i think seven is right to have used their own data type

oak dragon
#

yep It worked well for a loong time

tiny zealot
#

if you changed the model, you probably need to include fields for the old values that you may expect to find in users' saves. if you deleted them, the parse is probably failing when it can't assign to the missing fields

#

there's a way to exclude fields like that from serialization when you need to write out the data, let me pull it up

blissful saddle
#

I saw it now reading further

oak dragon
#

I ran a new game but still failed

tiny zealot
#

oh

oak dragon
#

public sealed class PlanData { public List<Plan> plan = new(); public int max_plan = 20; }
public sealed class Plan { public string title = ""; public string npc = ""; public string location = ""; public string action = ""; public string time = ""; public int special = 0; public string repeat = ""; public string item = ""; }

#

heres my data model

#

I changed special from str to int

oak dragon
# tiny zealot oh

I was looking for my key in the save file of the new game, but I couldn't find it, it means writesavedata failed. But I cant figure it out

tiny zealot
#

just to make sure, you are calling WriteSaveData at whatever point you have new data to write, then sleeping a day so the game actually saves?

dawn scarab
#

Does anyone have all of haleys portraits

latent mauve
#

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

latent mauve
#

People generally won't agree to redistribute game assets here (over Discord), you can unpack them yourself pretty easily though!

calm nebula
oak dragon
#

fk me plz. how can it work well for such a long time

#

I called savedata in OnSaved

#

thank you all very much

#

If I could avoid all my stupid mistakes, I would have lived more than twice as long as I am now

blissful saddle
#

mistakes makes us wiser if we learn with them

#

ok, I am done. I can't make the night transition smooth

#

seems like it is hard coded, and even DynamicNightTime, that should be able to handle it, doesn't

#

the beginning of DNT event that should take care of it:

        private void OnTimeChanged(object sender, TimeChangedEventArgs e)
        {
            //handle the game being bad at night->day :|
            if (Game1.timeOfDay < GetSunriseTime())
            {
                Game1.currentLocation.checkForMusic(Game1.currentGameTime);
                Game1.currentLocation.switchOutNightTiles();
                isNightOut = true;
            }

            if (Game1.timeOfDay >= GetSunriseTime() && isNightOut)
            {
                SwitchOutDayTiles(Game1.currentLocation);
#

technically it checks and manage if sunrise would happen after the current time and sets it to night tiles. but thing seems to be hardcoded somehow. And DNT uses Harmony to handle some things

#

I am just ranting. you may ignore me

#

I will upload my fixes. at least the fish are fixed and it doesn't crash at 6AM anymore

tiny zealot
velvet narwhal
#

SDVpufferthinkblob would the foreachitem in utilities be able to do something?

tiny zealot
#

context: it would be nice to show fashion sense hats in Lacey's hat registry menu, but the only hat i can get data for is the one the farmer is currently wearing (unless i simply did not see it)

#

oh, saved outfits, too, but that's not suitable here either

#

some reflection might also work, but i don't want an assembly reference and i don't think i can reflect into it without one

teal bridge
#

You can always reflect into the graph without needing an assembly reference via the API itself. (Just read the private target field)

tiny zealot
teal bridge
#

It might be incredibly inconvenient, mind you, if you have to traverse a ton of internal types, or worse, collections of internal types. Harmony Traverse is a lot better than SMAPI's reflection helper for that if you already have a Harmony dependency.

tiny zealot
#

i absolutely have a harmony dependency already SDVpuffersquee

copper fable
#

hi! I'm trying to use Stardew planner to plan out the new SVE frontier farm and the expansion but I can't find a high enough resolution image to upload, would anyone here know how to get a png or jpeg file out of a TMX file?

lucid iron
#

Tiled has a thing for exporting map as image

#

You should make copy of frontier farm, then unpack game to get all the tilesheets

copper fable
final arch
#

@weak oyster can we use monogame shaders?

#

I assume if anyone knows its you UGiggle

#

.. wrong casey, Im so sorry

#

@next plaza

next plaza
#

Yeah I've used them before

next plaza
final arch
#

mhhhhhhh k, thanks pufferheart

#

what did you use them for? moon misadventures?

next plaza
#

An unreleased mod that was a custom farm type. Certain parts of the map could flood, so I made it where the bottom few pixels of each item placed in the flooded area were overlayed with water

#

In a very janky way

lucid iron
#

tidal farm Woahelle

next plaza
#

Oh, hmm, looking into it further, there is a way to get depth sorting and multiple Begin() calls working

lucid iron
#

i thought about a map like that

#

but i wasnt very ambitious and was just gonna slap nofurniture on all the tidal spots

next plaza
#

You just need to enable the depth stencil state

#

But that would require harmony

#

(Making the base game use that for its appropriate sprite batches)

#

And also, uh, transparent pixels would mess with things some

next plaza
final arch
#

sounds awesome tbh 😄

#

the map I mean

#

Ive 0 idea of shaders so I thought maybe I could play around with them in SDV UGiggle

#

thanks!

lucid iron
#

but this farm map isnt skyfarm right

next plaza
#

Nope, that was a much older project

#

Skyfarm is more recent

copper fable
final arch
calm nebula
#

(You can also patch export the map)

#

It will also export the tilesheetd

patent lanceBOT
blissful saddle
#

someone has an easy access to the emotes list to use in Game1.player.doEmote(int)?

brittle pasture
dark cedar
#

Hello! Basically, I'm trying to find a way to put a temporary building where the traveling cart is. Not that I want to replace the cart, just to put my building there on days the cart is not there. ( I literally just want my building there on Mondays) I can't find a guide that talks specifically about how the traveling cart works. Is this something too difficult or am I not finding the right guides, thank you!

tender bloom
#

You just need to do a conditional map edit

#

The game probably uses C# to patch that area on cart days, but afaik this shouldn’t affect non-cart days at all

lucid iron
#

did you already make the building?

#

as in the tmx map file

dark cedar
#

nope, just the asset image

tender bloom
#

Ok, you’ll need to make a tmx. Buildings are just bits of a map that look like a building

#

Unless they’re the kind you build on the farm

#

!mapmaking

ocean sailBOT
#

If you want to make mods that add or edit maps:

  1. Use Tiled to edit .tmx or .tbin files.

  2. Refer to the Maps wiki page for details on how maps work in Stardew Valley.

  3. Content Patcher allows you to create custom locations through editing Data/Locations

  4. Vanilla Maps can be edited via Content Patcher as well: EditMap

lucid iron
#

start with the vanilla forest map

#

and resize it down to just your building

dark cedar
#

thank you guys!

brave fable
#

if you want the exact behaviour for the cart, the game code simply places the cart at 23, 10 in the Forest every Sunday:


/// <summary>Get whether the traveling cart should visit the forest today.</summary>
public bool ShouldTravelingMerchantVisitToday()
{
    return Game1.dayOfMonth % 7 % 5 == 0;
}

/// <summary>Get the tile coordinates for the top-left corner of the traveling cart's bounding area.</summary>
public Point GetTravelingMerchantCartTile()
{
    if (!TryGetMapPropertyAs("TravelingCartPosition", out Point tile, required: false))
    {
        return new Point(23, 10);
    }
    return tile;
}
#

(or at wherever a map mod may place it using the TravelingCartPosition map property)

lucid iron
#

cant believe this isnt hardcoded

brave fable
#

it was until 1.6, you're still hardcoded to every sunday though lol

lucid iron
#

but at least its ez to change? maybe

indigo yoke
#

late on posting this but YACS actually has multiple, a brown pot looking then, a chef hat, or a knife and fork crossed.

you can choose in the config menu which one you want xD

brave fable
#

sure, just harmony patch the method, but it'd break any mods that naively & foolishly assume that the traveling merchant will only appear on a sunday SDVdemetriums

brittle pasture
#

(and friday)

brave fable
#

and what

brave fable
lucid iron
#

oh no i was thinking u put it in ur custom location class

brittle pasture
#

yes, she appears on fridays as well
I'm sorry if this is how you found out

tender bloom
#

Sunday and Friday

lucid iron
#

but hm its not virtual

#

lame

brave fable
#

i don't think very many people are going to be subclassing Forest.cs lol

lucid iron
#

yea i thought it's like

indigo yoke
lucid iron
#

on GameLocations

uncut viper
#

cant you just manually open up her shop menu anyway if you want

tender bloom
#

How many mods actually depend on Sunday?

#

(And Friday)

lucid iron
#

and with the TravelingCartPosition prop on forest.tmx

#

i expected too much i guess

tender bloom
#

Like maybe a bit of dialogue or something but I’m having trouble imagining

brittle pasture
#

East Scarp Jacob visits the cart every Friday and Sunday., though technical-wise It's only for flavor/lore

tender bloom
#

Yeah, it would be slightly awkward but maybe he likes forest visits

#

He could be going for a walk near Marnie’s

brave fable
#

travelling merchant on friday.... what's the world coming to

tender bloom
#

Blueb… do you suffer from the modders curse

brittle pasture
#

it'd be weird if he says he's delivering letters through the cart while standing in front of a lotta nothing

tender bloom
#

No playing the game, only modding?

brave fable
#

do i look like i play the game to u

tender bloom
#

You could!!!

#

It could happen!!

brave fable
#

i could. but i don't 😌

lucid iron
#

dr witchmathperson what are some good functions for point clouds

tender bloom
#

Like Python libraries or?

lucid iron
#

no just math

tender bloom
#

Or like algorithms to process them?

lucid iron
#

i want to like

#

have butterfly like things in a circularish area

tender bloom
#

You are picturing 100% correct

brave fable
#

public Cloud(Vector2 position) works but you'd need to call point.ToVector2()

tender bloom
#

That meme lives rent free in my head

tender bloom
lucid iron
#

they should move like brownian motion i think

brittle pasture
#

that reminds me I should work on that water sifter Automate integration

lucid iron
#

though circle should look fine too

tender bloom
#

There’s methods to prune or otherwise make a random-ish distribution without overlap

#

I don’t remember the math of them offhand

#

But I can picture the website explaining the corresponding Python library perfectly lol

lucid iron
#

ill take names that i can google bolbwawawa

tender bloom
#

Random motion isn’t too hard

#

I was going to say that I implemented that for the dragon pearl lure and then I remembered I did something way weirder

#

Because dragons are bats

#

And the game’s bat movement code makes no goddamn sense

#

I set the bat “target” to a randomly moving location

#

Anyways, for butterflies

#

I’m not sure you need something more than a random x, y movement?

#

You could look at what the butterflies do in game

#

Or the fireflies

lucid iron
#

they gotta stay in a set bound ig bolbthinking

tender bloom
#

And see if you can straight copy or reuse that

#

Ohhh hmm

lucid iron
#

it should anchor to the player

#

but u know i can just add to player position so not big deal

tender bloom
#

If you know the bounds, then sampling over that space and making them move towards the new point?

lucid iron
#

just need to bound the x, y in the unit circle or whatever

#

or hm

tender bloom
#

Like if you can have +/- 5 in both x and y (from farmer), then pick a new x, y and set a step distance per timestep to move from current to target?

lucid iron
#

new idea maybe they just flutter out of the player

#

and disappear after some time

tender bloom
#

So that you don’t have worlds fastest butterfly

lucid iron
#

then i can just make them go random radial direction

tender bloom
#

Ooh yeah they could vanish if they go too far

lucid iron
tender bloom
#

And reuse the movement algos from the game?

#

And respawn when the old one goes?

lucid iron
#

yea hm

brave fable
#

if it helps at all, the game has a builtin method Utility.getVelocityTowardPoint to get a motion vector from a to b

tender bloom
#

I just think the game has sort of pretty movement

lucid iron
#

i need to think about how to organize this

lucid iron
#

ty it was helpful wew

tender bloom
#

I suspect the decompile is what makes most of the movement code nearly incomprehensible to me

#

But I also suspect the original code is no picnic and that there was a lot of trial and error along the way

lucid iron
#

i looked at fairy trinket motion code

#

and immediately threw everything labeled velocity/acceleration out

tender bloom
#

Like I literally could not figure out whether I was diverting the serpents from the player or not for a long time

brave fable
#

nobody can get motion right on the first try, there's always going to be trial and error

tender bloom
#

Because the serpents move so randomly even when locked onto the player

lucid iron
#

oh yea thats another thing i wanted to do bolbonfire

#

royal serpent like companions

tender bloom
#

I resorted to making a new Farmer and making the serpents chase this secret invisible body double

lucid iron
#

i think i just have to like

uncut viper
lucid iron
#

have a queue of positions + rotation and pass them on maybe

uncut viper
#

ship of theseus but with motion code

brave fable
#

my first try runs from when i start to when i give up. i'll book in my second try sometime next year

uncut viper
#

you get it

lucid iron
#

what happened to do or do not there is no try

brave fable
#

i'm trying to do SDVpufferflat

tender bloom
#

Idk that yoda guy seems suspicious

brave fable
#

omg DialogueLine has a field Action SideEffects. this changes everything

tender bloom
#

I’m not sure he’s ever even opened a tmx file

brave fable
#

oh nvm sideeffects are only invoked if there's no text in the dialogue. man

lucid iron
#

the evil masterplan foiled before it could even start

pine elbow
#

Hello! I joined this server in hopes that someone could help teach me how to mod a few simple things?(Like a button/key that lets you see the avalible community board quests and such)

lucid iron
#

do you know programming

calm nebula
#

I looked at the game's parabolic motion, went wtf, and rederived kinematics instead

#

Hi Pathos!

ivory plume
pine elbow
lucid iron
#

!startmodding

ocean sailBOT
#

Making mods can be broadly divided into two categories:

Usually it’s easier to start with making content packs, since you don't need to learn programming.

ivory plume
#

Hi! Can you report that in the bug report forums? Even better if you can add info like screenshots; the less investigation needed, the more likely that it can still be changed this close to the Stardew Valley 1.6.9 release.

pine elbow
#

Most coding ive ever done is scratch 😭

lucid iron
#

so the mod you described (button to check help wanted board) is something you need C# for, but not that involved

brave fable
#

oh, interesting - i've got a (almost perfectly) working implementation of effects on text in dialogue like so:
"i18n.test": "First line#$b#(shake 2)Second line#$e#(wave 3.5 1)Reset dialogue#$b#Next one",

lucid iron
#

need to find the right menu to call ofc

pine elbow
#

Okay!

lucid iron
#

!decompile

ocean sailBOT
brittle pasture
#

(also just an FYI UI Info Suite 2 has that feature. Don't let it stop you though)

pine elbow
#

How did you guys learn? Did anyone deconstruct the code and game itself?

brave fable
#

where (shake) and (wave) set some per-screen flags for a transpiler on SpriteText.drawString() to edit the draw position, then trim out the (word) from the dialogue text

brittle pasture
lucid iron
#

game not encrypted/obsfucated so the decompile has all the real names AquaThumbsup

brave fable
#

setting the flags from SideEffects could be perfect though like that, just need to find just how they work hahah

pine elbow
calm nebula
#

So you would need to make trigger actions for that

brittle pasture
#

decompiling provides the source code so you can look at how the game works. it shouldn't affect the game in any way

uncut viper
#

(well, you COULD look at the dialogue line itself if you really wanted)

lucid iron
#

no effect on game, unless you try to compile it again over the Stardew Valley.dll

#

i saved whole thing to separate folder

uncut viper
#

you can have ilspy open with the dll open while the game is running too and thats also no issue

brave fable
#

i've heard of triggeractions before but there sure is a lot more to them than i thought lol

uncut viper
#

making a custom trigger action is ezpz and could easily be used to set some flags though you'd need a way to unset them after

#

which, could just be another action after the dialogue

knotty phoenix
#

Is there still a page on the wiki for people who do asset commissions?

uncut viper
#

!commissions

ocean sailBOT
pine elbow
#

I got the ILSpy_binaries_9.0.0.7660-preview2-arm64

#

Is that the correct one?

brittle pasture
#

no

pine elbow
#

Which one is it?

brittle pasture
#

get the x86 x64 one

pine elbow
#

Okay!

brittle pasture
#

(correction, x64)

pine elbow
#

Thank you!

uncut viper
#

unless there is an off chance you are doing your modding work on an arm64 laptop i suppose

pine elbow
#

No Windows

next plaza
#

Does stardew run on windows arm64

uncut viper
#

¯_(ツ)_/¯

lucid iron
#

doesnt it struggle with mac already

uncut viper
#

one could theoretically game on one computer but mod on a laptop

lucid iron
#

for mystery rosetta reasons

brave fable
#

it's definitely confusing that no entries in data/triggeractions seem to be referenced by id anywhere in the unpacked game lol

brittle pasture
#

most likely not, but there's probably a arm to x64 translator

next plaza
#

Some of the uses like side effects in dialogue were added for modding

brittle pasture
#

so there's trigger actions, and trigger actions. the former is commands like AddItem, RemoveItem or MarkEventSeen. The latter is in Data/TriggerActions, and defines a list of the command trigger actions to fire depending on game conditions

brave fable
#

so i'd use something similar to
"i18n.test": "First line is normal#$b#$action Custom_MyMod_TextEffects wave 3.5 1#$b#Second line is wavy"

#

errr can these take params

next plaza
uncut viper
#

do you want examples of custom trigger actions being added

finite ginkgo
lucid iron
#

i called it trigger handlers

uncut viper
#

(ignore me using ArgUtilityExtensions and TryGetTokenizable, you'd use just ArgUtility and TryGetWhatever is in the vanilla code)

brittle pasture
#

(totally not an excuse to shill the shiny new wiki page)

uncut viper
#

(also you dont need to use the reflection stuff i did to register all my actions automatically obviously lmao you can just pass in a delegate to the RegisterAction function)

brittle pasture
#

hmm chu I think the wiki example for trigger action is missing the actual trigger function itself

uncut viper
#

your delegates need the same signature though with the string[] args and context and out error

lucid iron
#

isnt that the trigger

uncut viper
#

do you mean the part under Adding a Trigger on the page you just linked

lucid iron
#

that part is the thing u r Raise

uncut viper
#

bc that all there is

lucid iron
#

not the handler/action

uncut viper
#

a Trigger itself does not have a function

#

its simply you saying "This thing happened"

brittle pasture
#

ah fuck nvm I confused it with actions

#

sorry

brittle pasture
#

dang this is confusing lmao

uncut viper
#

tbf its an easily confusable set of things

lucid iron
#

words stops having meaning when u look at them too long

pine elbow
#

The code looks interesting! I cant belive he did all this alone!

lucid iron
#

there's a bunch of ppl who work on sdv now DokkanStare

#

though idk who implemented trigger initially

calm nebula
#

Probably Pathos

next plaza
#

I believe so

uncut viper
#

if you ask me in my totally unbiased opinion i think theyre the most importantest and bestest 1.6 feature

lucid iron
next plaza
#

Eh, I would argue string item IDs is more significant

uncut viper
#

even if i do wish there were a few more vanilla actions included

lucid iron
#

i think event system for content is pretty important

next plaza
#

Even if it killed JA

brave fable
#

oh, just mod them in. rake in the dp

uncut viper
#

theres like almost infinite numbers, how badly did we need string ids anyway

brittle pasture
#

RIP DP

#

unfortunately computers are limited by INT_MAX

next plaza
#

JA had a hack to extend the tilesheets past the vertical limit

#

(Since I think the limit was 4096 pixels)

uncut viper
#

sounds like it was all figured out then! nothing to worry about /j

brittle pasture
#

otherwise I'd have made my item IDs TREE(3) + 1

next plaza
#

Well, technically it was SpaceCore

brittle pasture
#

guaranteed no collision

uncut viper
#

for someone whose mods are like. all things that are meant for people to use as dependencies. i very much would rather never need a dependency myself if i can help it

brave fable
#

errr so do i need to edit Data/TriggerActions and TriggerActionManager.RegisterTrigger for a custom trigger action

uncut viper
#

naw

#

you just need to TriggerActionManager.RegisterAction

lucid iron
#

what did you want to do again

uncut viper
#

not RegisterTrigger

lucid iron
#

a side effect in dialog?

uncut viper
#

blueberry wants to have actions in dialogue set flags to control transpilers

calm nebula
#

So cute

lucid iron
#

oh yea no need to raise cus u can just call the action

uncut viper
#

they are very cute

lucid iron
#

thats the Adding an Action heading on the wiki page

brave fable
#

i was asking about Register not Raise haha

uncut viper
#

chu said that bc you asked about RegisterTrigger

#

which is not needed if you dont plan on raising

#

theres RegisterTrigger and theres RegisterAction

brave fable
#

err i see

uncut viper
#

you want the second one

brave fable
#

maybe the wiki needs a little more info lol

lucid iron
#

yea hm

brave fable
#

work in progress 🌈

lucid iron
#

maybe i do need to include the CP side?

uncut viper
#

i think the problem is less with the wiki and more so just. the confusing names that have been given to these features

#

i.e. the fact that theyre called Trigger Actions or Trigger Action Actions

#

but you dont need triggers involved at all

lucid iron
#

in C# terms

uncut viper
#

but calling them just Actions is. vague

brave fable
#

the more words i read the less i understand

lucid iron
#

RegisterTrigger is event MyEvent<EventArgs>

#

and RegisterAction is defining a delegate

#

+= is editing Data/TriggerActions

#

but there is special way to just call the delegate

brave fable
#

so i want.. registeraction
and also edit data/triggeractions for the id called in dialogue which calls that action

lucid iron
#

for dialog

uncut viper
#

if you look up an action in the decompile like AddMail you can make a function with the same signature and do whatever you want in it and check for parameters the same way the vanilla ones do

#

then using AddMail as an example still you'd do TriggerActionManager.RegisterAction("NameOfYTourAction", AddMail)
with the 'AddMail' in the parameters being the function itself to pass it in as a delegate or w/e its called

#

using my repo i linked as an example for maybe more clarity if i wasnt doing reflection stuff id do RegisterAction("ChangeMusicTrack", Actions.ChangeMusicTrack.Action)

#

(the function does not need to be named Action)

brave fable
#

so how do i then pass the args from the $action in diaogue to the Action field of the entry in triggeractions

lucid iron
#

oh no u are use special way to just call the delegate

uncut viper
#

if your custom action takes one argument for example like an int

lucid iron
#

so u dont need to edit Data/TriggerActions

uncut viper
#

then in the dialogue string you'd write $action CustomAction 4

brave fable
#

am i using that lol

#

ok perfect

uncut viper
#

and it'd be given to your action handler function in the string[] args

lucid iron
#

bolbthinking this stuff is prob worth adding to wiki ill edit it

uncut viper
#

with the 4 being at index 1

#

since index 0 is the name of the action itself i.e. CustomAction

#

ArgUtility has built in functions to try and grab values from indices in the args list and optionally can verify that they are parseable as ints or floats or what have you

#

if you've added a custom CP token before its kinda like doing that

finite ginkgo
#

(it annoys me unreasonably much when args[0] is the name of the action/command/whatever, the amount of times i've messed stuff up because i assumed that it would actually be one of the args SDVkrobusgiggle)

lucid iron
#

you can take this up with the whole programming world

brittle pasture
#

tbh that's standard behavior

#

yeah

uncut viper
#

i like to think of it as the same reason ldarg.0 is this

lucid iron
#

i get confused in the other cases where they did split off args from command

next plaza
#

I prefer cmd name to be separate from args

brittle pasture
#

historically this is so you can have stupid shit like reboot and shutdown point to the same binary but do different things

uncut viper
#

(also blueberry it probably goes without saying but you Should include your UniqueID in the string name you give and not just CustomAction lol)

next plaza
brave fable
uncut viper
#

SDVpufferthumbsup just makin sure bc i realized i mentioned it being similar to a CP token which auto prefixes for you. triggeractionmanager will Not

#

(it will also tell you if you try to register an action that already exists in the dictionary that you will be overwriting the first one!! and then just doesnt overwrite it actually)

calm nebula
uncut viper
#

(is that even worth reporting)

calm nebula
#

But I do understand why

#

Y'all don't have Span

#

We love Spans in this house

brittle pasture
#

(oh gods latest 1.6.9 beta converted a line of code into a predicate run time class)
(this is a stealth call for help on what's the best way to approach patching this. just replace with my own class?)

next plaza
#

What's a span /s

knotty phoenix
#

Okay, something I'm unclear about as I read documentation- do I still need Json Assets to create custom items, or can CP do that directly now?

lucid iron
#

what r u patching ser selph

next plaza
#

CP can do it now

uncut viper
calm nebula
# next plaza What's a span /s

It's the thing I was arguing with at work today. It's the width of the filter used to produce
... I am being told things

#

(I'm kidding. Btw.)

brittle pasture
# lucid iron what r u patching ser selph

so this is the old chunk of code:

for (int i = 0; i < list.Count; i++)
{
    if (list[i].MinimumFriendship > 0 && this.friendshipTowardFarmer.Value < list[i].MinimumFriendship)
    {
        list.RemoveAt(i);
        i--;
    }
    else if (list[i].Condition != null && !GameStateQuery.CheckConditions(list[i].Condition, base.currentLocation, null, null, null, r))
    {
        list.RemoveAt(i);
        i--;
    }
}

not the prettiest, but easy to commit Harmony crimes on. this is the new one:

list.RemoveAll((FarmAnimalProduce produce) => (produce.MinimumFriendship > 0 && this.friendshipTowardFarmer.Value < produce.MinimumFriendship) || (produce.Condition != null && !GameStateQuery.CheckConditions(produce.Condition, base.currentLocation, null, null, null, r)));

cleaner, prettier, better, more Functional™? yes. but so much worse for criminal purposes

calm nebula
#

But I have a username!

brittle pasture
brave fable
#

ho ho, it works SDVdemetriums

#

thanks for the help!

uncut viper
# uncut viper (it will also tell you if you try to register an action that already exists in t...

actually bc ig i cant know what the intended behaviour is supposed to be i suppose its worth at least askin about, @ivory plume is TriggerActionManager.RegisterAction() actually supposed to overwrite previously defined actions? It will log a warning saying it will overwrite the action, but it returns immediately after that so it doesnt actually do it. RegisterTrigger() will simply always try adding a trigger and not bother checking if it already exists (makes sense, its just a hashset of strings), and TokenParser.RegisterParser() though will throw an exception if you try to register an already existing token parser. so iunno which one RegisterAction is supposed to but it currently does not do what it says it will do, tho i assume itd be a simple fix either way

brittle pasture
#

ooh new mod jam thingy

calm nebula
#

What are you going to make?

lucid iron
uncut viper
#

well sorry custom museum framework looks like you're shit out of luck for the next 2 weeks

lucid iron
#

was there another place u can use trigger actions that i forgor

brave fable
#

20ft skeleton has already been done. but what about 40ft skeleton

brittle pasture
#

Maybe I can force goose murder into the spooky theme somehow, but that means 1. Re-breaking my transpilers for 1.6.8, and 2. Kinda cheating since I worked on it before the event started

lucid iron
#

wait nooo why did they do contest now

#

i dont wanna release a mod ill have to fix 4 days later

ivory plume
uncut viper
#

but halloween waits for no one

lucid iron
#

prospect of modding 1.6.8 makes me head empty no thoughts

uncut viper
#

letters can use actions

#

slightly different syntax since it uses %

lucid iron
#

letters are just dialog i thought

#

weh

brave fable
#

i've been noticing in the past few days that a 1.6.9 fam with building interiors gets warnings in the console about overriding existing lights by id on time changes after StartingToGetDarkTime, likely from window lights. not sure if it's the old saves i'm playing on or if something broke in a recent nightly build

brittle pasture
#

I mean we can make CP mods but that means artistique skills are needed

uncut viper
#

i already need some artistic skill for the mod idea i have for it. rip

#

also chu Buffs also can use actions

lucid iron
#

maybe i just slacc and resume original plan of finishing them trinkets b4 1.6.9 LilyDerp

#

wow they r everywhere

uncut viper
#

this is why theyre so fun and useful

lucid iron
#

i guess i should just split this heading up

uncut viper
#

and why its a shame theres only 3 vanilla triggers

lucid iron
#

hrm

#

i guess i should just change the ability i have which raises a trigger to calling action directly

#

given all this precedence

next plaza
#

Why isn't there a witch role for event, what a travesty

uncut viper
#

actions are also used in events ofc

calm nebula
#

What are you going to make, casey?

next plaza
#

I dunno

brave fable
#

a 1.6.9 nightly build is quite scary

next plaza
#

Yeah, Pathos is good at making those scary

#

I'm gonna have tons of netfield fixes to do next time I need to compile

#

(BEcause copy pasted code for harmony patches)

uncut viper
#

are mods made for the contest playtested for the judging? id assume so but does that mean i should be making it on 1.6.8 only instead of the beta SDVpufferflat

brave fable
#

are dialogue codes case-sensitive btw? it's irritating that i have to hold shift for all of #$b# except the important bit

lucid iron
#

yea uh, can i just release a mod and slap a big ol "FOR 1.6.9" on it

brave fable
#

i'm pretty sure mods aren't playtested given love of cooking won summer one year

tender bloom
#

Heyyyyy blueb

tender bloom
#

Love of cooking has many die hard fans

next plaza
#

I won with Surfing Festival one year for summer

tender bloom
#

I know this because it was definitely one of the post 1.6 FAQs 😛

next plaza
#

If only I hadn't gone on hiatus, I'd still have my contest winner role

brave fable
#

i bet they're dead waiting for a 1.6 update

uncut viper
#

oh nevermind atra knows more than me

tender bloom
#

Maybe we can ask DH or someone moldy about the 1.6.9 thing

brave fable
#

you already have the contest winner colour hahah. the winner role doesn't even show up in my profile so not so valuable

uncut viper
#

i nominate atra to ask

lucid iron
#

hm is the mail way of trigger different than dialog

#

i dont see any extra info about it on mail data page

deep cypress
#

Hi loves! I am trying to write a transpiler. (Cause I don't want to prefix). Here is the inline.

        IL_01d1: ldloc.3
        IL_01d2: ldloc.s 6
        IL_01d4: or
        IL_01d5: brfalse IL_039e

I want to add a not ldloc.4 in there.

In c#, it's

if (datable || housemate)

I want to add the fourth variable (which in the code is this case is isDating. Except I want to add !isDating.

How does one go about this

tender bloom
#

Hmm actually it’s too late at night for DH

#

who else is moldy

uncut viper
tender bloom
#

Toooo fast SDVpuffercry

lucid iron
#

crimes approved ukimasu2

uncut viper
#

crimes approved but

#

now im worried like

#

what if i submit my mod

#

and the contest ends

#

and a beta patch breaks it

lucid iron
#

well.

uncut viper
#

lmao

#

that silence really says it all

tender bloom
#

We cross our fingers

brave fable
#

it'd be novel for a mod to be like version 1.1.1 by the time it's judged

#

maybe someone else can submit an unofficial update as a contest entry 😌

uncut viper
#

then again its also possible that if i make it on 1.6.8 then if the judging takes a few days 1.6.9 might just release and break it that way too

lucid iron
#

dang it why is tile stuff also named actions

uncut viper
#

now you're discovering why we call them Trigger Action Actions

#

and not just Actions

lucid iron
#

yea dooemd

next plaza
calm nebula
#

(My excuse for everything)

brave fable
#

ackshually those are TileData Actions

next plaza
#

Elizabeth and I both asked in the spooky channel 😛

#

They said either is fine

uncut viper
#

not to be confused with TouchActions

lucid iron
#

cant believe events already have doAction

uncut viper
#

im just gonna make my contest mod for 1.6.8 and then update to 1.6.9 like a day or two before and rapidly fix it if it breaks

#

it'll be fine trust

lucid iron
#

surely there are other names for this SDVpufferpensive

next plaza
uncut viper
lucid iron
#

i think it ought to be named handlers

uncut viper
#

though that wouldnt solve the problem anyway

brave fable
#

i think they should be named Wubblers

uncut viper
#

bc then you'd have Triggers and Trigger Effects and Trigger Effects Effects

brave fable
#

then we'd have no confusion

lucid iron
uncut viper
#

eye corer SDVpuffersweats

tiny zealot
#

whatever it is, make sure you wait until five days before release. that's the best time to ask for changes (determined empirically)

uncut viper
#

Triggers, Data/TriggerWubblers, and Trigger Wubbler Wubblers. does have a nice ring to it

brave fable
#

trigger wubbler wubbles are Mubblers

next plaza
#

Uh wut

brave fable
#

to distinguish them

uncut viper
#

no longer gonna enter the contest, now im gonna work on a mod to transpile every instance of trigger actions into trigger wubblers

brave fable
next plaza
#

:cecil:

lucid iron
#

hrm idk where to put %action <stuff>% on this page

#

value?

uncut viper
#

the originals get to live. barely.

next plaza
uncut viper
calm nebula
uncut viper
# next plaza Do you plan on patching every loaded mod too

i mean. i could. wouldnt be too difficult to scan every type in every assembly and dynamically construct harmony transpilers with codematchers function that can replace every instance of one method call with a call to another method

brave fable
#

do you plan on replacing instances in dialogue strings to use the new $wubbler format?

#

or was it mubbler

uncut viper
#

it was mubbler

brave fable
#

SDVpufferthinkblob i think we need another new standard, this one's still too confusing

uncut viper
#

dw ive already thrown out the old terms from my brain and replaced with the new i got this

tiny zealot
#

blocked. blocked. you're all blocked. none of you is free of sin

uncut viper
#

Triggers, TriggerWouldYouKindlys, Trigger WouldYouKindly WouldYouKindlys

next plaza
#

I think the play would be Trigger Action -> Triggers and Effects

#

Not keeping the redundancy

knotty phoenix
#

One last question and then I think I'm finally good with the 1.6 stuff- does SpaceCore (or any other mod) allow for crafting recipes for weapons, now? I remember having to have someone hack together something in Harmony for me before to do that, and I doubt that specific mod will work anymore

uncut viper
#

tbh the main problem really is just the fact that Data/TriggerActions is called what it is and uses b oth terms in one

next plaza
#

Using the crafting recipe overrides

calm nebula
#

(and in 1.6.9 the vanilla game should too.)

next plaza
#

Oh, nice

calm nebula
#

sorry

#

taking your market share again, vanilla is

next plaza
#

I thought it still required C# but was just made easier

#

Well, to be fair

calm nebula
#

you can put any qid into the recipe output slot

knotty phoenix
#

this is huge for my mod, ty!!

next plaza
#

SpaceCore supporting it is more a side effect of the recipe overrides system

#

The primary purpose of that is context tag recipes

#

For once I actually have an idea for a mod/game jam

#

How bizarre

uncut viper
#

it better not be mine SDVpuffercowboy

next plaza
#

Only problem is it kinda overlaps/overshadows some S&S stuff SDVPufferThink

calm nebula
#

(I await a picross, junimos.)

uncut viper
#

this mod jam is a good opportunity for me to use my updated dotnet template
finally using conditional logging based on building in debug, are you proud of me atra

calm nebula
#

very

brave fable
calm nebula
#

I'm always proud of you

uncut viper
#

i also only just noticed that modders have a different set of concepts we can choose to incorporatye for our entry than the artists, i wonder why SDVpufferthinkblob

uncut viper
brittle pasture
#

Darkness is allowed in art but not mods. there goes my spooky mod idea of just making the entire screen black

calm nebula
#

alight

lucid iron
#

wubbled

calm nebula
#

no darkness ebony whats her face for moddders eh.

brave fable
#

omg if i set the rotation to 0 i can just have a weathervane that animates in the wind

uncut viper
#

raven dementis way or smth

brave fable
#

raven mcnight

brittle pasture
#

Shadow the Edgehog

lucid iron
#

so is it valid to like

#

make a content pack for my own framework mod and submit

uncut viper
#

i dont see why not

lucid iron
#

blobcatgooglyblep how cursed

next plaza
#

(Or me and my beloved content engine)

lucid iron
#

yes

#

spacecore content is ok but i expect the world of pathos DokkanStare

finite ginkgo
uncut viper
#

making a BETAS mod that just adds trick or treat dialogue to all the kids when you knock on their door

#

whyd i say all the kids as if theres more than 2

#

i was thinking of the reverse situation

next plaza
#

Leo!

uncut viper
#

truuuuu

#

i never get far enough in my game to have him move SDVpufferpensive

calm nebula
#

have you considered playing the game sometime

lucid iron
#

that sounds heretical atra

uncut viper
#

up until very recently i played it often!

#

just never very lategame

next plaza
#

I did a vanilla perfection playthrough with friends earlier this year

calm nebula
#

you're not even orange!

uncut viper
#

why do you think i play the game so much?

lucid iron
#

what does ur multiplayer partner do when u r modding all day

dim yew
#

Dumb question. Zero schedules are a vanilla feature right?

calm nebula
#

yes

uncut viper
#

believe it or not my multiplayer partner has a life of her own /lh

next plaza
#

Yes, but semi-broken

dim yew
#

mine is definitely broken

#

Is there a non-broken way to use them?

uncut viper
#

(also i mostly mod all night anyway)

next plaza
#

I have an experimental fix in SpaceCore for when 1.6.9 comes out, but it needs some work

#

Mainly it breaks marriage schedules right now

dim yew
#

Oh, I shouldn’t need to worry about marriage schedules

next plaza
#

(IT's in spacecore and not base game because Pathos says its too risky this close to release)

#

Well, the thing is

#

It's an all or nothing fix

dim yew
#

This is a conditional zero schedule that’s only active for like the first day you meet an NPC

uncut viper
#

wait does reusing vanilla sprites for something new count as plagiarism/stolen content for the contest—

next plaza
#

It fixes all zero schedules, but breaks all marriage schedules

#

Hence why I need to fix it in the next few weeks

dim yew
#

Is there a reason why mine would be broken if the player isn’t married?

next plaza
#

Nah, this is specific to something if you have an upcoming version of SpaceCore installed

#

0 schedules are just kinda not working properly in general at the moment (with or without spacecore)

blissful saddle
#

there is anything against using the local ModData model vars to store data we are using before saving them? except not sounding a good practice of course

dim yew
#

Oh dear.

#

I have an NPC that I have to have at a static location if the player hasn’t seen a certain event, but this location is quite far away from the home location

#

I wonder if I could add a conditional NPC warp that’s active only when the player hasn’t seen the event - it’s to a custom location so it wouldn’t interfere with vanilla

#

That could work, it would be the dirty fix but it could work

finite ginkgo
#

Just use the NPC's home field

old edge
#

Is anyone teaming up for the modding contest

next plaza
#

I'm teaming up with me, myself, and I

#

The three of us might manage to gather a braincell long enough to get a quarter-baked mod done

lucid iron
#

i dont think im useful to other people blobcatgooglyblep

finite ginkgo
#

If I end up participating I'm teaming up with me, Toil and Trouble

ivory plume
lucid iron
#

pathos did u mean to post here

next plaza
#

Huh, when I saw Pathos typing, I was not expecting that

ivory plume
#

Yep.

brittle pasture
#

hmm can I cheat by submitting a mod I'm about 25% done before the event started

brave fable
#

is.. is this a nightly build

ivory plume
#

(I'm collecting game codes to donate to the event prize list, and that one expires in a few days.)

uncut viper
#

the rare pathos free game code, seen only once before by myself... i don't need the game tho have fun whoever got it

old edge
#

I'm currently working on a farm map maybe I could do a small Halloween farm

uncut viper
deep cypress
#

Like, the point I am at is

                int index = codes.FindIndex((CodeInstruction c) => c.operand != null && c.opcode == OpCodes.Ldloc_S && c.operand is 6);
                if (index > -1)
                {
             codes.Add(new CodeInstruction(OpCodes.Ldloc_S, 4));
                }

How do I make it Not that? Like, how do I add a not that here?

calm nebula
#

I don't play nice with others and am not going to produce a mod anyways

calm nebula
old edge
#

I am nice

uncut viper
#

you could easily make a mod for knitting costumes though

deep cypress
#

I am trying to make a if !isDating.

brave fable
#

(you also probably want to replace codes.Add(new()) with codes.Insert(i, new()) )

calm nebula
#

let me show you

deep cypress
#

Thanks! That is in addition, or change what I have?

old edge
#

I have an idea. Werewolf

brave fable
#

what's your idea. werewolf

calm nebula
#

oh, weirdly enough, I try to go for an example and linqpad optimizes the hell otu of it

#

making it entirely not comprehendable

old edge
brittle pasture
old edge
#

Werewolf curse in Stardew valley mod

#

Just saw a really spooky film about it

calm nebula
#

anyways, what you want is

        ldloc.3
        ldloc.s 6
        or
        brfalse IL_039e
        ldloc.s 4
        brtrue IL_039e
#

(mr Linqpad entirely removed ONE OF MY LOCALS ENTIRELY

dim yew
deep cypress
#

Thanks! Also, I hope you can get your local back! 🙂

finite ginkgo
#

Don't alter it, home is already an array, it'll use the first matching home entry

uncut viper
#

i thought more than one home entry worked strangely/sorta buggy

calm nebula
#

try two at an example 😦

#

please stop it with the fun opcodes, linqpad

finite ginkgo
calm nebula
#

yeah, endertedi is right here

#

it's funky when you expect to go back and forth, it fires a day early

#

but a Leo situation is...likely fine

#

the only downside is that you do not get teletransportation

#

hi boo-berry

uncut viper
#

wouldn't it still go a day early even if it never goes back after then?

calm nebula
#

I've never seen a boo-berry before

brave fable
#

ok i've got the best goddamn mod idea and nobody is going to take it from me. i'm bringing this one to the grave

next plaza
uncut viper
#

oh so it's a graveyard mod

brave fable
#

it'll be the death of me SDVdemetriums

next plaza
#

Wonders if blueberry is gonna scoop my idea like Gourmet Overhaul vs Love of Cooking

lucid iron
#

a rematch

brave fable
#

i'll see you in court

calm nebula
#

you don't have to worry about me, my brain is full of

  1. Trying to understand fourier transforms
  2. Trying to understand set theory
  3. Ignoring teh existance of 1.6.9
uncut viper
#

even with infinite possibilities I'm also worried that somehow I've chosen the same idea as either of you two

next plaza
#

What's a 1.6.9

#

Is it a candy

#

Can I get it from trick or treating

brave fable
#

you owe me damages for emotional pain caused by spacecore bug reports on love of cooking

calm nebula
#

on the other hand, I suspect most of you would find fourier transforms scary

finite ginkgo
uncut viper
#

actually I like the courier transform

#

Even if my phone auto correct does not

calm nebula
#

cool, Button

brave fable
#

surprisingly we covered fourier transforms well enough in uni so they're friendly

calm nebula
#

can you help me pick the right window for this spectrum analyzer

next plaza
calm nebula
#

it gave me options

#

so many options.

#

I'm on wikipedia looking at my options

uncut viper
#

absolutely not. I said I liked it but I like seeing other people figure out the right way to use it more

next plaza
#

Fourier transforms don't sound too scary. Fiveier transforms on the other hand...

brave fable
uncut viper
#

we have a doctor math person in here for that stuff

old edge
#

I would rather help someone bring their idea to life but I suppose I can compete against others

calm nebula
#

oh, mazes!

old edge
calm nebula
#

....let's do a flood fill algo

#

(in other words, atra tried a maze for 30 s and gave up)

dim yew
#

Ughhh I’m so tempted to make a quick contest mod but I’d need a +1 💀

crystal tiger
#

hey, would anyone be willing to help a non modder make a modification to an existing mod for personal use(would post but first id like to see if I could do it before asking the author to upload it)

#

its just removing some lines of dialouge

#

if I am saying something I cannot do I apolgize I am not familier with nexus policy

dim yew
#

If you wanted to publish it anywhere, you’d need to ask the author’s permission. But if you just use it yourself it doesn’t need to be uploaded to Nexus

#

you can just download the zip

crystal tiger
#

then id ask ofc

dim yew
#

People modify mods for personal use all the time, it’s all good as long as you don’t upload

#

looks at my unreleased 1.6 port of the lance coming earlier mod

lucid iron
#

whats the mod in question?

lucid iron
#

i ask cus i want to know the permissions

crystal tiger
#

mainly just gotta remove 2 things that contradict SVE

dim yew
# old edge What's the idea?

Vampire npc (non romanceable because I’m not doing all of that for a contest) that once you get infected by them gives you a combat buff

lucid iron
#

u can just find the dialog and comment it out in your local copy

crystal tiger
#

since runs fine

#

just has a tiny overlap

lucid iron
#

it only gets more involved if you want to actually make it a mod

old edge
#

Ok how can I be of help? @dim yew

dim yew
old edge
#

Yes I had a similar werewolf idea

#

But maybe combine it

dim yew
#

We could do… both… in the same mod…

#

Yes!!!!

#

dm me! 🫶

crystal tiger
# lucid iron it only gets more involved if you want to actually make it a mod

what I have to remove "*SVE redesigns the Spirit's Eve festival maze from year to year, while my mod includes additional dialogue sets with only the original two mazes in mind.
*My mod includes a brief explanation for what happened to Sebastian's biological father, which is included in the screenshots on this mod page. SVE has a contradicting explanation. Apparently, there is no contradiction if you toggle the "mature events" to off.", is this as simple as text file edits, I assume id have to remove some scripts to tho right?

old edge
#

Ok squido

crystal tiger
#

sorry for the @ forgot to turn it off

#

I see all the spirit's eve stuff is referenced here, would removing the block work to get rid of the new dialouge

#

im scared to break it XD

lucid iron
#

if u did break it just install mod again PecoSmile

#

but yes removing that block should do what you want

#

you could also stick a hasmod there

#

you want it to be "HasMod |contains=svemodid": false to turn this block off when you have SVE

blissful saddle
crystal tiger
#

please noooo

crystal tiger
calm nebula
#

am I a fun color now?

#

okay, better than orange

uncut viper
#

is it?

blissful saddle
next plaza
#

You look half way between villager and cowpoke

uncut viper
#

a villpoke...

blissful saddle
#

Evillpoke?

calm nebula
#

we'll keep it for a while but I'm going purple next

lucid iron
#

if i have a LogName on the include

#

does it apply to all actions in the include?

knotty phoenix
blissful saddle
#

trying to put it simple

knotty phoenix
#

oh lmao it was that easy huh.

#

thank you i am humbled

blissful saddle
#

don't worry. Coding blind sight is a real impairment

#

also Notepad++ helps a lot to see these things. I just had to copy-paste it there

#

Can't recommend enough

knotty phoenix
#

it's appreciated!! of course now my weapon isn't loading so i get to figure that out instead, but

crystal tiger
blissful saddle
#

I just wanted to know if I had understood it correctly

#

CP edit is kinda sorcery to me yet

lucid iron
#

I don't know how can I explain that more clearly

vernal crest
lucid iron
#

Aw ok

next plaza
#

Doesn't it do somthing like Include Name > Patch Name in the patch summary?

vernal crest
#

That's not really a bad thing, since CP never applies includes so if the logname was for the code inside the file as well you'd never get to see whether it applied.

vernal crest
knotty phoenix
brittle pasture
#

it doesn't show up in CJB Item Spawner?

knotty phoenix
#

nope

uncut viper
#

Is your weapons.png in the same folder as your content.json and not inside an assets folder?

vernal crest
#

This is showing the logname for my festival file "Include Festival Participation" and then because I don't have a logname for the code block inside it it's just showing what asset the code block is editing.

brittle pasture
#

it should throw an error if the texture isn't valid right

knotty phoenix
#

wait, hold on. i'm a moron. i still had it requring json assets in the manifest

uncut viper
#

actually why are you loading your weapons.png into a target and then using internalassetkey

vernal crest
#

This one shows the logname for the festival file and then my logname for the actual code block inside the festival file. (And which asset it's editing.)

knotty phoenix
uncut viper
#

Loading a .png into a target like that is basically creating your own asset name, just like Data/weapons is an asset name

#

so you probably wouldnt wanna name it Mods/[CP] Anna's ... like that but rather just name it like, {{ModId}}/Weapons

#

and then in your Texture field for the weapon patch, you'd write "{{ModId}}/Weapons" instead of internalassetkey

knotty phoenix
uncut viper
#

your FromFile for your Load action also i assume actually needs to be assets/weapons.png which it looks like you may have thought your target was the asset path in your folder

#

That's how you'd do it yeah! i dont actually remember if capitalization matters for custom assets or not tho. but yeah that FromFile does assume your weapons.png is in the same folder as your content.json

lucid iron
#

is there debug command for spawning a bunch of terrain feature around you

knotty phoenix
uncut viper
#

also Poppiii just to make sure, does your weapons.png have more than one weapon texture on it? or is it just the one Alondite texture?

knotty phoenix
#

it has many

uncut viper
#

ahh, gotcha

#

then the SpriteIndex being 1 is probably the reason

#

the top left most sprite in a .png is actually SpriteIndex 0

knotty phoenix
#

yeah i was about to say i think it's probably just one off

uncut viper
#

starts at 0 in the top left then goes to the right and downwards from there

#

row by row

knotty phoenix
#

ahh, that feels good

#

ty for the help button!

brittle pasture
lucid iron
#

this tool use ability is consume stam but cant water anything...

sacred rain
#

More savefile shenanigans

#

How can there be two elements with the same name?

#

And what does it do? Can you revert your enchant to a previous one? (I never made this far 😭 )

next plaza
#

Remind me in 21 hours to begin the m o d

patent lanceBOT
#

rofl that's what you need a reminder for? yeah ok (#6308234) (21h | <t:1729293717>)

uncut viper
#

theres no reason there cant be two elements with the same name

oak dragon
#

Hii Does anyone know what Game1.SetFreeCursorDrag() is used for?

uncut viper
#

its not like json in that they need to be unique keys

calm nebula
uncut viper
#

(as for the other question im pretty sure the game tries to prevent giving you immediately previous enchantments)

calm nebula
#

And yes. What button said

sacred rain
brave fable
#

this mod contest idea is the worst ever. this is going to take absolutely forever

uncut viper
#

same way you'd parse any other xml, i suppose. what are you trying to parse it for?

brave fable
#

i regret all

sacred rain
# calm nebula It's a list

if it was a list, wouldn't it be like this:

<previousEnchantments>
  <string>...</string>
  <string>...</string>
</previousEnchantments>
sacred rain
#

or well.. to deserialize it. Another library parses it. But the way it works is, I can't really do what the savefile is doing.

sacred rain
teal bridge
#

Hmm, the idea to make a monster mod, after just the other day traipsing through the monster data and code... nope, I think I'll keep my sanity.

uncut viper
#

unfortunately i know not enough about xml (de)serialization to give any further guidance or answers SDVpufferpensive

calm nebula
#

Ooh, serde!

teal bridge
#

(Maybe I can think of a Scarecrow themed mod. All the others sound art-heavy.)

#

Yeah, Serde in the mods-general channel? What is the world coming to?

calm nebula
#

Uh, I would have to see the game implementation of xmlser for netstringlist

#

I finally might have a use for rust at work!

#

(But probably not.)

next plaza
calm nebula
#

Either way, s&s or mod jam SDVpufferheart

teal bridge
#

How do people already have the badges, anyway, did you submit a mod 5 minutes after the contest opened? I thought you didn't even make mods anymore.

calm nebula
#

No, I did the puzzle

uncut viper
#

theres mazes for points

#

also some people did already submit art

calm nebula
#

The maze lol

teal bridge
#

Oh, I missed those.

next plaza
#

They weren’t there at first

#

The mazes showed up a few hours after the initial messages

uncut viper
#

few hours... i think your sense of time may be a bit skewed there

teal bridge
#

I just saw the channel now but I guess it was banner blindness.

uncut viper
#

you havent actually missed the channel by much it was only opened 2.5 hrs ago

teal bridge
#

Yeah, that's why I wondered how people had responded so quickly (before I noticed the maze things).

calm nebula
#

Sowwy I like a puzzlr

tiny zealot
#

i did the mazes and entered the bone zone

uncut viper
#

i just like free points and mazes are easy to solve. though it did distract me from starting my mod entry

teal bridge
#

Hmm, technically the art contest rules don't specify that it has to be good art. MSPaint, here I come.

next plaza
#

I guess they prefilled the channel

#

Before making it public

uncut viper
#

the bulletin board announcement is the canon timestamp

next plaza
#

Interesting use of canon 😛

uncut viper
#

thank you

brittle pasture
#

life itself is but a serialized dramedy for a higher level of existence

teal bridge
#

okay.

brittle pasture
#

(I uh wasn't trying to be deep or something, just poking fun at the term 'canon' above)
anyway anyone here tried to patch a RuntimeMethodInfo? should I even be doing it?

valid folio
#

Hello, a question: Is it possible to use item sprite larger than 16x16? For example items like bottle, jars, vegetables, etc. The size I was thinking in 32x11px, it's to make a bottle, with 16x16 I'm having a hard time giving it a good look.

uncut viper
#

you'd need anoither mod for that, Sprites in Detail i think? or Scale Up? smth like that

brittle pasture
#

(but I highly recommend trying to work with what the game gives you)

lucid iron
#

iirc you have to find the runtime method it generates somehow bolbthinking

valid folio
#

I understand, well I guess I'll keep trying to give it a good look. I had thought of using some sprites that already exist in another mod, and also make my mod compatble with his, this way the vodka and rum would be made using his mod and I could take advantage of the sprites of his drinks but the modder has not responded me, so I started to make my own and in an effort to not look like I'm copying his designs, I want to do something different but I do not like the way the bottle looks.

uncut viper
#

small item sprites are a challeng efor sure! but worth it if you can make it work, larger things tend to stand out a lot