#making-mods-general

1 messages ยท Page 19 of 1

teal bridge
#

And indeed, based on the screenshot it feels pretty clunky.

wanton pebble
#

so woe betide me if I want to send Zayne a gift

#

Because that's several "next" menus

teal bridge
#

Yeah, mine would be a proper scrollable menu that looks similar to the relationship screen in the main menu.

wanton pebble
#

well, I can tell you this

#

if you make that mod I'm instantly downloading

#

Because fuck that would be so much easier XD

teal bridge
#

Does that mod have source? Would be nice to see if they implemented any special logic for gifts. I think I know what needs to be done but gifts are definitely one of the more confusing and spaghetti parts of the game logic.

ornate trellis
#

theres also postbox mod idk if that one somehow touches the mailbox code or something

wanton pebble
#

I'm almost certain it does, but I can never remember the way to find said source

#

Because I don't think Digus lists it on the main page

lucid iron
#

I just googled digus stardewvalley

wanton pebble
#

that's mail framework

#

but that said

teal bridge
wanton pebble
#

oof, the shade on the sprite there

#

But I've never used that one probably because of the gigantic mailbox

#

VMV had a really nice looking mailbox that I saw the other day when playing through it

#

But it wasn't usable as a mailbox mailbox

ornate trellis
#

oh i just mentioned it since you asked about possibly conflicting mods or something in regards to the mailbox

lucid iron
#

Is the menu better on postbox

ornate trellis
#

postbox is fine and tbh i made my own texture so ye lol

hallow prism
ornate trellis
#

(also molamole did a retex too teehee)

wanton pebble
#

Even better!

#

It was small, unobtrusive, and fit naturally in the area, so I liked it

#

Oh, Lumi, while you're here, I should say that I attended the "Market" on the Saturday and it was... weird

#

there were two people at the shop areas, but I could access all but one of them even without a vendor

hallow prism
#

(i know TheLimeyDragon allowed people making expansion to use the mailbox for consistency, if a post mod wanted to use it, they may be fine with that too)

#

which one was the one you couldn't?

teal bridge
#

What does the actual menu look like for Postbox? Strange that they post a screenshot of the box but not what the box actually does...

wanton pebble
#

Middleish area, down and right of the mineral person IIRC

#

I can reboot the game and port there to give an image

hallow prism
#

no, it's not urgent ๐Ÿ™‚

wanton pebble
#

Gotcha. Unfortunately I only played to the Sunday after it because Daia rolled a camping date, and by my own date writing laws if I run into one of the beach or camping dates I haven't written by pure chance, it's date writing time, so I'm about 3/4 through writing Daia's camping date right now

#

so short version is I haven't played enough to memorize names yet

hallow prism
#

most shops once open can be accessed even if the vendor isn't around. In real markets, it's pretty common when someone isn't at their stand to have the neighbor shopkeeper to take care of their sale for them, so, while i can't emulate exactly that in VMV that's the spirit.
The main thing i need to do is the opening shop hours message

#

(they all open at 9am but it's not really obvious now)

calm nebula
#

Sometimes I wonder what it would be like in lyoko's head

#

Hi!

hallow prism
#

(but i still need to basically find the correct "closed" format thing to use)

calm nebula
#

back to cleaning

hallow prism
#

ah also

wanton pebble
#

Hi atra! Enjoy cleaning and the holiday weekend!

hallow prism
#

it's possible it's moira's shop, that will open at her return

nova gale
#

hey all, does anyone have an example of location based dialog in a custom location?

wanton pebble
#

Moira returned same-day-

#

OH

#

Does Moira have Fashion Festival compat, Lumina?

hallow prism
#

she should now, let me see if it' on the live version

ornate trellis
#

its just the names you can click through tbh

lucid iron
#

Isn't this even more clicking bolbonfire

wanton pebble
#

Because I was getting red in my log prior to unlocking her on the day after the festival

#

And it was about a "Moira"

teal bridge
#

I think I might still do this; looking at Postbox's code, I'm not a big fan of it being a Robin building, or that it depends on SpaceCore.

hallow prism
#

of course i didn't note this in the changelog

teal bridge
#

And yeah looks like a lot of clicking through names.

ornate trellis
#

it would be cool if it was kinda like teh FS menu where you click through or could click anotehr button that had the entire list you could scroll through

hallow prism
#

and it's indeed possible it's not yet fixed in live version, i believe i indeed used moira instead of the full internal name

wanton pebble
#

gotcha. Makes sense, figured I'd check to make sure it wasn't something already fixed

#

Also

teal bridge
#

The UI should actually be pretty easy to make with my own framework. Tricky part will be compatibility, and making sure all the can-receive/after-receive logic is correct.

#

I'll probably take the easy route to start with and make it just not interact with quests.

wanton pebble
#

... actually I gotta send this elsewhere, one mo

lucid iron
#

Using thelimeydragon mailbox with a machine InteractMethod would get you around dealing with existing mods touching the system mailbox I think

ornate trellis
#

tbh what i likes about postbox was that it added a new building lol (cant control myself making retextures wahh)

teal bridge
#

You'll have to explain what you mean re: InteractMethod, that went right over my head.

lucid iron
#

Oh it's this thing in Data/Machines

teal bridge
#

I know how machines work, I just don't know what you're referring to.

lucid iron
#

I noticed it the other day but I think you give it a delegate kinda like output method

#

And it calls it on interaction

teal bridge
#

(also I don't think the mailbox is a machine?)

lucid iron
#

Well u r make this mod right Bolb

wanton pebble
#

Nope, mailbox is a building, not a machine

teal bridge
#

What is "using the limeydragon mailbox with a machine InteractMethod"? None of that makes sense to me.

lucid iron
#

So the suggestion is make new big craftable and machine rule

thin hamlet
#

And it was all, Cheeto

lucid iron
#

Leave vanilla mailbox alone

wanton pebble
#

.... speaking of buildings. Since I haven't seen a response on the modpage about it but Sin was around recently, I'll take the bullet for the following

lucid iron
#

Apologies I will try to get my thoughts in order blobcatgooglyblep

teal bridge
#

Eh, I don't do art, and this is a smallish mod. Maybe a custom BC for a V2 or something. For now, I think I'll use the regular mailbox and have a compat option where it doesn't trigger unless you're holding a modifier key.

wanton pebble
#

@lucid mulch Do you know why using a custom farm map messes with Several Spouse Spots's building of the Spouse Patios? I tested with and without Grandpa's Farm - with it my spouse patios are presently invisible, but without it the spouse patios show up. I might temporarily have to swap back to Custom Spouse Patio Redux until it's visible in the meantime, but I figured I'd check with you on if there's a simple way to fix that

teal bridge
#

The thing is, other villagers send you gifts, and they don't have fancy postboxes. Those other mods are immersion-breaking to me, plus things like having to get crafting materials or spend a few days with Robin affect balance.

wanton pebble
#

Anyway, I've procrastinated long enough, back to date writing!

lucid iron
#
  1. Make new big craftable (perhaps with the mailbox sprite by thelimeydragon)
  2. Make machine entry for said big craftable
  3. Use InteractMethod on machine entry to open your menu, rest is send/receive logic that you are doing regardless of how player should access the menu
#

This is really just for dodging other mods that are established to go through the regular mailbox monS

teal bridge
#

Machine seems like the wrong tool for the job, even if I had a sprite. Machines are for inputs and outputs; having an entire machine just to do a menu interaction is, well, silly.

#

If I needed to use a custom BC then I'd just watch for a button press on the BC.

lucid iron
#

Yeah sure same idea DokkanStare

brittle pasture
#

not all bigcraftables are machines, and InteractMethod is not just meant for machine interactions

teal bridge
#

As I said though, I think I can provide a reasonable compat option by simply supporting a modifier key.

calm nebula
#

(Seems reasonable!)

teal bridge
#

How could it not be for machines?

brittle pasture
#

it's a weird place to be, but it doesn't really depend on any machine logic (other than that it doesn't have ready output, which for a non-machine big craftable is always true)

lucid iron
#

I don't think you need a real input/output rule to use it

teal bridge
#

I mean, in order to use it I would have to define a machine, not just a BC.

#

I just don't really want to have a "dummy machine" with no inputs or outputs. That's the kind of thing that leads to more bugs and headaches down the road.

merry rampart
#

I want to make a machine randomly output a random trash item. So far I got RandomItemID set to the vanilla trash items, but I'd rather have the machine output any item that is categorized as trash, with better compatibility for trash added by other mods. I'm not sure how to do this....

brittle pasture
#

every big craftable is a dummy machine. you can make the Stardew Hero Trophy have machine rules if you want
as mentioned earlier, InteractMethod is in a weird place but looking at the code it's fairly divorced from actual machine logic, so you can use that if you don't want to set up button detection by yourself. But you're free to do whatever you want SDVpufferthumbsup

brittle pasture
teal bridge
#

Every BC is a machine? That's weird, they're in different JSONs, different data sections, etc.

brittle pasture
#

I think we're starting to argue over semantics here, so let's not continue

pine ermine
#

Oh boy

teal bridge
#

Sure, no problem. I didn't mean it as an argument, just honestly was not seeing the connection between the two. I guess, looking at the code, technically any object at all can be associated with machine data since the machine data just points to an object ID.

pine ermine
#

I gotta patch a compiler generaterd enumerator

teal bridge
#

(I wouldn't)

pine ermine
#

(y not?)

lucid iron
#

What lead you to this need bolbonfire

teal bridge
#

I suppose in principle it is no different from patching any other IL in a binary that's already compiled, but... enumerator blocks are not supposed to be tied to any particular implementation.

pine ermine
#

I'm gonna use a postfix and patche the result's type, so it won't be dependent on compilation

teal bridge
#

Oh, that's not so bad, I thought you were trying to write a transpiler method for it.

pine ermine
#

I am

teal bridge
#

Welp, have fun with that!

pine ermine
#

Use a postfix on the method to get the hidden enumerator type, then use a transpiler on the __result.GetType()'s MoveNext() method

worn coral
#

@merry rampart re your question I replied to in modded-farmers - I thought I could share my machines.json template in case you might find it useful - feel free to ignore if not! (I put it together a few months back when I was learning the structure, saves me from constantly going between the code and searching the wiki - I've popped it on my github with some updated comments, it should be mostly error free and cover pretty much all fields SDVpufferheart ) https://github.com/Teaiscoldagain/Teas-StardewValley-Mods/blob/main/machines.template.json

worn coral
sharp scroll
#

Hello all! In the new world of 1.6, I know that there is inherent Anti-Social NPC functionality baked into SDV now. Is there a short guide to making one somewhere? I made a couple for myself in 1.5, and I'd like to convert them. I didn't know if there was a simple guide for that yet?
Edit: Or one I can look at and copy?

plucky reef
#

Ok I found the solution to this. The Netcode part of this is obsolete, so I removed it. But in the NetCollections.cs of base game, there's a function called RemoveWhere that would find the destroyMe bool and remove the projectiles that were destroyMe = true.

brittle pasture
sharp scroll
teal bridge
#

Is UniqueMultiplayerID consistent across sessions? If I save that ID in the game save data and look it up on game load, is it guaranteed to find the same Farmer or is there a better way to keep track?

merry rampart
#

ok so I got my machine to work. It makes a random trash item.

Unfortunately this also includes Rotten Plant and Joja Cola. Is there a way to exclude those?

brittle pasture
#

put another condition to exclude them

merry rampart
#

how?

brittle pasture
#

(sorry was on subway)
Add the !ITEM_ID game state query after your first one in PerItemCondition separated by a comma

#

! to invert

worn coral
#

I think you can also use the context tag rather than the category - trash_item excludes the joja cola and rotten plant and only has Trash, Driftwood, Broken Glasses, Broken CD, Soggy Newspaper - @brittle pasture out of curiosity, as this is also something I'm thinking for my mod, is using category query or context tag query better for compatibility?

merry rampart
#

ah, thanks

#

now my machine isnt letting me collect anything at all...

merry rampart
worn coral
#

What was your query looking like before? You were using ITEM_CATEGORY? (if it helps pop your json into the https://smapi.io/json and you can share the link here, might be easier for people to help)

merry rampart
#

yeah, item category

brittle pasture
merry rampart
#

ITEM_CATEGORY Target -20

worn coral
#

so you can swap that for ITEM_CONTEXT_TAG Target trash_item

brittle pasture
#

(my hunch is it doesnt looking at the wiki page)

#

(but I can't check for sure until maybe several hours from now)

merry rampart
#

alright I shall try that

worn coral
#

No worries at all - I will have a look myself as now you said it I think I made a note which context tags auto populate

merry rampart
#

there! that works perfectly!

worn coral
#

I love that feeling when the machine finally spits out what you want

merry rampart
#

right?

#

now comes the hard part... the pixel art.

and yes I consider pixel art worse than coding because I can't art worth crap

#

but the technical part seems to work perfectly

worn coral
#

Once you get the structure right you can just copy/paste with abandon - but with art... yeah, I've been derailed doing art instead (and I'm learning too, takes forever - but still fun!)

gaunt orbit
#

For me at least it's that pixel art requires more patience than code

dense jolt
#

The code tells you what you're doing wrong pixel art doesn't

gaunt orbit
#

With code you can do one discrete chunk at a time and see progress, but with pixel art you kind of just have one thing that gets progressively more finished

teal bridge
#

Well, I verified through some trial and error that UMID does persist across saves, even though it's got XmlIgnore and I couldn't find where in the code it's persisted.

plucky reef
#

and it's hard to tell when you're finished with the art

merry rampart
#

random question, is it possible to make craftables 1 tile high instead of two?

teal bridge
#

Big craftables have a fixed rectangle size.

#

If you want a 1x1, use Object instead.

gaunt orbit
worn coral
#

Technically you can just leave the upper part of the sprite.. empty? So it looks like it's 16x16

teal bridge
#

Or I suppose you could make a BC that just has the upper half transparent.

brittle pasture
#

it's already one tile high for collision purposes, you can simply not draw in the upper part

gaunt orbit
merry rampart
#

yeah, I'll just leave the top tile blank. That seem easier

worn coral
#

In the inventory though it will still try to take up the space of two tiles so will look a bit small most likely (I'm assuming as I have never tested)

gaunt orbit
#

The big disadvantage of computers is that they can't be smarter than the person programming them

#

(yet)

calm nebula
calm nebula
calm nebula
#

my dumb ass put the connector on the WRONG SIDE OF THE BOARD on thursday and didn't catch it until I looked at the 3d render

dense jolt
#

I can't for the life of me create an extra tab in the collections page :(

#

Hey didn't crash immediately this time

#

Now my computer froze lol

#

It works ish...??

ocean sailBOT
#

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

dense jolt
#

Well, I know I have to ensure only the front view of the hat gets drawn. And I need to add a page system

pine glade
#

So I have a few questions.

I managed to translate the Lui mod from Naver Cafe to English.

  1. Would it be ethical to redistribute it? I don't have permission, but on the original page for the mod, the author did not put a note on forbidding this. I'd contact them, but I don't live in Korea so I can't.
  2. If one is not a don't do it, where could I place it? The Korean version is not hosted on Nexus and their rules forbid posting translations unless they host the original.
  3. It seems to work just fine on Android, but I am no expert. Anyone willing to check the code?
hallow prism
pine glade
#

That's fair. Thank you for the answer.

hallow prism
#

in comparison in here, if nothing is granted is a small no

#

they are already reluctant in having their mod out of naver because of some issues in the past

#

i don't remember the details

pine glade
#

I was wanting to do another for personal use. If the TMX is in Korean, will it still work if the rest is still in English, and file names haven't been changed?

hallow prism
#

i can't tell

pine glade
#

Best bet is to test and pray?

hallow prism
#

you'll have to test but i shouldn't be too hard to test

pine glade
#

Heh

hallow prism
#

and i think it should work

#

if it's a .tmx editing paths is also pretty easy

pine glade
#

With no pc, my editing options are limited. I was looking into it, and I couldn't find a good (or at least simple enough for me to understand) option. I'd prefer doing it as CP, just to make sure I don't overwrite anything.

blissful panther
#

You can sign up for Naver without living there, but... it's a lot of effort for what's almost guaranteed to be a no.

pine glade
#

I tried a couple of years back and gave up.

blissful panther
#

It's a lot!

lucid iron
#

works just fine on android
Is this a 1.5.6 only mod?

pine glade
#

It's an older mod. I don't think it was written specifically for 1.5.6. I'm just trying to collect as many mythical/supernatural style NPCs as i can.

#
lucid iron
#

Although it's technically fine to distribute just the translations, I don't know how much good that would do if the original mod isn't on nexus blobcatgooglyblep

pine glade
#

With what Lumina said specifically about Naver, I probably won't.

lucid iron
#

As for the other mod can you explain what is meant by "the tmx is in korean"

pine glade
#

I tried opening it up, and everything is in Korean. Like I said, I'm an idiot at this stuff.

These mini translations were twofold; to see if I could, and to learn about coding to maybe make something. I made mods for Baldur's Gate 1&2, but that was almost two decades ago. At fifty, I don't learn as quick as I once did.

lucid iron
#

But you have English (or whatever lang you prefer) version of Tiled right think

#

Now whether you would be able to translate the various text in a map without editing map itself depends on whether they used the string assets rather than just having text right in the map

pine glade
#

I don't know how to correctly open it to examine that. I just used a text editor to open it.

lucid iron
pine glade
#

I don't have a computer at the moment, so I couldn't use that tool.

calm nebula
#

I have no clue why discord thought I really needed to see this message

#

but it is the one I see

uncut viper
lucid iron
#

ah ig it is like level of legalness as fan translations think

uncut viper
#

copyright holders retain the right to create or authorize translations since they are derivative works

#

so I guess if you define "technically" to mean "in this case someone probably won't care or go through the legal effort" then it's technically true

lucid iron
#

yea right, i was thinking of this in terms of making a retexture, though that could be argued as derivative work too

drowsy pewter
#

editing a map file with a text editor is like trying to change how a png looks by converting the file to text and trying to read it

pine glade
#

Legal aside, I also believe in Karma. Since Naver doesn't approve, I won't.

pine glade
drowsy pewter
#

you probably dont need to edit it anyways for a translation :)

pine glade
#

Just looked at the mod page again. It said it overwrites the beach. I've got other mods that could hose so I'll just skip it. Maybe when I get my laptop fixed I'll look into tools to convert it to CP.

One of the things I did with BG mods was take old ones that overwrote the game and changed them to ones that appended it instead.

fiery mountain
#

I'm trying to edit the game's save file, where in the save file does it store information regarding what artifacts have been found?

hallow prism
#

it's suggested to not edit game files but rather use mods like CJB cheats or debug commands as it's less susceptible to break

#

i have then no idea how to do that because i never tried save editing except once to save a file during 1.6 alpha

desert vapor
lucid iron
#

is the goal to remove entries from there?

desert vapor
#

^^ yeah what's the goal with editing the save file?

#
if (Game1.player.archaeologyFound.ContainsKey(id))
{
    farmerHas = true;
}

this is the relevant snippet of code that helped me find that section ^^

fiery mountain
#

just to add the items that another character has found in a multiplayer game to my character's "collections" page, since picking up the item doesn't seem to fix it and I can't donate the item if someone else has found it

lucid iron
#

are you the host?

fiery mountain
#

yeah

lucid iron
#

i feel it should work, as long as you are finding new copies of the item

desert vapor
#

When you say "picking up the item," do you mean you're picking it up in the museum? Because that will not work

lucid iron
#

try debug MuseumLoot?

desert vapor
#

(that will give them everything i think)

#

every piece of museum loot that they have not found

hallow prism
#

and to update collection it would need to be newmuseumloot

#

(but yeah i didn't suggest it because it would then be too much)

lucid iron
#

yea i was assume they already found everything

hallow prism
#

isn't this issue fixed in 1.6.9?

#

i remember something about that

desert vapor
lucid iron
#

u can do player_add name "name of item" for individual things

hallow prism
#

oh yeah i absolutely didn't look if support had discussion about this

desert vapor
fiery mountain
#

when is 1.6.9 releasing? and will it retroactively fix this issue?

desert vapor
#
  1. I do not know, and even if I did I couldn't tell you
  2. Yes
fiery mountain
#

I just wanted to update it to see if I can, and to make it easier to track my perfection progress

desert vapor
#

If you'd like, you can hop onto the 1.6.9 beta with your multiplayer partners

hallow prism
#

(note that not all mods will be working on it yet)

fiery mountain
#

it's a public beta?

desert vapor
#

Don't go around sharing this everywhere, but yes, it is public

fiery mountain
#

ah alrighty

lucid iron
#

its steam only

fiery mountain
#

I'll look into the beta as well to avoid this issue in the future

paper sundial
#

(Though I wouldn't be surprised if more collections is already in spacecore SDVpuffersquee)

pine glade
#

So does anyone know where I can find a step-by-step guide on how to use advanced textures? Preferably one written like it is explaining it to a five year old?

naive wyvern
#

what kind of textures are you looking to make? c:

pine glade
#

I'm trying to use one I downloaded on the game. Turns the farmhouse into a hobbit home.

#

I find guides how to make them, but not how to use them.

paper sundial
#

Got a link?

naive wyvern
#

this sounds like Bog's farmhouses //i forgot what they're called but I know how it looks uifdsiugf

pine glade
naive wyvern
uncut viper
lucid iron
#

to use AT in the game you need to go buy the tools from robin

calm nebula
#

So generally people....don't

paper sundial
#

(Collections page framework, say no more, framework #66 incoming)

pine glade
#

I've got all dependencies installed, and it shows up on the mod config menu, but no luck.

I do have a mod installed that changes the farmhouse, but I edited the manifest for it to skip it.

"P": "None",
"Target": "Buildings/houses",
"FromFile": "assets/houses.png",

#

I changed add to none for that mod.

lucid iron
#

did you use the paint bucket on the house think

uncut viper
lucid iron
#

also i dont know if AT works in android actually

pine glade
#

It tells me it can't detect a matching texture (or something)

lucid iron
pine glade
#

I'll play with it a bit more, then try that if I can't figure it out. Thank you.

paper sundial
#

Gotta finish docs on current project first though

lucid iron
#

the tabs r basically full anyways

uncut viper
#

if you just want to add a new tab on the side, its not too terrible really. could even probably do it with a postfix. you just wont be able to line it up. and you need to hardcode its position (and so back to atra's comment about compatibility)

#

so it'd look ugly but it'd technically work

lucid iron
#

maybe u just add a button to open new modded collections that ppl can use

blissful panther
#

(Oh hey, how's SAML? SDVpufferlurk)

paper sundial
calm nebula
#

That causes less issues

#

Right side, maybe

lucid iron
#

blobcatgooglyblep yes

uncut viper
#

and if you're adding a new button, you might as well just remake a n ew page from scratch

calm nebula
#

Yup

uncut viper
#

(hence, SPUTab.cs)

paper sundial
calm nebula
#

It's the general case of "yes but why get into a conflict with other people unnecessarily when I can just float a button somewhere else."

uncut viper
#

(i just got "lucky" in that compatibility with the powers tab wasnt too big a deal since it was new to 1.6, so... no one really doin anything with it yet.)

calm nebula
#

(I wanted to optimize the collections menu but figured doing anything else with my time is more productive.)

#

Like lying on the floor looking at the ceiling popcorn

paper sundial
#

(And knitting!)

marble verge
#

Hi again. I know I can stack a basically infinite number of targets, but is there also a way to use a Dynamic Token array? CP doesn't seem to like it when I try that.

#

So instead of "Maps/[Map1], Maps/[Map2]...", something like {{arrMaps}}?

lucid iron
#

nope

marble verge
#

Le sad.

#

I guess there's no way to use linebreaks, either?

lucid iron
#

i think newtonsoft.json is fine with multiline strings

#

despite what your text editor may say

marble verge
#

Hrm. Well, I'll try that. Should improve readability, at least.

#

Gracias.

pine ermine
#

I found a method that Harmony hates.

uncut viper
marble verge
#

CP was many of sad at my attempt to break lines. Oh, well.

lucid iron
#

are you already using {{TargetWithoutPath}}

marble verge
#

In FromFile, yeah.

lucid iron
#

then yea not much to do there

#

besides making more Load calls

marble verge
#

Trying to keep those down a little. It works the way it is, I was just looking for ways to polish it.

lucid mulch
#

but now that I think about it, I tried actually custom farms, and not farm replacements

pine ermine
#

Has anyone run into issues where harmony simply cannot patch a method, even when it patched with no prefix, postfix, transpilier, or finalizer?

lucid mulch
#

I'll finally look into it properly now

#

if the method is too small theres a risk the method got inlined and so .NET is never actually using the method

calm nebula
pine ermine
#

No, it won't even patch it

#

It spits out a InvalidProgramException

calm nebula
#

Instead of immediately loading literally everything every time

uncut viper
#

it would definitely go a long way if all the menu pages did that. the initial lag spike when i first open a menu after launching is very mildly annoying at worst, but also very noticeable, which is a cardinal sin

calm nebula
#

Yeah but then I decided it would be too annoying to maintain

#

And then I knit a sweater

uncut viper
#

abandon all notions of maintanence and just release it into the wilds. surely another modder will adopt it eventually right

calm nebula
#

And learned patience

#

And joy

#
Yarnspirations

Find thousands of free knitting patterns at Yarnspirations, including the Patons Lace and Cable Cardigan. Explore over 10,000 free easy-to-follow designs & start crafting your next project today!

uncut viper
#

its prettier than the reflection code im writing right now thats for sure

lucid iron
pine ermine
#

Yes. This patch that does nothing is causing an error.

#

I've done this before, so I know it's possible.

teal bridge
#

FYI - still a fair bit of work to be done but the UI is coming along nicely.

lucid iron
#

oh did you test for portraiture

teal bridge
#

No? I'm just using NPC.Portrait here.

teal bridge
#

I'm running a seasonal portraits mod already, so I'm assuming portrait edits should be fine.

lucid iron
#

it'll probably not work then (portraiture is HD portraits)

wanton pebble
#

Major props

teal bridge
#

I dunno, does it patch getSourceRectForStandardTileSheet to work correctly with portraits? I assume whoever made it must have done something to get all the vanilla code to use the correct source rect size, unless they patched every single place where a portrait is displayed.

lucid iron
#

i think it mainly patches the dialog box portrait draw, unsure

wanton pebble
teal bridge
#

Oh well, guess I'll cross that bridge when I get there. For now I've got a few more UI tweaks and the actual overnight gift logic to write.

#

(Also, it goes without saying that this does work with controllers!)

lucid iron
#

perhaps you could just offer alt mode where you display the sprite instead

#

oh but then u have to fight sprites in detail monS

#

that one is much less common though

teal bridge
#

It's patching the actual SpriteBatch.Draw, so as long as it doesn't change the actual destination rectangle dimensions, it should be fine.

#

Layout is a non-issue for me, or should be, since that was the point of the UI framework in the first place.

lucid mulch
uncut viper
#
{
  "Action": "EditData",
  "Target": "Spiderbuttons.SpecialPowerUtilities/SimplePatches",
  "Entries": {
    "{{ModId}}_PatchTest": {
      "Id": "{{ModId}}_PatchTest",
      "TargetMethod": "StardewValley.Game1, Stardew Valley: OnLocationChanged",
      "Type": "Prefix",
      "Priority": 0,
      "Condition": null,
      "Action": null,
      "Actions": [
        "spacechase0.SpaceCore_PlaySound crystal local",
        "AddItem (O)24 1 4"
      ]
    }
  }
}

i cant tell if this is a dumb idea or a neat idea but i sure am enjoying implementing it anyway (defining simple harmony pre/postfixes with CP patches)

marble verge
#

Is there a simple way to add a custom color rule to Visual Studio Code? I'd like for Tokens to show up in a different color, but I have no clue on how to add anything to this beast.

teal bridge
#

It might be a bit like handing a shotgun to a toddler, but cool idea nonetheless.

uncut viper
#

ill just put a large disclaimer on the mod page that says "if you break things its not my fault"
besides i plan on splitting it into simple patches and advanced patches similar to CP's token API. simple ones (as shown above) will only let you run trigger action actions and nothin else. dunno how exactly im gonna implement the advanced ones yet but i have some ideas

#

i just mostly wanted to see if i could actually make Special Power Utilities at all any more useful for actually doing stuff with powers ยฏ_(ใƒ„)_/ยฏ

nova gale
#

can you hot swap schedules with a patch reload when doing testing?

#

or are they determined at beginning of day like dialog?

lucid iron
#

is advance ones just gonna let people put inline C# blobcatgooglyblep

uncut viper
#

thats putting far too much trust and expected effort in someone who presumably doesnt know enough about C# to do the harmony themselves
i was thinking theyd let you define the parameters you want to read (maybe alter?) and some operations you can do on the __result. maybe lettin you drill down into arbitrary fields of things (like if one of the params is a fish, letting you check fish.Stack or something) but only if im not too lazy to figure out a good way to loop it since im generating the IL dynamically for this

#

anything more advanced than that starts to veer into "you might as well write the C# yourself at this point..." territory

teal bridge
#

The main thing that leaps out at me is "How will a typical CP author know what a 'method' is, which one to use, and what conditions/actions can apply to it?" Hence the shotgun analogy.

But that doesn't mean you shouldn't do it, just that it will be... interesting seeing how you solve that problem.

uncut viper
#

i did also think that, but i also know its the same system used in Data/PassiveFestivals already, so at least theres precedent for it!

teal bridge
#

Hah, alright, fair enough.

uncut viper
#

i figured id at least link to the wiki stuff about using ILSpy and whatnot and if someone really wanted to use this they might be able to search for a suitable method themselves or maybe ask in here if theres one they might be able to use

teal bridge
#

TIL that iridium quality is actually 4, not 3; did it mean something historically or does CA just have an aversion to the number 3?

lucid iron
#

3 has a funny placeholder icon

uncut viper
#

if pathos doesnt know then i dont know who would

teal bridge
#

You mean this one?

uncut viper
#

(well, besides CA)

teal bridge
#

Not sure if it's an intentional placeholder, or used for something else and just a weird artifact of the quality sprite's funny little math (I have no idea why CA wrote it to use math when there are only 3 sprites).

uncut viper
#

items usually get passed through a FixQuality() function in a lot of places too iirc to really make sure you dont set it to 3

lucid iron
drowsy pewter
pine ermine
#

This is a bug

teal bridge
#

You mean the integer itself is used in a math calculation?

drowsy pewter
#

thats why silver is x 1.25, gold is x 1.5, and iridium is x 2.0

#

3 would be x 1.75

teal bridge
#

Huh. That's certainly an... interesting way to avoid a 3-line switch expression.

#

But it does seem to explain the oddity, so thanks.

uncut viper
velvet narwhal
nova gale
#

fair enough

uncut viper
#

i can just not require that it match one of those delegates (bc im stopping short of actually building a delegate, im just getting the type name and method) and its fine

#

or any delegate for that matter i mean

velvet narwhal
#

(i am terrified of the 'giving a baby a shotgun')

lucid iron
#

i was thinking u should just split it up to type name and method name

uncut viper
#

as long as no one tries to patch XNA or something with this whats the worst that can happenโ€”

lucid iron
#

not like u are use TryCreateDelegate

plucky reef
#

democratize Harmony! Shotguns for everyone!

teal bridge
#

There's no customizable version of a ConfirmationDialog is there? (I mean aside from a totally custom IClickableMenu)

uncut viper
#

thee ", Stardew Valley" at the end is required to reliably find the correct type though

#

it also doesnt need to be ", Stardew Valley" it could be e.g. ", SpecialPowerUtilities" if you wanted to patch SPU with CP

lucid iron
#

yea i am include the whole assembly in this consideration Bolb

calm nebula
#

No one needs List.Add right?

lucid iron
#

its just so that u can do stuff like

uncut viper
lucid iron
#

safety mode only certain types are allowed

#

since u arent required to follow the joined by : format

uncut viper
#

im not sure what you mean or why splitting it into just type name and method name would help

velvet narwhal
#

just, maximum size, red text, "do not touch this specific command if you do not understand c#"

plucky reef
#

I recall there being a way to make a tool do the slingshot aim mechanism, but I can't find it now. Something about a minigame?
I got the projectiles to come out of my harp, but I want to make it feel like a bow.

uncut viper
#

one doesnt really seem easier than the other

lucid iron
#

the ease is 1 less str.Split that's all

uncut viper
#

i could just ask for the type name and method name ofc and do it just fine, i just went with the : format bc its something that someone could already see in use somewhere else too, so its consistent

velvet narwhal
lucid iron
#

and to strongly implicate that this isn't going to become a delegate

#

you are make up the model anyhow Bolb

uncut viper
#

it didnt imply that its going to become a delegate to me, and i dont think anyone who is using CP to do harmony patches instead of C# would really know what that means in the first place

#

ill give it some thought though, im gonna need to change the format a little bit anyway regardless

plucky reef
uncut viper
#

because im going to need some way to define which overload to use

plucky reef
#

Well there's also the actual slingshot part but modifying slingshot feels dangerous.

uncut viper
#

i was initially thinking just like StardewValley.Game1, Stardew Valley: OnLocationChanged(GameLocation, GameLocation)

lucid mulch
pine ermine
#

There's no way this isn't a bug. Simply changing the operand type prevents either Harmony or MonoMod from being able to correctly interpret the generated IL code.

lucid mulch
#

the way im detecting the farm asset is not getting the right value for custom farms so it doesn't invalidate correctly

#

also it initially worked perfectly for me on grandp'as farm when I had it placed, then married

#

it was only moving it that revealed the issue of not invalidating

pine elbow
#

does anyone by chance have any idea how iโ€™d write my content.json if my character has an outfit change based on their location? for example, my NPC goes into the secret woods every friday and dances. i have no idea how to trigger different sprites/portraits based on location. i attenpted to look at seasonal clothing ideas and was reading about the dynamic tickets and such and tbh im so damn confusedโ€ฆ.if someone legit just has an example that would be awesome bc she works otherwiseโค๏ธ

teal bridge
uncut viper
teal bridge
#

Probably the patch itself is assuming the object[] arg type and generating an invalid program for a different arg type.

pine elbow
#

appreciate it sm! @uncut viper

uncut viper
#

basically you can use a GameStateQuery to determine whether a specific appearance should be used. it gets checked automatically every time an NPC changes location

pine ermine
uncut viper
#

(plus weights and precedences)

teal bridge
#

Where is the patch? That's just the call to Harmony.Patch, not the actual patch.

pine ermine
#

There is no patch

#

I'm just call harmony.patch on a method and it's throwing an exception

lucid iron
#

does that mean it dies in CreateProcessor

pine ermine
#

I'm making a separate project for this

lucid iron
#

so i had patched something which returns a List before and it was fine, didnt find case for patching something with List argument

pine ermine
#

It's not list itself

#

It has something to do with the for loop

#
public override void Entry(IModHelper helper)
    {
        Harmony harmony = new Harmony(ModManifest.UniqueID);

        MethodInfo EXAMPLE_1_Enumerator_MoveNext = AccessTools.EnumeratorMoveNext(AccessTools.DeclaredMethod(typeof(ModEntry), nameof(EXAMPLE_1)));
        MethodInfo EXAMPLE_2_Enumerator_MoveNext = AccessTools.EnumeratorMoveNext(AccessTools.DeclaredMethod(typeof(ModEntry), nameof(EXAMPLE_2)));

        //Harmony.DEBUG = true;

        Monitor.Log("Patching Example 1...");
        harmony.Patch(EXAMPLE_1_Enumerator_MoveNext);
        Monitor.Log("Patched Example 1!");

        Monitor.Log("Patching Example 2...");
        harmony.Patch(EXAMPLE_2_Enumerator_MoveNext);
        Monitor.Log("Patched Example 2!");

        Harmony.DEBUG = false;
    }

    // This method can be easily patched
    private static IEnumerable<object> EXAMPLE_1(object[] enumerable)
    {
        foreach (var _ in enumerable)
        {
            yield return null;
        }
    }

    // Trying to patch this method throws an InvalidProgramException
    private static IEnumerable<object> EXAMPLE_2(IEnumerable<object> enumerable)
    {
        foreach (var _ in enumerable)
        {
            yield return null;
        }
    }
teal bridge
#

Oh, these are enumerator methods. Told ya you'd have a bad time.

pine ermine
#

I'm not sure it's related to that.

#

Because the first one works

teal bridge
#

Enumerators are just weird, I won't pretend to understand all of their restrictions. For example, they can't have out params.

uncut viper
#

does it work if you use annotations?

lucid mulch
#

iterating over an array is a different ballpark IL speaking to using IEnumerable

teal bridge
#

I can pretty much guarantee that it's related, but if you need to be positive, just change the method not to be an enumerator and see if it still fails.

pine ermine
#

Either harmony or MonoMod doesn't like the IL in Example 2

#

Harmony will spit out IL, but MonoMod is like, um no, this isn't right buddy.
So idk if Harmony's patch logic is making it invalid, or if the original unchanged IL code isn't seen as valid by MonoMod.

#

Updating MonoMod.Common to the latest version didn't fix it

lucid mulch
gilded comet
#

in the docs. idk what that means though

pine ermine
#

That would cause the method not to be called but it wouldn't cause an error.

deep cypress
#

Hi loves! I am working on a Girl Sam. I am trying to make her look vanilla-ish, but also a little more sparkly. How do you think of this?

wanton pebble
#

Well, that and I need to figure out why they're bunched up here rather than on their patios, but I think that's due to the main mod, not the spouse patio mod

#

I can see the patios, which is what matters SDVpufferheart

lucid mulch
#

it can get kinda awkward trying to move them when the size isn't 4x2 though as you need to grab the top left tile

wanton pebble
#

Eh, it's not that I need the build space smaller, it's that some tiles on the places I used to place them are either no longer or never were buildable

lucid mulch
#

as long as the top left tile is placeable then it would work

brittle pasture
velvet narwhal
#

(i see them all bunched up and my immediate thought was, "CONGA!")

wanton pebble
#

Hm, that would solve most of them... maybe not Claire's, though, not sure if the right of the pet house is buildable - though the doghouse is moveable. (For reference, the 1.5.6 setup:)

teal bridge
#

Is the Child class supposed to be only applicable only to the player's children? (not Vincent, Jas, etc.)?

lucid mulch
#

yes

wanton pebble
#

I'm fairly sure that's the case, focus, since dispos have Age and the relevant stuff associated with it in stuff like the Lexicon

#

So they wouldn't work off of "child", they'd work off of whatever's in the age part of the dispo

#

(or in C# parlance, not Child class, but w/e the class is that deals with NPC age)

lucid mulch
#

would just be NPCs

teal bridge
#

Child is a subclass of NPC so it wouldn't be missing those fields.

wanton pebble
#

Huh, really? Unexpected

lucid mulch
#

The inheritance of NPC is terrible

teal bridge
#

Looking at the code, it does seem to be only for babies/toddlers but I wanted to make sure.

wanton pebble
#

(At least to me)

teal bridge
#

I'm also aware there's an NpcAge that is normally used for this, which is why Child stood out as weird.

lucid mulch
#

the fact that villagers use the base class, and then stuff like pepper rex or sepents are Monster that inherit from NPC and thus have all the villager fields anyway is annoying

#

but it would break so much trying to fix the hierarchy

teal bridge
#

Haha, yes, well, that's what happens when it's not planned carefully. People wonder why some games use terms like "actor" rather than "NPC" and that's exactly the reason.

#

Player, hostiles and NPCs can all be actors. But in Stardew they're all NPCs.

calm nebula
#

(also why the old code in 1.5.6 had SO MUCH "and is type StardewValley.Object and the type is definitely StardewValley.Object and not Furniture or Wallpaper...")

lucid mulch
#

actor also has more specific meaning, as actors are whats inside an event, and can be temporary clones of the npcs

#

(or BigCraftable which is just also Object)

#

and the only difference was which constructor was used

calm nebula
#

(it is what it is. I'm on my sixth pair of socks for the year.)

#

(my sanity is restored.)

teal bridge
#

Actor is of course just one possible term, although the fact that Events in particular need to make that distinction is also weird.
In an ECS, you wouldn't have any of this hierarchical nonsense, just components representing the different behaviors that an "NPC" can have (movement, dialogue, etc.)

#

Somehow I don't think Stardew's fundamental data design is going to change, though.

calm nebula
#

well, you could do that with interfaces in C# but also like

teal bridge
#

Components are not interfaces.

calm nebula
#

this game predates interface method iirc

lucid mulch
#

1.6 changed a lot, just not that

calm nebula
#

(I don't know what components are. I do know what traits are though.)

teal bridge
#

Yes, it did. But I think even a hypothetical 2.0 update would not drastically change the entire inheritance model.

calm nebula
#

Probably not!

#

(what are the inheritance models of these socks...)

teal bridge
#

Components aren't traits either. Components are actual data. (In fact, they are literally the data in ECS-land, the only data)

#

Closest analogy would be a SQL table, I suppose.

#

(But I'm not saying Stardew will, or should migrate to that model. It would be insane to try.)

plucky reef
#

I am starting to suspect that to make a sword's alt fire be the slingshot will take harmony to do.

#

Well there's no ammo to worry about, that makes it a little easier.

velvet narwhal
#

i am going to make a chaos mushroom when i get the motivation to see how wide i can make it

split ermine
#

i already manually rewrote the whole content.json file and it's still showing the files from my other mod. do i have to make a new one just to fix this botched copy paste. SDVpufferweary

vernal crest
#

If you're not wanting to include AbigailDialogue.json then it looks like you've just missed deleting some stuff from your content.json

split ermine
wise berry
#

(if you want)

velvet narwhal
# wise berry I'm gonna showcase for you because cool mushroom

sure! sorry i went to grab something to eat SDVpufferclueless
description be like: "Ever wanted a perpetually updating mod because the author wants to see an entire biome of mushrooms? Look no further! Updates will be random but suggestions for mushrooms are always welcome."

wise berry
#

A new mod courtesy of @velvet narwhal!
"Ever wanted a perpetually updating mod because the author wants to see an entire biome of mushrooms? Look no further! Updates will be random but suggestions for mushrooms are always welcome."
https://www.nexusmods.com/stardewvalley/mods/27436

Nexus Mods :: Stardew Valley

A broad range of mycology, from mutated trees, to daring cooking dishes!

velvet narwhal
#

thank you SDVpufferwoke i am being taken away to get actual food (not a cookie)

wise berry
#

Gooooooo food is good

#

(I am currently being dragged away from reworking my config tokens to eat as well)

teal bridge
#

Another page in the "book of strange things found in decompilation":

public void fuelLantern(int units)
{
    Tool lantern = getToolFromName("Lantern");
    if (lantern != null)
    {
        ((Lantern)lantern).fuelLeft = Math.Min(100, ((Lantern)lantern).fuelLeft + units);
    }
}
spark wigeon
#

Is there a document or a better guide on transpilers and labels than what the wiki has? I can't for the life of me figure them out

teal bridge
#
Stardew Modding Wiki

The world of Harmony is a bit of a lawless land, but it's incredibly powerful. You can pretty much implement anything you want, but you can also break anything you want. With that in mind, you should begin by reading the main wiki's intro to Harmony to get you set up. This tutorial will focus on the actual patching and assumes you already unders...

GitHub

Contribute to loco-choco/TranspilerHandbook development by creating an account on GitHub.

spark wigeon
#

Thanks, I'll give that github doc a read. I already tried the modding wiki page before.

teal bridge
brittle pasture
#

(nvm I saw you posted it. got drowned out by the github embed lol)

teal bridge
#

I usually de-preview any links I post but in this case they seemed actually relevant.

spark wigeon
#

So from what I can understand it looks like the issue I am running into is because when I remove instructions it is removing the labels too. Thank you again for the documents, hopefully with these I can piece things together tomorrow morning

teal bridge
#

Is there any reliable way to tell if a quest was completed once it leaves the active log (i.e. has no reward or reward was already collected)?

tiny zealot
#

i don't think so, unless it has a unique side effect that you could check for instead

uncut viper
#

the Farmer.questLog list has a list of quest objects with IDs and a "completed" bool field, i dont think they get removed from the log completely just hidden from the players view if theyre done
they also generate automatic conversation topics upon completion in the form of questComplete_[ID]

#

(i missed that if the money reward was less than 0 and either the rewardDescription is null or the rewardDescription length is less than or equal to 2, it does get removed, but the convo topic is still generated)

teal bridge
#

It's not in the questLog (asked the question after trying that and realizing it wasn't that simple, apparently).

uncut viper
#

id just check for it in the past conversation topics list then

teal bridge
#

Active dialog events, you mean? Those are timed too.

uncut viper
#

Farmer.previousActiveDialogueEvents

#

all convo topics, active and past, are stored

tiny zealot
#

there's a function somewhere called like farmer.hasOrPreviouslyHadConversationTopic or something which checks both lists

#

if memory serves

teal bridge
#

Oh, interesting, I was looking at activeDialogueEvents but didn't realize there was a previousActiveDialogEvents.

uncut viper
#

oh yeah, Farmer.hasSeenActiveDialogueEvent(string)

tiny zealot
#

TIL there is a reliable way to check for quest completion

uncut viper
#

(also i should correct myself bc apparently convo topics for dating and marriage are removed upon engagement and divorce respectively, apparently)

#

(including from previousActiveDialogueEvents)

teal bridge
#

Well, this quest one is still there, so thanks, that'll work.

glad zenith
#

why is that some items have a shadow in the toolbar and some don't? like the sprites them selves don't have shadows, where are these shadows coming from?

naive wyvern
#

its hard-coded to be in a specific spot

glad zenith
#

sigh..

naive wyvern
#

so if an item covers up the shadowed area, you wont see it

#

//doesnt seem to apply to decor items tho from what Ive seen//

teal bridge
#

Yeah it's pretty random, as to where they come from it's just a second sprite with black/transparent tint (but usually implemented in some Utility method).

#

Very easy to replicate if you want to, but if you're looking for UI consistency in the game, well... get used to disappointment haha

rancid temple
#

There's a Utility.drawWithShadow that's used in quite a few places

glad zenith
#

basically im wanting to change it because my shadow is too big for the object

#

also thats a mod idea

#

shadow consistency

rancid temple
#

Sounds like a lot of work

naive wyvern
#

could be a framework to allow changes to shadow aPES_Think

teal bridge
#

Yeah, how 'bout no

naive wyvern
#

but it does sound like a lot of work yeah

rancid temple
#

I'm almost certain that's not the only method that handles drawing shadows in menus

glad zenith
#

i mean it keep me busy

uncut viper
#

likely keep you busy til 1.7

rancid temple
#

Trying to hunt down all the places and de-hardcode it sounds like hell lol

teal bridge
#

Haha, if you want to do it yourself, then go for the gold... as for me, that's the kind of tedious stuff I get paid for.

glad zenith
#

well well if nobody's gonna do it il do it

rancid temple
#

Also, probably want to make sure the basic set up doesn't cause any existing mods to explode

teal bridge
#

You're going to be Harmony-patching a whole lotta vanilla menus and HUDs.

#

And Harmony-patching the UI sucks.

glad zenith
rancid temple
#

I feel like doing anything UI related sucks

teal bridge
#

I've been finding greenfield UI pretty alright now that I've ditched nearly everything from the base game except the actual sprites.

glad zenith
#

greenfield ui?

teal bridge
#

Actually, starting this mod was a good thing because I realized I implemented the scrollable container completely wrong for GIG. I don't know how to use my own APIs, how sad is that.

#

And by wrong, I mean I literally forgot to put in the scrollable container. It just... wasn't there, so all the content just overflowed.

glad zenith
#
  • makes very cool api
  • dosent know how to use it :(
  • no profit
teal bridge
glad zenith
#

ah i see

teal bridge
#

Technically have to "reuse" IClickableMenu but that doesn't stop you from overriding every single method on it.

slim gorge
#

I'm still alive.

lucid mulch
#

welcome back, a few things here and there changed

old edge
#

I'm working on some code that rescues the player when they are defeated by a monster while swimming. This may occur in some modded areas with monsters like my mod. I was able to build the mod and test it. It's working ok but when the dialogue box appears I wanted to add a fade out before that happens. I'm not sure which method I should be looking for in the decompiled code right now. Here's my uploaded gist https://gist.github.com/aronyoddity/c7f7fa217536e1e1d16ea41f6aaaa5e5

Gist

NewStardewCode. GitHub Gist: instantly share code, notes, and snippets.

teal bridge
#

Easiest fade is just Game1.globalFadeToBlack (or clear)

slim gorge
teal bridge
#

You might want DelayedAction depending on exactly what you're doing.

slim gorge
#

I've decided that the logical next step for SM is to completely wrap the game in another VM layer - MIPS on .NET on x86.

#

It offers no benefits but greatly complicates things.

#

(Also it's been suggested to actually add 2x/4x/aligned downsampling so that the game actually looks and works like an 8/16-bit game)

teal bridge
#

Port the Mega Bezel CRT shader to Stardew.

#

(System requirements: RTX 4070 or better, probably. Why not.)

ivory plume
#
  • @wise berry Fixed in the latest Stardew Valley 1.6.9 beta patch. Thanks for reporting it!
dense jolt
latent mauve
#

Friends, I have a question about how player configs work. If I change my mod to no longer allow a specific config option, but the player already has the removed option in their config file, will that config file correct itself or do I need to direct them to delete the config?

teal bridge
#

Removing an option should be safe, I think, it'll just get ignored.

#

And will disappear from the config file next time you actually save it.

#

It's when you change the structure of a message or the type of an option that things go bad, like changing the values allowed for an enum.

latent mauve
#

Hmmm

#

Would removing an option entirely cause issues?

teal bridge
#

(see previous reply)

latent mauve
#

For instance, I currently have a drop-down with two options. I want to update my mod to remove one of those options from the dropdown, which effectively means there is no dropdown. Will that break anything?

#

I just want to make sure I'm understanding right.

teal bridge
#

The dropdown is, presumably, a GMCM thing, which is fairly irrelevant. That's just how you present your option.

latent mauve
#

ok

teal bridge
#

If the type is string, then any string value is allowed. If the player has an old option set, it won't display right in the GMCM, obviously. And whether or not it affects your mod depends on how you handle unknown values.

#

If you remove the option entirely from both the config and GMCM then nothing happens.

latent mauve
#

Ah. Well, my particular use case is, my bathroom reno mod does not like it when you change the config from patch to reno mode mid-game. And I can't tell it to not let them change it mid-game since it's a CP mod. Sooooo, plan is to remove the patch option entirely and only allow reno mode.

teal bridge
#

No idea how it affects CP. Probably same though. You can see for yourself, just add a line like "foo": "bar" to your config.json and see how it reacts (or doesn't react).

latent mauve
#

alright, thanks!

teal bridge
#

That will be the same result as if you had an option that used to be used and is no longer used. It's just a redundant line in config.

proud wyvern
#

Ohhh Ameise is back

sharp field
#

Are there any tilesheets with dark grass surrounding dirt? I'm only seeing light grass surrounding dirt in vanilla tile sheets, but I may just be blind. (Also cliffs with dark grass or dirt would be nice.)

glad zenith
#

This is the template for the mail framework mod.
I'm just checking something
"Date": "10 spring Y1", // Must be that date or after it. The format is "[1-28] [spring|summer|fall|winter] Y[1-999]".
Date is the day the mail will be arrived correct?

velvet narwhal
#

i'm really only seeing dark dirt + light grass

calm nebula
#

(Welcome back.)

glad zenith
#

Or is the date the mail can start arriving to the farm?

vernal crest
vernal crest
velvet narwhal
#

mail can be sent with trigger actions

glad zenith
velvet narwhal
#

(just gonna throw this into the wind, i've tried literally every iteration of "TIME" and nothing is working for my tree)

    {
        "Texture": "Textures/PanellusStumpNight",
        "Condition": "{{Time|contains={{Range: 1800, 2600}}}}"
    },
    {
        "Texture": "Textures/PanellusStump"
    }
],```
![SDVpufferchickcry](https://cdn.discordapp.com/emojis/614852765080092673.webp?size=128 "SDVpufferchickcry")
vernal crest
# glad zenith so with CP?

Yes. Like Avi said, you can send mail with trigger actions so you can have all sorts of conditions. You can also send multiple items, send recipes, send money, set custom BGs. All with CP.

velvet narwhal
vernal crest
#

There's probably still something that MFM is needed for, I'm sure. But you don't need to reach for it before trying just CP first.

glad zenith
#

Hm.. kay then.

vernal crest
rancid temple
velvet narwhal
rancid temple
#

Woops one second

glad zenith
#

I'm planning to add more story later. The mod's state right now is just retextures and data edits. The mail is to add reason to these sudden edits. Not that it matters.

rancid temple
#

What data is this patching?

glad zenith
#

item data

velvet narwhal
#

i've been trying to throw everything at it, but if i throw a condition on the "morning" texture, it falls through and goes into the base

#

it's from ender's tree framework

#

ah unless not me, i'm still trying to throw everything at this lmao

rancid temple
#

You didn't use the all caps so I assumed this was a token, gotta look up the GSQ for this

vernal crest
velvet narwhal
#

it should be TIME <min> [max] but it's not working SDVpufferchickcry

rancid temple
#
"Condition": "TIME 1800 2600"
velvet narwhal
#

.......

#

i have done a stupid don't mind me let me try that again

vernal crest
glad zenith
rancid temple
velvet narwhal
#

i was about to say roku should have it up cause i'm a dumb

rancid temple
#

Aba with the lightning response though, typed extra stuff and almost beat me to it :P

vernal crest
#

Pew pew

velvet narwhal
#

digs through spacecore for the nth time even though i know nothing in spacecore makes the texture have a glow effect

vernal crest
#

I shall let roku continue with the speed-linking for now as I have to go stomp holes in my back yard

rancid temple
#

Good luck with... hole stomping?

#

(sounds exhausting)

calm nebula
#

Lawn aeration?

velvet narwhal
#

well aba lives in australia right? emu war 2 electric boogaloo? /j

glad zenith
#

haha electric boogaloo

#

Right now I'm reading through the trigger actions page on the wiki and I feel like my brain is melting. I'll try to understand this tomorrow.

vernal crest
#

Atra wins!

glad zenith
#

Gn y'all

vernal crest
#

Most exhausting part is figuring out how to keep the stupid things on

glad zenith
#

lol what even are those things

vernal crest
#

Lawn aeration sandals for stabbing holes in the ground with your feet.

glad zenith
#

Huh intresting.

vernal crest
#

In my case so that I can then put down poison to kill mole crickets because they murder me with their screaming

vernal crest
#

/sadly converting a mod to AT so I can use it/ Sometimes too much knowledge can be dangerous.

#

Oh I can just make a new path with CP. /sadly makes a new path in CP instead/

rancid temple
#

Why sadly though lol

vernal crest
#

Because I don't want to lol. I just want to play the game but I want a grass path in DaisyNiko's Earthy colours that doesn't replace any of the vanilla paths.

#

I guess I could just download IdaIda's grass path and replace the texture files with the recoloured ones from spiderbyhoshi. Yeah ok that will do.

#

Problem solved! Thanks for rubber ducking, roku xD

rancid temple
#

Lol

#

Putting that dangerous knowledge to good use

vernal crest
#

It wouldn't have actually been much work to just make my own new path (well, still using someone else's texture) but I am tired

sleek flint
# vernal crest Atra wins!

I come to this channel and the first thing I see is this. I mean it's cool, but wtf is this? ๐Ÿ˜ญ

rancid temple
#

Also, a really cool way to deal with cockroaches

sleek flint
#

I see. Will good luck becoming a farmer IRL.

vernal crest
#

Lol I would be a terrible farmer

#

I can't keep plants alive

rancid temple
#

Maybe rancher? Animals tend to be a little easier to keep alive

#

Though, I'd never be able to butcher the ones meant for meat, I get way too attached to animals

vernal crest
#

I am also not a responsible pet owner so I don't own pets for that reason. I would not do better with farm animals.

#

Consistency is not one of my strengths lol

sleek flint
#

Wait, then why are you using these sandals?

vernal crest
#

My backyard is almost entirely clay and to let the mole cricket poison get into the ground I had to stab lots of holes in it

hollow aurora
#

One message removed from a suspended account.

rancid temple
#

Pretty sure there's not

vernal crest
#

Cheese and goat cheese are both -26, artisan goods

rancid temple
#

Right, but so are a lot of other things lol

#

Grilled cheese sandwhich: goat cheese, regular cheese or a bottle of wine, your choice

#

Though, knowing some white women that's actually a viable recipe

#

If it's for a recipe, you could use SpaceCore to use context tags, but you'd also have to tag the various cheese

hollow aurora
#

One message removed from a suspended account.

vernal crest
#

Yeah I know I wasn't saying it as though that was a useful thing for them roku

sleek aurora
#

Are there any shopping instructions?

rancid temple
#

Shopping?

sleek aurora
#

By adding items to the store. I don't know English well ((

rancid temple
sleek aurora
#

Thanks

rancid temple
#

I have a tutorial for adding recipes to shops, which is almost exactly the same as adding items but it has a few slight differences

#

Guess I just have to constantly keep it up to date ๐Ÿ™ƒ

vernal crest
#

It's got 1.6 in the title, that's fine

rancid temple
#

Yeah, the alternate title, would have preferred the link to have it

#

Just wasn't thinking when I made those pages lol

#

The page that has all the tutorials only shows the link name, it's auto built based on the tutorials category so I dunno if there's some way I could make it show the alternate title instead

vernal crest
#

A whoooole bunch of the tutorials don't have any information about what version they are for so you're ahead of the curve already

rancid temple
#

Yeah, that's part of the reason I want to make it more obvious lol

marble verge
#

Afternoon. I'm trying to i18n some things, but anything in StringsFromMaps just returns the path of what is supposed to be shown in the dialogue box. Is there some kind of trick to this one?

rancid temple
#

i18n is different from using the Strings assets

#

Is this CP or C#?

marble verge
#

CP

ocean sailBOT
#

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

marble verge
#

I'm a Cowpoke now..?

rancid temple
#

It's one of the chatting tiers, I guess that one lets you finally share images in channels where that's normally prohibited, such as here

#

Gotta be at least Farmer role in order to apply for Mod Author role, given you have a mod published as well

marble verge
#

Aha

#

Looking at SVE, it has this: "Forest.5": "{{i18n:String.05}}",

#

I did pretty much the same thing, but all I get is the path thing

rancid temple
#

Did you make an i18n folder and a default.json?

marble verge
#

Yip

#

It's working for everything else

rancid temple
#

What's the path thing?

marble verge
#

When I click on something that needs to return an 18n line, I get something along the lines of "Strings\StringsFromMaps\Entry.1"

rancid temple
#

!json seeing what you're doing is gonna be a lot more useful than describing it I guess

ocean sailBOT
#

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

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

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

marble verge
#

This is an include I'm working on converting:

rancid temple
#

And the i18n?

marble verge
#

And this is the i18n in progress:

#

I'm working with a savegame in progress, but reloading the i18n and patch didn't affect anything.

rancid temple
#

Might be worth going back to the main menu, doing the i18n and patch reload, and reloading the save

marble verge
#

Just a minute

rancid temple
#

Seeing where you're using these Strings assets would also be good

marble verge
#

They're tile actions

#

Message "DTZ.ZuzuCity.1", etc.

rancid temple
#

Right but I can't be sure you're doing it correctly if I don't see it

marble verge
#

How would I show that?

rancid temple
#

Well you can screenclip I guess, if it's just in Tiled

#

I forgot that people tend to do a lot of stuff in Tiled lol

marble verge
#

Okay, fantastic. Never mind; I am just being a colossal idiot.

#

Includes are great - if you actually friggin' include them. -_-

vernal crest
#

It happens

rancid temple
#

If it's any consolation, the code all looks good as far as I can tell

#

So hopefully that's the only issue lol

marble verge
#

Just did a reload, everything works as expected now.

#

I'm going to start keeping track of the number of times I say "God, you're an idiot" to myself out loud. Maybe get myself a treat if I break a previous record or something. ๐Ÿ™‚

rancid temple
#

Haha, I wouldn't be too hard on yourself, it definitely happens

marble verge
#

To meme it up, I ain't even mad

#

It's just always stuff like this, and never "wait, I actually need to dig into this"

marble verge
#

Is there a way to attach a tooltip to a custom wild tree? I'm using the Informant mod, and all of my trees show up as "???".

drowsy pewter
#

as far as i know, no, because theres no name field in wildtree data

#

informant probably writes their own label for vanilla stuff

marble verge
#

Ah, okay.

plucky reef
#

There's a lot of base game code that has holding melee weapon and holding slingshot as mutually exclusive to some functions, so I'm wondering if I can use harmony or just regular code to say "when the action button is being held down, the sword is no longer a melee weapon for legal purposes and is currently a slingshot". Is there a better way to do that?

lucid iron
#

Maybe u can make a Slingshot based on the sword then store that in heldObject

#

Or other way around Bolb

plucky reef
#

I need to read more on heldObject but it's not an object type on its own, but like, tags?

lucid iron
#

unsure what you mean by tags

#

ah the heldObject idea isnt viable cus Tools only inherit from Item

plucky reef
#

I think I'm unsure what I mean by tags too. And definitely can't make a new weapon type.

lucid iron
#

well you can if you want

#

just remember to use spacecore

#

need RegisterSerializerType to save ur new weapon properly

plucky reef
#

Sounds like it would need some transpiling to work with base game "if you're holding x then you can't move" stuff and that's fragile.

#

But, I will add reading spacecore doc in detail to my list today.

lucid iron
#

hm maybe you can implement shooting as a weapon special move

#

cus thats a thing you do with weapon in which you cannot move Bolb

plucky reef
#

BetterSlingshots and Enhanced Slingshots are outdated but have a lot of harmony in them that were giving hints of how to do it, but they're modifying existing slingshot.

lucid iron
#

the logic aint quite the same ofc, lots of reimplementing stuff in this route

plucky reef
#

My initial thought was on the buttonpressed/buttonreleased event, set a bool, and then while bool is true and held tool is harpsword, force enter the slingshot aim mode. But that's skipping a lot of steps.

#

No ammo involved, so the sword does not need the actual quiver thing to hold rocks. I'll just generate a projectile and run it through my spell validation to deduct mana.

lucid iron
#

i do feel like making the harp really a slingshot and then making your own melee hit on button press is easier than the reverse

plucky reef
#

Um OK maybe... Activate the slingshot aim, but the release just creates the initial vector for a regular projectile instead of calling in all the other slingshot methods.

#

I am inclined to agree, since regular slingshot does not have a left click (I think? Haven't used it in years).

lucid iron
#

it only has left click to aim and shoot i thought right think

#

no right click tho

plucky reef
#

Oh it's been a minute then. Well I have some ideas to play with now, ty.

gaunt yarrow
#

Hey! I am trying to copy a snippet of code from an another mod to an another mod?

They are both contentPatcher mods, one uses a different version?
When I add

   // Panorama
   {
      "Action":"EditImage",
      "Target":"LooseSprites/stardewPanorama",
      "FromFile":"assets/{{Target}}.png"
   },
   // Clouds
        {
      "Action":"EditImage",
      "Target":"Minigames/Clouds",
      "FromFile":"assets/{{Target}}.png"
   },
    // Treestrip
   {
      "Action":"EditImage",
      "Target":"Minigames/treestrip",
      "FromFile":"assets/{{Target}}.png"
   },
```to the `Changes` attribute, it does not do anything? Since it's an older mod, the format is `1.19.0`?
lucid iron
#

do you have these pngs in your mod?

gaunt yarrow
lucid iron
#

assets/LooseSprites/stardewPanorama.png and so on

gaunt yarrow
#

yes

lucid iron
#

the format for these EditImage didnt change so u can use 2.3.0

#

check your logs for any errors

gaunt yarrow
#

could this be stardrop doing something weird? I edited the file straight in my games mod directory?

gaunt yarrow
lucid iron
#

!logs

#

!log

ocean sailBOT
#

Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.

Please share your SMAPI log file. To do so:

  1. Open this page: smapi.io/log.
  2. Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
  3. After uploading, it will show a green box with a URL to share. Post that URL here.

Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didnโ€™t occur in your last session, please load the game to the point where the issue occurs, then upload the log.

gaunt yarrow
ocean sailBOT
#

Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Unix 6.10.6.0, with 11 C# mods and 35 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

gaunt yarrow
#

The mod is the Vintage Interface 2.0 (CP) which should set the main menu background too

#

Like is in content.json

lucid iron
#

so going by the logs your edits all applied correct

woeful ingot
#

idk if anyone here is intending ro make a Boothill mod, but I'm an artist; and would be very considering helping out with art assets- in case anyone needs it bc i am starved for cyborg cowboy

lucid iron
#

but the mountains are actually Maps/HarveyBalloonTiles rather than assets/LooseSprites/stardewPanorama seems like

#

Minigames/Clouds is correct though, do you see clouds change in main menu?

gaunt yarrow
lucid iron
# woeful ingot idk if anyone here is intending ro make a Boothill mod, but I'm an artist; and w...
Stardew Modding Wiki

So, you're interested in creating a new character for Stardew? Good news: with version 1.6, creating a character is easier and allows for more flexibility than ever. However, NPCs are one of the more complicated things to create for Stardew, as they have a LOT of moving parts. This guide aims to provide a basic but thorough walkthrough for ea...

woeful ingot
#

oh thank u! I'm not much good at modding, but I might try this if no one picks up a similar project

gaunt yarrow
floral canyon
#

Hi guys, does anyone know how to trigger quests? the trigger actions don't have an option for an immediate trigger so I guess that is not way to do it? I'm trying to trigger a quest after player has just seen a mail like how most vanilla quests do

finite ginkgo
#

Attach it to the letter using %item quest <quest ID> %% in the mail

#

No need for trigger actions

floral canyon
#

Ah that's brilliant, thank you! ๐Ÿ˜…

marble verge
#

Is there any way to use line breaks in i18n?

teal bridge
#

\n

marble verge
#

Merci!

sharp field
#

Are there any tilesheets with dark grass surrounding dirt? I'm only seeing light grass surrounding dirt in vanilla tile sheets, but I may just be blind. (Also cliffs with dark grass or dirt would be nice.)

lucid iron
#

the dark dirt tiles have slightly darker grass

#

dont think there is dark grass in vanilla though

finite ginkgo
#

There is 3 shades of grass in vanilla, but no I donโ€™t believe thereโ€™s any vanilla tiles that connect dirt and/or cliffs with the darkest grass tiles

lucid iron
#

yea that is what i meant, no darkest grass -> dirt

sharp field
#

That's what I was seeing

lucid iron
#

maybe cus darkest grass is suppose to imply dense grass

sharp field
#

I was mostly looking for the second tier. And there are arguably 4 colors if you count the tree shadow grass as one.

warped spade
#

Good evening ๐Ÿ‘‹ I have a quick question : when using "Modification": "Multiply" in a shop entry and the result is say 16.5, does it round up or down ?

dense jolt
#

I don't think SpaceCore has anything for collectiontabs at least not what I found

lucid iron
#

it's better if you forget about integration with collections tab and just make a menu that works first

#

doing stuff to the vanilla menu is like burying compat landmine for other mods monS

dense jolt
marble verge
#

Is there a way to load a currently loaded tilesheet into a new slot? Say, transfer Maps/spring_outdoorsTileSheet to Maps/New/spring_outdoorsTileSheet?

teal bridge
#

A "slot" is just an asset. You can implement the asset loading any way you want in the AssetRequested event.

marble verge
#

In CP?

teal bridge
#

Not CP, no.

marble verge
#

Yeah, I kind of figured that that wasn't going to happen. Oh, well.

brittle pasture
#

what's your use case though? is this for a weird maps thing?

marble verge
#

I'd like to offer three on-the-fly recolors: currently loaded, default and Earthy.

#

Default as in, vanilla.

teal bridge
#

It does sound odd. If it's just a copy of a game asset, then why not reference the game asset directly? Why do you need the copy?

marble verge
#

Because the loaded game asset may have been recolored by another recolor.

teal bridge
#

Then how is your recolor supposed to work? One of them has to "win", no?

marble verge
#

I've built in support for vanilla and Earthy by loading different tilesheets, but I'm not sure if I can switch back to whatever was originally loaded from there.

brittle pasture
#

and why do you want to switch back?

lucid iron
#

you just dont load yours

marble verge
#

Mainly to figure out if it's possible. If so, I could add (Default) as an option for currently loaded and leave room for other recolors to recolor DTZ assets.

teal bridge
#

Wouldn't vanilla already point to the last mod to modify that tilesheet?

#

Unless you've made your own custom "vanilla" that's a literal pixel copy of the game's vanilla assets.

marble verge
#

Presently, I'm not actually loading the default assets... Actually, they're not being targeted at all.

lucid iron
#

im not really sure i get it but it sounds like
[vanilla][other mod][your mod] -> [your mod] applies
and you want to go to
[vanilla][other mod] -> [other mod] applies

teal bridge
#

Are these recolors for a vanilla map, or recolors of a custom map that happens to use vanilla tiles?

marble verge
#

If I target them with a conditional EditImage and and the condition is no longer true, will it go back to whatever was there before?

uncut viper
#

(also, do you have permission to use the DTZ assets?)

lucid iron
#

if cp reload changed in way that your's isnt being loaded, then it reapplies the whole stack

marble verge
uncut viper
#

there wouldnt be any other recolours recolouring DTZ assets to worry about then, no?

marble verge
#

I have no plans to upload anything - and if I do, I'll go get permission from whomever's stuff I'm working with

teal bridge
#

Yeah, the way assets are handled is not static; each time something changes, SMAPI/CP reloads the vanilla asset and then reruns everything that modified the asset.

#

If your edit runs at low priority and some other recolor at high priority, then the other recolor happens last; if you swap the priorities, your edit happens last. Remove your edit entirely and it's whatever mod came before + whatever mods came after. That's all there is to it.

marble verge
#

Maybe it would help if I actually explained what I'm doing xD

teal bridge
#

You are not "editing" a "file", you are editing a step in a pipeline.

lucid iron
#

u can just try installing 2 CP farm building retex mods with config blobcatgooglyblep

marble verge
#

I have tilesheets for Earthy, and tilesheets for Vanilla. The vanilla ones are copies - because it might be possible that someone is using another recolor, in which case you get a recolor clash in DTZ. For that scenario, I want to introduce an option to force DTZ to use all-vanilla assets.

lucid iron
#

see how it goes when u turn off 1 farm building

teal bridge
#

I'm not sure I understand why you'd want to force a complete reversion to vanilla if another mod has changed it. Surely no user would interpret it that way, "vanilla" would be "turn this mod off" not "erase what every other mod has done".

#

Just have your Earthy recolor depend on a condition. Job done.

marble verge
#

I don't want to affect anything outside of DTZ

uncut viper
#

i mean it sounds like what you want is to just load the original tilesheets onto themselves again but from assets in your own folder, and make that conditional based on config, but it also just sounds like bad user experience to me when instead they should just uninstall the recolour

marble verge
#

Which is where my original question came from: right now, I'm loading everything into Maps/DTZ.DowntownZuzuCP/[Tilesheet].

#

But everything that points to vanilla assets is untouched, so that recolors other than Earthy can do their job elsewhere.

#

Is there a way to copy the loaded tilesheets to another slot without C#?

teal bridge
#

As I said, when you edit an asset like with EditImage, you are editing a step in a pipeline, not editing the raw asset. Remove the edit (i.e. by making it conditional) and it just reverts.

#

You do not need to "edit" it back to vanilla. Just remove your edit.

marble verge
#

Okay, that's good.

teal bridge
#

Unless your actual goal is to override any previous recolors and force vanilla, but that's... unusual for a mod to do, and kind of hostile to players.

uncut viper
#

that will let other mods still edit though rather than forcing whatever tilesheet is originally there to be the original again, am i misunderstanding or was that not what you wanted

marble verge
#

The maps are combination of DTZ-specific tilesheets and - currently - whatever is loaded in the default slots.

uncut viper
#

(ah, i was misunderstanding then, in which case yeah like focus says just not applying your edit will revert it SDVpufferthumbsup)

teal bridge
#

So they are custom maps? I asked that question earlier.

marble verge
teal bridge
#

I see. In that case you want two conditions, the first using your copied vanilla texture, and the second using your earthy retexture.

marble verge
#

As it is, you could get a combination of, say, Starblue and Earthy, or Starblue and Vanilla, and that looks kind of wonky.

teal bridge
#

When both conditions are false, it'll revert to "ambient recolor".

paper sundial
dense jolt
#

I'm going to do that, I asked someone on Nexus if their source code is open but I haven't gotten a response (their mod adds a collection tab)

paper sundial
marble verge
teal bridge
#

FYI, even if you manage to add the tab visually, trying to get all the IClickableMenu stuff working with it, especially the neighbor system, is probably going to drive you insane. Almost every mod I've seen that tries to modify vanilla UI completely and utterly screws up controller support.

marble verge
#

Thanks for the help, everyone.

dense jolt
uncut viper
#

(SPU has controller support SDVpuffersmile it was, absolutely, a royal fuckin pain)

#

if i had to guess the crafting collections page just adds a button there in a hardcoded spot like all the others and it would not look as good once you wanted to add one more

#

you can always decompile their mod yourself to take a look for curiosity's sake too, so long as you dont just copy things

dense jolt
dense jolt
teal bridge
#

(I thought SPU was a framework mod, where do controllers come in?)

uncut viper
#

(fwiw it does seem like it actually just goes past the last tab, no matter how many tabs there are, but obviously that only works until you get to the bottom of the screen... no scrolling support by default)

#

SPU rewrites the Special Items & Powers tab to add categories

#

basically turns it into a Collections page but separated by mod, for powers

teal bridge
#

Oh, yeah, patching the UI for that sounds like tons of fun.

uncut viper
#

it also does the more frameworky stuff behind the scenes

#

luckily i didnt have to patch it i just overwrite the original menu completely

#

(and add a config to disable it if another mod requires the original menu for some reason)

teal bridge
#

Oh, in that case the controller story isn't that bad. It's just super broken whenever a mod tries to add clickable stuff to the vanilla menu.

uncut viper
#

controller support did break me when i made my searchable collections page but it kinda. sorta. half works? if you dont look too closely-

#

as long as you only move the joystick or dpad downwards its fine. who needs up or left or right anyway

dense jolt
#

Honestly now that I think about it I probably have more freedom if I don't integrate it with the collections tab

uncut viper
#

whenever possible creating your own menu is basically always going to be better and easier

teal bridge
#

lol, well I won't further pimp my UI thang but it's there to try. It took a long time to get controller support just right, but as of now it very rarely fails to do the right thing.

uncut viper
#

unless you really want it integrated in another menu

#

if id made SPU now id probably try it, but SPU predates it i think, and my mindset is that if it works now, i have no motivation to try and rewrite it all again and potentially break it

teal bridge
#

Understandable.

#

FWIW, the UI I showed yesterday, after adding all the functionality to apply rules, dimming, overlays, etc., nets out to just over 300 LOC for the entire menu. It doesn't have tabs, but tabs aren't really that hard (I use both top and side tabs in the in-progress logistics mod.)

#

Most custom menus I see are like, thousands of lines, so to me that's an improvement.

uncut viper
#

my SPU menu has just under a thousand apparently, though thats without minimizing line breaks and such, and a lot of it is just copy pasted stuff from other vanilla menus bc a lot of them share the same functionality. sure as hell aint very readable though even if its not a lot, so id still take the 300 ofc

teal bridge
#

Oh, yeah, I use csharpier so the 300 involves very generous line breaking. According to VS analytics it is only 83 lines of "executable" code.

uncut viper
#

tbh i hadnt actually looked at your UI thing until now (i knew you'd made it but didnt have reason to use it so i didnt look into it) and it does seem really nice, so if its any endorsement its making me think "i wish i had a menu i was working on so i could try it out"

teal bridge
#

Haha, thanks, I think?

#

I'm fine with however many or few people use it, the offer's still open for anyone wanting to try it out and let me know if any features seem to be wonky or lacking.

uncut viper
#

ill just make an in game menu for writing custom harmony patches at runtime from the mailbox to go with my CP-Harmony-Patches thing im working on SDVpuffersmile

teal bridge
#

Much meta, so harmony

lucid iron
#

ButtonDE

teal bridge
#

On an unrelated note, I'm trying to test the gift-rejection logic, does anyone know of an actual example where an NPC has a custom gift rejection dialogue?

uncut viper
#

cant be much more work than my current mind worm asking myself constantly "how difficult can it really be, to make an extremely simple 'programming language' for the advanced CP patches feature?"

#

Jas and Vincent

#

oh rejection

#

never mind not jas and vincent then

velvet narwhal
#

wholly reject, like they won't take it? || birdie's quest ||

lucid iron
#

what if you just patch some in to test think

finite ginkgo
lucid iron
#

i thought its just matter of having a reject_<itemid> dialog

teal bridge
#

Thanks, good to know although I don't run any expansions, was hoping for a vanilla reaction.

finite ginkgo
#

(it's rejectItem_<itemid>)

teal bridge
uncut viper
#

Marnie has reject dialogue for Louis's shorts

velvet narwhal
#

i FORGOT about that one SDVkrobusgiggle

uncut viper
#

but also yeah like Avi said i think everyone has reject dialogue for the birdie quest items too

brittle pasture
#

There's two types of rejection - reject because they're the wrong recipient for an active quest and rejected because they don't want it as a gift

uncut viper
#

unless theyre the recipient ofc

brittle pasture
#

the latter is new to 1.6

teal bridge
marble verge
#

Well... I tinkered with it, and I think I'm going to have to stick with vanilla and Earthy. If I make maps look in Maps/ for their assets, any change I to make tilesheets like spring_outdoorsTileSheet applies everywhere and not just in DTZ; if I make maps look in Maps/DTZ.DowntownZuzuCP/ for their assets, I can't make the maps use default assets. As far as I understand, anyway.

velvet narwhal
#

is there a different logic between quest vs reject or is it just the same

brittle pasture
#

the former is reject_ and the latter is RejectItem_

uncut viper
#

oh, no one in vanilla has RejectItem then

teal bridge
#

I do have it checking for both. Too bad if there's no vanilla test for the new logic though.

lucid iron
#

are you going to let people propose over the mail

uncut viper
#

if you send a bouquet or pendant through the mail i think it should immediately jump you to divorced status

velvet narwhal
#

"i'm breaking up with you over text" new level

teal bridge
# lucid iron are you going to let people propose over the mail

I thought of things like the bouquet/mermaid pendant and decided I had no idea how the mechanics of such a thing could work. So the mod has a configurable (by patching, not user-configurable) blacklist of items that can never be mailed, and those ones are on it.

#

And yes, the human factor also did occur to me, "who the hell asks you out on a date by mail?"

lucid iron
#

yea that seems like best thing to do

brittle pasture
uncut viper
#

yeah you need the dialogue response to those things to set up other things and it just wouldnt make sense to do over mail

teal bridge
uncut viper
#

or... i guess you can technically do everything and then just, not draw the dialogue, but thats also strange, bc then you'd be dating as soon as you sent the letter

teal bridge
#

As soon as they received it. There's no instant-teleportation here, it's mail.

#

But yes, I'd have to do some weird thing where they send you mail back saying "yes, I'm totally into that!" and it's just... weird.

#

If someone else wants to make that mod, they can patch the asset to remove those items from the blacklist and figure it out themselves. SDVpuffercool

uncut viper
#

or just check if the letter has an engagement/dating item when they receive it and until then leave the player in a state of schrodingers dating status SDVkrobusgiggle

velvet narwhal
#

triggers dumped_

uncut viper
#

if you ask someone out remotely you should expect to be randomly dumped remotely too

lucid iron
#

oh are you doing a thing where the npc mails you what they'd normally say for the gift at a later time

teal bridge
#

You just... don't ask people out remotely. I'm pretty sure their response would be to ignore it entirely. That's been my response when some very confused individuals tried to do it online.

velvet narwhal
#

does gifting through mail not trigger the dialogue? i assume it'd be the same logic as "gift everyone"
chu and i same braincell apparently

teal bridge
lucid iron
#

yea it'd explode the mail page too

teal bridge
#

I considered even just posting HUD notifications, but it's still too much.

uncut viper
#

you could start a conversation topic and give them all "hey i got your letter" lines, so if the player talks to them they can bring it up

teal bridge
#

One thing I will need to send actual mail for is for "returned" gifts, i.e. you tried to exploit the gift limits and I caught you.

uncut viper
#

thatd let custom NPC makers add dialogue for it too

lucid iron
#

oh it might be neat to add mode where you can only mail gift that you already given them in person

#

progression mode kinda

teal bridge
#

Nah, what's the point of that? Though it is set up that you can only mail to people you've actually met (spoken to), and the thing I was asking about yesterday requires you to have completed the "How to win friends" quest before you can send anyone anything.

uncut viper
#

(or tbh even just adding the convo topic thing but not giving them to the vanilla NPCs would be neat from a custom NPC maker persppective)

teal bridge
#

I do like the idea of adding event dialogue after sending a gift, though that is pretty far outside my wheelhouse, I'm not sure if it involves 2 lines of code or 2000.

lucid iron
#

the point is to reserve this system for late game filling out points, and make player hear at least a few gift reaction lines

uncut viper
#

though now that i think about it im not sure how you'd limit it to just the person who received the gift unless you appended their name to the convo topic, which is a bit wonky

lucid iron
#

but ofc if you just make dialog work through mail somehow then u dont need it

teal bridge
uncut viper
#

i guess you could just append it to their daily dialogue directly and just check if they have a "receivedMailGift" dialogue key

#

itd only work on that day but maybe that makes sense idk

teal bridge
#

The idea is, you shouldn't have to waste all your in-game time running around time gifting people to max everything in an entire year, but you also can't be totally lazy/ignore the system entirely and just mail everything.

#

If it were only available late-game, it would completely defeat the purpose to me. First of all it's illogical and unimmersive just from a rational point of view (why can't I send it now?) and requires a bunch of silly lore, and second, late-game is when you actually finally have the time to run around gifting everyone.

plucky reef
#

I was actually just about to ask this with gifts, if there was a good base game way to do it or (as I just finished doing) use the spacecore event to make it ungiftable.