#making-mods-general

1 messages ยท Page 136 of 1

brave fable
#

raccoon is a foreign exchange student from animal crossing gamecube.

uncut viper
#

they were quite rude i hear

lethal steeple
#

Well, it seems to work ๐Ÿ™‚ Thanks for the help!

viscid ice
#

hello i'm currently in the process of making my first portrait mod, but for S&S, so there gonna be some complications... i know that protraiture works with location names, but does it also work with other dependencies, and or how can i set it up, to work user friendly? any ideas or advise? like in my example, hector shapeshifting gender, is it possible to set up such thing in portraiture without needing to do it manually all the times? (this is my first own SDV mod, so I'm a bit clueless).

devout otter
#

Bear in mind that the patch code would be kinda tedious if you want to make it as user friendly as possible, but it's generally doable with ScaleUp 2 framework.

#

The one thing I'm not sure of is due to the huge amount of expressions S&S has, the image size would be super large and I don't know if the framework can handle that.

#

(SpaceCore also has a HD image feature but I've not tested that one.)

viscid ice
#

the size of expressions is not the issue, but the changing on gender or other appearances might be... for now i work around with simple portraiture and several folders, but it would be so cool, due to the many options (seasonal, female, male, scar, without scars, full form etc) but i will check what spacecore can, thanks for the info โค๏ธ i wont have so complicated stuff with the other npc's, not even mateo, but hector to be as my first is challenging xD

rigid musk
#

Are there tutorials on making maps? I kinda brute force my way through doing it but it'd be nice to actually understand what I'm doing in a more in depth way than just.. hopes and prayers kekw

hard fern
#

!tiled

ocean sailBOT
#

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

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

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

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

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

hard fern
#

Unfortunately none of this covers design and stuff I don't think

#

But it will tell you all the necessary stuff

blissful saddle
tough crater
#

I had to brute force learning mapping when I was patching a tent onto the Forest map. I think the most important layers you'll need to focus on are "Back" "Building" and "Front"

blissful saddle
#

I dread for the day I will be dragged to map editting

#

I love maps, and I hate everything about SDV maps editing so far

rancid temple
#

The best thing you can really do is look at how the base game does it and mimic that, there are quite a few mods with maps that you can also use to see how others are handling things

#

I've wondered about what a map making tutorial would even need, it feels kind of too close to art for me to have a good grasp on what would even be useful for something like that

blissful saddle
#

If does not exists already, I would be good with a Map Tutorial that helps with the basics like edge-map warping, connections to other maps, different locations to fish spawn, building warping...

#

nothing relating to 'how to make a beautiful map', since it would go to the art and subjective aspect

devout otter
#

However, I just tested it and it works! So no problem there.

viscid ice
#

that sounds good!

devout otter
#

I also tested SpaceCore and that one unfortunately doesn't seem to work. So yeah. ScaleUp 2 is my recommendation for what you want. At least currently.

lucid iron
#

If you want spacecore to work I think you have to define 1 HD sprite per portrait

devout otter
#

Oh geez. That would never end for S&S in particular. SDVpufferfear

viscid ice
#

oh well xD i guess i will read into scaleup2 first xD spacecore sounds awfully painful xD

#

thanks a lot, i will test around as soon as i scaled down the beach portraits x.x

#

but in theory and without further knowledge, i have the new portraits in the scaleup 2 folder and change the content file into how the portraits are supposed to be load as in s&s?

devout otter
#

You can make your own standalone portrait mod that has ScaleUp 2 as its dependency. So you don't have to put anything in ScaleUp 2 folder like Portraiture.

#

And then you portrait mod would have all the patch that changes how the portraits are supposed to load, yes.

viscid ice
#

ya I'm currently in the example file from scaleup2 trying to understand what i need to do xD but that sounds good if I will make it work ๐Ÿ˜„ it bothers me that portraiture is so limited in that specific example

knotty lark
#

Trying to teach myself how to do dialogue mods and my brains so totally fried

rigid musk
#

I've designed a few maps and can do it pretty well (id like to think) it's more the ... coding aspect of things

#

I still have a very elementary grasp on how to add tilesheets + embed them in my files

hard fern
#

The thing you'd want to do is avoid tilesheet climbing issues

rigid musk
#

(it also would have been helpful to realize that I, could not, in fact, use the furniture tilesheets to make a room... that was very disheartening lol)

hard fern
#

(basically the source for said tilesheet has a filepath that's way too long)

rigid musk
#

I dont know how to do that honestly - I know how to go into the actual map's code and erase the filepath though that's been helpful

hard fern
#

Well that's fine haha

#

That's actually just what i was going to suggest

rigid musk
#

side note: taking a 12 day break from doing a mod makes it very hard to remember what the heck you were doing. thanks for coming to my ted talk

lucid iron
#

Documentation is important Dokkan

rigid musk
#

I luckily was/am extremely organized with my files (and random notes left on said files) and was able to figure out I was doing my first event B)

winged basin
rigid musk
wanton pebble
#

My only question here, as I'm wrapping my head around it (probably because it's a bit early in the morning for coding for me right now, even if writing is fine) is how do I check if the moddata exists?

#

I have (roughly) wrapped my head around the rest of it - write the moddata, check for moddata, if moddata exists on DayStarted write the dialogue to the Value of the key and kill the moddata

#

But it's that middle step that's breaking my brain right now

finite ginkgo
#

@next plaza did some testing for the SC health regen thing, doesn't seem to be a mod compat issue and actually seems to be semi-working-ish, so I've got some extra info on it now:

  1. Despite having a negative value (in this case) it heals the player instead of damaging them
  2. It never stops after the buff has been cleared (and so you can also stack it by obtaining it from different sources, see health regen increasing when i hold different stygium items)
latent mauve
unique sigil
# rigid musk I dont know how to do that honestly - I know how to go into the actual map's cod...

to save you from my suffering when i first made a map mod:

only thing you need to make sure is that you are making the map in the same folder as the unpacked vanilla tilesheets (Content/Maps).

if you open the .tmx file in a text editor and search image source, there must only be the tilesheet filename. if there is a full folder path, you are going to experience tilesheet climbing issues

#

if you use a custom tilesheet (i.e. anything NOT in the vanilla Maps folder), you have to include them in the release folder like fireredlily said and load them in the content.json

rigid musk
#

๐Ÿ˜” yeah but the problem with that is that I have a big feeling that people would be upset with compatibility related things (i.e. if they had a mod that recolored a furniture set I used or something adjacent) - which is why I ultimately just re did my map to not use those

#

I will say - where do I put the custom tilesheets if I were to design some

wanton pebble
#

(Put another way, edit with the vanilla tilesheets in your folder, save, then after exiting tiled yeet the original tilesheets)

latent mauve
wanton pebble
#

I mean, if you do it that way, the recolors will auto-apply as long as they use the vanilla ones

unique sigil
rigid musk
wanton pebble
lucid iron
#

furniture.png isnt in Maps

latent mauve
#

The vanilla one is located in the Tilesheets folder and not Maps natively, so using it causes tilesheet climbing

lucid iron
#

smapi will bonk u for this

#

but u can just use lumisteria's interiors for this

#

it has good number of recolor compat

latent mauve
#

There's a reason why townInterior repeats some of the couches and chairs in it. ๐Ÿ˜‰

unique sigil
#

i tried to do that once and gave up. just merged the furniture tiles i wanted in my tilesheets now lol

lucid iron
rigid musk
#

I did check out Lumisteria's tilesheets but it didnt have most of the furniture I used unfortunately

wanton pebble
#

Okay, 100% fair that you can't use it then. I didn't realize those were repeated

rigid musk
#

I was able to find some nice couches though - and kept the general vibe I wanted even if it wasn't exactly what I wasl ooking for

#

Technical solution would be just to use the furniture tilesheets and ignore everyone who might comment on it but my main goal is to make my mod as compatible as possible

lucid iron
#

this is a false premise tbh

#

just make it compatible with ur own mod list everyone else can deal

rigid musk
#

I think I would explode honestly

#

I could make an alternative just for lil ol me though... I do love the room I made

latent mauve
#

Recolors are inherently incompatible with custom/new tilesheets anyway

#

Not worth stressing over

unique sigil
#

my principle was to add recolor compatibility for the most popular recolors and mayhaps some for my own indulgence. everyone else can deal indeed

#

but if you don't want to, that's also fine - recolor compat is exhausting

latent mauve
#

In other news, the Stardew Valley wiki's Modding:Maps page has officially surpassed the Google Maps page in my browser's autofill. xD

rigid musk
#

I don't really intend on using anything that wouldn't have recolor compatibility unless I decide to go even more overboard than I already am honestly so I don't have to worry about that

unique sigil
#

me when i live on Modding:Maps and Modding:Location_data

rigid musk
#

I also live on modding pages.... they are very helpful

nimble marlin
#

am I using a mod that does this or player and NPC collisions get turned off during events now?

wanton pebble
#

Neither?

#

Events can turn off collision during themselves, but it's not automatic

#

But it's also not a mod

hard fern
rigid musk
#

Does anyone know what the music that plays in the skull caverns ID is

#

I thought it would be caverns... it is not

#

or 'Cavern'

wanton pebble
#

Unfortunately I think there are multiple tracks that play in SC

fleet oxide
#

Does anyone know the easiest way to check if retextured crop sprites are working? For the growing crop, not the product. It's for SVE so the content patcher debug mode isn't helping

rigid musk
#

its how i made sure my colored carrots were growing properly :]

fleet oxide
slender badger
#

Easiest way to check texture changes are applying is to do a patch export of the asset

#

There's more info in the CP docs, but basically just type patch export [filepath/asset] into SMAPI. For example, if you're checking the vanilla crop sprites, you'd type patch export Tilesheets/crops

#

It'll create a new png file in the patch export folder and you can open it in your art program to see if it looks how it should

drowsy pewter
#

if it works for the start and end, the middle should work anyways

rigid musk
#

oh i know! but they wanted to see the stages in the game I think

drowsy pewter
#

ah okay ^^

rigid musk
#

I use that for pictures of finished crops all the time though its so helpful

fleet oxide
#

Thanks! getting some errors with the patch export so I might try cjb

rigid musk
#

the reason why I did my checks the way I did is because i wanted an image like this to put on my mod page (not just to see if the sprites were working)

#

it just so happens that it worked out to see the growth stages as well

drowsy pewter
#

Yeah, I like having a field of mixed crops at different growth stages

#

for promo images

calm nebula
#

(You can alternate between debug water and debug dayupdate 1)

#

To quickly generate a field

fleet oxide
#

All to find it wasn't working, lol. So I guess when I'm changing crop growth files, I have to specify a ToArea?

calm nebula
#

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

rigid musk
#

I know I made one mod that patches another mod's textures let me see where I put it

fleet oxide
#

it's saying the json is valid so I guess that's the issue

rigid musk
#

if you follow the link in the above thing (the smapi.io/json one) you should share the code for your patch here so we can see what it looks like

#

we might be able to help better that way

fleet oxide
#

ah got it

#

it's the two under //items>crops file that I'm working on right now

winged basin
rigid musk
rigid musk
#

when you grow it in game is it just the SVE default texture? no changes?

fleet oxide
quaint moss
#

I'm having weird priority issues where Include A containing all my events always loads before Include B containing alternate versions of said events for compatibility with another mod, rendering them unused no matter what. Instead of having both Includes at once in the content.json, will this issue be sorted if I add the Include for B inside A?

lucid iron
#

Did you put HasMod on your loads

quaint moss
#

Include B is behind a HasMod, yes

lucid iron
#

Put include A behind a false HasMod

quaint moss
#

While that would work, Include A has ALL the events and Include B only has alternates for a few of them, meaning I'd be in for a TON of unnecessary copypasting

#

In theory, adding the Include for B inside A has to work to solve load orders, right?

lucid iron
#

The load order is determined per action I believe, not per include

#

May need to set a Priority here

#

Personally I would split your events into 3 jsons

fleet oxide
#

Fixed my issue which was actually due to an incorrect file reference ๐Ÿคฆ thanks everyone for your help

lucid iron
#

Shared, no mod, yes mod

#

Always load shared, conditionally load the other 2

calm nebula
#

Just make the compatibility ones a Priority Latr tbh

uncut viper
# wanton pebble My only question here, as I'm wrapping my head around it (probably because it's ...

there is both a vanilla GSQ and a series of BETAS GSQs that can check for whether or not a player has mod data with a given key and optionally a value
Vanilla: PLAYER_MOD_DATA <player> <key> <value> (note value is not optional here)
BETAS: Spiderbuttons.BETAS_PLAYER_MOD_DATA <Player> <Key> [Value] (value is optional)
there are other ones in BETAS too that may be more helpful for other kinds of values https://stardew.button.gay/docs/betas/queries#moddata

nimble marlin
lucid iron
#

maybe those events got updated to use that feature?

nimble marlin
#

that makes sense

#

so i guess it wouldn't be useful anymore to create a mod that automatically disables collisions during events

#

i was going to make this but then i found out about that

wanton pebble
#

Correct. you could just use the ignoreCollisions command during events

#

[[Modding:Event data]]

inner harbor
#

I wonder if farmer to ignorecollisions automatically got added in 1.6

#

Npcs have always ignored it

scenic warren
#

Howdy, good morning all! I'm hoping to get some insight regarding some UI stuff with GMCM... (I made a gif to illustrate what I'm going for.) Farmer Portraits 1.6 has a button leading to a seperate page with config settings for specific reactions, but I am unsure how to achieve this. It seems to be the same size and font of Section headers, but I was wondering if maybe this is something I can control in the config schema section, or if it requires C# coding.

I was also curious if its possible to have a hierarchy of sorts for config setting pages, in that one button would lead to a seperate page with multiple buttons doing the same (and so on and so forth). Any help or advice would be greatly appreciated! ๐Ÿ™‚ Thanks in advance!

drowsy pewter
#

yes, pages need C#

nimble marlin
#

if yes, from what I tested it looks like it does

#

at least I did on the events I tested

scenic warren
# drowsy pewter yes, pages need C#

Thank you very much! I'll see if I can keep going with this information, and if I run into any problems I can't troubleshoot with testing and reading up on documentation, I'll be sure to ask the chat again! Cheers! ๐Ÿ˜„

near sierra
#

I'm having issues with using mail flags to gauge progression.
content.json: https://smapi.io/json/content-patcher/729e04e0bd6549e6a01bf9439bd05e57
SpiritWorld.json: https://smapi.io/json/content-patcher/70b652c07215474aa786b78c04cbb18d
MonaArea.json: https://smapi.io/json/content-patcher/bbbe87c255df4ab2a50e918461b8b3c5
SpiritCave.json: https://smapi.io/json/content-patcher/940bcc97239d40619a2cec80af262be2

I don't know if I'm handling mail flags wrong; I couldn't even test this myself for a while because of some problems I was having with building the code, but apparently, a teammate that didn't have these problems said they didn't work.

stone crypt
#

Man I read Arknir's recommendation of keeping events' lengths shorter than 3 minutes... The final event of my mod lasts about 40 minutes ๐Ÿ˜‚

rigid musk
stone crypt
rancid musk
#

Meanwhile in user comments on Nexus:

I need help

[Better Crafting] There was an error in the MenuPopulateContainers event handler of the mod 'Better Chests' (furyx639.BetterChests):

Urge to steal the loggers from other mods for logging errors related to their use of my API... rising...

scenic warren
stone crypt
brittle ledge
#

Wouldn't that cause issues in multiplayer because time doesn't stop for the other players?

#

I dunno what happens if the day ends while one player's still in an event SDVpufferthinkblob

uncut viper
#

the other players would be fine it'd be the person in the event that would get screwed

#

they pass out when it ends

#

which is what I mean by not fine. The other players will have to wait lol

brittle ledge
#

Oh... well, hope the event ends in the farmhouse then SBVLmaoDog

stone crypt
#

It does

winged basin
#

it took me like an hour to realize that an too high bombRadius breaks GameLocation.explode(), thought it gets placed at a wrong position or so lol. I guess I have to write my own function to achieve this?

near sierra
uncut viper
near sierra
stone crypt
near sierra
# stone crypt Can you show your conditions for the cutscene event?

{ "LogName": "Oliver rescued", "Action": "EditData", "Target": "Data/Events/HalfAlive.SpiritFieldsContentPack_SpiritWorld", "Entries": { "{{ModId}}_82345680/e {{ModId}}_82345679/n {{ModId}}_Trigger_Oliver_Rescued": "AbigailFlute/5 8/Oliver 5 8 1 farmer 19 8 3/setRunning/move farmer -13 0 3/speak Oliver \"....\"/pause 1000/speak Oliver \"....mmm....\"/pause 2000/move Oliver 0 0 1/pause 1000/move Oliver 0 0 3/pause 1000/move Oliver 0 0 0/pause 1000/move Oliver 0 0 2/pause 1000/speak Oliver \"...Where...am...I...?\"/speak Oliver \"...I'm...free?\"/globalFade 0.005 false/globalFadeToClear 0.005 false/move Oliver 0 0 1/speak Oliver \"Iโ€™m Oliver. Thanks for saving me, ${mister^miss}!\"/speak Oliver \"I was just walking around, and all of the sudden, those creepy vines grabbed me!\"/speak Oliver \"I donโ€™t know where they came from, but Mona kept saying those vines are someโ€ฆ maniโ€ฆfish-tashion?\"/emote farmer 16/pause 500/emote farmer 36/speak Oliver \"Manifestation! Yeah, manifestation!\"/speak Oliver \"Mona says that those scary-looking vines are a manifestation of some type of corruption making its way into our world!\"/move Oliver 0 0 3/pause 500/speak Oliver \"Yes! I got the word right!\"/pause 500/emote Oliver 16/move Oliver 0 0 1/speak Oliver \"Oh! I just realized something! For all we know, there could be others trapped too!\"/speak Oliver \"Please... save them! Save this world!\"/addQuest {{ModId}}_134/end" } }

stone crypt
#

And your mail entry in Data/mail?

uncut viper
#

they linked all their jsons

near sierra
uncut viper
#

while im still trying to parse the json as a whole, why are you creating dummy letters?

#

your trigger actions to remove them wont work to remove them if a player actually reads them from the mailbox either

near sierra
uncut viper
#

also your quest data for {{ModId}}_131 seems to indicate that there is no next quest

#

you dont need to create a dummy letter

#

a letter does not need to exist in Data/mail for you to send it

near sierra
uncut viper
#

just send it straight to the received inbox

#

is it only the third event (Oliver rescued) thats not working?

near sierra
#

There's a second one (Mona Rescued). I never actually tested it, since I can't test it (I need to build the C# solution to get stuff to spawn in the world, but I've tried multiple times and haven't been able to get it working). However, since it's coded in basically the same way, I can safely assume it's probably not working either.

uncut viper
#

hard to help debug something if its not clear what exactly is and is not working and where it stops working

near sierra
ornate trellis
ocean sailBOT
#

Log Info: SMAPI 4.1.9 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Pro, with 19 C# mods and 20 content packs.

lucid iron
#

Looks like ur tmx is incorrect

brittle ledge
#

check your filenames/locations vs. the code for typos or mismatches? That's usually what causes the NRE for that I think?

lucid iron
#

VoidWitchCult.TheFishmonger_LostIsland_SeaDudeHome.tmx

ornate trellis
#

hmm

#

well, the tmx is named VoidWitchCult.TheFishmonger_LostIsland_SeaDudeHome.tmx and i set the location like this(the same way as my others and those work):

                    "DisplayName": "{{i18n:VoidWitchCult.CP.TheFishmongerNPC.Locations.SeaDudeHome}}",
                    "CreateOnLoad": {
                        "MapPath": "Maps/VoidWitchCult.TheFishmonger_LostIsland_SeaDudeHome",
                    },
                    "DefaultArrivalTile": {
                        "X": 6,
                        "Y": 18
                    },
                    "ExcludeFromNpcPathfinding": false,
                    "ArtifactSpots": [],
                    "FishAreas": {},
                    "Fish": [],
                    "Forage": []
                },```
#

frick, i am blind i cant find anything

rancid temple
#

Literally every single time I forget to call I18n.Init SDVpufferweary

devout otter
#

Yar, it says that it couldn't load the asset, not that it couldn't find it. So I'm kinda leaning towards it being not a typo problem, but there's something odd with the file itself.

ornate trellis
#

huh

#

well, idk what it could be since I can jsut open and edit it in tiled like any other map

#

yesterday it was mentioned it could be some sort of tilesheet issue?

#

but i replaced/embed all tilesheets already

lucid iron
#

dont u need to do Load to Maps/VoidWitchCult.TheFishmonger_LostIsland_SeaDudeHome target first

#

that is where the err was thrown i thought

devout otter
#

But just to make sure, the filename is not VoidWitchCult.CP.TheFishmongerNPC_LostIsland_SeaDudeHome.tmx right?

ornate trellis
#

no

uncut viper
#

can you send your tmx?

ornate trellis
#

my load is this btw

            "LogName": "Load SeaDude Home Indoor Map",
            "Action": "Load",
            "Target": "Maps/VoidWitchCult.TheFishmonger_LostIsland_SeaDudeHome", // Maps/InternalNameofMap
            "FromFile": "assets/Maps/VoidWitchCult.TheFishmonger_LostIsland_SeaDudeHome.tmx"
        },```
lucid iron
#

yea guess it must be something in tmx itself think

#

but you can open and edit it fine in tiled?

ornate trellis
ornate trellis
#

i do have some tsx/embed tilesheet wakiness, i think but as i said all my other maps whose locations ive added work

rancid temple
#

Looks like the tsx stuff is fine on my end

ornate trellis
#

man thats odd

#

cuz thats how it shows to me

rancid temple
#

Have you closed out of Tiled since you embedded them?

ornate trellis
#

I

#

thonking well i closed the tabs

rancid temple
#

I feel like that should be good enough, but I honestly don't know with Tiled

ornate trellis
#

lol okay no. i just closed tiled itself and opened the file again and now its not double anymore :B

#

too bad that has nothing to do with the issue...

rancid temple
#

Lol, that's silly

ornate trellis
#

this is so weird

meager dome
#

what is the difference between #$e# and #$b#?

ornate trellis
#

for #$e# you have to interact with the npc again to get the dialogue, i believe

meager dome
#

icic

ornate trellis
#

man, id have preferred dealing with warp issues instead of this cuz im so clueless

devout otter
#

Oh hey.

ornate trellis
#

huh

#

how

devout otter
#

I'm not sure why exactly, but I just deleted this TileData and now it works.

rancid temple
#

Oh that TileData is empty

uncut viper
#

the TileData is what i was lookin at too but havin trouble figuring out why exactly

meager dome
rancid temple
#

I didn't think that would cause a problem like that, figured it would just skip it

brittle ledge
#

[[Modding:Dialogue]]

brittle ledge
#

I think

meager dome
#

i thought they would be in the dialogue turorials on the wiki

#

ope

brittle ledge
#

aha, got it right

rancid temple
#

There's also a TileData in the top right that's on the wrong object layer

meager dome
#

ohh i was only looking at the modding wiki

rancid temple
#

It's on Back3 but should be on Buildings

meager dome
#

ty

ornate trellis
#

huhhh

#

i didnt even realize there was a tiledata cuz i was distracted by the paths symbol oh my god

#

i cant believe this

uncut viper
#

itd be nice if TMXTile logged that reason but alas

ornate trellis
#

how much does this scale on the dumb reason scala

rancid temple
#

I feel like this should absolutely be handled by xTile lmao

#

Completely failing over something like this is crazy

devout otter
ornate trellis
#

bless yall, i swear if it werent for this community id never sit here being able to make mods lmao

uncut viper
#

im still wondering why it only errors with an NRE when trying to load it and not when trying to save that tiledata property to the TMXObject in the first place

#

i woulda thought property.Value.ToString() would error if value didnt exist

ornate trellis
#

on another note, I think I dont understand the special sleep animation thing...why she sleeping on the counter lol?

#

huhhh

#

she walks around and when she got a schedule stop she does the sleeping animation....but NOT in the bed where i put it

rancid temple
#

If you ever make your NPC sleep, they sleep for the rest of the day

#

Any animation with sleep in it will trigger that

ornate trellis
#

huh

#

then how do i have them just use that anim in the bed

rancid temple
#

Make another animation that's that but don't put sleep in its name

ornate trellis
#

o

#

oh wait so the actual sleep anim is jsut for the end of day then

rancid temple
#

Yeah

#

It shuts down all interaction with the NPC

ornate trellis
#

i see

rancid temple
#

So on the flip side, if you use a fake sleep animation, you'll be able to talk to them despite them appearing to be asleep

ornate trellis
#

i can live with that

#

better than the sleepwalking

calm nebula
#

Just give them location dislofue

#

"Why ate you in my bed."

ornate trellis
#

thats a great idea

rancid temple
#

Pretty sure SVE does that, leads to some great moments when you start dating and you can sleep in their bed but if you talk to them they freak out

wheat nymph
#

did they ever patch that?

ornate trellis
#

why arent you sleeping

#

ok nevermind had a typo

rancid temple
uncut viper
#

sort of related to map making question: is there a specific reason why SMAPI doesnt let you load tilesheets from folders that are not Maps/? like, i know theres specific code that always adds the Maps/ prefix to enforce it, but i mean the reason for making it enforce that in the first place

acoustic summit
#

I would've guessed it was added out of convenience, not out of necessity, like people forgetting / leaving out the Maps/?

uncut viper
#

i would think if that was the case it would only try that last if it couldnt find the asset otherwise, though

#

i mainly ask bc it was very simple to mod out, but the fact that it was so simple makes me think there must be a reason for it in the first place lol

acoustic summit
#

Either way I dont think its an element of convenience many people rely on, so probably all good to remove

uncut viper
#

that wouldnt make sense to me as a reason to effectively ban using tilesheets from other folders entirely, but im not pathos or any other smapi contributor, so

calm nebula
#

So, what you don't want to do is let people have access to the filesystem willy nilly

#

Up one level is fine

#

Up two....gets scary

uncut viper
#

the function that does it doesnt touch the file system

#

it just makes an asset name

calm nebula
#

Letting people directory climb basically does though

uncut viper
#

and then SMAPI tries to load that asset name through the content pipeline

#

no, this is after the directory climbing check

calm nebula
#

Oh, hmm

#

Hmmmm

rancid temple
#

Is it not just because the game expects things to be Maps/ ?

calm nebula
#

No, smapi manages tilesheets

lucid mulch
#

There are plenty of places where vanilla blindly loads stuff using Maps/+name

lucid iron
#

i think it'd be nice if there's a constant to use

#

so that CONTENT_ROOT/TileSheets/Furniture is valid

uncut viper
#

thats basically what i did in my little test patch

lucid iron
#

did it work

uncut viper
#

yeah seems to, got bushes from Tilesheets/bushes.png and stuff from cursors on the busstop

calm nebula
#

It should yeah

lucid mulch
#

If I'm reading the code, I think the main thing its doing is that all tilesheets are "relative names" to their source, but the asset pipeline isn't.

So for every vanilla map, it needs to add Maps/ back in for the asset pipeline to do the right thing

calm nebula
#

Hey @ivory plume, the modders want tilesheets/furniture in maps again

uncut viper
#

i dont even care for it!! im not a mapmaker!! i was just experimenting

lucid iron
#

did u make sure it never touch file system

lucid mulch
#

If you want to point it to crazy files use Internal Asset Keys, it bypasses the Maps/ prefix

#

though I might be misreading this as "if its in the mods local folder, it just rewrites it to be an internal asset key"

calm nebula
#

I think it's (b) yeah

uncut viper
#

im not sure where id use internalassetkey for a .tmx's tilesheet

lucid mulch
#
        {
            string localKey = Path.Combine(modRelativeMapFolder, relativePath);
            if (this.GetModFile<Texture2D>(localKey).Exists)
            {
                assetName = this.GetInternalAssetKey(localKey);
                return true;
            }
        }
uncut viper
rancid temple
#

What's the end goal again?

uncut viper
#

using things from e.g. TileSheets/furniture.png in your map so that it has recolour support

rancid temple
#

Ah

uncut viper
#

or whatever else

uncut viper
#

(and removes the prefix obv)

lucid iron
#

tbh i dont know if recolors touch those usually

uncut viper
#

ive seen plenty of people ask how to use those sheets because of it, though

lucid iron
#

but it would be fun to use modded big craftables on a map

#

rare crows Dokkan

uncut viper
#

personally i think this is a better use

calm nebula
#

perfect

#

10/10, no notes

uncut viper
#

thank u i try

lucid iron
#

put "you tried" on it

uncut viper
#

thats up to cursors.png

lucid iron
#

im sure u can do some shenanigans with the font asset and a lot of editimage

uncut viper
#

the font assets might be too big

rancid temple
uncut viper
#

ideal bus stop edit

#

anyway though if it doesnt cause any apparent issues i might just put it up on nexus anyway at some point
not right now though. right now is lazy hours

rare orbit
#

anyone know how to modify the bed's starting position?

#

for a modded farm house i mean

rancid temple
winged basin
rare orbit
#

i only care about moving the bed in the everroot cottage mod

#

but when i try to locate the item id nothin

latent mauve
#

For the first level of the farmhouse, you cannot change the bed starting position AFAIK?

rancid temple
#

You should be able to as long as you have that map property on your Farm map

#

If you're doing a specific Farm map with Farmhouse combo then you could just add that property to the Farm map

latent mauve
#

For upgrades, you use a Back layer tile property, DefaultBedPosition

rancid temple
#

Pretty sure the reason you need that for upgrades is that your bed upgrades as well

latent mauve
#

Ah, the Farm properties

gray linden
#

does anyone know how to check if the player warped to a custom map in c# the standard if (e.NewLocation.Name == "CustomMap" && Game1.timeOfDay >= 2000) does not seem to run when warped into custom map

brittle pasture
#

wdym custom map

gray linden
#

like a custom map i made with content patcher. is there any way to target that map in c# or nah

brittle pasture
#

NewLocation.Name should have done it. check that you're using the right name I suppose

calm nebula
#

So has someone made the new secret into a npc yet

brittle pasture
#

it should be what you passed as the key in Data/Locations

#

(assuming it's not an instanced location)

gray linden
calm nebula
#

No

#

Debug warp is a fuzzy searxh

#

And will try to bring you to a map of similar name

rancid temple
#

Secret Shop Crow, Jeff (new ichor mod when)

calm nebula
#

The check you want is an exact check

calm nebula
gray linden
uncut viper
#

just check for exactly the name you gave the location

gray linden
#

the content pather makes an entry in Maps for Map, i know its a stupid name but isnt that the exact name or am i missing something

brittle pasture
#

are you using the old CustomLocation method

gray linden
#

using the new one that was exampled in the resent wiki update

uncut viper
#

customlocations would require either a modid or Custom_ prefix

calm nebula
#

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

rancid temple
#

Show where you're patching Data/Locations

uncut viper
#

(also if you are actually calling it "Map" then dont do that for unrelated reasons)

gray linden
#

i mean yes ofc but im just trying things out here lmao

rancid temple
#

Even for testing, it's best to avoid super generic names

#

Makes it hard to troubleshoot if your generics start bleeding together

tiny zealot
acoustic summit
#

Anyone know what this exactly means?{{ [game] Failed to send message (k_EResultLimitExceeded). Closing connection. }} Im trying to use the smapi messages, but I worry that the data Im sending is too complex / too much. The player lasts a few seconds before the connection is closed

rancid musk
#

Sounds like you're exceeding the network buffer size. It can't keep up with whatever you're sending on top of the other network traffic.

rancid temple
uncut viper
#

(fun fact, apparently the description in steam's documentation for that error code is "Too much of a good thing." very helpful)

acoustic summit
#

I def dont think its 512kb haha, but still it might be too much

#

it occurs when entering the insectarium, a custom location that when full loads 86 creatures. The data about those creatures has to be sent, so thats the data

lucid iron
#

How does jeff path out of the woods

uncut viper
#

are you just sending the entire Character objects?

#

or Critter or whatever it is

rancid temple
#

Probably remove the fake shop and put a warp there to a new map for Jeff and then just have Jeff skip the woods when entering and exiting

acoustic summit
#

its a custom object, so neither. But yes the whole thing

tender bloom
#

is there a way you can just initialize them clientside as needed?

#

that seems a bit excessive

lucid iron
#

Well that's probably worse than net fields blobcatgooglyblep

#

Pls send only what you need

uncut viper
#

i dont know how to explain why i think i know why thats a bad idea for networking

#

im not smart enough for the words

tender bloom
#

like idk what you need to initialize

#

but like, location, color, whatnot

#

should be way more compact

acoustic summit
#

Yep, just gotta figure that out

lucid iron
#

e.g. sending just the ID to a data model that's loadable from content pipeline

acoustic summit
#

Im working in steps, trying to get it working at all first

lucid iron
#

This is essentially what trinket tinker does for all companions

uncut viper
#

unfortunately this is the way to get it working at all

acoustic summit
#

Which it does rn, just not with 86 of them lol

uncut viper
#

lotta data when you try and send an entire class and everything it depends or references on

tiny zealot
lucid iron
#

Tbh I figured he would just fly(warp) outta there

calm nebula
lucid iron
#

Oh is woods just fine to use now Dokkan

calm nebula
#

Yup

lucid iron
#

Yey

rancid temple
#

I do still like the idea of Jeff just appearing wherever/whenever

tiny zealot
#

i would definitely want to make him fly/warp from place to place. why would he walk long distances

#

after all, they call it "as the crow flies"

rancid temple
#

Fitness enthusiast "Gotta get your steps in"

lucid iron
#

Do you think Jeff is buddies with Kyle (ornithologist guild)

#

Crow gossip gang

rancid temple
#

I haven't used this mod, does the crow run the guild?

devout otter
#

Are we building Crow Cinematic Universe now? We have Kyle, Thistle from "Eli a& Dylan" and Kevin & Titania from "Alecto".

rancid temple
#

That's amazing

lucid iron
#

Kyle sells u things and only says caw Dokkan

devout otter
#

I think the only talking crow in all of these is Thistle.

tiny zealot
#

if i end up making Jeff there's like a 96% chance he'll talk

uncut viper
#

with enough time and pestering in this channel i believe we can raise that to at least a 98%

rancid temple
#

I definitely was imagining a full on NPC like Lacey lol

lucid iron
#

I was imagining Jeff doesn't talk but has a narrator

#

Jeff regard you with knowing look, he knows you had lost things, precious and irreplaceable things

#

Like that

rancid temple
#

I think that kind of thing is good for a non-social NPC, but doesn't lend itself very well to fleshing them out in any meaningful way

devout otter
#

All the crows!

tiny zealot
#

๐Ÿ“

scenic warren
#

Howdy! I was asking before about mod config menu UI in GMCM since I wanted to have multi-page support (with buttons leading to new pages)... I am confused as to how to properly structure my C# file...

I am still a beginner with coding, I won't claim to be an expert. So far I Frankensteined this together after looking through some documentation on GMCM, the API code, and the Stardew wiki modding page regarding Config Models... I am unsure what order the different methods are supposed to go, and I am also unsure if I even need all of this... It's very likely I have created a nonsensical abomination in all my ignorance. But I tried! Please let me know how I can go about properly structuring this (I figured since I have to use C# to add multi-page support, it might make more sense to set up ALL of my config settings in this file, please correct me if I am mistaken!). Any other pointers/advice related to preparing config schema would be greatly appreciated (I haven't had much luck)! Thanks in advance!

using System;
using GenericModConfigMenu.Framework;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using StardewModdingAPI;
using StardewModdingAPI.Utilities;
using StardewValley;

// Name of mod project (Config Schema only in this case)
namespace IFPConfigSchema
{
    // Method creates mod's main class (and subclasses SMAPI's mod class)
    internal sealed class ModEntry : Mod
    {
        // SMAPI Method that provides access to helpful APIs
        public override void Entry(IModHelper helper)
        {
            public interface IGenericModConfigMenuApi
            {
                // I HAVE NO IDEA WHAT I AM DOING
            }
        }
    }
}
lucid iron
#

well, you probably dont want to copy the entire gmcm interface into the entry method of your mod monS

brittle pasture
#

have you tried getting the example mod built and running first

acoustic summit
uncut viper
#

are you also aware that config done through C# only affects the config of the C# mod and not a Content Patcher mod

scenic warren
lucid iron
#

yea you need to do some shenanigans there

uncut viper
#

you CAN make custom content patcher tokens for your config that your CP mod can then use, but it's more involved

brittle ledge
uncut viper
#

as far as SMAPI and gmcm are concerned without that though, your C# portion and your CP portion are two completely different mods

lucid iron
#

are you sure you want to ship C# just for paged configs, how important is it to you?

scenic warren
lucid iron
#

what kind of mod do you have?

scenic warren
#

I was originally planning on making a content pack to add onto the Farmer Portraits 1.6 mod, but then I decided to make a standalone farmer portraits mod, so that's my intention currently!

lucid iron
#

oh then your mod needs C# regardless?

uncut viper
#

i think the farmers portrait mod accepts content pipeline edits or something

#

been a while since I looked at it

scenic warren
#

I'm trying my best to do everything from scratch despite limited experience, but I want to be mindful not to take too much inspiration from others so it doesn't go into cheating territory. I worry about that a lot... ๐Ÿ˜…

lucid iron
#

"standalone farmer portraits mod" implied to me that its not dependent on farmer portraits

golden basin
#

Is there a way to sync dialogue with a object the player is holding?

lucid iron
#

maybe im reading it wrong tho Dokkan

prime gull
#

is there an event precondition of x amount of days after xyz event seen?

golden basin
#

see I have a fakenpc i am placing with meep, and i have the npc commenting on certain options if the player is holding them

lucid iron
#

anyways the 2 main ways you can have a C# mod's config communicate with a CP mod is mail flag or cp token

golden basin
#

I jsut realized what I can do never mind

rancid temple
#

Could you use BETAS to set your CP mods config based on the C# mod's config?

lucid iron
#

CMCT

rancid temple
#

Oh right, I always forget which one does which lmao

brittle ledge
lucid iron
#

i dunno tbh was that CP -> CP only?

rancid temple
#

Also, whenever I read CMCT the TMNT theme song plays in my head

lucid iron
#

anyhow u be in C# anyways

devout otter
scenic warren
rancid temple
#

aeden retired

lucid iron
#

this is what i did with CP token

scenic warren
tiny zealot
lucid iron
#

but this mod is kind of messy n bad example

rancid temple
#

But they gave permissions to update and take over all their 600 some odd mods

scenic warren
# lucid iron anyhow u be in C# anyways

I see... I can try to look into CP tokens before I commit to going full throttle with converting all of my current progress to C# (if I have this understood correctly)...

lucid iron
#

you arent even at the point where you can see the config in game right

#

lets take this 1 step at a time Dokkan

scenic warren
#

So far I have most of the info I need in my json files

lucid iron
#

(do stop pinging me tho, i am just getting example for u)

scenic warren
#

Sorry ;__;

tiny zealot
lucid iron
#

the important bits are
reading the config: Config = Helper.ReadConfig<ModConfig>();
setting up gamelaunched event for gmcm api: helper.Events.GameLoop.GameLaunched += OnGameLaunched;

scenic warren
#

๐Ÿค”

lucid iron
#

this mod only has 1 config option so it grabs the gmcm api, register itself, then register 1 number option

#

u should try it out and confirm u got the menu in game AquaThumbsup

scenic warren
#

Thank you for all of the links and explanations, everyone! I'm slowly but surely making sense of it all, I think

#

I'll see what I can get! Thank you! ๐Ÿ˜„

uncut viper
lucid iron
#

but do you recommend it for this use case

uncut viper
#

no need to add another dependency if its not needed when the C# would still be required regardless

devout otter
gritty furnace
#

is there a framework for generating new items during runtime?

brittle pasture
#

framework for content pack or C# mod? your wording makes me unsure

gritty furnace
#

I'm thinking of something like, a flower that can be any RBG colour, but with other variations and values too

brittle pasture
#

since if it's C# you can do anything

gritty furnace
#

I expect to use C#

brittle pasture
#

yeah with C# you can do anything. Just do new ColoredObject( or something like that

uncut viper
#

if you're just asking if something already exists for it though then im aware of anything framework-y for generic/arbitrary items

#

unaware*

brittle pasture
#

ColoredObject is what is used for colored flowers, pickles and other items with color variations

gritty furnace
lucid iron
#

do you want to provide thing where ppl just put in a hex/monogame color

uncut viper
#

to me it sounded like a coloured object was just an example of a thing with arbitrary, not-defined-at-compile-time values

#

not that they only care about colours

brittle pasture
#

hmm that makes more sense. you still need a base item in the data, but everything above that (display name, sprite, etc.) can be custom

#

though they'll be treated as said base item in most interactions (gifting, etc.)

gritty furnace
#

i might have to piece together sprites for them and haven't figured out how to go about that, maybe i can borrow from the way the farmer (with their clothes, hair, etc) is drawn

uncut viper
#

unless the goal is to like, construct an ObjectData definition from pieces and add it to the pipeline during runtime

brittle pasture
#

dynamically generating new items in the data is possible, but that'd require a bunch of invalidation which tends to be slow

#

if you're fine with at most every day start then it should be fine

uncut viper
#

in C# you can invalidate whenever

lucid iron
#

what are some usecases of this

brittle pasture
#

but it'll lag visibly if you use it like every tick or something

uncut viper
#

well, definitely dont do that SDVpuffersquee

#

you only need to invalidate to add a new item once per new item though

#

as long as you have some way to store the ways to construct those object definitions

tiny zealot
#

(generally, avoid doing anything every tick if it can be avoided)

brittle pasture
#

(whoops ping)

gritty furnace
#

For a use case, suppose I want to make a new area like the mines that generates a different, unpredictable special fruit item every time a new map is entered

lucid iron
#

does it matter to you that it's the same item internally

#

just with different fields set

gritty furnace
#

being the same internally is fine for that purpose, i think

lucid iron
#

think wine in vanilla

#

might just need to implement some specialized item queries then Bolb

uncut viper
#

would all the necessary info be serialized for that though if all the fields were different?>

lucid iron
#

and 2 harmony patches on draw and draw in menu

uncut viper
#

or would they just become the same item again when you reload the save?

brittle pasture
#

in that case I'd make a regular Object and change everything above it (display name, sheet index, etc.)

tiny zealot
uncut viper
#

well, how would you know which item in the world to apply that mod data to

#

if they are all identical

gritty furnace
#

or even, genetically mixing plants

rancid temple
#

Could you just attach it when spawning it?

brittle pasture
#

ok parent sheet index and display name is saved, so that takes care of any user visible stuff

uncut viper
#

im talking about for dynamic items that were already spawned in a previous play session

tiny zealot
#

yeah doesn't every Item have its own modData

brittle pasture
#

it does

uncut viper
#

oh that is true

#

despite being the backbone of BETAS i did forget about that

lucid iron
#

item and itemdata r divorced

gritty furnace
#

if each instance of the item can remember what it is

lucid iron
#

once u conjure the item it doesnt know data for most part

#

think one of the important exceptions is the sprite

#

hence patch draw/drawinmenu

gritty furnace
#

will it keep data that isn't the sprite?

brittle pasture
#

the sprite texture name isn't saved with the item, but the sheet index is

lucid iron
#

yea things like name and context tag r saved directly

#

as is moddata which is where u can put all your stuff

brittle pasture
#

so I believe you can have an item remember what it looks like

#

if you're using one sprite sheet

gritty furnace
#

everytime the item is instantiated, it should have all the mod data given to it

lucid iron
gritty furnace
#

a thing is, I don't think I can draw each item from one sprite on a sprite sheet

lucid iron
#

thats how they variant without harmony

gritty furnace
#

i might want to mix and match, leaf shapes and stem heights and petal patterns for example

lucid iron
#

but if u can just patch draw then u get access to things like drawing a sprite with a color

uncut viper
#

you'll need to store all the data required to know how to do that in the mod data then

brittle pasture
#

yeah with harmony patch draw anything is possibleโ„ข

gritty furnace
#

I'll go look at the drawing code

uncut viper
#

each Object has its own draw() call so you just need to check if its one of Your objects and then do whatever you want

#

or well. several different draw call functions. same thing though

lucid iron
#

then people can use ur thing in all the places that accept item query, like machine

gritty furnace
#

thank you

lucid iron
#

this talk reminds me of the "frame work that let u add smoke (and other TASish effects) to any item"

brittle pasture
#

spritepatcher

#

0_days_since_SP_last_mentioned.gif

lucid iron
#

i did have some thoughts about it the other day

rancid temple
#

Well that's interesting and new, had two instances open for testing and the second instance was automatically interacting with my big craftable whenever I moused over it, nothing else and wasn't effecting my first instance

lucid iron
#

working mod name: add skyrim enchantment visual effects to me scythes (and other stuff)

  • make a custom asset with type TemporaryAnimatedSpriteDefinition
  • add mod data to define what TAS an item will have
  • do some ??? to broadcast the TAS
  • provide some ways for content mods to get the mod data onto their items, probably item query
#

so its related to what svalawoo wants but doesnt do anything to the item proper besides mod data

uncut viper
#

i love when a mod idea hinges around "do some ???"

brittle pasture
#

do you even need step 3 if you're saving them anywhere in moddata

#

just let the other scrubs draw their own tas

lucid iron
#

well TAS r like

#

u send off once

#

u dont draw those

#

the ??? is "idk where to send off the TAS"

wanton pebble
brittle pasture
#

what I meant is that modData should be synced, so the other players can just read that and draw their own instance?

#

unless I'm missing something

uncut viper
#

it sounds like you're writing for a mod so i dont think its an interrupt

lucid iron
#

yea urite, might not need broadcast

uncut viper
#

im realizing i think i dont know what a skyrim enchantment visual effect is

#

so i dont know what im supposed to be picturing here

brittle pasture
#

me neither, but I'm picturing TF2 unusual effects

#

(if you don't know what that is either my apologies)

uncut viper
#

i dont!

lucid iron
#

when u enchant a weapon it gest glowy stuff

brittle pasture
#

the only thing you should know is "Hat - 20 cents. Hat with rotating flame effect - $2000 IRL dollars"

calm nebula
#

I'm picturing the coffee gradient chart

#

(If you don't know that. Congratulations! You have not spent too much time on the internet)

lucid iron
#

this is cus the original desire is

#

make enchanted weapons/tools distinguishable by icon

uncut viper
#

i do know the coffee gradient chart

brittle pasture
#

I'm sorry atra, but being a coffee drinker is one of the most normie things possible

calm nebula
#

.... I'm going to bed then

lucid iron
#

but a TAS is like

calm nebula
#

Night!

lucid iron
#

any sprite anim effect really

uncut viper
#

why not change the draw call itself

lucid iron
#

i want to use it bc it has stuff like animated rotation and scale

uncut viper
#

instead of a tas

#

i see

lucid iron
#

and i dont want to impl that myself

brittle pasture
#

also defining custom TAS is supported for content packs

brittle ledge
brittle pasture
#

so that's 80% of the work done

lucid iron
#

is it?

#

or do u mean TemporaryAnimatedSpriteDefinition exists (but isnt used outside of machines)

brittle pasture
#

event TAS, and load/working effects in machines

brittle ledge
#

(also I keep having to remind myself that TAS is TemporaryAnimatedSprite, not The Animated Series or Tool-Assisted Speedrun)

uncut viper
#

i also still think tool assistsed speedrun

lucid iron
#

Batman TAS: aSDVbat

calm nebula
#

Among other things, the coffee chart has one independent axis

#

Not two

hard fern
#

i take my coffee at like number -A 0 because i dont drink it XD

brittle pasture
#

yeah I don't get why it's 2D when half of them are the same color

calm nebula
#

I drink slurry, which is drip coffee with instant coffee in it

#

My resting heart rate is 56, btw.

brittle ledge
#

I would be A1 but it'd just be milk SBVLmaoDog I can't drink coffee

tiny zealot
#

why are there two axes

brittle pasture
#

exactly

#

just line them up gods darn it

tiny zealot
#

surely the amount of creamer is only one dimension

rancid temple
tiny zealot
calm nebula
#

Yes

brittle pasture
#

vietnamese black coffee is not on this chart, which is fortunate because it will instantly kill everyone arguing about this chart on Instagram

rancid temple
#

Needs more variables, how about sugar amount

uncut viper
#

so how do y'all feel about making mods

hard fern
#

i once put an entire cup and a half of sugar into coffee and it was still too bitter for me

#

eh, theyre ok :/

brittle pasture
#

I'm currently rotating an 'immersive fertilizer' idea in my head that I don't expect to make before Feb next year

brittle ledge
brittle pasture
#

if ever actually

uncut viper
#

whats immersive about

#

actually nvm

#

you do you

brittle ledge
#

it's when you jump into the manure pile

uncut viper
#

i forgot who i was asking for a moment

brittle pasture
#

it all boils down to "Ancient Fruit is so busted I want to nerf it by forcing the farmer to fertilize it every 2 weeks or it stops producing"

#

beyond that sentence though I have nothing

uncut viper
#

cant say thats what i was expecting at all

calm nebula
#

The quality starts going down

#

And the regrow time increases

#

Unless you refertilize

tender agate
#

make soil have several different nutrients to balance and replenish

lucid iron
#

this is the 3rd generation of soil quality in sdv PecoSmile

brittle pasture
#

hmm is there a mod like that already
is it one of aedenthorn's

brittle ledge
#

atra has More Fertilizers, but not quite the same

tender agate
#

there is "immersive manure"

lucid iron
#

the other two i saw is 1. someone's wip on github 2. a long post on mod ideas

tender agate
#

and manure industries but I think the other one looks better from the description

#

wait, that's you in the author name

brittle pasture
#

yeah I like Immersive Manure better (completely unbiased opinion)

tender agate
#

why are you talking like you've never made such a thing

lucid iron
#

selph i like the poop mod but can you justify why poop has quality

humble timber
#

๐Ÿ˜ญ

uncut viper
#

selph i have an alternative question can you please refuse to justify yourself to chu

tender agate
#

the animals have better gut bacteria

brittle pasture
#

hmm the mod idea is cool, but I'd want something more simple from both a player and modder perspective

uncut viper
#

i want a mod that w ill make me use more spreadsheets than EVE

round dock
tender agate
#

simple for player, maybe make animals fertilize crops directly, but sounds a bit more annoying for authors

uncut viper
#

maybe you can rework it to be a crop rotations mod

lucid iron
#

a system can be complicated as long as you communicate it well

brittle pasture
#

anyway just one of many ideas that I may or may not get to implementing, all because if I ran out of ideas I may resort to selling my soul for art skills and start implementing my blorbos as NPCs

tender agate
#

obviously the solution is to steal the crop fairy code and turn it into poo fairy

brittle pasture
#

flying poo with wings...

uncut viper
drowsy pewter
#

Sure

#

Could always use another

#

I want to see selphs blorbos

uncut viper
#

okay as long as you're offering i want 50 NPCs, 32 expressions each, seasonal outfits please, oh and unlimited revisions

lucid iron
#

i thought the devil only offered fiddle skills

uncut viper
#

no he offers a fiddle of gold if you already have fiddle skills

acoustic summit
#

Is there any difference between Game1.IsMasterGame and Context.IsMainPlayer besides one coming from Stardew and one from SMAPI?

royal stump
#

SMAPI's Context one might be slightly more accurate, since it seems to check master game & then account for split-screen multiplayer
(and whatever that menu check is SDVkrobusgiggle)

public static bool IsMainPlayer
{
    get
    {
        if (Game1.IsMasterGame && ScreenId == 0)
            return !(TitleMenu.subMenu is FarmhandMenu);
        return false;
    }
}```
rancid temple
#

This is funny

faint ingot
#

what can I do to improve an npc's schedule the day after I change it? he's supposed to go to my custom location, but instead he goes to his own house and uses the coordinates as if he was in the right location. on subsequent days it works fine. I solved it before by setting a 000 schedule but that has an occasional duplication bug

rancid temple
#

I don't think you'd normally change the schedule, I think you'd have conditions to cause it to jump from the schedule it's supposed to use to whatever one you want

#

Right, I forgot how absolutely backwards schedules are

faint ingot
#

I'm not sure I get your meaning, but I leave his schedule alone until a conversation topic becomes active, when that happens I have a json include that has this block among others { "Action": "EditData", "Target": "Data/Characters", "Fields": { "Pierre": { "Home": [ { "Id": "Default", "Condition": null, "Location": "sdvhead.LawAndOrderSV_Jail", "Tile": { "X": 18, "Y": 5 }, "Direction": "right" } ], "CanVisitIsland":"False" } }, "Update": "OnLocationChange", }, { "LogName": "Pierre Prison Schedule", "Action": "EditData", "Target": "Characters/schedules/Pierre", "Entries": { "spring": "610 sdvhead.LawAndOrderSV_Jail 18 5 1/900 sdvhead.LawAndOrderSV_Jail 13 6 2 square_5_3/2000 sdvhead.LawAndOrderSV_Jail 18 5 1 pierre_sleep", "summer": "GOTO spring", "fall": "GOTO spring", "winter": "GOTO spring", "rain": "GOTO spring", "GreenRain": "GOTO spring", "Fri": "GOTO spring", "Mon": "GOTO spring", "Tue": "GOTO spring", "Wed": "GOTO spring", "14": "GOTO spring", "28": "GOTO spring", }, },

rancid temple
#

You'd actually have the changed schedule be the one that's normally active, but it would be reliant on like a mail flag, so if you don't have the mail flag it would be set to go to a different schedule

faint ingot
#

I'm trying to wrap my head around what you're saying but I'm not sure, like instead of saying 'use this schedule during this conversation topic', it sounds like you're saying it's better to say 'use this schedule always, but when I DONT have this conversation topic, use this more normal schedule, is that right?

rancid temple
#

Also Fields won't work like that

faint ingot
#

assuming mail flag vs conversation topic isn't relevant

rancid temple
#

Though, maybe in the case of Home it's fine since there's only one entry usually anyways

uncut viper
#

fields works like that

rancid temple
#

Doesn't it blank out arrays?

uncut viper
#

so long as you want to overwrite the entire array

#

but presumably thats fine in this case

#

only one home to have

rancid temple
#

Unsure if you can change schedules based on CT's

#

Do they have accompanying mail flags?

faint ingot
#

{
"LogName": "Pierre Jail Updates",
"Action": "Include",
"FromFile": "assets/Include/PierreJail.json",
"When":{
"HasConversationTopic": "{{ModId}}_PierreInJail"
}
},

rancid temple
#

Sure you can patch their schedule, but that won't solve the day delay problem

#

That's an inherent problem with SDV because of how schedules are chosen

#

Which is why I'm saying instead of patching the schedule at the time you want it to change, you need a patch much earlier that already has your desired schedule but that's locked off by a mail flag

#

Gus has an example of this

#

His Sunday schedule changes if you have the saloonSportsRoom flag

brittle ledge
#

most people that change things based on events usually have an in-game explanation for the delay (e.g., "I'll open my stall tomorrow" "come see me tomorrow" etc)

faint ingot
latent mauve
#

There is also this schedule script example from the wiki: MAIL ccVault/GOTO spring/GOTO summer

rancid temple
#

I'm guessing the problem might be with when the CT actually becomes active

#

I'm betting the CT doesn't become actually active until the next day, which means the schedule change will also be pushed back a day

latent mauve
#

In that example, if the bus is unlocked, it goes to the spring schedule entry, otherwise, it goes to the summer schedule entry

brittle ledge
#

...question, is Pierre supposed to walk to the jail from his house and/or did you change his spawn location?

uncut viper
#

i think i remember esca (i think) mentioning something about the schedule being chosen before CP actually applies the ppatches but i could be misremembering entirely

faint ingot
#

OK, the reason I'm using CT is that the player can choose how long Pierre goes to jail for, and I set the CT to last that amount. Is there a way to do that with mail flags?

latent mauve
#

If it's a limited number of choices, you could potentially create multiple flags

faint ingot
brittle ledge
#

I would've expected a 0 schedule to just start him in the jail is why I ask.

latent mauve
#

But I don't think you can nest MAIL conditions in the schedule, so I am uncertain if or how you would implement that

faint ingot
rancid temple
#

0 schedule was causing duplication too

#

I wonder if you can have a MAIL conditioned schedule point to another MAIL conditioned schedule

#

And properly checked

brittle ledge
faint ingot
#

what I don't understand (forgive me) is that if I use a mail condition for say a 28 day jail condition, how will content patcher know when it's been 28 days since that mail flag was set?

latent mauve
#

You would need to set a trigger action to clear the mail flag later

uncut viper
#

you can make stat counters

rancid temple
#

Probably daily without changing the update rate

uncut viper
#

if (mailflag) IncrementStat Counter
if (player_stat counter 28) remove mailflag

rancid temple
#

Is that possible in CP?

#

Oh yeah, trigger actions have IncrementStat

faint ingot
#

OK I am reading up on the Data/TriggerActions documentation I have not used that file before

#

Thank you everyone this gives me some ideas to tinker with hopefully I can get it sorted out

#

note to self don't turn on the setting to have the game clock run when my window is inactive and then have a lengthy discord discussion

#

Assuming I use a custom stat key do I need to define it somewhere else before I can increment? Or will using increment stat on an undefined key create it and save it? Can I set it to an arbitrary number or only increase/decrease it by X amount?

uncut viper
#

you can just increment it and it will create

faint ingot
#

no way to reset it back to 0 or whatever though?

uncut viper
#

decrementing by -999999 oughta do the trick SDVpuffersquee

faint ingot
#

it doesn't go negative then?

uncut viper
#

it cant go negative

faint ingot
#

ok good to know

uncut viper
#

(also i misread at first, you cannot set to an arbitrary number, no)

royal stump
#

IncrementStat for -999999 then the desired amount should handle that, though

minor wasp
#

Hello. This is my first time posting here. I have never created a mod before but I recently came up with an idea for one that I just can't stop thinking about. I've done a bit of research on mod creation tutorials and such but I'm still not sure how to go about making certain parts and what's actually possible/impossible.

#

I guess what I'm asking is if anyone knows of some in-Depth resources on mod creation and/or where I might go about possibly finding someone more experienced to collab with.

uncut viper
#

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

faint ingot
#

what are you trying to do?

latent mauve
#

There are tutorials out there, but for more specific help, we'd need to know what kind of mod you are making

#

NPCs, maps, furniture, etc. have different components and tutorials

minor wasp
#

So basically I had the idea for a funny murder mystery/detective type mod. At some point during the celebration for the completion of the community center, a killer strikes. As the villagers are leaving, they discover his body. The mayor calls in a detective who enlists the help of the farmer to catch the culprit. From there, the player would have to talk to the villagers to get their alibis, search for evidence as well as items that confirm each alibi. And in the end, announce the identity of the murderer. They would gain hearts and a reward for a correct answer, which would decrease and become punitive with each subsequent wrong answer.

uncut viper
#

is this a fake mystery like for fun and games?

#

as in the town all collectively playing pretend

latent mauve
#

Would this be structured like an event or festival?

rancid temple
#

Hm, I wonder if this could be achieved without C#, sounds really involved

faint ingot
#

All of that is probably doable in content patcher but if you're introducing new characters (the detective, the murder victim(?)) that can be a lot of work, especially if they're datable/marriagable characters. If you want to kill off a vanilla NPC that might be problematic for any other mods that use that NPC

latent mauve
#

If this is all going into the event, it might be doable, but it would be very involved

uncut viper
#

i should clarify that i ask if its for fun and games or not because if its for real and not the town playing a collective game, i dont believe its discussable in this server

faint ingot
rancid temple
#

Festival might have made more sense for the sake of not having to deal with any time passing problems, but I also don't think you can really get such complicated interactions with a festival

faint ingot
#

anwyay I'm going to bed, I can't watch this for another 15 minutes. Thanks to everyone who helped point me in the right direction.

rancid temple
#

Ah yeah, rule 6 would be a problem if it's for realsies

round dock
#

Yeah, personally a nice alternative approach could be a town game. Kind of like an event you can unlock post cc. Say, itโ€™s a reading of Elliottโ€™s new mystery book and you could have the town folks be disguised as the characters or something.

rancid temple
#

That'd be cute

round dock
#

Also yeah, just banking on what Button said. Punitive with the wrong guess might already have an implication that it can violate Rule 6.

rancid temple
#

Silly things like the body actually just being a scarecrow and one of the kids just exclaiming that loudly

round dock
#

Roku Iโ€™m havin kfc rn meow_devilfire

uncut viper
#

linus not participating but solving it instantly and keeping it to himself

round dock
#

Idk it tastes better bc Iโ€™m hungry but

minor wasp
#

By punitive I mean decreased reward, loss of hearts, etc

rancid temple
#

I'm only jealous because it's not American KFC

round dock
#

Mcdonalds PH is also very rice centered, surprised it isnโ€™t in other countries the first time I found out

minor wasp
#

But sure, it could be a type of game.

uncut viper
#

well, would it be though? because we really are not allowed to talk or help about it if it isnt

minor wasp
#

Yes. It would be. I think that's an adorable idea.

rancid temple
#

I know Haley has an event you can run around in, not sure what all is involved in making that work

uncut viper
#

depending on how long you were imagining it to go on then it sounds like event writing may be a big focus then

#

though ofc if you're completely new to modding you should start with something small just to get a feel for how to use Content Patcher

#

since thats primarily what you'll need

round dock
velvet narwhal
#

iirc the playerControl doesn't actually care so long as there's a string to think about, but you have to understand that a lot of things aren't active during event playerControl

lucid mulch
#

arg 1 is set to AllowBlank: true, so I don't think you even need to give it shit

uncut viper
#

you do need something at that index though or else it will still return false and give an error

#

(dont ask me why allowBlank is there then though bc idk. its there on TryGetOptional too)

teal crest
#

introduction event(As like someone ate mr. gingerbreadman)->
triger investigate "Festival" in murder scene->
talking around people in normal time->
tell lewis you to end the talk part->
triger who done it "Festival" or time over if you can't trigger that before the day.

that kind of thing isn't it?

lucid mulch
#

that being said, out of the box you wont have a way to resume the event again, would need a mod provided mechanism to end the control sequence gracefully

#

The receiveActionPress logic is mega hardcoded for haleyBeach

slender badger
#

Couldn't you do it via a standard non-interactive event then use CTs for the alibi dialogue? The clue investigation could be via small map patches with map text that only apply for the duration of the CT

uncut viper
#

CTs is what i was imagining too for a mystery that goes longer than a day

#

i mean it can be same day too. but i like the idea of several days with CTs

slender badger
#

Then once the CT has expired, it triggers another event where the player is asked questions to see if they figured out who the "killer" is

minor wasp
#

I had a couple ideas about mechanics. I'm just not sure what is/isnt possible or how difficult certain things are. I imagined it over a couple events. I thought about the possibility of watching an event of each character's alibi, kinda like a flash back. And then the player has to go to that location and collect an item that confirms it. A simple example would be Evelyn tells us she was baking some fresh cookies at the time. So we then go to her house and look for some warm cookies. If I made it easy, only one character's alibi can't be confirmed. But if it was more challenging, the player would have to search for evidence as well as checking alibis. There may be more than one questionable alibi but only one person without an alibi that also fits the evidence

velvet narwhal
#

there's a crazy way to get out of the playerControl involving mailflags and instant next events but meow_awauu

rancid temple
#

Ah yeah, I was thinking it was supposed to be wrapped up in one sitting, if it's over several days that definitely makes it easier

velvet narwhal
#

(it's the skippable command, with a mailflag before the skippable/playerControl to auto into that event) SMCKekLmaoDog

slender badger
#

Events of each character's alibi would be doable, sure, but collecting an item would be hard

rancid temple
#

You could do a map patch after the alibi that just has you confirm the evidence

#

So nothing to collect but add a tray of warm cookies you can inspect

#

Really, if you're willing to do the C# then anything is possible

hard fern
#

ahah, this sounds like a lot of work in regards to writing, but if it turns out well, it sounds super interesting

uncut viper
#

they hadnt mentioned anything about C# so i was defaulting to content patcher for a new modder

slender badger
#

If you keep the structure simple, you could do some fun stuff with having the alibis randomised so that the event can be repeated each year ๐Ÿ˜„

rancid temple
uncut viper
#

(i also started with C# but we're outliers SDVpuffersquee)

round dock
#

Just to confirm tho, whatโ€™s the overarching genre of the mod? Like a plain mystery event-ish mod?

slender badger
#

Personally I'd keep it to just CT dialogue rather than alibi events, but you could do a flashback style event of how the "murder" happened if the player correctly solves the mystery

rancid temple
#

Yeah, conversation topic dialogue would be a lot faster than a bunch of events

minor wasp
#

I wish there was a way to do it like the community center bundles. Like one bundle would be evidence. And another would be alibis. With that one, similar to how some bundles have say six items that are acceptable but only five slots to be filled, there'd one less slot than there are villagers. I know I'm like going crazy on the mechanics, especially for never having created a mod before. These are just the ideas I had that I think would be totally awesome and I'm just sharing them all in hopes that y'all amazing individuals can help me make my dream mod at least partly a reality.

slender badger
#

Also if you wanted to keep it more simple, rather than a separate detective and victim, Lewis could assign those roles to townspeople like in a real-life murder mystery game night ๐Ÿ˜„ Which then means less alibis that need writing and you can have some fun dialogue with those two characters

rancid temple
#

Just thinking about all the time spent fading in and out of all those events eugh

slender badger
#

Evidence bundles would be doable with Unlockable Bundles, but finding the items would be a pain to code in CP. Unless maybe you could use a trigger action in the map inspection text to give the player an item when they investigate?

rancid temple
#

I think with SpaceCore maybe?

uncut viper
#

do dialogue commands work in the Action Dialogue map action

slender badger
#

For alibis, you could create an "[Character]'s Alibi" item that's given to the player when they talk to the character, either directly in the event or via a trigger action in the CT dialogue

rancid temple
#

I thought I had a test for that...

#

Different issue, wasn't for the map stuff

velvet narwhal
#

commands aren't working but MEEP... could probably do it?

round dock
#

And then at the end you can make simple CTs going like, โ€œFarmer, I canโ€™t believe you thought I was the perpetrator blah blah blahโ€

slender badger
#

Elliott could even be the one organising it because he wants to be the detective SBVGiggle

minor wasp
#

As far as just writing the dialogue in general, I'm totally prepared and capable of putting in 110% no matter how expansive it needs to be. I'm like crazy motivated to make this to the point where I'd crank out a novel if need be.

velvet narwhal
#

"It is against the rules of the game to blame the creator. SBVPensiveButt "

round dock
uncut viper
#

its disappointing that theres no action map tile action, itd be fun to see docs for it that say Action Action <Action>

ocean sailBOT
#
velvet narwhal
#

(revisiting the Action Dialogue/Message i've tried to no avail to get my $action to work, and i've doubled down on just doing my own custom tileaction)

round dock
#

Iโ€™ve yet to check if my $action command actually worked in GLH eurgh bcat_sweat

velvet narwhal
#

if you're doing dialogue it should work fine unless you've done something crazy

#

but tiledata specifically, it doesn't SBVPensiveButt

round dock
#

Hehe,,,,,, i donโ€™,,, think so SBVPensiveButt

velvet narwhal
#

(by crazy i mean, $query <QUERY> {{true}} $action | {{false}} $action)

round dock
#

Hehe SBVHugFrog naur

teal crest
rancid temple
#

My new dumb idea, create a custom shop for each tile where evidence should be found and it's only stock is that item, purchasing it sets a flag to remove the shop action from that tile

#

It's just a lot of effort for something that could be solved with one dependency lol

slender badger
# minor wasp As far as just writing the dialogue in general, I'm totally prepared and capable...

Okay, so in summary (assuming I'm understanding correctly):
Easy way with only CP - initial setup & introduction event that sets a conversation topic flag for 7 days or however long you want it to last. While the CT is active, townspeople have alibi CT dialogue and small map patches add items around various areas that corroborate (or don't) those alibis. Once the CT expires, wrap-up event where the player is asked questions to solve the mystery.

Benefit of this method is that it's fairly simple code and there's lots of room for easy randomisation for replayability (if that's something you're interested in).
Maybe pro/maybe con: it relies more on the player themself putting the clues together & solving things rather than just finding items & putting them in the right spot and will heavily rely on your writing to pull it off

Harder way with frameworks - initial setup & introduction event, then use HasSeenEvent and Unlockable Bundles to add an evidence bundle and an alibi bundle. Alibi items can be received by talking to townspeople and either getting it via dialogue or via a mini flashback alibi event, while evidence items can be found by [possibly one of the methods suggested]. One character won't have a corroborating alibi item. Once the bundles are filled, wrap-up event where the player is asked questions to solve the mystery.

Benefit of this method is that it has more complex & involved mechanics, but it's definitely harder to code

uncut viper
#

do shops open at all if they have no stock?

teal crest
#

Put BigCraftItem and threw the correct element won't make a right evidence?

uncut viper
#

(also if you take Airyn's advice, do make sure you read up on Content Patcher in that startmodding bot response I summoned for you way back at the start, so you can learn what things like 'HasSeenEvent' even mean)

slender badger
#

Oh yeah, this is just a general summary, definitely read the CP docs either way ๐Ÿ˜†

teal crest
#

flour in Table(BC) -> finger prints(O).

uncut viper
#

(also i cant remember if it was said that CT = Conversation Topic which is like, a specific name for a kind of thing)

rancid temple
uncut viper
#

shame

rancid temple
#

Had to create an empty shop to test lol

minor wasp
#

Would it be easier/possible if instead of collecting an item, if the character tells them their alibi, then the player goes to the location and looks for something to back it up. anything they'd have to physically collect or interact with. For a simple version, they'd have to correctly identify what's missing or changed jn a dialogue exchange. Or more challenging, with unlockable bundles, produce a specific item on their own. Nothing that would be too difficult to obtain. Like Caroline says she was drinking tea in her kitchen. So we head to the kitchen and there's an empty cup on the table. If there's bundles, the player has to submit a cup of tea.

slender badger
#

Yeah, that'd be the map patches I mentioned ๐Ÿ˜„ Basically you can just patch the map to add something at one particular tile and have a message box pop up when the player interacts with that tile

#

Not sure if you'd be able to use that method to give the player an item when they interact with the tile though

rancid temple
#

Pretty sure you would need to make a custom tile action in C# or use a framework that lets you put trigger actions on tiles

uncut viper
#

hinges on whether or not Action Message/Dialogue correctly parses dialogue format or not

rancid temple
#

Dialogue definitely doesn't

uncut viper
#

i thought that was supposed to have been fixed at some point

rancid temple
#

Nah, that was a break issue in regular dialogue

#

If you used $e or $b then $action after was failing, but that's fixed now

uncut viper
#

i specifically remember an issue being brought up at some point with map actions, i just dont remember the result of it being brought up

rancid temple
#

Tile Dialogue commands was something Lumina wanted but never got done

uncut viper
#

that might be what i was thinking of

rancid temple
#

I think the request just came in too late

velvet narwhal
#

yeah i've tested $action for both tiledata, iirc there was a possible PR? but yeah still broken

uncut viper
#

what about NPCMessage

#

Action NPCMessage

rancid temple
#

Oh dang, that one needs a bit more effort huh

teal crest
#

Put Search Point of Custom CraftObject (Only accept detective Item[Alibi Note, Scale, etc. or other evidence item])
And if it's not correct, you could re-produce and spit it back.

rancid temple
#

Eugh, the difficulty increases, npc has to be within 14 tiles of the action

hard fern
#

is that what happens when you touch a trash can

rancid temple
#

Nah that's special

uncut viper
#

no limitations on who the npc is though

#

or whether that NPC is invisible and permanently stationed in the area

rancid temple
#

Just really hard to test lol

uncut viper
#

shouldnt be that hard if you just keep them there forever

rancid temple
#

Is there a debug to warp them to me

uncut viper
#

make sure theyre there once not invisible, then blank out their sprites

#

wctm

#

debug wctm name

rancid temple
#

Yeap, that one does work

#

NPCMessage with an invisible NPC stationed nearby, silly workaround found

uncut viper
#

it shows a message even if the NPC isnt around, right?

rancid temple
#

Hm, wasn't showing anything for me, but I only put the action in

uncut viper
#

hmm

rancid temple
#

Not sure what it would show though

uncut viper
#

its that bottom try catch block that made me think so

#

(this is also how i found out that NPCs can catch you snooping in their personal belongings, ive never seen that before)

rancid temple
#

Hm, nothing pops up if I put regular text in

#

Oh interesting

uncut viper
#

it takes a translation key

rancid temple
#

If I put regular text in, it breaks the action

uncut viper
#

what were you putting in before?

rancid temple
#

Just the action by itself

uncut viper
#

as the message?

rancid temple
#

$action AddMoney 500

uncut viper
#

huh

#

i wouldnt have expected that to have done, like, anything

#

i thought itd only work with a translation key

#

why does that do anything

rancid temple
#

Well I'm calling a string I added to Strings/Characters

uncut viper
#

oh, thats what i meant then lmao for the message

#

so wait if you have normal text before the action the action breaks?

rancid temple
#

Oh I think I know why the action is being busted, one sec

#

This is what I get for not being an NPC modder

#

Yes okay, that works, $a causes the angry portrait if you don't put # between it and the text beforelmao

uncut viper
#

also wait a minute

#

this seems to just do the same thing, but... with any arbitrary NPC, existing or otherwise, and no radius limit

#

its just not on the wiki

rancid temple
#

Another secret

#

I'm actually surprised how many things I've found not documented on the wiki, like it makes sense but I just didn't think I ever would lmao

uncut viper
#

does that Load call for the portrait throw an exception if it cant find one?

#

or does it just leave the portrait blank and make this an anonymous dialogue box

#

not that it'd be THAT big of a deal, you could just load a portrait there, but still would be good to know

#

tho downside to this one is that the string HAS to exist in StringsFromMaps

rancid temple
#

Yeah if you put an non-existent NPC it throws an error

#

Tested the wrong thing at first, it definitely works right if you do it right lol

uncut viper
#

wait, what?

rancid temple
#
[game] Can't parse tile property 'Action' at Buildings:9,13 with value 'NPCSpeechMessageNoRadius Dipshit rokugin.excustomlocation_test' in location 'rokugin.excustomlocation_ExampleRoom': couldn't find or create a matching NPC.
uncut viper
#

if you load a portrait to that non-existent NPC name does it work?

rancid temple
#

When I try to make it use the NPC Dipshit it throws that

#

But if I use Abigail it loads Abigails portrait if she isn't there and opens a dialogue box for her

#

I can try that

uncut viper
#

you could use a drawn picture of the evidence as the portrait

#

that would be neat i think

#

like a close up

rancid temple
#

Loading an image to that Portraits/name does work

uncut viper
#

a very neat tile action to be aware of i think

rancid temple
#

I chose Bouncer because lazy

uncut viper
#

does any text box pop up if the dialogue string is JUST an action

rancid temple
#

Nope. I think it made the noise though

uncut viper
#

thats somethin i guess

velvet narwhal
#

well you did add money yeah? if it gave you money then you know it worked

rancid temple
#

Yeah, I know it's been working, at least since I fixed the dialogue woopsie

#

It gives the item as soon as you close the box

velvet narwhal
#

i would've used the workaround but teehee haha i already made my own damn custom tileaction

rancid temple
#

Or money in this case

devout otter
uncut viper
#

thats what we are using now

#

the portrait though is just incidental

rancid temple
#

Dolphin over here hoarding secrets SDVpuffersquint

uncut viper
#

it wasnt intended to be included in the end goal from the start

#

ideally it'd be a portraitless dialogue box that also can handle the $action command

devout otter
#

Oh oops, the conversation has gone quite a bit after the one I read. Sorry.

#

In any case, if you want to use a framework then MEEP should be able to handle that? Otherwise I don't think there's a pure CP way to do it.

uncut viper
#

spacecore can also handle it, i think we just got a bit nerdsniped trying to find a way to finagle it vanilla style

devout otter
rancid temple
#

Speaking of hoarding though, are you gonna add that to the wiki Button?

uncut viper
#

no it sounded like something you would really enjoy doing, so i was being courteous and leaving it for you

rancid temple
#

Lmao

#

I can do that

uncut viper
#

(i didnt feel like typing up an explanation of how it worked rn)

rancid temple
#

It will likely have to wait until after I sleep, I'm burning out pretty hard now lol

vague acorn
#

Is it possible to hook into specific locations inside a function, or replace a specific line a function?
I want to hook into the tree's draw function,but i don't want to overwrite stuff, or have to write the entirety of it again. How should I do ti?

uncut viper
#

are you familiar with Harmony?

vague acorn
uncut viper
#

You'll need Harmony then, and specifically a Transpiler patch

#

which will involve reading and writing IL code

uncut viper
#

IL is like one or two steps of abstraction above machine code

velvet narwhal
eternal hemlock
#

I forgot how to get the unpacked SDV assets, how do you do that again?

frigid hollow
#

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

eternal hemlock
#

tyvm