#making-mods-general

1 messages · Page 28 of 1

brave fable
#

i'm limited by the technology of my time SDVpufferpensive

lucid iron
#

but in this case u know all the keys

#

so u can just reorder the second set

#

while using kimono1

brave fable
#

either ur really smart or im really stupid for not thinking of that sooner

lucid iron
#

the problem we had last time was someone with arbitrary list

calm nebula
#

(It is documented as a way to do that in the CP docs.)

#

Sorry

calm nebula
#

Implementation of ROT in CP needed

#

Oh wait

worthy rose
#

how do i get an array of all the items in a players backpack

lucid iron
#

Farmer.Items

worthy rose
#

ty

#

i dont see any item.IsHeld

ocean sailBOT
#

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

lucid iron
#

Farmer.CurrentToolIndex

worthy rose
#

boy this is gonna be harder than i thought then

brave fable
#

what're you trying to do, gold?

worthy rose
#

trying to make my keyToSlot mod work no matter what page of your backpack youre on

#

it only works if youre on the right row rn

#

so i was thinking maybe go for itemID

#

and get that and find that in the backpack and select it

#

which technically actually should be possible...

CurrentToolIndex, get the item ID from that,

lucid iron
#

you can just call shift toolbar until the thing is within 1st 12 indicies

worthy rose
#

yea

#

shift toolbar interesting

lucid iron
#

i forgor the function name but it is a specific function iirc

worthy rose
#

that makes sense

calm nebula
#

Yeah

#

It's rot

worthy rose
#

i can get the item ID from the heldtool thing, then store it, then if it doesnt show up when looking for it , shift backpack

calm nebula
#

Like

worthy rose
#

var items = currentPlayer.Items;

#

so this only shows the 12?

#

is there not some slot ID that considers all 4 layers?

brave fable
#
[Console Code] Output: 36```
calm nebula
#

It's a rotation

lucid iron
#

4 layers think

#

unsure what is meant by that

worthy rose
#

also i gotta wonder if this

        Farmer currentPlayer = GetCurrentPlayer();

will actually get the current split screen player

#

if it took into consideration the button press event source that might be more convincing

lucid iron
#

you need to do PerScreen stuff

brave fable
#

i'm quite sure simply using Game1.player will get the current per-screen player?

worthy rose
#

hjmm

uncut viper
#

if you wanna set data specific to a screen yourself you should use PerScreen stuff i believe but otherwise yeah i think the game handles its own stuff with screens otherwise, so Game1.player should be the current per-screen player

brave fable
#

Game1 always refers to the current screen in splitscreen. PerScreen exists because your Mod instance's values are shared between screens unless wrapped in PerScreen

worthy rose
#
 {
     foreach (Farmer farmer in Game1.getAllFarmers())
     {
         if (farmer.IsLocalPlayer)
         {
             return farmer;
         }
     }

     return null;
 }```
lucid iron
#

u dont need to do that

lucid iron
worthy rose
#

private Farmer? GetCurrentPlayer()
{
return Game1.player
}

lucid iron
#

i mean its already a property getter but sure

brave fable
#

it's really a lot simpler than you think haha

lucid iron
#

the perscreen stuff is more when u r actually change player stats and the like Bolb

worthy rose
#

lmao damnit

lucid iron
#

u should be safe within 1 function call i think?

worthy rose
#

i just want to be able to jump to whatever slot no matter what row its on, idk how to get the row and slot index for current tool yet i gotta just breakpoint it and look

brave fable
#

Game1.player.getIndexOfInventoryItem(item: item) ?

#

where you could use Game1.player.ActiveItem or Game1.player.CurrentTool

#

somehow sailor styles has gone 2 yeaers with kimono without me realising that mens pants are meant to be 1 pixel higher on the sheet and 1 pixel longer, so lads have their asses hang out when wearing a ladies fit

#

nobody reported this

lucid iron
#

sounds like a feature to me

lucid mulch
#

(Game1 itself is [InstanceStatics] so for all intents and purposes the class is already PerScreen)

worthy rose
teal bridge
#

Finally finished dropdowns, and sweet jesus they were a lot harder to do than sliders. Shame on me for thinking they'd be of similar complexity.

#

With that out of the way, are there any other essential widgets that are still missing/wanted?

brave fable
#

scrolling marquees SDVpufferchickhug

worthy rose
#

.... something insanely complicated?

teal bridge
#

Probably not that hard actually, it's just tapping into the existing animations.

#

Only thing with a marquee is that there's no logical fit-to-content width, the label pretty much has to be fixed- or stretch-width.

#

What would it be used for, though?

worthy rose
#

signs

#

uhh shirts

brave fable
#

under construction banners & sparkles

worthy rose
#

novelty shirts

#

WE NEED IT

#

im kidding

brave fable
#

please also add a view counter so i know how many people have visited my menu

worthy rose
#

yes

lucid iron
#

But that's just the pre day 5 construction man

worthy rose
#

i need this to have real geocities free website energy

teal bridge
#

In a UI/HUD? Would help to have an example in order to understand the look and feel.

lucid iron
#

Put him on ur menu ez

worthy rose
#

fully animated gifs

#

lmao

uncut viper
#

what about a resizable hud element
like one where you click on a corner or edge and can drag the size around

worthy rose
#

what are talking about again

teal bridge
#

While I'm sure the view counter was a joke (not sure if the marquee was too), gonna have to nope on that since it's analytics and not UI.

worthy rose
#

oh yeah hard things to code

lucid iron
#

do menus have a exit event rn

#

not really sure if u can detect that tbh

worthy rose
#

interesting equestion

#

do events have an event

teal bridge
uncut viper
#

clickablemenus have an exitFunction and an onExit

worthy rose
#

clickable menu yes

#

its wierd that the dialogue im using is called clickable menu too

lucid iron
#

i did do this w/ pointer enter exit yesterday, might be nice to have general text button

worthy rose
#

'honestly we could just make a counter ourselves if we really wanted

#

ahh on hover coloring?

uncut viper
lucid iron
#

same with a checkbox that holds checked/not checked state

#

its just convenient

calm nebula
worthy rose
#

idk enough about how this would go

teal bridge
#

With all the thousands of sprites in Cursors, I don't think I see a resizer...

worthy rose
#

<->

#

ez

lucid iron
#

hm isnt there one on the main menu think

teal bridge
#

Not that I actually expect to find, y'know, cursors in there, but still.

lucid iron
#

that one is button for fullscreen/window switch

worthy rose
#

you may just be scrolling past it

teal bridge
#

I assume you're talking about that one but that's a button, not a cursor.

worthy rose
#

so close

lucid iron
#

oh yea i misunderstood oops

teal bridge
#

Resizing should normally change the arrow cursor to a dual-arrow pointing up-down, left-right or diagonally.

#

Since SDV doesn't have anything resizable to my knowledge, makes sense that it doesn't have a cursor like that, I guess.

worthy rose
#

why is it called Game1

#

is there a Game2

lucid iron
#

isnt that like

#

Class1

worthy rose
#

oh

lucid iron
#

from the template blobcatgooglyblep

worthy rose
#

yeah i suppose

#

uniformity

teal bridge
#

Maybe I could hack one out of these

lucid iron
#

how r u supposed to resize things on a gamepad

worthy rose
#

just use that and flip it uposide down

#

maybe click to activate

#

click again to "set"

teal bridge
#

Resize anchor is focusable, hold the A button and move the stick.

worthy rose
#

nice

teal bridge
#

I dunno if this would see a lot of use, though, unless Button has something in mind to do right now.

#

Text/icon buttons and checkboxes are very easy so I guess I may as well throw those in.

worthy rose
#

Will getIndexOfInventoryItem get it even if youre not on the right row?

uncut viper
#

i was thinking like an on screen sticky note window you can open/close/minimize that you can resize for your notetaking needs during the day

calm nebula
#

I believe I went with the forage pointer x4 for camera's Mozilla pan mode

uncut viper
#

i guess notepad wouldve been easier to say than on screen sticky note

lucid iron
#

i notice that whenever i open a menu my mouse cursor snaps to first focusable

worthy rose
#

futuristic not taking apparatus

lucid iron
#

i assume thats some gamepad thing but its jank with mouse

worthy rose
#

note*

teal bridge
#

Aye, there are definitely theoretical uses, question is whether someone will use it now or soon.

worthy rose
#

someonew will use it in 14 months

#

and have questions

uncut viper
#

it was also on my mind for my in game ilspy esque gui idea ive had in mind
its not like. high priority though obv

calm nebula
#

You want to what

uncut viper
#

normal stuff

lucid iron
#

looking forward to StardewUI.RichTextEditor and StardewUI.SyntaxHighlighter just for buttons \s

teal bridge
#

Haha... rich text requires a decent font system

#

Is there even an italicized typeface available? I never found one.

#

It can do bold though. Cheap ass bold where it just draws 5 copies 2 pixels apart (one centered).

brave fable
#

ah yes, it's called rich text because it's expensive to render it 5 times

teal bridge
#

I wonder how MonoGame handles that internally. If it were well designed I'd expect that to be almost free since it would do the text layout once and then just draw it 5 times (layout/rasterization of text is expensive, blitting it to screen is cheap). But then this is MonoGame we're talking about, so who knows...

#

Anyway, to recap, serious suggestions so far were the stock button/checkbox and possibly the marquee thing, I'm not exactly sure. Resizables maybe on the longer-term to-do list.

calm nebula
#

This widget maybe?

lucid iron
#

oh do u have radio buttons

#

related to checkbox ofc, but with a thing to ensure mutual exclusive

#

idk if that comes up enough so maybe ppl should just do their own

teal bridge
#

I was thinking about doing a radio group for myself, yeah. I don't think SDV has a sprite for it though so you'd have to give it your own on/off sprites.

calm nebula
#

looks through the labview widget box

brave fable
#

sdv/gmcm just uses dropdowns in place of radio buttons, which is overall better for space imo

#

ui is extremely cramped and space is a premium

uncut viper
#

i like radio buttons better aesthetically/UX wise though personally

teal bridge
#

Yes, which is why I spent all that time implementing the dropdown. That said, dropdowns aren't really that space-efficient when so much horizontal space is wasted.

#

And radio groups have much better usability.

lucid iron
#

Radio groups show all options at once I enjoy that

brave fable
#

yeah, radio ranges are very nice

uncut viper
#

you could probably reuse these in some manner for radio buttons

teal bridge
#

The closed-range could be interesting, though I wonder how janky it would be with Stardew's slider sprites.

#

Hmm, not sure if those would work for radios. The dots are fine, the backgrounds are... not so much.

#

Maybe just an empty circle and you can put whatever you want in it. I'll probably use the bobber. You could use an egg, a gold coin, whatever.

uncut viper
#

i was thinking you could take just the part with the colour, so like just this part and then just make the corners empty by editin the sprite data directly. kinda messy, but would come with recolour support

#

theres even a smaller lil circle you could use for "off"

teal bridge
#

The menu tile is actually not a bad frame for it. Not perfectly circular but it is rounded. I just wish it wasn't orange, but recoloring the pixel data in a sprite is way less egregious a hack than trying to circle-crop it in code.

worthy rose
#

is ther any thing that states what page of the toolbar player is on

lucid iron
#

oh yea what about the layout thing for scrollableframeview content

worthy rose
#

idk you guys say im making this harder than it is and man i must be making it so difficult

lucid iron
#

it works by rotating the list

#

you are always on page 1

worthy rose
#

i shift toolbar htho

#

yeah how do i check that ive shifted thru all of their backpack rows

teal bridge
#

That was checked in yesterday.

worthy rose
#

how on earth can i verify such a thing

#

i.e. what if they only have one upgrade

lucid iron
#

there's maxItems

worthy rose
#

or none upgrade

#

hm. ok

#

so pages = maxItems / 8 ?

#

or however many it is

lucid iron
#

this mod let you change the size of the toolbar

worthy rose
#

ahhhhhhhhhh i cant it make brain hurt

lucid iron
#

so it figures out the new max toolbar size here

worthy rose
#

yeah i see that

#

based on what they cahnged

#

but i mean

#

if its unmodded

#

it hsould just be the max items / number per row

lucid iron
#

with respect to Farmer.maxInventorySpace yea

worthy rose
#

wonder where he gets the rowCount

#

like this just raises more questions hahaha

lucid iron
#

row count is a config value

#

ah i thought i patched shift toolbar but i actually just wrote a new shift function

#

for multiple lines to shift

worthy rose
#

i guess i could ya knoiw

#

there is a shiftToolbar functionm

lucid iron
#

Game1.pressSwitchToolButton() is the vanilla version of this function

worthy rose
#

what mod dev are you i know i recognize your handle

#

or do you just contribe to pathos repos

lucid iron
#

i just sent you my github

worthy rose
#

lmao

#

i think ive used it before

#

FullInventoryToolbar

teal bridge
#

I guess you'd have to write your own if it's meant to work with arbitrary toolbar sizes. Though setting a size of like, 17, means you'd just keep shuffling the items into new weird spots...

worthy rose
#

yea

#

im just not going to have mod capability for now

#

i mean

#

i could just like, somehow check how many are in the current row

#

then assume from that

#

Items.Count?

#

or would that show all rows

lucid iron
#

you want Farmer.hotbarSize

#

it is a constant

worthy rose
#

ooooo

#

i see this tho

#

items.Count == 48

#

is galaxy sword item ID really 4

#

like is that the 4th item made lmao

#

hmmm parentSheetIndex

#

that seems like it might hint at row?

calm nebula
#

No

#

That is the position of the sprite in it's spritesheet

#

(Ish?)

worthy rose
#

oops

#

wrong thing

#

lookie it has all of the items and their true position

lucid iron
#

huh i didnt realise smapi respected internal for save data blobcatgooglyblep

worthy rose
#

wdym

lucid iron
#

you should use QualifiedItemId instead now

worthy rose
#

ok gotcha

#

so im just gonna have to shift thru inventory

#

looking for stored item

rancid temple
#

If you don't want to open the data assets

worthy rose
#

my button logic is still so messed up

#

and i hate it

thin hamlet
#

Figured I’d ask now

#

I want one of my rocks to have a magnetic effect like the ring

#

Is that possible without C#?

lucid iron
#

are you making the rock equipable

rancid temple
#

The magnetic effect is a buff on the player that's used by the game to determine if loose items should be pulled to the player

#

So if it's not a piece of equipment or something that would provide a buff to the player, you would have to recreate that effect yourself in C#

#

I can't decide if it's smart or insane to make all these different things just classified as debris

brittle pasture
#

ItemExtension do have "item in inventory" GSQ and "item held/dropped" trigger actions SDVpufferthink

#

and there's add buff actions in vanilla

uncut viper
#

item in inventory GSQ is vanilla

calm nebula
#

You know those little numbers

#

Those are debri too

rancid temple
#

Wait, little numbers where? I'm moving firmly towards "insane" lmao

next plaza
#

The combat little numbers

#

Damage numbers

rancid temple
calm nebula
#

Don't worry

#

I've already gone off the deep end

#

I'm trying to figure out whether or not I can plant kiwi

tiny zealot
#

damage numbers are debris? that's wild

brave fable
#

damage numbers, crate bits, bug parts, dropped items, all debris. it's nice to think that one little change and your combat dmg could sink in water

calm nebula
#

Look, this plant is good down to 5F

#

This seems maybe doable....

rancid temple
#

Dang, hardy

calm nebula
#

In before "wow this new farming game is tiring. And I'm covered in ant bites. Too realistic. 0/10"

rancid temple
#

Just gotta find some stardrops to bump up your stamina (coffee, so much coffee)

lucid iron
#

heal numbers are also debris ukimasu2

#

altho im prsure debris is just how it displays and hopefully not any real functionality

rancid temple
#

I think it's mostly to take advantage of the like falling and bouncing effect

brave fable
#

does this look like the right formatting to make a temp character that spawns on sunday or monday after 3 days, and is absent all other days SDVitembass

{
    "LogName": "Sailor Styles: Character - Data",
    "Action": "EditData",
    "Target": "Data/Characters",
    "When": {
        "DayOfWeek |contains=Sunday, Monday": true,
        "query: {{DaysPlayed}} > 3":  true
    },
    "Entries": {
        "blueberry.SailorStyles.Character": {
            // ...
            "SpawnIfMissing": true
        }
    }
}
worthy rose
#

guys im still over complicating the everloving shit out of this key combo bs

#

can i just show my dumb ass convoluted code to someone

#

and hope to god they dont smite me

brave fable
#

sure, post it to codeshare.io or a similar site and link it here, someone might be able to point out obvious issues

#

or you can zip and share the full mod for a test run

velvet narwhal
#

you'd probably just have to set the schedule instead, make them only show up on sunday and monday (with a spring default) and set them to invisible the rest of the time (or a warp room)
the unlockcondition to be the gsq of daysplayed instead

worthy rose
#

i know it works as is just my button logic is dumb

#

but it does work just not perfectly

#

can someone remind me what JustPressed does

#

the issue lies in stuff like... i want d pad to be able to be modifier keys but also would like if it just worked as a single bound key too

#

like if someone wanted to do left dpad + B

#

or if someone just wanted left dpad

#

but theres all sorts of issues with this

#

i can technically set the keybind once all buttons in the desired bind are released

#

or evenb once any button is released

#

if youre going to bind LEFT + A youd prob not let go of any until you held both

#

yeah

#

so when in keybind mode i should add all buttons till any are released

#

that should be a lot simpler than i made it

lucid mulch
brave fable
#

will UnlockConditions hide the npc when it evaluates to false?

#

alternatively, should i just rehome the npc on off-days

lucid mulch
#

no but you can do that by hiding them in an unaccessible location with Home (and schedules)

calm nebula
#

You can also use a trigger action

#

And set kitty invisible

uncut viper
#

can you call that from the farmhand? atra doesnt think so

brave fable
#

invisible might not be ok since atm the shop checks the tile for the cat

#

i'd rather vanish the cat somewhere else

calm nebula
#

The game has special syncing for those triggeractions

#

Ah. Poor kitty

uncut viper
#

im quoting the wiki with that one

lucid mulch
#

npc isInvisible is a netfield it would eventually sync

calm nebula
#

Hmm

brave fable
#

he lives a life of luxury in a wardrobe someplace. he has to get all these clothes from somewhere

uncut viper
calm nebula
#

Only host sets it

lucid mulch
#

though tbh I would do both invisible and the unaccessible location, both have different characteristics

uncut viper
#

i was just being silly by telling atra what atra thinks

brave fable
#

UnlockConditions isn't even mentioned on the npc data wiki page SDVpufferfush

velvet narwhal
#

!npc

ocean sailBOT
#
Creating a Custom NPC

Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:

  1. Tiakall has a great tutorial on making a custom NPC for 1.6:
    https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC

  2. Custom NPCs received many improvements with 1.6. For changes made, see the migration guide:
    https://stardewvalleywiki.com/Modding:Migrate_to_Stardew_Valley_1.6#Custom_NPCs

  3. Some information on the NPC wiki page is still relevant:
    https://stardewvalleywiki.com/Modding:NPC_data
    Just make sure you're checking the migration page and tutorial first as this page still has outdated information on it as well.

  4. Aviroen has put together a template that will allow you to easily create a romanceable NPC:
    https://stardewmodding.wiki.gg/wiki/Npc_template

uncut viper
#

for basically anything NPC related you want the migrate to 1 .6 page

#

until it gets moved to the proper page

velvet narwhal
#

i honestly forgot blueberry was still dealing with the 1.3 understanding of npcs lmao

brave fable
#

to be fair 1.6 was a while ago lol

#

yah i'm new here

lucid mulch
#

SpawnIfMisssing is also not on the page tbh

velvet narwhal
#

(i'll get to it eventually................ i have uni to deal with SDVpufferflat )

uncut viper
#

SpawnIfMissing is on the migrate page

brave fable
#

this mod has android compat comments labeled from 2019 on it, it's been a while

lucid mulch
#

everythings on the migrate page as its the source of truth

calm nebula
#

What is 2019

brave fable
#

really though this mod's seen some shit since 2019. i don't think i have any other mod that's been through so many different frameworks

calm nebula
#

What did it use before JA?

lucid mulch
#

JA was never needed-needed, only if you wanted mod compatibility

brave fable
#

kisekae, cp, c#, get glam, json assets, c# again, back to cp

calm nebula
#

Kisekae?

velvet narwhal
#

i just had war flashbacks reading kisekae

calm nebula
#

What is that

nova gale
#

are the overnight events (like the earthquake and such) just normal events or are they something special?

#

wants to add a simple text event overnight to trigger the entrance to my new area opening

brave fable
#

get glam was a fork or successor to kisekae, it was just a framework that let you add to the character creator (hair, shoes, accessories, etc)

lucid mulch
#

FarmEvents are their own beast

uncut viper
#

i think overnights are a more special thing but theres a mod for it iirc

brave fable
#

at the time shirts and pants didn't have items so it handled those too

uncut viper
velvet narwhal
#

i didn't realize that was the header image that's pretty good

nova gale
#

lol

#

thanks, I'll see how they added them in

lucid mulch
#

(C#)

nova gale
#

yeah, i suspected I'd need to use the c# portion of my mod for it

lucid mulch
#

Utility.pickFarmEvent (and its associated delegate)

nova gale
#

ah, and each event is an class that extends the BaseFarmEvent class

#

interesting!

#

with a big catch all for the type I'm talking about called "WorldChangeEvent"

brave fable
#

does the first entry in a schedule start with 0 or 600 SDVpufferthinkblob

nova gale
#

0 means they'll start the day already there

#

if you set the start to 6 (or more effectively 610) they'll move from their bed to the first location

#

I found starting at 600 often meant it didn't fire at all though

#

so I swapped to 610

lucid mulch
#

0 is the schedule hack for Leo's behaviour

brave fable
#

oh so i don't even need multiple home locations if i just 0 a different place on the same conditions

nova gale
#

I figure it works for "early riser" characters of all sorts where they got up at the ass crack of dawn to go stare out over the ocean or whatever

calm nebula
#

That feature is glitched

nova gale
#

I was curious why it was a list, i was confused how they would pick a place to go

#

unless it's intended that only 1 should resolve to true at a time maybe?

brave fable
#

i imagined it'd go through the list until it finds one with matching conditions

calm nebula
#

The first that resolves true is used

#

But note that (a) checking happens quite early at night, before the day has ticked over

#

And (b) there is something weird about it and loading

#

Sometimes you get the npc on the map that would have been picked the previous day and the vector location of the current day

next plaza
#

I fixed that for upcoming SpaceCore btw

brave fable
#

works? SDVitembass

{
  "Mon": "GOTO shop",
  "Sun": "GOTO shop",
  "shop": "0 33 96/1240 33 96/1830 33 96/2020 33 96",
  "default": "0 Forest -999 -999"
}
next plaza
#

(Not in base game because iterating on SpaceCore is easier than iterating on game versions)

calm nebula
next plaza
#

(And we’re unsure of side effects at the moment)

calm nebula
#

I can imagine

#

The night code spooks me

next plaza
next plaza
#

Ah I never pushed it

#

Or I did

#

Thank you!

#

It’s not the best

#

But it worked in my testing

brave fable
#

oh to have a little git peon to fetch my commits for me

calm nebula
#

Why does warp character set the default location

#

I mean I know zero schedules don't work at all for married npcs

next plaza
#

Why does warp character, or my code?

calm nebula
#

Your code

#

Line 79

next plaza
#

Honestly I probably should’ve just used a conditional weak table, but if figured updating the default stuff made sense since that SHOULD be up to date anyways

calm nebula
#

Breaks married npcs

next plaza
#

I think, I’m tired at the moment

#

Does it? How?

calm nebula
#

Married npcs have a home location of their wedded home

#

Granted, zero schedules are broken in marriage anyways

#

(Because marriage duties hard warps them back)

next plaza
#

Does reloadDefaultLocation not account for that?

calm nebula
#

Does it?

next plaza
#

I assumed it did I guess

calm nebula
#

I forget if it does

#

But that isn't what 79 does

#

79 hard sets it to their 0 location

next plaza
#

So, that only gets called if they used a 0 schedule

calm nebula
#

Yup

next plaza
#

It’s a transpiler that replaces a specific call in the parse function

calm nebula
#

And currently in vanilla zero schedules don't work for married mpcs

#

But only because they get hard warped back at the start of marriage duties

next plaza
#

Hmm

#

Oh, I see

calm nebula
#

Which someone could easily just...fix

#

Anyways I'm going the fuck to sleep

next plaza
#

So they would get warped to the 0 location during marriage duty instead

#

Hmm, that’ll be interesting to fix

calm nebula
#

Nah, since you get their current schedule now

next plaza
#

It’ll work for Hector since he ignores marriage schedules but… hmm

calm nebula
#

Just a simple "if schedule starts with "0 " don't do this warp"

#

I think. It's been the better half of a year but I still distinctly remember

next plaza
#

Remind me in 19 hours to look into marriage schedules with my 0 schedule fix

patent lanceBOT
#

Ugh I suppose, kittycatcasey (#6234897) (19h | <t:1726095676>)

next plaza
#

Uber has been nice to me on ES the past few times, guess that phase is over

calm nebula
#

Doesn't ubre have nice mode

next plaza
#

Someone tested and they were rude to them after my third time in a row

calm nebula
#

Anyways, sleep

next plaza
#

Me tooooo

brave fable
#

hand cursor stays on a shop tile even when the open shop conditions aren't met SDVpufferfush it's probably fine

#

and yet the hat mouse shop doesn't get a hand cursor..

worthy rose
#

TIL you shouldnt use a list for a dict key

faint remnant
#

Has anyone made animals larger than 32x32 and had them work correctly? did a 64x64 and it just got stuck on everything(Makes sense its huge) just wondering if there is a workaround or anything/max size that works!

brittle pasture
#

maybe you can try adding a special building for it with 64 width door

worthy rose
#

Are current item and current tool..... two different things

#

reeeeeeeeeeeeeeeeee

#

but you can only have one or the other selected

brittle pasture
#

CurrentTool casts CurrentItem to Tool, so it'd return null if the current item isn't a tool
if the current item is a tool, both will point to the same thing (albeit with different types)

worthy rose
#

wait hang on i dont understand, so would CurrentTool just always work

brittle pasture
#

have you unpacked the source code? It explains things clearer

worthy rose
#

for my purposes probably?

#

oh god no

#

im not that level of programmer rly

drowsy pewter
#

it seems like something you should do

worthy rose
#

so its not obfuscated?

plucky reef
#

it's incredibly useful, especially if you don't know much code

worthy rose
#

idk how to unpack the source

brittle pasture
#

it's C# so you can decompile it and (mostly) get the original source code back

#

!decompile

ocean sailBOT
worthy rose
#

a lot of newer c# is pretty hard to unpack

#

must be made on some older stuff

#

but for now, to fix my cde, i see that its set to -1 when its not an item

royal stump
#

there's no intentional obfuscation used on SDV before compiling it, which helps

worthy rose
#

ahh yeah

#

so i can just, if -1, get the other

#
            {
                desiredItemIndex -= 12;
                player.shiftToolbar(true);
            }

cant believe this works lmao

#

wrote it expecting fully for it to be wrong

plucky reef
#

ezpz

worthy rose
#

and the tool thing i just stored a seperate check for if its a tool and if it is search by itemID string, but for regular items was able to just use parentsheetindex

brittle pasture
#

don't use parent sheet index

#

that's only the number of the item's texture within its texture sheets, so different items using different sheets can have the same parent sheet index

#

use QualifiedItemId for both

woeful lintel
#

does base game spouse portraits behave like this?

brittle pasture
#

No

woeful lintel
#

Then I wonder why @muted sable was trying to achieve this, why not copy the ShopItem data from other spouse portraits?

velvet narwhal
#

shin wanted a "one time buy" kind of deal iirc

teal bridge
#

I s'pose these are the controls you want, @lucid iron?

I took a good look around and couldn't find a single instance of vanilla buttons in the game actually having a hover effect, so I'm going to default to the regular and hover sprite being the same, but you can trivially swap the hover over to "light" background in the constructor.

frozen field
#

hello! so I'm a c# programmer, and though I'm not quite free just yet, I would love to learn the mod frameworks and help with the C# stuff soon!

I also have an idea for some external game utilities that might be useful to both modders and players:

1 - tool that's basically an out of game AT catalog, to help with game performance
2 - similar to above but with CP (this might be harder bc it's tilesheets?)
3 - something like the Stardew Helper site but can account for mods

Thoughts??

woeful lintel
uncut viper
#

i dont know what an AT catalog is, and CP is way more than tilesheets

frozen field
#

edit: c# programmer in the real world (like my day job lol)

woeful lintel
#

(you can edit discord messages btw)

frozen field
frozen field
uncut viper
#

im not sure what either of 1 or 2 would do for game performance then

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.

frozen field
#

hard to explain 2, but 1 would let you see everything in a separate tool. the catalog gets really slow to load if you have a lot of texture packs

lucid iron
#

Smapi docs r pretty straight forward

#

It's little bit different than making standalone c# cus u r make stuff to run on top of game

frozen field
#

hellz yeah love me some good documentation. definitely stuff I want to get into! (after my certification exam for my job)

lucid iron
#

But once u get past entry it's free game

frozen field
#

then expect to see me again here....soon ™️

lucid iron
#

Many mods, including content patcher and alternative textures, are open source

muted sable
frozen field
uncut viper
#

i dont think makin the portrait more special is a bad idea, so long as you can help the player out if they somehow lose it

worthy rose
#

my mod is mostly finished now, button combos work nice, and i successfully supress input if button is pressed whilst modifier is held (so if youre currently on bombs and you say hold L3 and press X to swap to a bind you set to that, iot doesnt lay a bomb first)

#

i kinda liked how it felt when it would for some reason do the action of the button the keybind was set to afterwards, but i dont think thats really necessary, and it only worked on Modifier + X combos

#

(PS5 button X, in this context)

#

tomorrow ill dig into the mod menu stuff and make a clear all binds button

woeful lintel
woeful lintel
#

You're doing a pack of UI tools to be used in mods?

teal bridge
#

Doing, done... the definitions get blurry at some point.

gilded comet
#

oh that's so cool

woeful lintel
#

that's so cool! I've heard so much people going mad with UI, I've always pushed away ideas involving UIs in SV.

teal bridge
#

It started out as just an experiment for the logistics menus, then found a use (and more bugs to fix) in pretty much all of my other mods to date.

brave fable
#

for me SDVpufferwow

teal bridge
#

Please don't make marquees with focusable elements inside. I don't even want to think about how that's supposed to work.

proud wyvern
#

obviously it needs to stop animating when focusing on anything inside

teal bridge
#

I mean, yes, but the drawing gets repeated so it's continuous, so if parts of the same view/element appears multiple times in the same marquee... ahh, agony.

#

It's all a drawing trick, not a real layout like a scroll container.

proud wyvern
#

oh.

inner harbor
#

Received this error from Jasper in the afternoon of the Moonlight Jesllies: his dialogue just showed as "..." usually this means a blank dialogue entry - but I checked his marriageDialogueJasper and it was fine - is it looking for dialogue elsewhere? If so, where? https://smapi.io/log/42924805da6b410bbefd78c4d2ff2ff3

ocean sailBOT
#

Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Home, with 47 C# mods and 52 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

frigid hollow
#

Do the white squares in the coop sprite serve a purpose?

wise berry
#

(either way, it'd be nice to have the JSON files to work with)

hallow prism
#

Jasper is its own mod for now

inner harbor
#

he has his own mod atm, but I've merged him into East Scarp. I was just wondering if this piece of data could give us any information on where it was looking for it. Don't worry about digging into the files... the version I have is quite different from any available

#

just wondering if it was looking for data in MarriageDIalogue or elsewhere.

wise berry
#

Huh, is the "Romancing Jasper 1.0.0" mod the same thing?

inner harbor
#

you won't find them, they're WIP

lucid mulch
inner harbor
#

its me moving a bunch of stuff around

hallow prism
#

Last time i saw a ... dialogue it was related to... ja something?

#

On phone but ill search details later

#

Pretty sure it was mentioned on ES channel

inner harbor
#

... normally happens when it finds a blank field.

wise berry
#

I think some of these should be in the main "MarriageDialogue" file, I'll go check

lucid mulch
#

Did they say the exact time it happened?

inner harbor
#

I'm not even used to them giving dialogue in the afernoon when their daily dialogue is (Season)_(day) ie: summer_28

#

it was after 12 noon

#

unless it's looking for something random like a conversation topic, I guess?

lucid mulch
#

if the time was after 1300 and it was a marriage schedule, it may have attempted funReturn_Jasper or jobReturn_Jasper

inner harbor
#

I wish it just told us... ah well, mysteries

#

(as you can see the kid stuff is currently broken but we don't have children)

wise berry
#

jobReturn_Jasper or funReturn_Jasper seems pretty likely

#

They don't have values defined in the main MarriageDialogue.json

inner harbor
#

he has funReturn

wise berry
#

What day of the week did the error occur?

inner harbor
#

It's a sunday. Summer_28, gave the relevant dialogue in the morning.

wise berry
#

There's some wacky logic depending on the day of the week it seems

inner harbor
#

usually they then don't talk later on those days.

wise berry
#

Might be because of this

#

Try filling it out and trying to trigger it again to see if what you put in shows up

inner harbor
#

thanks, will do, will note he hadn't left the farmhouse that day

wise berry
#

I'll keep looking around in that case then

inner harbor
#

don't stress too much, I'll see if it happens again

#

might be something random like a conversation topic or something

lucid mulch
#

the logic for funReturn and jobReturn isn't day specific, its based on the npc's schedule info
funReturn is if the schedule is marriage_{day} jobReturn is if its marriageJob

wise berry
#

I do wonder if it's not keen on the randomized keys having names in some instances

inner harbor
#

yeh, I'm pretty sure if you schedule them to leave each day you only get the funLeave and funReturn dialogue

wise berry
lucid mulch
#
    else if (Game1.timeOfDay > 1300)
    {
        if (this.ScheduleKey == "marriage_" + Game1.shortDayNameFromDayOfSeason(Game1.dayOfMonth))
        {
            this.setNewDialogue("MarriageDialogue", "funReturn_", clearOnMovement: true);
        }
        else if (this.ScheduleKey == "marriageJob")
        {
            this.setNewDialogue("MarriageDialogue", "jobReturn_");
        }
        else if (Game1.timeOfDay < 1800)
        {
            this.setRandomAfternoonMarriageDialogue(Game1.timeOfDay, base.currentLocation, countAsDailyAfternoon: true);
        }
    }
wise berry
#

SinZ can probably pull up whether it would work properly in the other file though SDVpuffersquee

lucid mulch
#

and setNewDialogue has a cruel twist that if its marriage related

    if (dialogueSheetName.Contains("Marriage"))
    {
        if (this.getSpouse() == Game1.player)
        {
            Dialogue dialogue2 = this.tryToGetMarriageSpecificDialogue(dialogueSheetKey + nameToAppend) ?? new Dialogue(this, null, "");
            dialogue2.removeOnNextMove = clearOnMovement;
            this.CurrentDialogue.Push(dialogue2);
        }
        return;
    }

The error that shows up I'm 95% sure is that fallback new Dialogue(this, null, "")
as right before it on the same seconds, the SMAPI asset propagation did try to load Characters/Dialogue/MarriageDialogue which can only happen if tryToGetMarriageSpecificDialogue runs, reads the NPC specific one, cant find the value and falls back to the generic one, and if the generic one doesn't have it either, return null

inner harbor
#

I have had issues before when using $c but I don't think that applies in this instance

#

hmm are their new marriage dialogue keys it could be looking for?

lucid mulch
#

Since Characters/Dialogue/MarriageDialogue was loaded at the exact time of the error, I'm 99% sure whatever key was attempted was missing from the Jasper specific MarriageDialogue

inner harbor
#

but also from the generic?

lucid mulch
#

and if it was found in the generic MarriageDialogue I see no way of the error being empty key

inner harbor
#

does anyone have jobLeave anymore? IT's not on Harvey or Penny's MarriageDialogue jsons

wise berry
#

It's in the generic one, keys with their names at the end

inner harbor
#

ah yes thatmakes sense

wise berry
#

I wonder a little if you'd want to try moving some of Jasper's lines in there

#

But it might be a bunch of work for something that might not even work

lucid mulch
#

I'm fairly confident that the code reading MarriageDialogue checks the npc specific one first anyway

inner harbor
#

hmm what about "season_NPCName" that's in generic.

wise berry
#

That might be a good idea

#

Unfortunately it apparently has only a 5% chance of appearing..?

inner harbor
#

the season_npcname? But wouldn't it be morning dialogue? What ones show in the afternoon?

#

I think pre-1.6, non existent dialogue just popped a speech box then vanished it without error messages too

#

so probably why I never noticed

lucid mulch
#

"afternoon" dialogue is >1300 and before <1800

inner harbor
#

so what ones pop in afternoon? Just jobreturn and funreturn?

#

Night ones must be after 6?

hallow prism
#

so yeah the info i found is that it happened on ARV because of some JA references in the mod and got solved once removing those, more details may be in the ARV channel somewhere. Your problem may be different but maybe you have some JA gifts or something that cause issue

lucid mulch
#

if its after 1300
funReturn if its that schedule.
jobReturn if its that schedule
otherwise if its before 1800, do afternoon dialogues (unless its krobus and its friday)

  • Outdoor_{name}
  • Outdoor_0 -> Outdoor_4
  • Neutral_0 -> Neutral_9
  • Bad_0 -> Bad_9
  • {season}_{name}
  • Good_0 -> Good_9
inner harbor
#

Okay, I think all of those are covered exceot outdoor_jasper and (season)_(name)

#

so I'll add those in

lucid mulch
#

it wouldn't be the outdoor pairings in your example as they warped to Farmhouse, and Outdoor only happens on the farm

inner harbor
#

in terms of JA gifts, there's a few with the AcceptGift code, but they'r enot so much JA as items that just don't exist in my game

#

like I don't have JA installed at all

#

all I can think fits is (season)_(name)

wise berry
#

That seems like a pain to reproduce considering it's a random chance whether you get it

#

Probably why it's slipped your notice

inner harbor
#

I triggered it on the same day played twice,

#

like I played it once, turned time back a day, and played it again

lucid mulch
#

it is seeded random on the day+time

inner harbor
#

(I was testing the Moonlight Jellies)

#

so presuambly if I used the _old file I could trigger it again

#

lets test that

lucid mulch
#

I can make a quick mod to just log when marriage specific dialogues don't find one if you want

#

wont help for users in the wild unless they also install it, but if you are locally reproducing it

inner harbor
#

let me test this theory first

#

unless you want to whip up something to help other folks with bug testing

#

yep, it's summer_Jasper

#

right four more lots of dialogue to rustle up!

silver pelican
#

hello! just a question since its my first time including other people's translations into a food mod im updating, do I just put the translations file in the i18n folder? do i need to do anything hardcoded?

wise berry
#

Nope, it should be as simple as that

silver pelican
#

I see! Thank you sooo much! htanimeyay3

wise berry
#

Of course make sure you have permission to use their translations directly in the mod SDVpuffersquee

#

(probably safe to assume you do but I think it's polite)

inner harbor
#

anyhow, thank you for your willingness to help, and helpfulness with it!

#

(Jasper's "bad" dialogue makes me feel sad, I hope I never see it in game (I won't, I have No Friendship Decay enabled, although I talk to him everyday anyway) )

woeful lintel
#

Oh my god, I can split the code of my main class into multiple files

#

I'm so glad

lucid mulch
#

(please do not use partial classes, you will regret it)

rancid temple
#

I regret whenever someone else does it and I have to see it

formal crown
#

I make another class for some things(like DisplayHandler if there's too much display event code), and handle them there then tie their events to ModEntry if my ModEntry gets too big

#

Partial classes make me mad xD

rancid temple
#

Whenever I feel like my scripts are too big, I just open the decompile again and look at almost any script there

vernal crest
#

I just avidly read that whole discussion about Jasper's dialogue so I could learn more for future troubleshooting marriage dialogue.

lucid mulch
#

hard part is going to be testing it

vernal crest
#

If that's something I could help with I'd be willing to do that.

patent atlas
#

Are there frameworks which extensively mess with spouse AI?

shut loom
#

I wish there was a machine that auto-updated my npc to 1.6

rancid temple
#

Spouse AI is primarily just the same as any normal NPC AI, based on dialogue and schedule data. I can't think of any frameworks that mess with those systems, they're kind of heavily integrated

lucid mulch
patent atlas
#

Schedule data is only used when an schedule actually exists for that day

rancid temple
#

I wouldn't say a lot, at least not in 1.6, but a fair amount sure

patent atlas
#

Otherwise its all if elses and harcoded placement

#

I was messing with it a few weeks back, dropped because it was frustrating but thought that maybe one of the big frameworks had softened the code a bit already

#

Softcode

rancid temple
#

Technically schedule data is always used, if there's not a schedule that matches it falls back to spring and if that's missing the NPC stops functioning

patent atlas
#

Not for married npcs

#

There is specific logic for selecting npc marriage schedule, if theres not a marriage_ schedule for that day it is set to null and behavior is selected with hardcoded if checks

#

Like is today saturday and not raining, then teleport to the area outsude for outdoor activity

lucid mulch
#

there's a lot of stuff spouses do, there is the hardcoded saturday logic for using the spouse patio, there is the hardcoded thresholds for the various marriage dialogues, the messaging may be configurable, but the thresholds and rng odds aren't, the myriad of actions they can do on the farm like fixing fences, watering the pet bowl, etc

patent atlas
#

2 days since having a baby? Teleport to the kitchen and load the 2_days_since_child_dialogue

patent atlas
rancid temple
#

I wonder if fishing is worse

patent atlas
#

Ive heard fish lists are also harcoded in a lot of places

lucid mulch
#

fishing is in one nice spot

patent atlas
#

At least theres not too much coupling id assume

lucid mulch
#

marriage spouse logic is spread over a lot of places

patent atlas
#

YES

#

The farmhouse class

#

Controls the spouse

rancid temple
#

I feel like every time I've seen all the weird fishing logic, I find some new bullshit

patent atlas
#

In specific situations

#

The fuxjing farmhouse

#

The house

#

Is responsible for spouse ai

#

Why

rancid temple
#

Lmao, the resetSharedState putting your spouse back in the kitchen is so out of pocket

#

Literally anywhere else, jesus

calm nebula
#

Back to the kitchen with you

#

I want a sandwich

#

It's probably a fix for the age old issue of "my spouse is at 0,0?"

rancid temple
#

Yeah, it's a fairly fixed location, so I guess I understand, but like so too would the spouse room be fairly fixed

patent atlas
tiny zealot
#

yeah, that's almost guaranteed to be a hotfix for a weird problem
"oh, that's wacky. well what if i fix it here? that seems to work, moving on"

rancid temple
#

Same for not being able to warp to specific tiles when warping to the farmhouse in general I'm sure

lucid mulch
#

ok roommate dialogue also is logged only when a roommate, all 3 flows I care about work, sweet

rancid temple
#

If you arrive there by any means other than the cellar, you're set to the front door

calm nebula
#

But yeah

#

Basically, stare into stardew npc code

#

It will stare back at you

patent atlas
#

Overall the reduction of coupling and hardcoding in newer features is very notable

lucid mulch
calm nebula
#

Time making mod: 10 minutes
Time retrofitting the name to have the right acronym....

lucid mulch
#

the one thing AI can kinda do

thin hamlet
rancid temple
calm nebula
#

Awww

#

This is cute

#

Lulu's multiple pets dreams realized

velvet narwhal
rancid temple
#

Don't you worry about imploding AI, it's doing it for us

velvet narwhal
#

I have realized in the twilight of clarity and insomnia, that I am roughly 95% done with my npc expansion mod, and that's an extremely weird feeling

rancid temple
#

Just another week of testing and then you'll be ready for release and an immediate patch for something forgotten

#

My personal favorite has been forgetting the update key

velvet narwhal
#

I do that so often but thankfully stardrop yells at me for not updating my manifest

#

My version of the mod being like, 5 manifests behind, stardrop: "UPDATE YOUR OWJ MANIFEST YOU IMBECILE"

mortal stag
patent lanceBOT
#

@solemn roost: 4th anniversary of the #pokemon channel (17h ago)

solemn roost
#

yippie, real anniversary today!

#

remind me the 5th anniversary of the #pokemon channel in 365 days

patent lanceBOT
#

k (#6235554) (365d | <t:1757597846>)

calm nebula
#

What is this Pokémon channel

solemn roost
#

this will keep going for as long as i live

solemn roost
rancid temple
#

The wild west of moderation

#

These days if you go off topic for too long you just get yelled at (kindly redirected)

mortal stag
#

Golduck rulez 8|

hallow prism
#

it was already true at any point, off topic redirection isn't new

calm nebula
#

Yeah, y'all used to be young and fun

#

Insert Miley Cyrus song

brittle ledge
#

I came in like a wrecking ball?

calm nebula
worthy rose
#

any way to forced a button press thru code?

#

like i wanna press X automatically

#

err X on ps5

#

so a i think on xbox

#

the button to place bomb, eat foood, etc

rough valve
#

I am trying to make a item that warps you to a custom location. How can I make it not be consumed on warp (like a warp spectre).

rancid temple
#

Lol, the horse flute just adds an extra flute to the stack so that when it returns true it just removes the extra one

royal nimbus
#

something weird. so i modded the ancient fruit to be pinkish and for some reason the fruit is still blue before harvested. i checked my png and its as i edited and i made sure i added it to the content json. is there something im missing?

rancid temple
#

Did you plant new plants after changing it?

#

Actually do textures not get updated? Not sure how that caching would work

royal nimbus
#

no o__O i didnt think thatd be relevant

rancid temple
#

I know data of things already in the world don't get updated

royal nimbus
#

that is so freakin weird ;o

rancid temple
#

It's all cached to avoid reloading a shit ton of data constantly

royal nimbus
#

i see. alright. well ty

rancid temple
#

Try planting a new plant, see if that works

royal nimbus
#

will do

#

if only there was a speed grow on the cheats

rancid temple
#

There is

royal nimbus
#

ohh??

rancid temple
#

Check under Controls

royal nimbus
#

ooh i found it

#

tysm!

lone ice
#

hey all! anybody know where in Data bushes are? like if I wanted them to drop something other than berries?

rancid temple
#

Also there's debug growcrops <numberOfDays>

royal nimbus
#

i made them insta grow and they're still blue. maybe i need to reload the game?

lone ice
#

reloading the game and sleeping are always good ideas!

royal nimbus
#

will do

lone ice
#

If that doesn't work double check the images it's referencing for crop stages on the tilesheet

rancid temple
#

Looks to me like the bushes are hardcoded

shadow vortex
#

There are multiple mods which change berry bush behavior, maybe look at those to see what they do.

lone ice
#

ah okay, thanks!

lone ice
lone ice
#

also are you just swapping the tilesheet for crops or are you loading a new tilesheet and specifically adjusting the texture for ancient fruit?

lone ice
#

ok can you share the code you used?

royal nimbus
#

im reloading the game to see if it worked first

brittle pasture
royal nimbus
#

yeah its still not working

rancid temple
#

You can also patch export the tilesheet you're trying to edit to see if it's changed, sometimes I prefer that to digging through a summary

royal nimbus
#

actually i just found my issue lol

#

its suppose to be tilesheets not maps -o-

#

well derp

lone ice
#

haha

#

that'll get you

royal nimbus
#

happens

#

glad it wasnt something else tbh

lone ice
#

I can't tell you how many times i've screwed up because I forgot something was plural

royal nimbus
#

fr

#

i killed all my crops for nothing xD

lone ice
#

oh no 🤣

royal nimbus
#

no biggie, i got plenty left so no real loss

rancid temple
#

Always test on a new throwaway save lol

#

Well, unless you're testing something like adding a mod to a game in progress

royal nimbus
#

i do have throw aways for more complex testing

rancid temple
#

I make and delete so many saves every day lol

rough valve
#

How can I add a item to the players inventory when they use a warp totem (in cp)

rancid temple
#

Pretty sure you would need C# for this whole endeavour, unless you're using a framework to handle the totem warping

brittle pasture
#

SpaceCore has item used trigger

rancid temple
#

You could use a trigger action to add the item I guess

#

Ah, then yeah, should be able to use SC to add the item when you use it

#

Not sure if it'll happen fast enough to mirror how the horse flute works, might just end up in a random spot in your inventory

rough valve
#

Not sure what SC is. Is it a framework?

rancid temple
#

SpaceCore

rough valve
#

Oh makes sense now

unique sigil
#

hi, i have a mapmaking question:

i was messing around with adding vanilla tilesheets to a custom map, and noticed that the recolor i'm using (VPR) isn't applying properly to the vanilla tiles (i.e. the bridge from winter_town.png in VPR doesn't have snow).

how do i fix this?

hallow prism
#

fix in what sense?

unique sigil
#

to make the recolor apply to the vanilla tiles

hallow prism
#

well, the creator of the mod will have to create the assets needed

unique sigil
#

the bridge is supposed to look like this (from the winter_town.png in VPR's assets folder)

plucky reef
#

Question, can I make a sword swing use one sprite for the "object" (the icon on the inventory bar) and then a custom animation for the attack? Would that be harmony?

unique sigil
#

the assets are already there, they're just not applying for some reason

hallow prism
#

oh ok

#

then remove the vanilla tilesheet from your mod folder, if they are in

#

it's likely that messing things stuff

#

because if you use vanilla asset, the recolor will automatically apply to it

unique sigil
#

hmmm it's still not working

there's no copy of the vanilla tilesheet in the mod folder

hallow prism
#

ok

#

!patchsummary full

ocean sailBOT
#

Can you do these steps to provide more info?

  1. Load your save and view the content that should be patched.
  2. Type patch summary directly into the SMAPI window and press enter.
  3. Upload your SMAPI log to https://smapi.io/log (see instructions on that page).
  4. Post the log link here.
unique sigil
ocean sailBOT
#

Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Home Single Language, with 70 C# mods and 217 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

unique sigil
rancid temple
#

Are you editing the map in the Maps folder or somewhere else?

unique sigil
#

in Content (unpacked) > Maps folder i copied to a different drive. does that count as "somewhere else"?

sorry english isn't my first language and i am VERY confused by the technical language in wiki's modding tutorial....

rancid temple
#

Just to make sure, you copied it back to the mods folder after you finished editing it?

unique sigil
#

there are no copies of vanilla tilesheets in the release folder

rancid temple
#

Mk, that seems fine

#

That's also what I do, so that shouldn't be a problem

unique sigil
#

like i mentioned, it's strange that the recolor doesnt apply to tiles from spring_town when it applies to tiles from spring_Waterfalls in the finished map

#

the difference is that the base map i edited already has spring_Waterfalls added (as zz_spring_Waterfalls) and i added spring_town myself (as zz_spring_town) in tiled's tilesheet pane

#

and i checked the tilesheet properties and the map's .tmx file but there's no difference between both?

teal bridge
#

For the folks who know their GSQs, are all of the following possible in vanilla?

  • Player has some skill level
  • Player has some specific profession
  • Player has equipped tackle
    ?
#

I don't need specific instructions, just doing a quick check to see if I should pursue an extensible rule system via GSQ or just hardcode them all.

teal bridge
#

I know that page exists, but it doesn't have an easy answer for all of the criteria (like tackle).

#

Which might mean it's just not supported by vanilla - which is fine if so.

tiny zealot
#

that page is, barring accidents, the list of vanilla queries

hallow prism
#

and you can totally do a search on the page to see that the first two are supported

teal bridge
#

Ok, I guess I could use vanilla GSQs for the first two and define a custom for the 3rd. Maybe not a big deal to do.

rancid temple
#

And the name of the recolor

unique sigil
# rancid temple This log is absolutely terrifying. What's your mod called?

sorry if it's long haha, i was repeatedly testing this problem without shutting down SMAPI

i am actually messing with Lnh's Comfortable Farm (replacing forest farm) to troubleshoot this exact same problem in my actual farm map bc i don't want to mess it up any further. and the recolor is Vibrant Pastoral Recolor

unique sigil
#

in case that wasnt clear: i edited someone else's map to try and figure out why this happens in my custom farm map re: recolors not applying.

rancid temple
#

According to this log, Lnh's Comfortable Farm patch is failing due to tilesheet climbing

teal bridge
#

(I don't do anything with maps but I have seen "tilesheet climbing" so many times now that I think you need a bot command for it. Or maybe there already is one.)

unique sigil
#

ah, there was a tilesheet climbing problem that prevented the mod from loading at all, but i've fixed that

#

problem is even after i made sure to fix everything else if any (tilesheet order, tilesheet climbing, etc.) this recolor problem persists

rancid temple
#

There is a command for it lol

unique sigil
#

for that matter: how do yall test if map recolors apply in every season correctly?

rancid temple
#

Just not sure if it's actually pertinent here, since this log is massive

#

I would just use CJB to change the season and run around

unique sigil
#

ah see i do that too

velvet narwhal
#

world_setseason is what I do

unique sigil
#

when i start a fresh save, the recolors actually applied correctly. it's when i started adjusting in game seasons with CJB the recolors stopped applying correctly, and persists even after i return to main menu and reload

rancid temple
#

Did you sleep?

unique sigil
#

i have!! and when i wake up the next day the recolors dont apply lol

#

okay actually lemme do that one more time. with a fresh save

rancid temple
#

What about reloading the save after sleeping?

unique sigil
#

ill try that and report in a bit

rancid temple
#

Cheats are a great way to test but do require a lot of extra steps because the game doesn't like being told to do stuff out of order

lucid iron
#

Your recolor is seasonal tilesheets?

#

Rather than CP season tokens

rancid temple
#

It's using season tokens to patch seasonal sheets

tiny zealot
#

depending on how the recolor is set up via content patcher you may need to patch update after changing season during the day

teal bridge
#

Has anyone tried to implement mod data that is both localized and supports content patching? On the one hand, translations are local to the mod, so if I have the mod data (i.e. some asset) reference a translation key, then it will always look up that key in my mod and won't work for other mods adding their own localized strings. On the other hand, if I make it like a Func<string>, then it pretty much has to be set up in C# and won't work for either CP or even my own asset loader.

unique sigil
brisk kraken
#

How is exactly the text for, in an NPC dialogue, for him to give you money? I was checking the wiki, found is $AddMoney <amount> but it doesnt really works. It shows the text, but doesnt add the money

lucid iron
hallow prism
#

because we can't really solve that without seeing if the issue is with your implementation first

rancid temple
#

Should be $action AddMoney <amount>

brisk kraken
#

The rest of the dialogue works perfectly, is the action thing that I am doing wrong

unique sigil
#

okay this is confusing me even further. i started a new save and now the dirt tile colors aren't what they should be (right image taken from VPR's nexus page). they were literally normal before i closed and restarted the game

#

genuinely what's going on here SDVpufferchickcry

drowsy pewter
#

(your log gives information)

teal bridge
# lucid iron Can you do it as a custom asset? So that by the time your mod interacts with it ...

So the issue is, let's say the asset contains something like:

class Rule
{
  public string Name { get; set; } // Not localized
  public string Title { get; set; } // Localized
}

If I do it this way, then mods can add translated strings (looks like CP has an {{i18n: }} token) but I can't use my own translations. The Rule in the data.json (let's call it) will already have the final string. On the other hand, to do it a different way:

class Rule
{
  public string Name { get; set; } // Not localized
  public string TitleKey { get; set; } // Reference to i18n key
}

Then I can resolve the TitleKey to my own i18n but it won't work correctly for anyone wanting to modify it.

#

I'm probably way overthinking this by imagining that anyone would want to mod or edit this anyway, but...

hallow prism
brisk kraken
#

I will try

hallow prism
#

yeah pls! this may help figuring stuff out

lucid iron
#

I feel like what you really want is ability to patch i18n of other mods, but pathos shot that down before LilyDerp

brisk kraken
#

Now I know about it, thx

hallow prism
#

ok, it is worth asking pathos if it's normal (i can activate the pathos-signal) and if yes, i can try editing the wiki

teal bridge
#

Maybe I'll just hardcode some replacement token into the asset parser, and state that any content mods need to provide the exact string.

#

Ugh, all possible solutions seem horribly messy in unique ways.

lucid iron
#

Yeah it's unfortunate

rancid temple
#

Didn't 1.6.9 fix something to do with dialogue actions?

hallow prism
#

hmm

#

Fixed $action dialogue command not working after a #$b# break.

#

it doesn't mention a #$e# break!!! a totally different case

#

entirely not the same (maybe it is)

#

ok so let's not activate pathos-signal yet

#

Lord Calamity, if you feel adventurous, you can try the 1.6.9 beta and confirm if it's fixed too

calm nebula
hallow prism
#

if you don't feel adventurous, well, i don't either, so i will not throw stone at you (too lazy to gather them)

teal bridge
rancid temple
#

I'm trying to test it right now, since I'm already on the beta, just not sure my test is going to work the way I want lmao

brisk kraken
calm nebula
teal bridge
#

Yes, that's what I mean - I'm not aware of a vanilla way to use a TokenizableString to reference "i18n key in a mod".

#

CP has the feature, but in order to use localization with vanilla token strings it would have to be in the vanilla l10n data.

calm nebula
#

You can make your own asset maybe

teal bridge
#

I am making my own asset, yes.

rancid temple
calm nebula
hallow prism
velvet narwhal
#

you did #$action ?

calm nebula
#

Maybe I fully misunderstood sorry

velvet narwhal
#

am still sad the tile Dialogue <token> still won't accept $action SDVpufferflat

teal bridge
#

I think you probably understood. On the fence about whether implementing a custom translation system is worth it.

unique sigil
#

crap i think i found the problem. the wrong tile colors seemed vaguely familiar to me so i'm resetting the game now. fingers crossed it will FINALLY work

rancid temple
unique sigil
#

if i'm not wrong it seems to be a recolor conflict

#

seems like i missed a spot in deactivating some mods before testing SDVpufferpain

teal bridge
#

Actually, maybe what I need to do is have two different assets; the mod has a JSON file but what's in that JSON is ever so subtly different from the asset format.

rancid temple
#

Okay, no need to alert Pathos, it is indeed fixed in 1.6.9

teal bridge
#

So when the mod loads its own JSON, it treats those descriptions as keys; but they then get loaded into an asset which has the actual string, which CP mods can then patch normally.

rancid temple
#

Assuming you pay attention and do it correctly lmao

teal bridge
#

I've been trying to design this with one data model but maybe that's been the problem all along...

lucid iron
#

Maybe u can use the game's String assets

#

It requires syntax like this from the other mod, rather than i18n token

"[LocalizedText Strings\\Objects:Weeds_Name]",
teal bridge
#

But can they reference their own strings that way, or only vanilla strings?

eternal mortar
#

what kind of relations can i put down in relations for NPCS?

tiny zealot
lucid iron
#

Strings\Objects is referring to the vanilla asset yea

rancid temple
#

You can patch your own strings into though

lucid iron
#

This is only commonly used for maps though

velvet narwhal
lucid iron
#

Might not occur to ppl to do this LilyDerp

rancid temple
#

I dunno if that's a good idea though, since it would require any translators to do the same

lucid iron
#

Yeah pain

rancid temple
#

For their own language version of that asset

lucid iron
#

I18n is in a funky place of being ubiquitous but not quite game pipeline

teal bridge
#

Mm... I think I'll go with the separate data/asset definitions. It does mean there might be some hiccups if someone just tries to copy/paste the JSON from the base mod, but at least it's a defined spec.

unique sigil
#

@rancid temple just making sure: if i use CJB to test if seasonal recolors apply correctly, i should always sleep after changing the season. that's it right?

teal bridge
#

For internal mod data I could use a convention where the translation key isn't present in the data at all, it just uses the base name e.g. look up $"Rule_{Name}_Description" or somesuch.

rancid temple
teal bridge
#

That way other modders wouldn't potentially see a "DescriptionKey" field and think they could just put their own key in there. I could even add a dummy description field to make it look like that's how it works (which it would, for them).

blissful stag
#

I wanna make a mod but ik literally no one will play it besides me and I know nothing about mods 😔. Sorry if I’m interrupting a conversation btw-

rancid temple
#

Or do a patch update in the console

velvet narwhal
#

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

blissful stag
rancid temple
#

Almost all the mods I've made have been for me but released so anyone else can use them

blissful stag
#

That’s really cool

#

I wanna make an npc

calm nebula
#

You can make an npc with no coding knowledge whatsoever

#

!noc

#

!npc

ocean sailBOT
#
Creating a Custom NPC

Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:

  1. Tiakall has a great tutorial on making a custom NPC for 1.6:
    https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC

  2. Custom NPCs received many improvements with 1.6. For changes made, see the migration guide:
    https://stardewvalleywiki.com/Modding:Migrate_to_Stardew_Valley_1.6#Custom_NPCs

  3. Some information on the NPC wiki page is still relevant:
    https://stardewvalleywiki.com/Modding:NPC_data
    Just make sure you're checking the migration page and tutorial first as this page still has outdated information on it as well.

  4. Aviroen has put together a template that will allow you to easily create a romanceable NPC:
    https://stardewmodding.wiki.gg/wiki/Npc_template

calm nebula
#

It's just a lot of work you don't need any knowledge though

tiny zealot
ocean sailBOT
#
rancid temple
#

I would say NPC's are not technically difficult, they're just a LOT of work

blissful stag
#

I have time lol

#

Thank you guys-

rancid temple
#

A bunch of different systems working together

#

So a lot of systems to learn, but none of them particularly advanced

lucid iron
#

Plus the art and writing parts

blissful stag
#

I’m good at writing

#

And the art part I could get down pretty easily

plucky reef
#

And there are also lots of mod options that require no C#.

blissful stag
#

The character I wanna make is just really hated by the fandom lol

#

And the fandom is actually insane

#

It’s scary 😭

rancid temple
#

Instantly thought of Naruto and that guy from FF14

velvet narwhal
#

if you enjoy writing and all that jazz it's fine, as long as you don't get bothered by nexus comments, you should be relatively okay

blissful stag
#

It’s jjk

plucky reef
#

junpei?

blissful stag
#

No Mahito lol

#

People literally assault people who cosplay him-

lucid iron
#

It's ok there's many jjk npc mods

tiny zealot
#

jjk must be serious business. lots of jjk npcs recently

lucid iron
#

Psure there's an audience

blissful stag
#

The manga is ending

calm nebula
#

What's jjk

shadow vortex
#

What is jjk?

lucid iron
#

I love mahito they animate handy hands so good in the anime

rancid temple
#

Jujutsu Kaisen

blissful stag
rancid temple
#

It's a manga/anime that's been getting pretty popular

lucid iron
#

But yeah mods is fanwork and should be as self indulgent as you desire

#

No shareholders stopping you kyuuchan_run

velvet narwhal
#

i think the only things that will get you chased down is copyrighted music

#

so uh, avoid that

blissful stag
#

Well luckily idk how to do that

#

Soooo

#

I just love his character

#

And he’s just silly

calm nebula
#

But I'm a silly small brain soooo

velvet narwhal
#

"you kids with your animoos and your mangos"

tiny zealot
blissful stag
#

We shall not utter a word

rancid temple
#

I liked it, but I've never really been big into jumping into a fandom like that

blissful stag
#

The Gojo fans..

tiny zealot
#

(we know about the gojo fans, at least a little. his NPC mod has a billion downloads)

blissful stag
#

It’s terrifying

rancid temple
#

Like an actual billion?

velvet narwhal
#

is it good tho?

tiny zealot
#

no, that would be silly. i should have used a fake number

calm nebula
#

What's gojo

lucid iron
#

84k dl

calm nebula
#

Look I have the entire catalog of Taylor swift in my head so

#

It doesn't fit anything else

lucid iron
#

A lot more than average singular npc bolbonfire

calm nebula
#

Oh that's a recent mod

rancid temple
#

You know what, I hate looking for mods on Nexus

tiny zealot
#

haha fuck

velvet narwhal
#

ah good art, good enou-- i hate all of the horse mods

lucid iron
#

Pam horse is cultural heritage

blissful stag
brittle pasture
rancid temple
#

Well, that explains why I couldn't find it. Re: hating Nexus search, I turned off my adult content and it's flagged as such lol

velvet narwhal
#

I will never get more than my chinese translator, i'm too annoying in my updates

rancid temple
#

I actually think I need Nexus to autoflag all horse replacement mods as adult content

blissful stag
#

Fr