#making-mods-general

1 messages · Page 175 of 1

tranquil stone
#

gotta save all the brain storage for subnetting lol and fcking ports and protocols.... rip

royal stump
#

(also we did have one class about multi-threading code on mainframes where we had to do ssh connection junk and bespoke scripting, but yeah, pretty brief)

gentle rose
#

same SBVLmaoDog

#

the moral of my concurrent programming class was Don’t

royal stump
#

I kinda meant both because there was a lot of that too, but yeah, technically most folks were in the router-related course

#

I ran a roguelike map generator on the mainframe and that was basically it

gentle rose
#

it is the reason I know what mutexs and semaphores are though so ig that’s that haha

royal stump
#

we got into that in "advanced C#" or something, it was good to learn but another big confusion point

#

thankfully SDV's code is deathly afraid of threads and it doesn't come up much

lucid iron
#

Chest mutex my behated

gentle rose
#

that sounds fun, everything we did was along the lines of “there are 6 people at a table, 6 plates and 6 forks, and you need a plate and a fork to eat, make it so they are all able to eat concurrently without locking on picking up a fork”

#

it was oddly specific

patent lanceBOT
#

@brittle ledge: grab your tempActor example (1h ago)

royal stump
#

the winforms stuff earlier reminded me of it because I made a goofy space invaders thing in the threading class
pretty low bars on most of the projects though, like "just don't do other logic in the draw thread"

#

I recall a lot of people having trouble conceptualizing how it'd be useful, aside from that bit

lucid iron
#

Low bar but sdv does all the logic on the draw thread

patent lanceBOT
#

@lusty elm: get back to work incase I get distracted (1h ago)

brave fable
# lucid iron Chest mutex my behated

don't talk bad about multiplemutexrequest. i know on the surface it may look ugly and it behaves like a toddler, but let me assure you the IL is even worse

uncut viper
lusty elm
#

Remind me in 1 hour to make sure i'm working on Mods.

patent lanceBOT
#

yep sure sure np (#6479212) (1h | <t:1737072933>)

rancid musk
tribal ore
#

Still no luck finding the sprites used for Krobus' footprints during the winter. Any help would be appreciated

#

I can probably make a custom tile but... no idea how to add that to the game at the moment xD

brave fable
#

footprints are generally hidden in loosesprites/cursors

tawny ore
#

Everything is in Cursors

#

.q 6218

patent lanceBOT
#
#6218

It's not in Cursors
There's no way it's in Cursors
... it was in Cursors

tribal ore
#

I'll double check, but I didn't see it in cursors

#

And I did look earlier

#

But it's probably in cursors xD

brave fable
#

there's like 2 4x4px sprites for it in a 1200x???? spritesheet

tribal ore
tawny ore
#

It's not this, is it? I don't recall what it looks like

lucid iron
tawny ore
#

I'm still traumatized by chest mutex

tribal ore
tawny ore
#

Please don't discuss that in my presence /s

lucid iron
#

Im psure im just dum tho but my solution is to just

#

Open the chest 1 time when u put it down

tawny ore
#

For my Ultra Organized Chests mod, I'm converting regular chests into chests with a unique global inventory id so that mutex work consistently for farmhands

royal stump
#

I avoided letting people chop down walnut bushes for a while because I didn't want to figure out if the mutex liked that SDVpufferlurk
turns out it's fine, though

lucid iron
tawny ore
#

Between Khloe and I, I can't imagine how many hours were spent trying to get a farmhand to lock a chest mutex for chests placed in unsynced locations

#

Something I'd like to do, but it would break a few mods, is just make every placed chest a global inventory, and that would simplify everything.

teal bridge
royal stump
#

in more practical terms, the university lessons were more like "don't put so much logic in the forms' buttonPress methods that it locks up"

brittle ledge
#

So for my tempactor, I did /addTemporaryActor gemflamingo 32 32 55 31 0 false which adds a 32x32 "NPC" at coordinates 55,31 facing north and not breathing. And this is the spritesheet I loaded, which is just swiped from vanilla.

#

However, if you're not actually making them walk anywhere, you don't need the full left/right/up/down movement sprites.

tribal ore
brittle ledge
#

I loaded it as its own spritesheet.

tribal ore
#

I don't know how images work and am having trouble finding a guide, sorry

brittle ledge
#
            "Action": "Load",
            "Target": "Characters/gemflamingo",
            "FromFile": "assets/images/Sprites/gemflamingo.png"
        },```
tribal ore
#

Oh! So "gemFlamingo" is the id that can be used later as a "character"

brittle ledge
#

Yep!

tribal ore
#

Got it, that makes sense

brittle ledge
#

You can make it whatever you want.

#

...actually now that I'm looking at it, I probably should append {{ModId}} on there to make it unique

tribal ore
#

Yeah, I just thought that the asset would already have to exist in "Characters" for CP to find it

#

Good to know I can add new stuff

brittle ledge
#

(also it occurs to me that if you're not moving the footprints or having them appear mid-event, it might actually be easier to make a temp map... depends on how familiar you are with Tiled SDVkrobusgiggle )

brittle ledge
#

Okay, temp actor it is SBVLmaoDog

tribal ore
#

I just want things to show up and stay in one place for one event as a clue for where a missing character has gone xD

#

😛

#

So I think tempActor works, yeah

#

Thank you so much for all of your help!

brittle ledge
#

So for your case, you would want to load your tile (or tiles) as a single sprite of that size - since you aren't moving it, you wouldn't need to make it any larger.

#

A quick note that if you want the footsteps in more than one place at the same time, you'll need to load multiple tempActors with different names (e.g., {{ModId}}_foot1, {{ModId}}_foot2, etc.

tribal ore
#

writing all of this down, btw

#

If I did want to make a temporary map (basically, just the mountain map with footprints added to it), do you have a resource you'd recommend to start learning Tiled?

#

Nvm, looks like the wiki has actually got some good information on it

#

🙂

oblique meadow
#

What is the name of the location where Adventurer's Guild events are stored? Im in the events and can't find them

royal stump
#

AdventureGuild, I think

oblique frost
#

Where are animations created for NPCs?

oblique meadow
#

Hmm. I don't see it on the list. Maybe im missing it

royal stump
#

oh, maybe it doesn't have its own event file, my bad SDVpufferdizzy looking around

calm nebula
#

(There isn't a file for it in vanilla)

#

You'll need to do a low priority load

zealous scroll
#

Hey guys, i wanted to ask if anyone know how to change the townmap.. i need to put a warpplace there and can‘t figure out how to put the edited map into the mod.. (i already have the edited one on tilted)

#

I tried putting the editmap command on the content.json file but as soon as i start the game the old town map is still there

oblique meadow
#

I was going to try tying an event to joining the guild as an alternative since this isnt working the way I was expecting it to:

      "Action": "EditMap",
      "Target": "Maps/{{ModId}}_RusticRidge",
      "FromFile": "assets/RRPatch.tmx",
      "FromArea": { "X": 11, "Y": 13,  "Width": 5, "Height": 8},
      "ToArea": { "X": 11, "Y": 13,  "Width": 5, "Height": 8},
      "EditMapMode": "Replace",
      "Update": "OnTimeChange",
      "When": {
        "Query: {{MINE_LOWEST_LEVEL_REACHED 20 100}}": true
      }
    },```
royal stump
#

CP's "query" token isn't the same as the game state query system from SDV 1.6; MINE_LOWEST_LEVEL_REACHED is a game state query, but not a CP token

#

one of my frameworks does let you use queries like that as CP tokens, but I don't think mine progress is available with just CP

calm nebula
#

I mean why not use a trigger action

#

To set a mail flag

royal stump
#

yeah, that'd do it

calm nebula
#

I'm on my way to see if my local Joann is going to close. Byeeeeee!!!!!

royal stump
#
{
    "Format": "2.5.0",
    "Changes": [
        {
            "Action": "EditData",
            "Target": "Data/TriggerActions",
            "Entries": {
                "{{ModId}}_SetFlag": {
                    "Id": "{{ModId}}_SetFlag",
                    "Trigger": "DayEnding",
                    "Condition": "MINE_LOWEST_LEVEL_REACHED 20 100",
                    "Action": "AddMail Current {{ModId}}_YourEventFlagHere"
                }
            }
        }
    ]
}```
something like this, basically
#

then you can use CP's mail flag token in "When" to apply that map edit

oblique meadow
#

Awesome. Thank you so much

calm nebula
#

(Why the upper limit btw?)

royal stump
oblique meadow
royal stump
#

e.g. if somebody installs the mod after they've been through the normal mines already, MINE_LOWEST_LEVEL_REACHED 20 100 will be false, but MINE_LOWEST_LEVEL_REACHED 20 will still be true

oblique meadow
#

I took off the max and got everything else working. Thank you both

patent lanceBOT
lusty elm
#

Remind me in 1 Hour make sure I'm still working, NO SLACKING!

patent lanceBOT
#

sure thing, champ (#6479296) (1h | <t:1737076582>)

brave fable
#

(he's not working)

lusty elm
#

I am! I'm learning how to redo my world maps cuz instead of only showing spring, 1.6 makes the worldmap rotate seasons so i need to add new sprites and setup the CP to rotate between them seasonally rooBla

#

and after i'm doing with that i'll probably spend like 15 minutes trying to figure out why it isnt working...

#

yup, there is red text there

brave fable
#

the red text means it's thinking

oblique frost
#

If one frame of an animation for an NPC isnt working, is there something wrong with that frame art wise or is the game not recognizing that square?

lusty elm
#

welp, I fought it for a good 25 Minutes without it working, just to try and see if i could get the rotating ocean farm sprites of the world map instead of default, nope. so I'm just gonna go with default. Gotta go with what works atm, better to patch and upgrade later (Motivation pending) than not do anything.

dusk mulch
#

@tiny zealot I am using your secret note framework to add more secret notes to the game but I noticed when I tested adding 2 secret notes it would only let me read 1 of them, the other would "Crumble to dust", Do I have to make a seperate item for another note?

tiny zealot
#

if you don't mind sharing your json, i'd be happy to take a look at it

dusk mulch
#

Alright, so I need to make 1 item for each note? Also sure! Let me grab the JSON

#
  "Format": "2.4.0",
  "Changes": [
{
  "Target": "Mods/ichortower.SecretNoteFramework/Notes",
  "Action": "EditData",
  "Entries": {
    "SecretNote01": {
      "Contents": "I sure hope nobody finds this! It's full of embarrassing secrets.",
    "SecretNote02": {
      "Contents": "Testing Note Compat",
       }
      }
    }
  }
 ]
}```
#

(This is from the framework)

    "ichortower.SecretNoteFramework_DefaultNote": {
        "Name": "Secret Note",
        "DisplayName": "[LocalizedText Strings\\Objects:ichortower.SecretNoteFramework_DefaultNote_Name]",
        "Description": "[LocalizedText Strings\\Objects:ichortower.SecretNoteFramework_DefaultNote_Description]",
        "Type": "asdf",
        "Category": 0,
        "Price": 1,
        "Texture": "Mods/ichortower.SecretNoteFramework/DefaultNoteTexture",
        "SpriteIndex": 0,
        "Edibility": -300
    }
}
tiny zealot
#

hmm, your json should be fine. with no conditions and no object id, they should both use the default item and work normally right away

#

let me check it out on my end

dusk mulch
#

I can read the one that says "I sure hope nobody finds this! It's full of embarrassing secrets." but I can't read the one that says "Testing Note Compat", it crumbles to dust

tiny zealot
#

ok i am reevaluating and you are missing a }, to close your first note

dusk mulch
#

Ah.

#

i will try adding a close to it and see if it works

tiny zealot
#

when you load in, you should see two grayed out notes in your collections menu

#

each time you use a note item, it will reveal a random note from all available notes that use that item

#

you can create as many or as few custom note objects as you wish

brave fable
#

i was about to joke and say 'you must create 8 secret notes or else.' until i remembered that hairstyles used to require exactly that

dusk mulch
#

alright, ty! i will see if this works and ping you if anything else comes up

tiny zealot
dusk mulch
#

Wait-

tiny zealot
#

!json if your text editor doesn't validate syntax for you, this page can

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.

patent lanceBOT
lusty elm
#

_>

dusk mulch
tiny zealot
# dusk mulch I have been using that page

try the following

{
  "Format": "2.4.0",
  "Changes": [
    {
      "Target": "Mods/ichortower.SecretNoteFramework/Notes",
      "Action": "EditData",
      "Entries": {
        "SecretNote01": {
          "Contents": "I sure hope nobody finds this! It's full of embarrassing secrets."
        }, // <= this is the line that was missing
        "SecretNote02": {
          "Contents": "Testing Note Compat"
        }
      }
    }
  ]
}```
fervent horizon
#

Do all Harmony Patches have to be in the Entry cs file, or can you have the patches in their own class and just call them from the entry cs file?

uncut viper
#

they can be called whenever and wherever

fervent horizon
#

ok, cool. just don't use patchall

uncut viper
#

if you use annotations they have to be in their own class

#

i dont believe patchall will even do anything if you're not using annotations

fervent horizon
#

right, but annotations are not recommended

uncut viper
#

none of my harmony patches are in my entry class or even my entry file and i use patchall to do the patching

#

annotations vs non-annotations will honestly like never make any difference ever

dusk mulch
fervent horizon
#

ok, I was just going off the wiki, it recommends not using annotations, bhut I will just keep them since that is how I have it currently written

uncut viper
#

if your harmony patch breaks after a game update and smapi needs to rewrite it, its probably broken anyway

fervent horizon
#

good point

calm nebula
#

(It makes one major difference currently: android)

lucid iron
#

is that still no good yggy

tiny zealot
#

i don't do annotations because i don't like creating a class for every patch. does it matter? no. only vibes

lucid iron
#

personally i manual patch just cus calling methods is better vibes

#

🤝

tiny zealot
#

i patch with reflection crimes instead of annotations

royal stump
#

SDVpufferlurk static classes with an Enable method for me

lucid iron
#

khloe was working on some kind of source gen

#

so u can have manual patch but with annotations to do source gen

calm nebula
lucid iron
#

that should work for android presumably, cus the annotations are already consumed by time of build

fervent horizon
#

That is what I am trying to keep is consistency

calm nebula
#

And this is why we love Khloe

#

To be fair, BSavage, each individual mod is internally consistent

lucid iron
#

just follow your heart PecoSmile

calm nebula
#

But across the way too many mods in my repo, I've changed my mind on how I do things many times

#

And it's not always worthwhile to go back and rework

gaunt orbit
fervent horizon
#

My project started like this . and is now like this ⚪

royal stump
#

copy-pasting a template file is also very easy (re: standalone classes mostly, annotations work either way)

#

SMAPI's thing where it goes out of its way to log patches on methods also helps, now

teal bridge
#

Personally, I don't use Harmony annotations because I find programs easier to maintain when you can follow the entire logic down from a single entry point; annotations are action at a distance (albeit a relatively small distance).

Plus, it's more straightforward to conditionally patch, i.e. only if some other mod is installed.

calm nebula
#

(You can conditionally patch with annotations as well)

#

The Prepare() method

uncut viper
#

pretty much all of BETAS is built on harmony annotations and then reflecting to grab all the classes with annotations to auto register things

brave fable
teal bridge
# calm nebula The Prepare() method

Yeah but that's more action at a distance.

To each his own; as I mentioned the other day, I dislike abstractions that simply provide a "different" rather than obviously better/safer/more efficient/more concise way of doing the same thing.

tiny zealot
brave fable
#

you can put every patch in a single [harmonypatch] class

#

in case you aren't doing that

teal bridge
#

Does LoC have an 8500-line EverythingPatches.cs file?

latent mauve
#

Do we have a 1.6 Data/Locations tutorial yet on the moddingwiki, or do I actually need to look at potentially making one?

#

I'll do it if I have to, but if someone else gets there first, I will be relieved. LOL

royal stump
#

rokugin has Tutorial: Adding a Custom Location (CP)(1.6) on there, it looks like

latent mauve
#

hooray!

oak dragon
#

heey back to mod work. I checked code and wiki about it, now I believe I ve known what u meant yesterday(maybe not yesterday). And another problem: I'm reading GameLocation code about blacksmith, and I cant understand how it check if Clint's tile positon valid. Code like this:

    public virtual bool blacksmith(Location tileLocation)
    {
        foreach (NPC n in this.characters)
        {
            if (!n.Name.Equals("Clint"))
            {
                continue;
            }
            if (n.Tile != new Vector2(tileLocation.X, tileLocation.Y - 1))
            {
                _ = n.Tile != new Vector2(tileLocation.X - 1, tileLocation.Y - 1);
            }
            n.faceDirection(2);
            if (Game1.player.toolBeingUpgraded.Value != null && (int)Game1.player.daysLeftForToolUpgrade <= 0)
            {
                        .....
fervent horizon
#

ok, say I have a GMCM that has different configs for an individual horse, and then I add another horse, is there a way to refresh the GMCM so that the new horse will also show up in the menu?

brave fable
lucid iron
#

it checks if clint is either 1 tile up or 1 tile up and 1 tile left

brave fable
#

annotations are tops

lucid iron
#

u can see which tile it is by checking the blacksmith shop tmx

oak dragon
fervent horizon
#

Or, should I use StardewUI and create a seperate place to configure the horse options?

lucid iron
#

i think it might be decompile nonsense

royal stump
#

the original code probably assigned that x-1 y-1 tile to a variable and never used it

oak dragon
lucid iron
#

hm yea i double checked the IL, it is big spaget there too

#

unclear if there is jump to next loop anywhere

#

so possible that it just dunwork DokkanStare

royal stump
#

literally speaking, _ is a "fake" variable that discards the value without actually using it;
it still calls the "get" methods for the tile X/Y and such, then does nothing with them

#

either way, you can basically ignore that part

lucid iron
#

and this tile prob activates as long as clint is anywhere in the blacksmith shop

lucid iron
#

i dunno

#

go test for science

#

(also u dont have to ping me lol im still here)

oak dragon
#

I'll go into the game and take a look

tiny zealot
oak dragon
#

sorry for that lol..

#

I guess that might really be the case, as Clint sometimes swings his hammer on the right

dusk mulch
#

Where can I find the achivement ID's? They aren't in the great ID sheet.

uncut viper
#

Data/Achievements

dusk mulch
#

Thank you!

uncut viper
#

what do you need them for though

dusk mulch
#

I am using them as a condition for an event

uncut viper
#

ahh, gotcha. carry on then SDVpuffersmile

oak dragon
#

Yes! shop menu can be opened as long as Clint is in his house, even if he is already planning to leave

latent mauve
#

I can confirm, you can access Clint's shop when he's using the anvil on the right of his shop

oak dragon
#

lol

latent mauve
#

I did this last week xD

teal bridge
# fervent horizon Or, should I use StardewUI and create a seperate place to configure the horse op...

One thing about doing configs is that if you want it to be accessible through the GMCM menu, you'll have to roll your own Harmony patch.

It's definitely doable and I do it for AFS, but that particular hack is not included in the framework. I'm kind of hoping to work out some long-term supported, API-based solution with Casey at some point, and reluctant to put a "compat" feature into the framework that's fragile in the meantime. So if you decide you want to go that way, you can look at AFS to copy/paste.

(It's probably very easy to create the menu. Just rather less easy to integrate it with GMCM if that's part of your goal.)

#

And yes, for the record, one thing that GMCM is exceptionally bad at handling is variable-sized lists, because it's all static layout computed at menu creation time.

oak dragon
#

Does this mean that I can check the NPC's tile position and his shop tile positon at any time to see if the shop is available

lucid iron
#

a easier integration is to do a clickable button with gmcm custom options, to open a stardewui menu

lucid iron
oak dragon
#

gmcm is ..?

#

ohhhh game mod config menu

#

And why I need check Doors and warp in? (festive said that

lucid iron
#

you need to check the player can reach the tile

#

until u get key to the town at least

oak dragon
#

gotcha! Like this, it can exclude case that pierre or clint pretend to get to work but don't open the shop door

#

thank u again I think I can do it

dusk mulch
#

@tiny zealot Is there an easier way to get the text on the note to skip down to the next line when I want it to?

tiny zealot
#

secret notes use the same formatting as mail: use ^ for a line break

dusk mulch
#

Oh, ty!

shut edge
#

anyone know what mods mess with the time scale? something in my loadout is making the days very quick

brittle pasture
#

time speed?

teal bridge
#

AFS has a feature that does that while you're fishing. Only other one I can think of is time speed.

dusk mulch
#

is here a game state queire that is based on what the lowest level of the skull caverns you have gotten to is?

royal stump
#

skull caverns are the same, just number 121 and higher

dusk mulch
#

Oh, ty!

dusk mulch
teal bridge
#

Skull cavern level is just mine level + 120

dusk mulch
#

OHHHHH

#

alright

#

ty!

royal stump
#

add 120(?) to your floor numbers, yeah

teal bridge
#

It is literally just the mines, as far as the game is concerned, it's not a separate location.

oak dragon
#

It means if I use ladder successfully by some way at the bottom of the mine, I will fly to desert

teal bridge
#

Anyone happen to recall in what context the heart cursor is used?

brave fable
#

petting animals is my guess

tiny zealot
#

it may not be. i don't recall seeing it

teal bridge
#

Pretty sure petting animals is the hand cursor.

#

(that's this one)

#

Yeah, definitely the hand. Hm, maybe it's just not used.

brave fable
#

spouse kiss? SDVpufferthinkblob

#

alternatively you can just search the code for cursor index set with that number

dusk mulch
#

Can I send my JSON here and the errors I am getting? I can't figure out what is wrong.

gentle rose
#

send it through the smapi json validator

#

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

dusk mulch
#

I have

#

Its not the syntax that is wrong its the function

gentle rose
#

I mean send us the link to it

dusk mulch
#

Yet I cant figure it out

#

Oh

gentle rose
#

rather than sending the json here

teal bridge
teal bridge
#

No biggie, it's just for naming purposes anyway.

gentle rose
#

what's going wrong right now, by the way?

dusk mulch
#

The console said entry #14, #17 and #02 were having trouble

gentle rose
#

having trouble with what? what isn't working?

dusk mulch
#

one sec

#

it said it was having trouble "converting" or something

gentle rose
#

can you either send the full error or describe what expected behaviour you aren't getting please? preferably both

dusk mulch
#

let me get the error

uncut viper
#

ActionsOnFirstRead is a list it seems

#

but you have just strings for some

#

so it cant convert from string to list, if i had to guess what the error is

dusk mulch
#

[Content Patcher] Can't apply data patch "MoreSecretNotes > EditData Mods/ichortower.SecretNoteFramework/Notes > entry #14" to Mods/ichortower.SecretNoteFramework/Notes: failed converting entry to the expected type 'ichortower.SNF.SecretModNoteData': Error converting value "AddMoney -50000" to type 'System.Collections.Generic.List`1[System.String]'. Path 'ActionsOnFirstRead'.. [Content Patcher] Can't apply data patch "MoreSecretNotes > EditData Mods/ichortower.SecretNoteFramework/Notes > entry #17" to Mods/ichortower.SecretNoteFramework/Notes: failed converting entry to the expected type 'ichortower.SNF.SecretModNoteData': Error converting value "AddItem 66 1 0" to type 'System.Collections.Generic.List`1[System.String]'. Path 'ActionsOnFirstRead'.. [game] Failed parsing condition 'PLAYER_STAT Host daysPlayed 560 [561]': optional index 4 (int maxValue) has value '[561]', which can't be parsed as an integer.

uncut viper
#

correct

dusk mulch
#

oh so i cant have it in those brackets?

uncut viper
#

no, it has to be in the brackets

#

all of them

dusk mulch
#

ohhh

#

alright

#

ty!

uncut viper
#

assuming you mean the ActionsOnFirstRead

dusk mulch
#

yeah

uncut viper
#

the brackets in your PLAYER_STAT need to be removed

#

when looking at documentation if something is wrapped in brackets [] it just means its optional

#

dont write them

#

that goes for all of your other conditions too, like SecretNote14

#

(but not just secretnote14, you have it in several places)

dusk mulch
#

alright, ty!

ivory umbra
#

how would i target the "Filters" field within an entry that looks like this

ivory umbra
#

''' "{{ModId}}_Junimo": {
"Motion": {
"Anchors": [
{
"Mode": "Crop",
"Range": "{{JunimoCropRange}}",
"RequiredAbilities": [ "HarvestCrop" ],
"Filters": null,
},
{
"Mode": "Shakeable",
"Range": "400",
"RequiredAbilities": [ "HarvestShakeable" ]
},
],
},
'''

uncut viper
#

look at "Edit a deeply nested field"

ivory umbra
#

I did but I don't understand how to get past "Anchors" in this example. the documentation example that looks similar has an "Id" field to target a list value but there isn't one here

uncut viper
#

in the Format section above that it says that it can be any one of the ID, a field name, a list value, or a list index

#

so you can do like #0 if you want the first one

ivory umbra
#

Oh! that's what I was missing. Thanks!

brittle pasture
#

side note but that's why it's recommended that models in framework mods have an Id field even if said field otherwise does nothing

uncut viper
#

(there probably should be an ID field though)

dusk mulch
#

[Content Patcher] Can't apply data patch "MoreSecretNotes > EditData Mods/ichortower.SecretNoteFramework/Notes > entry #14" to Mods/ichortower.SecretNoteFramework/Notes: failed converting entry to the expected type 'ichortower.SNF.SecretModNoteData': Error converting value "AddMoney -50000" to type 'System.Collections.Generic.List`1[System.String]'. Path 'ActionsOnFirstRead'.. [Content Patcher] Can't apply data patch "MoreSecretNotes > EditData Mods/ichortower.SecretNoteFramework/Notes > entry #17" to Mods/ichortower.SecretNoteFramework/Notes: failed converting entry to the expected type 'ichortower.SNF.SecretModNoteData': Error converting value "AddItem 66 1 0" to type 'System.Collections.Generic.List`1[System.String]'. Path 'ActionsOnFirstRead'.. [game] Failed parsing condition 'PLAYER_STAT Host daysPlayed 560 [561]': optional index 4 (int maxValue) has value '[561]', which can't be parsed as an integer.

uncut viper
#

again for ActionsOnFirstRead it is a list so they all need to be in brackets. they need to be written like you have for SecretNote02 even if you are only doing one action.

#

the other brackets issue is for the actions of game state queries themselves. for example you write AddItem 74 [5] [0] in SecretNote02. the brackets in the documentation that tells you how to use the AddItem action means that the value is optional, meaning you dont need e.g. the 5 or the 0. if you want to include those numbers, dont include the brackets

#

AddItem 74 5 0

#

this goes for every other action and game state query (in the conditions fields) you've used

dusk mulch
#

I think I understand, I will tell you if something comes up. Thanks!

#

I have it in brackets but I am still getting errors.

     "Contents": "You have too much money... Give some to the poor.",
     "Conditions": "PLAYER_MONEY_EARNED Host 50000 100000",
     "ActionsOnFirstRead": [
     "AddMoney -50000"
    ],```
uncut viper
#

did you fix it for all of them? please send an error log

dusk mulch
# uncut viper did you fix it for all of them? please send an error log

All 3 of them are still getting errors, I am just trying on SecretNote14 until I fix it so I can then move it over to the rest.

[Content Patcher] Can't apply data patch "MoreSecretNotes > EditData Mods/ichortower.SecretNoteFramework/Notes > entry #14" to Mods/ichortower.SecretNoteFramework/Notes: failed converting entry to the expected type 'ichortower.SNF.SecretModNoteData': Error converting value "AddMoney -50000" to type 'System.Collections.Generic.List`1[System.String]'. Path 'ActionsOnFirstRead'.. [Content Patcher] Can't apply data patch "MoreSecretNotes > EditData Mods/ichortower.SecretNoteFramework/Notes > entry #17" to Mods/ichortower.SecretNoteFramework/Notes: failed converting entry to the expected type 'ichortower.SNF.SecretModNoteData': Error converting value "AddItem 66 1 0" to type 'System.Collections.Generic.List`1[System.String]'. Path 'ActionsOnFirstRead'.. [game] Failed parsing condition 'PLAYER_STAT Host daysPlayed 560 [561]': optional index 4 (int maxValue) has value '[561]', which can't be parsed as an integer.

uncut viper
#

also unrelated but are you aware that PLAYER_MONEY_EARNED is for lifetime earnings and not current money so they might not have 50,000 to take

#

and if they exceed 100000 lifetime earnings it will never happen

#

please send an actual error log using the uploader

#

with the latest error you are getting after retrying it

#

fix it on all of them as well

dusk mulch
#

Let me fix them all then get the log

ocean sailBOT
#

Log Info: SMAPI with SDV on , with 0 C# mods and 0 content packs.

dusk mulch
#

It is only #14 and #17

#

OH

uncut viper
#

this is not an entire log

#

if that "OH" doesnt mean you figured it out then i would ask for another current json too. if it does mean you figured it out then carry on

ocean sailBOT
#

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

dusk mulch
uncut viper
#

have you had the game open the whole time?

#

snf_reload is not going to reload the file you're editing. patch reload will

#

if you've had the game open during editing but never do a patch reload, your changes are not going to happen

dusk mulch
#

ok progress

#

its now #11 #12 #13 that have errors

#

let me refresh the console so it doesnt have so much text

uncut viper
#

please send an updated json with it too

dusk mulch
#

its finally fixed

#

how can i ever repay you

uncut viper
#

start with full error logs in the future instead of copy pasting from the console SDVpuffersmile

oak dragon
#

If mod doesn't support a certain language, it will use default.json, right? Is there a way for me to detect this?
I want to achieve this effect: If my mod's i18n file exists, use it; if it doesn't, use the vanilla i18n

dusk mulch
#

sorry 😓

uncut viper
#

its ok! it just woulda revealed the issue a lot sooner

uncut viper
#

and why would your i18n not exist if its your mod?

oak dragon
uncut viper
#

a vanilla location im assuming? is it just the name of the location by itself, or is it in the middle of a sentence?

#

can you send/show a json snippet so i can get more context for what you mean?

lucid iron
#

You should be able to fetch display name without doing any translation yourself

oak dragon
#

wait a minute I will show you picture

uncut viper
#

tokenizable string support is not guaranteed

oak dragon
#

god I just changed a bug, I'll fix it first.sorry for that

lucid iron
#

They r in C# i think

uncut viper
#

if theyre in C# then its trivial yeah. i dont have context for what theyre doing or where

fair token
#

May I ask if I edit the content of a custom farm to add Mail, will it actually affects all new farm playthrough? Thanks!

lucid iron
#

Are you sending this mail yourself?

gentle rose
#

how comes you're sending the tv by mail? I thought the tv bug got fixed in 1.6

fair token
#

This is old code

uncut viper
fair token
#

Errr wait

#

I can designate which farm receive the mail?

oak dragon
#

I felt that the displayName didn't meet my requirements, so I translated each location myself(although most of them are same with displayName)

"locationData": [
        "Farm",
        "Town",
        "CommunityCenter",
        "JojaMart",
        "ArchaeologyHouse",
        "Island",
        "SeedShop",
        "ScienceHouse",
        "Blacksmith",
        "FishShop",
        ...
        ]
uncut viper
#

no

fair token
#

I mean what does send the mail by yourself mean? xD

uncut viper
#

what are you trying to achieve? @ pichu

oak dragon
fair token
#

Actually, I allowed someone to use my map file to edit and expand

uncut viper
fair token
#

BUT, I want to remove my TV mail on my own farm. However, the farm that another creator is using adds mail in the game by sending message.
So whatever which farm I open, I keep receive that mail

lucid iron
#

Well i suppose u could target the string asset? Only the en one

#

Im also pretty confused about the purpose

oak dragon
#

some of them are too long and some of them are too confusing. sorry for wrong json was sent

"ChooseLocation.WizardHouse": "Wizard's Tower",  
    "ChooseLocation.AnimalShop": "Marnie's Ranch",  
    "ChooseLocation.LeahHouse": "Leah's Cottage",  
    "ChooseLocation.BusStop": "Bus Stop",  
    "ChooseLocation.Sewer": "The Sewers",  
    "ChooseLocation.Desert": "Calico Desert",  
    "ChooseLocation.SandyHouse": "Sandy's House",  
    "ChooseLocation.SkullCave": "Skull Cavern",  
    "ChooseLocation.AdventureGuild": "Adventurer's Guild",  
    "ChooseLocation.Woods": "Secret Woods (Hardwood)",  
    "ChooseLocation.Backwoods": "Backwoods (North of the Farm)",  
    "ChooseLocation.Railroad": "Railroad (a.k.a. Spa)",  
    "ChooseLocation.BathHouse_Entry": "Spa (a.k.a. Railroad)",  
    "ChooseLocation.Tunnel": "Tunnel",  
uncut viper
#

then just do what chu suggested and patch just the EN string and use the displayname everywhere

oak dragon
#

like this

fair token
#

So yeah, if a mod edit the mail data to send player farmhouse a mail, there is no way to specify only sending to that farmhouse?

uncut viper
#

if its not your mod thats sending the mail then it depends on how exactly theyre doing it

oak dragon
#

maybe complete i18n work is what I real need. sorry for confusing question

uncut viper
#

there is a FarmMapAsset token that you can use to conditionally send mail if its your own mod, or if the other mod sends the mail from something you can edit before it happens (like a trigger action) then you can change it according to that token too

#

but if the mod sends it with C# you're out of luck

fair token
uncut viper
#

no, i mean C#

#

if they dont use Content Patcher to send the mail and add the mail to the mailbox directly then there's nothing you can do

#

but i dont know the other mod in question

fair token
#

So yeah, maybe I have to ask them to change another way to send mail or simply remove that mod, I guess.

uncut viper
#

you can null out their event with content patcher from your own mod

fair token
#

Tbf I actually not experienced in modding so I actually made my own farm by copy paste and change around. 😂

oak dragon
#

ty for your help anyway. next time it will not a weird question like above

fair token
uncut viper
#

if you null it and remove the event, the event will never happen ever. regardless of what farm you're on

#

if you want to not null it on a specific farm, you need to use the FarmMapAsset token

oblique frost
#

Where is the guide for creating heart events for NPCs? :)

fair token
brittle pasture
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:

brittle pasture
#

specifically Events

fair token
#

Is anyone else know a way to remove a mail that is sent to every farm caused by a custom farm mod?

hallow prism
#

Asking aythor for compat or trying trigger action to remove the mail or mark it as read

fair token
#

My mod is a custom farm. But another custom farm adds mail via editing mail data, which means it apply to every farm.

fair token
#

Anyway, if I moved the mailbox, the default one will keep spawning. Is there a less hassle way to move it in 1.6?

hallow prism
#

i believe you need to move a property and maybe something else

#

wiki may have more info

fair token
#

The yellow part was always there or?

#

Because I never recall the need of patching Data/Buildings

light bramble
#

I mean...My massive farm mod doesn't do that...But then again I also move the house...

calm nebula
#

Which made the farm house moveable

#

Which is why it's embedded into the farmhouse now

light bramble
#

Yet I don't have to do the patch?

calm nebula
#

I don't recommend detaching it tbh, it makes it worse to move the farmhouse

light bramble
#

So wait...do I no longer need the MailboxLocation in my map?

fair token
#

Tiled make an instance, the game itself makes another one by default 😵‍💫

fair token
calm nebula
#

Not exactly

#

You can move the farmhouse

#

The mailbox will move with the farmhouse

fair token
#

Oh no cannot detach 😂 what on earth lol

#

Thanks you. I better not move it then!

fair token
gray bear
#

hey so let's say i wanna make it so my chicken has multiple sprites for the baby version and it changes randomly

#

i'm guessing i just need to load those and use a random block?

brittle pasture
#

you can, but every chicken will change at the same time

gray bear
#

ah

#

is there a way to make it so it changes from chicken to chicken?

brittle pasture
#

use the skin system

gray bear
#

is there a guide for that somewhere?

brittle pasture
#

Skins field

gray bear
#

ty!

hard fern
#

SDVpufferwaaah ok im having trouble here, im trying to fix the town -> blacksmith warp on the door, but it keeps throwing me back to the default location

#
        "Action": "EditMap",
        "Target": "Maps/Town",
        "MapTiles": [
            {
                "Position": {
                    "X": 94,
                    "Y": 81
                },
                "Layer": "Buildings",
                "SetProperties": {
                    "TouchAction": "Warp Blacksmith 15 18"
                }
            }
        ]
},```
#

it's like this, but.

#

i thinki did something wrong?

hallow prism
#

what is the context?

#

why do you need to fix it?

gray bear
hallow prism
#

vmv has skins for its animals

#

and elle's mod has skins for vanilla i believe

#

also remember the base game has a lot of examples

#

you may need to test how to target field but once you target a field once, you know the logic for the others

gray bear
#

will do! thank you

blissful panther
#

Does VMV not effectively use every single 1.6 addition/change? SDVkrobusgiggle

rancid temple
hard fern
rancid temple
#

The Warp map property is on Town

brittle pasture
rancid temple
#

Oh wait hang on, I'm thinking of screen warps

hard fern
#

all im doing is changing the endpoint to a different tile, but the game spits me out in the wall 😔

mighty ginkgo
#

<property name="Action" type="string" value="LockedDoorWarp 5 19 Blacksmith 900 1600" /> isn't it this on the native town map?

rancid temple
#

TouchAction Warp is a Back tile warp

#

It's the one that triggers when you step on a tile

#

You want Action Warp

hard fern
#

so not the one on a tiledata?

rancid temple
#

Or LockedDoorWarp as Kristian pointed out

gray bear
#

welp time is the time in my coding where i panik a little and attempt to understand things. pls bare with me

hard fern
#

gah

rancid temple
#

Action Warp and LockedDoorWarp are still TileData

#

They're for the Buildings layer

#

TouchAction Warp is for the Back layer

hard fern
#

.< i got them mixed up

pliant badger
#

How hard is it to program a character to work with sve maps? Looking to make a mod but I am a total newbie when it comes to making characters for stardew.

gray bear
rancid temple
#

Most likely the validation schema hasn't been updated yet

#

It's something Pathos has to do manually, so it's not something that's going to be done perfectly in sync every time

gray bear
#

fair enough.

rancid temple
#

!npc

ocean sailBOT
#
Creating a Custom NPC

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

brittle pasture
#

you're defining a new one, so just put your stuff in the Data/FarmAnimals block

#

a new field named Skins containing a list of skins you want to add

blissful panther
calm nebula
#

Stupid ideas timd

#

"2.[4-9].[0-9]+"

gray bear
#

Would uh, this code load all these files

        {
            "LogName": "Load Chicken Texture",
            "Action": "Load",
            "Target": "FarmAnimals/BabyOmniChicken_{{Range:1-6}}, FarmAnimals/OmniChicken, Cursors/ShopPreview",
            "FromFile": "Assets/{{TargetWithoutPath}}.png"
        },```
calm nebula
#

No

gray bear
#

thought so. alr, load all of them at once time

rocky anchor
#

Hey hey! This is a sizable request, but would anyone be able (and willing!) to help me debug my Fashion Sense/Content Patcher merger? I'm not getting any errors in SMAPI, but my hat won't show SDVpuffermad

ocean sailBOT
#

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

rocky anchor
#

I know it's a newbie issue; I'm struggling with the purpose and syntax of the FS fields

#

The examples all seem so similar 😭

hallow prism
uncut viper
#

does VMV use Data/Mannequins

gray bear
hallow prism
#

no it doesn't use it 😄

uncut viper
#

maybe next time........

hallow prism
#

i'm a bit afraid to look at it

gray bear
#

they are haunted, so that's undersrandable

#

ah okay after looking at vmv my formatting is wrong, haha. ty Lumi

blissful panther
#

Interesting... SDVkrobusnaughty

gray bear
#

i mean this is fine considering the fact only the first line has the spots but it's a bit funny

#

anyway, baby time

uncut viper
gray bear
#

i don't actually know what i meant by that desription

uncut viper
#

whats not to get?

gray bear
#

what rules am i refering to

#

logic? probably

calm nebula
#

Has someone made a paleolithic mod yet

rocky anchor
calm nebula
#

From watching PBS because insomnia land tbh

gray bear
#

what's "paleolithic"?

#

is that the era dinosaurs were in? bc- wait no that's a Jurassic mod

blissful panther
#

Stone age, more or less!

gray bear
#

those, are different times right

brittle pasture
uncut viper
#

didnt cryomancer just release a dinosaur mod

gray bear
#

different eye color babies aquired

brittle pasture
#

I think that's a few couple million years back

gray bear
#

different time periods iirc

uncut viper
#

but there was fred flintstone clothing

#

(it mightve actually just been tiger skin but i saw someone make a joke that it was fred flintstone clothing but didnt lurk long enough to know if it actually was)

gray bear
#

i like to think the chickens just have a miniature kitchen somewhere to make all this food

rancid temple
#

Cloachen

gray bear
#

hhh

rancid temple
#

Ship it

blissful panther
#

Watering cans leak water, too much rain damages crops...

gray bear
#

do u guys just like causing pain? /j

blissful panther
#

Using the same patches of land too often causes nitrogen deficiency in the soil, making the crops grow slower and have worse produce... SDVkrobusgiggle

#

A cruel hardcore type mod like that could be kinda fun!

calm nebula
#

Unless you grow peanuts

hallow prism
#

You need crop rotation, making beans actually great to grow

brittle pasture
#

darn I was actually genuinely considering making a mod like that a month ago
even includes renaming regular fertilizer "P fertilizer" and speed gro "N fertilizer"

#

and crops like beans replenishing N content

gray bear
#

oh no, chemistry

brittle pasture
#

scrapped everything though since I ultimately couldnt boil it down to something I find interesting and want to engage with

versed wyvern
#

Yeah if I had the knowledge of how to make stuff like that I think I'd want to enrich a mechanic that could use more complexity, like cooking

gray bear
#

this channel is great cause you can see mods that torture the players but also, a chicken and other silly things

brittle pasture
#

it's never too late to learn said knowledge

versed wyvern
#

True but alas time and energy are in limited supply GuraTiredSip

true coyote
#

I almost came this close to yeeting my cat to another solar system when he stepped on my keyboard and collapsed all my layers and folders

#

I was worried I wouldnt have enough undo to bring them all back. luckily I did >:(

brave fable
#

remember you can include your psd files in a git repo and have a longform version history to call on

young sluice
#

question: how would I go about modding my movement speed during festivals? It happens in the Archipelago mod but I've found no other mods that change it. I play with a base +2 movement speed and going into festivals feels so slow!

tiny zealot
#

it's fairly easy to fix but requires C# and probably harmony patching

wanton pebble
#

I swear pathos updated cjb to do just that

#

So could probably use that as an example code wise

tiny zealot
#

i remember pathos posting about it for sure. don't know if it was implemented/released

royal stump
#

if buffs work in festivals, a trigger action could do it SDVpufferthinkblob

tiny zealot
#

it might be during all events, actually, i forget exactly. but certainly during festivals

young sluice
#

Dang. Time to start learning C# then? Heh

thin hamlet
#

I thought that cjb fixed that, noted…

raw oxide
#

Hello i'm starting ti learn modding on C# the thing is that on the stardew wiki they recommend visual studio and net.6 but right now visual studio is discontinued we have to use visual code and they released net.9 i just want to know wich software should i download please

tiny zealot
#

you can safely download a newer .NET sdk (i am using sdk 8, if memory serves). the important thing is that you must target .NET 6 when you build your mods (any newer SDK can do this)

#

most C# modders use visual studio (full, not code) but it's not required. you can use vim like a caveman (me) if you want

gentle rose
#

oh wait really? I think I installed .net6 especially for stardew haha, that's good to know ichor

#

you can also use Rider now that it's free!

raw oxide
#

Thank you for the advice ☺️☺️☺️

lucid iron
#

You do have to install net 6 sdk yea

#

But u can use latest dotnet tools and compiler as long as ur build target is 6

mighty quest
#

I think I know the answer but just to confirm: is there any way to unlock the frame rate in this game?

lucid iron
#

Lots of ppl including me use newer C# language version for qol

tiny zealot
mighty quest
#

ggez

lucid iron
#

Aren't most animations gonna be at 175ms a frame anyways

#

I struggle to imagine what 300fps would even do with sdv

tiny zealot
#

(i don't actually know the answer, but i'm pretty sure i heard the game is capped at 60 and it is not practical to undo)

mighty quest
#

i mean you just need to decouple the update and render loops

gentle rose
#

from what I've seen, the draw code is so connected to the logic that I wouldn't be surprised if increasing the framerate also made half the game faster?

lucid iron
mighty quest
#

problem is idk how coupled they are, probably very

lucid iron
#

There's not much interpolation going on

mighty quest
#

for me it would be benchmarking

gentle rose
#

stardew draw functions are very often called directly within the logic methods I think (please someone correct me if I'm talking out of my ass)

mighty quest
#

on second thought that wouldnt help at all

lucid iron
gentle rose
#

ty for clarifying! all I know is that half the time they're all in the same place so there would be a lot of rewriting to separate them

mighty quest
#

I wanted to move some costly functions that run every tick to a background thread
but my pc is too fast so idk how to benchmark the difference

lucid iron
#

And ofc anim logic is sometimes used for other things, but i think we r at least not looking at ds

gentle rose
#

I'm being slow today, ds?

lucid iron
#

Since anim usually happen on some ms timer and not on frame

#

Dark souls

lucid iron
#

Usual sdv not very thread safe warnings apply

proud wyvern
#

yeah. if you need any of the game state for your operations, i wouldn't put them on a background thread

#

unless you can map some game state to another model on the main thread, then use that on your background thread

gentle rose
#

is that just for modifying the game state, or also reading it?

proud wyvern
#

it depends

#

if you read multiple times and expect the data to be the same...

mighty quest
#

i do read some game state

lucid iron
#

I was thinking of like, reading something from content in single thread

mighty quest
#

things like current location, position, animation frame

proud wyvern
lucid iron
#

Then send off to processing in new thread without reading content again

mighty quest
#

I'm mostly thinking of doing this for enemy AI

proud wyvern
#

oh, reading on main

mighty quest
#

because WoL adds a lot of stuff to it that makes it sluggish

lucid iron
#

Yeah

mighty quest
#

so the main thread would queue requests to update the current target, for example

#

and the target would be calculated in the background thread

proud wyvern
#

...took me a while to realize you're DaLion

mighty quest
#

sorry about that lol

#

anyway, I got it working but idk if its any improvement

teal bridge
teal bridge
# mighty quest things like current location, position, animation frame

What you probably need to be very careful of here is assuming that each of those values will be consistent with each other, which they won't always be when you read them on a background thread. You might get a position that makes no sense for the location, for example. Since there is no way to read them all atomically, and no way to lock them.

#

Instead, I would read all the game state on the main thread (not just in a single thread, but on the main thread) and then if there's any really expensive calculation afterward, you can hand it off to a background thread like chu says.

#

As an aside, it is rarely worth the effort to do this unless you can tolerate the results of the background work being a few frames late and actually expect them to be a few frames late. Otherwise, the work required to context-switch between threads twice during a single frame can often exceed the entire cost of the background work. So, always profile. Even if your hardware is super fast, it's all relative.

gentle rose
next quarry
#

I'm trying to spawn a bomb, but it's not exploding 🤔

Game1.currentLocation.tryPlaceObject(spawnPosition, new StardewValley.Object("287",1));
``` any advice?
acoustic summit
#

After placing it you can use GameLocation.explode

#

Or if you dont really need the object itself, just use GameLocation.explode

next quarry
#

NOTED oki I'll try that! thanks

acoustic summit
#

Here is an example for an explosion at the player's tile, dealing damage scaling with their attack.
"Game1.currentLocation.explode(Game1.player.Tile, 2 + Game1.player.Attack / 6, Game1.player, false, this.Parameters.ExtraDamage);"

next quarry
#

but that makes it explode immediately correct?

acoustic summit
#

Yep, for a timed explosion theres a few ways you could go about it. Such as a flashing temporary sprite at the location, or placing the object then waiting.

next quarry
#

I see :3
thank you! I'll try to mess around a bit more and see if I can get it to work! SDVkrobushappy

elder mountain
#

Hi, does anyone know where to look up the names of fishing locations? I couldn't find in Data/Locations for example location in mines at level 100

tiny zealot
#

dang, does nexus fast-track your mod zips through the scanner if you have premium? i've never seen one of mine get the green checkmark so fast

lucid iron
#

I feel it's rng

lucid iron
#

General fishing data for beach or whatever is in Data/Locations yes

elder mountain
teal bridge
#

There is an UndergroundMine entry in locations with fish, it just might not always behave the way you expect because there's a lot of extra hard-coding for certain mine floors.

#

And you definitely cannot target per-floor without Harmony patching.

lucid iron
#

You can make a cavern lake in the mines entrance i guess

#

Or put those fish in the caldera

brittle ledge
#

More New Fish adds to the mines, you could look at their code possibly

#

I don't believe it's updated for 1.6 yet but the location code shouldn't have changed

calm nebula
elder mountain
calm nebula
next quarry
teal bridge
#

There might be a "current mine floor" GSQ? Didn't check.

teal bridge
#

It's generally pretty confusing though; e.g. Stonefish and Ice Pip appear nowhere in the location fish data, they're hardcoded.

calm nebula
#

It places the item and returns a bool to indicate whether or not it did anything

calm nebula
#

So easily predicted

next quarry
# calm nebula Not exactly

ok, so I did this

new StardewValley.Object("287", 1).placementAction(Game1.currentLocation, (int)spawnPosition.X, (int)spawnPosition.Y);

``` and it did the animation for a bomb explosion but did not place a bomb (no dmg just animation) ![SDVpufferthinkblob](https://cdn.discordapp.com/emojis/958634925639225395.webp?size=128 "SDVpufferthinkblob")
#

oh for reference

Vector2 farmerPosition = Game1.player.Tile;
Vector2 spawnPosition = new Vector2(farmerPosition.X, farmerPosition.Y);
royal stump
#

look at the bomb code in GameLocation.placementAction rather than the object itself
you can search for case "(O)287": or one of the other bomb IDs

#

I don't think calling it directly will work for your use case because it's about using items in a farmer's hand & doesn't just take an object to use

#

though looking at it again, I'm not sure if that covers the actual damage either SDVpufferdizzy

lucid iron
#

What is the goal here

#

I remember bombs being dumb and having all their logic on the TAS lol

royal stump
#

(my assumption was spawning an active bomb somewhere)

lucid iron
#

*temporaryanimatedsprite

royal stump
#

the first sprite broadcast has something in extraInfoForEndBehavior so maybe that affects it

#

or just the IDs involved, etc

lucid iron
#

So u can skip to calling that instead

lucid iron
#

Use placementaction as a ref for what u should be doing

lucid iron
#

TemporaryAnimatedSprite

next quarry
#

oh my bad 💀

royal stump
#

just tested and yeah, the gamelocation code excerpt spawns a functional bomb when copy-pasted out
(with x and y = pixel position, placementTile = tile, etc)

wanton pebble
#

So weird question I won't necessarily be doing anything with

#

Is there a way to control the quality of harvested crops in the seed data

#

E.g. if someone buys a seed, allow it to grow a vanilla crop, but vastly restrict the ability to get anything that isn't normal quality

gentle rose
#

btw lyoko while you're here, there's a slight issue with uws-rsv that has been causing a lot of long mod warnings in the logs of anyone who has it installed because it's trying to detect NPCs who aren't in the save yet sometimes, is there a way to prevent that?

royal stump
#

(@ lyoko) definitely not vanilla, but in C# you could tag them at creation time from stores, I suppose

gentle rose
#

I've seen that issue a lot with people who have up to date cp iirc

wanton pebble
#

Then Pathos's fix didn't work

#

I assume it's user error though

#

Let me showcase it... I know where to nab it from in here

#

.

gentle rose
#

I'll try to see if I can find a recent smapi log that has it

wanton pebble
#

Please do.

calm nebula
royal stump
#

I imagine there's some place to intercept the quality in a harmony patch, but I don't know much about crop output offhand

calm nebula
#

Transpiler!

#

Bitch of one too

royal stump
#

(also a lot of harvest-related mods would probably get involved in that)

#

(so yeah SDVpufferdizzy)

gentle rose
wanton pebble
#

The short version is my random idea that is now gated behind c# (which I hope to carve out time to learn next month, no promises though) was "people are talking about joja not having lower prices" so I thought "okay, lore accurate joja with shitty seeds giving shitty results"

#

Time to look at this log

next quarry
royal stump
#

it's a little long-winded so I didn't paste it earlier, but yeah; I put this in a console command

var who = Game1.player;
var location = Game1.player.currentLocation;
var x = Game1.player.Tile.X * 64;
var y = Game1.player.Tile.Y * 64;

Vector2 placementTile = Game1.player.Tile;

foreach (TemporaryAnimatedSprite temporarySprite2 in location.temporarySprites)
{
    if (temporarySprite2.position.Equals(placementTile * 64f))
    {
        return;
    }
}
int idNum = Game1.random.Next();
location.playSound("thudStep");
Game1.Multiplayer.broadcastSprites(location, new TemporaryAnimatedSprite(287, 100f, 1, 24, placementTile * 64f, flicker: true, flipped: false, location, who)
{
    shakeIntensity = 0.5f,
    shakeIntensityChange = 0.002f,
    extraInfoForEndBehavior = idNum,
    endFunction = location.removeTemporarySpritesWithID
});
Game1.Multiplayer.broadcastSprites(location, new TemporaryAnimatedSprite("LooseSprites\\Cursors", new Microsoft.Xna.Framework.Rectangle(598, 1279, 3, 4), 53f, 5, 9, placementTile * 64f, flicker: true, flipped: false, (float)(y + 7) / 10000f, 0f, Color.Yellow, 4f, 0f, 0f, 0f)
{
    id = idNum
});
Game1.Multiplayer.broadcastSprites(location, new TemporaryAnimatedSprite("LooseSprites\\Cursors", new Microsoft.Xna.Framework.Rectangle(598, 1279, 3, 4), 53f, 5, 9, placementTile * 64f, flicker: true, flipped: false, (float)(y + 7) / 10000f, 0f, Color.Orange, 4f, 0f, 0f, 0f)
{
    delayBeforeAnimationStart = 100,
    id = idNum
});
Game1.Multiplayer.broadcastSprites(location, new TemporaryAnimatedSprite("LooseSprites\\Cursors", new Microsoft.Xna.Framework.Rectangle(598, 1279, 3, 4), 53f, 5, 9, placementTile * 64f, flicker: true, flipped: false, (float)(y + 7) / 10000f, 0f, Color.White, 3f, 0f, 0f, 0f)
{
    delayBeforeAnimationStart = 200,
    id = idNum
});
location.netAudio.StartPlaying("fuse");```
#

(the first part is sloppy and the foreach loop probably isn't necessary, but the basic idea works)

next quarry
#

thanks!

gentle rose
wanton pebble
gentle rose
#

it's not this user - this has been in several logs I've seen

#

this user just reminded me to let you know in case you didn't

wanton pebble
#

I knew this would happen back in 2.4 Content Patcher. Tis why I put in the tempblock

#

At the very least if the issue ISN'T resolved Pathos needs to know

#

If it's a c# mod interaction.... hoo boy

gentle rose
#

out of curiosity (I'm learning about content packs right now so I like hearing details like these) is it not possible to condition the patches on the npc existing?

#

actually, let me do a minimal test for you, lyoko, and we'll know for sure

hallow prism
#

this is what the token should do

gentle rose
#

ah, I see

hallow prism
#

at least i think it's the purpose, checking if there's a relationship to see if npc exists

ivory plume
#

Does the affected NPC always exist in Data/Characters with a CanSocialize field set to a true condition (even if they're not spawned manually or via UnlockConditions yet)?

wanton pebble
#

The four always exist in Data/Characters. Cansocialize, however, is not always true - socialization is locked to event conditions

#

Event blocks here

ivory plume
#

That would explain it; in that case you're asking for the player's relationship to an NPC that can't have relationships.

wanton pebble
#

Hmmmm

#

That complicates things

gentle rose
#

is there no mail flag set when they're unlocked that you could condition on? obviously not an ideal solution but would be a specific fix

wanton pebble
#

I don't think so. I can check when I get home regardless

hallow prism
#

well

#

you can use the condition of the unlock

#

like the event seen

wanton pebble
#

The problem is all four are in the same file for additions, so they each have a different one. So I have to bar the patch from running at all without event seen, because I can't ALSO put that condition in since the dialogue variates by relationship level

#

I think I'll have to run some patches in the content.json that makes a mail flag

#

Then checks for it

ivory plume
#

One option would be to use a dynamic token for each NPC's relationship level, which defaults to something if their socialization isn't unlocked yet.

wanton pebble
#

It's either that or reprogram to four files

hallow prism
#

well dialogue by relationship level can be solved by query or by i18n key and token, but it may not work with your current layout

wanton pebble
#

Hmmmmm.... I will have to check the patch structure when I get home (work would probably have a conniption if I tried to go on nexus from the work PC), but the dynamic tokenry may be possible

#

That'll be a few hours though

median dune
#

Well, I finally worked it out (ik its nothing but its a learning curve lol)

gray bear
#

spin

tiny zealot
#

spenny energy (or, spenergy)

gentle rose
#

does spenny still work-- ichor same braincell SBVLmaoDog

median dune
gentle rose
#

idk what cracked me up more when I first found spenny, the fact it exists or the fact that there's apparently a deluxe version SBVLmaoDog

gray bear
#

deluxe spenny?

gray bear
tiny zealot
#

what about spenning wheel

gray bear
#

the what

gentle rose
tiny zealot
#

it's shitposts all the way down

gray bear
#

there is a thing as too much power, i think

gentle rose
#

the spacechase shitpost to foundational cornerstone of modding frameworks ratio is impressive

gray bear
#

modders posses the capacity to shit post way too close to the sun

median dune
#

there is also Spenny Lite

median dune
gray bear
#

that's what icarus said

frail moss
#

me looking the 804 page of message of 6480 to find a message that can help me to resolve my issue

next quarry
median dune
#

I love how I just accidentally triggered a memory lane for the fellow shitpost enjoyers

cyan marsh
#

I need to pick some brains a sec.. I'm trying to replace woodsTheme during the winter.. thing is, I already replace it... any thought on how I can have an audio change in the winter?

next quarry
tough crater
wide flint
#

I'm trying to do a transpiler patch on Crop.harvest.
My method gets triggered when you harvest regular planted seeds but doesn't get triggered at all when harvesting planted forageable seeds.
The vanilla code does if (forageCrop.Value) so I'm confused why it doesn't trigger at all. Does that only cover the forageables that can be found randomly?

cyan marsh
#
            "woodsTheme": {
                "ID": "woodsTheme",
                "Category": "Music",
                "FilePaths": [
                    "{{AbsoluteFilePath: Music/SecretWoods/GForest.wav}}",
                    "{{AbsoluteFilePath: Music/SecretWoods/LostWoods.wav}}",
                    "{{AbsoluteFilePath: Music/SecretWoods/abandoned.wav}}"
                ],
                "Looped": true
            },
``` this is the non-winter code
#
            "woodsTheme": {
                "ID": "woodsTheme",
                "Category": "Music",
                "FilePaths": [
                    "{{AbsoluteFilePath: Music/SecretWoods/FrostForest.wav}}"
                ],
                "Looped": true
            },
```this is the winter code thusfar
wide flint
gentle rose
brittle ledge
#

she updated all her critical mods 😌

tawny ore
#

Actually, scratch that. Just realized you're referring to wild seeds?

#

Looks like forgeCrop.Value is only set for the crops which are spawned by location. The Wild Seed crops are instantiated using the regular Crop constructor, which only sets whichForageCrop.Value and not forageCrop.Value

#

So it would fall under the next condition after if (this.forageCrop.Value)

wide flint
tawny ore
#

And just to confirm, you're referring to wild seeds (Spring, Summer, Fall, Winter) that you planted on regular hoe dirt?

wide flint
#

Yes

blissful panther
#

Thinking from the last time I played the game 500 years ago, it feels like they just spawn the forageable SObject on the ground, so there's no real instance of a crop or anything at that point?

tawny ore
#

Yeah, I just checked and it is an instance of Object

#

Rather than Crop

royal stump
#

there's a value called replaceWithObjectOnFullGrown in Crop, so yeah, probably that SDVkrobusgiggle

wide flint
#

So is it possible to check when it gets harvested?

royal stump
#

I think Object.performUseAction is what gets called when you pick forage up, if that helps

#

it's where I assign forage quality and such in a custom subclass, though there're probably other methods involved too

wide flint
#

Guess I was pretty close then. Tried HoeDirt.performUseAction (which makes no sense)

royal stump
#

SDVpufferthinkblob I guess GameLocation.checkAction is the place to check for forage pickup, depending on what you're aiming for
it effectively starts in this section

else if (this.objects.TryGetValue(tilePos, out obj) && (obj.isSpawnedObject.Value || isErrorItem))
{
    int oldQuality = obj.quality.Value;
    Random r = Utility.CreateDaySaveRandom(tilePos.X, tilePos.Y * 777f);
    if (obj.isForage())
    {
        obj.Quality = this.GetHarvestSpawnedObjectQuality(who, obj.isForage(), obj.TileLocation, r);
    }```
wide flint
#

I actually only need the trigger. Don't want to modify the method itself.

royal stump
#

it seems to pass new forage through GameLocation.OnHarvestedForage(Farmer who, Object forage), which might be a convenient hook

reef kiln
#

@dusk mulch FYI, your secret note mod causes and error in SMAPI. Full log in in a bug report on the mod page.
[game] Failed parsing condition 'PLAYER_CURRENT_MONEY Host 50000 99999999999999999': optional index 3 (int maxAmount) has value '99999999999999999', which can't be parsed as an integer.

dusk mulch
#

Crap sorry, I will go archive the new version now and fix it in a few days as I am not going to be home

blissful panther
#

It should be a simple case of just lowering the number to something within the integer limit?

gaunt orbit
#

yes

blissful panther
#

Probably doable in a minute right now.

royal stump
#

the max arg is optional, so it can be removed entirely

gaunt orbit
#

or omitting it

uncut viper
#

removing it will automatically set it to int.MaxValue so yea just remove it

dusk mulch
#

oh alright

#

ty!

royal stump
#

(I need to clean out some of my saves, I keep loading this one for non-bush tests SDVpuffersquint)

blissful panther
#

At least you haven't gotten to the point of breaking Steam cloud saves because you have so many!

royal stump
#

is that a thing? I disable cloud saves for everything SDVkrobusgiggle

blissful panther
#

Yeah, I had to force it to delete everything through the website... somewhere in order to get it to do anything with Stardew's saves.

dusk mulch
#

ok should be fixed

#

i should bug test my mods more 😰

#

OMG YALL I GOT MY FIRST ENDORSEMENT :DDD

light bramble
dusk mulch
#

@patent helm I saw your custom NPC mod and I was wondering if I could use it as a foundation to make my own custom npc?

#

(with credit ofc)

cyan marsh
#

could work for mining iridum and slappin' monsters

brittle ledge
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:

fathom rapids
#

can someone link me to a character modding reference? i want to do surgery on a bunch of custom NPCs i have installed to be hidden until met and idk how to do that

#

ooooooo

#

ok this is amazing someone posted it literally while i was typing

dusk mulch
#

nevermind-

celest salmon
#

What is the ideal size for a recipe mod?

gentle rose
#

what do you mean by size?

celest salmon
#

Not file size or anything but like scope, how many recipes it's adding, like that.

uncut viper
#

there is no ideal size.

gentle rose
#

however many you want to add ig haha

#

I wouldn't make recipes just for the sake of having more and I wouldn't leave recipes out just for the sake of having fewer

celest salmon
#

So if it added like 50 recipes (with a lot of recipes to make the recipes) it wouldn't be like oh no that's too much

uncut viper
#

if a user thinks its too much, they wont install it

gentle rose
#

I'm sure it would be for some people, but some people would be okay with it

uncut viper
#

no one is going to install a mod that says it adds 50 recipes and then complain that it adds 50 recipes

gentle rose
#

well...

celest salmon
#

When I say recipes to make the recipes I mean things like a base recipe for heavy cream, which would be used for a wide variety of other recipes

uncut viper
#

no one worth listening to*

gentle rose
#

nobody you should pay attention to, at least

uncut viper
#

it doesnt matter what you mean by recipes. the point is you make the mod you want to make, and the people who like it will install it

#

there is no ideal size. its akin to asking "how can i make a mod that everyone likes?"

gentle rose
#

there's also no avoiding stupid complaints in some cases Shrug_3

celest salmon
#

Okay, thank you, everyone. I'm feeling a lot better because what I initially envisioned as a basic homesteader recipe mod is getting bigger in scope & I'm only on my second upcoming update lol (which is like 10 times the first). I'm worried all of a sudden lol that the "you gotta make this recipe to make this recipe" thing would be too much for a lot of people. But the people like me who like things like that would probably like the mod, too, which is what I'm getting. And the people who don't, just won't bother, which is okay, too.

#

Also it's my first mod ever, for any game lol, so a lot of uncertainty

verbal junco
#

If I recall correctly, it is something base game does already with a few ingredients like fried eggs(?), though I don't interact with the cooking too much >.<
It sounds like a fun idea though! I imagine heavy cream recipes could create an argument to not process all of your milk into cheese, which could be neat!

pulsar oak
#

Is there a mod to change mayors?

drowsy pewter
jovial void
#

question what's up with all the boncher mods rn? i find it very funny and it obviously comes from this server but.... why?

uncut viper
uncut viper
jovial void
#

i see thank you

uncut viper
# pulsar oak ok, sorry

you're fine! happens all the time, this place just wont be able to give you answers bc that channel actually plays the game lol

drowsy pewter
drowsy pewter
#

There are plenty of mods like WAG and raffadax who have their own ingredient systems with sometimes more complex ingredients being used for lots of stuff, and both of those mods have tons of passionate fans

#

so yeah i dont think theres anything to worry about

rough lintel
drowsy pewter
#

I forgot what it looks like

celest salmon
#

I love WAG so much! And I got permission to use Wildflour's ingredients so there are all the addon recipe variations that it's like wait I gotta make sure my basic one works first lol

drowsy pewter
#

maybe mizu had a certain kimchi variety in mind when she made it?

rough lintel
#

i mean there is baek kimchi yes but

#

it isnt ever called baek kimchi

#

then again i dont think cornucopia has pepper paste/gochujang to even Make It Red so perhaps thats a mod idea for me for later

#

sorry i just like thought you knew so i asked lol

#

i forget mizu is the person behind most of those choices

drowsy pewter
#

Lol yeah she normally directs the art :P

#

Then half the time I come to her and ask "why isnt the kimchi red", but for whatever reason I thought it was normal

#

@dusky vigil do we want to change the sprite on that or are you good?

#

we have a couple more complicated kimchi varieties as cooking recipes in the upcoming mod which is exciting

cyan marsh
#

Can I get a link to "When" statements.. trying to do Seasonal conditions.. can't remember the syntax

#

nvm i found it

rough lintel
#

but ya i was just curious bc. if u google kimchi. its ALL RED lmao so i was like… howd this occur

drowsy pewter
#

sometimes it looks less red/more pinkish depending on the brand

drowsy pewter
# rough lintel yoooo neato

we also have a patch to incorporate WAG ingredients into the recipes if you want more integration between both mod sets SDVpuffersmile I'm excited about that one

dusky vigil
#

🤔 It's honestly probably just because the color strayed from the reference

#

It's supposed to be

#

This in appearance

drowsy pewter
#

definitwly looks like it got less red over time haha

dusky vigil
#

Very eventually I want to add Napa Cabbage and it would feed into the logic, but

drowsy pewter
#

oh well

south chasm
#

i really wanna start making mods but i’m completely clueless, does anyone have any advice on where to start?

verbal junco
#

I had started by using some youtube tutorials I found and the SDV wiki as a starting point, and sorta went from there.
I think there's a modding wiki that has a few tutorials there as well.

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.

uncut viper
#

youtube tutorials are almost certainly out of date now and i would avoid them

#

definitely do not look at anything that was posted before march/april 2024

south chasm
#

thank you for the advice:)

naive wyvern
#

hi gang, I wanted to try and make my own farmer sprite animations to change the drinking animation (and maybe other animations in the future)
I remember opening a github readme ages ago but I cant remember what it was 😭
does anyone know what I might be talking about 👉 👈

drowsy pewter
#

atra knows some stuff about farmer animations i think

#

(likely the answer is "dont" but you may get a link in there)

naive wyvern
#

ugsiyugsaf no I get it, I think thats the reason I exited out the first time a few months ago, I saw just how many farmer sprites there were and figured "Oh, this is a LOT of work"

dreamy pagoda
#

hi can someone help me? so pretty much i'm trying to replace the sprites with my own

#

and i want to see if the winter sprite for harvey is working

#

but when i use the commands to turn the season to winter, no ones outfits has changed

drowsy pewter
#

try sleeping a day

uncut viper
#

an NPC has to change location to recheck their appearance

teal bridge
dreamy pagoda
#

so i can't go in and out of the town?

uncut viper
#

dont know if the NPC warp commands trigger that

#

no, only when the NPC changes location

#

or has a dayupdate from sleeping

dreamy pagoda
#

oh wow okay

#

yeah luckily with harvey he leaves his store so i can wait for that

cyan marsh
#

hmm.. ```json
{
"Action": "EditData",
"Target": "Data/Locations",
"Fields": {
"Woods": {
"MusicDefault": "{{ModID}}_secretWoodNormal"
}
},
"When": {
"Season": "Spring, Summer, Fall"
}
},

naive wyvern
dreamy pagoda
#

Ooo this is really handy, thank you

#

Omg thank you it worked

#

He’s in his winter outfit when he went outside

drowsy pewter
#

Yay!

naive wyvern
#

yknow 6480 id tag atra but im also shy to tag them uidsghfiugsf kamo_laugh

#

ive been digging but this 🤏 close to just straight up asking 😭

cyan marsh
#

solved it

#

I need to make a When Condition that patches when you're in the Skull Cavern (UndergroundMine 121+)

#

any Ideas?

teal bridge
#

I'm pretty sure that LOCATION_IS_SKULL_CAVE actually does what you want, despite the misleading name.

#

Its implementation checks for mine level >= 121 and excludes the quarry mine level.

gentle rose
#

if you're using locations in the patch when conditions you need to make sure to set the update rate to on location change btw afaik

#

idk about for gsqs though

cyan marsh
#
        {
            "Action": "EditData",
            "Target": "Data/Locations",
            "Fields": {
                "SkullCave": {
                    "MusicDefault": "{{ModID}}_SkullCavern"
                }
            }
        }
``` I didn't have a when on it at first.. but it seems like I do need it
teal bridge
#

The game is a little weird about it - the location named "SkullCave" is actually just the entrance. Actual floors are, as you pointed out yourself, UndergroundMine levels 121 and up.

#

If you're trying to patch the skull cavern, and not the "cave", then you're patching the music for all mines (or all locations period) and just making it conditional on LOCATION_IS_SKULL_CAVE.

cyan marsh
#

I know that from my CM Mod

#

but I used LUA to fix that

#

UndergroundMine doesn't have a music ID either.. it's coded in

#

so I would need a way to patch LavaMine multiple times

rigid oriole
#

adding two seemingly benign lines to my transpiler that was going remarkably well just to get Common Language Runtime detected an invalid program .... Harmony always ready to keep my ego in check 😭

rough lintel
#

@pastel aurora hello doctor professor platinumcats, may i dm you about a permissions question?? :D

cyan marsh
#

ugh... this last hurdle is tough to figure out

light bramble
#

Question, the Modding Maps page in the wiki has this, which is new to me, but if I made a map area that was buildable that was seperate from the farm, how exactly would building there through robin work? Like would you be able to choose which map to build on?

rigid oriole
#

ok common language runtime was right to be mad at me bc why did I put a label there

#

If i ever have to maintain this transpiler I think I would die

ivory plume
# cyan marsh so I would need a way to patch `LavaMine` multiple times

The mine music is hardcoded, as you noticed. So it's a bit tricky to edit from a content pack. In theory you could use When conditions to patch Data/AudioChanges to redefine LavaMine depending on the player's current mine level, but rebuilding the audio changes on warp would be pretty inefficient due to how it works under the hood.

ivory plume
normal trout
#

THAT'S AMAZING, holy crap! ^

#

That makes my life so much easier for adding extra pastures and such 🤩

light bramble
#

Btw I was asking both for me and for frost

normal trout
#

(yes thank you 💜 )

hallow prism
#

i'm grateful vanilla included that, the support of building in different location would have been limited without it, but i don't take it for granted that it was added for mods only since vanilla doesn't use it (so far)

mighty quest
#

inb4 for patch 1.7 -> build stuff in Ginger Island

cyan marsh
#

I'll just shuffle in the Music to Lava Mine

mental mauve
#

in content patcher, what does "LogName" do ?

naive wyvern
#

it basically tracks what that specific block of code is for you, very useful when you're trying to debug many lines of code

cyan marsh
#

it's not required

mental mauve
#

thanks

naive wyvern
#

May not be required but useful to have if you have a big content.json or multiple data files

cyan marsh
#

yep... helps when you a lot.. not required... but helpful

#

can someone remind me how to set a Change on location?

rigid musk
#

I also find it helpful for if I need to do multiple different schedules and the like - sure I can see the when conditions and what not but its way easier to see the log name on the top and be like 'ah yes this is for this thing labeled directly as for this thing'

#

I love labels...

cyan marsh
#

nvm i found it

uncut viper
naive wyvern
#

thank u aaa
Yes, I had questions, i vaguely remember seeing a sort of framework? or maybe it was a guide, for adding custom farmer sprite animations

#

But I cant for the life of me remember what it was that I read 😭

#

and Ive been digging, and cant find the specific page i saw months ago mischurable
So now I suppose Im asking for some direction

drowsy pewter
#

hi atra

naive wyvern
#

hiii atra

calm nebula
#

Item Extensions has it

naive wyvern
#

omg!!

#

its this one!

drowsy pewter
#

Farmer extensions

naive wyvern
#

thank you Atra 😭

#

i'll look at farmer extensions too thank u sm

drowsy pewter
#

(that was a joke)

brave fable
finite sequoia
#

No, nothing! Sorry for taking so long to get back

#

I'll just add them conditionally if they're installed

#

(And just want to bump this a final time, in case anyone else is interested!)

drowsy pewter
brave fable
lusty elm
#

Done with the quick patches for most of my mods, the 5 or 6 left will require some level of map adjustments and edits to update

#

then i can challenge finishing my... 4 WIP Mods

next quarry
uncut viper
#

(also Miihau for future reference you usually dont want to be using the object constructor directly)

finite sequoia
mighty quest
#

pretty sure its in GameLocation

cyan marsh
#

i forget how to showcase here

brittle pasture
#

right click on desktop/long tap on mobile, apps > publish

cyan marsh
#

rightclick on what

brittle pasture
#

on your post 😅

rough lintel
cyan marsh
#

i see not that choice

#

you forgot to mention apps

drowsy pewter
brittle pasture
#

... I did put apps SDVpetcatsad

rough lintel
#

just tell me there's no chance and i'll go back to my ca- SEE

#

thank you.

#

congratulations to the happy couple. (i am sobbing)

rigid oriole
cyan marsh
#

i swear I'm not blind.. just derpy

rough lintel
lusty elm
#

we all make mistakes, or are blind at times :p

rigid oriole
#

because it should play the -2 heart event if you have -2 or -4 or -7 hearts and haven't seen it

rough lintel
#

OH

lucid iron
#

nemesis

rough lintel
#

you mean LITERAL negative hearts

rigid oriole
#

oh ya

rough lintel
#

as in negative relationship like the sims

#

ok i thought u just meant minus friendship KEKW nvm

cyan marsh
#

I feel like i am getting dumber the more I work at that gas station xD All I do is watch Anime and sit around

#

such a great job for lazy me ❤️

brittle pasture
#

finally, fist fight heart event incoming

rigid oriole
latent mauve
#

Oh, Miss Coriel, somebody posted on my Pelican Valley Loft NPC Apartments mod recently asking about adding the apartment rooms to your NPC Builder (I'm guessing as a home?). I told them it was unlikely to be added to the old builder, but just figured I'd let you know there is apparently interest...?

rough lintel
#

can it be a love hate relationship

#

how dynamic are we talking

#

straight up hatred or are we Nuanced

rigid oriole
#

i mean penny isn't going to call you names, she's just going to be sad you're mean to her. but like other NPCs might have actual beef

cyan marsh
rigid oriole
#

it's a binary choice of friends/marriage route or enemies route tho

rough lintel
#

penny: you.... bitch
everybody: NO....

#

ahhh i see, i see

lucid iron
#

is there any mod that like

brittle pasture