hellooo, first time chatting here cause i just got back into stardew modding after years :'D but would anyone be down to test an update i made to this mod? https://www.nexusmods.com/stardewvalley/mods/15846
#making-mods-general
1 messages · Page 519 of 1
"Condition": "LOCATION_NAME Here Lumisteria.MtVapius_Faycombe, ANY \"!PLAYER_VISITED_LOCATION Current Lumisteria.MtVapius_FaycombeMeadow\" \"!PLAYER_VISITED_LOCATION Current Lumisteria.MtVapius_FaycombeOrchard\", !PLAYER_HAS_CONVERSATION_TOPIC Current firstVisit_Lumisteria.MtVapius_Faycombe",
In theory, this should trigger when in faycombe, if player didn't visit at least one of the location listed, and if they visited faycombe at least 5 days ago?
that logic seems correct, though I think you can do the second condition without the "any":
!PLAYER_VISITED_LOCATION Current Lumisteria.MtVapius_FaycombeMeadow Lumisteria.MtVapius_FaycombeOrchard
the wiki says it checks whether at least one of the listed locations has been visited, so ! means none of them have been visited
yeah but if player visited one and not the other?
PLAYER_VISITED_LOCATION Current Lumisteria.MtVapius_FaycombeMeadow Lumisteria.MtVapius_FaycombeOrchard
would be true if they visited 1 or visited both
(you can also ask in #modded-stardew ! they definitely have more actual players than this channel)
...oh, sorry, I was misreading your goal 
it is ok, stuff isn't obvious 😄 especially with negation of conditions
yeah, I get lost with logic gate stuff
the ANY !1 !2 version will be false if they visited both
my version would be false if they visited 1 or more
jksdhgkjsdg i understand completely,, ty!!
thanks!
just checking, is this the correct format?
in logic gates, !1 or !2 is identical to !(1 and 2) though I cant remember if you can even do that in gsq
Yeah looks good, format-wise.
cool testing it now!
(I didn't check if there's any missing commas or such, though. You just need to start the game and find out.)
yeah, I don't think vanilla has an option to negate multiple queries, at least directly
my confusion there was about what Lumina wanted the results to be, at any rate
the goal is NAND and I parsed it as NOR? something like that
its saying it can't find the manifest.json. ive checked to convert the file from a .txt to a .json, am i compressing the folder incorrectly?
i made a NAND gsq if u want it 
the any !1 !2 is simple enough for what she's doing here, but good to know
ah but i lied anyways i only made AND that u can ! on 
probably the same effect
I hurt my brain with this stuff a little while ago, trying to parse what "!SIZE" means with my weird FTM tile queries
lol wait! the issue was that i NAMED them with .json in the names lol
(a tile is valid if it doesn't return true for an X by Y area around it) (no one wants this, but it's there)
honestly i feel like peliQ is in a weird place as far as my framework mods go
i kind of want to just find some other mod to stick these things in 
nand?
NOT AND
no need to shout /j
..my brain is loading one sec
oh right, I was just thinking you meant MMAP 
oh also Esca, while you're here, tysm for your repeated help with my code stuffs 
nand is "true if at least 1 of the sub-things is false"
so like, NAND you went to Place A, you went to Place B is false if you've been to both of them
welcome 
GOTCHAAAA
Converting txt to json should be as simple as changing the extension. Can you check to make really sure what you have isn't manifest.json.txt instead (with the txt part hidden by the system)
Oh wait I missed your status update.😆
I’m modding Stardew in steam deck for the first time, I’m not sure what the issue is but I think that since I’m using a windows version so that I can play with other windows users do I need to install windows Smapi? And how would I go about that?? 😅
smapi is cross platform since it's running on .NET which is cross platform
are you making a mod though? or just hoping to get help on installation
Just need help on installation
!mh
For help with modding issues, please ask in #1272025932932055121! When asking for assistance there, sharing an error log will help others identify your issue (see https://smapi.io/log for instructions).
To use this command, type !mh.
In general though, you'll want to download smapi, run "install on linux" (for steam deck), and then run smapi from your game folder
Then make sure everyone has the same exact modlist and you should be okay
hm how can i do a release in github actions...
I think that's the upload-release-artifacts part in Pathos's guide?
https://github.com/Pathoschild/SMAPI-ModBuildWorkflow?tab=readme-ov-file#actions
(that's all I've got though, haven't tried it yet
)
that thingy puts it just on the workflow tho
and also it expired 
oh don't worry my confusion is entirely on the C# side
Ooh okokok phew
originally i thought phone always puts a dummy speaker NPC
i did check today and looks like it doesn't do that if you have neither FromNPC nor FromPortrait
I see
while i fixed it for my thingy it may be good to put a shadowy figure for FromPortrait to not explode log viewer
though it is really more of an edge case C# mods should handle
Ill put it on my to-do list, could be a useful portrait have either way!
helloooo is there a way to make dwarf's sprites normal-sized?
thats if you wanna make it bigger than 16x32 though
if you're extending dwarf within the normal bounds you can jsut do it
size
AAAA tysm!!
hm, not sure if there might be hardcoded things attached to it though
Chu, does this mean that the log viewer would also cry foul with vanilla? Because there's quite a number of vanilla phone calls with no portrait?
another person also embiggened the dwarf some time ago
tl;dr you're fine, but you'll need to load new sprites, and RIP compat
obviously not actually huge blockers
Nand jumpscare
looks like dwarf has exactly one hardcoded height thing left in 1.6.15, fwiw?
specifically in the event method* addActor
int height = ((name.Contains("Dwarf") || name.Equals("Krobus")) ? 96 : 128);
(contains dwarf, too, not just the specific NPC
)
Never change
i think vanilla shows the answer machine right, no idea tbh
@verbal narwhal hello here's the proposed API for HMK to hand over control of some stuff to pregnancy odds
https://github.com/Mushymato/HaveMoreKids/blob/main/HaveMoreKids/IHaveMoreKidsAPI.cs
with this setup, u would basically not do certain patches on Utility.pickPersonalFarmEvent and QuestionEvent and instead register callbacks with HMK
this is just cus i am patch all that anyways easier if we dont collide
Hi @rigid musk ! I want to ask things regarding Friendable Mr. Qi permissions. Are you okay if I DM'ed you?
(i have no clue what this means- OH THE SEWER EVENT- would changing the height value mess that up?)
Always of course :D
I was confused as to why I got a ping here lol but thats no problem
(not that i mind pings, i dont)
(edited because addActor is event code, not a specific command)
basic NPCs in events/festivals don't seem to look at the character data
they just use the rule "everyone is 128 pixels tall, except Krobus and anyone with Dwarf in their ID is 96 tall" (case-sensitive)
which is equivalent to 32 vs 24, since those numbers are scaled up by 4
wait kroby is short too- 
it'd probably just ignore any changes you made to have the dwarf be taller elsewhere
So if you have a teensy custom npc.....
mechanically I don't think it'd break events or anything
got it, so I'll just make the sprites at a normal scale and then switch it back to that godawful 16x24 grid when I'm done!
Man i wish there was like a portal community thats as helpful about mod stuff as you guys
You guys rock
oh yeah ppl here are awesome!!
I have a stupid ambitious mechanic i want to mod into portal as my hs graduation project. There WILL be nonsense
System.Reflection.TargetParameterCountException: Parameter count mismatch.
reflection.GetMethod(carpenter, "resetBounds").Invoke(carpenter, null);
This is the private method im calling
private void resetBounds()
Im confused cuz the method doesnt have any params, no other overloads aswell, idk
couldn't you simply use Invoke()?
What emotion is the 4th portrait going for? D: (It's a copy/paste of the 1st, but like, when/what emotion is it used for in-game?)
technically it's not a copy paste of the first (yes there is an actual difference) but. it's unique portrait which means it can literally be anything
literally pixels worth
i dont know where the image is but
XD i know that much
sebastian only uses that portrait a grand total of 3 times in his regular dialogue too
Well it's good to know it's not a super important one then
"dumped_Guys": "I don't want to see you for a while.$u",
"Fri_bad": "Oh yea? Hmm... Not really my thing, but everyone's different I guess.$u",
"winter_Sun": "I built a snowgoon but Demetrius made me get rid of it.#$e#What's his problem?$u",
So it's basically portrait one but a touch of annoyance/anger? XD
there might be more in events and stuff but i cant be bothered to comb through every event file lol
honestly idk
Thank you. This was very helpful :3
since his expression doesn't change much XD
every portrait mod does something different
I haven't combed through a ton of them, but I feel most just copy 1 to 4
maybe i just happen to be looking at the special 3 (3 out of the portraits ive used) that do XD
Do you remember any of their names? I have nexus open, so i can search myself
*mod names
me squinting trying to find the pixels
nyapu, gigi and woomewoong (author names)
ty I'll go take a look
What is the reflection var here?
But why does .Invoke(carpenter, null) throws an error? It should work right? Can you guys enlighten me
presumably Helper.Reflection
If it's the smapi helper you would just use Invoke bc it has the instance baked in
it shouldn't work, since null is an unneeded extra param, and by providing obj in the Getmethod you've already provided this
not the best explanation but hopefully it makes sense
Though it would be faster to use normal reflection to create a reusable delegate
as someone who has been working over a week on pixel art for my custom NPC, it literally takes one pixel to change the entire portrait xD
i never use the reflection helper cus it's not static 
usually i just get a MethodInfo via normal reflection or harmony accesstools
It just seems really wasteful
or dynamic method if im feeling fancy
Delegates are the way for sure, regardless of how you make them
Could I get a mod added to mod showcase please
Thank you. Have a good night
What I would suggest doing is this
private static readonly Action<CarpenterMenu> resetBounds = typeof(CarpenterMenu).GetMethod("resetBounds", BindingFlags.Instance | BindingFlags.Private | BindingFlags.Public).CreateDelegate<Action<CarpenterMenu>>();
``` and then you can call it like ```cs
resetBounds(carpenter);
Question! If I want a character to say a certain dialogue in a particular setting when another NPC is there, would I use Trigger Actions or Edit Dialogue? (I want my NPC to point out someone in the saloon when saying a particular string of text!
do you control this other NPC?
She is Custom yes!
Well my custom NPC wants to talk about Shane in the corner of the saloon
oh then u don't really control him 
not unless I mod him muahahha
you'd need BETAS i think, for the npc location gsq
i think the best you can really do is a schedule string. npc dialogue doesn't really update in real time outside of that
YES! I do have that I'm just confused where to put it, in dialgue or data or anything
and trigger or edit dialogue lol
i'd to a location changed trigger action that
- check new location is saloon
- check whether <your custom npc> is there
- check whether shane is there
then if conditions match - set new dialogue on your custom npc https://stardew.button.gay/docs/betas/tractions#SetNewDialogue
I wasn't sure to use this now i'm truly feeling like a clown with a computer
https://stardew.button.gay/docs/betas/tkstrings
that's something unrelated to what i presented
trigger actions r these things and they are actually a vanilla system, BETAS (and many other frameworky mods) add new triggers and actions to use in there
OHHHHH Okay I think i got it I may be back xD Thank you!!!
doesnt the SMAPI reflection helper cache things anyway?
the betas tokenized strings are useful for the actual gsq/action stuff
Also! What's the propper format for randomizing tokens for i18n? I keep seeing so many different ways and Smapi keeps telling me it's wrong DX
"Mon": "{{Random: {{i18n:Rosalie.Mon1}} | {{i18n:Rosalie.Mon2}} }}",
but that's like pt2 from making ur thing working
Random takes a comma separated list of args, dunno where you got |
you can change the separator so couldve been seen in another mod. or confused with the vanilla dialogue || thing
but by default it is commas
which is bad if your i18n values have commas
got it! Thank you!!! ❤️ ❤️ ❤️
so more for events?
uh i dont understand the question
for trigger actions, you use GSQs in Condition and actions in Action/Actions
ooohhh okay! So sorry, I'm new to modding I'm still learning and I really appreciate your help!
I think it's cached per-instance, but I could be wrong
im not sure why thatd matter, it'd still just be them reusing their own cache every time anyway
it would still be faster ofc to create the delegate but its not like its gotta find the type and method every single time the helper is used
just gotta look in the cache
No I mean I thought it cached it based on the instance passed to it
So each menu would have a separate value
it creates a ReflectedMethod instance with both the type and the instance passed to it, and uses the cached method but with that specific instance given to the Invoke
but the cache is just per-type not per-instance
Ah, interesting
I still prefer using static fields myself but it's good to know that
Can I ask for help?
help with what?
You can ask anything without asking for permission yes
As long as it's link to mod making
@umbral edge This is either going to decrease or increase the errors dramatically, but at least I know what's happening for sure (I tried to make things less static for split-screen compatibility, turns out, I overdid it. we keep getting NREs because most fields on the farmhand's screen arent initialized or set when they join which makes the mod explode)
“this is either going to decrease or increase the errors dramatically” is my favourite type of update
(you’re using perscreens, right?)
I have perscreens, I just dont know what needs it or static
It feels like its impossible to know 😅
by static you don’t mean the “instanced statics” thing, right? just regular static
nice, just wanted to make sure (instanced statics for mods aren’t supported any more afaik)
I just don't support splitscreen and it makes my life easier
i think they techniclaly are atm but wont be in 1.6.16/7
static things would be things whose value should be shared across every farmhand
static PerScreen notwithstanding
tbh last time I did split screen support I just made nothing static, put everything in one base class and perscreened the instance of that class 
Does that include Helper/Monitor/Manifest and Configs?
yeah you only get one of those anyway
thats how ContentPatcher does it with a PerScreen<ScreenManager> that everything derives from
Farmer 2 doesnt need its own monitoring and logging
that belongs to the Game Window, practically
also how i did it with God Rays too
it makes sense tbh, it feels like a non terrible design choice (since when do I make those though)
the only thing i dont like about how CP does it (and how i do it with god rays bc i copied CP) is having a bunch of handlers on Entry that then just calls a different, for realsies handler in each perscreen instance feels ugly
but it didnt work right when i just had each perscreen register its own handler so shrugs
I just don’t register handlers that need to be per screen, simple 😌
kinda need to if you're drawing things
iirc the only thing that gave me trouble was when I had to perscreen some stuff related to a harmony patch
i hope you dont mean each screen had its own harmony patch
I have a few fields around that should only be set per-player (like talent points) and a lot of code that should be per-player
something about a single perscreen bool feels wrong but it was the solution I ended up with
i mean thats the most base case of a per screen isnt it
"this should affect this screen and not this other screen"
So I just have a few perscreens of these handlers
it is but it feels strange to do in practice
looking at CP again I actually don't fully know how the splitscreen instances of ScreenManager get instantiated
pathos magic
a PerScreen value gets instantiated automatically as needed
just calling the getter for Value creates it
PerScreen stuff i feel is probably a lot easier to manage if your mod is very OOP-designed
Oh the PerScreen constructor took a function not the value
Pathos code is very enterprise OOP, so makes sense PerScreen works well
splitscreen support is so simple you may as well do it, i usually just use a single PerScreen<State> that contains all my individual perscreen variables
Hides away my single non-api interface
this can be annoying if you've not at all been designing your mod with the idea that they might all need to be encapsulated into a single State from the getgo
i would never
I don't actually know which of my mods have splitscreen problems or not.
I know speedy solution has problems that PerScreen wouldn't solve
the inheritance in this does make me laugh sometimes. i like seeing bug.hasbeenkissedtoday and furniture.edibility and cloud.jumpoffset
emilysparrot.bombradius
at least farm animals are semi sane as they don't inherit from npc villagers unlike bats
bed.monstermusk(bed.owner)
I love the method names for getting evening hours in Game1
- StartingToGetDarkTime
- ModeratelyDarkTime
- TrulyDarkTime
for me no method name will ever surpass checkForTerrainFeaturesAndObjectsButDestroyNonPlayerItems
*ahem*
Utility.makeTemporarySpriteJuicier(t, l)
ItemPedestal.IsConsideredReadyMachineForComputer
/* Furniture.InitializeAtTile() */ drawHeldObjectLow.Value = Name.ContainsIgnoreCase("tea")
is this even worse than name.contains(dwarf)
is it crazy to say that i didn't know people were using software to write text code (for CP mods)
like wow i was just opening the files and going in, this is like a whole new ballpark
what do you call the thing you use to open the files and go in?
I'm guessing that'd be basic windows notepad
yeah, that's software
that's a #modded-stardew question 🙂↕️
oh right, only #images-and-memes and #making-mods-general have image perms for new users

i think it's ridgeside? https://www.nexusmods.com/stardewvalley/mods/7286
-# Wonder why not #modded-stardew
Ohhh the one with so many npc? Ok
pretty sure making-mods-general only has them enabled because there were just too many people who needed actual help making their mods and needed to send images to solve the problem
otherwise it'd be disabled too to try and cut down on spams and scams
Dude
I feel like it would be really cool if someone made a mod to add jojo stuff to Stardew Valley
this is the right place if you're the one making it ☀️
otherwise if you have specifics there's a mod ideas page to post it on hahah
I am not sure on how to mod
But I would love to learn if someone could teach me on the weekends haha
people don't often do one-on-ones here, but we'll happily throw you the getting-started guide and work through any issues you come across as you go 
there's also a number of useful tutorials on the modding wiki
!gettingstarted
If you would like a guide to setting up mods for Stardew Valley, check out the getting started guide! https://stardewvalleywiki.com/Modding:Player_Guide
To use this command, type !gettingstarted.
!startmodding
Making mods can be broadly divided into two categories:
- Content packs are formatted text files, and don't need any programming knowledge. They can add/edit NPCs, maps, new items, shops, and more. To get started, see the list of framework mods, the wiki tutorial for Content Patcher, and there might be relevant guides on the tutorial wiki.
- C# mods use programming code to change fundamental game mechanics. See getting started with C# modding.
Usually it’s easier to start with making content packs, since you don't need to learn programming.
To use this command, type !startmodding.
Is there not a nice way to make a slider config option with CP+GMCM? AllowValues doesn't accept tokens, so Range isn't an option
also where are the sprites for Junimo Kart? can't find them in cursors
oh there's a minigame folder wtf never noticed it
so apparently i messed something up in dlimes, and it figured out its just not pulling the things i made, and im confused abt it 
i fixed it not being the full sheet, but now im stuck
not sure what you're stuck on
could you show what you're referring to
yeah you can't just patch replace the whole thing
Are you doing overlay editimage
Might want to do a mask actually, and use late priority
🤔 maybe new mask overlay might be good here
should be in the latest cp docs
wheres that again,,
clutch SMAPI/CP update, it's being put to use so much since it released
It is so handy
how would i implement the overlay ? would i juust do "PatchMode": "Overlay",?
yes

hi peeps! back to attempt to make yesterday's "mod" and figuring out why SMAPI says my JSON is incorrect despite all validators saying it's okay; i'd appreciate any help:
"Format": "2.8.1",
"Changes": [
{
"Action": "EditData",
"When": {
"HasCraftingRecipe": "Tortilla"
},
"TextOperations": [
{
"Operation": "Append",
"Target": "Data/Objects",
"Fields": {
"72": {
"Description": "This text means it worked."
}
}
}
]
}
]
}```
surely this works 
The overlay will only work without the mask if your sprites have pixels in all the same places as vanilla. If not, you'll need to use the mask first to remove the vanilla sprites, then overlay yours.
@lucid iron pinging you because you were invested yesterday just in case haha
it is in the same place, but not the exact pixels
hard to tell with a formatting this random
I mean i still think u r not actually load the right json 
The validator is only capable of identifying whether your json is valid according to the json rules. It doesn't check whether it's valid for actually changing the game. You've written your Target incorrectly for the text operation.
The error u have means "content.json is no good as a json"
As I said, it has to be exactly the same pixels. Not just the same frame.
(unrelated but i just wanted to ask) 🤔 masks dont matter if i were making my own sprites, right? since it's not like im patching over anything
target shouldn't bee inside the textoperations array
what does that entail lol
Chu is wrong
no need for masks if you're using your own assets
The content.json is fine, it's the Targets being messed up is the issue
yep im figuring that out
im guessing like this?
oh but i think target being in there was in the example on the github unless i'm tripping
i'll change it
Leroy is also wrong (sorry!). Target should be inside TextOperations - you need two Target fields for TextOperations. One for the Action and then one for the TextOperation.
Example from CP docs:
{
"Action": "EditData",
"Target": "Data/NPCGiftTastes",
"TextOperations": [
{
"Operation": "Append",
"Target": ["Entries", "Universal_Love"],
"Value": "127 128",
"Delimiter": " "
}
]
}
should i just add another target that is the same before TextOperations?
As you can see, two Targets. First one is to target Data/Objects, second is to target the specific entry inside Data/Objects
gotcha. so it's not something i have to worry about for the mod im making haha
then do over lay after?
so in this case the second one is "Diamond"? or still "72"? what do i do with "Fields"? just omit the "72" and continue on with "Description"?
To change a field, use the format ["Fields", "entry key", "field key"] and replace "entry key" and "field key" with the keys you'd specify for Fields above.
Otherwise aba is right tho 
Yeah, chu's suggestion is a better one for this particular change
does Assets/springobjects.png properly mask the sprites in the vanilla asset? if so, then it is correct
is that not what i'm doing 🥶
i'm still new to all this
i dont know yet i havent tried just yet
there is a pretty clear example in the doc for how to use mask, did you check that ?
No, you're editing the Description field in Data/Objects. Chu means what if you edit the string in Strings/Objects
Yeah vanilla objects get their names from Strings/Objects
it's more a matter of "did you make it so that it properly masks the sprites?"
The vanilla description field calls the entry in strings/objects
oh i didn't know there's an additional entry, i unpacked the game yesterday but i was sure i had to use Data/Objects
Mods often dont cus i18n but that's separate problem
You are still doing a text operation tho, so the formatting has to be correct
because if you're just masking the vanilla asset with your final sprites, then overlay the same thing over, then it's not going to do anything
It'll be an entries text operation though rather than a fields one
oooo, so just overlay instead?
To change an entry, use the format ["Entries", "entry key"] and replace "entry key" with the key you'd specify for Entries above.
i was told Entries changes everything and i just want to change the description
yesterday that is
Esca provided me with an example
im so lost
If you go and open Strings/Objects, you will see that the entry is just the description
let me look
not if your sprites aren't convering the vanilla sprites: CP will only replace pixels that are not transparent in your asset, so bits of the vanilla sprites might still be visible, hence the mask
did you look at the mask documentation?
so, mask first. then overlay?
im using this https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-editimage.md
is here a mask doc on its own?
Yes, mask first using the vanilla sprites. Then overlay using your sprites.

I can show you an example if it is still not making sense for you
yes please !!!
Ok, first image is the image I used in my FromFile for the mask patch. It is literally just the vanilla springobjects.png with every sprite removed except for the ones I want to replace with my mod.
Second image is the one I use in my FromFile for the overlay patch. It is the sprites I want to put into the game to replace the vanilla ones in Maps/springobjects.
i don't understand the second Target field under TextOperations, what on earth do i put there?
(imo it's better to mask with entire squares to handle mods that do a Load on the source asset)
this is incorrect right
Patch for the first one:
{
"When": {
"CT_Replacer": true
},
"LogName": "Remove vanilla icons",
"Priority": "Late",
"Action": "EditImage",
"Target": "Maps/springobjects",
"FromFile": "assets/VanillaIconsMask.png",
"PatchMode": "Mask",
},
Patch for the second one:
{
"LogName": "Add legacy Bog icons",
"Priority": "Late",
"Action": "EditImage",
"Target": "Maps/springobjects",
"FromFile": "assets/legacy/CombinedIcons.png",
"PatchMode": "Overlay",
},
OHHHHH i think i get it? so make new png that has everything removed except for the stuff i want to replace?
Yes, it is incorrect. Your Target needs to be "Target": ["Entries", "Diamond_Description"] and then you need to use the Entries field like I said, not Fields.
I'd recommend what chu said: a proper mask is an asset the size of the spritesheet with squares over the sprites you want to replace
Good point that I hadn't thought of but also eh because if a user wants to install two mods that replace the vanilla paths they deserve the weirdness /hj
im trying i promise
Yes, though take chu's advice to make them fully filled instead
Also your indentation is really wild and it might be easier for you if you try to fix it up a bit, because it's much easier to follow when fields on the same level have the same indentation.
what do you mean entire squares?
i know, i don't know anything about indentation etiquette, i just know it needs to be done somehow
i'm not a programmer
i don't know what to put in Entries after following the advice above, is it supposed to be "Value" and then my additional text like on the github?
Like I mentioned, fields on the same level should have the same indentation. So if they are in the same set of brackets, they should be indented the same.
i feel so annoying im so sorry
Yes
mask mode is "delete every pixel that I specify in this image"; an object sprite is a square so to be safe you just delete the entire sprite
Like this. Fill the entire frame with a solid colour (doesn't matter what the colour is)
is this correct?
what text editing software are you using?
Almost! You just need a delimiter so it knows to add a space between the original text and yours.
ah, i forgot about that; i was told i could try "\n" to add a linebreak?
Notepad++ is not great for helping with formatting in my experience but you can get the json tools or json viewer plugins to enable auto formatting
Try a space first just to get it in game and then edit to add the linebreak, imo. Fewer new variables to worry about if something goes wrong.
entire frame? im sorry
The whole space that the sprite is allowed to take up
In this case, 16x16
In an NPC's world sprites, 16x32
In a portrait, 64x64. Etc
i installed the plugin
Remember when I was advising you to use the grid the other day (and then it turns out procreate sucks for that) so that you knew where the frames were rather than only having the actual pixels of vanilla to go on?
here is the result
i don't know if that's any more correct than what i did 🥶
i haven't gotten to Delimiter yet so i'll look into it now
with sprite on
It's not how I would do the brackets personally, but it's still readable and that's the point of it
Yeah I figured that was what you meant when you said it was the result of the plugin
thats one thing - imma do each one different color- is that oky?
There's another plugin - I think called json viewer - if you want to see if it does it differently. Or there might be options, I don't know
Up to you! The colours don't mean anything for a mask. Only the opacity matters.
i think i saw it in the plugin manager
let me try
oh
it looks better
yeah?
Yeah that's more usual
i think i'm finished making changes, hopefully the mod loads this time
holy shit no errors
Well, it was loading last time. It was just not running the patch. (Important distinction because "not loading" means a whole other set of issues.)
what is the difference?
Yesterday we had someone whose content.json wasn't loading at all. The error wasn't in their content.json, it was in the fact that their mod folder had a trailing space in it and on Mac that causes CP to be unable to see the files inside.
oh interesting
huzzah!!
it looks darker cause of grid lines
So no matter what changes were made to the content.json, it didn't fix.
well, the patch ran, since no errors, but i am not seeing my change in-game
could it be the Delimiter being invalid?
Could be, hence why I suggested not using that delimiter
let me try just a space to confirm linebreaks indeed do not work (chu said they might when editing Objects)
But actually, is there even a tortilla crafting recipe?
You should comment out the When field for now
...there isn't one?
there is, it's corn
oh, i once was looking at another mod and noticed that all the json was red because there was one of those "fancy" quotation marks in there.. and vscode was throwing a fit
oh right
yeah it's cooking
is this good
And is it definitely called "Tortilla"?
you can't craft tortillas in the crafting menu
Yup
There would not be separate tokens if they were the same
oh yeah
i didn't remember there were separate tokens for those and i'm seeing this now
Anyway, you should comment out the When field
it is Tortilla
So you can check that your patch applies regardless of condition
so imma save that layer as its own png, and use that for mask?
(fairly certain, i am looking at Cooking Recipes)
and only then add the when field back
Because you should try new things with as few variables as possible so troubleshooting is easier
Yup and then patch reload
what's "patch reload"?
i have been rebooting the game every time so far
to test out changes that is
It's a CP console command to reload your mod
patch reload <mod id>, where you replace <mod id> with your mod's unique id
i broke it again 😩
maybe there isn't a Tortilla cooking recipe and i'm tripping
oh hang on i just commented out the "When:", do i need to do every line separately?
Did you ensure you commented out all 3 lines of your When field?
no
i assumed it would comment out everything until the bracket
i'm stupid
this is the proper way to do it yeah?
i only did the first one initially
Yeah
Although I am sure someone is about to jump in to teach you about block comments
(Also it does exist, just as confirmation.)
Block comments are /* Like this */
And every line between the opening and closing is commented out
my text is still not being appended
im gonna remove my spring objects, then add the boxes and the remade sprites, is that good?
Good for commenting large amounts (hence the "block")
maybe it's not meant to be "Value" in there?
...you have just taught me that block comments are a thing in JSON. 
I assumed it was just single line comments!
Can you run patch summary full <modid> in the console?
It is meant to be value. You can tell because that's what is in the CP docs for Append.
When you run the patch summary it will tell you if your patch is being applied
holly shit, I wasn't there for the resolution, that's a horrible issue
seems like it hasn't "applied"?
Correct. Can you try trashing your diamonds and spawning some new ones?
I think the description should've updated on your existing ones but we will be safe
is there a command for it like "give"? i don't have any cheat mods installed atm
i'm also testing on a legitimate save
🥶
Or you don't care if it gets broken
If neither are true, do not test on real saves
What you are doing now is definitely not at risk of breaking your save.
But it's good to be in the habit of not mixing your play saves and your mod work.
debug fin "item name here" is pretty good: no need to learn the ID
i gave myself a diamond and the description remains unchanged
I just use player_add name <name> and if I got the name wrong it'll tell me what I might've meant lol
meh, as long as you don't save (sleep) when testing, any save is fine
👆 will get fucked by this
Ok next step is patch export strings/objects and see what it says in the exported file
Yeah the issue is that you have to remember not to sleep lol
I had a save called "do not sleep" and I still forgot not to sleep
it looks identical to the regular one
Hmm hmm hmm. What am I missing.
so i copied your code for mask, and its getting angry at me
just want to say i really appreciate you helping me, i'm sorry i'm messing this up lol
You appear to be missing a bunch of brackets there
not suprised 
You're not messing it up! TextOperations are fiddly. Can you copy and paste your patch in here so I can quickly pop it in my game, please?
but hey im getting somewhere 
"Format": "2.8.1",
"Changes": [
{
"Action": "EditData",
"Target": "Strings/Objects",
// "When": {
// "HasCookingRecipe": "Tortilla"
// },
"TextOperations": [
{
"Operation": "Append",
"Target": [
"Entries",
"Diamond_Description"
],
"Entries": {
"Value": "This text means it worked.",
"Delimiter": " "
}
}
]
}
]
}```
(i don't know how to specifically do the JSON block)
it was in front of our eyes the whole time 😭
fixed was mising a squiggly
oh wait this removed my commented out "When:" lol
the auto-formatter plugin
Speaking of spaces, I recently figured out a... problem I've had for OVER A YEAR just today. 
it decided my comment wasn't important enough to keep 🥶 ✌️
Oh my, that's not good
i'll edit it back
linking this, just to be sure https://stardew.button.gay/tutorials/json
yepyep ! was missing a silly squggly
!embedcode
You can embed code in Discord using a series of three ` :
```
Your code can go here
Even if not a haiku
Just an example
```
For syntax highlighting, add the language code on the same line as the first
``` (with no space, like ```json).
The usual codes are cs (C#) and json.
To use this command, type !embedcode.
{
"Format": "2.8.1",
"Changes": [
{
"Action": "EditData",
"Target": "Strings/Objects",
// "When": {
// "HasCookingRecipe": "Tortilla"
// },
"TextOperations": [
{
"Operation": "Append",
"Target": [
"Entries",
"Diamond_Description"
],
"Entries": {
"Value": "This text means it worked.",
"Delimiter": " "
}
}
]
}
]
}```
oo this looks prettier
Ok what the heck this isn't changing even without TextOperations
ideally, you should try to get used to test stuff often, especially since the patch reload command exists
maybe it's simply not possible to edit strings directly? should i revert to the Data/Objects method?
also I'm pretty sure that "When" block is form Aba's code and doesn't need to be here
It definitely is, I have published mods that edit strings
surely it's not the "outdated" format that is messing it up?
Correct, that should not be there spirit! You don't even have a config token called "CT_Replacer"!
Nope (at klip)
no but why are you not using the latest format?
we have not updated yet
not updated what?
conter patcher
CP? you should
CP, presumably
yeah, i will when we play next
i exclusively play in MP
i just figured if i input a version i don't have in there it'd be extra errors
Yeah it won't work
Ok, editing Strings/Furniture in published mod. Works beautifully.
Editing strings for this. Failure.
my textures dont even show
alr ill get rid of that - do i have to reload game?
No you can patch reload
It should not have debug in front
just remove the debug :)
And you need your mod id
heh jinx LOL
Ok this doesn't appear to be working for objects I do not know why
So we return to editing Data/Objects. I am so sorry klip.
(Let's blame chu)
No wait
I was looking at the wrong bug thing
It works for bug steak
nope- still not there
did get this tho
Well that is kind of telling you the problem, isn't it
it really reads like CP is calling your sprites "dumb" lmao
i did not see the version i swore i had that
do i just change the nubmer?
it's okay lol you're doing your best
do i just change the Target and that's it?
from 2.8.0 to 2.9.0?
yeag
What in the heck
i imagine "Diamond_Description" needs to be "Diamond" now
Why isn't diamond working????
No ignore what I said about going back to Data/Objects
oh well i don't need it for diamond i was just testing with diamond
We are in this now
there's a "DiamondStone_Description" but idk if it's the same
No, that's the node
Ok please use the actual thing you need this for!
And maybe try testing on something that doesn't need to be donated to the museum in future lol
i forgot the tiger sliem exists for the item-
i just wanted a distinct item to try on
doesn't this not working on diamond highlight a different issue/bug lol
is slime crate supposed to be like that
It might be some specific hardcoding to diamond
What is a slime crate?
alright i'll do corn then
you'll need to learn to read the log warnings/errors, make changes, and test by yourself spirit, or else you won't get better (also it's faster than waiting for people to validate every single thing you change). Trust what you make, and the tools that you use.
looks like you masked it
that's a modded item isn't it?
that happened with me with the i18n folder back then too
i didnt see that part, the 2 lines blurred together - and this is helping me learn ! sorry if it seems annoying or anything 
maybE? ill check
That was what made me find it for this one!
nope
ill check what it is
Huh no it's in my game too but is invisible
@vernal crest it's not working for corn either 🏚️
and this one i actually need lol
you're not annoying, don't worry, I'm just worried that you don't trust yourself since you ask here every time you change something
oh so thats normal probably
My response is not to show it's working, by the way.
what am i doing wrong
Whatever it is, I am also doing it
its kinda how i learn- is how i grew up doing
yeah but this time it worked for you
No it didn't
but im getting better with it!!
and thats what matters me thinks
I have had the format for TextOperations wrong this whole time
(That still doesn't explain the diamond)
But still
well diamond isn't in any cooking recipes that i know of so it doesn't matter to me personally haha
There is no "Entries" field
i just don't want this to happen with items i actually need
Value and Delimiter are meant to be on the same level as Operation and Target
I am deeply sorry for my missing this all this time
uhh like this?
No, you have accidentally broken your Target field
is that to me?
Like this
okay time to do the tiger slime egg thing then break to get food and class
Yes, looks like the Hedge is just an invisible vanilla thing. Presumably because it's not implemented.
ty aba
Waaaah it does work on diamonds too
I just managed to somehow also get that wrong when I was testing replacing the whole field
I should ban myself from helping people after 2am
At least I am being a good example to all the newbies by showing that you can know what you're doing and still make silly mistakes haha
i cannot fix my formatting i'm tweaking
i did what you showed above and the formatting is broken
Aba go to bed 
bro you're a computer just find the missing bracket yourself 😭
the only problem i see with it is that it only edits the english description, altho feel free to correct me
i can worry about that when i actually accomplish what i want lol
if u play on another language it wouldn't appear
i am literally not even doing that, still at the stage where i'm trying to edit the description of an item to say what i want
cant find tiger slime egg in spring objects surely its not in cursors [im going to check btw]
Naw cp auto edit all languages default
oh nice nvm then
oh its not there ok nvm
For assets that r like zh-CN suffix
You do need to handle _international yourself tho
gesundheit
You can use its Data/Objects info to find its sprite index
..oh in finder im going insane
lookup anything might tell you sprite index
you can open the data file in your folder, not the game
but aba meant in the data files
tiger slime egg is near the bottom of the sheet with the other 1.5 items i think
You should be able to hover over each bracket to see its pair and if one pairs at the wrong level it means you're missing one
It is sprite index 857
i found the missing one
Forsy is correct about it being in the bottom right
AHA ty guys
That all would have been SO MUCH FASTER if I had noticed I had the syntax wrong but we got there in the end
At least you got to experience some troubleshooting steps lol
i will be accepting my Mod Legend role now, thank you
i'm just kidding
if i have the conditional in there now and it still shows i think it means the conditional also works
How am I even going to be able to sleep after this rollercoaster
lol
only 6 hours
(half of them spent finding missing brackets)
You may want to try reading the json tutorial Leroy linked before
Because once you understand how the brackets work, you don't spend time guessing where they should be anymore
As long as you know the tortilla recipe, yes
Best way to test is to start a new save and spawn yourself some corn
linebreaks work 🎉
"\n" is indeed valid
perfect, i was worried i'd have to improvise
is it possible to insert item images into these?
or any other symbols/formatting?
no freeform images though, except maybe go consult with the 12 mods that have transpilers on drawtooltip
i know only about half of these words
you're saying i can use some symbols that will translate to icons?
like if i input a "+" it will be an icon in-game?
yeah, the game supports some, although if memory serves it's not 100% consistent about applying them
Only bc the game default font is funny
where could i find a list of these?
It doesn't work in non english
if you want more symbols (emoji, etc.) you can use my mod which chu mentioned before https://www.nexusmods.com/stardewvalley/mods/38900
it's not completely drop-in, though, you gotta bring the glyphs yourself
that would make the mod depend on it no?
yeah it's a framework
i'll just use these ig 🥶
who knows if this is even correct
since search results are bloated with AI now and it normally makes shit up
I don't think this has anything to with sdv
that does look more or less right about the symbols but the instructions are bizarre so i'd believe genai was involved
Personally I'd say to not worry about it right now
Cus you just want a (has recipe) tag right
i think this is good enough formatting for now
i doubt color/bold text is possible
i want it to be slightly more nuanced and i believe what i want is possible in CP
- list all possible recipes this is in (checks against vanilla list)
- if recipe discovered -> say what recipe (like the above)
- if recipe not discovered -> say "...and in other recipes you don't know" (smth like that)
As long as u r willing to hardcode the list of recipes it'll be fine
i'm just not seeing anything to the likes of Else/If in the token list
but i haven't looked long
if/else is just one block if condition true, one block if condition false
yeah but wouldn't i need this for when player does/does not have a recipe discovered
or wait
by default i have certain text, but if i have a When, other text
i think i understand what you mean?
there is a token for "knows recipe"
yeah
I’ll give it a try soon, very random but would it be possible to integrate the joja machine mod into this? When using a joja fish smoker it only smokes once unlike the vanilla furnace
klip i hate to say it but this mod would be much easier to make in C#
i don't know any C# 🥶 or any coding at all
dynamically filling out what recipes an item is used in is exactly where using the SMAPI content api shines and using a declarative data format (CP) struggles
It's probably out of the mod's scope, doesn't make sense on its own/with the rest of the mod
see i don't even know what this means 🥀 just shows how little i know
but i would still like to make this possible
i would be content with the result so long as it doesn't fuck up a user's game
as in, makes descriptions lag the fuck out of it or smth
i'm hoping this doesn't happen since it's just text
but i'm truly no modder
Judging from the modpage, it might be intentional?
can i just keep adding "When"s for more conditions?
how would i fulfill more than one
read the token doc
the blue text is a link to the full token doc page lmao
the link I gave points directly to how do AND and OR conditions
np!
ts is why i do manual labor 🕊️
what you linked is exactly what i was looking for lol
Without C#, it sounds like it's going to be hundreds of json lines and maybe files, it's not impossible it's just going to take a lot of time and effort
Not to mention custom recipes/ingredients
i don't intend to do custom recipes/ingredients
this is for vanilla (as in, no extra content)
i'm known to hyperfixate on stuff i want so i think i can do it
my last project i went through 6.7k discord messages manually and put specific messages in a google doc
it took 2 months
I kinda want to make that in C# now because the thought of something like this made statically irks me
i mean, i wanted to commission someone and nobody was willing to do it lol
it's fine, maybe i'll learn some valuable stuff
the thought of making my first SDV mod excites me, it's a feature i wanted since i started playing and never found
If I don't have the energy to sprite edit tomorrow, I'll give it a shot in C#
bro stealing my idea 🥀
Did you accidentally nerdsnipe a free commission? 
nah i was actually excited to just make something of my own but if it can be made by someone competent that's probably better
there are a couple things that i wanted to have in there that are outright impossible with my method
Welcome to the drawHoverText transpiler club /lh
I always thought it'd be a good addition to informant
getting multiple conditionals to work and lowkey wishing i could bold text for better readability lol
actually if i change the phrasing a bit maybe it'll look less cluttered
"Used in Pizza." is just one line i imagine
yeah
How can i check if a field was toggled by a specific method?
bool whateverField = false;
void MethodA()
{
whateverField = true;
}
void MethodB()
{
whateverField = true;
}
void MethodC()
{
whateverField = true;
}
Lets say i want to check/monitor if the field is toggled by MethodA?
if it's really critical to know which method did it, i'm not sure you have any other recourse but to track it in a different field somewhere else. if you control the methods you would edit their code directly, or if you don't you'd harmony postfix them (i imagine).
are these vanilla SDV methods? do you really need to know this? (perhaps with more context some other solution is available)
I want to remove my harmony patches in my mod, ive successfully removed the other patches but theres still this patch, im finding every possible way to completely remove this and use SMAPI events instead, but Warped event just cause more bugs, so im wondering if what if i just catch/minitor these methods toggling this boolean fields using UpdateTicked
Heres the patch btw
https://github.com/kazutopi1/ShopAnywhereAndroid/blob/Experimental/ShopAnywhereAndroid/HarmonyPatches.cs
not an answer to your question, but i find the want to remove Harmony patches baffling
especially if the alternative is an UpdateTicked event
@tiny zealot Heyyy mind if I have a word about Compatibility Stuff? Apparently Pelican Town Municipal erases Lacey's stall in the fair, and the compatibility would be super easy to fix on your end and more complicated on mine.
"Priority": "Late + 10"
it just needs something like this on the Y1 fair stall
i can also move the stall if needed, but it's difficult to find spots so i'd prefer not to do that
Oh you don't have to move it, it fits fine where it is
oh are you just overwriting the terrain?
Patch layering is just eating it and it's easier to load later than it is to load earlier, but only earlier than one thing
Yeah, making sure your overlay goes after my replacement is enough to make it work
oh okay yeah that's simple enough. i can do that. thanks!
(no word on when i'll actually update though. dev branch is a bit of a mess rn)
Fine with me. Just wanted to make sure I wasn't eating her stall!
vanilla map, right? (i move the stall for SVE)
Vanilla, yeah. I can check to make sure it doesn't affect SVE too though
Im pretty sure it could be done, im just not skilled enough to do it, thats why im seeking for guidance here
the other issue is (as mentioned) i don't think there's a way to tell which method toggled the boolean outside of harmony patching them to record it when it happens, so in this case it's self-defeating
Yeah SVE's is well away from my building, so just vanilla
my point is that UpdateTicked is just something that's gonna run every frame, whether it's needed or not (how often would your code run normally? once per in-game day? maybe several? compared to the sheer amount of frames in a day), so it's a performance hog
and just doing similar things the usual methods do is a recipe for incompatibility with other mods that want to do their things around the same areas of the game's code
this is something i wildly disagree on, compared to, say, Pathos, lol
Ofc im not gonna use it to fire my logic every tick, its just for state monitoring, just to catch if this fields are being set to true or false, but theres like gazillion of methods who touches this fields thats why i asked earlier if theres a way to determine which method touched this field
but yeah, this is just my opinion, i'm gonna shut up and let others help
(i am closer to shockah than pathos on this issue as well, fwiw. i frequently "complain" about smapi's warning that a mod is using harmony)
I will say if you find the StackTrace api....dont do that lol
StackTrace is not reliable if the compiler decides on inlining
that would be worse than UpdateTicked by itself, like, 1000x haha
not only unreliable, but also slow as heck
Is there an event for when you start/stop sitting? Or do we just have to poll the sitting flag?
straight back into change monitoring versus harmony patch /lh
no event afaik so you would choose one of those two approaches
or if "knowing when farmer is sitting" is a proxy for something else maybe there's another solution
There's always netfields!
oh true that might be a netfield and have a change event
(I am not at home so I dont know if netfields help here)
Tbh even if i was home I wouldn't know if netfields help here
i am in my own weeds and not consulting my decompile at this time (but i am switching over to discord periodically)
see, Storm would have had that event
Nah. I just know that events are generally better than polling. Thinking about modding TimeSpeed so it works with SitAndRest mod. 😉
Hi! I'm making a lil mod and cannot for the life of me figure something out - I'd appreciate the help of more experienced mod authors. When an NPC is gifting an item to the player through dialogue, is it possible for them to gift multiples of the item? e.g. giving a stack of 10 wood instead of a measly 1? What would the format of this look like? Thanks in advance.
how are you doing it now? addItem?
the [] syntax doesnt support it, but you can use $action with the AddItem command
[[Modding:Dialogue]] (see the $action command)
[[Modding:Trigger actions]]
ahhh, I see, thank you. I thought that might be the case.
okay, I'll look into the other options you provided. really appreciate these responses!
Is this the problem with farmer warping when exiting the animal buy/building move menu
Quick ask, is anyone aware of prominent SDV-E NPC house mods or events, festivals, etc that use any of these areas? Im scouting spots and dont want to run into issues later.
the red box isnt the location but just the general area in front of farmer
That little pond area can be a problem if someone doesn't use SVE because there's trees and a secret in there
but if I want only sve compatibility, would it be safe? I do know of the secret
I think image 3 is fleurine's house
the 2 cherry blossom trees?
But honestly i wouldn't worry about this beyond where house goes
You can always temp map go brrr for events
And sve perms say u can include a copy of forest.tbin in your mod if u want
im newer and idk what that means but Ill find out (and it sounds good to know anyways)
Events let you use temporary locations whose only data is the map given
I don't know for sure about anythinge else in those areas, I was just pitching in with the one thing I do know.
It means you can stage event stuff against SVE forest (no additional mods) if you want
ohhhh ty
I don't think it's realistic to be compatible with every mod out there so best to just make it all work in your personal mod list
And maybe do compat if someone asks nicely
I know there will be conflict somewhere but I didnt want to yeet it from a well known modder and have it not be usable at all by anyone who uses theirs
I understand wanting things to be very compatible, but I also had someone say I had the biggest compatibility section they'd ever seen in a mod, so maybe I am a gremlin
Midnight when i made my first mod i literally searched for every "sprinkler" mod out there and packed their api if they provided it
My policy now is compat on request if it's easy 
I got my start modding by specifically trying to make a bunch of things compatible
there was a period of two months where i went insane because my (unreleased) mod would not be compatible with the 12 autoplanting mods out there
but also the kind of compatibility I'm doing is like... map changes and dialog references, API compatibility sounds scarier
i've since decided to say "no, you can't enchant seeds, because uuh the elemental essence comes from the soil itself"
this server is so helpful
ive been drowning in reading and trial/error for weeks
(I say this, but for compatibility and festival reasons, my ramps have 72 map patches and a couple thousand lines in content patcher choosing which one to use when)
sometimes you just black out and then you have n ungodly number of map patches with compatibility for a bunch of mods, I dunno, it just happens
Right. I took a couple days away and now I'm back and ready to keep going!
API compat is pretty simple actually (sometimes I'm surprised by amount of use the scythe enchantment API got
)
The pain in the ass stuff is harmony patching other mods
khloe also went on an arduous odyssey to add BGM compat to every mod that touches the menu, and it was an exceedingly commendable effort, but even then it's only about 70% successful
reasons include: closed source, author is MIA, closed source and author is MIA, etc.
(pls, people, make your mod source available if nothing else)
oh speaking of i wanted to ask: on smapi.io my mod shows as no source, but it’s on github with MIT license
how can i tell smapi it’s there
open a pull request at https://github.com/Pathoschild/SmapiCompatibilityList
thanks!
You probably didn't have link on initial publish or you published while the data collection was broken
Also only C# mods go on here
where does it usually get it from? the manifest?
Nexus mod page link
description scraping 
yeah it’s wedding reminder
I used this for edoM rorriM though and it worked beautifully so I say there is absolutely nothing wrong with it and that proves it has its place in serious mods
(/j)
Just shaved off -196 lines of code from the json of the first mod I updated with the new Patchmode: Mask option. Feels like an early spring cleaning. So nice.
townInterior you aren't a bother anymore. 
Still have to finish the spritesheet rearranging and all the other mods, but it'll be worth it.
Can I share the content I made so far to see what I'm doing wrong? I keep trying to warp from the Bust Stop to the Hospital, but they don't go to the points where I need them, and Harvey and Maru aren't showing up at all.
Just for reference:
- Alec, also Mouse Friends in the Forest
- That area is cordoned off during Flower Festival, isn't it?
- Fleurine, but she can be moved via config.
- None that I know of, but just be aware that this is not vanilla location.
- Riley, also Cut Characters.
- Law and Order
- CtrlAltZero
pretty sure 2 is also where cape stardew is, or something close?
good examples ty
your warps aren’t formatted correctly. the format is warp Actor x y. it’s super important to pay attention to detail with event commands. i usually have the wiki page up side by side with my event script so i can constantly reference it
So, it should be warp farmer 17 6 1 instead?
no, look closely at what i sent. the warp command doesn’t take a facing direction
Oh, okay, I see now. Sorry about that. Thank you. I appreciate the patience
no problem. if you look in the console and see red when testing your event, it'll usually tell you exactly which commands are failing, and then you can double check that you've formatted them correctly against the wiki
Yeah, unfortunately the problem with that is that they're so close together that it can be kind of hard to read for me.
Sometimes when there's more than one that is
would putting it into reader mode help, maybe? i know a couple people do that for accessbility reasons
there's a reader mode?
on firefox (and probably other browsers) you can click a button to strip out CSS or style stuff and just have plain text
I'll definietly look into that, thank you
on firefox desktop it's here next to the star
It checks the manifest update keys, mod page descriptions, and (for CurseForge) source URL field. This also happens retroactively; if you add a GitHub link later, it'll be auto-detected during the end-of-month update. (Feel free to update PRs to update data sooner though.)
oh good to know! it's not an emergency and i feel much safer updating the mod page than sending a PR so i'll just do that lol
How do I put someone in one of the beds? Like how we go underneath the covers to sleep for example.
i don't understand the question
Okay, so my event has the farmer finding an injured child and takes them to Harvey where they'll sleep for another event or to until they wake up. But I don't know how to put them inside the bed itself
Or, rather, under the covers
Do you have a bed where your NPC is not going under the covers? Because generally the covers are on a front layer so it just... goes over the NPC
oh, one of Harvey's, hm
I don't think his beds are set up to be used, might have to do extra work there
if it doesn't happen automatically, you can just changeMapTile as long as you remember to change them back at the end of the event
changeMapTile? Is there a wikipage for the specifics?
granted there's a wikipage for everything so that's a dumb question, sorry
it's an event command
The tiles don't line up right for that though
I'd recommend looking at East Scarp's events for Jasper. One of them has him in the hospital bed. And it basically glues this over the bed:
because the blanket on the bed is not in a position where you can just stick it over the NPC, the top goes onto the next tile
Maybe make a sprite and layer it on? I don't think the game uses the bottom bed
Outside of the event, you'd use something like a schedule animation and offset, I think. One that's something like that, offset onto the bed
or you can temporarily replace that bed with a map patch with one that has your NPC in it
Unfortunately, those are the most awkward beds to do it with. Other beds, you just put the blanket part on a front layer and it just works
because of this, the blanket extending onto the pillow tile
I did not think it would be this complicated. Would it be easier to just change the event itself?
Maybe have the kid be a guest at the farmhouse instead?
Or something. I'll think on it, see what I can do to make it work
Thank you
arg, if i want to add something to friend and family conditionally i will likely have to deal with target fields
again
cmonnn embrace the madness
I love target fields, that's how I do event crimes
ooh now i gotta learn about target fields for further criminality!
it's not a big crime, but it's nice to be able to stick your character into a vanilla event without breaking other mods to the event
and things like that
hmmmmmm interesting
And I added a CT to Morris getting punched that way
Like I want Bill to show up to Leah's art show?
{
"LogName": "Bill Attends Leah's Art Show",
"Action": "EditData",
"Target": "Data/Events/Town",
"Priority": "Late + 100",
"TextOperations": [
{
"Operation": "Append",
"Target": [
"Fields",
"53/e 55/t 1500 1700",
2
],
"Value": "{{ModID}}_SheriffBill? 28 56 2",
"Delimiter": " "
}
]
},```
bam, he's there
Field 2 is always placing people in the event, always, so appending to it with the space delimiter will tape a NPC onto the event
hmm
{
"LogName": "Editing Friend and family",
"Action": "EditData",
"Target": "Data/Characters",
"TargetField": [
"GavinPommerelVMV",
"FriendsAndFamily"
],
"Entries": {
"Clint": {"Clint": "",
}
},
},```
[Content Patcher] Can't apply data patch "Lumisteria - Visit Mount Vapius > Include Assets/npcs/Gavin.json > Editing Friend and family > entry #1" to Data/Characters: failed converting entry to the expected type 'System.String': Error reading string. Unexpected token: StartObject. Path ''..
i'm not sure i saw this error before
That doesn't quite look right, one sec
i think you went down too far in Entries? vanilla has it as
"Caroline": "[LocalizedText Strings\\Characters:Relative_Mom]",
"Pierre": "[LocalizedText Strings\\Characters:Relative_Dad]"
},```
And it would be blank for just a friend
after "Clint": it expects a string
it doesn't necessarily need a string, blank is fine
blank is fine
i'm not sure what you mean about too far down
blank works when i don't do target field
Blank works
{
"LogName": "Editing Friend and family",
"Action": "EditData",
"Target": "Data/Characters",
"TargetField": [
"GavinPommerelVMV",
"FriendsAndFamily"
],
"Entries": {
"Clint": "",
},
},```
i think it wants this
Yeah, that's right
Sorry I know there's a mod that does this and I'm trying to dig it up as an example, but I think there's an extra clint in there
hmm, i will test, but sometimes it doesn't like if you put stuff directly
you need a sort of key/id
althought i can't tell if it's always needed, so i will try that
FOUND IT
ok, it seems to be working, must be a question of format expected but it's the kind of stuff i have trouble remembering
Ah, cool. I have another way to do it if that didn't work
i'd be interested to see, some may be more intuitive
"Action": "EditData",
"Target": "Data/NPCDispositions",
"Fields": {
"GavinPommerelVMV": {
"9": "Clint ''"
}
}
}```
East Scarp's rival hearts do this to set a relationship for someone after they start dating, I just changed it to match. The 9 may be different depending on how you set up your character info, you'd have to count down to the line Friends and Family is on
would the stuff under fields be the same updated for 1.6 though?
I don't know if it's more intuitive, I just know it didn't throw that error
hm, I did just notice it uses "NPCDispositions", I think it should be characters
thanks! i think i'll use nic's version for now
Probably for the best.
maybe I'll pop mention of that over to Lemurkat, might be breaking quietly or something
Hey
so I
tried to refactor one of my old mods, and when I launched the game from Visual Studio my laptop nearly died
I'm not really sure if I anyone had any similar.... things happen
yeah, the debugger is more intensive than the game on its own, my pc also struggles
perhaps relevant
