#making-mods-general
1 messages ยท Page 108 of 1
the 2 winners here already have different colors than the rest lol
Which makes me wonder if there's any other scroll bars that make noise lol
i knew this fun fact >.<
cant believe the junimos specifically targeted the ourples
SO YOU ADMIT ITS PURPLE
i do
was that a doubt
icon is purple shorts. ergo is purple role.
bluebs was purple shorts, button wasn't shorts yet
i think u (were) ourple
wait I thought you were one of the prpl deniers
i mightve gotten our positions on it confused
i genuinely have not paid attention to the colour since then
so i dont actually remember if i thought it was blue or purple
oh, you're colourblind?
<-- what colour is this???
demetri
i looked it up
demiti
i was saying that ur color's css name is blue
which is roughly true
but i dont agree with a system that makes dark gray lighter than gray so
You have no principles smh, meanwhile I will remember a grudge for 20 years+
tbf, i mostly just wanted to jump at the chance to reference that convo again
oh
iwillnotbebaitediwillnotbebaitediwillnotbebaited
blueberry u can have a paprika icon now
my principles are "i go where the bit takes me"
oh my god you right
subtle ad for my dialogue mods having good writing ig 
better put that in ur marlon mod 
shouldve had marlon look directly into the camera and say "By the way, download my mod for more stories like this."
where's the fairly odd parents thing one second
i already got like, different authors holding my arm behind my back for the "make marlon date other old people
" what's one more
make marlon date me
you right. grandpa's single
...im sure there's a romance marlon mod out there though right
there's already one yes
mine will definitely not be compatible with it though 
unless u play rsv

you right, grandma is single
How does SMAPI purpletext "you can update these mods" thing work, anyway? I erased UpdateKeys from my manifest and it seems to still check the previous Nexus page.
what if you change your unique id too
I think it does as well
though thats only for c# mods right
what r u hoping to accomplish dolphin?
Correct
oh casey it seems like spacecore animations go 2x speed in split screen #making-mods-general message
portal mod https://www.nexusmods.com/stardewvalley/mods/29310
Ah, yeah, SpaceCore needs some fixes for split screen
feels like you can say that about most mods
Most mods I've worked on I'm pretty careful with it
Two things. In my mods there are these: https://www.nexusmods.com/stardewvalley/mods/20414?tab=files
The main files has two mods in it and I want to disentangle one of them from update notification. The optional files I just want the manifest key to work, which doesn't seem to be working too.
oh i dont think smapi checks for optional files
actually it does check for optional files, but only if its version number is higher
you will need to make it either another main file (which has annoyances when ur versions are out of sync) or separate page
Oh huh. Then I should make it a main file too?
(or I may have misunderstood your statement)
well could be that i am wrong yes
from previous grievances, opt files with higher ver will infer that "main mod can be updated"
see documentation here for update subkeys: https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Update_checks#Update_subkeys
and for a live example ,see the optional files on this page: https://www.nexusmods.com/stardewvalley/mods/22975?tab=files
and yeah you must ensure that the optional files have a lower version number than the main one
Fixed for next version (hopefully)
I has basically nothing in it. Not big enough for a separate page. ๐
good nuff, ship it
huh weird, your file manifest and nexus description looks fine
did this feature get yeeted
if you're talking about vortex? maybe? i haven't been paying attention to the stardew-centric mod manager from vortex tbqh
I literally just checked with my own example, it still works?
Wait. I changed to my laptop and it works there.
Does SMAPI keep a client-side database, maybe?
is ur laptop different os 
Because when I launched it first on my PC I forgot to add the Manifest Key to the mod page description. So maybe SMAPI just checks for manifest key once and remembers it for my PC?
Both Windows 11.
(Oh sorry for ping..)
some caching is involved with smapi's update checks, to avoid hammering nexus et al
looks at ichor's role tags, sees cheeto usurps all 
Where is the field for controlling when a seed/tree is available? Like red cabbage is only available year 2 onwards
if you look at seedshop in Data/Shops you can see the condition field for red cabbage seeds
data/objects and prrrrrrrobably shops
I think crop_year_2 is a purely informational context tag
fair 'nuff
I see I see, makes sense. Well, as long as it works for users.
Well dang. I don't know why I apparently looked everywhere else, but it's in Data/Shops
what's the c# method to parse a vector2 from a string format of '{X:29 Y:42}' 
I haven't vetted this, but I found a stack overflow post about doing this in C#
https://stackoverflow.com/questions/11170541/c-sharp-parsing-a-vector2-from-string
u could make newtonsonft.json do it for you
although hm, smapi has that custom thing right 
two methods of doing it and both mean instantiating a serialiser haha
if it's not simple i'll just manually save the v2 to moddata as a space-separated string
well if it was me i'd just
easier that way 
i'm sure i could come up with a couple ๐
I'll just reinterpret cast the vector as a string thanks
man i wish i looked at fish pond draw more during 1.6.9 beta
is it screwed again
oh you wanted the miniponds didn't you
the only visible bug was the shadow draw thing
would have been good chance alas
nothing a transpiler cant fix (button voice)
oh you can pack it with string str = $"{tile.X} {tile.Y}"
and unpack it with ArgUtility.TryGetVector2(str?.Split(' '), 0, out Vector2 newTile, out string error)
not wrong, though
since when was there a TryGetVector2
might be new in 1.6.9
i hope so
should i nop 4 ops or make a branch 
i need to switch this for getsourcerect
// IL_00b2: ldc.i4.0
// IL_00b3: ldc.i4.s 80
// IL_00b5: ldc.i4.s 80
// IL_00b7: ldc.i4.s 80
// IL_00b9: newobj instance void [MonoGame.Framework]Microsoft.Xna.Framework.Rectangle::.ctor(int32, int32, int32, int32)
branch for best compat, yeet them if you're lazy and overconfident like me
does removing from the list not preserve branches?
i may or may not have a clickcraftingrecipe transpiler that tears out all the seasoning behaviour entirely
at this point, who doesn't have a clickcraftingrecipe transpiler
i don't and never will
smh you're not a real modmaker /s
(i probably won't either)
you're missing out
joke's on you selph i already know i'm not real
who needs a transpiler when you can just poll every tick to see if they crafted something and then just edit the item in their hand instead
isnt that just
jokes on you YACS adds to inventory directly
smapi inventory changed
fak
this may surprise you but the inventory can be changed by more than just crafting
well, bseides not really being able to tell if its new
u would listen the event on menu open and unlisten on menu close
what if you have a tile action in the world that goes to clickcraftingrecipe directly huh
from other sources
doesn't fit my definition of crafting and therefore it's not in scope. Marked as won't fix
shrimply avoid it all and make it into machines that take multiple inputs
im more fond of the idea of having to talk to an NPC who will quickQuestion you to ask what you want her to craft for you, who will then take your items and give you a new crafted one in return
via dialogue commands and $action
why are you looking at my ideas
I am probably using "leclair.morenightlyevents_ForceEvent [event]" wrong
https://smapi.io/log/97d1dec080434071afac83ba972673c5
Log Info: SMAPI 4.1.7 with SDV 1.6.14 build 24317 on Microsoft Windows 10 Home, with 18 C# mods and 7 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
because you have good ones
flashback to the MCN crafting system
or great minds think alike or w/e
with enough dialogue branches and if you dont care about compat you wouldnt even need C# at all!
dont forget dynamic tokens too ๐
i was more thinking of specific items anyway
ive never played rune factory so means nothin to me unfortunately
i dont know how more nightly events works so im not sure id be able to tell what exactly is wrong but you should post your json too
fitness skill tree, two branches at level 5: cardio vs strength
what will you pick
Brb adding skills for literally everything like Rune Factory
i mean technically you could with stepsTaken right?
Increased stamina or damage?
And a knitting mod where you have to knit the sweater irl
just every threshold gives a +1 stat
Swords? Yes. Damage Resistance? Yes. Walking, sleeping, and eating? Also yes
"standing there, menacingly? yes"
more runescape skills in sdv would be funny. firemaking somehow even more useless than before
You might think I'm joking or being silly
Cardiooo
i played rf5 and was not happy with the gameplay loop 
For those that don't want to click the link:
me going to change ze trigger action a bit, see if it works first ><
I tried RF5 and couldn't get into it like I did 4, but by that point I had already started having problems sticking with games for a while
do the Sleeping and Resist Sleep skills cancel eachother out
You have to do kt all irl
I would be 100% dead
I fail sleeping
Vaguely reminds me of https://dwarffortresswiki.org/index.php/Skill#Professions
Resist Sleep is from status effects - sleeping against your will ๐
I don't do any of those three properly lmao
yeah make sure you scrub your bum
Well sure, if you've never bathed before you probably wouldn't do a good job at it /s
unskilled bathers will never maximise their vitality
level 0 means you miss spots, much like when you come out of the shower and you rub your skin and you get that wet dirt
The higher your bathing skill the more friendship you get for talking to NPC's every day
npcs just straight up don't talk to you if you have low bathing skill, new hardcore mode
"kath.weathering_NadoSummoned": {
"Id": "kath.weathering_NadoSummoned",
"Trigger": "spacechase0.SpaceCore_OnItemUsed",
"Condition": "ITEM_ID Input Totem.tornado",
"MarkActionApplied": false,
"Actions": [
"leclair.morenightlyevents_ForceEvent kath.weathering_NadoSummonedDanger",
"spacechase0.SpaceCore_PlaySound thunder local",
"spacechase0.SpaceCore_ShowHudMessage \"{{i18n: Totembroken}}\" (O)TotemBlank",
],
},
"kath.weathering_VolcanoSummon": {
"Id": "kath.weathering_VolcanoSummon",
"Trigger": "spacechase0.SpaceCore_OnItemUsed",
"Condition": "ITEM_ID Input Totem.eruption",
"MarkActionApplied": false,
"Actions": [
"leclair.morenightlyevents_ForceEvent {{VolcanoSummonPower}}",
"spacechase0.SpaceCore_PlaySound KathQuake local",
"spacechase0.SpaceCore_ShowHudMessage \"{{i18n: Totembroken}}\" (O)TotemBlank",
],
},
Well, the max skill level was 999 for each skill (except for all the individual crafting ones) according to google, so good luck with that
it's outta a long list, the other actions work 9-9 so I probably need to ask Khloe
Are RF games supposed to be fun?
I don't think you're meant to max out everything ๐
There's a story
It's much less sandboxy than stardew
Psh, if number go up, I must
I enjoyed RF4 a lot back when I played it on 3ds
tbh with the downfall of harvest moon is the reason why stardew is still the most popular farming sim 
this does sound more and more like runescape
I mean, I tried to play Harvest Moon again as an adult, it doesn't age well lmao
i still want the grand bazaar feature as a mod
although i think someone made ...a restauranteur one?
Cooking
Higher skill levels increase the number of recipes you can use, and makes it easier to learn new ones.
what do you mean makes it easier to learn cooking recipes
The more you cook, the better you get at cooking, so I've heard
there better be a bathroom in the farmhouse then for this
I ain't walking my tired lil butt all the way to the mountain just to bathe
Gotta ask fireredlily to install one for you
i'm sorry what do you mean eating plain bread inspires me to learn new recipes
I don't see it on this wiki page but you also had to be certain levels of cooking for certain recipes, or the bread wouldn't give it to you
hard(tack) times call for desperate measures
Cooking Bread, not just any old bread
visions of complicated banquets unfold in my mind as i gnaw on stale bread
If you eat enough plain bread, the depression of eating plain bread will inspire you to do anything to stop eating plain bread
XD
This I know from experience actually
i just implement cooking bread but it just sends you cooking recipes you're missing
you're wack, I hecking love plain bread, and buttered bread(and toast)
Also it's not just cooking if I remember correctly
this seems more like thinking bread than cooking bread
This game is wild lmao
Every crafting type has a corresponding recipe bread
??? ? ?? ?
hey everybody what the hell is going on
@rancid musk Sorry for the ping, but I believe I am stumped with MNE's "leclair.morenightlyevents_ForceEvent" and perhaps I might be using it wrongly as the events do load correctly and can call them with mne_test. Also wanted to ask for CS Critters, what are the parameters of Chance?
We're apparently designing irl the game
You level up by sleeping
I do bad at this
(ie. there's also Accessory Bread and Medicine Bread)
you level up by sleeping in stardew, too, it's fine
what bread
incredible that i can live out my wildest fantasies in Rune Factory IV by eating bread and sleeping
accessory bread, a bread earing?
Gachapon bread
gacha-pan ๐
i wish real bread could teach me life skills
Me toooo
(Though to be fair in RF4 the bread only taught you recipes - you still had to level up the skill yourself)
and don't fucking start bread at 8pm you will regret it
Like, if eating some bread taught you the blueprint for a time machine, you wouldn't suddenly understand how to make it
(I guess time machine comes to mind because I'm watching doctor who right now ๐ )
making-breads-general
that is a channel i would visit
baking-mods
i like the bread with the swirly red bean
I like mantou
i like bread
well, I've recolored the sve small hardwood fence to my liking but now... I am unsure of what to do next to implement it. That's probably a task for tomorrow me
-
Chance is just a number between 0 and 1. Higher number = more spawns, smaller = less spawns. The logic is a little convoluted because it mirrors the base game's spawn chances.
-
I have no idea what would be breaking about the trigger action for you. It does basically exactly the same thing as
mne_test(also I thought I still needed to update that mod for 1.6.9+?)
MNE works for 1.6.9+ as far as I've been testing
except for the trigger action not wanting to trigger
Can I do multiple $action triggers on the same dialogue? i.e. $action AddFriendshipPoints <NPC name> <count> $action AddItem <item ID> [count] [quality] There's probably formatting I'm missing to make it work?
i think you'll need #$action but i'll have to go check
i think it's one $action per piece, so you need # between them, but i'm not sure
TY both. I've got 8 tabs open right now to piece together all the parts I've been working on for this mod update lol. Going cross-eyed at this point.
i can't even remember which one of my mods had the dual action so gimme a sec 
Oh hey look, an example
I'm actually really surprised that was on there lmao
It's on the trigger actions page of all places
I have to iterations of the trigger actions page open rn and didn't see it ๐คฆโโ๏ธ
It's like right above the C# section lol
I honestly would not have expected it to be there
Wait. Can I use %item quest <quest ID> true %% in mail? Or does it have to be the trigger action %action AddMail <player> <mail ID> [type]? Migration guide says the latter was added but the mail page still lists the former. Will either work? I'm using the former currently (haven't opened the game to do a test) but now I'm lost.
p sure you can do either or
in most cases, whatever used to work still does
Well... time to do it in my convoluted way, abuse the trigger actions
Remind me in 8 hours to abuse of the trigger actions and change the totem call again, and to recheck the animal edit and schedule
Got it, 13midnight (#6362909) (8h | <t:1731674267>)
i need a mod that let you just keep putting signs in signs
Is there a way to update an NPC's outfit/appearance immediately upon triggering some requirement or mod event, like, hypothetically, giving them a new outfit item? During testing I noticed that if I used a cheat to change the season NPCs would only re-evaluate their seasonal outfits when they changed locations so I'm a mite concerned we can't change them in real-time 
NPCs only re-check their appearances on location change, that is correct
And we haven't found any way to get around that?
theyre not supposed to in vanilla, theres nothing to get around. you can force them to update it with a mod, but you can already do whatever you want with C# anyway
you could try just editing their sprite/portrait sheets directly i suppose but thats different from the appearances system
and it'd need to be OnTimeChanged
so still not always instant
Button beat me to what I was gonna say xD
and not so great for performance
Better option: Give them the item and have them respond like "I'll wear it tomorrow" so that it won't have to trigger immediately. >_>
That's what I meant, there's no way with base/CP modding functions to force an update, it's gonna need whole new coding?
technically my mod BETAS does have an action that will force update their appearance immediately however it doesnt sync with farmhands
there is no way to do it with content patcher alone, no
i suppose the question to ask is 'what're you trying to make your character do'
Well, shucks. Thanks for the info, anyhoo 
make them put on a necklace or sunglasses or something, i assume
or similar accessory
If this is for an event, you might be able to use a temp sprite change, but outside of that... yeah, you're bound to the OnLocationChange logic with the appearances system.
lotsa reasons i can think of for wanting to update their appearance after talkin to em
really if i gave an npc an accessory or a shirt i wouldn't expect them to wear it until the next day anyway, unless they're gonna get changed right in front of me
which you know, maybe we have like 8 hearts. maybe they're cool with it
if i gave someone a necklace i would be surprised if they didnt try it on
If I gave someone a necklace and wanted them to try it on, I'd code it as an event
Ye, the specific thing I was thinking of doing was adding a contact lenses item that could be given to Harvey and Maru to enable a glasses-less portrait but then I started thinking about more general use cases too
I feel like that only happening on a location change would be a pretty minor nitpick
putting on contact lenses is a whole production tbh
Most users likely wouldn't care if they had to enter the room and come back in.
Yeah there are ways around it, like the original plan was just to switch "later" or "tomorrow", just felt like the ideal implementation for this kind of thing would have been an immediate change
Could even reason it as a "could you step outside for a minute while I try them on? It'll only take a minute."
To prompt the player to walk away and back in
It's actually the NPC who has to change location
"could i step outside for a minute to try them on"
^
"in like an hour or two"
But for the spritesheet conditional patch (not Appearance system), that would actually be on player location change
So either way works
does event not count as location change for purpose of appearnce
big n awful transpiler 
I honestly have no clue
Ooh wait, this means you've already done most of the heavy lifting for any mod author who wants to implement immediate outfit changes? That's very cool 
is this the fish pond dilemma ๐ค
as long as you don't mind farmhands being potentially out of sync!
It should, it applies my overlays with a onlocationchange update rate 
My base assumption with modded playthroughs is that something broke multiplayer along the way already so that's cool with me 
Hello again. I am confused. I don't understand how the selling prices of the objects work, I put an item in my mod with a selling price of 100 and in the game it appeared 550, I went out, edited the mod and put 550 as selling price, I loaded the mod and it appeared in the game with a price of 100.
By selling price I mean the price at which I sell it, not the price at which I buy it.
Sell price is coded to be half the price you buy it at, right?
I vaguely remember that being how it is determined
But then, some shops also have their own Price Modifiers that apply
the price you sell it at is just the price in the object data
its the other way around, that shops are coded to sell at twice that price
ah, gotcha. Wiki misled me then
not accounting for additional modifiers like Pierre with another 2x
the end result is the same so its more just semantics
assuming you dont set shop prices specifically anyway
it does matter at that point
anyone got any tips for getting into designing farms? 
So if I put 1000 it should appear 1000? I don't understand why another value appears
if you put 1000 in the object data then you will get 1000 when you put it in the shipping bin or whatever
did you make sure to trash all existing instances of that object before reloading
I modified the price again and now the correct value appears, that is to say the one I put in json file. I have no idea what happened before
items that already existed will not update
Yes, in fact I created it again, since I didn't save the game anyway, it didn't make sense to save it if I was going to have to re-create the object to see if it reflected the correct price.
It still does not make sense because I only modified one object to test, the others I did not alter and they still appeared with the wrong price and now those same objects that I had not modified now have the correct price, too.
its possible that you'd just forgotten to save the file the first time, maybe
or didnt do a patch reload if you didnt close the game
!mapmaking
If you want to make mods that add or edit maps:
-
Use Tiled to edit .tmx or .tbin files.
-
Refer to the Maps wiki page for details on how maps work in Stardew Valley.
-
Content Patcher allows you to create custom locations through editing Data/Locations
-
Vanilla Maps can be edited via Content Patcher as well: EditMap
Remind me in 12 hours to do retexture obelisk and Kisaa's channel, and to stop scope creeping
https://imgur.com/gs8Db9t (#6362989) (12h | <t:1731692116>)
@merry nexus getting into designing farms to me is just the desire to cook my own food. also, take the time to learn how to do stuff from other people's farm maps, and learn how Farm Type Manager works if you want your farms to spawn ores, forage, etc.
https://github.com/Esca-MMC/FarmTypeManager?tab=readme-ov-file#large-object-spawn-settings
I know I saved the file because the price of the modified item had changed every time I modified it, it was not the correct one but it had changed and I did close the game together with SMAPI.
Anyway thanks for the help, the community of this discord is always helping me, as I did before, when I upload the mod I will mention them in general because I don't remember all who helped me but it is really appreciated.
ooo oki ty!
Good night, It's time for me to go to bed ๐
np! feel free to ping me if you have any mapmaking questions! 
hey does someone know the ID for "The Wind Can Be Still" during winter?
I thought its cyclops but my music doesnt change.
nevermint its winter2
nevermind*
Question, can eventSeen_n_memory_n dialogue fall under Marriage dialogue or is it strictly under regular dialogue? Thank you 
i don't think so, the latest added was cyanotype, i don't remember when it was added but it was possibly part of initial release
Hello! Does anyone here have any experience on modifying monster spawn rates?
I am not aiming to make new monster types or make them spawn where they don't normally spawn,
I only need to increase the base spawn rate permanently. Like how a Monster Musk does, but permanently and not player-dependent.
Interesting, I can't even find eventSeen on the wiki, I'm still waking up so I might just be doing something wrong. I do see it in the dialogue files, but not in any marriage dialogue so I'm guessing probably not but when I get back home I can try checking the decompile
Youโre a blessing roku
i just yoinked it at regular dialogue instead and set a When condition as per Aviโs instructions
(not sure if what Iโm doing is right but I did put the custom gift dialogue over there, too)
Well if Avi says it I'm inclined to believe it'll work
I don't have any experience with NPC's to pull from for this lol
I feel like I'm missing some part of this, can't find where any of this is actually being used lol
@tardy adder: abuse of the trigger actions and change the totem call again, and to recheck the animal edit and schedule (8h ago)
Is there such a thing as a mobile mod maker?
Or is there just no more modding on mobile?
mobile (android) mods used to be a thing but it is doubtful they ever will be again
That sucks
sorry to be the bearer of bad news
Yeah itโs sad because it could have happened but itโs been left behind
kind of a hell to maintain both a PC and mobile version of all modding tools and mods...
Why dis brown cow always warn me about the sprite when I am not even changing you >->
how do i make an npc "locked" for romance until a certain point? is it something like just writing something to change that part of their disposition upon meeting conditions?
Yep, you just have a patch editing the CanBeRomanced field with a When condition
Although keep in mind that that'll allow players to reach 10 hearts with them if they haven't met the conditions yet, so you'll want to also lock any 8 or 10 heart romantic dialogue or events behind a dating check
Here's the code I did for Don't Date Relatives, which does the opposite (changes them to non-romanceable if the condition is met) but you can just flip the false to true
{
"LogName": "Haley Datable Change",
"Action": "EditData",
"Target": "Data/Characters",
"Fields":
{
"Haley":
{
"CanBeRomanced": false
}
},
"When":
{
"Relationship:Emily |contains= Dating, Married, Divorced": true,
}
},
I'm over here trying to figure out how to avoid checking how many stardrops the player has too frequently, meanwhile base game is checking it in draw whenever you have the skill page open 
AT finnicky
@pine elbow could be done with c# without too much difficulty I think. would be much more complicated to do it with CP
(though getting it to work automatically with other mods could be trickier)
is there any mod with similar functionality to scale up 2 and hd portraits? (cant use portraiture plus because i dont think itll work for my mod) 
I think those are the three really lol
thats what i was afraid of lmao thanks
Technically, none of Portraitures content pack stuff is working, so it's only able to be used for the drop in Portrait folder method
looking to add an item to a shop for one-time sale. there's a real Data/Objects entry behind it, but i would like it to vanish and set a mail flag when purchased, sort of like the key to the town from qi's gem shop. i can set the mail flag via ActionsOnPurchase, but is there a way in the shop data to have it not give you the item?
Scale Up 2 uses CP though, so it has all of CP's functionality backing it up
rip, i cant use portraiture because I have a lot of seasonal outfit variations so relying on just _season wasn't enough for my purposes
Look at how special items work
Like thr class SpecialItem
this is a SMAPI mod, so if i have to i'll implement my own action for it or get up to more invasive business
i just prefer to use data when it's available
actually maybe i can implement the inventory trigger or whatever it is, like when you get qi gems in your inventory they disappear and go into your currency value
does portraiture not work with the 1.6 outfit system?
Does trigger action happen before or after the item enters inventory
Since there's RemoveItem
if before then rip
actions run when you click to purchase, but when you buy items they are held and not in your inventory yet iirc
i dont think so, at least last time i poked it, because I have 2 different outfits per season and it wont recognize _winter1 or _winter2 png names or anything like that
Item Extensions has a "on being held" trigger
You can patch Object.actionWhenPurchased and do what stardrops do lmao
if its possible to conditionally patch one over the other that'd be cool, but i thought portrait just read png files
yeah, one of those, or hook into whatever walnuts/qi gems do to go poof. thanks, all
this is assuming we want to stick with CP as much as possible, because yeah I'd just patch lol
I think for shops it's so that way you can purchase non-physical items, but everything else normally uses that one method that runs when stuff gets put in a slot
Portraiture is fairly specific about which portraits it'll override
I forget the name but I've patched it for other stuff before
oh, i'm well into patch territory for the rest of the mod's business. i just like to use data when possible
ha got it
Farmer.OnItemReceived?
that's the one
time for nightly "i hope this mod updates" prayers
Tbh I don't think it's an issue to handle this stuff in the code
Data is good for when you want data modders to perhaps change a thing in your mod
Portraiture?
scale up 2 or hd portraits
addToInventoryBehavior or whatever it's called is also useful, because you can supress pickup messages and make it so you can pick it up with a full inventory
Uhh, pretty sure Scale Up 2 still works in the latest
I don't have any errors for it and I'm using it
nah i just checked it it doesn't seem to work, it has no errors, but doesnt work in practice
hs portraits isn't 1.6-ready yet
there is a comment under scale up 2's page saying it doesn't work for them either
yeah
Yeah I don't trust users
lol fair
well i can definitely say my patches applied prior to the new game updates
hmm maybe the spacecore virtual currency thing
@outer glacier
anyone know how I would even begin to implement a bilingual mod? I'm learning Hungarian but I'd like all the strings to display both English and Hungarian
Thank you lol
Youโd need to mess HEAVILY with a lot of the text display systems
I would pick one place text is displayed and start there
Dialogue, for exampleโand just start reading the decompile
See if you can get it to use both fonts at once as a start maybe
English can be typed with Hungarian font so you could possibly implement a custom Hungarian language with much smaller font (to prevent dialogue crowding) and just type every string twice. It's not gonna look good but the alternative is doing witchcraft with C#
It doesnt sound like an easy or fun project either way
๐๐ญ๐ญ๐ญ totally fine with it not looking good
there's not a way for me to tell the game to output every string twice? once in English then again in Hungarian?
Forgot I had disabled it while I transitioned to SVE but I just turned it back on and it's still working for me
No there isnt
op
can you link me the mod for that? wanna cross compare our code lol
is that because of the way Stardew is coded and outputs strings?
(also thanks for checking!!)
Before I answer questions further do you have any programming/C# knowledge?
I'll upload it to the validator, it's one I made lol
very limited, used to have more but it's been years
Ok then >:|
Aside from the portraits, another reason I can't just release it lol
tysm
yeah i can see why lmao
oh my god youre going to laugh
i didnt have scale up installed...

Oh
that would do it
i guess i accidentally deleted it when updating all my mods just earlier 
time to reboot
I have definitely been in the process of deleting mods to install their updates and then just forgot to move the new one in
even worse when you realize there was no scale up update
the magic of stardrop ~
manual just hits diff...
So hypothetically it's possible for you but you'd need to figure out a lot of stuff. Maybe one of the C# modders has a specific idea but like elizabeth said you'll also have to think about what you want the actual output to look like and figure out the text display stuff. I don't think its as simple as just "telling the game to do this"
because the "how do i tell the game to do this" is what making a mod involves figuring out LOL
wow scale up 2 suddenly started working... i wonder why.... haha.......
welp ty for listening to my booboothefoolery
To get it working with vanilla, you could potentially load both language files, and then use an asset editor to combine them.
to work with mods, though, is a little more complicated, since most of them use SMAPI's language service and ignore the language of the asset. I don't know for sure, since I haven't looked at that part of SMAPI's internals, but I strongly suspect you would need to use harmony to change how that works
mystery solved
Works out, now I know for sure that it's still working instead of just assuming lol
Hey gervig!
Ugh, why do I keep finding out my mods are broken so long after I updated and fixed them
Can someone help me out with some NPC stuff? I have this anti-social NPC called Goldie. For some reason if a game is started in some languages, for example chinese. Goldie will spawn at Town (29, 67). But if the game is either started in english or changed to english, Goldie is moved to the correct location at Gervig91.StardewAquariumCP_FishMuseum (15, 46).
Content.json for NPCs: https://smapi.io/json/none/b05f378fccf14c90b343b41a737d9912
chinese translation file for NPCs: https://smapi.io/json/none/8cd6cb9c5eb440d9bd1226d7ea9616d5
SMAPI log where I load and change languages and check where Goldie is using where is <npcName>: https://smapi.io/log/db2efb8292ec40759c0bc6d8a30c2697
Log Info: SMAPI 4.1.7 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Home, with 41 C# mods and 20 content packs.
Thank you atra!
that fixed it
lol that makes sense, thanks for the explanation. im okay with some really subpar output from a design perspective. I've implemented (not made) similar mods for the Witcher, cyberpunk, and baldurs gate, so I imagined Stardew would be a lot simpler (having not designed those mods myself but having some understanding of how they worked and were designed)
super down for vanilla only compatibility
Oh it's the bilingual sdv problem once more 
and yes my understanding is the similar mods I've seen in other games do this or something like this
The reason why it is hard is cus sdv only loads 1 locale's content at a time
You can actually load another locale fine
It's doable just annoying
For vanilla
For modded it isn't happening
Yeah smapi has its own locale i18n thing
you could probably harmony your way into it with mods, but it sounds unfun
But hm is Hungarian a supported language rn
totally fine. I had envisioned modding in more Hungarian specific words like dishes and what not I need to learn (I just moved to Budapest, my great grandfather was Hungarian, working towards citizenship) but that's a whole other endeavor
I think their goal was to show both language at the same time for learning purposes
Which is a very good idea on the paper and would be awesome as a flexible framework, but that indeed would require tremendous amounts of work
Oh now that I think about it, you know what you be absolutely awesome? Being able to hover over a word and have a tooltip showing the word translated into another language
Oh, I'm the one who misunderstood xD
I thought you said it was already supported, because maybe you thought they wanted to add it ^^'
ok I think I have finally fixed the volcano eruption I had broken
Let me not touch this again
someone was working on that but it was difficult
yes, you can look it up
this might sound weird, but.. ;-; is there a way to specify specifically like... 60 millisecond pause in an event
idk im looking at the stuff on the wiki and
am so confused
hmmmmm
Yes, 4000 is 4 seconds. What is this from?
This tutorial breaks down Sunberry Village's simplest and shortest event to help explain each command.
โ20031402โ: This is your event ID. Make sure itโs unique. You can prefix it with your update key (AKA the number on the link to your mod page). The way event IDs are formatted will be changed in 1.6 to look something like this: โskellady.SBVC...
the pause command takes milliseconds, so pause 60 will do this, but:
- don't rely on it being exactly 60, due to infelicities
- other commands around it may insert their own implicit pauses, so you may need to tinker depending on your script to get it to feel right
Tried to test the update to my mod and it couldn't apply the mail patch because of reasons my tired brain is struggling to remember. JSON https://smapi.io/json/content-patcher/052b298dfdb44be8be27ec88fc3be3aa and log https://smapi.io/log/85b34a9b5de045d8890122fb0ae48525 Can't apply because failed to convert entry? Do I have to have all the commands inside the i18n? Is that why it's annoyed?
Log Info: SMAPI 4.1.7 with SDV 1.6.14 build 24317 on macOS Unix 12.7.6, with 17 C# mods and 5 content packs.
Your When block is inside the Entries block
your mail edits have "When" at the wrong level
move it outside
When goes on the same level as Action
๐
It's a condition for the patch block to exist in its entirety
TY. This is what I get for editing when tired and waiting for the sleep aid to kick in.
"FriendshipLevel" also sounds off to me as a CP token. is this a conversion from MFM, maybe?
Conversion from quest framework. Will double checkt he when token after this meeting.
Hearts most likely is what you'll want
Also the Krobus 10 is wrong format for CP When too
The page I linked has an example for Hearts though
@tardy adder: do retexture obelisk and Kisaa's channel, and to stop scope creeping (12h ago)
The urge to yeet this fucking transpiler and just do a skipping prefix is biting me hard today
ah shoot I had forgotten the sprites
Is anyone else having crazy lag?
Wiki for me lmao
In life for me right now, lower back pain hit me hard
Kind of a hard thing to compare since everyone has pretty wildly different mod lists
And hardware set ups
I haven't noticed any difference in frames or delay over the last couple patches
my game has always been lag
Playing right now to test my prefix, running smooth
Game lag... I got lots of new lag. Am trying to figure out what happened...
Really mad that this prefix worked immediately when I don't know how I fucked up my transpiler lol
tbh i always feel that the hardest part of transpiler is never writing the il
more making sure im putting it in right place
The beauty of prefix!!! I love those!
crimes
Be Gay Do Prefix.
anyways apryll try using profiler to see what is big loop?
profiler is in VS, yes?
I see! Will get it.
Yeah, normally when I mess up the IL it's relatively easy to fix, it's when I forget to do stuff like move labels that's a problem lol
Not entirely sure what I did wrong here, half of my transpiler is still working correctly
Trying to figure out what I changed/if this method changed somehow
I has a question from a friend, is it possible to {{TOKEN}} a context tag in your own modded object?
yeah you can
Someone asks for help with SpaceCore not loading saying they already updated everything and gave a log.
They did not, in fact, update everything. (SMAPI as well as two unrelated mods)
Okay so I was recommended to try i18n for random dialogue choices for scheduled dialogue but it's not working as intended
tokens.json https://smapi.io/json/content-patcher/62061081a963457d87daa70c1b25f7a7
content.json https://smapi.io/json/content-patcher/6cd44e5b931f4c9b945e098e4a2a2a9f
schedule.json https://smapi.io/json/content-patcher/cb33c7e906e545d2a48871a4d7adf21e
@lucid iron More appropriate for here, but I found the video.
I think it's just because building upgrades don't remove existing built in objects?
I think that's it, yeah. Probably because of the (pretty reasonable) assumption that you're not going to be removing functionality from a building with an upgrade. 
If I am just redoing my mod to use I18n instead of being hardcoded, what number do I increment for the version?
the number does not matter in terms of functionality so long as it only ever goes up, but the recommendation is to follow semantic versioning
https://semver.org/
so, id do the last one personally
Hey i installed a recolour, what are those spots?
recolor lacks new update compat
Tiles the recolor doesn't change. It might be old or they could be non vanilla.
@zenith robin You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!
(Is there such a thing as an amateur octopus)
Ammonites? ยฏ_(ใ)_/ยฏ
hmm...I fixed the when condition or so I thought. No errors in log but mail won't trigger even with Krobus at 10 hearts. Could it be that the lack of farmhouse upgrades is causing the issue? No bouquet given to Krobus to allow hearts 9 and 10 and still on basic farmhouse? Content file: https://smapi.io/json/content-patcher/1f5c0411e4e5479fa2b323196249b06a and log: https://smapi.io/log/266dc356cdef4e35ab19c3c4530b1867
Log Info: SMAPI 4.1.7 with SDV 1.6.14 build 24317 on macOS Unix 12.7.6, with 17 C# mods and 5 content packs.
Need a bit of guidance if someone could kindly help me out.
As a mod maker, what do I need to do after each new SMAPI update so that my mods show as compatible?
do you make content packs or C# mods
Are they C# or content packs ?
For C# mods, usually rebuilding against latest SMAPI/game version can work. If errors crop up you can follow them to see what broke and fix them
In the log file there will be trace logs explaining why it was marked as incompatible
Content packs pretty much can't be marked as incompatible unless it's in the manual blacklist for known breakage, so bumping the version in that case is enough
Content packs just need to be updated to the newer Format values unless you're making use of the rewriters for old data types. And if you're using old data types, consider updating them to the new ones via the "Migrate to version x" docs that pop up on the wiki everytime there's an update on the way.
C# mod, thanks for the info ๐
If your mod shows up as incompatible, first thing to do is check trace to see what the complaint is
Typically then you can cross-check against the wiki list of changes or the decompile
And figure out what it needs
So I don't need to release a new version just because a new SMAPI is out?
no
Not necessarily, though if the game has updated sometimes you do need to
Awesome thanks
SMAPI changes also typically are not breaking changes unless it's a major version change
Profiler is still on a 1.5.6 compatible build due to how little of Stardew it actually touches
secretly a smapi mod 
Honestly I personally wait for people to complain at me, but I'm in kind of a busy stage of life rn
We should join forces
Neither of us will actually have the time
Failed loading PDB for 'AlternativeTextures.dll'. Technical details:
tons of ppl report that, whats up with that?
What are the technical details?
Log Info: SMAPI 4.1.7 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Home Single Language, with 48 C# mods and 49 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
I got logs like this from some ppl with "RSV" doesnt load
tons of mods dont load because of outdated (?) .pdbs
I just told ppl to delete all pdbs but thats rather inconvenient
@cyan marsh your unique respone core breaks all birthday gift dialogue, and its not very obvious that its your mod. Could you look into it possibly? all NPC mods like SVE and RSV get reports about it
(I get a fair number of PolyamorySweet reports of vague dialogue issues too, when people are using it.)
@next plaza technical details ๐
Does it persist if they delete the .pdb
afaik no
but I actually never got feedback ๐ค
Can I have a log too? I'm unsure on how it's breaking it
I left a log on your modpage a few days ago
basically the issue is you patch invalid dialogue as birthday dialogue
is there a method to format dates other than Utility.getDateStringFor or does the game just not bother
mmkay imma take a look
Day 23 of Spring, Year 3 is a bit long but i guess there's not going to be some wild localisation method that makes stuff like 23rd Spring, Year 3
Raspberry, what are you trying to do
oh wow i really wasn't expecting localised text in smapi
hmm
SDate.ToLocaleString gives Spring 23 in year 3 which is probably as good as it's gonna get haha
good suggestion 
oh you know, the usual. stupid things nobody would ever do
sometimes you just make a menu and then realise you don't actually know how you'd ever bring it up 
I'm mad at Photoshop; more specifically, Adobe. Creative Cloud has to be installed, but... takes a HOARD of resources up.... Imma try GIMP.
maybe this can be a calendar or something
my photoshop works fine without creative cloud, you just have to disable the services that're trying to run it (on windows)
hmmm.. everything seems okay with that
gimp is not an adequate substitute for photoshop lol
Sadly, there's like... one kinda close substitute, and it's annoying.
Affinity!
i'm always going to push photopea as an alternative since it's actually trying to be a 1:1 substitute, but it's also online-only (which is a benefit if you want something portable)
man the absolute number of new classes and files and changes needed just for this one silly quest lol
I disabled the services using C-CLeaner, but... It kept starting up and running anyways....
i might've also deleted a while bunch of annoying exe files in the adobe folders to properly kill creative cloud lol
annoying service
no
you can gift npcs on their birthday with your mod installed?
ah, the eternal question. to subclass furniture, or patch furniture.checkforaction
interesting that technically all furniture is sittable. tvs, paintings, cacti, you name it
Similarly, I find it interesting that the shipping bin can have an interior location.
now that's a better mod idea than 'sit on cactus'
seems to work fine
Sit on Cactus? 25 percent chance of damage?
but that' s not the dialogue i put in
chance? you sat on a cactus. you knew the consequences
hmmmm
if u go inside can u retrieve ur things
@final arch I downloaded an NPC to check... there is no issue here
i need to make dinner but I'll look deeper
I'm still confused on this if anyone is willing to assist?
How are you sending the mail?
CP to edit Data/Mail when player is at 10 hearts with Krobus.https://smapi.io/json/content-patcher/1f5c0411e4e5479fa2b323196249b06a
that doesnt send it
Ah, that's not how mail works
mail simply existing in the data does not mean it gets sent
the game does not at all look at When conditions, those are only a content patcher thing
Probably some way to do it in events and dialogue
they determine when the data exists in the game at all
as it is, your mail does not exist in the game whatsoever, not even internally, until you have 10 hearts with krobus
then content patcher will add it
Yeah, you can remove that When from the mail and use a condition for the trigger action instead
TY. Quest framework had the trigger for sending the mail baked in. Still getting used to all the 1.6 changes.
Specifically with the Condition field, rather than a When field
Which uses Game State Queries instead of CP tokens
essentially with When conditions, if the requirements of that condition are not met, its effectively like it does not even exist in the content.json
you can, however, use CP tokens in Game state queries
if they resolve to true/false
Button, you're red!
or well, if they resolve to anything, but if you want just true/false then it needs to be that
i am red!
snuck onto the 1.6 dev team /j
You would do well 
possibly the biggest compliment i can think of
#modded-stardew is probably a better place to ask that
you'll do less damage editing the source code directly than with all your transpilers
Ah thank you
this is true! plus id be able to publicize whatever i wantโ
I don't think you have any proof that Button has done any damage with her transpilers
ive done damage to my own mods, does that count?
Only if you're willing to press charges
i like the name change
clearly cranberry-coloured
that i would agree with
candy crimson tho
cranberry paprika blueberry
That sounds like an awful pie flavor
I think the earthiness is what I object to
And I could maaaaybe pretend it's not awful if it was one berry, but two berries seems like a lot of flavors bouncing around
but consider, twoberry rhymes with blueberry
mace is basically paprika but nutmeg
you just need to be a little open-minded and not taste it while u eat it
Like... mace the self defense spray?
mace is made of mace
hence the name
in the same way pepper spray is made of pepper
actually you know what it's probably not
mace is nutmeg and even though nutmeg has a lethal dose it's probably not nutmeg lol
so... bear spray is made of bears...
Well, you have a cooking mod so I'll take your word for it 
Speaking of cooking mods
atra heel turn to ask when LoC release date
it's probably too late to add a demetriums to pretend i didn't think mace was made of mace isn't it
Steam is apparently having a cooking sale
I will assume this means baozi are half off
Look I don't care haha
Ugh apparently epu broke sometjme
I tried to search baozi on Steam and nothing came up so I don't know what's happening anymore
baozi is IRL food
Atra does not know video games
Well, usually not
Occasionally yes
Or, does atra just like to troll us
But I suspect atra meant real baozi
I kind of want baozi now...
I got some funky ones at the vietnamese store
what else is there to do in retirement
Yes.
Oh, I love these, though I don't think I've ever had any handmade ones lol
They are steamed, see?
They had not just pork and cabbage, but also a chunk of sausage and A WHOLE QUAIL EGG
Get it?
I do, v funny
like it's so disconcerting to eat something with a surprise quail egg
i dont get it, please explain
hiya so I'm attempting to make a marriage schedule for a custom npc but I keep getting the error "NPC 'npcname' failed to parse master schedule 'marriage_summer_21' with raw data '1340 Beach 42 24 2/1900 bed/2200 npcname_sleep'. IndexOutOfRangeException: Index was outside the bounds of the array. at StardewValley.NPC.parseMasterScheduleImpl(String scheduleKey, String rawData, List'1 visited) in D:\GitlabRunner\builds\Gq5qA5P4\2\ConcernedApe\stardewvalley\Farmer\Farmer\NPC.cs.line 6217". Curiously this error only happens when I put "marriage_" at the start of the schedule day, does anyone know what this means? Thank you!
It's called bรกnh bao, and it's awesome
Unfortunately the error is a bit nonspecific
discord formatting strikes again
but it means your schedule is wrong
They're filled with Steam gift cards /j
I am not personally very familiar with schedules
index out of range makes me think an argument to smth is missing but i also dunno schedules
The sleep one needs a location perhsaps
the wiki is saying things like 2200 SeedShop 1 9 3 abigail_sleep
which is different
You have already sent the npc home with bed
If you set bed, you don't need npc_sleep
You do not need to add the sleep command
It's automatically included
sounds like try deleting the last command then
<time> bed tells the NPC to navigate to their bed and run the sleep animation
(Unless it is a spouse)
https://stardewvalleywiki.com/Modding:Schedule_data for reference this is the wiki page on schedules
In which case they just return to the farmhouse
No, even if they're a spouse, then 'their bed' is the farmhouse bed. ๐
And sleep at their normal time
Normalize sending NPC's to the bed spot and playing an animation of their eyes closed, so I can give them gifts when they're supposed to be asleep
It forces sleep?
Yes, it forces sleep
is there actually anything ingame that tells the player they can interact with a Calendar in the house?
Huh
Like a tutorial?
i can't give my custom thingo a description
all paintings just say This furniture cannot be placed outside
Isn't there a calendar sold at Robin's?
maybe the item description itself?
Yep
oh
I buy a calendar from Robin in every playthrough. xD
you can use spacecore to add a description
Does it have a description when you're buying it?
although this may break your no dependencies goal
no 
I've added spacecore optional dependency to my bonsais so they can have a description if users have spacecore
Lmao
For some reason furntirue is just whack and doesn't have any info
send a letter explaining it after purchase, i guess 
That is wack
Fun fact: With the way CP works, you don't need an optional dependency on a mod if you're editing the assets it provides
This reminds me of when I learned that wallpapers and flooring don't have their own names
oh yeah they're all just Wallpaper lol
oh? interesting....
I mean an optional dependency doesn't hurt...
Also if your mod is content patcher then you technically have it as a dependency... ๐
(And for a C# mod? Well, there's SMAPI)
(There is no escaping dependencies)
Blueb is doing C# p sure right???
cp+cs
Ahh
Ah, I missed it was blueberry because of color changes
blueb-now-redb
Raspberry
Remember when blueberry's discord ID said rhubarb? Pepperridge Farm remembers
Or cranberry
redbs doesn't sound so good
Can't decide.
but I know blueb CAN do C# and has mentioned dependencies are hisss
Cranberry
I remember rhubarb
Does that make me old?
Bluebs is already using spacecore
redbs sounds like a database service
Ancient like the sun
Back in the days of usernames with a discriminator at the end
Maybe it's boba time
I like to say I'm old as the hills
i don't like to say that
I was around here before either of you, what does that make me 
Bluebs here to tell us it's less funny when you're actually old?
A beloved fixture of the community, a monument to what came before. 
i'll probably just explain it via dialogue when you receive the furniture
if nothing in the game has a description anyway then no point bucking the trend
At least on the internet I can more convincingly pretend I'm old
It works much worse in person when people see my face
Nah
bizarre that calendars are unexplained sittable paintings
I was mistaken for a freshman, the horrors
Instead, do an audio description
Maybe it's one of those artisanal calendars (re: paintings)
sittable?????
painting I can get behind
but sittable?????
.
also don't think you need optional dependency if its HasMod guarded.
dependencies for cp mods is really only needed for other cp content packs to do relative ordering.
Yeah, I think you're right
that is weird
anyone's welcome to make the sittable cactus transpiler, i'll be collecting royalties
Idk I feel like users know what the phrase "optional dependency" means (the ones that can read)
Smh, blueberry thinks just because something implements ISittable means it can be sat on
In practice I forget what I did on the technical side I just know it works
Ah, well you see, that last parenthetical statement is the tricky part
dependencies in the manifest control load order (but content packs are in their own sorted pool and loaded by their parent mod)
regular dependencies dont get on the lists if required dependency is missing
both dependencies and optional dependencies dont get on the list if their version constraints aren't met
So if you don't need to control load order, and you have runtime guards if its missing or bad version, optional dependency isn't needed
Atra is making me want boba
Boba and bao
Reminds me of the old plan to do optional contentpackfor
Dear i18n I hate you right now. I'm gonna go nap and hope you decide to play nice later.
It won't.
i18n always does exactly what you tell it to โ๏ธ
you're just getting lost in translation 
"no translation ESVGP.WizardLetterStart" but guess what i18n? That key is there exactly that way in both the mail patch and the default file...
And of course once again no errors to the log so I can't even go there for help.
you can post your jsons
well you could always post your files here for us to look-over
well, theres the problem, your i18n doesnt have those keys
your i18n has the key {{i18n:ESVGP.WizardLetterStart}} not ESVGP.WizardLetterStart
and beyond that, you cant use tokens like that in i18n files
Can you put commands in the i18n?
the i18n token will load a keuy from i18n json with whatever key is after the i18n:
you can put whatever you want in the i18n
Like will mail commands work from it though
ideally you dont bc translators might mess it up but the token in the content.json just gets replaced with the text anyway
Probably they shouldn't be in there regardless so they don't get translated
It's always something stupid with me. I was ignoring the curly braces in my default going "yes it does exist"
from the games perspective a token is never seen
its just resolved as text
its not just the curly braces
poor i18n, so unjustly accused of not working
you need to remove the i18n from the keys in default.json too
so.. anyone wants to dabble in some Event stuff with me... I have a conundrum I need to figure out :3
Unless you do something dumb like try to use tokens directly in Tiled 
Yeah working on that now. My brain is clearly out to space today.
Monitor.Log($"Current Event: {Game1.CurrentEvent.id}", LogLevel.Debug);``` This is spamming the console.. I need to figure a way to make it only show once per event
where is the monitor log?
if its spamming the console it means you must be calling it repeatedly, is it on an UpdateTicked event or something
OnEventStarted
private void OnEventStarted(Event @event)
{
Monitor.Log($"Current Event: {Game1.CurrentEvent.id}", LogLevel.Debug);
LastPlayed = Game1.CurrentEvent.id;
if (ShowEventIDs)
{
Game1.addHUDMessage(new HUDMessage($"Current Event: {Game1.CurrentEvent.id}!"));
}
Game1.CurrentEvent.eventCommands = this.ExtractCommands(Game1.CurrentEvent.eventCommands, new[] { "forgetEvent", "forgetMail", "forgetResponse", "timeAdvance" }, out ISet<string> extractedCommands);
foreach (string command in extractedCommands)
{
// extract command name + raw ID
string commandName, rawId;
{
string[] parts = command.Split(' ');
commandName = parts[0];
if (parts.Length != 2) // command name + ID
{
this.Monitor.Log($"The {commandName} command requires one argument (event command: {command}).", LogLevel.Warn);
continue;
}
rawId = parts[1];
}
// handle command
switch (commandName)
{
case "forgetEvent":
Game1.player.eventsSeen.Remove(rawId);
break;
case "forgetMail":
Game1.player.mailReceived.Remove(rawId);
break;
case "forgetResponse":
Game1.player.dialogueQuestionsAnswered.Remove(rawId);
break;
case "timeAdvance":
if (int.TryParse(rawId, out int hours))
{
int newTime = Utility.ModifyTime(Game1.timeOfDay, hours * 60);
if (newTime < 2600)
{
Game1.timeOfDay = newTime;
}
else
this.Monitor.Log($"Cannot advance time! {hours} would put the time to {newTime}! Command ignored!", LogLevel.Error);
}
else
this.Monitor.Log($"Time advancement failed: invalid number '{rawId}'.", LogLevel.Warn);
break;
default:
this.Monitor.Log($"Unrecognized command name '{commandName}'.", LogLevel.Warn);
break;
}
}
}
it does more than monitor the event id
it also handles my custom event code
where are you calling this function from
what is call-
<.< what you mean
OnEventStarted is your own code and not a vanilla thing or a SMAPI thing, it doesnt just magically run without something calling it
what makes an event call that function when it starts
ah.. it's checked on OnUpdateTicked
is this for Event Repeater?
yeah
yeah thatll do it
it's a hiccup i didn't notice
I was thinking about a bool to just silence it.. but I am not in the mind to think of how to untick the bool after the event ends
also wouldn't all of that logic immediately run, not when the commands are meant to happen, as events have control flow to skip sections or short circuit early
This whole thing running in Update is giving me the willies lmao
yeah.. i don't remember it doing that.. so it's a recompile issue i suppose
Yay. Got the translation thing fixed. Now to fix the issues with the quests...
you got any input?
for what
oh... nvm 
if you are just trying to add commands, just use Events.RegisterCommand(string name, EventCommandDelegate action)
<.< not the lane
all that is figured out
all i wanted to do is stop the Current Event: <ID> spam in the console
(also timeAdvance command wont behave well in multiplayer)
no one really messes with it
especially because of CP intergration
alright.. i fixed it
I just added a bool in the code
if Game1.currentEvent is null (thus, no running event) then set to false If an event is running do the thing then set it to true so it doesn't repeat the action
Hahahaha. Something went awry with my rewards. But good news is that everything to this point in the mod is now working.
I think I just need to put a # between my portrait command and my action command.
seems like you forgot a #
Jinx lol
interesting thought: Can you extract the dialogue ID when interacting with a NPC.. Like you talk to it and the console says "Mon4"
Hmmm...I fixed that so it's "Thank you, @. Now I can finish this item the Witch taught me to make.$1#$action AddFriendshipPoints Wizard 50 #$action AddItem (O)808 1" But it still showed the gold coin icon, and the text for adding friendship points. And didn't add the item that I checked.
And it didn't use her happy portrait.
Dialogue objects do store a TranslationKey field
hmm.. i wonder if this could have utility tho
did you do a patch reload?
No. I closed the game when I got the issue the first time, fixed the json, copied the fixed version to my mods folder, and went back in to the game.
i would double check you actually saved/the file copied over correctly then but beyond that im not familiar enough with dialogue to be able to spot something wrong there if there is anything
when is the dialogue triggered?
It's the reaction dialogue when I give the quest item to Leah on the third quest in the quest line. Give her a gold bar, get the dialogue and the dialogue window is showing the first action string and not using her portrait I wanted used. (Unless her neutral and happy are the same. I haven't checked that in a hot minute.)
So it triggers from the last entry in the slash delimited string for the quest which uses an i18n key and the actions are in the default json alongside the dialogue. Should they perhaps be in the quest string instead?
The quest string only allows for no reward or gold not items and friendship points which is why I was trying to use the dialogue commands to trigger the friendship points with the wizard and the item (void ghost pendant). For some reason the second action command isn't displaying in the dialogue. Which is as it should be but I didn't check if I got the item.
from a technical standpoint there is no difference between you putting your i18n in default.json and loading it with a token there and you just putting the dialogue directly in the quest data
from a technical, from-the-games-pov standpoint i should say
that said
Maybe I'll test it without an i18n key to see if it's truly formatting or if the quest doesn't like using actions in the reaction dialogue.
did you already have this quest?
because once a quest is added to your log, its saved as is
I triggered it afresh by completing the two quests that precede it.
i'd like to say the initial dialogue emote portrait on quest item received is forced
but i mean, did you delete that quest and get it again after making your changes?
but i'm not sure
The only quest in the line that was triggered so far in this file was the first one. I completed it to trigger the second one and then completed that one to trigger the third. I wouldn't have had the quest flag in the file but I can try again on a fresh save.
Has anyone ever tried to look into why asset loading is so slow and janky? Is it the file I/O itself, texture decoding, or texture upload to the GPU?
I know MonoGame is really aggressively single-threaded but wondering if in some cases it's possible to do some of the work async beforehand and pass the partially-finished result into MonoGame.
I didn't know asset loading was slow and janky lmao
Can't say I'm super optimistic, but I'm annoyed that in trying to optimize a 200ms frame, almost 100 of that is just asset loading.
he didn't know 


