#making-mods-general

1 messages · Page 164 of 1

gray bear
#

my itty bitty brain doesn't understand the {{range}} condition in any capacity. guess {{random}} would be the one you need to use Dennis? thonk

scenic lodge
#

I wanted to try that but it doesn't preserver the config.json file and don't create structured mod backups like I wanted , so I wanted ro create that

flat sluice
scenic lodge
#

And I have tested that script over iterations hundreds of times and it works besides the bugs that I mentioned

lucid iron
ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Pro, with 65 C# mods and 48 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

lucid iron
#

Here's my cli nexus mod updooter u can yoink as long as u have premium

#

It's kinda bad in that it doesn't handle rar correctly

ivory plume
#

The item spawn codes were rewritten in 1.6. I think you should be able to just list the item ID multiple times like [390][390][390][390][390] to get five of them, but I haven't tried it.

gray bear
round dock
scenic lodge
wanton pebble
#

!chatgptcode

ocean sailBOT
#

Please stop trying to get ChatGPT to write your C# mods for you, especially if you don't know how to write C#. It won't work without heavy editing, and it wastes everyone's time.

Large language models fundamentally are reguritating something from their input—which is roughly speaking, the written output of humanity up until 2021 or so, for ChatGPT. For specific, niche topics like "is this framework going to do what I want" or "which things does Game1.cs have access to", it probably has no idea! But it's good at detecting that people in the past have....said things about frameworks and written things in C#, so it does its best to assemble words and symbols into a nice order for you. Sometimes it tells you true things, and sometimes it tells you false things, and if you can't detect when, you're in trouble. When you're writing code, this usually produces garbage, because you can't be "sort of similar", you have to be exactly correct or it won't work.

gentle rose
#

it can be so hard to know exactly what every parameter expansion, substitution and command does and how to make sure they NEVER misbehave and accidentally move/delete a path that you weren't intending them to, even when you do know all the details of how to write them. Seriously, if you are planning on using this only yourself that's perfectly fine, but I would be extremely hesitant to publish it until someone who's very experienced in scripts like these can confirm to you it won't go wrong (and I am someone who does know how to write them)

lucid iron
#

I don't actually find config preserving to be a big issue cus most mods (correctly) do not ship the actual config.json

wanton pebble
#

That command IS still active SDVpufferparty

flat sluice
lucid iron
#

And usually don't alter the file structure so updooting by overwrite is alright most of the time Dokkan

scenic lodge
gray bear
#

Nah, what you're trying to do seems very plausible (that is, i know for a fact one can randomize dialouge)

tiny zealot
gentle rose
lucid iron
#

This spaget is not licensed (all rights reserved) mostly cus I have zero desire to release it in a generally usable state

#

But i got no issues with ppl taking it for themselves

gray bear
#

i'm just probably not the best person to give advice on that. gestures to people here i know have made npcs bet they could help

tight rivet
#

releases all my mods as .ace.gz.tar from now on

gray bear
#

is that even a file

gentle rose
#

guys do you like my code

if (e.DataType == typeof(Texture2D))
{
    e.LoadFromModFile<Texture2D>("assets/cage.png", AssetLoadPriority.High);
}
rotund elm
#

if not you can make it one lol

tiny zealot
tight rivet
#

It is but I think .ace is generally unsupported

scenic lodge
tight rivet
#

it should properly be .tar.gz too

teal bridge
#

The .gz.tar order is pretty evil, I'll admit.

gray bear
gentle rose
flat sluice
teal bridge
#

It looks innocent but it's going to screw up a whole lot of tools.

lucid iron
#

What is the newest most compressy format these days kasumidetect

ivory plume
#

No, the game expects all the keys to exist. For example, if you do this:

"Rainy_Day_{{Random: {{Range:0,4}} |key=rainy_day}}": "{{i18n: rainy-day.{{{{Random: {{Range:0,4}} |key=rainy_day}}}}"

That will correctly produce text like this:

"Rainy_Day_3": "{{i18n: rainy-day.3}}"

But then the game may choose Rainy_Day_2 which doesn't exist, in which case it'll fallback to the key it would use if none of those existed.

teal bridge
tight rivet
scenic lodge
tough crater
#

I do my dialogue like this:

"spring_18": "{{i18n:medsDialogue_{{Random:{{Range:1,2}}}}}}"

gray bear
#

aha! people who know more than me, my favorite

#

thank u Love_Heart

tough crater
#

No problem!!

gentle rose
tiny zealot
#

i see we all talked about the chatgpt part but my other recommendation in general is to avoid writing significant programs in bash/shell

flat sluice
scenic lodge
teal bridge
lucid iron
#

Idk i think unzipping some stuff is probably fine to do in bash

tight rivet
#

My Linux teacher (and textbook) are crying at you right now

gentle rose
#

writing full scripts in shell is so cursed

lucid iron
#

Not like they want to make cli mod manager

gentle rose
#

but like, smaller stuff is fine. idk, I break this rule all the time

lucid iron
#

Even nexus api dl is fine if u just curl probably

tight rivet
#

The newest format for compression is .zst

gray bear
#

.zst ? like zest?

tight rivet
#

.zpaq is the newest archival apparently

gray bear
#

are u saying real words anymore

flat sluice
# ivory plume No, the game expects all the keys to exist. For example, if you do this: ```json...

So I copied the code you provided, but SMAPI doesn't like it:

[Content Patcher] Ignored (CP) Eleanor > Eleanor - dialogues load command > assets/dialogues.json > Eleanor - marriage dialogues: error reading info. Technical details:
System.InvalidOperationException: Error parsing '' as a tokenizable string
 ---> System.InvalidOperationException: Error parsing 'Random: {{Range:0,4}} |key=rainy_day}}}}' as a tokenizable string
...... some more lines .......
```. Maybe I did something wrong?
lucid iron
#

Python is just my comfort language for these smol things

teal bridge
#

Yeah, that's why I stipulated non-streaming compression, zstd is used for realtime but I never see it used for offline file compression.

tight rivet
#

ah, fair

tight rivet
#

I'm looking at a compression comparable

teal bridge
#

There is actually newer stuff than zstd but it is less popular.

tight rivet
gentle rose
tight rivet
#

The newest you'lll see is like.. apparently .zipx in the wild?

gray bear
teal bridge
#

Actually zstd might be newer, it's just less compressive than brotli (but it is much faster).

gray bear
#

is it a key or token? i may be stupid

tight rivet
teal bridge
#

Also "ZPaq" is a hilarious name for so many reasons.

tight rivet
#

but most of what I need 7z and zip is good enough

flat sluice
ivory plume
wanton pebble
#

Iro's correct. Whenever you see that parsing tokenizable string thing, your culprit is almost always }}s

#

And let me tell you

#

Getting that error in an i18ned event is the worst

tight rivet
#

Okay back to object conversions. I will finish this before lunch so I can focus on my acutal homework

wanton pebble
#

Hunting through the ENTIRE event for missing }s...

tight rivet
#

(Data Warehousing, the joy of Database Design.)

gray bear
#

missing commas hurt more

flat sluice
wanton pebble
#

Missing commas are just "D'oh!"

gray bear
#

commas make me sad tbh_sobs

wanton pebble
#

Missing }}s can be a horrid hellscape

gray bear
#

I think
"Rainy_Day_Dialogue: "{{i18n: rainy-day.{{Random: {{Range:0,4}} |key=rainy_day}}}}"
but at the same time i don't understand the key

ivory plume
scenic lodge
gray bear
#

did i spell dialogue wrong? mayhaps

tight rivet
#

Stardrop is open source, you could fork it and add the features

teal bridge
#

That spelling is definitely wrong.

gray bear
#

autocorrect to the rescue

teal bridge
#

Dialoogie

gentle rose
#

does stardrop have an issue with preserving configs for you guys? I don't think it overwrites configs for me but I could be wrong

ivory plume
tight rivet
#

I don't use a mod manager so

gray bear
scenic lodge
light bramble
#

does this work for crafting recipe? "Cheese": "{{ModID}}.LargeCheese 1/Home/424 {{Cheese Amount}}/false/Farming 3"

tight rivet
#

(SMAPI does the one thing I would want from a mod manager - alert me to updates.)

lucid iron
#

When i was do stardewui stuff i spel "dialogue" as "dialog" every single time blobcatgooglyblep

gray bear
scenic lodge
teal bridge
#

Or... dialuge, that's when you sled on rough terrain without safety gear.

light bramble
#

Like am I allowed to use {{Cheese Amount}} instead of a number? {{Cheese Amount}} is a number

teal bridge
#

(ok, I'm done)

drowsy pewter
#

if stardrop overwrote everyones configs i imagine it would be unusable for pretty much all its players

flat sluice
gray bear
#

i don't think my brain gets the keys but than again im distracted by jiggling ones

light bramble
scenic lodge
drowsy pewter
#

Oh wow, it gave you a choice

rancid temple
drowsy pewter
#

If you need help using stardrop, just ask modded farmers

ivory plume
light bramble
#

tysm

rancid temple
#

In other areas, I've put strings into int areas and they still work

gray bear
#

aren't configs saved in the game files somewhere

flat sluice
# ivory plume You can use similar code to randomize dialogue. However you need to specify all ...

Like this?

   "Rainy_Day_0": "{{i18n:{{ModId}}.Rainy_day_{{Random: {{Range:0,6}} |key=rainy_day}}}}",
    "Rainy_Day_1": "{{i18n:{{ModId}}.Rainy_day_{{Random: {{Range:0,6}} |key=rainy_day}}}}",
    "Rainy_Day_2": "{{i18n:{{ModId}}.Rainy_day_{{Random: {{Range:0,6}} |key=rainy_day}}}}",
    "Rainy_Day_3": "{{i18n:{{ModId}}.Rainy_day_{{Random: {{Range:0,6}} |key=rainy_day}}}}",
    "Rainy_Day_4": "{{i18n:{{ModId}}.Rainy_day_{{Random: {{Range:0,6}} |key=rainy_day}}}}",
    "Rainy_Day_5": "{{i18n:{{ModId}}.Rainy_day_{{Random: {{Range:0,6}} |key=rainy_day}}}}",
gray bear
#

i swear that was the case

scenic lodge
rancid temple
#

So long as they're strings of ints anyways

flat sluice
gray bear
#

i think i might be thinking of a different game

ivory plume
# flat sluice Like this? > "Rainy_Day_0": "{{i18n:{{ModId}}.Rainy_day_{{Random: {{Range...

Technically that would work, but why do you need to randomize the values if the game will already choose one at random?

So you could just do this:

"Rainy_Day_0": "{{i18n:{{ModId}}.Rainy_day0}}",
"Rainy_Day_1": "{{i18n:{{ModId}}.Rainy_day1}}",
"Rainy_Day_2": "{{i18n:{{ModId}}.Rainy_day2}}",
"Rainy_Day_3": "{{i18n:{{ModId}}.Rainy_day3}}",
"Rainy_Day_4": "{{i18n:{{ModId}}.Rainy_day4}}",
"Rainy_Day_5": "{{i18n:{{ModId}}.Rainy_day5}}",
flat sluice
flat sluice
gentle rose
#

what are you trying to optimize, by the way? like your own mod, or the base game marriage dialogues?

#

and in what sense do you mean "optimize"

flat sluice
flat sluice
#

So from 6 to 1, in this case.

gentle rose
#

that's not really necessary and very rarely a good idea to be doing too much off ngl. Sometimes it's better to have the 6 readable, simple lines

rancid temple
#

Keys-wise you can't really reduce it, you could reduce your number of actual i18n lines SMCKekLmaoDog

flat sluice
#

Yeah, I guess you both are right.

scenic lodge
#

So can anyone help debugging that bash script ?

gentle rose
#

I'm not on my linux machine rn, sorry

scenic lodge
#

no worries

flat sluice
#

Didn't mean to.

ivory plume
# flat sluice Wouldn't I achieve even better randomization with the code I suggested? Or am I ...

If the number of available dialogues matches the number of Rainy_Day_x keys, it's technically less random since your randomization may result in duplicates like this:

"Rainy_Day_0": "{{i18n:{{ModId}}.Rainy_day5}}",
"Rainy_Day_1": "{{i18n:{{ModId}}.Rainy_day1}}",
"Rainy_Day_2": "{{i18n:{{ModId}}.Rainy_day4}}",
"Rainy_Day_3": "{{i18n:{{ModId}}.Rainy_day4}}",
"Rainy_Day_4": "{{i18n:{{ModId}}.Rainy_day3}}",
"Rainy_Day_5": "{{i18n:{{ModId}}.Rainy_day5}}",

Where the distribution looks something like:

  • 5: 33%
  • 4: 33%
  • 3: 16%
  • 2: 0%
  • 1: 16%
  • 0: 0%

There's a way around that using synced keys if you really want to do it (e.g. because you want more than six possible dialogues), but if the number of dialogues is the same then it's both simpler and more random to use the base game's randomization directly.

scenic lodge
flat sluice
ivory plume
#

No worries! The channel is here to ask questions.

flat sluice
ivory plume
gentle rose
#

(pathos, when you have a minute/are back from vacation, is there any chance I could have access to the repos?)

scenic lodge
ivory plume
tight rivet
#

done converting and fixing the sheet. Time to see if this worked

tight rivet
#

.. it didn't

#

This is weird:

#

Lookup Anything

#

... I'm very confused

ivory plume
#

What specifically is the issue?

tight rivet
#

why is the sprite index suddendly 0.

ivory plume
#

If you run patch export Data/Objects in the SMAPI console window, is the sprite index correct in the exported file? Is the item showing the 🚫 sprite in-game? How are you spawning that item currently?

fervent horizon
#

Hey @ivory plume, just curious if you ever got a chance to look at that slime hutch limit pull request I submitted.

ivory plume
#

The one for ChroniclerCherry's repo? Not yet; I'm slowly catching up on messages for my own mods, but I'll be working on Cherry's mods once I'm done with those.

tight rivet
#

the sprite index is correct on the exported file. They were spawned by harvesting from a fruit tree

#

Let me check a manual spawn via player_add

ivory plume
#

If you have CJB Item Spawner, you can also try searching in its menu. That way you're sure the ID is correct (though it seems to be since the context tags are there).

tight rivet
#

.. huh

#

player_add spawns it correctly

ivory plume
#

What does your fruit tree's fruit entry look like?

tight rivet
#
 "KAYA.KoreaBlossomCP_WhiteMagnoliaTree": {
    "PlantableLocationRules": null,
    "DisplayName": "(no translation:WhiteMagnoliaTreeName)",
    "Seasons": null,
    "Fruit": [
      {
        "Season": null,
        "Chance": 1.0,
        "Condition": null,
        "Id": "KAYA.KoreaBlossomCP_WhiteMagnolia",
        "ItemId": "KAYA.KoreaBlossomCP_WhiteMagnolia",
        "RandomItemId": null,
        "MaxItems": null,
        "MinStack": -1,
        "MaxStack": -1,
        "Quality": -1,
        "ObjectInternalName": null,
        "ObjectDisplayName": null,
        "ObjectColor": null,
        "ToolUpgradeLevel": -1,
        "IsRecipe": false,
        "StackModifiers": null,
        "StackModifierMode": "Stack",
        "QualityModifiers": null,
        "QualityModifierMode": "Stack",
        "ModData": null,
        "PerItemCondition": null
      }
    ],
    "Texture": "Mods/KAYA.KoreaBlossomCP/FruitTrees",
    "TextureSpriteRow": 2,
    "CustomFields": null
  },
#

(time to fix that too)

#

I wonder

#

i'm going to save and quit and see if that fixes it

drowsy pewter
# tight rivet Lookup Anything

If a spawned item (such as one hanging out on a tree) errors out and turns into an error item, even if you correct the data/item later, that item will have lots its spriteindex and be set to 0

#

so it has to be a fresh item

tight rivet
#

that might have been it

#

becuase I had it as JA before I converted it

ivory plume
#

Is that the exported data, or what it looks like in the content pack?

tight rivet
#

exported

tender bloom
#

JA will attempt to convert stuff, but only if you keep the JA pack installed

#

(If you remove the JA pack they turn into error items—they should remember their names)

tough crater
#

Does <season>_<dayOfMonth> take priority over <season>_<dayOfWeek>?

brittle ledge
#

Should, yes

tough crater
#

For some reason, it isn't for me?

brittle ledge
#

[[Modding:Dialogue]]

tough crater
#

I'm using dynamic tokens in the code for those so that might be making ir difficult for the game to understand? I'm still messing around

brittle ledge
#

Hmm actually it doesn't mention order in there. Maybe I'm thinking of marriage dialogue thonk

#

@ivory plume Do you know if there's a set order dialogue keys are prioritized in? I don't see it mentioned on the wiki (but maybe I just can't read)

rigid musk
#

i thought the precedence was set in the order it shows up on the table there

rigid oriole
#

i believe the wiki lists it top-down in order of priority

rigid musk
#

^

rigid oriole
#

i've been looking in the related code a bit recently and it seems to match up

rigid musk
#

like going down this list

tight rivet
#

Which hey, I cna move on to the next "huh" why is this not sellable to the bin

#

to docuemntation1

rigid musk
#

with schedules - if I wanted to make it so a villager moved around/paced like harvey how would I go about doing that

tough crater
#

For whatever reason, my "<season>_18" dialogue gets overruled by "<season>_Thu"

rigid musk
#

Huh that is weird

round dock
#

I’ve always been under the belief that it does take precedence over season_dayOfWeek tbh

rigid musk
#

im pretty sure the season_day should take precedence over season_dayofweek since one is more specific than the other (itd make sense)

#

so its weird that it's just like... no you cant have this

brittle ledge
rigid musk
#

especially for something like how day-before-festival dialogue works (iirc it's literally just specifically using the season_day format for the day before the festival)

#

(thats how i did it with my dialogue anyways - i havent actually officially tested any of it)

round dock
#

That’s how I do my dialogue as well, in case I want something season and day specific, I expect the latter to take precedence

rigid musk
#

i say any - ive not tested specific date dialogue

uncut viper
#

NPC.tryToRetrieveDialogue() seems to indicate that dayOfMonth is checked before day name

#

with season-specific dialogue having priority first ofc

tough crater
#

It's probably something to do with conditions in my dialogue

rigid musk
#

i just did a quick test with my dialogue and i think it has to be

#

my date specific dialogue overwrites the general weekly dialogue

merry summit
#

Hi I have a question! I’m messing with my custom farm map and the different areas have different types of fish by location (mountain, ocean, river). I’m hoping to get it so custom fish added to these locations by mods are added to the farm but it’s not working. The custom fish show up in say the ocean but my farm’s ocean is entirely vanilla fish. Does anyone have any idea how I can get the edited location data added to my farm?

#

It was working before but I switched computers and now it’s all vanilla fish I have no idea what’s messing with it

latent mauve
rigid musk
#

I dont know how I didnt register that thank you

#

I was looking through the schedule wiki and was confused because I couldnt find that (i saw it in harvey's schedule but apparently im a bit blind when it comes to the wiki)

tight rivet
#

If I'm reading this right, I need to include "Type": "Objects" for things to actually sell through the bin, right?

drowsy pewter
#

That's not a type

#

it does have to have a type though

#

for objects I believe most of them are Type Basic

#

The vanilla types are: Basic, Arch (artifact), Litter (e.g. debris), Minerals, Quest, Crafting, Fish, Cooking, Seeds, Ring, interactive, and some placeholder values like asdf.

rancid temple
#

What are you trying to make sellable through the bin

tight rivet
#

Yeah, I just .. realized that

#

I uh..

#

forgot types on everything

#

woops!

#

opens up Notepad++ and Notepad3 again

gentle rose
#

Does anyone know where in the contents folder the string asset Strings\\Locations:Desert_Return_Yes is? I can't seem to find it

rancid temple
#

Er, Content > Strings > Locations, line 74 for me

gentle rose
#

ty, apparently notepad's find in file function isn't working for some reason 💀

rancid temple
#

I suggest a less bad program

gentle rose
#

I usually use vscode

#

but it opened in notepad and I was lazy

rancid temple
#

I got tired of getting flashbanged by my Notepad++ not saving my theme so I uninstalled it

rigid musk
#

yeahh it got rid of mine when i updated it and i was very upset ... i redid it because i dont want to learn another program right now but it was very upsetting

#

my pretty colors :(

rancid temple
#

I probably had extra settings stored somewhere from installing it weirdly, but I was really only using it for notes at this point

gentle rose
#

all this searching for how the game handles the bus stop payment only to find out that it's this Game1.player.Money -= this.TicketPrice;

I could have figured that out myself...

rancid temple
#

Sometimes it worked fine and depending on how I opened something, sometimes I was greeted by the full power of the sun

#

Yeah the bus stop is hilariously hardcoded

#

Yet another project I was gonna deal with but dunno if I'll ever circle back on

gentle rose
#

also just to clarify, I wasn't talking about notepad++, I was talking about notepad. Like the og that comes bundled with windows SBVLmaoDog

rancid temple
#

Ohhh

#

Ew

uncut viper
#

if you break my bus transpiler its on sight /j

rigid musk
#

i use notepad as a way to ... well literally keep notes. like sticky notes on my desktop :3

#

the blinding white is a bit annoying though

ivory plume
rancid temple
# uncut viper if you break my bus transpiler its on sight /j

At this point I don't even remember what my plan was lmao, something something custom dialogue box, keep using the logic for boarding the bus and watching the drive off animation, hijack warping and then create some new system for setting up bus stops elsewhere

#

All I have is the vague points now though

wanton pebble
#

Does anyone know if zero schedules would cause voidwalking?

uncut viper
#

im pretty sure i transpiled into an if statement or two in there so you'd probably break it but i wouldnt blame you

rancid temple
#

Is this transpiler for making the bus self drivable?

uncut viper
#

it is!

#

but only if you meet a requirement

wanton pebble
#

I've got a weird interaction with PoaSB that's causing a Sandy schedule in it (only with SVE, mind, since Sandy doesn't leave her shop if no SVE) to cause Sandy to walk on the farm somehow - apparently SVE doesn't directly edit that day, yet somehow she's on the player's farm at the falls

rancid temple
#

Only issue I know for zero schedules is the NPC duplication

#

I can't think of what PoaSB is

wanton pebble
#

Part of a Saloon Breakfast

ivory plume
#

(The decompiled game repo now includes 1.6.9-15, thanks to @rancid musk!)

wanton pebble
#

Saturday

rancid temple
#

SVE only adds Saturday schedules to Sandy as far as I can tell

#

Though none of them seem to put her anywhere near the farm, so now sure how she's getting there

#

I know you can cause NPC's to warp and screw up their pathfinding in one fell swoop by putting a schedule end point on a warp

calm nebula
#

Do they have any thing editing the busstop

#

At all

wanton pebble
#

I have the log

#

but somehow I didn't check the busstop

#

one mo

#

blinks

hard fern
#

Uh oh?

wanton pebble
#

that's the wrong thing

#

one sec

#
17:43:04    TRACE    SMAPI    Content Patcher edited Maps/BusStop (for the 'Stardew Valley Expanded' content pack).
17:43:04    TRACE    SMAPI    Content Patcher edited Maps/BusStop (for the 'Ridgeside Village (Content Patcher component)' content pack).
17:43:04    TRACE    SMAPI    Content Patcher edited Maps/BusStop (for the 'Frontier Farm' content pack).
#

Just SVE, RSV, and Frontier, so nothing major

hard fern
#

Hm, but those should all be compatible with each other?

wanton pebble
#

Yep

ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Pro, with 38 C# mods and 22 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

wanton pebble
#

I see the Vortex deployment thing, so it might be Vortex screwing stuff up

gentle rose
#

nvm I am dumb and need to sleep

#

but why is event lookup loading a _international version of every asset

teal bridge
#

It's just how the content pipeline works. First it tries locale, then language, then international, then default.

calm nebula
#

SvE in thr past had replaces for translation

tight rivet
#

Hm. In fun times: ""Id": "KAYA.KoreaBlossomCP_SpringSeeds",
"ItemId": "ALL_ITEMS (O)"," is not working

#

turns game offa nd back on again

#

I feel sometimes Cornucopia was not the best method and I should have iterated through each item ID

#

... hm

#

Yeah, I'm just going to specify the items directly.

#

angrish noises

#

(I don't know how to test the GSQ itself, or I'd just do that)

ivory plume
#

You can run debug iq ALL_ITEMS (O) in the SMAPI console window to test an item query, and debug gq GAME_QUERY_HERE to test a game state query.

tight rivet
#

ah, will do, thanks!

#

That.. would explain why it's not working.

#

... oh.

#

I think I know what's wrong.

#

Wait, no, the GSQ shouldn't be failing that way.

#

But I'll check

#

.. hm. I'll just chunk up the json so I can ask for help I think.

uncut viper
#

you need commas between your queries

#

as is its looking for items that have every ccontext tag listed, including the !ITEM_CONTEXT_TAG tag and the Target context tag

#

since without the comma its all part of the first ITEM_CONTEXT_TAG query

tight rivet
#

ah

#

... that woudl explain it

#

thanks

ivory plume
#

My new favorite support question on a mod page:

@ pathoschild why can't I use it?

(That's all the info provided.)

tight rivet
#

We all know you have a crystal ball

#

apparently

uncut viper
#

"Probably because."

hard fern
#

😭

gentle rose
#

"yes"

mighty wyvern
#

does anyone know how to change house upgrade prices using the content patcher? srry for bad english

modest dagger
#

your english was fine

uncut viper
#

you cant change those with content patcher

modest dagger
#

you can't?

uncut viper
#

do you mean the renovations?

mighty wyvern
mighty wyvern
uncut viper
#

or do you mean the upgrades that give you a kitchen and a cellar?

mighty wyvern
#

this upgrades

uncut viper
#

then yeah, those are hardcoded values

#

you would need C# to change them

mighty wyvern
#

oh ok, thanks

versed wyvern
#

blobthinking2 Brainstorming a hokey bug workaround about events I'm not super knowledgeable about here, but for events are quickQuestion commands capable of all the same forking responses and effects as the usual $q and $r commands?

uncut viper
tiny zealot
lucid iron
#

anyone know off hand where the NPC chatter code lives

#

i.e. when they have a little bubble over their head instead of full dialog box

uncut viper
#

NPC.showTextAboveHead and whatever calls it

versed wyvern
#

Hmm, okay, so it should be able to possible to replace most instances of an NPC asking you a question with a quickQuestion with the same effects

uncut viper
#

its used in 20 places per ilspy

lucid iron
#

ty btn im glad u have working ilspy bolbwawawa

uncut viper
#

it helps that i knew where to look off the bat too bc i used it for BETAS and my books mod SDVpuffersmile

lucid iron
#

wait i didnt realise the book mod used that

uncut viper
#

yeah the junimo book makes junimos on your farm into little chatterboxes

lucid iron
#

ukimasu wow

#

i had assumed its 1.6 all this time, amazing

uncut viper
#

i will take that as a great compliment

brittle pasture
#

do they demand that you pay them a wage

uncut viper
#

technically they do in a very cutesy way

#

sometimes when they harvest a crop theyll say "Is for me?"

#

the people translating it have been very good at keeping that improper cutesy grammar from what i can tell

versed wyvern
#

Oh, wait... can quickQuestion even be used outside of events?

tough crater
#

nope

versed wyvern
#

Well that nukes that option then uhrded

tough crater
#

There's another one that functions similarly in dialogue!

uncut viper
#

(im looking at the i18n files for my books mod to remember what all the junimos can say and i have no memory of this:
"Dialogue.JunimoScrap.Harvest.1": "{0}",
what is the point of this. why did i do this)

tough crater
#

$y <Question>_<Answer1>_<NPCAnswer1>_<Answer2>_<NPCAnswer2>

versed wyvern
#

Ah, I saw that but it specified it can't be used for friendship changes

#

Thanks for the info though y'all anisoftbongo

lucid iron
#

what does textAboveHeadStyle do

uncut viper
#

i feel like when i was testing it it did nothing

#

theres no instance in the game of it being anything other than 2

#

though, apparently setting it to 0 i think makes it bob up and down?

#
Vector2 local = Game1.GlobalToLocal(new Vector2(standingPixel.X, (float)standingPixel.Y - 128f + (float)base.yJumpOffset));
if (base.textAboveHeadStyle == 0)
{
  local += new Vector2(Game1.random.Next(-1, 2), Game1.random.Next(-1, 2));
}
tiny zealot
#

i would guess that's a shake effect if this is in the draw stack somewhere

uncut viper
#

this is the only way textAboveHeadStyle is ever read and its 0 in both cases, one for Junimos and one for NPC in general

#

so i dont know why normal style is 2

#

it is in drawAboveAlwaysFrontLayer

tiny zealot
#

ok yeah so that would make it jitter around every frame

uncut viper
#

maybe when i tested it i only tried 1, thinking that there would be different things for every number 0-2 instead of skipping 1 for no reason. what a dumb assumption for me to make

lucid iron
#

just sdv things

tight rivet
#

Today in: Maybe I shouldn't have done this: the seeds wont plant. c.c

#

category is -74, type is "Seeds"

#

to the documentation!

rancid temple
#

Is your Data/Crops patch correct?

tight rivet
#

.. hm.

#

That's a good question. 🤔

#

Answer: No.

uncut viper
rancid temple
#

Haley does seem like the right person for this level of excitement

uncut viper
#

it was a nice little coincidence too bc i didnt know what colour itd be before i hit record, i typed in a random hex code

tight rivet
#

That is neat

#

hm. Okay, I can't actualyl figure out what's wrong. Patch/reloading does not appear to make it appear, so I'm going to also check to make sure the file is being included

#

That was the culprit. :V

#

the crops was the wrong format too, so I guess this was a good way to find out!

velvet narwhal
uncut viper
#

this is an old BETAS feature

#

but the jittering is new

velvet narwhal
#

the colored text?

uncut viper
#

yeah it could always do that

#

that answers my next question though i was about to ask if you used it

#

bc i wanna change the order of the parameters SDVpufferpensive

velvet narwhal
#

oh well i am main shill and yet i haven't touched any other functions

#

tbh you can do whatever you want at this point since i announced the retirement of the big boy mod that's dependent on it KEK

uncut viper
#

i will commit a "do as i say not as i do" now then and change the order to make sure Colour still goes last

tight rivet
#

hey, some of the crops are working now. Progress! 😄

velvet narwhal
#

it didn't even get to live a year smh i now see why there weren't other dialogue expansions in english before me SDVpufferpensive

teal bridge
rancid temple
#

I knew a few people in school who were so bubbly that if they had speech bubbles they would vibrate

teal bridge
#

Shivering in terror.

rocky anchor
#

Hey crew, I changed my season in-game using world_setseason, but after I triggered an event for testing, I checked the SMAPI console for patch settings and it looks like Content Patcher didn't consider the season changed?

#

Is that expected?

vernal crest
#

Did you sleep in game after changing the season?

rocky anchor
#

Nup

#

That make sense though, thanks

tight rivet
#

Hm. I'll go through seeds one more time but some of the crops aren't appearing

#

the assets exist, the data/crops shows they point to the right as set..

#

Oh. Wait

#

I bet it's something simple like they should be two crops wide not one. c.c

#

..yep

#

I'll go fix my spritesheet lol

tiny zealot
vernal crest
#

Dangit I forgot how I blanked out Lewis's dialogue

old edge
#

So far got everything working with solid foundations and my C# code appears to be functioning correctly.

#

Now I need ideas for skins for my cellar

#

Skins for the doors that open and close

#

The fun part

#

So far I got dreamy with one cloud and some stars and a swirl

vernal crest
#

Okay I tested this myself and got the same problem, in that using "Rainy_Day_{{Random:{{Range:0,4}}}}" (there is no Rainy_Day_5 by the way, at least according to the wiki) generated one key per day (Rainy_Day_4 on the first day I tested and Rainy_Day_1 the second). If the game doesn't happen to pick that key to use that day, it pulls the generic Rainy_Day_X line from Characters/Dialogue/MarriageDialogue instead.

I can see that Pathos already weighed in on this and gave you the answer that you do need one of each key so I guess my testing was totally unnecessary but I did have fun so oh well haha

dim yew
#

When an event command asks for a “layer” field, how do you write the map layer? Is it just a plain string or do you have to specify something else? I’m trying to put an object on a table in an event and it’s not showing up 😰

#

Me relearning how to mod every 4 months:

velvet narwhal
#

what command are you talking about

#

changeMapTile?

#

addToTable <x> <y> <object ID>
addProp <prop index> <x> <y> [solid width] [solid height] [display height]
addFloorProp <prop index> <x> <y> [solid width] [solid height] [display height]
thonk if you're adding something you'd probably just use the addtotable command

dim yew
#

I was using addobject in an event to add something from springobjects

#

I’m pretty sure addtotable is like, not used ever haha

velvet narwhal
#

thonk layer probably means the layer you mean to put it on as if you're in the tmx, so Buildings/Back/Front?

#

but it's also optional since it's [layer]

dim yew
#

I put AlwaysFront but it’s not showing so either I got something else wrong or the layer needs to be an integer or something idk

uncut viper
#

its actually layer depth and not a layer

#

so its a float

velvet narwhal
#

euh

#

player is at what, 1f?

uncut viper
#

i dont really understand layer depths

#

so idk. bigger = more on top ig maybe fuck if i know

calm nebula
#

It's the y coordinate divided by 10,000

#

1f is the front lol

uncut viper
#

y coordinate multiplied by 64

calm nebula
#

Y coordinate in pixel space

dim yew
#

Damn 😭

#

Okay so how do I push the springobject to the front if it’s the layer depth and not the map layer

uncut viper
#

make it 1 i suppose

dim yew
#

All im tryna do is put a pizza on a counter LOL

lucid iron
uncut viper
#

i approve of this

#

navi trinket...

lucid iron
#

fear

uncut viper
#

i think it would be cute

velvet narwhal
#

need audio cue

#

will record myself for you

uncut viper
#

how conditional can i make the dialogue

lucid iron
#

well i supported sound since 1.0.0

#

rn the dialogue works by activation on ability

#

which can take GSQ

uncut viper
#

hmm

lucid iron
#

this test one has the "footstep" proc so it shows whenever i walk

uncut viper
#

could i have a trinket whose ability is to do nothing but activates when you ge close to an enemy to say "hey watch out!"

lucid iron
#

no particular cond

#

u can make it do 1 damage

uncut viper
#

assuming i have a GSQ for detecting proximity to an enemy

lucid iron
#

and so it'll proc when its close enough

uncut viper
#

why not 0

#

can i make the projectile invisible

lucid iron
#

i think i explictly banned that

uncut viper
#

no fun SDVpufferpensive /lh

lucid iron
#

the ability i speak of is hitscan

#

which is u know, do damage directly

#

no projectile to begin with

uncut viper
#

fair

lucid iron
#

ig u can have it do 10ms stun or smth instead

uncut viper
#

i am taking this under consideration

velvet narwhal
#

tbh i did think about it

#

and that one person who wanted to make the master sword from zoldo could probably make it a trinket trinker

uncut viper
#

i still need to get to my other trinker tinket idea

lucid iron
#

hng multiplayer testing

#

hnnnnnnng docs

#

why can i just ship things

uncut viper
#

oh yeah i think theres no chance of automatic syncing of textabovehead

#

so good luck

lucid iron
uncut viper
#

on the bright side, its very simplp- huh

#

intriguing

lucid iron
#

oh dw trinkets arent even npcs to begin with

uncut viper
#

it managed to completely stop my train of thought in its tracks

lucid iron
#

so i just made my own thing to call SpriteText.drawStringWithScrollCenteredAt

#

im surprised u dont know about the ship it squirrel

uncut viper
#

do i want to know why this surprises you

lucid iron
#

its a emote on github iirc

uncut viper
#

"emote on github" as a sentence/concept itself makes absolutely no sense to me

lucid iron
#

im sorry for derailing ur train of thought i hope u can put it back

uncut viper
#

no its gone now its fine

#

i think its irrelevant after u said you were calling drawstringwhatever yourself anyway

lucid iron
#

this does mean i didnt implement the shake monS

calm nebula
uncut viper
#

im putting in a feature request for the shake right now

gaunt orbit
lucid iron
hard fern
#

Oh my

lucid iron
#

i did this cus it occur to me that i am make bootleg npc adventures here kasumidetect

#

so the companions ought to be able to talk

uncut viper
#

can i give them gifts

lucid iron
#

no i aint touching that

#

cus again, companions arent npc

rancid temple
#

But what about powering them up with different food buffs

uncut viper
#

they dont need to be NPC for you to handle right clicking them with a gift

rancid temple
#

Feeding them different things every day to change their IVs and EVs

uncut viper
#

i would like to give my trinkets gift tastes please

lucid iron
#

yea but how is this control suposed to work in gamepad kasumidetect

uncut viper
#

same way it works for NPCs id assume

lucid iron
#

u cant walk into a companion, not easily anyhow

uncut viper
#

check for a gamepad button press

#

gamepads also can use a cursor

lucid iron
#

that sounds very annoying

rancid temple
#

Make a menu

tiny zealot
rancid temple
#

Where you can feed and customize your companion

uncut viper
#

while you're at it can you just let me have a pokemon style 6 trinket team

lucid iron
#

but anyways i suppose u can do some funny stuff with item use trigger proc + action to achieve gifting

uncut viper
#

that i can give items

#

and level up

dim yew
#

Have any total conversion mods been released for SDV thus far? (Also hi ichor!!!!)

lucid iron
#

and they can have a little animation proc'd on "receiving" the gift

uncut viper
#

i dont think you'd be able to remove the item

#

unless you hardcoded specific gifts

lucid iron
#

you would consume the item PecoWant

tiny zealot
#

squiddonaut! hello!

dim yew
#

Hiiii!!!

uncut viper
#

how would you handle the consumption part

lucid iron
#

although, there's no stateful things on trinkets besides the level and the variant

tiny zealot
lucid iron
#

so yea its just not designed as a character to interact with, and thus has no real system to support any of that

dim yew
#

Me wishfully thinking about a total conversion mod where you grow human crops on a colonized alien planet 🙈

lucid iron
#

the "bootleg npc adventure" is more like, u would interact with the npc form of a character

#

until they give u their trinket that u can take into caves or whatever

#

theres gotta be sdv in space right

uncut viper
#

whats Haley's trinket

dim yew
#

DON’T JAIL ME my ambition knows no bounds, I will break out of prison 😈

lucid iron
#

casey has that moon mod

#

but it's supposed to be a expansion not conversion

tiny zealot
uncut viper
#

... a car?

tiny zealot
#

a little case with a mirror for holding makeup stuff

uncut viper
#

oh. i didnt know those were called compacts

#

i would make it something to do with photography personally

#

a camera trinket that stuns enemies with its flash would be cute

tiny zealot
#

ice rod at home

finite sequoia
#

Void I just want u to know. You saved my ass here and you should be very proud of urself 😇

uncut viper
#

wouldnt it be better since it doesnt have to hit anything

lucid iron
#

it could be better than ice rod if its hit scan

#

cus its light speed

uncut viper
#

and room wide

tiny zealot
#

true. ice rod also prevents knockback which is insanely good

lucid iron
#

haley reaping the souls of slimes with her camera

velvet narwhal
#

trinket trinker trying to be the main framework i'm depending on for my "with the power of all of my friends, die" event thonk

lucid iron
#

why would u use it for that

#

u only got 1 slot

velvet narwhal
#

so i don't have to animate the npcs during the fight

uncut viper
#

only got one slot with vanilla

lucid iron
velvet narwhal
#

can i false equip it thinkspin

uncut viper
#

craft one of every trinket into the ultimate friendship trinket that does all of their effects and has multiple things following you at once

lucid iron
#

i mean i suppose u can hard reference me to take my anim systems

#

but like, why tho.

uncut viper
#

terraria style crafting tree

lucid iron
#

just do like purseowner eye cutins or some shit

uncut viper
#

i do think the idea of the NPCs giving you a special them trinket is very cute though im gonna do that for my NPC

lucid iron
#

it'll be cool PecoSmile

velvet narwhal
tiny zealot
#

one day i will work on the snorlax trinket so i can bring my big friend with me

uncut viper
#

i think everyone with an NPC should

#

cough

velvet narwhal
#

i don't think the forge would let me put in 30 trinkets, nor would my brain be able to wrap around the configuration of how to put all 30 into 1

lucid iron
#

re fake equipping it though, i suspect it's not actually that bad

uncut viper
#

oh i was thinking regular crafting

velvet narwhal
#

oh

lucid iron
#

Game1.player.trinketItems is a list

velvet narwhal
#

i think the stupid ui will cut me off

lucid iron
#

ur in C# so just shove fake things in there

#

and yeet them once u be out da fight

#

but as mentioned b4 i havent rly made attempt to make multiple companions make sense

#

the'd prob just stack on the same spot

#

civ 4

uncut viper
#

could add some random offset to their angle based on their index in trinketItems

lucid iron
#

one day i'll give companions real collision mayhaps

#

but then i will become the thing i always hated in vidya, party members stuck on walls

uncut viper
#

that would be strange i think isnt real collision the exception

#

like just villagers and maybe the horse but im not sure about the horse

lucid iron
#

oh i mean, companions r currently just intangible

#

they zip where they want and i was like this is fine

uncut viper
#

that also seems fine to me tbh

lucid iron
#

its a lil weird for companions that seem like they'd be "grounded"

uncut viper
#

does the vanilla frog have collision?

lucid iron
#

not that i know of?

#

really it's only wacky bc trinket tinker companions have the ability to chase things

#

so sometimes a foraging companion would just phase through a cliff bc they detected horseradish

uncut viper
#

do you actually have them pathfind or do they just beeline in screen space

lucid iron
#

they just zoom yea no path find

#

it was fairly low on the list of "thing to make work" compared to just making sure it doesnt explode multiplayer

#

so yes eventually make some path find algo, would prob have to be a custom non grid based one

uncut viper
#

what would it be if not grid based

lucid iron
#

the player is not grid based

uncut viper
#

i dont think the player uses a pathfinder

lucid iron
#

companions are, for most purposes, an extension of the player

#

and therefore i need a non grid based path finder

#

cant just yoink the npc one

uncut viper
#

well

#

why not

lucid iron
#

design choices + players like walking diag

uncut viper
#

but you could pathfind from the players point using the games pathfinder

lucid iron
#

i feel it'd be a lil jank think

uncut viper
#

or maybe easier, reverse pathfind from the monster to the player

#

and have the trinket follow it backwards

lucid iron
#

to suddenly be grid obeying

uncut viper
#

i just wasnt sure how else you'd detect where the walls are

lucid iron
#

but well, atm i just dont want to do it™️

#

it seems like a lot of effort for a small thing

uncut viper
#

thats like my entire modding career

lucid iron
#

theres other small things of lesser effort and perhaps greater reward

brittle ledge
dim yew
#

Its almost done

#

;)

brittle ledge
#

are the i18n keys for configs in the CP docs?

uncut viper
velvet narwhal
uncut viper
#

you can also just use normal i18n for em too though if you forget

deep cypress
#

I reckon there was a new update today?

latent mauve
#

Malon's Epona heart event is officially complete and working!

lucid iron
latent mauve
#

The only thing that would improve my heart event is if I can figure out how to make it look like the horse is eating a carrot

lucid iron
#

can u use the hons anim as it is

brittle ledge
#

if the horse is a temp actor, just draw some frames of it eating and do an animation

latent mauve
#

I can use the animations, but the carrot animation is just the face, so it's weird

#

Yeah, I think I'd have to add animation frames with the face attached to the full horse sprite

tiny zealot
#

hons

uncut viper
#

hons homf

velvet narwhal
#

god i hope iro internally called that lizard : horse something cursed like limzard

teal bridge
#

Hozard? Lizarse?

velvet narwhal
brittle ledge
#

no json validation, we die like warriors

latent mauve
#

As a bonus, I can now use a condition for the stable mail that's directly related to having seen the event, so that's nice.

brittle ledge
brittle ledge
#

!choose release mod tomorrow, fuck it we ball

#

oh ffs

#

is it .choose

#

.choose release mod tomorrow, fuck it we ball

patent lanceBOT
#

Choose result: fuck it we ball

brittle ledge
#

OKAY

shut edge
#

do we have to do anything special to add our own context tags or is it just throw it in there and it exists now?

#

like if i want to add my own context tag to items

rigid oriole
#

just throw it in there

pine ermine
#

So, I was reading the wiki trying to figure out how large eggs and large milk work, and it was kinda vague about when you can get them.
Three hours later, I have delved into the game's code and now I know a little too much about the many different ways there are to raise friendship with animals, but I still haven't found when I can get large milk and large eggs,

brittle pasture
#

FarmAnimal.dayUpdate
there's a whole formula in there determining whether you get the deluxe or regular produce

latent mauve
#

This is probably a silly question, but do tokens work inside event speak commands?

#

Specifically wondering about i18n for a name or if I need to do the full line

uncut viper
#

tokens will never be seen by the actual game itself

#

all tokens get replaced with their actual values before the game sees them

#

so they work wherever

#

with very very limited exceptions

pine ermine
#

You can use tokens anywhere inside event code.

pine ermine
brittle pasture
#

yes, animal data (I linked it above)

pine ermine
#

which makes sense tbh

#

apparently you can get them whenever :/ (it's just very rare I bet)

rocky anchor
#

Can someone show me an example of how to have my CP mod edit the correct language-dependent sprite file (eg JunimoNote.es-ES for a Spanish game)? Or is it easier to just have it patch all of the JunimoNote files?

uncut viper
brittle pasture
#

Yes, but with zero friendship it's be like 0.0001% chance

uncut viper
#

if you really need to apply a patch specifically to one languages assets, you can use the TargetLocale field

#

but in all likelihood you dont need to do that

#

you can also just make When conditions that check the language

pine ermine
#

Doesn't the base game just localize the entire event string instead of just parts of it?

#

(more related to fire's question)

uncut viper
#

well if you're adding it with Content Patcher odds are you are not putting the entire event string into the i18n

#

so its up to you to make sure each part of it is correctly i18n'd

latent mauve
#

Honestly the next thing I am going to try to do is see if I can target a specific event command for replacement for the ones I intend to keep the same

#

So all I am updating is the names spoken

#

(looking at you, Egg Hunt "Abigail!")

uncut viper
#

if its an internal name you should be able to do that with ReplaceDelimited, depending

#

if its not an internal name then it can still be used but is not as helpful

#

bc it wont cover all languages

latent mauve
#

I am not changing internal names, no

#

Specifically only the name if it is spoken

uncut viper
#

then yeah the options would be ReplaceDelimited and manually patching differently for each language, or editing the specific field number and hoping no one messes with the order of event commands there

latent mauve
#

I feel like attempting to change internal names of vanilla NPCs is the road to terrible things happening

uncut viper
#

oh no i didnt mean that but i meant like, if a command was like /speak Haley or whatever, you could easily replace Haley with, say, Abigail

velvet narwhal
#

i don't think that's actually feasible in cp thonk

latent mauve
#

Ah, ok

velvet narwhal
#

the changing their internal names* i mean

latent mauve
#

Yeah, I am going to manually change who is in an event rather than trying to use replace delimited for that

velvet narwhal
#

unless you mean nulling their data/character, then that's just chaos SDVpuffersmile

uncut viper
#

you can change their internal names, if you count deleting the original

#

(10 out of 10 doctors agree thats a terrible idea though)

latent mauve
#

LOL

#

Yeah, no

pine ermine
#

I imagine that would cause so many mod incompatibility issues

velvet narwhal
#

pathos'd probably hit you with 5-6 "really"s in the "that's a bad idea" sentence

uncut viper
#

i think mod compat would be the least of your worries

latent mauve
#

Honestly at this point I am confident enough in my Custom NPC skills that I could make all of them new NPCs rather than replacements but that would require more maps.

velvet narwhal
#

the eternal struggle

uncut viper
#

if you dont wanna make them new maps, i hear someone made a really nice apartment recently for new NPCs

latent mauve
#

Future release version maybe once I get the first one out the door

#

Haha, but it's not reskinned for Zelda

#

😛

uncut viper
#

but it could be

#

the other NPCs wont question it im sure

pine ermine
#

👆

latent mauve
#

I am less than 5 portraits and 20 sprites away from finishing the art

#

I am not adding more now xD

velvet narwhal
#

i have not touched a single character sprite, i'm in a world of pain SDVpuffersmile

latent mauve
#

(I gave up on passed out Shane/Ingo portrait pose and just gave him the anime "turning green" effect instead)

#

But it works!

velvet narwhal
#

i have never looked at what ingo looks like but that's just waluigi /lh

latent mauve
#

Let's be real, Talon and Ingo were Mario/Waluigi references anyway

#

I will be glad to be done the portraits, I find the sprites way more enjoyable

#

I don't have to be quite as accurate there

#

And I don't want to jump between them because I risk losing my art style's consistency

velvet narwhal
#

except i hate thinking about leg movements of sprites

pine ermine
#

I think leg movements are one of the banes of animation in general.

#

That and obnoxiously long and flowy hair

#

Now that I've thought about it, I eagerly await the day someone creates a hair physics mod.

velvet narwhal
#

thonk wdym

velvet narwhal
pine ermine
#

huh, that is pretty good actually

#

not dynamic though :P

velvet narwhal
#

actual actual physics might, uh, be An Endeavor™️

sweet geyser
#

hello !!

hard fern
#

Hi

#

You want to make mods?

sweet geyser
#

yeah ;_;

#

im totally new at this and i looked through the links here and there

#

i want to add a new npc to marry

#

if anyone could point me to learning how to do that !

fossil osprey
#

I don't think we have a command for NPC creation?
But you could try to lookup how other mods do it, that would be a first step

hard fern
#

!npc

ocean sailBOT
#
Creating a Custom NPC

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

hard fern
#

We do!

sweet geyser
#

tysm !!!

nimble marlin
#

Guys, I was working on a mod for the last few months but I saw that a few days ago a mod that does the same thing was posted on Nexus. Should I discontinue my mod? I'm not sure if it would be bad If I posted a mod that is basically the same thing as another mod that was already posted

gray bear
#

!twocakes

ocean sailBOT
#

If you discover that someone has made or is making a mod with a similar concept to yours, don't stress! Our community promotes the idea of "two cakes", where two versions of the same idea can peacefully co-exist. Your mod will have your own unique stamp on it that makes it special.

gray bear
#

Having a mod thats similar to another isnt a crime pat

fossil osprey
sweet geyser
#

can i just write down a manifest json in any notes app??

modest dagger
fossil osprey
brave fable
#

if you can do the exact same thing with even less effort that sounds like a win

sweet geyser
fossil osprey
#

Just notepad is enough (or gedit depending on your OS)

sweet geyser
hard fern
#

tbh, notepad isnt the best

sweet geyser
#

i googled and apparently notepad++ is what was recommended

modest dagger
#

go with that

uncut viper
#

if you use notepad (not recommended) you have to make sure you save it as All Files and manually name it .json

sweet geyser
uncut viper
#

Notepad++ or VSCode are the usuals here

sweet geyser
nimble marlin
sweet geyser
#

thank you !!!

sweet geyser
# ocean sail

about fireredlily's npc builder, what exactly do i do with it? is it code??

#

sorry for the trouble !!

velvet narwhal
#

Technically you should read cp docs first otherwise you'll be lost in the sauce

#

!cp

ocean sailBOT
velvet narwhal
#

Remind me in 17 hours to combine the sandwich analogy and buttons json toy into a command

patent lanceBOT
#

don't you have like a cell phone or something aviroen? it can do the same gosh darn thing and then I can be lazy. but okay, I'm on it. (#6463871) (17h | <t:1736390609>)

uncut viper
velvet narwhal
#

Sandwich analogy it is (on its own)

#

Actually I can probably do uhh

#

.remove timer 6463871

patent lanceBOT
#

Restricted to server owner. (use .timer remove if you're just trying to remove your own timers)

velvet narwhal
#

.timer remove 6463871

patent lanceBOT
#

Timer removed.

sweet geyser
#

i didnt realise how much new stuff id have to learn ;00

#

its fun though

sweet geyser
#

does anyone use stardewxnbhack??

vernal crest
rancid temple
#

It's the go-to for general unpacking, unxwb is used for unpacking the audio files

sweet geyser
#

oh okay thank you

#

i wanted to ask, i have my stardew application in the desktop folder,, so do i download the stardewxnbhack in there?? my game folder doesnt have the application file in it

wispy bramble
#

It should go in the same place your Content folder is

sweet geyser
#

oh okie thank you !!

brittle ledge
sweet geyser
#

do mod creators do joint projects T_T

lucid iron
#

Some people do

sweet geyser
#

cool

lucid iron
#

Though it's more common to see people just commission stuff

sweet geyser
#

ooh we can dothat

unique sigil
sweet geyser
#

hmm commissioning sounds nice but i want to work on it myself too

#

im not opposed to learning the complicated stuff

unique sigil
#

!commissions if you want the list of eligible mod authors

ocean sailBOT
sweet geyser
#

but having a partner who does it with me would be nice

sweet geyser
lucid iron
#

It's just whether u want to pay other ppl to do bits u don't or can't do yourself

sweet geyser
#

yeah thats def gonna be helpful

unique sigil
unique sigil
#

or if you're not active/known in the community!

sweet geyser
#

well, ill just learn as i go and hopefully i can make something

unique sigil
#

!anyonecancook

ocean sailBOT
#
lucid iron
#

Rmbr dont scope creep urself

sweet geyser
#

pixel art is fun so yay for that

lucid iron
#

(lies the scope creep is eternal)

sweet geyser
#

hehe thanks !!

unique sigil
#

many frameworks out there have good guides, the modding wiki is pretty thorough, and content patcher can do a LOT

lucid iron
#

What do you want to make anyway

unique sigil
#

you just have to find what you want to make and the motivation to complete your projects

sweet geyser
#

im sure i can figure it out given enough time

unique sigil
#

and the willingness to learn new stuff along the way, of course

#

if it's art feel free to share WIPs and ask for input in #making-mods-art , and ask around here for other technical details!

sweet geyser
#

tyttyyy

#

^_^

oblique meadow
#

Im a little late to the party, but be ready to hit some walls at first. Though this channel is pretty good for help (provided you've done your due dilligence first 😉 )

drowsy pewter
#

You should nake sure to share your crash log if you mention a crash

oblique meadow
#

Yeah. I just was thinking that.... I'll have to re-ask when im home and have it :p

brittle ledge
sweet geyser
gaunt orbit
#

Yes, my advice is start small and make something you actually want to use in the game

sweet geyser
#

oh you made jorts and jean??

#

i loved that mod ^_^ it was so fun

gaunt orbit
sweet geyser
oblique meadow
#

Dont do what I did and start with something complicated that makes you really mad a lot hahaha

gaunt orbit
#

My first few mods were just cp ports of xnb mods. My first original work was a custom greenhouse interior

sweet geyser
#

oooh i see

#

thats v cool imo

oblique meadow
#

I started with a farmhouse. Not recommended :p

gaunt orbit
#

Yeah farmhouse is a bit complicated

sweet geyser
gaunt orbit
#

Not hard but there's a lot of fiddly bits

sweet geyser
#

oo i see

oblique meadow
oblique meadow
#

Can I ask a dumb question? What's the benefit of using FTM instead of manually coding the stuff into your content file? Is it more convenience than anything? Or is there a perk to it im missing

drowsy pewter
#

FTM has extra features that cant be accomplished with CP mods alone

#

It depends on what specifically you want to do

oblique meadow
#

I understand that. I guess... Im not sure what those features are. Maybe I need to play with it more to understand it better.

tawny ore
#

One way to think about it is that CP only aims to replicate vanilla behaviors using the data formats that vanilla recognizes. The main thing it does beyond that is it also has a very powerful token system.
Other mods go beyond vanilla. They can implement behaviors that vanilla does not support through its data models.

#

That's not a very specific answer, but how frameworks go "beyond vanilla" varies depending on it. And FTM has too many things to list, so it's worth researching what those all are.

oblique meadow
#

Its really feeling like its one of those "It does a lot, and you wont really know WHAT it can do until you need it to do it" type situations

lucid iron
#

There's also that big ol flowchart Elizabeth is making but my point is that idea come first impl later

oblique meadow
#

Oh I know. I already have a farm made. Was just debating if I should change up some of the hardcoded content and swap it to FTM. So it was something that seemed like a small question that is bigger than I realized. So im going to do some more research and such

lucid iron
#

Fwiw ftm is ubiquitous enough that most people won't care if it's a dependency

#

The 1.6 location data does have some spawn changing features though

#

But u r fight vanilla spawns for chance

tropic stag
#

I'm super new to making stardew mods. I already know a lot of C so have been busy working with C# but now I'm seeing it might be hard to do everything in C#. Is it a problem if I also use content patches? Will players have a harder time installing my mod if I have both C# files and content patches?

rigid oriole
#

Lots of mods have both a C# and a content patcher portion! I'd recommend publishing both parts of the mod under the same nexus page (typo said same mod id: they need to have unique ids because SMAPI loads them as separate mods)

blissful panther
rigid oriole
#

I cannot believe there's been a config option in the C# the whole time hello 😭 I've been writing weird build commands

blissful panther
#

So was I until it was added relatively recently!

tropic stag
#

Ah perfect. Thanks guys

tiny zealot
rigid oriole
sweet geyser
#

i made some initial ideas for his sprite hehehehhe

#

sorry idk how to blur pics apologies

#

im an absolute beginner so no judgement please T_T

tiny zealot
#

ooh, fun!

sweet geyser
#

thanks for asking btw ive been screaming sbt him to everyone

sweet geyser
#

im just gonna delete that cus

#

im embarassed

#

ahem

#

see ya !

velvet narwhal
hallow urchin
#

Man, this community is friggin amazing... I release a mod and not one day later an user comes by with a Chinese translation, unprompted. For my silly little mod. that's bonkers

gray bear
#

true that

tawny ore
tiny zealot
hallow urchin
#

I was wondering, on the topic of using CP vs SMAPI's content API, CP would have more longevity right? Considering it can auto-update older mods to work with newer versions. Or maybe SMAPI does something similar as well?

#

I suppose that would only apply when talking about mods that exclusively change content and don't have custom logic

tiny zealot
#

SMAPI does rewrite mods when e.g. method signatures change

hallow urchin
#

Oh!

tiny zealot
#

it also handles a few things to make cross-platform modding more reliable, which is the same sort of on-the-fly rewriting

hallow urchin
#

Man, I should donate to SMAPI when I have the chance

tiny zealot
#

actually maybe the directory separator stuff is compile time. unsure about that one in particular

#

i think the main thing about CP versus content api is there are some things that are difficult to impossible in CP that you can do fairly easily in the content api, like apply a change to every item in an asset without having to know what they all are

#

and likewise, CP has a bunch of really useful features (mostly its tokens) that you would have to reimplement if you wanted to use them via the content api

hallow urchin
#

Yeah it was kind of annoying to work around not having tokens, but since I'm more familiar with C# i prefer to stay on that if there are no downsides

tiny zealot
#

well, you've encountered the major downside SDVpuffersquee

#

i started my NPC entirely in C# but converted most of it to CP after struggling for a bit

hallow urchin
#

Once I figured out the right syntax to add an action/method callback in the content files, it was all smooth sailing from there

tiny zealot
#

content patcher is generally easier to write (which is why it exists) and the tokens are really helpful, and i was spending a lot of time reimplementing its features but worse

hallow urchin
#

for now though I think I found my place in making QOL mods

oblique meadow
wide flint
#

How do i make a simple yes/no popup gamepad compatible? Currently I can only select and click with a mouse.

hallow urchin
#

How did you create the popup?

tiny zealot
acoustic lintel
#

Hey all! I’m new to modding and have hit a bump in the road that I can’t figure out how to fix. Hoping someone might have an idea of what could be wrong... Got a custom npc and custom location both working (location is a house I added to the backwoods map) he spawns correctly inside the house follows his schedule when inside, but he won’t go outside if I schedule it. And if I force him to go outside by scheduling him to walk into the warp tile, he does end up outside but still won’t move from that spot. I feel like I’ve tried everything I’m at a loss T_T

tiny zealot
#

ah! the problem is you have used the Backwoods map

#

Backwoods is on a blocklist. NPCs are forbidden to path to/through it

acoustic lintel
#

Ohhh nooo 😭😭

acoustic lintel
#

So many hours wasted

tiny zealot
#

sorry to be the bearer of bad news!

acoustic lintel
#

It’s kinda good news in a way because at least I know what the problem is. Thank you so much for letting me know you’re a lifesaver

#

I’ll get back to work 😭

tiny zealot
#

Backwoods is not contiguous without the community shortcut, and would introduce a loop with it. in both situations it wreaks havoc on the (bad) NPC pathfinding algorithm

acoustic lintel
#

Before I do are there any other areas I can’t use??

hallow urchin
#

https://www.nexusmods.com/stardewvalley/mods/28044 I haven't tried out this mod but apparently someone made an NPC living in the backwoods, I wonder how they did it?

Nexus Mods :: Stardew Valley

The original map of the northern mountains of the farm has been modified to make it huge, and a new NPC has been added related to Bryce

#

maybe it's due to the fact it's a custom map

velvet narwhal
hard fern
tiny zealot
#

you can work around the problem by creating NPCWarps that take your NPC from their map/home straight to another map (typically Mountain), and back likewise if you want them to go home, but you won't ever see them on Backwoods so you have to deal with that in your own way (or not, if it doesn't bother you)

#

Woods (the secret woods) was blocked in 1.5 but i hear it was unblocked in 1.6. i haven't checked myself

acoustic lintel
#

Ok gotcha. I’ll have a look into npc warps to test that out first. Thank you!!

velvet narwhal
#

Island West might also be blocked

#

Because of the farm there

acoustic lintel
#

Gotcha. Thank you!

tiny zealot
#

drumroll

        /// <summary>The location names which NPCs aren't allowed to warp through.</summary>
        /// <remarks>The farmhand cellars are added automatically.</remarks>
        public static readonly HashSet<string> IgnoreLocationNames = new HashSet<string> { "Backwoods", "Cellar", "Farm" };```
lament shell
#

shucks... my cellar npc is out of the question.

wanton pebble
#

gasp Cellar isn't pathable???

velvet narwhal
#

I will now cause chaos in island maps

wanton pebble
#

I suppose it makes sense but boooo

velvet narwhal
wanton pebble
#

...are events blocked in cellar? Asking for a friend

wide flint
velvet narwhal
#

Most likely not you'd just low load a blank

lament shell
#

why cant i just have a rat that gives you fun facts living in the cellar, unfair

velvet narwhal
#

Or cheat and temp map it SMCKekLmaoDog

wanton pebble
#

Nah. I refuse to cheat that

velvet narwhal
#

You want the farmer's chaos put out in front view 🤝

wanton pebble
#

It'd really just be for a personal date with spouses I've had on my backburner

#

Personal since cellar mods bad

#

For eventing that is

velvet narwhal
#

I will never ever do farmhouse/cellar maps

oblique meadow
#

Smart. Speaking from experience.... :p

tiny zealot
#

cellars are instanced i think so you might have trouble loading the events

#

but that's theory i don't know how they work really

velvet narwhal
#

Yeah I've just deemed it not worth my sanity to viewport that, unless I can remember how to hook the viewport on the player, but even then I can't configure all of the farmhouse interior mods to compensate

brittle pasture
#

I remember this channel doing research a while ago and finding out that instanced maps actually can load events

velvet narwhal
#

I need to figure out the ingredient max on crafting... for reasons suspicious

#

That or I become yet another cog in the machine of transpiling clickableCraftingRecipe

brittle pasture
#

number of ingredients? there was that everything bagel mod that needed 1 of every item in the game

#

a practical limit probably doesnt exist

velvet narwhal
#

How does that come across in ui though

brittle pasture
#

painfully

velvet narwhal
#

I imagine Not Great™️

#

Button the enabler made me think of terraria crafting for the ultimate trinket

uncut viper
velvet narwhal
#

How does that even get exposed thonk

brittle pasture
uncut viper
#

thanks past me

brittle pasture
#

my memory is long lasting. it is just wrong most of the time

uncut viper
#

I mean I'm not one to talk clearly, you just corrected me with myself

tiny zealot
brittle pasture
#

I wonder how much mileage we can get out of a "framework" that justs adds the backwoods shortcut bridge by default and enables it for NPC pathfinding

velvet narwhal
#

Idk the market on npcs even though I'm making 22 of them

#

Where's npc georg @brittle ledge

#

Were over the holidays so people aren't as invested in making npcs anymore

lucid iron
#

What r some stuff a C# api for trinket tinker should have

#

The reasons why i didn't make a C# api so far is cus it's targeted for content packs

velvet narwhal
#

I honestly don't know what you'd expose that isn't available to the cp

lucid iron
#

And i been like "well that could just be a gsq/action/item query"

brittle ledge
#

There's two NPCs that I know of in Backwoods (using 0 schedules or not leaving the map) and one in Tunnel

#

Most people steer away from it because of the pathing issue

lucid iron
#

Even the thing about hidden trinket equip would work well just as a trigger action i feel

tiny zealot
#

oh, didn't the lorax hang out in Backwoods sometimes? or is that one of the ones you were thinking of

finite sequoia
#

As a backwoods NPC modmaker, if you do decide to make a map connected to it, I'd reccomend using NPC only warps to the mountains/bus stop

#

But never try to actually put your NPCs in the backwoods

mighty quest
#

How do I convert from KeybindList to SButton?

finite sequoia
versed wyvern
#

The Desert Festival chef giving us a dish that we auto-eat isn't a function we can use with CP, is it? I'm guessing that's another hard-coded sort of thing

hard fern
#

I know stardrop gets auto munched

tiny zealot
#

there's an event command to make the farmer eat or drink something but i don't think there's a trigger action

#

@uncut viper unless you put one in BETAS (feature request if you didn't)

last arch
#

Hey everyone! I'm new to modding and I'd like to edit some heart event cutscenes, how can I do that? I haven't found any tutorials online so I figured I'd ask here 😄

tiny zealot
#

[[Modding:Event_data]] the wiki article on event data is pretty technical but it's essential reference material

last arch
#

Thanks, I'll check it out!