#making-mods-general

1 messages Β· Page 494 of 1

calm nebula
#

For me at least for work if something goes badly enough a cherrypick is needed

soft lance
#

Hey everyone! I’m working on a Content Patcher mod for Stardew Valley to add seasonal and generic dialogue for Willy
I currently have each line in its own patch, using a "When": { "Random: 1, 2, 3": "3" } condition to give each line a 1/3 chance of appearing

Example:

{
  "Action": "EditData",
  "Target": "Characters/Dialogue/Willy",
  "Entries": { "Mon": "{{i18n: {{ModId}}_WillyDialogue_Generic_Monday}}" },
  "When": { "Random: 1, 2, 3": "3" }
}

This works, but it feels very verbose, and I was wondering if there’s a cleaner or more efficient way to do this (I had to make 20+ of this same snippet but different, filling hundreds of lines)

Specifically, is there a way to add a single "When" for multiple entries at once while keeping each entry in the patch uniquely randomized? Or a way to randomize lines without creating dozens of separate patches?

gritty fable
#

πŸ‘‹

gentle rose
#

(ty willow!)

heavy pewter
#

Has anyone ever experienced this bug where buildings suddenly disappear while moving it? Idk if it's my mod that causing it, I don't have a footage but the building literally just disappear. Maybe a mobile only thing?

For context(see video), my mod allows the player to access any shop, as well as moving, constructing, demolishing buildings. So idk if that's causing it

toxic hornet
#

Is there a size limit for map dimensions in Tiled

tiny zealot
#

i think you'll hit practical limits before technical ones, tbh

urban patrol
#

generally speaking 200x200 but even that is iffy for performance

tiny zealot
#

if memory serves there is a maximum Y dimension beyond which the draw code gets fucky but i forget what it is. several hundred tiles at least

toxic hornet
#

ah

tiny zealot
#

what i mean is by the time you hit technical limits you will have made a map too big for players to enjoy

slow basin
#

is it simple enough to make a specific area/map a specific season throughout the year like if i wanted a just snowy area?

#

i wanna make a christmas themed mod but realized it would be weird if it was like not snowy all the time jfkljsdf

urban patrol
slow basin
#

oh awesome

#

ill worry about that when im setting up the map then thank you!

#

i wanna make a little santa's village lskfaf

brittle pasture
#

just be prepared to receive bug reports from people confused why it's snowing in summer

#

(this happened to VMV)

slow basin
#

oh true X3

tepid prawn
#

Hi everyone!
Can anyone confirm whether, when using the SYNCED_RANDOM game state query in two different Content Patches but with the same key, the result is consistent and remains the same for both patches?

brittle pasture
#

yes that is the purpose

tepid prawn
#

Great, thanks!

heavy pewter
gaunt orbit
#

@rancid musk Discovered an issue with the mod manifest generator- dependencies seem to be cached somehow even after they're removed
I had an alternate branch with different dependencies to my main branch, and when I switched back they remained in my generated manifest, even after a version change and a full rebuild. I had to delete the manifest.json file manually to get it to remove the extra dependency.

lucid iron
#

Oh there's an option to start from a manifest base

#

Need to use that if u want the manifest to get wiped every time

#

Otherwise it uses any existing as base

rancid musk
#

Yeah, if you don't wipe the manifest every time, it will assume any dependencies in the file were added manually and should remain there.

lucid iron
#

I got tripped up by this several times b4 kyuuchan_run

gaunt orbit
#

oh, I thought default behavior was to rebuild from csproj every time

lucid iron
#

It would be nice if that was just a prop in csproj yes

rancid musk
#

You can set it to start fresh every time, but that's not the default.

gaunt orbit
#

I will do that then, thank you

thick sphinx
#

Thank you!

rancid musk
#

You can set <BaseManifest>new</BaseManifest> and it will fully regenerate it.

gaunt orbit
#

aaah that was added in 2.0, that's why I didn't know about it

#

I read the docs the first time I used it and then just copied csprojs from my other mods every time since :x

odd ginkgo
#

writing events right now, and man, it's really a tough choice to make an npc romanceable or not

#

romance allows for deeper story, but also then you have to waste precious event time building up that level of emotional connection

#

anyone else who's made an npc, how did you decide whether or not they were a marriage candidate?

uncut viper
#

i dont think that counts as wasted time

gaunt orbit
#

I wish vs would give you a little notification bubble when you have updates for packages
I feel like I only ever find out about updates from other people

uncut viper
#

and looking at it as wasted time will probably hold someone back when trying to write it

#

but you also dont have to write it if you just dont want to

lucid iron
#

If romance like wasted time then they should be romancable right

uncut viper
#

building up an emotional connection is like... a big part of the draw of romance

odd ginkgo
hallow prism
#

it's ok for npcs to not be romanceable if it's too much to figure out

odd ginkgo
#

without making players get stuck in event cutscenes for a huge amount of time

uncut viper
#

there is also no limit to the number of events you can write

#

you dont have to squeeze everything into 5 events only, spaced 2 hearts apart

hallow prism
#

you can decide later to add it in an update, if you feel inspired or want a challenge

gaunt orbit
calm nebula
gaunt orbit
odd ginkgo
uncut viper
#

do it in 5, or 6, or 10, or 20 SDVpufferthumbsup

gaunt orbit
#

but thank you for offering lol

gaunt orbit
odd ginkgo
stray hemlock
hallow prism
#

i do like to take time to figure stuff out when i'm stuck

#

i can always add stuff later once my idea reached maturity

gaunt orbit
#

usually the reason people don't do more events is just because event-writing is a lot of work

uncut viper
#

no event time is "precious" event time bc its not a limited resource

#

so it is impossible to waste something that doesnt exist

latent mauve
#

Multiplayer struggles a bit in vanilla with longer events (since it can hit 2am while you're in an event in multiplayer), but that can already be mitigated by mods that pause time during events. ❀️

hallow prism
#

current WIP

gaunt orbit
#

cute!

#

I love the gingerbread junimo

hard fern
#

yummy

latent mauve
#

those are adorable

hallow prism
#

thanks πŸ˜„ now i need to figure what to do since most of the recipe would need a specific pack of cornucopia

stray hemlock
#

To be fair, one character having dozens of events kinda shifts the balance of the game, so I do understand people not wanting to add more events to the game than the other characters have.

It kinda becomes its own thing then, which is of course also nice, but I do understand players not wanting that, and I do understand creators trying to limit event time in order to create a more "Vanilla Plus" mod.

hallow prism
#

while it may be true, keep in mind that not all events are centered on one character and this can be a great way to make the character blend, while still progressing the story

latent mauve
#

If/when it becomes feasible, I do plan to do some 'combined' NPC events that have multiple characters involved for my LoZ NPC mod.

stray hemlock
uncut viper
#

personally as a player i never mind and in fact enjoy when a character has a lot of enjoyable events, even if they have more than others

gaunt orbit
odd ginkgo
uncut viper
#

as long as your events dont go against my player agency, i am all for any and all events a mod might add. i installed the mod/NPC because i was interested in them, after all

gaunt orbit
#

oh yeah player agency is a big one

odd ginkgo
gaunt orbit
#

I don't like events that put dialogue in the farmer's mouth. either give me a choice or don't have it in text

uncut viper
latent mauve
#

I've got things planned like Purah and Groose tinkering with contraptions together, Mipha and Sidon hanging out at the beach, and more with the kids (Leo/Aryll included) playing. xD

hard fern
latent mauve
#

Midna's Krobus in my mod.

stray hemlock
#

Yay.

#

Need.

#

Looking it up now.

latent mauve
#

It's not released yet, still working on it

#

It's been an endeavor

stray hemlock
#

I'll gladly play-test it when you're ready for that.

uncut viper
latent mauve
#

Well, I'm at the point where once I get the last few sprite sheets done (fixing Wolf Link, and adding Urbosa, Riju, and Daruk sprites), I'm making completely new NPCs, events, and locations rather than the replacements that the main cast is taking on.

#

So it'll be in a state for limited testing soon, I hope!

#

Riju will end up being a fully custom social NPC and Urbosa will be a custom romanceable NPC, so they are a bit more work. πŸ™‚

brittle pasture
# odd ginkgo it's interesting because vanilla events feel super memorable and impactful, and ...

late but the vanilla villagers, and especially the bachelors/bachelorettes, are, for better or for worse, have exaggerated and very stereotypical personality traits that make their 'deal' more or less apparent, and this applies to their heart events as well
them being just part of the game also means they get more mindshare by default
if you feel your character is a lot more nuanced than that and they need more events to flesh out their character, it's totally fine! I (and I'd wager most mod users) don't go out of their way to install story expansion mods and complain we get too much story, and for those who already like your NPC via their design or personality, more events are just more treats

odd ginkgo
hallow prism
#

like using vanilla npcs as a way to make your character look more good than them

brittle pasture
#

wikipedia seems to think the equivalent term is "sidekick", which is probably not quite correct but I get the gist SDVpuffersquee

#

!startmodding @rugged flax

ocean sailBOT
#

Making mods can be broadly divided into two categories:

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

calm nebula
#

Mary Sue

latent mauve
#

a foil, maybe?

#

ah

hallow prism
#

i'm not exactly sure what a foil would be

calm nebula
#

Fwiw I have strong opinions on writing

uncut viper
#

its kind of foil-esque but not strictly comparable i think based on my googling of faire valoir

hallow prism
#

but possibly! sidekick can work in some context too

calm nebula
#

And know I have strong opinions

#

But keep them to myself lol

hallow prism
#

(and i have strong opinion on the use of mary sue πŸ˜„ )

uncut viper
#

maybe you could also call them "unintentional wingman" SDVpuffersquee

latent mauve
#

A foil is a character who sharply contrasts with another (usually a protagonist!) to make the protagonist either look distinctly different and sometimes better or worse by comparison.

hallow prism
#

so there is a bit of that yes

uncut viper
#

ive always been taught that a foil is not necessarily to make someone looking better or worse but simply to emphasize the difference

latent mauve
#

Yep, it isn't always to disparage or elevate the protagonist, sometimes it's just to highlight differences.

hallow prism
#

but there is indeed this idea in "faire valoir" about how to make someone (usually the hero) look better in comparison

stray hemlock
#

I'll be your foil, Laertes. In mine ignorance
Your skill shall, like a star i' th' darkest night,
Stick fiery off indeed.

#

Hamlet

#

That might be the origin.

latent mauve
#

Very possible

brittle ledge
#

Like, in my mouth, right, should I put some pasta on it first or something

brittle ledge
#

Wait, I misread this, it's not three lines, it's a 1/3 chance. In that case I'd put them all in the same patch because random should re-randomize at the beginning of each day.

balmy valve
#

Someone please help. My NPCs schedules arent doing anything- there are no smapi errors and i have them all loaded

merry river
inland crater
#

Hi

#

When I am making a mod and I am running it from my visual studio, it says my dll file doesn't exist.

#

What can I do?

hallow prism
brittle ledge
# balmy valve Someone please help. My NPCs schedules arent doing anything- there are no smapi ...
Stardew Modding Wiki

Having NPC troubles and overwhelmed by the amount of work that goes into making sure they work? No worries, this guide can lead you through some common mistakes of creating custom NPCs and hopefully get them working!
Before we dive in, here are some helpful links for creating NPCs:
Tiakall's NPC tutorial...

balmy valve
balmy valve
#

yes it worked thank you

#

i always forget...every time...

elfin kindle
#

Yeah it's easy to forget, reset the game, panic and then wonder whats wrong lolol

inland crater
#

How do I get a dll in my mod folder when I am making a mod?

calm nebula
#

Question. What type of mod are you making

inland crater
#

this is my first time, I'm confused.

inland crater
#

I am using the dummy code from wiki

lucid iron
#

There's C# mods which have dll and there's content mods which are usually just json

inland crater
#
using Microsoft.Xna.Framework;
using StardewModdingAPI;
using StardewModdingAPI.Events;
using StardewModdingAPI.Utilities;
using StardewValley;

namespace YourProjectName
{
    /// <summary>The mod entry point.</summary>
    internal sealed class ModEntry : Mod
    {
        /*********
        ** Public methods
        *********/
        /// <summary>The mod entry point, called after the mod is first loaded.</summary>
        /// <param name="helper">Provides simplified APIs for writing mods.</param>
        public override void Entry(IModHelper helper)
        {
            helper.Events.Input.ButtonPressed += this.OnButtonPressed;
        }


        /*********
        ** Private methods
        *********/
        /// <summary>Raised after the player presses a button on the keyboard, controller, or mouse.</summary>
        /// <param name="sender">The event sender.</param>
        /// <param name="e">The event data.</param>
        private void OnButtonPressed(object? sender, ButtonPressedEventArgs e)
        {
            // ignore if player hasn't loaded a save yet
            if (!Context.IsWorldReady)
                return;

            // print button presses to the console window
            this.Monitor.Log($"{Game1.player.Name} pressed {e.Button}.", LogLevel.Debug);
        }
    }
}```
#

I don't know, thhis is the dummy code.

#

When I load what I have in, it says the mod isn't loading because the dll isn't found

gentle rose
#

you need to compile it

inland crater
#

I see.

gentle rose
#

what are you editing this code in?

lucid iron
#

It helps if you actually explain what you want to do with the mod too

#

So people can tell you if you actually need C#

gentle rose
#

(unless you just want to try c# for the sake of it, which you're absolutely welcome to)

inland crater
#

I am not doing anything with visuals, and I want to change some game rules. Do I need C#?

gentle rose
#

which game rules?

inland crater
#

Stuff like time

gentle rose
#

can you please tell us exactly what you're trying to do

inland crater
#

Slowing and speeding up time

gentle rose
#

are you doing this because you want to figure out how to do it or just because you want the mod to exist?

#

because TimeSpeed does exactly this afaik

inland crater
#

I am making something more personalized.

#

I just want to try to make something so I know how to do it.

#

Are you saying that it is difficult to make this kind of mod?

gentle rose
#

this would need c# but as a word of warning, messing with time in stardew can be finicky and have unexpected results

#

but without getting an actual answer from you about what the "more personalised" part is, we can't help you further tbh

inland crater
#

I see.

lucid iron
#

I'd probably just start with forking and building timespeed

inland crater
#

Is it because of a flaw in game design that links fps and time and ticks?

lucid iron
lucid iron
#

Main jank is npc pathing

#

If they don't have enough time to reach where they need to be they go ??? and wander off into the void

inland crater
#

I see.

lucid iron
#

But yeah you got a existing open source time changing mod right here

#

Clone + compile it then tweak for your own needs SDVpufferthumbsup

inland crater
#

But idk how to compile\

gentle rose
#

(well, gpl, so if you publish anything you make using it your code also has to be open source and gpl)

lucid iron
#

!startmodding

ocean sailBOT
#

Making mods can be broadly divided into two categories:

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

lucid iron
#

The getting started with C# explains most of it

#

People use different means of compilation im personally a dotnet cli

inland crater
#

I see, thanks.

lucid iron
#

Visual Studio (community) is good if you are just starting

#

(and on windows)

inland crater
#

Is it easy to pause the time in the game? And it applies to multiplayer?

#

To make a mod to pause time

#

Say, someone with a mod does an action that triggers a time pause

lucid iron
#

Pausing time in single player is easy and happens often in vanilla (anytime you are in a menu)

#

Multiplayer needs extra handling so there's a separate mod for that yes

gentle rose
#

I'm not sure if that one allows a single player to pause the time on their own though

inland crater
#

Pardon?

lucid iron
#

You need the similar sort of mp messaging

#

To tell every client involved to pause time

inland crater
#

Do you mean that everyone on the server needs to have it installed, or is it even more complicated?

lucid iron
#

everyone having the same mod is a given

#

But what I'm talking about is that you must have the client triggering the time pause broadcast a message to all other clients connected

#

To tell them to also pause their time

inland crater
#

I see.

lucid iron
#

Stardew does not have concept of a server, it is peer to peer

inland crater
#

Yeah, I just forgot the word "client" for a split second

lucid iron
#

The host player does more processing of the world but they are simultaneously a client so not exactly it

gentle rose
#

you aren't trying to do something without other people in the save knowing, are you?

inland crater
#

no

inland crater
gentle rose
#

that the mod chu linked only pauses the game when it's meant to be paused for everyone in the save, not when one person does something

inland crater
#

So all players need to be in the menu at the same time for it to pause?

#

Thats the problem I am trying to avoid by making my own code. Its what I meant by "personalized"

lucid iron
#

Personalized can mean literally anything but im glad you explained it now

gentle rose
#

it would probably help if you tell us exactly what you're trying to do tbh

you want the time to pause any time anyone is in the menu?

inland crater
#

Yes.

#

Or slow

#

Is that a difficult thing?

gentle rose
#

I don't know tbh, but I think it would be annoying? your time will get paused any time someone else opens a menu

#

your friend opens a menu at 7:50 so you can't go into Pierre's until they get back and close it

inland crater
#

Yeah, I just want to know how to do it

#

It will only happen under certain circumstances, not just having a menu open.

gentle rose
#

then how difficult it is will depend on those circumstances

inland crater
#

I understand.

gentle rose
#

I don't really get the secrecy tbh but good luck making your mod, hopefully you figure it out

soft lance
#

so all of my dialogues need a 1/3 chance, like

out of lets say 20, 7 may have changed into mine

#

or else, all 20 out of 20 changed, which is if you apply that into a single linear-entry list with the random condition

#

at least from what I have attempted myself

brittle pasture
#

an npc only picks one dialogue per day, why does it matter that they are randomized individually or all

brittle ledge
calm nebula
#

Yeah

brittle ledge
#

Or what selph said SDVpuffersquee

calm nebula
#

The way I'd do it would be to split into a group of 3

soft lance
#

oh wiat

#

hold on

#

the reaosn is because

#

does this apply every day? or not

#

or is it everytime you load stardew

brittle ledge
#

It should re-randomize every day.

brittle pasture
#

tokens reset every day (unless otherwise specified) yes

soft lance
#

oh? thats unique, good to know, ty!!

soft lance
#

(im new to em)

brittle ledge
#

That would be in the Content Patcher documentation kyuuchan_nod2

inland crater
#

Do dll files work with mac?

calm nebula
#

Yes

inland crater
#

Oh, so if I make the mod on my windows it would run on someone's mac or other os?

soft lance
#

I doubt you'd come across that issue, but I believe if you get to those crossroads, you can always ask here

#

But regardless, your fine SDVpufferthumbsup

royal stump
#

(Android doesn't count because it's a significantly different game SDVkrobusgiggle but it's still safe for most CP assets)

gaunt orbit
royal stump
#

right, dealing with files through the SMAPI helper is a lot cleaner and covers most mods' uses, at least

lucid mulch
#

C# apis generally are forgiving and would fix \ vs / for you.
easiest way to break OS compat is case sensitive errors

soft lance
#

Becomes fun once you start doing it all yourself

#

Python is thankfully more leniant, but if you want it to work on Windows, Mac, Linux, FreeBSD, and other kernels

#

It's best to play safe SDVpufferchickcry

#

typically i just keep like

inland crater
#

If I want to make something happen for a set amount of time, like pausing time for 5 seconds, would I need to write the code as x amount of ticks?

soft lance
#

a list of directories with environmental variables

gaunt orbit
#

Python is weird because the answer to the question "how do I do x in python" is 50/50 "just import this library!" and "write your own 1000-line janky implementation that breaks when you look at it funny"

lucid mulch
#

dont forget to do the most convoluted list comprehension possible so its one expression

gaunt orbit
#

flashbacks to manually assembling zip files with custom file flags

soft lance
soft lance
#

I had to use a literal zip exe (handled all zip logic) bundled almost 30 years ago and connected it internally into my app

#

that is messy but somehow worked

royal stump
inland crater
#

Okay, thanks.

gaunt orbit
#

Everything I read about C makes me glad I don't write C

#

Not the language itself so much as compiling woes

soft lance
soft lance
#

instead of actually referncing the internal lbirary

fervent horizon
#

I am close to releasing an update to my extension, but I did this today and thought it was cool. It will parse i18n strings and show their translations

gaunt orbit
#

That looks awesome!

fervent horizon
#

I just have a few bugs to work out

final arch
#

is that a vsc plugin? rly neat!

fervent horizon
lucid iron
#

Oh neat does it handle language folder i18n?

toxic hornet
#

are there versions of the game's tilesets that come with the properties saved?

hard fern
#

You can export tsx files from maps though

#

And then embed those tsx files onto another map to get things like animations and tile properties

fervent horizon
toxic hornet
lucid iron
#

Make sure to actually pick a map that has the props you want

hard fern
#

Or like chu suggested, to just pick a map that already has the properties you want

toxic hornet
#

ohhhh yeah that seems a lot smarter πŸ˜…

#

thank you for your patience, very new to this

hard fern
#

Sometimes there just might not be maps that have all the properties you need though

#

So you'll have to fill those gaps in yourself

fervent horizon
#

@lucid iron here is a good example

toxic hornet
#

To initially snatch that .tsx would i just select the desired tilesheet and do the "export tileset as..." to keep the properties?

lucid iron
#

nektar DokkanStare

toxic hornet
#

thank you!

#

i want to be able to swim with my ducks

narrow owl
#

nvm i figured it out

autumn fog
#

how do i use > in dialogue without it turning into an arrow symbol??

lucid iron
#

you cannot without a custom font

autumn fog
#

oh SDVpufferpensive

narrow owl
ocean sailBOT
#

Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26100.0, with 7 C# mods and 1 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

drifting flame
#

needs a little more debris

narrow owl
lucid iron
#

it looks like u exploded the data objects

narrow owl
#

idk

inland crater
#

And you warned me about the potential problems. I haven't been able to test it myself because I would need a friend.

lucid iron
#

the best way to test is to do it yourself blobcatgooglyblep

inland crater
#

I can't, I need a friend.

#

can you see if there are immediate errors?

lucid iron
#

you can coop with yourself

inland crater
#

I can?

#

I thought I need a controller to join

lucid iron
#

no you start 2 instances of the game

inland crater
#

Oh, I see

#

Thanks

lucid iron
#

and join yourself via LAN, leave ip blank

inland crater
#

Do i launch the other one not through steam?

lucid iron
#

tho hrm i guess your mod is specifically hard to test like this bc it's time related yggy

#

need to make sure to turn off pause game in background

inland crater
#

I see.

lucid iron
inland crater
#

From what it seems, will it at least make time slower?

#

10 minutes in the game should be 7 seconds irl, right?

loud sandal
inland crater
#

It has zero effect, I need to do some editing.

#

I am so confused guys, this is my first day modding.

#

I bet its something to do with the way stardew valley handles time

loud sandal
inland crater
#

Guys

#

I cooked

#

It worked

#

If something goes wrong I can always change it again

#

Its because harmony wasn't enough to change the timeflow of the game. I had to take extra steps

#

Do you guys know what I mean?

toxic hornet
# toxic hornet Is there a size limit for map dimensions in Tiled

Is there a size limit for map dimensions in Tiled

asking this again but clarifying context:

I want to add tiny mini-farm maps off to the edge of a big farm map so in multiplayer everyone can have their own tiny space to decorate and then work on the big farm together for cooperative capitalism. However, as far as I understand, the cabins need to be on the main farm's .tmx and the pets only go there (unlike other animals that can be shoved into PIF rooms)

* other options for how to go about accomplishing the minifarm goal also very very welcome - current Big Map we chose was IF2R

inland crater
#

in newer Stardew builds that method often uses other time values (e.g. GameTime.ElapsedGameTime, TimeSpan.TotalSeconds, Milliseconds, etc)

#

Thats the lesson I learned from this

loud sandal
#

Ah so like, UpdateGameClock was touching multiple time values so it might have scaled the wrong one or scaled more than once

inland crater
#

They seem to change it between updates

#

It will break at some point again and I will need to fix it

uncut viper
toxic hornet
loud sandal
#

@inland crater Not to sure about time but yeah there is some info on 1.6 changes, not sure if you need to do like a GameLocation to adjust for different locations like Skull Cavern?

inland crater
#

I'll see.

#

Thanks for the support guys

loud sandal
#

Cool SDVpufferthumbsup

lucid iron
#

The actual problem has nothing to do with tiled and more to do with how game deals with updates

#

There's an open world mod that raises the limit significantly by chunking the map

toxic hornet
#

thank you that helps

loud sandal
lucid iron
#

Yes, nope, not qualified to answer

loud sandal
#

Haha, I haven't played in a while and was curious about that one

lucid iron
#

It works by set pieces i think not sure of it do any waveform collapse shenanigans

loud sandal
#

Interesting, it doesn't have monsters or creatures or anything spawning in it right?

#

OH wait, it does have monsters

#

I need to look at this lol

inland crater
#

I don't think it does, at least.

#

Because in skull cavern, time is different for each player.

#

How does that even work, what does the world time default on

loud sandal
#

Yeah that's what I was getting at haha

inland crater
#

?

#

But its not like the mod slowing time down would stop slowing time down

#

It will still have its time slowing effect, I just don't know which time it uses as the base speed

#

Maybe I should test, lel

loud sandal
#

Honestly I am not sure on that one, it looked like some kind of "every player has their own time in skull cavern" deal

inland crater
#

I'll give a test

#

One with mod and one without

tiny zealot
inland crater
#

It follows the 7 seconds, and the time slowing still works as normal,

#

says the idiot here timing every 10 minutes with stopwatch

loud sandal
#

I always played skull cavern on my own SDVpuffercry

sleek flint
lucid iron
#

if u make the wingdings font you can wingdings people yea

#

or support emoji glyphs

tiny zealot
sleek flint
#

Yay, thanks chu!

lucid iron
#

ichor made it thank ichor

sleek flint
#

I actually needed this

#

Or sorry, thanks ichor!

tiny zealot
#

you can also use it to lie and use whatever character you want for anything, but try not to do too many unicode crimes with it /lh

lucid iron
#

oh but ichor can u make it so that a font is exclusive to a particular npc

#

for the undertale mod ofc

tiny zealot
#

not directly

sleek flint
tiny zealot
#

you could make a whole separate character set and use that exclusively for a particular character, but there's no tying to NPCs or whatever available in it right now

lucid iron
#

it is joking claim that there will be an undertale mod ft sans and papyrus with faithful reproduction of their speech

#

i am not making an undertale mod

tiny zealot
#

(i did also make an unpublished framework that would support their sound effects)

compact jasper
#

Hello, been a long time.
I was one of the modders who made the Toshinori Yagi NPC mod, and I started work on my new NPC about a year ago. I am wanting to pick up where I left off, but I have a feeling that the game has changed singificantly in a year since I started my old NPC.

Has anything huge changed that I need to be aware of? Would anyone like to look at my alpha build to make sure it's functional in the current game version?

I also forgot like... a LOT of how to write events. Has anyone created any up-to-date guides on heart event writing, perhaps?

Thanks for your time.

lucid iron
#

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

uncut viper
#

the game has not even updated in nearly exactly a year

lucid iron
#

im not sure what your frame of ref is but here's some 1.6 tutorials

compact jasper
#

Oh excellent there's a 1.6 guide, this is great news

uncut viper
#

it depends on if you stopped before or after 1.6.9 mainly

compact jasper
#

Yeah Toshinori was an extremely complex NPC at the time I made him; it was before 1.6 though. I delved pretty deep into modding various systems, even had some custom scripts involved, but that knowledge has long left my brain

lucid iron
#

events didn't change too much beyond new preconditions

#

oh yea pytk dead rip lua

compact jasper
#

Do people still use MFM (mail framework mod) or is there a better way to send letters now?

uncut viper
#

most letter-related things can be done vanilla

#

MFM has some extra features still so its not obsolete

tiny zealot
#

sometime Soonβ„’ we're supposed to get a patch update with some new features, but then however far down the line is 1.7 where we might get The Good Stuff

lucid iron
#

you can send letters with trigger actions

compact jasper
#

Oh ok! yeah I used MFM for Toshinori and I did like its features, so if its up to date then I'd like to keep using it

lucid iron
#

mfm has some fancier timing stuff and it still works so

#

no problem if u wanna keep doing it

compact jasper
#

I used letters a lot as triggers for events

uncut viper
#

people might ask why you're using it, though

lucid iron
#

it's got content patcher integration too so that u wont need a second mod

compact jasper
#

can letters still be used as event triggers without MFM?

lucid iron
#

yea

tiny zealot
#

yes

lucid iron
#

u can set mailflags with trigger actions now

#

which can be used as event precond

compact jasper
#

Ok, great. That's something I'll definitely need for my new NPC, i used them a lot as preconditions for Toshinori as I recall

#

its been years since I've done this stuff tho, so I'm extremely rusty

lucid iron
#

u might not actually need these anyways cus

#

i think game state queries can be directly used as precond

uncut viper
#

they can yes

tiny zealot
#

yeah you could even use PLAYER_HAS_RUN_TRIGGER_ACTION and skip having to set a mailflag entirely

compact jasper
#

I'm already a little bit lost, but I'm sure it'll make sense to me once I find a place to dive right in again

tiny zealot
#

(trigger actions and game state queries are two of the major 1.6 features that i really like and am glad we have)

uncut viper
#

i like trigger actions and GSQs a normal amount

lucid iron
#

and triggers right

compact jasper
#

The main goal I have with this mod is integration with Pacifist Valley. Its always been a fascination of mine to have a character associated with the Adventurer's Guild that cannot stand violence and would potentially reward the player for not killing monsters.

https://www.nexusmods.com/stardewvalley/mods/5464

Is this mod still up to date/working with the game as of its current build?

Nexus Mods :: Stardew Valley

Converts the combat system into a cuddling system!

lucid iron
#

maybe even extra stuff

uncut viper
compact jasper
#

Oh it has a continued- ok, didn't know that. Also I forgot about this mod compatibility page, ty for the link

#

My main concern is like- remembering where I was when I left off and making sure that nothing I had previously designed is now irreconcilably obselete

lucid iron
#

i don't think game really changed that much blobcatgooglyblep

#

people did make more toys ofc u can check the framework page

compact jasper
#

Thanks! I'll take a look around

#

Is there documentation on how to add mail with CP?

lucid iron
#

hm i dont recall one off hand, maybe?

lucid iron
#

using AddMail

uncut viper
#

yes, on the trigger action page itself there is an exact example of using CP to send mail and add a CT

compact jasper
#

OK, thanks! I think at this point I just gotta sit down and start trying to remember how to do events and mail, and come in here if I run into any specific problems . thanks for helping get me back up to speed ^^

lucid iron
#

hm what type of framework is monster variety blobcatgooglyblep

#

between item/map/misc

#

same question for grass variety i suppose tho i think that one's a map/location NotteThink

compact jasper
#

is there a SMAPI command to set player access to be able to go into the sewers on day 1? I feel like this is possible, but I forgot it and I would like it for testing purposes

tiny zealot
#

debug warp sewer will probably do it, if the map is named well

compact jasper
#

That might work! I added a custom area in the sewer that I want to be sure still works

tiny zealot
#

not the same as unlocking the door, but the result is the same SDVpuffersquee

brave fable
#

debug seenmail OpenedSewer will work as well SDVpufferthumbsup

compact jasper
#

Thanks! Yeah, the warp worked fine for my testing purposes- I was just making sure my mod still worked after all this time, and he does! It looks like all the content I made originally is still accessible as intended

#

Now its down to making events and turning him into a full-fledged NPC.

#

My second question: I wanted him to give him Room Mate code similar to Krobus, where you can become his room mate instead of marrying him. Is this more feasible to code than it was in the past? Is it as simple as looking at how Krobus is coded and doing some rough copying of that?

lucid iron
tiny zealot
#

oh, it's pretty straightforward now. i don't know exactly what it is, but it's dehardcoded, so you just set up the roommate-proposal item and connect it to them with character data fields or something simple

lucid iron
#

its a context tag on the thing and usage of the roommate dialogue asset

compact jasper
#

Thats great news, I remember wanting to do this in the past and it was so hardcoded I got intimidated

#

Kieran is ace/doesn't want children, but he's VERY lonely (he lives in the sewer with Krobus, haha) so being roommate coded is perfect for him

uncut viper
#

you can make an NPC not ask to have kids even if theyre marriagiable

brisk wedge
#

this is super stupid, but why can't I figure out what font size my nexus mod description is? It says small when I put my cursor on it, but when I highlight it and select small, it gets smaller, but when i select normal, it gets bigger?

tiny zealot
#

welcome to nexus's wysiwyg mod description editor (a crime against humanity)

hard fern
#

wysiw-oh

#

what you see is what you get

brave fable
#

it's best just to smack the BB button in the topright and edit the bbcode directly

hard fern
#

this is why i always just make my descriptions just boring 3-5 sentence descriptions πŸ˜…

tiny zealot
#

the only reliable way i know to get sane results is to--- yeah that, edit the bbcode directly

brave fable
#

and never use ctrl+z or ctrl+v

uncut viper
#

i always just copy it from one of my other nexus pages, not even in edit form just from the public page, paste it in, and fix the linebreaks

#

it does help that all my descriptions follow the same format

brisk wedge
#

what is bbcode? this feels like some weird mashup between markdown and html

brave fable
#

short for bulletin-board code, it really is just a similar style of markup/markdown for formatting text

uncut viper
#

its almost as old as HTML

brisk wedge
#

hm interesting thanks. I'll definitely just be using the bbcode editor in the future

brave fable
#

nexusmods is at its core just an ancient bulletin-board forum with a very warped presentation over the years

#

i think they're trying to sanitise it these days (read: make it sane) but i'm sure it's like trying to knit a sweater out of cooked pasta

hard fern
#

pasta sweater...

#

i think ive seen a video where someone made a purse out of pasta

brisk wedge
#

Lol imagine if the sewing skill mod had spaghetti as a cloth type

#

Or even just base game tailoring

brave fable
#

you can feed spaghetti into your sewing machine to get a spaghetti-soaked shirt

#

which is a very novel feature in gaming

#

it'd be nice to have spaghetti in the spool and the feed though

acoustic summit
#

Finally converting my mods into actual projects SDVpufferchickcry so I can continue to work on them, almost one down after 5 hours... may this be a reminder to really reflect on the depth of the hole you are digging yourself when making anything in a way you know isn't gonna last.

calm nebula
hard fern
#

nexus bbcode scares me so i simply pretend it doesn't exist

acoustic summit
#

Was using DNSpy for like a year for everything, but since like 2-3 months ago it stopped really working on account of how archaic it is .net wise. (It was on and off giving up but seems like it officially kicked the bed)

lucid mulch
#

I did experiment with ilspycmd (at least its latest version) though it cant quite get a perfect decompile down of the entire stardew codebase and has a decent amount of manual tweaks needed

acoustic summit
#

I really liked how easy it was to make small tweaks and test with, but the price of it all is becoming very clear SDVpufferwaaah

lucid iron
#

yea i just mean bc ilspycmd is command line u can run it one time to get something resembling a project

#

and then start fixing it up from there

#

ilspycmd -p --nested-directories -r "$GAMEPATH" -o MOD-CSharp $1 -lv CSharp10_0

#

put the game folder in $GAMEPATH and the mod dll path in $1

lucid mulch
#

if you have the discord server level, getting access to the decompile repo is convenient as it has all the manual tweaks done

lucid iron
#

(sinz awa wrote all their mods by recompiling in dnspy)

acoustic summit
#

Yeah I was able to get it into project pretty quick, it has just been the tweaks themselves that have been more intrsuvie than I expected

#

Or maybe it hasnt been so bad, just a steep learning curve for me

lucid iron
#

yea i did find that ilspy doesn't know what to do about harmony patches

acoustic summit
#

Since this is my first experience working with this, and the new IDE

lucid iron
#

it might be something i can fix with -r?

#

never looked into it

#

maybe if i also put in the smapi-internal folder Bolb

acoustic summit
#

yeah everything harmony-wise is still giving errors

reef cosmos
#

I want these wild trees on the farm to regrow daily after being cut down - they spawn in correctly, but they aren't regrowing on a new day, am I missing something? πŸ€”

acoustic summit
#

That might just come down to a reference issue though since I havent resolved that

lucid iron
#

ah yes it is a lot better

#

ilspycmd -p --nested-directories -r "$GAMEPATH" -r "$GAMEPATH"/smapi-internal -o MOD-CSharp $1 -lv CSharp10_0

#

try this (but w/ ur paths)

uncut viper
#

its a fork of the original dnSpy

lucid iron
acoustic summit
lucid iron
#

without restarting smapi

uncut viper
#

i find dnSpy decompiles some functions a lot better than ilspy personally

#

i also used it to learn how to write transpilers initially with its ability to edit a class in place and then see the resulting new il

#

i dont think dnSpy is a bad habit

lucid mulch
#

when I was experimenting with automating the decompile repo I got up to
ilspycmd -o D:\Git\StardewValley\Code --nested-directories -p -usepdb --ilspy-settingsfile D:\Git\StardewValley\ILSpy.xml -lv CSharp10_0 .\BmFont.dll .\Lidgren.Network.dll .\MonoGame.Framework.dll .\SkiaSharp.dll '.\Stardew Valley.dll' .\StardewValley.GameData.dll .\TextCopy.dll .\xTile.dll
with the config file

and it has some positive changes compared to the existing decompile repo (preserving enum usage) along with changes to how structs get initialized

-            if (this.m_status != 0 && this.m_status != NetConnectionStatus.Disconnected)
+            if (this.m_status != NetConnectionStatus.None && this.m_status != NetConnectionStatus.Disconnected)
-HalfSingle hx = default(HalfSingle);
-hx.PackedValue = message.ReadUInt16();
+HalfSingle hx = new HalfSingle
+{
+    PackedValue = message.ReadUInt16()
+};
gentle rose
lucid iron
#

button i think using dnSpy to make mod is the bad habit discussed here

#

as in entirely using it to compile the dll

uncut viper
#

why would using ilspy to make a mod be any better

lucid iron
#

awa is convert their mods which only exist as dll previously to csproj + source code i think

acoustic summit
#

Yeppp that is what I am trying to do currently

uncut viper
#

seems like dnSpy would work just as well then is my point SDVpufferthumbsup

reef cosmos
lucid iron
#

yea i imagine using to do the decompile is similar, as long as you do the same reference path settings to game folder and smapi internals folder

lucid mulch
#

I kinda want to document the gaps in ilcpy (via cli) and see if any are willing to be fixed upstream, because I have no idea why ILSpy decided that this nested function just... doesn't get emitted

#

its visible in ILSpy in one of the magic compiler hack classes that goes along with it, it just doesn't appear in the outputted C#

calm nebula
#

(Well, the function isnt actually there πŸ˜› )

lucid mulch
#

it doesn't emit the 'true' location either though

#

but does emit the function calls to something it didn't emit

pseudo bronze
#

hey yall this isn’t exactly making a mod per se but would it be possible to find all possible dialogue for one specific character in the code or is that not something that can happen???

hard fern
#

!unpack

ocean sailBOT
#

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

hard fern
#

so you'll have to do a bit of poking around

pseudo bronze
#

OOOH alright thank you!

rare prawn
#

Hello! I could use another brain on this. I am looking at my code and assets and can't figure out why this is happening. For some reason the tree sapling animation is not working properly and it is showing parts of the fully grown tree in the frames instead. __
Here is a picture of the fully grown tree beside a sapling:
https://i.imgur.com/mue7zbZ.gif

Also attached a picture of my asset.png

Here is my code: https://smapi.io/json/none/78c526925206458a866e8a03e0ed20a4

Here is a preview of the one section I am focused on, which is hopefully where the problem is?:

        "Action": "EditData",
        "Target": "spacechase0.SpaceCore/TextureOverrides",
        "Priority": "Late +11",
        "When": {
            "Festive Tree Timeframe": "BeforeFeast",
            "Day": "22, 23, 24, 25",
        },
        "Entries": {
            "Shyzie.FestiveTree/BeforeFeastFestiveTree": {
            "TargetTexture": "TerrainFeatures/tree3_winter",
            "TargetRect": { "X": 0, "Y": 0, "Width": 48, "Height": 96 },
            "SourceRect": { "X": 0, "Y": 0, "Width": 48, "Height": 96 }, 
            "SourceTexture": "Shyzie.FestiveTree/CurrentSprite:0..1@40" 
            },
            "Shyzie.FestiveTree/BeforeFeastFestiveTreeSapling": {
            "TargetTexture": "TerrainFeatures/tree3_winter",
            "TargetRect": { "X": 0, "Y": 96, "Width": 16, "Height": 32 },
            "SourceRect": { "X": 0, "Y": 96, "Width": 16, "Height": 32 }, 
            "SourceTexture": "Shyzie.FestiveTree/CurrentSprite:0..1@40"
            }
        }
    },
latent mauve
#

Looking at the SpaceCore docs, and I don't see SourceRect as a field there for the animated textures?

latent mauve
lucid iron
#

there's no sourcerect but having extra field should have no effect

lucid iron
#

the thing you are seeing is the first 2 16x32 frame on Shyzie.FestiveTree/CurrentSprite, which would be source rects 0,0,16,32 and 16,0,16,32, aka top of tree

#

if u dont want to rearrange textures then you need to put "SourceTexture": "Shyzie.FestiveTree/CurrentSprite:18@40,Shyzie.FestiveTree/CurrentSprite:21@40"

rare prawn
#

Gotcha! I saw that on my old DGA code but didn't know why I put it before lol

#

Thank you!

#

Just got back from doing a chore,sorry for late reply :3

lucid iron
#

Maybe it worked on dga before Dokkan

rare prawn
#

Looks like it doesn't work anymore, using the SourceTexture "Shyzie.FestiveTree/CurrentSprite:18@40,Shyzie.FestiveTree/CurrentSprite:21@40"

#

Might have to separate the textures afterall siiigh

gentle rose
#

could you send the image directly in the channel btw? imgur is blocked in quite a lot of countries nowadays (including the uk haha)

hard fern
#

πŸ€” this is the image

cerulean bluff
#

Hey, It's my first time making a game mod, but I'm a long time programmer. I am trying to use content patcher to add a new machine. I made it so I can use the console to add the new BC to my inventory and put it down with my custom sprite, but when I try to put items into it to trigger it, it doesn't work. I followed a tutorial I found online and can't see anything I did wrong?

Could y'all help me out? Is the best way to just paste the 3 related objects from my Changes array in content.json in here?

lucid iron
lucid iron
cerulean bluff
#

Yeah, I did an EditData on the same Entry... I think?

#
      "LogName": "Add analyzer rules",
      "Action": "EditData",
      "Target": "Data/Machines",
      "Entries": {
        "BreedSeed_Analyzer": {
          "OutputRules": [
            {
              "Id": "BreedSeed_AnalyzeOutput",
              "Triggers": [{
                "Id": "BreedSeed_AnalyzeInput",
                "Trigger": "ItemPlacedInMachine",
                "RequiredItemId": "(O)472",
                "RequiredCount": 1
              }],
              "OutputItem": [{
                "Id": "BreedSeed_AnalyzeOutputItem",
                "ItemId": "(O)472",
                "MinStack": 1
              }],
              "MinutesUntilReady": 0
            }
          ]
        }
      }
    }```
lucid iron
#
Stardew Modding Wiki

Last edited by AtlasVBot on 2025-09-13 18:56:04
Stardew Valley 1.6 now natively supports machine rules, so you (for the most part) no longer need another framework like PFM, only Content Patcher. With that being said, machine data could be somewhat complicated, but once you know how things are formatted and how certain CP concept works it should...

#

Ah your id is wrong

#

Need the (BC) in front

cerulean bluff
#

On line 6?

calm nebula
#

Do you intend on transforming item 472 into item 472

cerulean bluff
#

that definitely did something

#

And yeah, I was just trying to give the same item back for now

#

more POC than anything else

lucid iron
#

BreedSeed_Analyzer has to be (BC)BreedSeed_Analyzer yes

cerulean bluff
#

Thanks!

lucid iron
#

If u look at unpacked all machine data use the qualified id

cerulean bluff
#

unpacked?

lucid iron
#

!unpack

ocean sailBOT
#

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

cerulean bluff
#

awesome

rare prawn
gentle rose
#

(and preferably a non imgur image if possible)

left nova
#

Is there a way to keep an NPC showing the β€œsingle” status in the social menu, but prevent them from being datable or marriageable until certain conditions are met?

hard fern
#

πŸ€” im not sure about keeping the "single" status, but i know you can just change the "CanBeRomanced": false, in an npc's character data based on condition

uncut viper
#

doing so is what removes the single status

#

if an NPC isnt romanceable then it doesnt show that they are single bc they are ineligible to begin with and i dont know of a way to change that, framework or otherwise

#

could maybe try adding RejectGift_ dialogues for the bouquet and pendant? i dont remember if those have priority

left nova
#

I want to keep the surprise element in my story so the removing of 'single' tag in menu would make it more less like a spoiler.

left nova
#

Yeah RejectItem_ dialogue seems to work, thanks again Buttons.

noble ermine
#

If I want to trigger a event by gifting a specific item, but don't want to consume that item, is there any command I can use?

gentle rose
ornate locust
#

oh no

hard fern
ornate locust
#

AI mod guy released a performance boost mod. The number of those I've seen that do damn anything is slim enough...

hard fern
#

ahahaha

#

is this no more lag 2

#

i think i havent seen any more logs with that mod in them at this point

ornate locust
#

Looks like it's supposed to set the process to high priority, and for some reason the guy tagged it with "fallout Modathon 2025" and not AI

#

Sure are

#

actually he has two event/contest tags that make no sense

#

Not AI though

devout otter
#

Yar, at the early days of their mods, they tagged them with everything.

#

Except AI and the NSFW stuff.

ornate locust
#

I guess they figure it was ~exposure~

hard fern
#

sdv performance mod in the fallout modathon SDVdemetriums

gentle rose
#

why do they have screenshots of their source code now

hard fern
#

i. dunno?

#

i think there's better methods of sharing your source code out there lol

gentle rose
#

any why warn us not to do something the mod doesn't allow in the first place

hard fern
#

i..... dunno.......

#

iro will you warn users to not use your tilesheetinator as a toaster

gentle rose
#

apparently I have to warn them not to try to use it as an unpacker so

#

who knows

ornate locust
#

look this guy can't write a description without getting a machine to do it, I don't expect good decisions on even just how to share code

noble ermine
#

How do I know the coordinates of the location I want my character to move to in an event?

ashen thunder
noble ermine
#

Cool, I'll add it on later

hard fern
#

hm, if i want a character's dialogue to be set in a linear fashion, ex: line a triggers, line b triggers the next day, but only if line a has been seen, how would i go about that? I had a (bad) idea for a mod that would make use of something like this

#

but im not sure how it would go

gray bear
#

don't think there's a GSQ to check whenever a dialogue line was seen

whole raptor
#

Maybe add a flag at the end of dialogue A? SDVpufferthinkblob Not sure if it's possible, but sounds likely

brave fable
#

add a conversation topic from that line of dialogue using $t?

compact jasper
#

I got some babymode questions as I try to remember how modding works

If my trigger for sending mail to a player is HasSeenEvent, where would I put that to have mail sent to the player?

Right now this is what i have for my very incomplete mail json

"Changes":[
//Adds Mail
{"LogName": "Kieran's Mail",
"Action": "EditData",
"Target": "Data/Mail",
"Entries": {"Aeolian.KieranMail001": "{{i18n:Kieran.Mail001}}",}, 
}

    ]
}

and the i18n

//Mail
"Kieran.Mail001": "I felt it would be advantageous to stay in touch. I do not wish to burden you, so please accept this as a token of a mutually beneficial relationship. If you go into the mines often, it would assist me greatly if you could bring back some ingredients. %item money 100 %% %item conversationTopic TalkingAboutKieran 7 %%",

The event I want to use is called "Aeolian.Kieran001" and I'm drawing a complete blank on where I'd put it to ensure that this mail is sent after this event is viewed.

karmic gust
#

You would use that as a condition in the trigger action that sends the mail

#

There's a Condition field that you'd use a GSQ to check if the player has seen the event

compact jasper
#

Where in my code would I plug in the trigger action?

karmic gust
#

The trigger action would be a separate patch than the mail patch

compact jasper
#

I feel like this is different than how it was before 1.6 which is why I am so confused

karmic gust
#

I didn't mod before 1.6 but I do believe that was changed

ocean sailBOT
#

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

compact jasper
#

Or that I was using Mail Framework Mod to do mail in stead of Content Patcher

#

so I am very confused, I don't know where to put trigger actions as a separate patch

karmic gust
#

Sorry, I'm not always the best at explaining! You would do another EditData patch

lucid iron
#

It's 2 different patches because it's 2 different Target

#

Mail has to first exist

#

And then you can send it with action

#

Not that different from say making an item first and then adding it to gift taste in separate edit

pliant patio
#

I have a question, I'm planning on making a mod where one of the bachelorettes has a pre established child (npc like jas and vincent( father is out the picture)). Would it be possible for both npc's to move in with the player ?

lucid iron
#

Needs a soonβ„’ framework

#

Or a multiple spouse mod and have the child be setup as a roommate

pliant patio
#

ahh okay thanks so much !

pliant patio
#

woah thanks a lotSDVpufferheart

compact jasper
#

let me see if I can make sense of it

so I would add another patch

that looks like this

      "LogName": "Mail Trigger",
      "Action": "EditData",
      "Target": "Data/TriggerActions",
      "Entries": "AddMail Current KieranMail001"
    },```

and right here I want a code for "when" and "PLAYER_HAS_SEEN_EVENT current Aeolian.Kieran001", I know there's a way to add 'when' but I don't remember how πŸ™

Sorry, I know I'm like mega babymode rn and not doing this correctly probably. i'm just struggling to remember how to do this
lucid iron
#

Ah no the entries don't work like that it's a model

compact jasper
#

i do not understand OTL

lucid iron
#

There's an example on the wiki page

#

And also examples in the unpacked content

karmic gust
#

The trigger action page I linked has an example of how to set it up correctly under the Triggers tab

lucid iron
#

Since vanilla mails also go through trigger actions now

whole raptor
compact jasper
#
"Action": "EditData",
"Target": "Data/TriggerActions",
"Entries": {
            "{{Aeolian.Kieran}}_MetKieran": {
                    "Id": "{{Aeolian.Kieran}}_MetKieran",
                    "Trigger": "PLAYER_HAS_SEEN_EVENT current Aeolian.Kieran001",
                    "Actions": [
                        "AddMail Current {{Aeolian.Kieran}}_Kieran.Mail001",
                        "AddConversationTopic {{Aeolian.Kieran}}_TalkingAboutKieran 7"
                    ]
                }
            }
},```

Does this look correct?

I wasn't sure what "Condition" meant or if I needed it in there
lucid iron
whole raptor
#

Interesting SDVkrobusgiggle

lucid iron
compact jasper
#

Yes its my mod ID

#

so {{ModID}} automatically replaces what is inside the brackets with my mod ID? is it pulling that from manifest.json?

#

because in manifest.json its called "Unique ID"

whole raptor
#

Yep

lucid iron
#

Yeah it's a content patcher token

#

And it aint checking generally for manifest field names, just specifically means your mod id aka unique id

compact jasper
#

how do I know for sure it is pulling the correct name of my mod

tiny zealot
#

you can look at content patcher's source code to make sure, or test it empirically. either one should work

karmic gust
lucid iron
#

This will show you the token's value

karmic gust
#

So trigger would say one of DayStarted, DayEnding, or one of the other options

tiny zealot
lucid iron
#

Yeah sorry i dum

#

But you can also do patch export on the asset so that you know your edits worked

compact jasper
#

so the trigger could be "DayEnding" and the condition "PLAYER_HAS_SEEN_EVENT current Aeolian.Kieran001" ?

karmic gust
#

Yeah

compact jasper
#

Does caps matter? Not sure if I need to all caps everything

#

I just copied the exact thing from Game State Queries

karmic gust
#

That I'm not sure. I just copy the format on the wiki

compact jasper
#

so this is from my mail json, which I 'included' in the content.json. if I had this plugged in as-is, would it work the way I intend (player gets mail after viewing Kieran's first event)

"Changes":[
//Adds Mail
{"LogName": "Kieran's Mail",
"Action": "EditData",
"Target": "Data/Mail",
"Entries": {"Aeolian.KieranMail001": "{{i18n:Kieran.Mail001}}",}, 
},
{
"Action": "EditData",
"Target": "Data/TriggerActions",
"Entries": {
           "MetKieran": {
                    "Id": "MetKieran",
                    "Trigger": "DayEnding",
                    "Condition": "PLAYER_HAS_SEEN_EVENT current Aeolian.Kieran001",
                    "Actions": [
                        "AddMail Current Kieran.Mail001",
                        "AddConversationTopic TalkingAboutKieran 7"
                    ]
                }
            }
},

    ]
}
lucid iron
#

They'd get mail after going to bed Bolb

compact jasper
#

Yes thats fine, it would take kieran a while to write the letter

lucid iron
#

Although hm it occurred to me that you can send mail in the event too right

compact jasper
#

I am not sure of that

karmic gust
#

Yeah you can

lucid iron
#

/action AddMail <same args>

compact jasper
#

I do want him to send it after the player leaves, or the next day

lucid iron
#

If it's just 1 day after then this is fine cus AddMail has a tomorrow option iirc

#

Trigger action is needed if u need more complicated condition like a week after event seen or something like that

compact jasper
#

Since I've moved the conversation topic into the Trigger Actions, I can still keep the contents of his letter to include money the way it is, right?

This is in his i18n file

"Kieran.Mail001": "I felt it would be advantageous to stay in touch. I do not wish to burden you, so please accept this as a token of a mutually beneficial relationship. If you go into the mines often, it would assist me greatly if you could bring back some ingredients. %item money 100 %%",

karmic gust
#

Yes. You can also add conversation topics in events

compact jasper
#

Ok! I think im starting to remember how things work, thank you everyone for your patience with my noob questions

tiny zealot
#

that last bit is about doing a FromFile or any SMAPI function that takes a file path: on Windows, the file system itself is case-insensitive, so case mismatches are silently fine, but on linux (and i think macos but who knows lol) it is not and your mod will break

karmic gust
#

Interesting. That's good to know!

compact jasper
#

I just tested in-game and the mail did not work, so now I'm sure I did something wrong

calm nebula
#

MacOS is by default file paths case insensitive

compact jasper
#

is "DayEnding" when the player goes to bed and not when the day/night cycle completes?

calm nebula
#

But it is a thing you can do in setup

compact jasper
#

Ok, so I did something else wrong then πŸ™

lucid iron
#

DayEnding is just before you save

#

After sleep

calm nebula
#

But, actually, you dont need all caps because it does actually not matter in this one specific instance

lucid iron
#

So I'd debug first by patch export mail and trigger actions to see if your edits went in

compact jasper
#

how do I do that

lucid iron
#

patch export Data/mail

#

You can generally do this on any Target you are editing

compact jasper
#

yes, his letter is in there

#

it looks like it didn't read the trigger action to send the mail in the first place, so it didn't show up in my mailbox after waking up the next day

lucid iron
#

After that you can debug your condition by debug gq <the gsq as written in export>

#

And debug action <the action>

lucid iron
compact jasper
#

im so sorry im sitting here with the stupidest, vacant stare on my face because i don't know what a gsq is, or what you mean by 'export trigger action'

#

youre talking to an infant whose knowledge is like cheesecloth LOL

lucid iron
#

Well u did patch export mail already yes?

compact jasper
#

i assume by 'export' you mean this is a patch export, so i am writing 'patch export data/triggeractions

lucid iron
#

Please also do that yep

#

Gsq is game state query aka the thing you put in Condition

compact jasper
#

Yes I do see it in there, so now I know that both the mail content and the trigger actions are in the game files, but whatever I wrote is not working as intended

so I am writing debug gq "PLAYER_HAS_SEEN_EVENT current Aeolian.Kieran001" next?

#

based on this, it knows that the player has seen the event, but the only mail I'm getting is from Willy x.x

lucid iron
#

Something u may need to do when testing is to mark your trigger action as unapplied again

compact jasper
#

I made a new character, idk if that is what you mean

hallow prism
#

"AddMail Current Kieran.Mail001",

#

isn't it missing the prefacing?

karmic gust
#

Ahh I think I see the problem. Your mail is named Aeolian.KieranMail001 but your trigger sends Kieran.Mail001

hallow prism
#

jinx

compact jasper
#

... i KNEW it would be something silly like that. Thanks for catching it

#

I am so, so rusty

karmic gust
#

Happens to everyone, I think lol. At least it does for me

compact jasper
#

I was lookin gat what I called it in the i18n and not the actual ID

hallow prism
#

my common mistake is to have lumisteria.lumisteria.mtvapius

compact jasper
#

This NPC is going to have a lot of events and letters, this is just my practice so I can remember how to do this before I do what i do best which is narrative writing and not coding x.x

#

I would pay someone to do all my code for me if I had a willing victim (and money)

#

His mail works now ;;

#

it was all just that one ID being wrong haha

opal hull
ocean sailBOT
#

Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26200.0, with 47 C# mods and 109 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

gentle rose
opal hull
#

Ignore the house looking weird -- it's just a stand in until I can commission someone to make custom art

calm nebula
#

Looks like unembedded tsx not included

#

Try that first

opal hull
#

Is it because I'm trying to use PlatinumCats' Cherry Lake Tilesheet? I have it listed as a dependency and loaded on the test save, but the images are pngs and tiled wouldn't let me add them to the tilesheets as pngs. I wasn't sure if they would convert with Content Patcher or what... How do I just use the pngs? @calm nebula

compact jasper
#

Trying to remember how to write events. I think I have the bones of one, but I want it to trigger when my character's heart level is at 1. I don't remember how to write this, or where to put it πŸ™

"Action": "EditData",
"Target": "Data/Events/Sewer",
"Entries": {"Aeolian.Kieran002/": "
Upper_Ambient/16 11/farmer 16 11 2 Kieran 30 17 1 Krobus 31 17 3/
skippable/
viewport 31 17/move farmer 0 11 2/move farmer 15 0 1/move farmer 0 -3 0/pause 500/message \"{{i18n:Kieran002.1}}\/pause 1000/message \"{{i18n:Kieran002.2}}\/pause 500/speak Kieran \"{{i18n:Kieran002.3}}\"/
pause 500/emote farmer 32/pause 3000/globalFade/viewport -1000 -1000/end position 31 17"},
 
    ]
}```
autumn tide
compact jasper
#

I am not sure I understand D:

autumn tide
#

Oh, for us to better read it needs to be formatted the standard way

#

and in VS code, you can use option+shift+f to instantly format it in that standard way

devout otter
#

Put it on the precondition key, just after Aeolian.Kieran002/

compact jasper
#

what is Option on PC? Is it CTRL?

autumn tide
#

probably

devout otter
#

It`s 250 points per one heart.

compact jasper
autumn tide
compact jasper
autumn tide
compact jasper
#

when i copy over in discord i have been using three ` to turn it into a text box, but i dont think i know how to post it as a properly formatted code in Discord

autumn tide
#

!json

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.

compact jasper
autumn tide
#

thanks!

compact jasper
#

The first event triggers just when the player enters his custom house (that one works fine). the second one I have yet to test, but it should trigger when the player enters the Sewers at Heart Level 1

autumn tide
#

events are just hard

compact jasper
#

In my first event I had it where the player could have dialogue options as KIeran was directly asking them questions. I want to do the same thing again for the second event, but I admit, reading what I wrote over a year ago has turned into Greek to me. Does 1.6 handle things differently now in regards to giving the player response options?

autumn tide
#

no clue, i'm new lol

compact jasper
#

I am one of the authors of the toshinori npc mod and did a lot of code heavy lifting, this was years ago

#

and i forgot everything

autumn tide
#

...very new, have not heard of it 😭

compact jasper
#

its fine! he just had a whole whole lot of content back in the day

#

i wrote easily 20 events or so

autumn tide
#

damn!

compact jasper
#

but now i feel like i am starting over from the beginning

autumn tide
#

i'm impressed, events are reallly hard

devout otter
compact jasper
#

My new NPC is named KIeran, and he's Krobus's friend who lives in a custom house in the sewers. so naturally he's not going to be found until the player unlocks the sewers and sees Krobus. Kieran's plot will be directly tied to Krobus and he's designed to eventually update all his dialogue/schedule if the player becomes Krobus's room mate. he also is meant to react very negatively if the player kills Shadow monsters in the mines, which i am assuming I could call up with similar code used to track the number of monsters the player has slain that the Adventurer's Guild shows you

compact jasper
#

these are similar things i coded for Toshinori in the past, except now, my ambitions feel impossible haha
even though I know its possible to do at least most of my ideas, because I've done it before

autumn tide
#

it sounds doable to me!

#

awesome portraits btw SDVpufferheart

compact jasper
#

thanks! I'm more of an artist than a coder

#

Kieran is not meant to be very expressive, so his expressions aren't very extreme. He's kind of a low-key guy

autumn tide
#

OH one sec i forgot i was gonna look over the json file-

#

added some formatting stuffs, i kinda suck at events so idk how much i'd be able to help out there-

compact jasper
#

Thanks! I'll take a look!

opal hull
#

I've done more Googling, and I'm not seeing how to use the pngs from the tilesheet that's a dependency in my map file? Tiled only lets me turn the pngs into a different file type for use...

autumn tide
#

godspeed 🫑

opal hull
# merry river what exactly do you mean?

When I posted my map's tmx above, someone said the problem was that an embedded tmx wasn't included. I'm guessing that's because I'm trying to use someone's tilesheet as a dependency, but it comes as a png. But if I try to add the png as a tilesheet to tiled, it won't let me. I was only able to add it to the tilesheet if I allowed tiled to convert the png to tmx(?). But if it's looking for that tmx when trying to add the map to the game, then it won't find it because the tilesheet that's a dependency for my map comes as a png. So my question is, how do I use the pngs in tiled such that Content Patcher can pull them from the tilesheet's mod folder?

devout otter
#

So what you need to do when you are using tilesheet from another mod is:

  1. Copy the tilesheet png you want to use to the same folder as your map tmx.
  2. Create a new tileset on your map, load the png while making sure you've checked "Embed in map".
  3. Make your map. Save.
  4. Delete the tilesheet png from your folder.
merry river
#

Dolphin beat me to it and explained it better than I would have anyway SDVpufferfingerguns

merry river
compact jasper
#

He does have a style closer to SDV option as well, but I hope people play with the realistic one, because I spent so much time on it hahaha

#

I am really bad at trying to imitate other kinds of art styles πŸ™

odd ginkgo
odd ginkgo
merry river
compact jasper
compact jasper
compact jasper
#

So I just now tried to test the event (this is the first event ive written since my years-long hiatus) aaand it does not even trigger to start playing at all πŸ™ This leads me to believe its either not triggering correctly in the location, or its not triggering correctly due to his friendship/heart level? (I have a mod that lets me edit the heart level of NPCs so that's what I did to make him at 1 heart, but the event didn't trigger anyway)

#

{
"LogName": "Kieran Heart Event 1",
"Action": "EditData",
"Target": "Data/Events/Sewer",
"Entries": {
"Aeolian.Kieran002/Friendship Kieran 250/": "
Upper_Ambient/16 11/farmer 16 11 2 Kieran 30 17 1 Krobus 31 17 3/
skippable/
viewport 31 17/move farmer 0 11 2/move farmer 15 0 1/move farmer 0 -3 0/pause 500/message "{{i18n:Kieran002.1}}/pause 1000/message "{{i18n:Kieran002.2}}/pause 500/speak Kieran "{{i18n:Kieran002.3}}"/
pause 500/emote farmer 32/"quickQuestion #{{i18n:Kieran002.4}}#{{i18n:Kieran002.4b}}#(break)"{{i18n:Kieran002.5}}"(break)"{{i18n:Kieran002.5b}}"/pause 3000/globalFade/viewport -1000 -1000/end position 31 17"},
},

gentle rose
#

-# is it time to try to convince a portrait maker to animate their portrait

compact jasper
gentle rose
compact jasper
#

I'd do it if I was paid, which is a big ask since I'm putting my OC in the game out of love of the OC XD
But animations? I only animate if I am paid to do it, only insane shut-ins can animate and I have mad respect for them (I can animate, but I am not an animator XD)

gentle rose
#

I'm currently making a portrait animation (among other things) framework and trying to bully kindly convince as many artists as possible to make stuff for it so hopefully I'm able to find a few more shut-ins SDVpuffersquee

compact jasper
#

man how many years ago was it now... i dont remember x.x

#

He was an insane amount of work, I put in many months of effort

#

Kieran is not going to be as ambitious

gentle rose
#

it's designed to allow things like only having a mouth moving while dialogue is still typing etc, let me find some of the clips of the animations dacar made with it

brittle pasture
gentle rose
compact jasper
#

Oh that's awesome

#

And it looks way more doable than animating the entire portrait

gentle rose
#

yup, you can do animated overlays/layers

odd ginkgo
#

just curio

compact jasper
#

the farmer enters the scene off-camera in this event

whole raptor
#

Btw Iro, just out of curiosity.. are the packs for the framework gonna be separate or it's just patches in CP? SDVpufferthinkblob

odd ginkgo
compact jasper
#

Clearly something's broke about this event though, because it isn't triggering upon entry to the sewers

compact jasper
#

My realm of confidenec is pixel art, everything else I'm relearning how to ride the bike

odd ginkgo
#

side question, is "Kieran" the NPC's official id name? for ex my npc Koda is CC_KodaK in the code - the friendship requirement won't trigger unless it's "/f CC_KodaK 250/" for example

tiny zealot
#

i (and others) strongly encourage everything you add to the game, including NPCs, to have their ids namespaced by your mod id, in accordance with convention

#

there are a few things left where it's not possible (e.g. secret notes), but most things take strings and it's best to use it wherever possible

#

(i did make a framework to circumvent the secret notes problem, though)

elfin kindle
#

I'd say that's general mod etiquette (but it's not weird to be unaware of it, no shame there), but it's also useful to set a DyanmicToken in the Content.json with your characters internal name as just their written name. That stuff saved me so many issues and annoying writing

tiny zealot
#

oh yeah, i support that. my npc's internal name is Not Pleasant so it's nice to have (mostly) just her name as an option

compact jasper
#

I was not aware of the etiquette, my bad

#

How would I go about fixing this retroactively?

elfin kindle
#

No worries dude, neither was I before going in here!

lucid iron
#

If ur mod's unreleased u can just fix it

#

If released then it's harder, need to use formercharactername and possibly migrateids

compact jasper
#

It is unreleased

lucid iron
#

Release implies need to keep things working for existing saves

elfin kindle
#

What I did was make the name (Kieran in this case) a DynamicToken thats means {{ModId}}_Kieran. Then you just need to go through your files and replace all cases of Kieran with {{Kieran}} (Not counting dialogue, where you just want it to say Kieran). Do you get what I mean or do you want a visual representation? ^^

compact jasper
elfin kindle
#

gotcha! lemme put that together for ya :)

compact jasper
#

thank you for helping me! i want to make sure it follows ettiquite/conventions

elfin kindle
#

In your content folder, underneath the "Format: "2.8.0" you want to put in this piece of code. That tells the game that whenever you write {{Kieran}} you actually mean {{ModId}}_Kieran.
` "DynamicTokens": [

    {
        "Name": "Kieran",
        "Value": "{{ModId}}_Kieran"
    }

],`

Once that is set up, you want to go through your files and check anywhere where Kieran is "summoned" or called on. The reason it's recommended to put your modId before the characters name is incase someone else also makes an NPC with the same name, the game doesn't get confused on which character to summon

compact jasper
#

I see, I think I understand. So any time it says Kieran I replace with {{ModID}}_Kieran ?

elfin kindle
#

Here's some examples of where I've used {{Skata}}, it's all places where the game internally checks names. In dialogue it should just be Skata, as otherwise the dialogue will say SpecialAgentJonson.SkataTheMagpie_Skata which is a little silly

compact jasper
#

I'm so worried I'm going to break everything if I try this x.x

elfin kindle
elfin kindle
compact jasper
#

OHH so i don't write {{ModID}}_Kieran either, I just write {{Kieran}} ?

elfin kindle
#

It doesn't matter in the end really, they will mean the same if you set up the dyanmictoken

tiny zealot
compact jasper
elfin kindle
#

Yeah, as embarrassing as it is to admit I didn't take the advice given but genuinely, best time is to do it now so you have less names to change

compact jasper
#

For example, I plugged in your code exactly as you wrote it for me earlier, and just now changed this

{
  "LogName": "NPC Sprite",
  "Action": "Load",
  "Target": "Characters/Kieran",
  "FromFile": "assets/img/spritesheet.png"
},

to this

{
  "LogName": "NPC Sprite",
  "Action": "Load",
  "Target": "Characters/{{Kieran}}",
  "FromFile": "assets/img/spritesheet.png"
},
#

is that all it takes?

elfin kindle
#

Yup!

compact jasper
#

OK so that's not too scary

#

so its any time i see his name, outside of i18n dialogue files using his name?

#

and log names/comments?

elfin kindle
#

I want to say yes, so yes PFFFT I've only made one NPC mod so others can correct me if im wrong

compact jasper
#

Ok, so how about this case...

does dynamictokens work when its in the middle of the filename so i'd be changing these to "assets/schedules/schedule{{Kieran}}Villager.json" like that?

elfin kindle
#

In that case, you're calling on a .json in your assets. The game will read that as
assets/schedules/scheduleYourModIDHere_KieranVillager.json
Which isn't what your asset is called in your map so no, you shouldn't use it there

tiny zealot
#

you only have to sub out if you're giving the game his name. so you can name your files whatever you like
(but the token does work in a case like that, yes)

compact jasper
#

I will try to wrap my tiny little neurons around this

elfin kindle
#

But very good question, good catch!

tiny zealot
#

it requires a little bit of Programmer Mindset to grok when it's needed /lh

merry river
#

replacing the annoying modid thing with a dynamic token....... that's so smart. i need to overhaul my mod as well now

elfin kindle
#

Here's how my portrait and sprite calls look! I'm loading them in {{Skata}}'s character stuff, but im calling on my own assets name just as theyre written in the images map ^^

urban patrol
elfin kindle
#

Truly

urban patrol
#

i need to overhaul mine as well… been dreading it but i think it’s time with all NPCs released

elfin kindle
compact jasper
#

Would someone be willing to check my work on my content.json

elfin kindle
#

I'm free to take a look ^^

merry river
#

me too once i haul my butt back to my computer

merry river
compact jasper
merry river
#

i think it's best to use the json validator! there was a command for that

#

!json

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.

compact jasper
#

I'm mostly just trying to make sure I caught all the instances where I DO need to turn his name into a dynamic token

elfin kindle
#

The dyanmic token looks correctly integrated! But yes, use the link cus it's a little easier to read hehe, but the GiftTaste needs to be "{{Kieran}}:" as well!

compact jasper
#

ok! and as for the events, do I need to do the dynamic token any time Kieran is called in the event, such as to place him, move him, etc?

elfin kindle
#

Yup! ^^

compact jasper
#

Oof, ok

#

but im assuming i can't put a dynamic token inside a dynamic token (since i18n is allready a dynamic token)

elfin kindle
#

You can, actually, i believe lolol

compact jasper
#

yikes

#

do i need to do that

elfin kindle
#

I mean {{ModId}} is a dyanmic token, and youre putting that in a dyanmictokne ({{ModId}}_Kieran = {{Kieran}})

merry river
#

yeah as far as i know it's possible to tokenize inside tokens

autumn tide
#

you can't put a query in a query tho

#

but i think tokens are good in queries

merry river
#

also the content patcher doc on tokens is super helpful! once you are in the mind space, i suggest reading through it
let me grab the link

autumn tide
#

always have it open lol

#

i won

elfin kindle
# compact jasper do i need to do that

I don't think you need to do it for your i18n if that's what youre wondering. It will check your mods default i18n, and no look into other mods so it shouldn't get confused if there's ever two different Kierans in the game

merry river
#

i'm on mobile rn because i was eating dinner lmao
thanks claude

compact jasper
elfin kindle
#

I check the instructions cooonstantly, once youre in it, you can also come up with a bunch of fun stuff to do. I did two diverging routes for a character hehe

autumn tide
#

oh, for events the json smapi thing struggles with multilinging, could you paste the event here?

compact jasper
#

Oh yeah he's got a diverging story- one where he can be convinced to give up his alchemy project and move out of the sewers to join the villagers in the town

#

and one where he's encouraged to keep working on his project, but he stays in the sewers

#

(he's trying to come up with a 'cure' to the Shadow People in the mines, he thinks a sickness has made them violent)

autumn tide
compact jasper
#

Kieran thinks hes protecting Krobus, so thats why he lives there with him

compact jasper
#

But if the player gets Krobus to be their room mate, Kieran is going to have a different schedule, but his motives are the same

elfin kindle
autumn tide
#

(pls lore drop i beg you)

elfin kindle
#

Hmu if you need help with setting that up, I dunno how experienced you are, you might already know how you want to handle that but I'd be happy to help if you need it ^^

cedar turtle
#

Smol question.
I'm trying to convert a greenhouse interior replacer into PIF, and need the correct warp point (it's currently in the middle of the room somewhere)
How do I figure out the right one?

compact jasper
#

I integrated his plot/storyline with the way a player took Marlon's storyline in the mod "Befriend Marlon and Gunther." So Kieran and Marlon have a complicated history, and they're not on speaking terms. Kieran feels a lot of guilt about it, so he's living in the sewers halfway because he wants to protect Krobus and halfway out of shame

cedar turtle
#

And the right warp point to get out. It's currently the greenhouse exit lol

merry river
#

aeolian, claude is the ceo of the much needed krobus overhaul, i think you two should conspire SDVkrobusnaughty

autumn tide
compact jasper
autumn tide
#

YES

compact jasper
#

I would at least like to have compatibility between our mods

cedar turtle
autumn tide
#

hmm, maybe? my storyline seems differnt at first glance but conspiring would be fun SDVkrobusnaughty

compact jasper
#

Kieran believes the shadow people are infected with some sort of disease inthe deep mines, so he's trying to create an alchemical cure for them. Meanwhile, he's afraid the villagers will hurt Krobus if word gets out about him, so he stays in the sewers to protect Krobus and hide him from those who might do him harm. But when Krobus gets out and alerts the player, and the player comes to the sewer for the first time, Kieran begs the player not to hurt Krobus and to keep him a secret. he later keeps sending the player out to find alchemy ingredients for his project.

#

I'm not sure how well this would work with your storyline, but I can adjust if needed

autumn tide
#

hmmm okayyy

compact jasper
#

(Kieran does not ever succeed with his project. His diverging path will be either he goes into town and gives up on curing the shadow people, or he stays in the sewers to keep being an alchemy hermit.)

autumn tide
#

i'm still not sure about any early game lore for my mod bc my specialty is high-heart level drama and traumatic backstories LOL

#

...but i do have 100+ pages of lore so...

#

i have ✨ ideas✨

compact jasper
#

I am also definitely going for high drama! I have all my events essentially written, right now I'm just scripting them in the code (and failing miserably). But one event involves the player trying to stop Kieran from going into the mines to test his latest alchemical solution, only for him to get tragically beat-up by a shadow brute that he fails to cure

compact jasper
#

in this instance he will have about 7 in-game days of being in the hospital, his schedule updating to the hospital, etc

elfin kindle
#

Event scripting is hell a lot of the time/lh

elfin kindle
#

That's fantastic, i love an event where stuff actually affects the character

compact jasper
#

Krobus would feel guilty about what happened to Kieran and also try to convince him to stop trying to go into the mines, its too dangerous for him, kieran is a wimpy little man

autumn tide
elfin kindle
#

I will 100% add him to my game once he comes out

compact jasper
#

i would be honored! he is an OC near and dear to my heart

#

He is also going to be coded to recognize if the player has Pacifist Valley installed. I wanted there to be ambitious integration but for now I just twant him to acknowledge it like, "I see you are trying a nonviolent solution. Thank you."

autumn tide
#

most of my mod revoloves around a friendship arc for krobus and dwarf

compact jasper
#

Awww yeah! Kieran doesn't know the dwarf very well, so I don't have any plots about their relationship yet

autumn tide
#

i love themmm

merry river
#

i'm just plopping in a character from a chinese novel series who happens to be my bestie's favorite character, he's just vibing while i cheer you on

autumn tide
#

i have like.. i think 15 event ideas atp? i've only scripted like 4-5 and only two of those work-

compact jasper
#

Yeah my first project was a huge, ambitious fanart project for BNHA but I really want to make sure to add something purely original to the game, too

merry river
#

i hate event scripting. i wish i could outsource it

#

oh right you made the toshinori mod!

compact jasper
#

I did!

elfin kindle
#

I'm learning to get quicker, and making all the small timing adjustments are fun imo because you can tell so much with so little

compact jasper
#

Or at least I made about 80% of the code. the writing was a group effort

autumn tide
#

the event timeline for up to 15 hearts ✨ (this includes lemur's The Last Smoluanu mod bc it's gonna be a requirement for mine)

compact jasper
#

I'll take a peek !

#

oh, and for those curious, this is Kieran's full-body illustration. Will probably try to put him on the nexus page somewhere to make him look cool haha

autumn tide
merry river
#

did anyone here succesfully load in a spouse patio? or is that not available for roommate npcs?