#making-mods-general

1 messages · Page 492 of 1

merry river
#

TTTTT looks like a bridge but i'm also dizzy now

hard fern
#

like a woodpecker

lucid iron
#

SheetInTheContent
SITC

stray hemlock
merry river
#

The Tilesheet Destruction Destroyer

gentle rose
#

the original name was tilesheetinator, so ig the goal is to be more descriptive than that SDVpuffersquee

#

especially since it doesn't make the tilesheets

hard fern
#

Stardew tilesheet assistant (nugget)

STA(n)

brave fable
hard fern
#

i... dunnp

#

i dunno why i threw a nugget in there

stray hemlock
#

Stardew Tile Arranger Remix Derpy Elite Wondercraft

merry river
#

i think all of these names need to become the official one

brave fable
#

SDV Tilesheet Fixes is perfectly fine imo

gentle rose
#

I might go with SDV Tilesheet Toolkit, yeah

hard fern
#

stardew tilesheet assistant path helper. Staph. short for staphylococcus

gentle rose
#

it doesn't actually fix anything so idk if I can call it fixes haha

stray hemlock
#

Star-Tile-Dew maybe? STD for short?

brave fable
#

does it toolkit anything

gentle rose
#

it adds multiple tools. one may say a whole kit of them

obtuse wigeon
#

Content tilesheet fixer, if someone searches for ctf stardew it's more likely to come up, not many capture the flag games modes for stardew

hard fern
#

content to female

gentle rose
#

if it was called Stardew Tile Toolkit, would it confuse you guys

obtuse wigeon
#

I'd say stardew tile__d__ toolkit would be less confusing

gentle rose
#

this is my least favourite part of making stuff SDVpufferwaaah

brave fable
#

can we get a brief recap on what the toolkit actually does SDVdemetriums

stray hemlock
#

Tiles

obtuse wigeon
#

It does STUFF

lucid iron
#

it makes it so that u can use sheets from other folders

gentle rose
#

right now it lets you use tilesheets from other folders without causing climbing

brave fable
#

we'll go with that

gentle rose
#

that's a rather long name, idk if it will fit in the github repo name box /lh

#

(but you're right - the nexus name will probably be Stardew Tiled Toolkit - Easily Use Tilesheets in Maps or something like that)

uncut viper
#

that doesnt sound like a kit of tools to me

#

its just a tilesheet linker

gentle rose
#

it does technically have multiple tools

#

and a planned one I haven't added yet

uncut viper
#

i do not care for technicalities

#

nor do people judging a mod by its name

stray hemlock
#

So in a way it's what the original compiler was? Grace Hopper wrote something to link programming code together in the 1950s and called that a "Compiler" because it compiles stuff. That tool is kinda similar.
Stardew Tilesheet Compiler? STC?

gentle rose
#

well I do not care for changing the name again /lh

(what do you suggest?)

uncut viper
#

what i just said, tilesheet linker

#

put a "stardew" in front if you want

gentle rose
#

idk what you mean by linker tbh

#

but that doesn't sound like what it does to me

uncut viper
#

it links the tilesheet to your tiled map

stray hemlock
#

Farming Tilesheet Linker. FTL.

hard fern
#

female to linker!

brave fable
#

is it not essentially just a mklink for tilesheet files/folders

stray hemlock
gentle rose
#

uh, ish? idk SDVpuffersquee I feel like most map makers don't use that type of link often

#

so I think it would be confusing

uncut viper
#

i disagree

mild furnace
stray hemlock
# gentle rose idk what you mean by linker tbh

A linker or link editor is a computer program that combines intermediate software build files such as object and library files into a single executable file such as a program or library.

In a way, it's a linker for tilesheets, so "Linker" fits really well.

gentle rose
#

it doesn't do the thing you quoted in any way shape or form. the mklink comparison makes sense but not this

uncut viper
#

even if a user has no idea what "link" means in a technically sense, i dont think its a stretch to imagine them going "it links together tilesheets? how?" and then looking at it and going "oh that makes sense, sure"

mild furnace
uncut viper
#

because i was not at all thinking of the technical term of linking when i said it

iron ridge
#

tilesheetify
startup name from a few years ago, very trendy

mild furnace
#

A0 is purely a translational compiler

gentle rose
uncut viper
#

i knew that when i said that

lucid iron
#

what if u just do the JS thing

gentle rose
lucid iron
#

name it some Word

brave fable
#

if i were you i'd be making a separate tiled extension for any future features anyway so i'd go with just 'sdv tilesheet linker/tool'

iron ridge
mild furnace
gentle rose
#

Tilesheet.js? SDVpuffersquee

iron ridge
brave fable
#

tilesheetinator is good but unfortunately it makes me think of the mike myers cat in the hat movie

mild furnace
#

Wait iron what does this do, does it just convert loose assets to a tilesheet?

#

And modify Json to reference the tilesheet?

stray hemlock
thorn sorrel
#

After thinking about it further, I think I'm going to go this route for this idea of mine. Thank you for the suggestion! Would you happen to know any mods I could take a look at that uses that kind of code to break geode items?

gentle rose
brave fable
#

make me think of what from what

hard fern
#

oh boy

mild furnace
gentle rose
gentle rose
mild furnace
#

Does it do so dynamically or just as a tool for modders?

stray hemlock
gentle rose
mild furnace
#

Pink should read the compiler book

#

2nd edition that is, as iconic as Dragon v1 is

#

Every work of art

gentle rose
#

anyway I'm tired of thinking about this, tilesheetinator it is

mild furnace
#

Has a cheap imitation

lucid iron
#

the thing to edit is:

  • Data/Objects, GeodeDrops field specifically
  • Data/Machines to add your custom geode breaker that accepts your box
mild furnace
stray hemlock
#

But ty

brave fable
# mild furnace

i choose to believe that SDVdemetriums is wearing a shirt with 'complexity of compiler design' on the front

stray hemlock
thorn sorrel
mild furnace
#

@lucid iron would you like to possibly resolve a moral quandary for me?

lucid iron
#

moral quandary...

#

raise it for the public court i guess

mild furnace
#

Nexus page: perms locked down a bit
Source code: GPL, MIT or Apache licensed

#

Why does one do in this situation

#

Particularly if a mod author isn’t being responsive (not pathos, different cases) or has left the modding scene

lucid iron
#

i think you just release unofficial on gh and link ppl in the comments

mild furnace
#

That works for me

lucid iron
#

but yknow 2 cakes etc

#

if ur dynamic reflection is different enough i feel it's valid to make new page

mild furnace
#

idrc about new pages, and I’m mostly thinking for NPC map locations

#

Or, in general, finding mods that seem to create a lot of garbage

#

It seems like clear and reuse isn’t super common practice because of how negligible performance impact seems in SDV modding

uncut viper
#

well Pathos is the one who maintains NPC Map Locations

mild furnace
#

But the GC pressure builds, especially with the stock .net 6

lucid iron
#

i am guilty of using null as a whole new state kyuuchan_run

#

vs merely empty

#

tho usually it's stuff i load from content

mild furnace
#

Speaking of, button, I’ll ask you since you’re here directly, there’s a part of your code where you use harmony for BETAS. It breaks on any update to harmony, and SinZ has been super awesome to basically do 90% of the work of migrating smapi to .net 9 and updating the core resources

uncut viper
#

im already aware

mild furnace
#

I don’t intend on publishing anything but you good if I recompile your mod with the harmony update in mind?

uncut viper
#

as long as its not published anywhere since the code isnt open source you can do whatever you want with the code on your own machine

lucid iron
#

is the breakage fixable with just compilation?

uncut viper
#

no

#

it requires an edit to the transpiler because it uses behaviour in harmony that was previously allowed and no longer is in later versions

mild furnace
#

Do you mean open source in regards to license? Cause the source code is available

uncut viper
#

it is source available, it is not open source

#

so yes, in regards to license

mild furnace
#

Great

mild furnace
lucid mulch
#

the compat issue was in 2.3.6

uncut viper
#

if you're curious chu, the issue is that i insert instructions after the very last instruction/the final ret in a transpiler. later harmony does not allow you to do that as it considers the space beyond the last instruction to be an invalid space to grow the instruction list into

lucid mulch
lucid iron
#

why would you do this...

#

button i mean

uncut viper
#

because the final instruction was where a bunch of things were jumping to

#

and it was an easy way to ensure that the code i needed to run just before finishing wasnt skipped over

lucid mulch
mild furnace
#

Ah, OOB

lucid mulch
#

its not actually out of bounds

#

or at least it briefly is, but the Insert putting the ret back at the end fixes it

lucid iron
#

ah i see

#

does harmony understand if you use the array form of Insert

uncut viper
#

personally i dont really see any actual issue with it, if you discount Harmony simply saying there is one

lucid iron
#

or is it still no crimes >:(

lucid mulch
#

no difference

uncut viper
#

i dont think its a crime, but if we ever officially move on to later harmony versions then I guess ill be forced to fix it anyway

#

unless and until that happens though idrc to do anything about it

lucid mulch
#

since smapi uses a fork anyway, I could just revert this specific validation in harmony

#

Still need to solve the problems that generic behaviour has very much changed, but harmony and generics have never fully worked well as is

uncut viper
#

breaking changes in a non x.0.0 update SDVpufferpensive

mild furnace
#

SMAPI 5 would be a good point for a migration

lucid mulch
#

with .NET 14

mild furnace
#

Lmao

lucid mulch
#

I don't see pathos doing a major breaking change while he is so busy with everything else, unless he times it with 1.7 update which is likely a few years out still

mild furnace
#

If 1.7 comes sometime 2026, or even 2027, that’ll be mid lifecycle for .net10

#

So probably enough migrations and stability to consider a move

lucid mulch
#

the 1.6 modding alpha was a bit over 2 years in development.
and with 1.6.16 pushing out the 1.7 development lifecycle, I don't see it happening in 2026

brittle pasture
lucid mulch
#

would be same reason

brittle pasture
#

(how would I yeet the final ret then since IIRC I tried going back 1 instructions and that didn't work)

#

(you can tell I'm doing sinful things)

uncut viper
#

you wouldnt. you'd insert whatever you needed before the ret, and you'd have to change whatever else is on the ret that needed changing as a result

lucid iron
#

ig it means u need to move the labels up too?

uncut viper
#

if applicable, yeah

#

i was filing that under "change whatever else is on the ret that needs changing"

brittle pasture
#

yes, the use case was that I wanted to transfer the labels
which now that I think about I wonder why I didn't go with that route instead of deleting ret since I know ExtractLabels/MoveLabelsTo exists

lucid mulch
#

since it is actual latest version of harmony, you could ask in the harmony discord if there is a better way to do it

uncut viper
#

you could also harmony patch harmony to remove the restriction again if you wanted to take the secret third option

mild furnace
#

Bootstrapped harmony

lucid mulch
#

I'm maintaining a semi fork anyway, so just removing the validation in source is easier

#

as the exception saying at StardewValley.Farm.resetLocalState_PatchedBy<Pathoschild.SmallBeachFarm>(Object ) is pathos's fork, it would normally be at StardewValley.Farm.resetLocalState_Patch1(Object )

lucid iron
#

do u think main harmony would want this bolbthinking

mild furnace
#

What has main harmony ever done for us anyways

lucid iron
#

exist

lucid mulch
#

I did mention it, and they did say to raise an issue about so they could discuss it further

#

Rimworld which is the canonical harmony game does it by having their mod harmony patch Environment.GetStackTrace to inject a bunch of extra info
https://github.com/pardeike/HarmonyRimWorld/blob/master/Source/ExceptionAnalyser.cs

System.NullReferenceException: Object reference not set to an instance of an object
[Ref 53C89AF7]
<snip>
  at Verse.PawnRenderTree.ParallelPreDraw (Verse.PawnDrawParms parms) [0x00084] in <24d25868955f4df08b02c73b55f389fe>:0 
    - PREFIX co.uk.epicguru.meleeanimation: Void AM.Patches.Patch_PawnRenderTree_ParallelPreDraw:Prefix(PawnDrawParms parms, State& __state)
    - POSTFIX co.uk.epicguru.meleeanimation: Void AM.Patches.Patch_PawnRenderTree_ParallelPreDraw:Postfix(State& __state)
    - POSTFIX rimworld.Nals.FacialAnimation: Void FacialAnimation.HarmonyPatches:PostfixParallelPreDraw(PawnRenderTree __instance, Pawn& ___pawn, List`1& ___drawRequests, PawnDrawParms parms)
  at AM.Patches.Patch_PawnRenderer_RenderPawnAt.Prefix (Verse.Pawn ___pawn, Verse.PawnRenderTree ___renderTree, Verse.PawnRenderer+PreRenderResults& ___results, System.Nullable`1[Verse.PawnRenderer+PreRenderResults]& __state) [0x000dd] in <b10aa9e45bcb4ac990b513023b2967cc>:0 
  at Verse.PawnRenderer.RenderPawnAt (UnityEngine.Vector3 drawLoc, System.Nullable`1[T] rotOverride, System.Boolean neverAimWeapon) [0x00012] in <24d25868955f4df08b02c73b55f389fe>:0 
    - PREFIX co.uk.epicguru.meleeanimation: Boolean AM.Patches.Patch_PawnRenderer_RenderPawnAt:Prefix(Pawn ___pawn, PawnRenderTree ___renderTree, PreRenderResults& ___results, Nullable`1& __state)
    - POSTFIX co.uk.epicguru.meleeanimation: Void AM.Patches.Patch_PawnRenderer_RenderPawnAt:Postfix(Nullable`1 __state, PreRenderResults& ___results)
    <snip>
mild furnace
#

I ran into this gem at uni today

#

I thought you guys would enjoy

strong onyx
#

This is gonna be the start of something completely awful and love it for that

#

Why the heck was making the bad NME salesman sprite harder than coding tho

rough lake
#

Okay, I tried and I didn't understand anything.

#

Does anyone know how to replace the word "Sam" with another name in all character dialogue?

autumn tide
rough lake
#

It's literally the last step to complete the mod

autumn tide
#

i mean, apart from manually editing every line, but that has potential to cause issues

#

BUT you could set those edits to low priority? I'm sure there's a better way to do it though i'm still fairly new

rough lake
#

Yes, I actually read the whole wiki but in the end I didn't quite understand how to do it

autumn tide
#

huh, lemme pull up the CP documentation one sec

#

anddd lemme see if i can find some of my code to send as an example for usage

#

...i cannot

brave fable
autumn tide
rough lake
#

Okay, I'll try.

grand lantern
#

Im having a bit of an issue. I made a chicken mod and the new eggs are only giving regular mayo, not the modded mayo.
i have the machine edit to include it, and i did a move entries but im not sure what im missing. could someone perhaps look over this and tell me what i may have done wrong? please ❤️

https://smapi.io/json/content-patcher/9fbef59550ad456899b3add028b2d91f

my first mod so please be kind haha

lucid iron
#

you need to moveentries

grand lantern
#

i have it

#

its at the bottom

lucid iron
#

next thing to check is if your edit actually went in

#

do patch export Data/Machines and check the result

#

if u have machine control panel u can check rules there too

grand lantern
#

ok ill download that but still do the smapi command

rare prawn
#

Trying to convert my DGA animated festive winter tree over to CP and Spacecore. Any idea what I am doing wrong here?
Not receiving any error code in SMAPI, and my image appears static, but no animations

My manifest includes dependencies for CP, Spacecore, and Simple Foliage (1.6)

https://smapi.io/json/none/ae225dd0ae504cb89e6b6d5b4b519dd9

``{
"Format": "2.0.0",

"ConfigSchema": {
"FestiveTreeTimeframe": {
"Description": "Choose when the festive tree appears. 'BeforeFeast' is Winter 22-25. 'AllWinter' is all Winter days.",
"AllowValues": "BeforeFeast, AllWinter",
"Default": "BeforeFeast"
},
"RecolorVersion": {
"Description": "Manually change your recolor version.",
"AllowValues": "Vanilla, Earthy, Eemie, Naturally, VibrantPastoral, WittilyNamed, Starblue",
"Default": "Vanilla"
}
},

"Changes": [

{
  "Action": "EditImage",
  "LogName": "Load Festive Tree Base Texture (Before Feast)",
  "PatchMode": "Replace",        
  "Priority": "Late+1",
  "Target": "TerrainFeatures/tree3_winter",
  "FromFile": "Assets/{{RecolorVersion}}_FestiveTree.png",
  "FromArea": { "X": 0, "Y": 0, "Width": 48, "Height": 160 },
  "ToArea": { "X": 0, "Y": 0, "Width": 48, "Height": 160 },
  "When": {
    "FestiveTreeTimeframe": "BeforeFeast",
    "Day": "22, 23, 24, 25"
  }
},
{
  "Action": "EditImage",
  "LogName": "Load Festive Tree Base Texture (All Winter)",
  "PatchMode": "Replace",        
  "Priority": "Late+1",
  "Target": "TerrainFeatures/tree3_winter",
  "FromFile": "Assets/{{RecolorVersion}}_FestiveTree.png",
  "FromArea": { "X": 0, "Y": 0, "Width": 48, "Height": 160 },
  "ToArea": { "X": 0, "Y": 0, "Width": 48, "Height": 160 },
  "When": {
    "FestiveTreeTimeframe": "AllWinter"
  }
},
{
  "LogName": "SpaceCore Animation - Before Feast",
  "Action": "EditData",
  "Priority": "Late+2",
  "Target": "spacechase0.SpaceCore/TextureOverrides",
  "When": {
    "FestiveTreeTimeframe": "BeforeFeast",
    "Day": "22, 23, 24, 25"
  },
  "Entries": {
    "Shyzie.FestiveTree.CP/BeforeFeastTree": { 
      "TargetTexture": "TerrainFeatures/tree3_winter",
      "TargetRect": { "X": 0, "Y": 0, "Width": 48, "Height": 160 },
      "SourceTexture": "{{InternalAssetKey: Assets/{{RecolorVersion}}_FestiveTree.png}}:0..1@40"
    }
  }
},
{
  "LogName": "SpaceCore Animation - All Winter",
  "Action": "EditData",
  "Priority": "Late+2",
  "Target": "spacechase0.SpaceCore/TextureOverrides",
  "When": {
    "FestiveTreeTimeframe": "AllWinter"
  },
  "Entries": {
    "Shyzie.FestiveTree.CP/AllWinterTree": {
      "TargetTexture": "TerrainFeatures/tree3_winter",
      "TargetRect": { "X": 0, "Y": 0, "Width": 48, "Height": 160 },
      "SourceTexture": "{{InternalAssetKey: Assets/{{RecolorVersion}}_FestiveTree.png}}:0..1@40"
    }
  }
}

]
}``

lucid iron
#

hrm the source rect might be wrong lets see

lucid iron
#

btw if u can avoid internal asset key it's prob best to do so, means other ppl can edit you if needed

rare prawn
#

Gotcha, I'll give this a go, thank you!

lucid iron
#

and you won't need to replace the base texture if using spacecore

rare prawn
#

So no EditImage necessary?

lucid iron
#

yea when you have a spacechase0.SpaceCore/TextureOverrides entry that matches the original draw is replaced completely

rare prawn
#

Nice, okay, I'll give this a go too, thank you!

lucid iron
#

oh yea when the tree is mossy the top rect should be 96, 0, 48, 96

#

tho ig it dun matter cus winter

tiny zealot
#

of course the other problem with doing individual patches for it in CP is that you aren't compatible with any other mod that deals with, or even mentions, Sam. but that's an issue with doing a character replacer in general, really

rare prawn
rough lake
lucid iron
#

@next plaza do u think we could get some kinda debugging mode for textureoverrides to log the seen texture + rect to somewhere so ppl don't have to guess?
the other thing i'd enjoy having is some sort of entire sheet mode so that source rect is optional if your new sheet is a specific width multiple of the original texture to override

thin crown
#

As someone with 0 coding knowledge, how hard would it be to change the output item of the coffee machine? I want to make the coffee machine output a triple shot espresso instead of a coffee. I imagine it's a super simple mod but I have no idea

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
#

this you may do in content patcher, since the coffee machine is just a normal machine

thin crown
#

Thanks. I'll check this out

lucid iron
#

@rare prawn did u mean to post in here

tiny zealot
rough lake
brittle pasture
#

with a SMAPI mod coded in C#, yes

rare prawn
rough lake
#

And how do I create a mod in C#? I think I'm creating a content patcher mod because my file is a .json.

lucid iron
#

are you really really sure about replacing sam

#

it sounds like your character is quite different

#

and can become a standalone npc, even if a simple one

rough lake
#

It's only in appearance

hard fern
#

I feel like both making a separate npc and just doing all the replacements the manual way might be easier than learning C# just for this

rough lake
#

Since his personality is almost identical to that of the character I'm going to use, I only want to change his name and appearance; his events and dialogues would remain the same.

#

But I would like my mod to be compatible with others.

#

And I think the Content Patcher mods don't allow that.

rare prawn
#

That worked! The trees are animated, just gotta clean up a few issues I see lol Thank you thank you thank you!

lucid iron
#

making a new npc is how you'd become compatible with other mods

hard fern
lucid iron
#

someone request this of me so u can now add light sources to trees

rough lake
#

Well, I don't want it to be compatible with all mods, but at least it should work with the ones it can and not be limited to just the base Stardew Valley game.

rough lake
hard fern
rough lake
#

I also need to learn many things to create events and dialogues, and so on.

uncut viper
#

Content Patcher mods are the kind that are most widely compatible with each other

lucid iron
#

if you just want the character to walk around and have daily dialogue you don't need to learn events Dokkan

rough lake
#

And honestly, I don't want to complicate things too much, I just want to replace Sam, hahaha.

uncut viper
#

If you try to edit the same thing another mod is editing then only one of you can "win" of course but aside from that there are no significant compatibility concerns

uncut viper
#

replacing Sam's name everywhere is a complicated thing

lucid iron
#

yea in terms of what "replace vanilla character" requires

  1. editing in portraits and sprites: easy (assuming you drew them already)
  2. editing the character name: easy (target that Strings/NPCNames asset and you good)
  3. editing the character name in dialogues: pain + compat hell
uncut viper
#

and even if you do, there's nothing you can do about another mod adding a new portrait or sprite to Sam that looks like vanilla Sam and overwriting yours, compeltely by accident

brittle pasture
#

if you don't wanna learn C# it's totally fine to just set your goal to replacing vanilla dialogue and tell everyone else as such

rough lake
#

And I personally had already planned to make a version compatible with SVE

uncut viper
#

any mod that adds dialogue to anyone can potentially include the name Sam in it

rough lake
#

Well, that's up to whoever downloads the mod; my task for now is simply to replace the vanilla dialogue.

hard fern
#

at least just replacing the vanilla is straightforward

#

albeit tedious

devout otter
# rough lake Does anyone know how to replace the word "Sam" with another name in all characte...

Alright, so you want to basically replace all the reference to "Sam" in the game to your character right. The vanilla game typically uses these place to reference a character's name:

  • Stings/NPCNames
  • Characters/Dialogue/<Name of any character who might have mentioned Sam>
  • Data/Events/<Any location of events that have Sam mentioned>
  • Data/Festivals/<any festival date that have Sam mentioned>
  • Data/Quests
  • Data/SecretNotes
  • Data/mail
  • Strings/Characters
  • Strings/Furniture (for his spouse portrait)
  • Strings/StringsFromMaps (for any map object that might mention Sam)
  • Strings/Weapons (his spouse weapon)
  • Data/ExtraDialogue
  • Data/MovieReactions
  • Strings/Locations
rough lake
#

The problem is that I can't find the code to do it; I only know that I have to do it manually, locating the name "Sam" in each character's dialogue, but I don't know how to replace it with "Fang" and make it work.

hard fern
#

dolphin did you comb through the dialogue for every verbal mention of sam

devout otter
#

So you just need to search all those assets and patch into the strings with you mod, basically.

lucid iron
#

have you read up on how to do EditData in content patcher?

devout otter
#

And if you want to make it compatible with other mod like SVE, you'd need to comb those mod to for Sam's mention.

rough lake
devout otter
hard fern
#

oh wow

#

🤔

rough lake
devout otter
#

The Data/Event assets is the most complicated and tedious part of this, really.

rough lake
brittle pasture
#

you see that first block where you target the string keyed with Sam in the asset Strings/NPCNames, replacing its content with Fang? you'd repeat that for gods knows how many times for every mentions of Sam in the game'a assets

hard fern
#

sounds fun

#

🤔 did you happen to count just how many times sam was mentioned, dolphin?

rough lake
#

something like that?

devout otter
#

I'm the Dolphin.

rough lake
#

aaaa

#

srry hahahaha

#

Sometimes I don't read the names because there are so many that I get confused; I prefer to look at the profile pictures.

devout otter
#

(Honestly if you just change name and nothing else, it's not too bad.)

soft lance
#

🐬

tight rivet
#

This died a quick death when I realized I'd be rewriting events.

#

a lot of them

#

this plushie is.. not going to sink themself into revision hell

thorn sorrel
lucid iron
#

did u try the geode at clint's first Bolb

tight rivet
#

... huh

thorn sorrel
#

Not yet >_> Was working on slapping in the code before testing

lucid iron
#

yea u might as well do that first

#

to make sure it is a geode

thorn sorrel
#

Ok, good point

lucid iron
#

for your machine, (BC)sakialyn.merrycrops.christmastree is a whole new machine

#

so you don't need target field there (and in fact cannot use it until you do Entries)

#

take a look at "(BC)182" vanilla geode crusher's output item section for what you need, should just be the long thing in OutputMethod

inland rain
#

Custom Signs are now editable in-game

vernal crest
#

I read that as edible first

inland rain
thorn sorrel
tiny zealot
#

context: #making-mods-general message
i have now received another solicitation email (at my not-secret email address) from a different new modding platform also owned by Valnet. they claim to be offering paid partnerships where they give you money and you give them exclusivity

uncut viper
#

i didnt get that one SDVpufferpensive maybe they didnt like me asking questions last time

lucid iron
#

Maybe they r coming in waves

#

I also didn't get

tiny zealot
#

well, the email says things like "we're contacting a small group of elite modders" and "top creators like YOU", so i guess i'm just a big deal /j

uncut viper
#

top creators like you? i like to think im more like ichortower than most people on the internet

lucid iron
#

well J Club is a core mod

lucid mulch
#

either my email is a well kept secret, or Speedy Solutions and Profiler aren't elite mods

brittle pasture
#

~~still no email, guess im not an elite modder SDVpuffercry ~~

lucid mulch
#

websites weird, some games are using uuid's for the mod id, other games use a global autoincrement integer

opaque field
#

question: in BETAS, for the item_equipped, what is the H(10) for?

hard fern
#

hat

#

?

lucid iron
#

Did u mean (H)10

#

That's a hat

opaque field
#

oooh okay perfect that's what I thought

brittle pasture
autumn fog
lucid mulch
#

is the save you are loading have Railroad accessible?

autumn fog
#

OH

#

ive just been warping in there ahjshsd

uncut viper
#

if the railroad isnt unlocked schedules that go there fallback to certain other keys or, if nonexistent, defaults like spring

#

this also includes schedules for the JojaMart and the inside of the community center

autumn fog
#

ok ill try going to next spring so it should be unlocked

uncut viper
#

actually its just RR that does the replacement schedule it seems

#

jojamart and CC just dont replace anything?

lucid mulch
#

multiple layers of replacement

uncut viper
#

ah

#

cant have the code being too easy to read now can we

autumn fog
#

ok the railroad thing was the issue, ty SDVpufferheart

uncut viper
#

tbc though you should still fix it so that players starting new saves wont have that error

lucid mulch
#

the parseMasterSchedule does part of it, and changeScheduleForLocationAccessibility does the rest

uncut viper
#

the latter is the only place i see the _Replacement used though

lucid mulch
#

joja/railroad can use <LocationName>_Replacement schedule as a lookup to replace the location to salvage the schedule, while it returning false will end with the schedule entirely needing to be replaced

uncut viper
#

oh yeah fsr my eyes completely glossed over the fact that the JojaMart case used the same code as the railroad case in that switch

lucid mulch
#

past me looked into this in the alpha thread due to discussions on data modelling it

uncut viper
#

i dont remember, was schedules being data modeled something that was only floated as a possibility for 1.7 or was it more of a concrete idea

#

i feel like i have memories of the 1.7 alpha thread before it became 1.6.16

lucid mulch
#

casey was working on pocs for 1.7 while 1.6.16 is still going

lucid iron
#

I would like schedules to be points instead of days

lucid mulch
uncut viper
#

wdym points instead of days

lucid iron
#

Well atm u have to specify a day's worth of points at a time right

lucid mulch
#

the general idea was rather than schedules having schedule keys (like spring) it was an ordered list of schedules with conditions gating it

lucid iron
#

What if u just specify points and edges

uncut viper
#

custom schedule keys

thorn sorrel
lucid iron
#

Plus a key based starting point

uncut viper
#

i was already confused by what you meant and now im even more confused with you bringing up edges. what is an edge in the context of a schedule

lucid iron
#

I wish to turn the npc's daily movement into choose your own adventure

lucid mulch
#

are you talking about the "outer" rules governing which schedule will be used, or changing from Timestamp->Destination Location+Tile to define the actual route they will use more fine grained

uncut viper
#

if you are specifying points and what points they should go to from said points, isnt that... what you have now

lucid iron
#

Yeah but atm u can only go to 1 point

opaque field
#

like "wander around this general zone"?

lucid iron
#

I wish to branch to multiple point

lucid mulch
#

so at 10:00 go to railroad, seedshop or beach I don't care which?

lucid iron
#

Maybe my npc starts in their house (initial point) and then they may either go to seed shop or beach

#

The usual weighted random + Condition + precedence to pick

uncut viper
#

cant you already do this with CP's random token

lucid iron
#

Yes but it kind of sucks i wanna model it sleep

uncut viper
#

i feel like if you're just defining points, the vast majority of them are still going to be conditionless, arent they?

lucid mulch
#

you can kinda do it with CP but it would be tedious, as for each destination you have even more complex logic to keep it going

uncut viper
#

and if you get to the point of writing specific points with specific conditions to choose from on certain days, thats kind of just what you're already doing

#

in 1.6.15

lucid mulch
#

I think chuve wants to effectively reroll the schedule logic after arriving at the first destination, rather than needing to lock in the entire day in advance

lucid iron
#

Something else this would handle with more grace is the "can't access location yet" scenario

#

You can have a railroad point precedence -100

#

And a fallback point in mountain or whatever precedence 0

lucid iron
lucid mulch
#

the designs I saw from pathos/casey would partially let other mods implement that more easily, but they didn't really touch the inner points much and were focused on which schedule to use in the first place

uncut viper
#

unless it just chooses from 3 unconditional points completely randomly

#

but again you can already make that happen with CP then in that case

lucid iron
#

I'm thinking of the general pattern of precedence weighted random that game uses for appearances

#

When 3 points are all available by cond and equal precedence, you get a random one

brittle pasture
uncut viper
#

granted i havent written schedules much before but is that really that much easier than a dynamic token for the schedule point

brittle pasture
#

ie. you're missing (BC) at the start

uncut viper
#

not that everything that can be done in CP means its ineligible to be made a proper feature

lucid iron
#

It would become harder to use DT if we do model the schedule

uncut viper
#

but if it can already be done but people still arent doing it, is it really that desirable a thing

lucid iron
#

Cus not simple string

uncut viper
#

im talking about a DT now

#

not in 1.7

lucid iron
#

And I am talking about my hopes and dreams

#

People do actually do it now, sen and eli and dylan both have randomized schedules i think

#

It's advanced usage for sure

thorn sorrel
lucid mulch
#

I do want to explore more complex token data structures rather than everything effectively being IEnumerable<string>

lucid iron
#

I do think that many schedules will just be a no branch list too and that's alright

uncut viper
lucid iron
#

IEnumerable<object> tokens...

uncut viper
#

while you're at it can you give custom tokens access to input args pls thank u /j

lucid mulch
#

Being able to define a token thats like {"Location": "Railroad", "X": 50, "Y": 50} and then in a patch use {{MyToken |Location}} or something to specify the specific part of it.

#

I also want to figure out a not terrible way to have a token with many values and then run a patch for each distinct value of that token

uncut viper
#

you already theoretically could do that, couldnt you?

brittle pasture
#

the foreach is real...

lucid iron
#

I would like SomeModelField: "{{SinZationalModelToken}}" to work thx

uncut viper
#

i still have that unsubmitted FileInFolder token PR waiting for the day someone smarter than me figures out how to parse tokens in target fields before splitting patches

lucid mulch
#

patch splitting only happens for target/fromfile and splits on literal values, not the current value of the token

#

part of the work for foreach to work will be revisiting how patch splitting works in general.
As I think it can be optimised better, why check the N derived patches seperately if their tokens have updated if they are all the same patch under the hood

#

But my main problem with foreach is figuring out a way of doing it that isn't just a literal "Foreach" field on a patch.
I want it to neatly fit into existing stuff, and be extensible

#

Maybe a {{ForEach {{ChildNames}} }} and just treat it as a magic token that then marks the patch as needing to be split

lucid iron
#

I think at one point we (nonspecific) wanted to do it via local token syntax

#

Like if your local tokens had multiple values it should become split into foreach by default

uncut viper
#

i thought Pathos offhand mentioned a separate ForEachToken field on a patch

brittle pasture
#

though that begs the question of whether we need support the use case of lists of lists

lucid mulch
lucid iron
#

Yeah I think these points were raised too back then blobcatgooglyblep

#

That's why nothing actually happened

lucid mulch
#

I already spent a bunch of time chasing ghosts thinking there are bugs in debugger due to my mod showing things with multiple values due to it splitting on comma

thorn sorrel
# brittle pasture The key of Data/Machines must be the fully qualified ID

Ok, I added in the missing (BC) and now it works and accepts the item. The trouble I'm having now is that it will not randomize and keeps spitting out the same item. I did see under "Output Item" there is a field for "RandomItemId" but the items for that field were already populated on the item itself under "GeodeDrops". So... I'm wondering if I need to put something else there instead to refer to it: https://smapi.io/json/content-patcher/62f6400d153c4feebe7dd8eb26e07836

#

Smoking Christmas trees are a fire hazard

brittle pasture
#

you are testing with new geodes over the day right

thorn sorrel
#

Yes. I spawned in new geodes

brittle pasture
#

though what's the purpose of the three identical rules, or are those just placeholders

#

and what's the same item it keeps spitting out

rough lake
#

Hey, would it be wrong of me to use another mod as a base to do what I want? I think I found one that more or less does what I want, which is to replace the name Sam with another one.

brittle pasture
#

what mod is this

thorn sorrel
brittle pasture
# brittle pasture what mod is this

generally for content code there is only one way to edit stuff and copying snippets is totally, but in this case your mod will likely count as a derivative work in which case you need permissions
safest is to reach out and ask whether you can use their mod as a template while swapping out every graphics/writing that isn't yours

#

hmm honestly I don't see any errors in your code
is time passing when you're testing

#

oh that was meant to be a reply to Saki

thorn sorrel
#

Yes

rough lake
brittle pasture
#

oh that's an old old mod

rough lake
#

But could it serve as a base?

brittle pasture
#

it likely breaks in half on 1.6

uncut viper
#

and also likely uses older, now unsupported content patcher features that no modern tutorial or documentation will be compatible with

rough lake
#

u.u

uncut viper
#

after a quick glance, that doesnt actually seem to be the case (i was worried it'd be from the era where you could use FromFile on EditData) but it also seems very small... i dont know huch stuff it'd be missing from later game updates thatd also need to be changed

#

and because of that this mod cant really act as a template, since you'd still need to write new code to patch the things it misses, and that puts you in exactly the same position that you are already in

#

also i think some of the changes in this mod reword things to be more in-character with the character Yosuke? so unless you know what to change it back to to get to Sam's original lines you'd need to look out for that too

brittle pasture
# thorn sorrel Yes

ok I found out what's happening
the geode crusher function uses the number of geodes crushed to determine the output
your machine needs to increment that stat to move the random number generator

rough lake
#

well I'll keep doing my thing and see if it works. I'll try using the dialogue from Sam's 6 Hearts event, which is the fastest event I can access and where Sam's name is mentioned.

brittle pasture
uncut viper
#

this mod also says it was to be used in conjunction with the villager renamer mod, which has a successor here: https://www.nexusmods.com/stardewvalley/mods/9271
you might have better luck just using this alongside a simple mod to replace his portraits and sprites

#

(disclaimer: ive no clue how this successor works or how well it does what it does)

brittle pasture
thorn sorrel
brittle pasture
#

yep

fallow gazelle
#

Hello. How do I call a method from another mod in my mod?

brittle pasture
# brittle pasture yep

(I shall enter the realm of sleph, for now pls redirect all further inquiries to other very capable helpers in the channel)

fallow gazelle
#

To be specific, I need to call Spacecore's method to initialize the saveserializers before my mod reads save data

thorn sorrel
fallow gazelle
#

(and spacecore's API doesn't seem to have anything that will do just that)

faint hatch
#

I was wondering how to get started on making a clothing mod
Is there a mod I'd be able to use as a base and just change the art files for? I tried looking at the wiki and related pages and got really confused 😭

subtle condor
#

Does anyone know how I can add a custom ore for a custom quarry? I can't really find where to do that 😅

tiny zealot
#

@fallow gazelle (pinging due to reply age) see above

west thunder
#

Another quick question.
If an asset I'd like to replace is in a folder that's in another folder, would it then be:
"Target": "Folder/Folder/Asset"
"Target": "Characters/Monsters/Armored Bug", in my case?

tiny zealot
#

yes, you need the full asset name

west thunder
#

Brilliant.

tiny zealot
#

for clarity, asset names look like file paths but aren't actual paths. (they are read in from folders, but once the game has them the asset name is just a string that happens to have a "path")

west thunder
#

That can't be good.

#

Lurk and skull data files, since they're both mentioned in the big scary red wall of text.

tiny zealot
#

basic json error (unclosed string on "Target" line, both files)

#

"This doesn't seem to be valid JSON." means parsing failed, so you have a syntax problem

lucid iron
#

Did you try to load a json instead of a png

west thunder
west thunder
#

Yeah, I literally just forgot to close the thingamabobber.

#

Horrific.

#

Let's see if it works now.

west thunder
#

it workie

odd ginkgo
#

the scope creep is real folks

#

Over the weekend I almost finished overhauling all of Ranger Taro as an NPC

#

I'm testing the final heart event, tweaking here and there

#

and my brain goes "what if in a final secret heart event she reveals she has a nephew and there's an entire hidden romanceable npc at the end of her questline"

#

"what if you just add in another npc real quick" oh and the only way to unlock him is to be at 4 hearts with emily, six hearts with Leo, 10 hearts with the Ranger -

#

orrr the story could literally be done as it is

autumn tide
calm nebula
lucid iron
calm nebula
#

Add the special sauce in an update

#

Release is not final

lucid iron
#

It's supposed to be an overhaul update right

odd ginkgo
#

True true

lucid iron
#

I think you might as well get it out so ppl can report bugs

odd ginkgo
#

I actually simplified the story and dialogue down a lot to make her writing more clear

lucid iron
#

You can scope creep in parallel

odd ginkgo
#

grounding words

strong onyx
#

How do I modify the introduction dialog for Morris?

#

It's so hard to figure out anything relating to that jerk

odd ginkgo
#

okay we're just going to do a cute bonus event where Ranger Taro squawks like a parrot with Leo and Emily

#

secret sauce later, closer to release for now

lucid iron
odd ginkgo
#

She's now below the tower against the mountain, in a spot that I'm pretty sure (pretty sure) no one else is using. That works for both SVE and vanilla, is further south than Lunna... fingers crossed it works for everyone.

tiny zealot
#

(csproj tomfoolery) can i construct a Condition="" (for a PropertyGroup) that evaluates to true if i have a particular package reference?
in this case, i have a function in a shared project that i want to conditional-compile in or out based on whether the parent project has a reference to Newtonsoft

odd ginkgo
#

Also, you can now switch between Lotti and Suki versions of the merchant really easily in-game from the GMCM

tiny zealot
#

"but ichor," you may say, "every mod can safely reference newtonsoft since it ships with smapi, so why would you do this?"
the heart wants what it wants

lucid iron
#

Are references property group or item group...

tiny zealot
#

also since i'm controlling all the csproj files it would make sense to just do a DefineConstants or whatever along with the reference but it's more fun if the shared project can Figure It Out

#

i already have it setting up the constant for whether to include the harmony stuff, since that's already a flag i can easily check

#

actually i guess the real question is what surface is available to me in a Condition attribute? can i access arbitrary stuff in the csproj tree?

tiny zealot
#

maybe i should just invert it, and make myself define a flag (a la <EnableHarmony>true</EnableHarmony>) and let the shared bit do the reference

#

that seems more straightforward. i think i'll just do that. thanks, ducks! SDVpufferheart

lucid iron
tiny zealot
#

there is effectively no space left for mods to claim. stardew valley real estate crisis /lh

#

recent examples of (what looks to me like) Just Giving Up about it: sunberry village perpetually gets complaints that their location makes no sense, enya's map edit is a single tile so it can just be a little hole and even then it's in a crowded area

#

(no shade, of course. all in good fun!)

odd ginkgo
odd ginkgo
autumn tide
#

hellooo anyone know of a kid age GSQ?

lucid iron
#

do u mean your own children

autumn tide
#

yup!

#

..can you tell i've never played with children in my game-

elfin kindle
lucid iron
#

I don't think there's a gsq

#

It was something I had to add myself for me kids mod

autumn tide
lucid iron
autumn tide
tiny zealot
lucid iron
#

(still have to actually make him able to adopt and/or romancable)

elfin kindle
#

Both should be utilised more probably, though i would prefer if the apartments were simply their own maps like Harveys place above the hospital

tiny zealot
#

i think downhill project is also courting NPCs to move in

autumn tide
#

adopting is easy, just character data edit

elfin kindle
#

I'm playing around with a small NPC mod just cus it's a fun little break from my bigger mod

lucid iron
#

We should make an actual homeless NPC even linus got a tent

tiny zealot
autumn tide
#

..what's harmony SDVpufferchickcry

#

i'm scared

inland cedar
#

has something changed with debug command? just installed latest SMAPI but debug in the console wont work

[SMAPI] Unknown command 'debug'; type 'help' for a list of available commands.

tiny zealot
subtle hamlet
#

hi! this is my first time making a mod: my intention was to create a sign and edit the BusStop map (from SVE) but i can't seem to make it appear in the map, can someone help me?

autumn tide
odd ginkgo
brittle pasture
tiny zealot
latent mauve
lucid iron
#

If u do help it'll show if debug is available as a command

tiny zealot
#

but if you just installed a new smapi it could easily be that your consolecommands mod went missing somehow

elfin kindle
#

Oho, fancy! i'll keep that in mind then! Making a whole house isn't very fun to me anyways, so just going with an apartment would be perfect

inland cedar
#

OK now I know that debug is from the default CC mod (I accidentally deleted it)

tender bloom
tiny zealot
#

Unknown command 'ebug' has come for me many times /lh

lucid iron
#

Mine is 'denig'

heavy pewter
#

Guys, sorry for interrupting but coops aswell as other animal buildings are considered locations right?

lucid iron
#

Kind of, they are a special class of locations

tender bloom
#

the inside of buildings is special but is a location

lucid iron
#

What's the context

tiny zealot
#

you don't need to apologize for interrupting in here. it's a chaotic channel sometimes

tender bloom
#

they can't always be warped to easily, since they have 35943785643756 appended to the names if there's more than one iirc? (random string of numbers, not exactly what i typed)

odd ginkgo
#

well, dangit

autumn tide
odd ginkgo
#

the irony... the park ranger not being compat with the ornithology guild... well, here's to fixing something before bugs can even be reported

autumn tide
#

gotchaaaa ty!

fallow gazelle
# tiny zealot <@1450002216219050026> (pinging due to reply age) see above

I'm working on a new game plus mod. Existing save files have to be read before the user starts a new game.
Buuut some people have had trouble opening certain save files, and they all seem to have Spacecore installed.
My mod uses the vanilla

SaveSerializer.Deserialize<SaveGame>(stream)

which fails to open those saves, so I was wondering if I should be calling Spacecore's

SaveGamePatcher.SerializerManager.InitializeSerializers();

beforehand.

tiny zealot
#

in that case, your best bet is probably to ask @next plaza directly. she would know best what you need to do

fallow gazelle
#

Oh. Thank you!

lucid iron
#

Do you have any log to share?

fallow gazelle
ocean sailBOT
#

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

fallow gazelle
#

It's a log a user graciously sent me (I hope they don't mind).

lucid iron
#

Hm this SaveGameInfo file is vanilla

#

It's the mini save game uses to show you your farmer and farm stats on the load menu

fallow gazelle
#

It says the file isn't found because SaveSerializer.Deserialize() returns null when it fails to read the file, causing it to hop to the next file, which it can't find.

lucid iron
#

Yeah hrm i guess you may want to actually try and reproduce the problem with a smaller mod list

#

Your mod + spacecore + mod that uses spacecore save serializer

#

You will need to go and actually enchant a scythe to see the extra stuff getting serialized

fallow gazelle
#

Somebody did send me their save file and I managed to reproduce the issue i.e. fail to open their save with my mod

tender bloom
#

just to check, did their save open without your mod?

#

because sometimes people get corrupted saves unrelatedly, worth ruling out if it seems to not be repeating right for you

vagrant grove
#

@torn beacon feel free to DM me 😊

fallow gazelle
#

Just test it - their save opens just fine via the load game menu (I am running Spacecore + my mod)

#

And holy cow opening their save unlocked like a dozen achievements on steam 💀

#

My mod has a dropdown list which also loads save files - that's the thing that's broken.

tender bloom
#

i guess then the question is what's different between those two cases?

final arch
#

does your mod do the "backToMenu" and "gamestarted" events correctly?

#

ie do you trigger them via SMAPI'

tender bloom
#

im not really familiar w the spacecore serializer but if it's doing a patch the patch should always b there

fallow gazelle
#

I use GameLoop.SaveCreating and Display.RenderedActiveMenu amongst some other triggers, yes yes

#

Uhh... if Spacecore patches LoadGameMenu.FindSaveGames with a prefix

#

and if my mod calls that same method, do I end up calling the prefixed method? Or is it without the prefix code?

tender bloom
#

my understanding is that it should call the prefixed method

fallow gazelle
#

I see, thank you!

obtuse wigeon
#

also thanks discord for not updating that message was from a while ago

urban patrol
#

is there an existing framework that allows NPCs to follow you? i would love to have one NPC follow you into a dungeon to rescue another NPC

sleek aurora
#

Is there an example of a machine in which the quality of the output element is determined based on the quality of the input element and the level of the profession?

lucid iron
urban patrol
#

hmm i’ll take a look at it

lucid iron
#

Another approach is trinkets

urban patrol
#

i did think about that but thought maybe that was stupid lmao

lucid iron
#

You can make an unobtainable trinket that resemble NPC and trigger action equip it with trinket tinker

urban patrol
#

but yeah set NPC to invisible then equip trinket

lucid iron
#

This you can do on dungeon entry and undo on dungeon exit

urban patrol
#

excellent

lucid iron
#

Still i think it is worth suggesting similar pair of trigger actions to stardew squad

urban patrol
#

is the author in here? i can ping them or else just leave a comment on nexus

lucid iron
#

I never seen em here so yeah nexus comment

#

Main advantage of trinket is that you have full control over how the companion moves

#

Whether this level of fidelity is needed is your choice

urban patrol
#

as in their pathing?

lucid iron
#

No as in their animation and attack behavior

urban patrol
#

oh i see

lucid iron
#

Dolphin's hatsnatcher cat is a pretty complex example you can look at Dokkan

#

The pathing is actually something I decided to not do super complex things on

#

Since I feel they are largely extension of farmer

#

So they either follow you or they chase after a monster/forage whatever

urban patrol
#

i’ve never actually played with trinkets lmao but that sounds really cool

#

could i set that behavior based on a mail flag or whatever? so the farmer could tell NPC “hey don’t go rushing off, stay behind me” and they’d just follow, or farmer could say “hey i need you to take care of all the monsters” and they attack

#

like in an event before dungeon entry

lucid iron
#

Yeah you can control which ability is active by mailflag

blissful panther
#

Welp.

lucid iron
#

Oh man the monseiur mammal

urban patrol
#

perfect

lucid iron
#

You can also arrange them as 2 different "level"

#

And decide which trinket level is equipped

urban patrol
#

ooh

#

same thing, by mail flag?

#

or trigger action etc?

lucid iron
#

The trigger action has an arg for level

urban patrol
#

that would be really cool actually if there was like “on farmer taking too much damage, companion goes rage mode and attacks/companion gets scared and runs away/etc”

lucid iron
#

So u can guard stuff in the If

lucid iron
urban patrol
#

sick

lucid iron
#

I made all this cus i didn't know about trigger actions blobcatgooglyblep

urban patrol
#

yeah i think i’ll do trinket if only because i can just ask you directly about things SDVpuffersquee

lucid iron
#

But tbf

#

This is better for perf

#

I don't have to explode Data/TriggerActions with my stuff

urban patrol
#

yeahhh i’m already worried about Big Procgen Map + lots of monsters spawning lol

obtuse wigeon
#

Is this dungeon mod being made in JSON or in C#?

urban patrol
#

it’s using spacecore

#

so json on my part

obtuse wigeon
#

Ahh gotcha, I'm excited already, love me some fun new dungeons

urban patrol
#

ooh let me send some of the maps i made last night

#

can you have two trinkets at a time? i’m now worried about getting the rescued NPC to follow you out

#

i could always do it in an event but that removes some of the fun

lucid iron
#

Yeah u can

urban patrol
#

yay perfect

lucid iron
#

I think what you would do is event where you rescued them and then traction equip the rescuee's "trinket" version

urban patrol
#

that’s exactly what i was thinking as well

lucid iron
#

Also works as a "yep rescued" check

urban patrol
#

and i don’t even have to spawn him, he can just be a map tile in the first place

tiny zealot
#

some of my best friends are just map tiles /lh

ornate locust
#

Mine too

strong onyx
#

How do I fix this so Morris' name and introduction dialogue changes?
Changing the sprite was easy

urban patrol
#

where did you get Data/ExtraDialogue from?

#

same with Strings/NPCNames

strong onyx
#

I thought I was supposed to link to the paths containing the data I wanted to change in a Content Patcher mod?

urban patrol
#

yes, i’m just wondering what made you think the data was stored in those locations

strong onyx
#

I looked through the data files themselves and on the wiki until I found where the dialogue and name for morris was

brittle pasture
#

those are correct locations

uncut viper
#

those are correct assets nic

urban patrol
#

okay i’m glad i asked lol

strong onyx
#

Oh good

urban patrol
#

carry on

uncut viper
#

however the way you're editing the name is not correct

brittle pasture
#

the issue is that those are strings to strings dicts, not strings to models

uncut viper
#

(oh and the dialogue, yah)

brittle pasture
#

they're not nested under an object named Morris or Introduction

strong onyx
#

Oops
I couldn't figure out the right way to format the strings since I couldn't find a generic example

urban patrol
#

you would just use Entries, no Fields needed

brittle pasture
#

and just "KeyHere": "The new content of the value"

urban patrol
#

since you’re overwriting one string:string entry

strong onyx
#

Oh ok

#

Do I keep the target field?

near island
#

I think it would be:
{
"Action": "EditData",
"Target": "Data/ExtraDialogue",
"Entries": {
"Morris_Greeting": "DIALOGUE HERE."
}
}

strong onyx
#

Thank you for the help
I'm usually better at reading docs than this

uncut viper
#

Target field is always required when editing an asset because that's how the game knows what file you're trying to change the contents of

near island
#

Don't worry, you'll eventually spend so much time staring at curly brackets you'll hate them SDVpufferthumbsup

uncut viper
#

or well, how content patcher knows

strong onyx
uncut viper
#

the change you made for the introduction dialogue is the same thing you need to do to the NPCnames patch

strong onyx
#

Ok
Maybe i made a typo

near island
#

It might be DisplayName instead of Name

strong onyx
#

Ok

brittle pasture
#

you still have the model

#

it's just string : string

uncut viper
#

it's the same issue your other patch had. same exact issue, so same exact fix

strong onyx
#

Ok!

#

It worked!

heavy pewter
#

So I wrote this basic save and warp logic. Apparently you cant warp back inside animal buildings? Is this a mobile thing only?

heavy pewter
#

I mean button A save/stores my location, button B warps me to that saved location.

I saved my location inside coop, so I should be warped there when I press B, but it's not warping me back there and just warping me in my actual current position

uncut viper
#

certain building interiors, like farm buildings, are instanced. they are all a "Coop" location but each one gets its own unique UUID esuqe string after it to differentiate it from every other Coop location

#

try grabbing the NameOrUniqueName instead of the Name of the location

rose sequoia
flat breach
#

Don’t suppose any of you guys might be able to point me towards some good advice for making a custom npc mod? This whole thing is baffling me as a pixel artist 😂 cries in I barely even understand unity

rose sequoia
flat breach
#

Thanks tho! 🙏

rose sequoia
#

if there is, I don't know about it

flat breach
#

Fair nuff, I’ll keep banging my head against the table untill I understand it

rose sequoia
#

type shit

urban patrol
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:

urban patrol
#

miss coriel is also working on updating her NPC builder but idk how close to ready it is

lucid iron
#

I automatically ignore any messages that use emojis as bullet points

iron ridge
#

Is this the one by the people that make wikis or whatever

lucid iron
#

Valnet yeah

iron ridge
#

Ohh valnet is the screen rant people

lucid iron
#

It's a different guy tho (Edil H.)

iron ridge
#

I was thinking of some company starting with f iirc

lucid iron
#

Fextralife?

uncut viper
#

i also got one earlier and was gonna say so but didnt wanna interrupt the helping and then i forgor

lucid iron
#

Now u rembr

uncut viper
#

Fextralife is owned by Valnet

#

valnet owns many things

lucid iron
#

Ye so it's probably the same project

iron ridge
#

It was fextralife that I was thinking of
Ahhh didn't know they were owned by thrm

lucid iron
#

Now the BIG opportunity: we’re exploring paid, exclusive partnerships with top creators like YOU – where we compensate you to keep select mods exclusive to GGMods, backed by ongoing updates, promotion, and editorial support.

iron ridge
#

Do you think moddrop will like a thing called ggmods

#

Since they own the trademark for gmod

lucid iron
#

Imagine sending this to an email you found on github acc full of open source mods medlook

iron ridge
#

Please stop being open source thank u

lucid iron
iron ridge
#

Nope, but gmod

#

gmod.com was their thing before moddrop and the trademark keeps being renewed

merry river
#

sorry for dropping in in the middle of the conversation SDVpufferblob i am having some issues regarding i18n and the randomization of schedule strings now. i tried randomizing them after converting them to i18n but they're not loading anymore (only the regular season dialogue)

"fall": "0 BathHouse_Pool 8 15 0 \"Strings\\schedules\\{{ModId}}_Peiming:PeiMingBath.001\"/(blabla more schedule stuff)"
iron ridge
#

Would it hold up if it was challenged given nobody thinks of olympus games' modding site from 2015 when referring to gmod? Probably not

merry river
#

why does my formatting not work. i'm too tired for this

iron ridge
#

They.. have a ggmods discord
Why couldn't they discord people, that's at least a little less weird

lucid iron
calm nebula
#

Or animations

merry river
#

Oh, I wasn't aware!

calm nebula
#

Do a 610 point if you want an animation or a string

fluid night
#

What does "DrawInBackground" mean?

tiny zealot
brittle pasture
brittle pasture
#

(for future reference)

merry river
odd ginkgo
merry river
# odd ginkgo I feel like this means you have an organizer error, or a code grammar error. Wha...

before i converted everything to i18n, i could randomize my schedule strings without any issues.
but now, the randomization is not working anymore and it's as if no schedule strings are loaded at all

"PeiMingBath.001": "{{i18n: PeiMingBath{{Random: {{Range:2,3}} }} }}" <- schedule string, the keys for the strings in the i18n file are PeiMingBath2 and 3 accordingly
"fall": "0 BathHouse_Pool 8 15 0 "Strings\schedules\{{ModId}}_Peiming:PeiMingBath.001"/(blabla more schedule stuff)"

odd ginkgo
#

I personally REALLY struggle with i18n

mild furnace
#

may help if you're unfamiliar

north plover
#

I have a question about using Alternate Textures to retexture the sprinklers to include the nozzle/enricher. I noticed that you can't actually retexture the enricher and nozzle once they're on the sprinkler, so I tried adding variations to the sprinkler retexture and I tried changing the texture size from 16x16 to 16x32 so that it would include the enricher height, but that resulted in this visual glitch where the sprinkler is a block too far down after applying the new texture. Is there any way do this properly?

tiny zealot
#

i suspect it's something along those lines since the error is trying to tell you "Unable to parse string path"

merry river
lucid iron
brittle pasture
#

iirc the attachments are literally pasted on top right

#

if AT doesn't support changing them independently of the sprinklers then nothing you can do

north plover
lucid iron
#

If u look at Maps/springobjects their "placed" texture is the bottom

#

I think the best you can do now is just normal content patcher retexture

north plover
#

Alrighty, thanks for the information. aSDVemoteheart

rare prawn
latent mauve
#

Regarding the Pelican Valley Loft NPC Apartments, would there be interest if I made a family floor model?

#

So larger/expanded apartment units with multiple rooms.

lucid iron
elfin kindle
tender agate
#

I think the apartment needs to be marketed foremost. needs a reason beyond technical ease for modders to add their character to it

latent mauve
#

Alright, if I have time over the holidays I can see about designing some additional floor options.

#

Well, I don't want to necessarily add a specific NPC or lore at this point, my current focus is Central Station integrations and maybe expanding the exterior landscape a bit to implement things like the fishing pond that I cut out of the original map.

#

It is still meant to be a tool at its core, so I don't want to add things that might mess with other people's NPC lore. ❤️

#

Last thing I want is for people to get the wrong idea about the apartments and treat it as a standalone expansion.

elfin kindle
#

Don't stress it dude, so far I'm the only person whose straight up asked for it and I won't be making another indepth NPC for a while. But i would love to utilize your mod once i do!

tender agate
latent mauve
#

It's mentioned enough here when it's needed, so I think it's fine to not go take out advertising space. 😛

tender agate
#

fair xD

calm nebula
#

You really should hire the skywriter

strong onyx
#

I can't find what tileset the hat shop mouse is in?

#

If someone knows I'd appreciate some help finding it

odd ginkgo
calm nebula
#

Have you listed your apartment on Zillow

brisk wedge
#

Is there a way to make a mod that requires another mod to be installed, but that other mod shouldn't take effect?
The context is that I got permission from a mod author to publish a version of their mod that adds (and removes) some functionality, but my mod also makes a lot of changes to the logic of the original mod so I don't want the original to take effect since I think it will lead to a bunch of bugs. The version I'm thinking of publishing should completely supersede the original one.
But at the same time, I want the original mod author to get credit for their mod. In my head the best way to do that is to force people to download the original mod by making it so that my mod doesn't function if the original isn't installed, but I don't want the original to actually do anything. I feel like there might be some danger here from downloading too many mods and giving the users performance issues?
My mod is still far from being in a state to publish, but I wanted to ask this now in case there are big changes I need to make
Is there a better way to do this? Is this even a good idea? The mods are c sharp mods, not content packs

mellow laurel
loud sandal
lucid mulch
#

Rather than your mod copying or reimplementing stuff, having your mod harmony patch the changes into the original would get you that behaviour

lucid iron
#

I think it's best to just give all your DP to original author

brisk wedge
#

what's a DP?

lucid iron
#

Nexus donation points

#

It's a reward thingy

brisk wedge
#

Oh is this the opt in rewards thing?

lucid iron
#

Yeah

#

But honestly instead of over complicated spaget solutions you could just ask what og author wants

loud sandal
#

Yeah don't do what I do with over complicated spaget solutions, you won't sleep lol

brisk wedge
#

lol yeah that would probably be easiest

stray hemlock
#

Communication is what makes any relationship (not just romantic ones, also platonic or business) work. And if it doesn't work, then at least it doesn't break off as badly.

lucid iron
#

how does harmony ref work blobcatgooglyblep

#

if i do like

#

func_prefix(ref somthing) where i change something

#

and game calls func(instance); then goes on to do other stuff with instance

#

is that instance permanently changed

#

(this is case where original func does not ref)

proud wyvern
#

the original method body (and any prefixes going afterwards, or any other patches) will see the argument after your changes, as if that's what the method initially got

lucid iron
#

Yeah but does it affect the actual value passed in

loud sandal
#

Haha yeah, like if you're mutating, like _instance or anything it references it persists on that object. But replacing a parameter via ref only affects the method call, not the caller's variable

lucid iron
#

After the func call

brave fable
loud sandal
#

Say for example with value types, Value type (int, float, struct) -> without ref you’re changing a copy. With ref you change the wrapper slot for the original call.

proud wyvern
#

imagine you have a void Method(int asdf)
in which the first line is
asdf = 3;

for the rest of the method, asdf is 3
but at the place where you called the method it's still gonna be whatever it was before

of course with the exception of reference types, and setting their fields

fallow gazelle
#

Time to bother people :x

#

@next plaza Hello!
How do I open a save file that's been serialized by Spacecore?
I've tried using saveGame = DeserializeProxy<SaveGame>(stream, path) (via reflection) after running SerializerManager::InitializeSerializers() but DeserializeProxy doesn't see to be able to read the files.

silver grove
#

Hey everyonewave I was wondering if someone could help me.
This is my first time making a content patcher mod (and modding stardew in general) and I'm running into an issue where the manifest says i have an invalid id.

Here is my smapi log
https://smapi.io/log/5e21ec4b633c452bb90e15f848dee73d

I've been following tutorials and looked through other mods manifests for reference, and everything seems to be matching up, but it still doesn't work. I'm really scratching my head on this. Is there something i'm missing?

I've also attached the manifest i you want to take a further look!

ocean sailBOT
#

Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.19045.0, with 1 C# mods and 0 content packs.

uncut viper
#

double check that you've actually saved the file and its actually the one in your mods folder, because the log indicates that its reading your uniqueid as:
CoriMods.Abigail Vanilla Edit

gentle rose
#

you're also missing the last } in the one you sent here <- nope

uncut viper
#

no they are not

gentle rose
#

is discord being stupid again

lucid mulch
#

was a file upload not a code block

gentle rose
#

yup, discord being stupid again. my bad SDVpuffersquee

silver grove
uncut viper
#

then do the second part and double check that the copy you've saved is the one that the game is actually loading, and not a copy in a different Mods folder or some other dev folder

strong onyx
#

odd
Now the tilset isn't changing the hat mouse

uncut viper
#

you're doing EditMap on an image

strong onyx
#

oops

uncut viper
#

also you're replacing the entirety of cursors which is probably not what you want for compatibility

strong onyx
#

oof
What should I do then?

uncut viper
#

the EditImage documentation should describw how to use FromArea and ToArea to specify what sections of the target you want to replace with what section from your custom image

silver grove
strong onyx
#

thanks

odd ginkgo
#

I hate writing movie theater data

#

idk why, I'll script up an event np, but I've been staring at the movies for an hour now

#

I feel like no one is going to take my npc to the movies, so why bother, but also they MIGHT and its more immersive for the option to be there

autumn tide
odd ginkgo
#

but i hate it

elfin kindle
#

It tough honestly

odd ginkgo
ornate locust
#

it does suck to write movie theater stuff, especially since I never take anyone to the movies because it's so late and because of how the movies/likes/etc work

elfin kindle
#

I did it, and I think it does a lot for immersion as you said but also yeah... few use it

odd ginkgo
autumn tide
odd ginkgo
#

Yeah, especially dialogue for seeing different levels of liked movies for a SECOND time

#

CA really put depth there

autumn tide
odd ginkgo
autumn tide
#

..i am never gonna use that but good to know SDVpufferthumbsup

odd ginkgo
#

here's the reaction entry for Taro seeing a movie she loves, for the second time

#

oops except I need to switch that text/script around, but you get the idea

autumn tide
#

no clue how to help personally, but the ppl that do are prob gonna ask for a log

#

!log

ocean sailBOT
#

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

Please share your SMAPI log file. To do so:

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

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

brave fable
#

the source image is smaller than the source area, meaning your image file itself is smaller than 23x31 pixels

odd ginkgo
#

is your image actually 23x31, are is it smaller and you're trying to put it in a 23x31 area?

strong onyx
#

I think it is, let me show you

drowsy pewter
#

not sure why the canvas size is diff

strong onyx
#

Huh

drowsy pewter
#

let me recount

#

nope i just miscounted

#

its 23 x 31

#

can you just uploaad the image here tho

odd ginkgo
# strong onyx

0,0 is the top left corner of the map - are you trying to put this image in the top left corner of the map? It looks to me like you might need to switch the x,y coordinates for your FromFile

strong onyx
#

I'm trying to put this image over the hat mouse image
I might be doing it wrong

rare prawn
#

What program do yall use to check the pixel/tile locations easily? Right now I use photoshop, but wondering if there is something easier before my eyes are trained to just magically know lol

strong onyx
#

I have asprite

odd ginkgo
odd ginkgo
#

Here's the code I used to patch an area int he forest

brave fable
#

honestly even Paint works fine for pixel coordinates

odd ginkgo
drowsy pewter
#

i thought they were doing an image patch

#

this isnt a map file

odd ginkgo
#

The FromArea is the image - and you want the whole image so you start at 0,0\

#

just an example of drawing the image versus where you place it

strong onyx
#

oh ok!

odd ginkgo
#

Just imagine it's your code and images, I'm only talking about the set up of the FromArea and ToArea

rare prawn
#

Thank you both! I didn't know about the program Aseprite and I think this would be useful for other aspects too so glad I asked this question, and didn't know Paint had the ability. Much faster to launch than Photoshop in a jiffy lol

strong onyx
odd ginkgo
#

but also debug mode in-game is really useful for coordinates

#

wait sorry im a dumb dumb nvm but good question

strong onyx
#

it worked

odd ginkgo
#

yay!!

autumn tide
tight rivet
#

Hm.. I wonder if there's a way to pick a random number once and then have it stay the same on subsequent patches

#

the docs imply you can lock a choice between three options, but I don't know how persistent htat is

#

(the context is I want to send a second piece of mail some random days after the first.)

gentle rose
#

v1.0.0 of my Tilesheetinator extension for tiled is now officially out on nexus! Thank you again to everyone who helped beta test it or gave feedback.

Create Stardew Valley maps that work in-game without having to copy vanilla and modded tilesheets back-and-forth, rename files with a . in front of their name, edit maps only in the unpacked content folder or make symlink workarounds.

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

Nexus Mods :: Stardew Valley

Create Stardew Valley maps that work in-game without having to copy vanilla and modded tilesheets back-and-forth, rename files with a . in front of their name, edit maps only in the unpacked content f

urban patrol
#

this is such odd timing, i was literally coming in here to ask a question about pinned keys with Random

elfin kindle
tender bloom
#

I seem to recall it’s per day fixed random

tiny zealot
#

a pinned key (seeded random) in content patcher uses at least the day, and maybe also the world id, as seed material (i believe it calls CreateDaySaveRandom under the hood)

#

so with the same key, a given random will return the same value on the same day. but the next day it will reroll

urban patrol
#

could i use pinned keys for this scenario? i have three doors, two of which have a monster behind them, one of which has a reward. i want the reward to be behind a random door each time

gentle rose
#

yes, as long as it updates often enough!

#

the content patcher docs even have an example on how to do things like this

urban patrol
#

i'd be fine with once a day, since i doubt people will be grinding this dungeon

#

yeah i saw the haley/abigail outfit example but wasn't sure if i was understanding its use

#

(also congrats on the tilesheetinator release!)

#

but i'd have to add the warps in json not tiled i guess since tiled doesn't know CP tokens

#

hmmm EditMap better happen before spacecore setpiece spawning...

#

sorry i'm kind of thinking out loud lol i'll go talk to my rubber duck

gentle rose
#

(also @lucid iron @vernal crest I made a !tilesheetinator command for the extension now so you can both stop shaking your heads at me SDVpufferwaaah)

urban patrol
#

yessss

calm nebula
urban patrol
tight rivet
#

That seems.. hm. Well, I could. I do not think that actually meets my use case.

#

but that said, it doesn't need to be random

#

I'll just pick a day.

#

Well.. maybe synced_choice would work

cold cypress
urban patrol
#

is there AI? i can showcase but not if there's AI or NSFW

cold cypress
#

oh thats ai made

urban patrol
#

ah yeah that's against this server's rules

cold cypress
#

i undedrstand sorry for my request

round dock
#

It’s in the pins, in case you want to see

urban patrol
#

all good

#

(and if you're interested in learning how to remake this mod without AI, the people in here would love to help!)

tight rivet
#

hm. Today's new note: you can't use random tokens in config schema's default.

#

was hoping it'd work, but tbh, I wasn't sure it would

heavy pewter
#

C# pros there, I need some minor help.

So I made a flag that prevents the WarpPlayer() from firing WHEN the player bought an animal in the actual vanilla shop, it SHOULD only fire WHEN the menu is opened through the mod. Buth for some reason, the WarpPlayer() is still getting excuted when I bought an animal in the actual vanilla shop

tight rivet
#

I would track if it's actually being set to false generically

#

from what I can tell, you check if it's false before setting it, too

#

i'd set it somewhere in your mod, and call on that as a first step

haughty charm
#

@cold cypress - Gen-AI content, including mods, cannot be shared or posted in this server.

ocean sailBOT
#

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

urban patrol
#

is this one error leading to many errors, or 2+ different errors?

#

i can send my maps if needed also

uncut viper
#

is your map name actually Maps/DollHouseBlank without a mod ID prefix?

urban patrol
#

lord of course it's that stupid

#

thank you

#

i feel like when i do really complex things i mess up and typo the most basic stuff lol

#

okay the map error is gone but the traction error remains

#

(and the dungeon map is the blank version, it goes without saying)

uncut viper
#

is it the same exact traction error? have you closed and reopened the game/save

#

dont know if patch reload would be good enough here

urban patrol
#

i'll close/reopen

ocean sailBOT
#

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

urban patrol
#

knowing very little about C#, i almost think it's not able to "fit" the pieces?

#

the CanItemBePlacedHere is what makes me think that

uncut viper
#

tbh i thought itd fix the traction error too lol. the only two reasons i could think of for that error in isTileOnMap (the highest function in the stack trace is where it failed specifically, so CanItemBePlacedHere is less important) is if the map doesnt exist or the position its checking doesnt exist, but i also was unable to spot a place in spacecore's code where it might accidentally send a null vector to check

urban patrol
#

i wonder if there's some sort of coordinate issue? i also noticed when i warped in that i was placed out of bounds

#

but i figured i just messed up or forgot to fill out that field

uncut viper
#

i would give each of your coordinates in that big comma separated/slash separated list of rectangles a double check

#

and see if you're not accidentally defining a rectangle thats out of bounds

urban patrol
#

will do

#

oh shit that's what it is, i'm one tile too short vertically

#

(idk how, considering i copied the map then expanded it, but oh well)

tight rivet
#

embarssing: "Hey, my mod isn't working, it patches Data/MailData..."

#

(I spotted it when I thought about it, but that was after the first nine testing passes.)

urban patrol
#

UGH that didn't work

ocean sailBOT
#

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

urban patrol
#

maybe i can try getting rid of the Back layer?

tight rivet
#

the mail didn't send, which hm..

#

i'll give it another day..

urban patrol
#

if the trigger action to send it already fired then it won't send again unless you reset it or test it on a new save

uncut viper
#

afaik every map needs every layer

urban patrol
#

Back still exists i just meant erasing the 80x80 square of back tiles

#

regardless it didn't work sadly

#

i did find a cake though??

uncut viper
#

idk how spacecore spawnables work enough to troubleshoot it further unfortunately

urban patrol
#

no worries, i appreciate the help

#

i know i'm in uncharted territory lol

#

i might ping casey tomorrow if nobody else knows

uncut viper
#

maybe try testing with just one rectangle for simplicity

urban patrol
#

in the setpieces traction?

tight rivet
#

that's why I'm acutally assuming I need to progress to next day