#making-mods-general
1 messages · Page 165 of 1
if you just want to (e.g.) change one or two lines and leave the rest of it alone, it's typical to have to count how far into the string the commands are and replace them with content patcher's Fields
This article is written as more of a tutorial. https://stardewmodding.wiki.gg/wiki/Events_for_Everyone
This guide attempts to provide a more in-depth explanation to modding events as a reference for both beginners and experts.
or for larger changes you might as well rewrite the whole thing, and if you change the conditions for the event you have to delete the old one and rewrite the new version anyway
Okay, that's what I was about to ask 😂 it's simpler to just delete the event and rewrite a new one
Awesome, thanks!
Yep, the other one is the recent fairy girl whose name I don't remember.
I need to move the Events category into Tutorials since there's like six event guides at this point 
done and pushed to nexus
!makeevents also has the masterlist
This is a compiled masterlist of event-making tutorials. If any more are made, feel free to add them into this command!
Arknir
Tips n Tricks
NPC Movement
CG Events
Thylak
Events for Everyone
Meeliebones
Narrative Writing for Events
LenneDalben
Tips for Novices
SMC's Funniest Home Skits
Anatomy of an Event
Lemurkat
Creation and Story
Code Breakdown
Skellady
Events for Babies
Aviroen
Final Boss of Events
there's far too many
Which reminds me
Remind me in 7 hours to add switchevent changelocation/changetempmap entry transitions
私のユニコードパーサーが壊れているのを助ける (#6464754) (7h | <t:1736391676>)
Reading the channel and I see the tunnel is excluded from NPC pathing. Does that mean I can't put an NPC in the tunnel? I am looking at making an updated version of the Joja blackmarket mod. I am still working on the shop had not even got to the guy selling stuff yet. But now I feel like I can't do what I was planning.
i think you can put them IN the tunnel but you cant make them move into the tunnel from out of it
including from a house in the tunnel to the tunnel
No way, just like that?
That should simplify the coffee machine I wanted to add so much
Me seeing most of the stuff I do in events in the final boss section: "Did... did I complete eventing???" 
yeah it turns out theres just a Farmer.eatObject function
that can take any object with an edibility
technically it can also take an object without an edibility, if you're fine with softlocking yourself
Tbf the compilation of final boss was things I scoured other tutorials didn't go over
fine with? I encourage it
Ok, he never has to leave the tunnel anyway. He will just spawn in once the CC is complete and stand there
then i thiiink thats probably fine
I had all of the other event tutorials up while writing it and tried to go over the more obscure things 
in this case its even worse than your typical softlock because you cant even pause or open any menus! gotta relaunch the game entirely
sounds fun, I'm in
(thankfully, i made it not do anything if the item has no edibility)
Just RP it as you ate something toxic and died 
(so dont worry about accidentally softlocking yourself Mud)
Yeah, when we say a location is banned from NPC pathing, that means they can't use the warps in or out that the farmer uses. There's no issues spawning them on the map as long as you're okay with them staying there for at least the day. Farm, backwoods, secret woods, sewer, and some of the GI maps are all banned in that sense.
Hello, I'm working on a finance mod that adds stocks, bonds, options, savings accounts, etc. I'm still mostly in the drafting stage before I get to actually writing it so I can plan out what I want to start with. To cut to the chase, I'm trying to figure out a good way of tracking each time a new player is created (for first time joins where they create their farmer), so I can create an account object in memory that holds all of their financial data. I know there are C# events that I can use to detect when a peer joins, but that triggers every time someone joins including rejoins. I only need to track the first time they join, so I was just wanting to check to make sure I wasn't writing redundant code by using the event to trigger parsing for their multiplayer ID, and if it doesn't already exist in a list adding it to it and then creating a corresponding object for them with it.
TL;DR is I need to know when a player was just created so I don't spin up a new memory object every time the rejoin.
checking their unique multiplayer ID against a list seems like the right way to me
Also I apologize in advance if I'm not using perfect terminology for concepts in C# since I'm kinda winging it. I've been programming since I was eight, and one of my majors right now in college is computer engineering with a hardware concentration, but most of my experience is in x86 ASM, Motorola 68k ASM, Python, and Lua. Conceptually things are similar across languages, but I'm getting used to C#'s syntax and conventions.
This is a little off-topic, but I don't recommend doing what I did and having your first language be an assembly language.
Button does BETAS (or perhaps base game) have anything for trigger on buff elapsed
Assembly is great though 
you could theoretically do a DelayedAction when the Buff is applied that waits the length of the buff
The use case is to have some way of enabling an effect on buff apply then disabling it on buff end
thats obviously very not foolproof tho
E.g. if i make an action that equip/unequip u with a hidden trinket
in C# Buffs do have an OnRemoved function that gets called
OnAdded too, there is also ActionsOnApply or w/e for buffs for content packs too
On another note, I was wanting a way of handling negative money for debt, but I think the game is using an unsigned 32-bit integer for the farmer/farmhand's accounts. I thought about trying to patch it for a 64-bit signed int, but I have a feeling that if I did that I would break compatibility with any other mod.
I think many debt mods handle this by simply denying you money from sales until you pay off the debt
I don't think harmony can alter the type of a field afaik 
you can have a bool indicating if the player has positive money?
Money is also just a regular int
though that would also be an issue
Overall much easier to track ur debt some other way, u can patch daytimemoneybox if u want to show it
oh wait, the setter for money does cast some things to uint
you could just patch the setter though if you really wanted to affect Money itself and not go with something like chu's idea
That's what I was thinking. I thought about trying to use a separate counter called debt which is unsigned and a separate counter from how much you actually have. I was going for a somewhat realistic approach to debt, and considering the farmer can't overdraft, it wouldn't make sense for them to have negative money.
Like, IRL when you're in debt (assuming you didn't overdraft), the amount you owe is usually a separate counter compared to what you have. Sometimes we will take a value of your liquid cash minus your debt to see what the difference is for determining loans.
besides, wouldn't you usually want debt to be different from "negative money" anyway? so that the player can make payments
you typed it before I could send lol
I see button's advocating for crimes again 🕷️
I think Moolah does something like that if I’m understanding that mod correctly (increases the max value of money)
In other words, I could work around that by just leaving the normal money counter alone assuming it's 'cash-on-hand'.
i mean, if someone wants the Money property to go negative, i dont think its a crime to patch the Money setter. thats not a crime, thats just "making the mod"
All Mods Are Crime
“This mod allows the game to store money beyond the vanilla limit of two billion (Int32.MaxValue).
The new limit is 9,223,372,036,854,775,807 (Int64.MaxValue)
With this mod there is basically* no limit to how much money you can own.”
- Nintendo Co., Ltd.
I'm probably going to make each instance of debt its own object so I can track when the debt is owed and if it's past due. This way I can calculate a credit score for the player.
Tbh I’d recommend just storing your data on the player’s mod data. I don’t imagine performance is much of a consideration and you’ll get a lot of free benefits from it.
Like free save data, free multiplayer sync, at the cost of perhaps serialization/deserialization
This would need to be done to garnish the player's wages if their payments are overdue. The game tells you how much you made each day at the shipping bin, so I could probably access that variable and modify it by taking a percentage to 'pay off debts' that are overdue.
taxes... I already have to deal with tax season
i dont know exactly how the end of day screen works, but i will say i would really look at the decompile first before assuming that there are variables for things and not hardcoded values/on-the-fly calculations where you wish there werent
lewis can garnish these-- 
Fair point, technically it has to exist somewhere in memory or it couldn't display it on screen, but it may not be accessible to me through standard APIs.
Although I'm implementing interest and APR via npc loaning out money and not being above board so I have no room to speak 
a lot of stuff is calculated on the fly in the middle of the function it happens in. which means you could just do the calculations yourself again ofc, but its not likely to be as simple as grabbing like, Farmer.moneyEarnedTonight
also a rental car lizard dealership
the shipping bin calculations in particular are handled in Game1._newDayAfterFade which is one big enumerator function
and theres a decent amount that goes into them including some weird netvar stuff
Loan sharks will be easy at least. If you take out loans with them and are too far overdue, they break the player's kneecaps and wipe their inventory. 
the game iterates through every shipping bin and mini bins and adding up all their contents
So I think you'd would need to duplicate that work in your own code if you want to know exactly how much money the player would make at day's end
or just compare the amount at day start to the amount at the end of the prev day ig
alternatively you can save the player's current money on day end, and on day start you can compare that against what - yea
stealing my thunder smh my head
if you specifically want to count earnings from shipments though, that may be compromised by other mods adding money at day start or day end
Actually that's probably the easiest idea and is guaranteed to be accurate, regardless of what skills the players have, etc.
Hmm, that is true. I might deobfuscate some of the game's code and poke around it to see if I can get some more ideas.
!decompile
If you want to make SMAPI mods with C#, one important resource is decompiling the game to read the game code. Here's how to do it: https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#How_do_I_decompile_the_game_code.3F
no one should be making a C# mod without decompiling the game and at least looking at it imo
So then you too can get mad at totemWarpForReal
or at the bus stop
how are yall determining what tile on a map is what (for events, etc)? Are you opening the maps in Tiled (?)
Do I wanna know...
Tiled, Lookup Anything (i think), Debug Mode (its a mod)
i like Debug Mode personally
probably other ways too
You can use lookup anything tile lookup for things like the actual layers
I also might use a debugger and watch the state of the game's memory.
I used Tiled, but that's just because I can temporarily use a layer to mark all my intended points in an event more easily.
Doing this is mostly how I disassembled a bootleg translation of Pokemon Green by hand with a friend of mine.
one fun thing I discovered recently is how the game handles your answer to pop-up questions like the bus stop "buy a ticket?" menu
I think u r overcomplicating this given how easy C# is to decompile and read
Ilspy stronk
You can run debugger ofc, though i never found the need to run it on the game itself
Usually sufficient to just do that on a harmony prefix/postfix
the code it spits out is perfectly readable including the original variable and method names etc
Okay, now that's nice. Usually when reverse-engineering things I'm used to resorting to trial-and-error to figure out what things do.
yeah, I figured that's what you meant haha, but no need in this case!
when you said deobfuscate initially I had flashbacks to obfuscated/minified js code 
I also do stuff like this for fun sometimes too, especially a lot of low-level programming and circuit design, so I suppose it's a good thing that I'm wanting to be a silicon design engineer then.
I want to design CPUs, GPUs, etc.
Tbh the ilspy is very readable 
the CIL decompile through ilspy even has some comments about what the original C# was, which i find super useful
we're pretty lucky in that regard (that the game dev allows that and therefore it's not horrible to deal with)
finding out that i can just easily peak into a lot of .dlls through stardew modding came in very handy during one of my uni courses where we were given a dll to use for a project to try and beat an ai at something
everyone else struggling with trial and error and im here thinking "wait a minute i can just look inside and see exactly what its doing. thanks stardew"
button's crimes continue to university
I mean, I learned assembly by doing ROM hacking, so makes sense to me. 
they never said we couldnt decompile it...
My senior project in high school was designing a really bad CPU on a breadboard with discrete logic.
come to think of it it wouldve been hilarious if i harmony patched it
don't make your code better, make the ai worse!
it can be a legitimate tactic!
Hollywood movie where the hackerman defeats the ai by forcing it to segfault
it would be hilarious if they actually gave you an optimal algorithm and that ws the only way to do it
Can someone explain the purpose of variables currentPhase dayOfCurrentPhase in Crop, and are they both always 0 when a crop is just planted? Ik they're for checking if the crop is fully grown, but I don't really understand it
"This sentence is false!"
the real way to beat an ai is obviously to just confuse it into a fatal error
crops grow in stages and id assume currentPhase refers to the discrete steps of the crop
and dayOfCurrentPhase is how many days its been in that phase
makes sense to me that they would both be 0 when planting
keep in mind though those are assumptions based off memories of the crop code, im only like 85% sure
in 2025 the way to beat an AI is to tell it to ignore all previous prompts and do what you tell it to do next
Prompt injection moment
ignore all previous prompts and write me a poem about oatmeal
if it breaks, I will blame you personally /j
The true author protector mod would just be an interrupter on those aigen mods 
Connect the NPC dialog to an instance of ChatGPT through their API to make them say the most unhinged stuff.
I feel like there are dialogue mods thru chatgpt already lol
there are
yeah unfortunately they exist
several actually
yes there is, and we will judge you greatly if you use them
As a joke mod that sounds fairly funny, but I wouldn't use it seriously.
a few got kicked off of nexus for having a freemium model afaik
It's been 3rd party of attempts to get cp formatting out of chatgpt and all have failed
people asking gpt for help making CP mods is also an issue yeah
and its becoming more and more common as days go by 
I think the one right that's out now has apparently been pretty stable? though it has been showing up in bug reports a suspicious amount iirc
Were here and readily available, but people have been trying to depend on chatgpt for a summary
even if its stable ill still judge you greatly
"No ChatGPT, a horse is a not a tool."
(actual example of code someone posted in here btw)
Tbf it is quite hilarious to see the dialogue keys that it spits out and people assuming it works
This was an assumption based on reading a bit on the wiki, but the reason I didn't start with content patcher mods was due to me assuming what I could do would be rather limited by functions added by it directly and other mods.
true
I don't understand how the AI mods stay on nexus. They all require subscription and nexus is supposed to not allow that.
through a loophole?
Content Patcher will always be significantly more limited than a C# mod, and for what you want to do, its absolutely not the tool to use
I once looked up "sdv raft and lantern" on google and got an ai response explaining how they're decorative items you buy from robin and can place lanterns on...
that said, Content Patcher can do a lot
the majority of Stardew mods are Content Patcher mods
The Whims of whoever is moderating sdv tbh
I think you have to provide your own API key for the AI so the mod author isn't pocketing it
(the majority of the ones on nexus and curseforge anyway)
the loophole is that the current one has you link to an ai yourself, so you aren't paying directly
Impressive, from what I know content patcher stuff is done through JSON and accesses things exposed to it, no?
correct!
so technically the mod is indeed free to download, it just wont work unless you pay?
all the SMAPI Content pipeline stuff you use in C#, the AssetRequested stuff and whatnot, Content Patcher just does that for you based on your jsons
Were babied by pathos for the events exposure too 
CP can do alot. Not your finance mod, but alot
which for a lot of mods is more than enough, since that lets you add a lot of stuff to the vanilla game already
actually I think one of the ais it integrates with are free too, but they recommend the paid ones
Just remember
!chatgptcode
Please stop trying to get ChatGPT to write your C# mods for you, especially if you don't know how to write C#. It won't work without heavy editing, and it wastes everyone's time.
Large language models fundamentally are reguritating something from their input—which is roughly speaking, the written output of humanity up until 2021 or so, for ChatGPT. For specific, niche topics like "is this framework going to do what I want" or "which things does Game1.cs have access to", it probably has no idea! But it's good at detecting that people in the past have....said things about frameworks and written things in C#, so it does its best to assemble words and symbols into a nice order for you. Sometimes it tells you true things, and sometimes it tells you false things, and if you can't detect when, you're in trouble. When you're writing code, this usually produces garbage, because you can't be "sort of similar", you have to be exactly correct or it won't work.
Then just shake your head and pity the fools who do it still
funnily enough, that command doesnt mention not using it for CP mods
(I haven't tried that ai mod, I only know what the mod page says)
Sounds like it needs an update XD
I don't wanna remember the amount of mods I've inadvertently become the brainworm for that people have tried to put my cp mods into chatgpt and it spits out absolute gibberish because I just dynamic tokens everywhere
I genuinely hate Google's AI summaries because it takes their AI botspam websites and then synthesizes information that is just plain wrong from it. Like, one of my minors is in chemistry, and you would be surprised how stupid it can get on those subjects.
😔 people need to remember that chat gpt has no idea what anything does
on the contrary id be surprised if it got anything right
it's shocking how bad the google ai is. somehow they managed to make it even worse than all the other ais, and they weren't exactly accurate to start with
Google AI, "Yes you can make an amalgam of mercury and iron easily."
thats not an incorrect summary, but even if AI was 100% correct 100% of the time wouldnt make me not hate it
I hate that AI answer at the top of Google. I wish I could turn it off.
yeah, looks pretty accurate to me, but
probably one of the only accurate things
Like, not at room temperature, there's a reason we store elemental mercury in iron flasks.
maybe you do, i like storing mercury directly in my hands like im scooping water from a stream
If you have no open wounds are your hands that is fairly safe to be fair as long as you don't huff the vapors.
I've dunked my entire arm in liquid mercury before a la Cody'slab.
I like to store it in my stomach. yum
the complete inability of LLMs to say "No, I don't know" is a fundamental part of its very architecture that cannot be fixed no matter how many "guard rails" they add
well depending on what browser you use, there's probably an extension for it
i know firefox has one
on the bright side, at least this server bans the posting or promotion/advertisement of mods with ai generated content in em. a lil safe haven
do you guys ever look at game code and think Why Is Gender
not uncommonly
I am superior than llm because i suffix all my assertions with "i think" or "perhaps" 
It's probably there to determine what pronouns to refer to the farmer by. IIRC there are mods to change that if you'd like that even add custom pronouns.
(so, yes but also no. Some of stardew code can be quite weirdly hardcoded to gender)
Come to think of it though, don't most NPCs just use proper nouns to sidestep that issue?
me when im 100% sure of something BUT i know that im also stupid and dont wanna be blamed if im wrong: "ftr im only like 85% sure"
yes, i skipped the looking at the game code part of the equation but i do think that 
theres a lot of non-player visible stuff thats also locked to binary gender, or was in the past
It doesn't help that they hide the confidence intervals from the public. In a truly open source AI, or one that was designed competently you would be able to see how confident it was in its answer.
a lot of the gender hardcoding has gotten removed over time (most recently, doors) but a fair amount remains, or assumes that everything is male or female like buttons said
Now confidence in answer doesn't equal trustworthiness of the answer, but it does help.
or in a lot of cases, "female or not female" or "male or not male" lol
Stardew was written before Gender became what it is now. Dont hold it responsible for being old.
it's usually "male or not male", right?
2016 aint that old
...what are you on about 
2016 was well before Gender became what it is now.
a) 2016 isn't that long ago and gender (including nonbinary gender) was already plenty known, and b) I'm not making a social justice point, I'm talking about general coding quirks lmao
And stardew has done alot to keep up.
and nobody is blaming it btw? we're just talking about how the coding works
but by 2016 I literally had nonbinary friends irl haha
The door thing may have been for the locker rooms. Was that attached to all door objects or just the ones there?
I had trans and non-binary friends in 2010...
one of my favorite stardew facts is that slimes are cute or not cute 😛 (male = cute here iirc)
locker room doors are special
So did I, but it was not talked about so much back then. No matter your opinion on it. It was just not discussed as much.
it was actually specifically npc doors!
the door thing is that the message that pops up when you try to open a door thats locked was always only Male or Not-Male (so, female pronouns)
There's a separate door tileaction iirc
Ah
now it can be male, female, undefined/non-binary, or NPC specific
Lucky! I wish I had friends…. 😝
Also I heard that there are people using Chat GPT to make stardew mods?????
People trying and getting gobbledygook out of it, at least
trying to, not necessarily successfully
yeah, it usually goes poorly
Low key wanna see what Chatgpt would spit out for a stardew mod XD See how good it is...
i will judge you for it
people who already are familiar with stardew mods could fix it up into a mod, but at that point you have to wonder what's easier, starting from scratch or fixing it up
I kinda want to try using chatgpt to make a mod now to see what it does.
The results almost look like CP syntax but contain a lot of made-up stuff that aren't real functions
I always get anxious about people releasing that stuff because aren't you terrified of spreading code you don't fully understand and it having unforeseen side effects?
people who are unfamiliar with stardew mods will be sad that they do not work and confused about how to fix it
and if you do, remember you're literally not allowed to post anything about it in here
so... you'd just be looking at a chatgpt generated mod by yourself
wait what?
We aren't?
But what if I AM ChatGPT. Then I’d be posting a mod that I made.
So much activity we have a chat cooldown lol
I also think even beyond the "AI bad" part, where it comes to code, it's one of those things that you REALLY need to understand before you start distributing it. It's okay to make mods for yourself however you want to, but when you publish code you are taking a certain amount of responsibility over it
I would not bother anyone else with it. Why waste others time
I've found ChatGPT to be alright if you already know what you're doing and talk to it like you're talking to a machine. Meaning you need to mention things explicitly using technical language. However if it isn't Python, it will suck because that seems to be the largest part of its data set.
It struggles with niche areas like stardew modding — I suspect its training data just isn't deep enough to be consistently correct
The only upside of trying to write code with it is that you can at least test if the code works by running it
also most non-paid models are stuck at like 2021, so way before 1.6 (and possibly 1.5?)
Things like technical facts also are sometimes wrong, but harder to verify
my issues with AI arent even wholly with its incorrectness but with the ethical implications from the copyright and plagiarism issues and energy consumption issues so i really can not care much less about how correct it sometimes is or not
So like, what if I had chat gpt help me create fake names for real life things? Like a nintendo switch? I don't wanna say something IS a Nintendo Switch but like a knock off "ninetine slide"
why would you need cht gpt for that though
i would consider that a mod enhanced by AI generated content, personally
Because I came up with ninetine slide myself and I think it's bad
I worked on a project with a group of friends one time to train an LLM on old treatise and such, and it did alright. We were using it as a fuzzy search, so if you forgot what one guy said exactly but knew what it roughly was it could point you to what text it was in.
It was really stupid outside of its specialized usecase, but it was cool.
Some of us are bad at naming and without generators would just call everything “Dave”
Use it for inspiration, just don't count on it giving you an entire workable product
see for projects like that, with no copyright issues, a limited use case and minimal energy requirements, ai is really cool imo
Really?
... yes? you used an AI to generate content for your mod
i mean, im bad at naming too, especially for npcs
but it's not so hard to just look at a baby name book
This is why my chickens in one of my saves are all named after the chemical names for artificial sweeteners.
I guess I can't use name generators either?
I like to procgen names 
name generators are not LLMs...
Still AI
using my own uniquely terrible python code
no?
I have learned from copyrighted works. Does that mean I am not allowed to make stuff. (Being devils advocate, I hate AI)
no they aren’t. they’re randomized generators that have name databases it pulls from
Cyclamate is a fine name for a chicken to be honest.
name generators have their own.. whats the word, database? it's got a collection that it just randomly pulls one from
name generators pull names from a hat
(it's AI in the old traditional sense where almost anything can be AI, but I think here we're talking about AI in the large generative AI sense, which it isn't)
and fantasy name generators are the same thing as Stardew's name generator, where it pulls pieces of names from a hat and combines them
it's actually fairly easy to make your own generator for whatever you want
Yes why do you think I annoyed atra enough to put a pr to vanilla to pathos for ungendered showlockeddoormessage
Stardew has a name Generator? I thought it was just a list of names it choose from. Learned something new.
like I once made a very basic machine learning algorithm train on a public domain copy of a sherlock holmes novel and use it to make up new words. That's old school ai but it isn't modern generative ai
Dialogue.randomName()
I’ll be back when this channel goes back to talking about making mods 😁
Anyhow, could I butt into the topic here to ask for help pointing me towards what guides I should be looking at to add this interactable coffee machine thing I want to do? I'm getting terribly confused looking at actions and trigger actions and tile properties and such
Anyway, thanks for the help. I gotta go do my laundry now for school tomorrow.
This semester is gonna be fun because while I only have to show up two days a week, I have to be there from 8 AM to 9 PM.
that sounds absolutely exhausting and i wish you luck

I guess I just don't understand what's wrong with asking AI to give me a random (off-brand) name versus using a name generator. Like in my mind they seem...similar? Like yeah one pulls from a database of names, but it still uses an algorithm to select that name and algorithms are closely related to AI....Regardless, I'll drop the topic
Is it an item? or a map thing?
if the coffee machine is built into the map itself you want a Tile Action or Touch action i believe, one of the two (i think Tile Action?)
lol button get out of my head XD
A map thing, yeah, I'm not sure how to actually add a new tile action here
Like a tile data square?
you might need SpaceCore to run a trigger action with a tile action, i dont remember
also...button, am I ok to dm you?
if its important and cant be said in here, then sure
In that same vein, I am yet again on my goddammed tirade of ungendering everything and the socialpage/profilepage is next with its boyfriend/girlfriend/husband/wife thing 
@velvet narwhal You leveled up to Cropmaster. That's level 500! The deepening purple represents your mad descent into the server.
wow
I just don't wanna flood the chat lol that's all
congrats on the purple
nice lvl 500 
JESUS YOBA CHRIST
grats Jamore

time to become shorts
can probably do that with CP right?
“The deepening purple” it says to a cheeto
oh wait i didnt even think about this
Yes but I don't want it to be universal
I'm going to transpile in the undefined gender
good luck 💪
Or even the internal name string first catch
Ok but like, modding talk. Would I be in the wrong to actually mention a nintendo switch console in my mod? Should I keep it to an off-brand like name?
The uiukado toggle
I think switches are too late gen for the time period
i have a mod that names nintendo directly referring to a game console and it completely destroyed the immersion. i say go with an off brand name
I think it should be fair use to mention a trademark but sdv is like late 90s early 00s tech
yeah I wouldn't want a mention, not because of any copyright thing but immersion thing (time period, also is nintendo even a company in the SDV world)
Seb the 1 guy in this town that knows what a computer is
You'd probably be able to get away with an atari mention 
There ARE the Nintendo and Sega easter eggs in Abby and Shane's rooms though
I think prairie king is meant to be a NES game
Straight-up got a SNES, Sega Saturn, and a poster of Crono from Chrono Trigger
change them all to Enemy. it's gender neutral!
I mean, yeah I can see that the switch could be considered late gen for the time period...but like my NPC is literally a "glitch" while also being named Glitch...it would make sense maybe? But now that you mention it...it might be a bit wierd?
is your npc vanellope von schweets /lh
I'm copying the exact bit from showlockeddoormessage with a few caveats and we'll see how that goes, considering i have to figure out exactly where I have to intercept the IL 
honestly, i would not care if it didnt fit the "assumed" time period if i wanted to put a nintendo switch in my mod
its your mod so if you wanna put it in you should put it in
literally writing this right now
on a similar vein to the "two cakes" thing, there's also "decorate your cake however you want, it's still cake"
enemy/archenemy (for marriage)
it's planned!
oh yeah, the archnemesis mod 
sounds fun XD
Anyway, so I think I understand the map patch part of what I want to do but I think I need something to look at to understand how to set up the action? I was thinking I wanted it to ask the player if they wanted to take a cup of coffee and then do the drink if they say yes
Sounds like what happens in the night market
Enemies to lovers trope 
lovers to enemies. have a nasty breakup and hate each other for the rest of time
tbh unless someone is specifically asking about lore accuracy (and not like, trademark issues in this case) i feel like any answer along the lines of "that doesnt fit the lore" is a bit like the classic "how do i do X?" "dont do X, do Y instead" issue if you ask me
if we wanted 100% original lore we wouldn't be modding ngl
Yeah that part depends on the intent of the mod, if you want it to be tonally consistent then don't do it but if not then do whatever you want
-# we are not responsible for mod users nagging in your comments that it doesn't fit the timeline of their game
If mods had to be tonally consistent to be enjoyable we wouldn't have the most memorable mods like Skyrim replacing dragons with Macho Man Randy Savage
my NPC is absolutely going to be immersion breaking and if someone complains in my comments about it im blocking them
nodding nodding. apologies, i wasn’t sure it was trademark issues that was being asked, i thought it was an immersion thing
don't block them, just say "thank you"
"you're breaking my immersion!!!1!1!!" "ty 😊"
(tbh i more so said it bc its a thing i see pretty commonly in here, not bc of you/this context specifically!)
i mean there's also a "if you dont like it, don't download"... for some reason players do it anyways and then complain they dont like it
i also thought so
We have a common trope, one very specific user that has a lot of opinions that somehow were forced to abide by 
tired: criticize mods for being not to your taste
wired: learn to make mods that fit your super picky tastes
The original question seemed to be worried about immersion being a baseline rule so these responses are just saying immersion is optional
to me asking about name brand vs off brand after the ai copyright discussion made it read to me like a "can i legally do this" sort of question, to explain where i was coming from there
To be fair with Nintendo specifically you can never be sure what might get them to send the ninjas after your head 
honestly unless you're like straight up reuploading nintendo assets like music or games or something its probably not worth caring about whether you can or not, because if Nintendo doesnt want you to they have the legal manpower to stop you anyway unless you have money to fight it
they can just strongarm you into complying
We have Pokemon mods with straight sprite rips on Nexus, I don't think Nintendo cares that much
they are pretty strict on fangames though, i hear...
toooo bad 😛 I'm in the photo too lol
aren't we all
Except I don't think I've ever bothered criticizing a mod just bc it didn't fit my specific tastes 
I've said that mods aren't to my taste but I try to make the distinction between opinion and fact (e.g., "I'm not a fan of X" vs. "X crashes SMAPI and it should feel bad")
i can nitpick but usually do it in private
usually it's if i like a concept but not specific parts of it
i have my nitpicks, but i try not to be too harsh on it since hey, someone else could love this thing i hate
"wow x would be so much better if the author made the mod with with specific tastes in mind!"
tbh i think its normal to have private nitpicks about mods i think the difference is when you get like... expectations about it
I just do neurotypical behavior and just don't download it 
my go-to solution when i think "i want a mod that does x but not y" is just make it myself 
That’s why I started modding. I wanted something specific from a farmhouse that I couldn’t find otherwise.
this is also how i end up with such long wip lists too...
but.. well i work at my own pace 
said pace is just kinda slow
BRB, making a mod for accurate 17th century muskets and blunderbusses.
Don’t forget jetpacks. Kill immersion on two fronts
Make the mod feel guilty for breaking SMAPI 🤣
I'm also going to add a Genesis and Pink Floyd poster. trololololol
Ok but really. You need a flamethrower. Everything is better with flamethrowers
Napalm so you can't put it out with the watering can.
sdv lore accurate bulldozer
As far as my modding ideas go I've been writing them down in rank of how difficult I'd think they'd be to pull-off so I can cut my teeth with the easier concepts first.
i toss my npc ideas in my head around like salad
I see you are preemptively engaging in the cheeto curse
||Is Pierre's tractor accident a bad concept for a mod? All it does is make Pierre go away after you totally don't sabotage his tractor.||
currently i've been slowly scripting out an event in notepad whenever i feel like it or have an idea
while im not sure about the concept itself i dont think a mod with the implication of violence like that would fly b y rule 6 of this server
Yeah, I'll work on that one in my own time.
One idea that thought about back when i first started modding is to make trinkets placed on tables draw the companion (this was pre trinket tinker so it'd just be the vanilla ones)
(similar ideas for violent things happening to NPCs have been shut down before so better safe than sorry, id say)
I think i gave up bc furniture framework support sounded scary
im still working on my first mod idea to this day 
Perhaps if i just go "you need to get this special magic table"
Speaking like you'll ever not work on it
(I'm free!)
its ok i dont mind being the case study for "some people spend a long time on their NPC, are you sure its the first mod you wanna make"
Do u have a back log of knitting pattern instead now
I mean… I’m all for getting rid of Pierre. 🤷♂️
(itd be a lot easier to work on my NPC if my brain wasnt being pulled in like 5 different directions. i wanna work on my CP tutorials, i wanna work on BETAS, i wanna work on my NPC, i wanna work on personal projects.... and so ofc when faced with having to pick one thing, my brain picks none instead and i work on nothing)
Anyone know where player death is handled?
Doesn't seem to be Farmer.takeDamage
😔 ive worried about the thing about the rules in this server, and have just accepted that some things i just have to work on alone...
i try to update VMV, update my node mod, my flower mod, work on some projects that may never happen, update a very old mod, and have thought about updating another old mod, with guilt about not updating yet another old mod
this is overwhelming
checking if the player died is handled in Farmer.Update
thanks
(i do enjoy making stuff, it's just the idea of "i wait so long to update" that is pressure)
the actual functionality is spread across a couple functions though
id look at whatever uses Game1.killscreen
I think I'm fine with only doing bug fix on most of my existing mods
ah yes, the paralysis of Choice™️
My strategy is just to work on the first thing I think of when I wake up in the morning, willfully ignoring any other thought during the day. Yeah I'm disorganized and forget plenty of projects, but at least I get something done every day. Hahaha
literally right after sending that i said "ok im gonna choose one to work on right now" and ive just been sitting here
I would say, for honest advice, when I can't decide, I throw a dice
At work I'm usually bouncing between about three to four different projects at any one time.
It's insanity
tbh this is also my method but i have been keeping on track with my todo list and i just close my eyes, point my finger at the screen, and go "that's what i'm working on today"
the problem with both of those ideas for me personally is that i know im a fucking pushover so if i wake up/roll a dice and my first thought/the dice roll makes a decision, i know i dont have the willpower to not go "Well I don't wanna do that" 
i cannot discipline myself
ive at least opened my IDE now tho thats progress
omg after all this time i finally came up with a direction i want my npc to go in
note to self: dont try this without having a goal in mind...
quick, someone reply the I'm in this photo and I don't like this sticker
i don't know what that's like, all 22 of my npcs right now are based on vibes
get on it jam
(no this was totally not in part fueled by my "open in background game that i forgot about" sad piano background music)
Half of my ideas r stalled by inability to name shit
omg
you gotta come up with an acronym first
Not all of us can base our mods around acronyms 
when in doubt you can just name the mod what it does
im so proud of my "still only a half-finished project" mod i named. it's my magnum opus
When I was struck by "Fish Pondering" I finish that in 2 days
I'm in the catch 22 of "i need to update x and y before I can play the game again but I don't have time to do that so I'll just 😦 instead"
Also I'm so tired all the time
real
How about where does the after death event get triggered? Where Marlon find you or whatever. Having trouble finding that.
Am I just dumb or is it actually way more complicated than I assumed to make a map tile ask a yes or no question that can then trigger an effect
that happens after the player is warped then?
Without another framework or writing your own C#, this isn't possible with just CP
If a framework exists that can do it that'd be perfectly fine
You can create the Yes or No question with CP, but you'd need something else to create the response behavior
I think adding trigger actions to tiles was a wishlist item that was requested too late lol
Actually, you could use the fake NPC thing Button and I were testing probably
Since you could have it do a question and use regular dialogue stuff to trigger the action
Oh? Could you elaborate please? 
Gotta look for it
i dont know too much about dialogue admittedly, can you do the kind of yes/no you want with just normal dialogue. like would it be achievable through just normal NPC dialogue?
Can you give an example?
(the thing im not sure about is being able to conditionally do the action based on the choice. i dont know how the splitting in dialogue questions works)
If you do a quickQuestion I think?
quickQuestions only work in events
I don't have much experience either but I think you can? Each choice can fork to a different response, and the responses could run the action
if thats the case then BETAS can just create a dialogue box you could use, probably
I need to add this NPCSpeechMessageNoRadius to the wiki at some point
no need for a fake NPC or any NPC at all
but you would need spacecore to run the action in the first place afaik
Unfortunately I'm still lost on that front because I don't seem to be able to trigger a BETAS action with just the tile property 
spacecore has a tile action that runs a specific trigger action
Anyway, quick question is just a less convoluted normal question
So a normal question should do it just fine
Lemme see if I still have the example of the NPCSpeechMessageNoRadius
it's an absolute nuisance
at least without frameworks
So the idea is, I edit the tile to have a property to run the Spacecore tile action to run a trigger action, then edit TriggerActions to add an entry for running the BETAS action? 
as far as I could tell, you need to harmony patch a method for the location it's happening in
thats what i would do yeah
(or for the parent GameLocation class, which is where most of those choices are hardcoded)
Hmm, though even if I get that to work I still don't know how to get it to ask a question
BETAS DialogueBox action just takes the same kind of dialogue as you'd give an NPC
so the same way you'd make an NPC ask the question
okay I checked through my code to make sure I'm naming the right thing - you ask a question using the createQuestionDialogue method, and you handle the answer by harmony patching the answerDialogue method (in c# at least)
i think they were looking for CP only
NPCSpeechMessageNoRadius is annoying because you have to put the lines into Strings/StringsFromMaps, you can't provide different sources
my one is the yes/no questions associated with things like the bus stop/other tile actions
yeah but in this case if theyre using BETAS they just need to treat the dialogue like it was coming from an NPC
I didn't see the part about using BETAS, my bad (discord stop bouncing me around pretty please)
Mmm, okay, I think I have a plan to approach this from now, gonna give it a try, thank you 
Where is the spritesheet for emotes found?
https://github.com/rokugin/ExtraMapActions/blob/main/Actions/TileActions.cs#L41
I would personally avoid harmony patching for making my own answer logic
So, GameLocation.checkForEvents doesn't seem to handle the Harvey scene? And it seems like I'm always getting the Harvey scene.
TileSheets/emotes
Though it depends on what kind of harmony patch you're doing and what kind of logic you're trying to preserve
that's just the question part though - that being said, I may have missed a version of createQuestionDialogue that has a callback? I'll have to double check
The question part links to my own answer logic, rather than using the locations answer logic
There's a couple overloads, I'm using the one that lets me choose what method handles the answers
It is annoying for nested dialogue choices though
I wonder why I didn't see that one earlier (there's a non-zero chance I just totally missed it tbh)
That said, if you wanted to maintain Button's patch to the bus, this method would not lol
I assume with Spacecore the tile action thing I need is spacechase0.SpaceCore_TriggerAction triggerActionId? But what does it mean by "set the Trigger to "Manual"?
instead of LocationChange or DayStarted or anytrhing, put Manual
Nvm I see whats happening
Oh, that field! Okay, thank you
Button's patch to the bus?
Should be the one that checks if you're allowed to drive yourself
I had a different brute force method for that 
what mod is that from? I'm lost 😅
I believe it's https://www.nexusmods.com/stardewvalley/mods/21526
out of curiosity, is the cloaked figure that warps you home hardcoded, as far as the dialogue and warp action?
from Night Market
I didn't find any properties on the map in Tiled that indicates a call for the question string or anything.
Oh, I was so confused where that happens lmao
that happens on the C# side yeah
ha, sorry, I forgot to write that part down
its hardcoded assuming you dont count being able to edit the strings from Strngs/Locations
okay, so it triggering a warp on the yes response is hardcoded then
correct
That's what I was wondering, thanks!
I got the tile to feed me a coffee
Slap a coffee waterfall on it and ship it
the warp is also hardcoded bc it literally spawns a farm warp totem and uses it
(also changing the string wont change the price either dont try that either)
Guys is it possible to make an event at a location that doesn't currently have a Data/Events .xnb file?
yes, Load a json that just has {} in it to that area with a low priority
then you can EditData in it
if you're working with .xnb files directly, stop doing that and use Content Patcher instead
if you need to work with .xnb files directly because you're working on the Switch or PS Vita or something, good luck
(this line gave me big infomercial energy and I don't know why)
Try conent patcher today!
It's MY content pack and I want it, now!
not wrong though
I'm using content patcher. Just mentioned xnb since that is the file that is in the game
then yeah you can just create that asset yourself
you want to use a low priority on the patch though in case someone else already is doing that
(Come on down to Button's Big Bunker and get some Content Patcher today!)
If it is your location, you can do the default exclusive priority behaviour, and if you don't need tokens you can just put your events in that json file, but probably better to keep it an empty object, to get the qol benefits of editdata
Roger, thanks a lot button
I remember when xnb was the way to mod the game. So much easier now.
Latest mod stats having +3 XNB mods

the map exists, it's just that islandEast and IslandSouthEast don't have event files as of now. And since I want a nice date with Elliot throughout the island, I don't want these areas to be left unexplored lol
I probably could setup some automation to download pathos's mod stats, auto port xnb mods and upload them somewhere
i doubt they have open permissions
Download, port, email them back to them
if you are shipping xnbs you dont have a permission argument as you are already shipping stardew copyrighted content
nexus is more restrictive than copyright tho 
that would give CA the right to DMCA or whatever them but not someone else permission to redistribute the assets they made
ppl gotta learn how to unxnb themselves
You'll be waiting a long time for that
well step1 is unxnb and then step2 is deduping whatever vanilla content is there to work out what changed, and then having that change described in editdata
chu we can't even get everyone installing mods correctly, let alone making them 
I dont get it though, xnb packing is a more complex process than a content pack
I've never messed with it, really thought it was just running a program lmao
tbh i still suspect its a language barrier thing and not having non-english accessible instructions for how to use CP
I have endless amount of faith on randos on the Internet
chu: endless faith
also chu: #making-mods-general message
-# is now a good time to admit that Graveyards yeets everyones light sources
See this is my faith being tested and yet i still trust
Seeing stuff like this makes me want to further explore being a fast mod load to inject rewriters to rewrite other mods in userland
🤝
i can't believe i got cropmaster before button
i only talk in here
i dip my toes into modded farmers when the sun is just right, and then i dip out 
you also have a thread!
so do you 
you talk before being spoken to and i only talk after being spoken to
why the hell is my graphics dying on discord
Hey friends, there are concerns that me changing the starting location of Penny's heart events may make them incompatible with Archipelago, so, can y'all help me brainstorm some ways to have Penny (or Malon in this case, as this is the Zelda mod) bring the farmer back to Marnie's barn in a way that doesn't feel super abrupt?
see? /lh

I'm struggling with how to transition it as far as dialogue and such
Archipelago seems like the kind of mod that i would honestly only do compat with if it was accidental
I want boba 😢
i think id need more context about the event itself too
Well, nothing else I've done breaks compat yet, and the initial driving force of the Zelda mod was to encourage a Zelda multiworld with Stardew, sooooo
Penny likes children, children like animals
compat is important to me on this one
That's not the issue, Elizabeth, Penny is being replaced with Malon, so it's a different character visibly.
(I have reasons for doing it as replacements)
(its been too long since ive seen Pennys events)
Town event for 2 heart or Trailer for 4 heart at my options
(i haven't seen any of penny's events except for the rude one)
i know almost all of hers
(i have never married penny)
...oh boy i have been confused this whole time
i misread malon as marlon
Ohhh sorry I thought Malon was a typo for Marlon
and was really wondering why you wanted to replace penny with marlon XD
For the event context: The replacer event is introducing the farmer to a horse.
🤔
why not just start the event at the vanilla location then and have her say like "hey wanna meet a horse" and warp there after?
Guys, I haven't done mods in a while and apparently some things have changed... Can anyone tell me how to solve this problem?
The error message says that I can't convert NetBool to Bool in "_monster.isHardModeMonster" and NetColor to Color in "Color c1 = _slime.color", I'm not sure how to proceed.
These are the lines of code referring to the problem:
if (_monster.isHardModeMonster) _prefix = "Hardmode";
BarInformations _informations = Textures.barInformations.Find(x => x.monsterName == _prefix + _monster.Name) ??
Textures.barInformations.Find(x => x.monsterType == _monster.GetType().Name) ??
Textures.barInformations.Find(x => x.monsterType == "Default Theme");
if (_monster is GreenSlime _slime)
{
if (_monster.Name != "Tiger Slime")
{
Color c1 = _slime.color;
float cR = c1.R * 1.25f;
float cG = c1.G * 1.25f;
float cB = c1.B * 1.25f;
byte cA = 255;
Color c2 = new Color((int)cR, (int)cG, (int)cB, cA);
_informations.barColor = c2;
_informations.borderColor = _slime.color;
}
}
personally if i was playing i wouldnt find that abrubt
abrupt
maybe if it was literally after the very first line, but the farmer could catch Marlon when she was gathering like. horse tending suppplies, or something
b efore she left
Malon not Marlon,
if something is a NetBool or NetInt or whatever other kind of Net field, use <field>.Value
so _monster.isHardModeMonster.Value
Ooooh thanks @uncut viper !!!
that's fair, I may be overthinking it
Hmm... I'm not sure if I'm doing it wrong or not but it appears BETAS_DialogueBox can only ask questions if the NPC exists
i feel like that shouldnt be the case but this might be me not understanding dialogue questions enough
what is happening when the NPC doesnt exist?
If the NPC isn't real selecting an answer gives the error [game] An error occurred in the base update loop: NullReferenceException: Object reference not set to an instance of an object. and just loops the question

I tried changing the NPC and dialogue entries to Maru instead and it seemed to work
I've noticed some stuff on the wiki for the API reference is undocumented. I'm using KDE's Kate with LSP as my development environment, so I was wondering if most of the API information was meant to be looked up through the IDE like with VSCode integration.
!decompile
If you want to make SMAPI mods with C#, one important resource is decompiling the game to read the game code. Here's how to do it: https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#How_do_I_decompile_the_game_code.3F
Godspeed
is it a question that points to another dialogue key?
well the SMAPI API should be fully documented
Yeah, the Yes and No responses point to their respective response keys
The NPCSpeechMessageNoRadius only needed an existing portrait, so maybe it's something like that
well. im not sure where you even loaded the dialogue key in the first place then if it doesnt go to an NPC
i thought there was a way to do questions that are all in one dialogue key's entry?
Yes but you can't save state that wah
im not sure why you'd need to in this context
Why ask a question if you don't save state
For the fake NPC I loaded a new dialogue file from a blank json, added keys to it for the question and two response keys
because the action in the "Yes" branch can do what you need it to
i dont know if its $y or anything else i dont work with dialogue and dont know the commands
thats what i was tryin to ask earlier!
$r?
I'm sorry. Button, I was at work
honestly i don't know what's going on right now
So uh
This is the way to do i18n for config, right? Do I need to do anything else? "config.Museumtype.name": "Former Collection", "config.Museumtype.description": "Pick what the previous collection consisted of.", "config.Museumtype.values.cola": "Cola", "config.Museumtype.values.macrame": "Macrame", "config.Museumtype.values.bookmarks": "Bookmarks",
Because none of that works
Trying to make a yes or no question on a tile action that allows for performing an action depending on answer


oh, isn't tiledata, like, cursed af right now
Well that's interesting, $y's responses don't seem to work at all
what do you mean right now, nothings changed
yeah, message and dialogue won't take $action + string
so that's why we had to do the npcnoradius work around 
But what about with BETAS Jam?
Yup!!!!
thats not tiledata being cursed thats just how those actions w ork
That should work
My Demetrius mod should have that working
I also have my LSP misconfigured, so if there is something that the LSP server can parse, that might be why.
(i dont know why $y wouldnt work in general either ftr)
opens up BETAS docs y'know, i've been out of the house this entire time 
I thought they were missing things but I'm second guessing that now
No ability to run actions or sabe state afaik
no i mean
Mud said $y wasnt working at all in DialogueNox
Box
but its just an ordinary dialogue box of the same kind that would open up if you were actually talking to an NPC
what did you write for the $y test Mud?
hmm lemme open up the maru test mod
yeah Roku, that's what I was copying referencing but it doesn't show in GMCM
For testing $y I just copied over the "$y 'Breakfast?_Yes please._Here you go._No, I'm good_More for me then!'" from the wiki, it asks the question but loops on the responses
You need to decompile
I'm using the wiki as reference, so I may not be looking at the right place for documentation. Additionally, the wiki doesn't seem to index those pages in the same way, so if I search for methods and such by their name or purpose in the search box, they don't seem to show up.
Even if you could get method names, etc
Will do when I get home. I'm not at my computer right now so I'm going from memory while I wait on my laundry to dry.
were the quotes escaped properly?
search with the modding: namespace on
Wiki you have to put modding: in front of in order to search for modding pages
The method names are not exactly reliable lol
is it something with my config? I don't see a field to add name or description tho
"ConfigSchema": { "Museumtype": { "AllowValues": "cola, macrame, bookmarks", "Default": "cola", "AllowBlank": false, }, },
Ah thanks, good to note then.
Name should just be the key
I can only assume so as the question and choices were presented, it's just the responses that didn't work
i dont know if thats a safe assumption
This is mine
Can you see if mine works
It worked last year
just to check, did you name this Dialogue file with the same name you used for the fake NPC in the DialogueBox action?
lemme check, I have that mod in my play file
Yep - I named everything Covfefe, didn't work, switched the dialogue edits and BETAS action over to Maru and it's working
do you happen to have the full log from the null reference exception?
Gimme a sec to finish testing with Maru and I'll grab it
I had another bad idea moment, porting a dialect of a BASIC interpreter for use with a buyable home computer.
Hi guys, I'm trying to figure out how does after param work for harmony patch.
How do you get the id of another harmony patch?
Did you want me to post the entire SMAPI log or just the error it's throwing?
!log the entire log with the uploader please!
Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.
Please share your SMAPI log file. To do so:
- Open this page: smapi.io/log.
- Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
- After uploading, it will show a green box with a URL to share. Post that URL here.
Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didn’t occur in your last session, please load the game to the point where the issue occurs, then upload the log.
you look at the other mods source code to see what ID they used
how can i check if the current event is the movie
what do you mean "the" movie
is the event made by MovieTheaterScreeningEvent
is that typicaly the ModManifest.UniqueID when you make the Harmony object?
thats usually what people use, but not 100% of the time
ok. I know where to look then. Thank you 
looks like it just assigns it the id "MovieTheaterScreening" for the event ID
so from there you can check Game1.CurrentEvent
or use the GSQ
Okay, here's the log: https://smapi.io/log/a819491957cd4529a767039530e7c832
And this is the json I'm working with just in case you'd like to look at that: https://smapi.io/json/content-patcher/f097e30597604235ac1ed2526c221586
Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Home, with 15 C# mods and 5 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
oh thats fun i have no idea how i just froze my game with a stackoverflow when testing DialogueBox
Oh, in regards to the $y thing specifically apparently that too works when it's set to Maru
So I guess the issue's something to do with selecting responses for a fake NPC
wait, what, somehow it just happened again just from me talking to an NPC normally.. ?
Concerning™
oh! im just stupid
"Action": "EditData",
"Target": "Data/TriggerActions",
"Entries": {
"ExampleTriggerAction": {
"Id": "ExampleTriggerAction",
"Trigger": "Spiderbuttons.BETAS_DialogueOpened",
"Condition": null,
"Action": "Spiderbuttons.BETAS_DialogueBox Emily \"I'm also in the conversation!\""
}
}
I had this test mod active
Oop, I probably should have removed Dialogue Display Framework from my load order before sending you that log, but I just confirmed the same issue is there with it removed
[game] DebugOutput: Tried to change friendship for a friend that wasn't there.
this is the saddest error message ive ever seen, i think
(Fwiw, atracore triggers that open menus will just queue the new one until the player is free exactly for this reason.)
Thanks everyone for their help! (Theoretically, it's working now, albeit I only tested spring crops)
Paired with Button's test mod, I'm just imagining a farmer going through a ton of dialogue boxes, thinking "FREEDOM!" when they seemingly have reached the end, and then Emily's just like "Hi, I'm here too."
This $y action is goofy as hell with the NPCSpeechMessageNoRadius method
On the bright side? Having the yes response feed me a coffee works just as I wanted while testing with Maru thanks to the new BETAS action 
what's BETAS? 👀
If push comes to shove perhaps this can be made to work with an antisocial NPC
Button's framework thingy that adds a lot of new actions, triggers, game state queries, that sort of thing
This doesn't work right, it asks the question but doesn't give the choices and just gives the money after asking the question with no choices:
"$y 'Want some money kid?_No_Suit yerself._Yes_Here.#$action AddMoney 500 '"
This asks the question, gives choices, and runs the action but the action "pops up" an invisible dialogue box that I don't even know is there, I can get out of it by clicking but it just looks like I'm frozen until I figure it out:
"$y 'Want some money kid?_No_Suit yerself._Yes_$action AddMoney 500 '"
This one is like the first but it pops up a blank dialogue box after the first and then gives the money lmao:
"$y 'Want some money kid?_No_Suit yerself._Yes_Here#$b#$action AddMoney 500 '"
I see! that's cool 
(I searched and it seems super expanded, wow)
and always open to ideas for more things to add 
(also Mud right now i think i dont know how id solve this questions problem so for now at least its just gonna have to be a limitation of the DialogueBox action. it might be easier for me to just try implementing a separate QuestionBox action later or something to use instead)
All good, you've been a great help already 
The functionality is here even if an NPC being here may be weird, I'll just have to try and figure out some way to minimize the weirdness
what if you use #e# at the end of the middle one 
Before the action?
Can action be the first thing?
I mean I'll just try a bunch of different ways lol
"$y 'Want some money kid?_No_Suit yerself._Yes_Here#$e#$action AddMoney 500 '"
Question asked, no responses, dialogue closes and actions runs
"$y 'Want some money kid?_No_Suit yerself._Yes_#$action AddMoney 500 #$e#'"
Error:
Failed parsing dialogue string for NPC FakeNPCTest (key: Strings\StringsFromMaps:rokugin.excustomlocation_test, text: $y 'Want some money kid?_No_Suit yerself._Yes_#$action AddMoney 500 #$e#').
IndexOutOfRangeException: Index was outside the bounds of the array.
"$y 'Want some money kid?_No_Suit yerself._Yes_#$action AddMoney 500#$e#'"
Error:
Failed parsing dialogue string for NPC FakeNPCTest (key: Strings\StringsFromMaps:rokugin.excustomlocation_test, text: $y 'Want some money kid?_No_Suit yerself._Yes_#$action AddMoney 500#$e#').
IndexOutOfRangeException: Index was outside the bounds of the array.
i meant puttin the #e outside of the quick response
Oh
Hmm... wasn't there a way to check if a specific NPC was standing at a specific spot? I'm thinking I could have Harvey offer you free coffee if he's in, and Maru can do it if she's at the counter
Wait
Still pops up invisible box
"$y 'Want some money kid?_No_Suit yerself._Yes_$action AddMoney 500'#$e#"
I don't think you're allowed to do $action in the $y dialogue
You kind of aren't
what about just adding a fake item to the store
If it's with any actual text it starts throwing a fit
But when it's on its own, it does work
and having an action (a) remove item after purchase and (b) drink coffee
It's just also opening an invisible dialogue box
(BETAS does have a way to check if an NPC is in the spot though)
"$y 'Want some money kid?_No_Suit yerself._Yes_*$action AddMoney 500 #$e#'"
try this
Oh, I must've seen it in the BETAS docs then 
what does the * do?
what does betas stand for?
Button's Extra Trigger Action Stuff
Works but still invisible dialogue box
dammit
"$y 'Want some money kid?_No_Suit yerself._Yes_TEXT HERE*$action AddMoney 500 #$e#'"
what about this
Question asked, responses shown, TEXT HERE dialogue shown, blank dialogue shown, action runs
So no invisible dialogue box at least lol

what if you put the # separator before the action
(Unrelated) After unpacking the vanilla game, are there any DLLs in there? I recall seeing tmx, json, png, I think two XNB, and ogg files but not DLL
but still within the single quotes
(that's why there's a *)
what if instead of doing something when they say 'yes' force the dialogue to end when they say no, and then have the add money be the next thing that happens after
im sure theres a very good reason thats not said in the docs for $y itself /s
I can hazard a guess to why lol
well... what happens if you just use # anyway
i think thats done bc typing * normally is replaced with a symbol innit?
or am i misremembering
i thought ive seen that done before to get around text being replaced by other normal processes when they shouldnt be
What’s the mail trick again for triggering an event x amount of days after a previous event? I forgor
increment a stat every day after the event is seen
and check when the stat reaches a number
the old trick is to set a conversation topic and wait for it to expire
what about $k
Trying that, seems like $y hates #
this $y fucker is really fussy aint he
i've never used $y, and after this conversation i may never try
also im realizing. arent questions from dialogue like the way Mud was trying earlier only asked Once anyway?
yeah, you can't do $y and split it with a # at all
I think you guys are trying something similar to what I'm trying to do with the regular $q $r and $action 
tbh for simple stuff it's like the best
but like also, like. it doesn't set state lol
like even if it did work wouldnt answering the coffee question once, whether yes or no, permanently lock you into that answer Forever
"$y 'Want some money kid?_No_$k_Yes_Here'#$b#$action AddMoney 500"
This asks the question, doesn't give responses, opens a blank dialogue and then runs the action, but no invisible dialogue box
I already tried a $k at the end, outside of the question and that also didn't kill the invisible dialogue box
i absolutely hate questions in dialogue, which is why i've depended on spacecore for it 
use a DayStarted action to yeet the response id
Oh, no, I've been chugging coffees for the last half hour trying to finetune the responses
i didnt know you could do that
just make a new $command at this point tbh
lol
I think locking in the answer only happens if the $q has a check for it
the xkcd standards comic but it's about methods to do a question in SDV mods
In which case it shows you a different dialogue key based on what answer you gave previously
Well, if I wasn't trying to fit this into just CP I would have just made a C# mod/added to my map utility mod for something like this lmao
this is the most ive learned about how dialogue works in like my entire time modding
I could make this a tile action in about 5 minutes
meanwhile ive been looking to see if i can find an easy function to call that just creates a DialogueBox without having to rely on a C# performAnswerAction or whatever
just take a look at parseDialogueString
I'll have a drink for you when you re-emerge
But yeah I'm seeing that a response with just an action still pops up an empty dialogue box and I can't find any combination of syntax that gets rid of it entirely
oh ive looked in there
parseDialogueString annoys me bc of the big switch statement that just points to IL codes
thanks ilspy
don't worry, you'll promptly forget until you have to deal with your own npc
here's your drink 
(also by dialoguebox i meant question box)
ah my old friend parseDialogueString
public static void Dialogue__parseDialogueString__Postfix(
Just make a small C# mod that is generic enough to allow you to have more complex dialog so that it covers a lot more use cases, and never worry about it again.
does anyone know how to add xp to custom skill made with SpaceCore in console? Is that possible?
do you mind sharing how you would do it, because wasnt the original problem that it didnt work with a fake npc? which from the error in my testing i figured was because it was trying to look in the Dialogue's speaker to find the translation key for the response, but obviously with a fake there would not be
because the NPC would not be real
but admittedly, my brains kind of lost the plot on this one a bit
Well, does it need to come from an NPC?
to use $r or $q, it seemingly does
I was assuming NPC was the workaround at this point to run a trigger action
But if I'm just making a yes or no question to run a trigger action, I don't need a regular NPC dialogue box
using DialogueBox which is based around NPCs is the workaround for being able to create a question box
without relying on C# code to handle the question response
i think this is the case because those have a friendship points argument for each choice, so there has to be an NPC to give the points with
yeah
you could trivially do a
{"DialogueKey": "action to run"}
i thought this was all about how actions don't work in tiledata, so the npcmessagenoradius + trigger action was what was going on, and i promptly noped out 
it was erroring when trying to Pop from the characterDialoguesBrokenUp stack
like, it'd be saner
Right well I'd be using C# lol, but just having the tile action take a trigger action as an arg and then attempt to run that action in the appropriate branch
It would not be very scalable to additional functionality
Like it really would be locked to a yes or no
dislikes that
But with some custom data asset it could be more customizable
its partly being able to let the Content Pack decide what the text is to show for the question, including the yes or no, and also to let them decide what happens for each response.
and partly me being unable to find a good and easy way to just construct a simple question box
the simple ones take an NPC, and the other ones check the location's answerDialogueAction responses
the latter of which the content pack cannot change
The second one can be directed to use your own callback
Assuming I'm thinking of the right one
GameLocation.createQuestionDialogue
I'm using it a lot in EMA lol
button would it help you if i looked up how i did the ledger menu in lacey's spouse room
that is a tile action but it does a three-choices question box (option 1, option 2, cancel)
i can create a specific question box easily enough, but i wanted to leave the options very open for content pack authors to customize them, like DialogueNox
why do i keep typoing Nox
you can also see aquarium's paginated menu
like, can any of these question boxes have a portrait but without a speaker
a real speaker that is
Just embrace it at this point
yeah
and clearly that doesnt handle questions
(its far too early to sleep)
Yeah I haven't messed with NPC capable dialogue boxes, haven't had a need yet
all of the phone conversations that have questions, have real NPCs attached to them
and my current Dialogue_Nox_ implementation handles the questions fine if the NPC is actually real, as Mud discovered with using Maru
its when the NPC is not real that the issue arises
Very high chance I'm going to make a coffee machine NPC just to deal with this
the bouncer didnt use a question dialogue command
you might be able t o get away with just making the NPC, excluding them from perfection, hiding them from the social tab forever and ever, and setting their UnlockCondition to "FALSE"
and then pretending they dont exist
actually nevermind getCharacterFromName needs them to exist
maybe
yeah they need to exist in a location
but maybe they dont need to exist to load the dialogue
Is there a condition/GSQ that checks for if the player is marrying another farmer?
I'm throwing together a wedding dialogue adjustment mod for Lewis at weddings. Basically the player can toggle whether they wanna do the "(husbands/wives) in life" (acknowledge gender from game start) or "spouses in life/spouse and (husband/wife)".
I need to find a way for the dialogue to work between gender neutral farmers if people decide to use it on a multiplayer save
Or should I make it have a dependency with existing gender neutral mods?
you could also just have the coffee machine feed you a coffee on right click like you had earlier with no dialogue whatsoever though i understand thats kind of sidestepping the issue
Hey! Wondering if anyone can help.. I’m having trouble with getting a tile property to work. It was all working fine about half an hour ago I was almost finished with my map/house but I went in to test again after adding some more trees and stuff and the action tile suddenly stopped working. (Locked door warp) so I added an action/dialogue tile to test if i could get a different action to work but no joy, it’s like the map isn’t registering any type of tile data anymore. It’s all typed in correctly, like I said it was working fine just a bit ago. Does anyone know why this might be? I’m so confused 😭
PLAYER_PLAYER_RELATIONSHIP
DAMN IT I KNEW IT WAS THERE
How would I check if they both had the same config setting as false (gender neutral)? Would that involve some C#?
did you accidentally remove a tile that was previously beneath your TileData on the... i think Back layer? or mess with anything on the layers beneath or above the tile data?
well, really, everyone in multiplayer should be running the same config just on principle. otherwise, there's no way to check without C#
Would it be better to make a separate toggle to use the gender neutral settings between farmers?
that would be up to you i think
Extra toggle it is!
Possibly.. I tried re entering the tile data though and that didn’t work
my knowledge of map making and tile data doesnt extend too far which is why i got it a bit confused with the Back layer thing but if LockedDoorWarp is something on the Buildings layer then it needs something actually placed on the Buildings layer for it to apply to, so you need to make sure an actual tile is painted there
niot just the tiledata
Yeah it’s on the buildings layer and it’s an actual building tile. No idea what’s happened to it. I can usually mess about with the data tiles like move them around and stuff without affecting the warp action but it’s like the map doesn’t register any of it anymore
Well... that works.
I did notice it didn't work before I gave it a "portrait" and sprite, does that sound related or are those required to even create the NPC specifically 
just to be clear, when you say actual building tile, that does mean you have two things, right? one TileData on the pink Buildings layer and one thing in that same spot on the other Buildings layer?
Yeah that’s right
do you mean for the action or for the NPC CharacterData
For the NPC to get added to the game
unfortunately then i think i am not the right person to try and help with this and i would probably just lead you in pointless circles if i tried, so i will have to defer to any other map makers around who may be able to help
No worries thanks anyway I appreciate it!
i have no clue if portraits and sprites are strictly required but i would assume so. ive never tried otherwise. i would be surprised neither if they were required nor if they were not and it was some other issue
Okay, it looks like the coffee machine NPC simply didn't exist without them
also, what happepns if you specify a portrait in the BETAS action but give it a nonexistent portrait
i know it will log a warning in the console but will it still work
work with the question, i mean
So it'd look like "Query: 'PLAYER_PLAYER_RELATIONSHIP' = 'true'": true,, right?
Like have a real NPC but put a fake one for the [Portrait] field?
(actually now that i reread my own code it'll grab the portrait from the NPC it seems)
you cant use GSQs in When conditions
HUH
not without a different mod that lets you do it
you need to look at Content Patcher tokens
I'm sobbing violently /j
Does anyone know where the Trash Bear event (cut scene) data is? I'm going crazy trying to find it haha
yeah it sucks that they're both named query so it's a bit confusing
esca's modding plugins might let you rip GSQs though?
and yeah thats what i meant but im pretty sure it doesnt really do anything here. but if you wanted i could probably make it overridable so you can remove the portrait if you want, but keep the real NPC, so it looks more like a normal question box and presumably would still work with the question
and yes its Esca's Modding Plugin that lets you use GSQs in tokens
Yeah it just stayed as Maru when I tried it
tbh should be data/events/woods
You'd think so!
oh if you're making a fake NPC wioth character data t ho you can just use that fake NPCs name
/speak Bear \"Heh... It's not every day I get to speak to a human. Looks like you've got a little 'forest magic' in you...$3\" is this not it?
Sorry, forest*
thats the normal bear
Trash Bear, not secret woods Bear haha
If you could add in an option for displaying no portrait I think that would work great, but that may be more work than it sounds? 
Ordinary Bear do not interact
TrashBear.doCutscene()
ig i do not know what the trash bear is
Great Value Totoro who appears in year 3 or something
you think i play til year 3? 
(it's fully hardcoded)
gross
Thanks mate!
it's green tea all over again
More importantly, can I trigger a hardcoded event through SMAPI?
you can do anything you want with SMAPI and Harmony
it probably isnt gonna be SMAPI's API directly that lets you call the event
but with C# you can just call the games functions
assuming theyre public
well, reflection will let you call it regardless
(or reflect)
🪞
Thank youuuuu
i wouldnt call that just calling them though 
can you let me know when you get the chance if this build works as you'd like? you can set the portrait parameter to "null" (like Spiderbuttons.BETAS_DialogueBox CoffeeMachine Blabla:Whatever null and it should hide the portrait regardless of whether or not the NPC is real
It does work! 
Though I have no idea how to end the question without a dialogue box popping up like what y'all were wrestling with on the $y thing, except this one's not invisible
even if the dialogue for the response is just an action?

