#making-mods-general
1 messages · Page 66 of 1
bool should_dress = IslandSouth.HasIslandAttire(visitor2);
bool had_first_activity = false;
if (should_dress)
{
Point dressing_room2 = IslandSouth.GetDressingRoomPoint(visitor2);
schedule.Append("/a1150 IslandSouth " + dressing_room2.X + " " + dressing_room2.Y + " change_beach");
had_first_activity = true;
}
from IslandSouth.cs
so i think you could probably also add that "change_beach" end of schedule behaviour like... whenever you wanted, i guess. idk i dont know much about scheduling
interesting, i swear there used to be an issue that the npc on their way to willys boat already had their beach attire on when walking on the sand or was that an issue of a mod, now i am not sure anymore
Wasn't their beach attite
It was their SUMMER attire
ohhh
yep i can't understand this
oh nevermind i see it
1.6.8: line 1861 of FarmHouse.cs
if (this.previousUpgradeLevel == 0 && this.upgradeLevel >= 0)
{
need_bed_upgrade = true;
}```
1.6.9 line 1831 of FarmHouse.cs
```bool need_bed_upgrade = this.previousUpgradeLevel == 0 && this.upgradeLevel >= 0;
if (this.previousUpgradeLevel >= 0)
{
if (this.previousUpgradeLevel < 2 && this.upgradeLevel >= 2)
{
...```
Hiii friends, has anyone released a framework for allowing overworld NPC animations larger than 16x32? I know the code exists for it in a couple NPC mods already, I think like Lucikiel maybe? But it’s not public I’m pretty sure
spacecore
Or just a static pose it doesn’t need to be animation
i use it for example so i get an extra long fishing animation
When did spacecore add that?? It really does have everything lol
those look functionally equivalent to me though?
i went into Dialogue.cs so innocent and pure hoping to find a nice place to parse dialogue flags
noone must know the code i've seen 
brain is empty on parsing, i continue to dig
(that said i am happy to know that apparently that function in Dialogue.cs IS its own function now in 1.6.9 instead of being baked into a different one! nice to be able to call it separately now)
also fridge is it's own function too
this.fridgePosition = this.GetFridgePositionFromMap() ?? Point.Zero;
oh i was rather hoping that'd be the tileaction property handler for fridge
{
Layer layer = base.map.RequireLayer("Buildings");
for (int y = 0; y < layer.LayerHeight; y++)
{
for (int x = 0; x < layer.LayerWidth; x++)
{
if (layer.GetTileIndexAt(x, y, "untitled tile sheet") == 173)
{
return new Point(x, y);
}
}
}
return null;
}```
what if you just spawn a fridge (big object)
It doesnt exist
anyway i have no idea where/what is screwing the bed upgrade so i leave it to atra
"untitled tile sheet" my behated
It's just as sexy as New File (2).txt
better or worse than o
1.png
the farmhouse fridge is a lie - a drawing on the wall, nothing more. unlike mini-fridges, the true favored children of Yoba
turning my mini fridge into doves
please no don't send my gluten discs to heaven
unrelated but if you were gonna use a framework to make a custom museum what would you expect your museum to be able to do (besides the obvious i.e. placing items on shelves, rearranging items, earning rewards)
tryin to make sure im not missin any obvious functionality after staring at the more boring parts for days
was there a framework that lets me shift-click so it auto places into the museum?
an associated GSQ?
if no, please i beg
GSQ is on the planner. do you think it'd be better to have one GSQ for each museum or one GSQ for all museums with a museum ID as an argument
also ive got no clue about the shift click thing
ive never tried to do that
Can you make it easier to click OK instead of picking up a placed item
the latter; dynamically registering GSQs seems weird somehow
Could do it like item id prefix?
Yeah, say if I want to see if ppl donated 5 things from me mod
do you mean item query
No it's a gsq bc it evals to bool
wait, hmm, that's different
currently it allows you to set valid context tags, categories, or specific item IDs (or a combination of all three)
yeah
I forgot if gsq supports generic greater than or less than tho
so i might make it just search based on those
since thats what you'd use to set whats donatable in the first place
and not prefix
i guess that wouldnt help if someone else edited your museum
The id prefix is more about a way to check only your donates
to be clear its not a framework for adding things to the existing museum
Tho there's probably better ways to label
its for a completely custom museum structure with its own list of donations
Oh I see, then u just have some way to pick the museum id
(side note, i have no idea how to bugtest this for BETAS, but i'm going to assume i'm stupid and i can't place two adddialogues in a single trigger action, on the safe side i'll just yeet one into it's own trigger action)
so i would say if you wanted to separate your items from someone else who added things to your museum
then they should instead add their own context tag to the valid list of donated items
and i can just add a context tag/ID/category argument to the GSQ
if you append them it might work or it might not. results may vary (they might not vary they might always break but im gonna say results may vary bc i doint remember)
(they're both set to false so i'mma just play it safe and just yeet it into another trigger action)
I don't think it is very necessary, bc u can sorta do it with unlockable bundles
admittedly no but i can think about it for like, a version 2.0
(side note, now I want a GSQ that evaluates an item query and a PerItemCondition and returns true if there's at least one matching item)
snail's thing is like bundles right
its like bundles but they then appear on the map
A job for stardewui trust
Yeah I like that aspect of them but u can sorta do it with ub
It's got completion flags right
That u just stick map patch onto
yeah, map edits with flags
also idk if this is what you meant but in every GSQ that accepts a minimum and a maximum, the maximum is optional to check for greater than. if you want less than just make the minimum 0 and the max whatever
Yeah I remembered that using < and > was a content patcher query feature
Not a gsq feature
also i think the reason for this is probably bc you cant just scroll your camera around endlessly when placing/rearranging so if it didnt prioritize the item it might be possible to get into a situation where you literally could not pick up or rearrange an item in a certain spot depending on the map layout and UI size
relatedly i wonder if it'd be easy to support swapping a placed item with your held item to make extra space for rearranging unnecessary 
I wish it worked like build menu
i guess that might lead to being able to "undonate" an item though
Where ui gets hidden
it does move out of the way when you mouse away from it
but you kinda need the UI of your inventory there
Make it cost gold and it'll be Realistic
sorry, but that's going back into the private collection
(i went to look, there is no auto-clicking donation mod
don't worry about it)
I remember this being an issue pre 1.6 but I’m still catching up to new capabilities, can you teleport an NPC to a location now in a schedule key instead of having to wait for them to walk?
Or have them start at a different “home” point on a different day works too
Scope creep auctions mod
0 schedules for starting, mid-schedule i don't think so
I don’t need mid-schedule thankfully, what do you mean by 0 schedules though?
-2 hearts of friendship with the museum owner NPC whenever you do this. even if you give it back right after
instead of a 600 or 610 time, setting it to 0 will warp them at the start
Omg I had no idea this was a thing, that’s so cool!!! Thank you
0 schedules? You can set the time to 0 at the beginning of a schedule, which can basically allow you to set a new spawn point. This is useful if you want to start elsewhere: for example, if you want to spend the day on a map NPCs can't path into, such as Secret Woods, or if you want to have a character visit a distant spot (e.g., Ridgeside) and not spend 5-6 hours getting there. One word of caution with 0 schedules - if you have a randomization, make sure it's all or nothing for your 0 schedules. In other words, if your Tuesday has a 50% chance for schedule A and a 50% chance for schedule B, either both A and B should have a 0 schedule, or neither should.
-tia
Very very cool
Because I am questioning if I was misremembering: IS there a mod alpha for 1.6.9 code changes? Or is it just the beta and nobody else can access it yet?
anyone can access the 1.6.9 beta
Anyone with the game on Steam can access the beta
GOG too
I thought there wasn't a GoG version of the beta lol
alright, I was looking for the beta code to find it and having no luck
it was added later
I did a search in the discord and found nothing LOL
focustense asked pathos and evnetually pathos came back and said its on gog now
its in the pins here
ah-ha, I saw that post but did not register that the first link was a link.
Just came in from the heat taking care of my garden, the brain fog is real
I wasn't sure where to ask this, but what software is best to make/go over sprites? Like portraits and such
!software
Here's a list of software for pixel art and JSON text editors we recommend: https://gist.github.com/ishanjalan/c8efb21afa21f74a052293176db107f7
For making SMAPI (C#) mods, see the Requirements section here for which IDE to install https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#Get_started.
This chunk of code still isn't executing properly:
{
"LogName": "First Letter Created",
"Action": "EditData",
"Target": "Data/mail",
"Entries": {
"HalfAlive.SpiritFieldsMod_Abigail_Start_Quest": "Dear @,^Have you been noticing anything strange happening at the graveyard lately? For the past few nights, I’ve been hearing some weird noises coming from there. Last night, I got too curious and decided to take a look at what’s going on, and I found a weird, glowing vine growing on Mona’s gravestone, along with some lights orbiting it. I recklessly decided to try and touch it, and all of the sudden, my arm phased into some kind of rift in space! I didn’t try to go all the way in, but honestly, I’m just getting too curious about what’s on the other side of the rift now. Wanna go in some time?^ -Abigail%item quest HalfAlive.SpiritFieldsMod_131 true %%"
}
},
{
"LogName": "First Letter Received",
"Action": "EditData",
"Target": "Data/TriggerActions",
"Entries": {
"HalfAlive.SpiritFieldsMod_DayStarted": {
"Id": "HalfAlive.SpiritFieldsMod",
"Trigger": "DayStarted",
"Condition": "PLAYER_HAS_MET Current Abigail",
"Actions": [
"AddMail Current HalfAlive.SpiritFieldsMod_Abigail_Start_Quest now"
]
}
}
},
{
"LogName": "First Quest Created",
"Action": "EditData",
"Target": "Data/Quests",
"Entries": {
"HalfAlive.SpiritFieldsMod_131": "Basic/Investigate Mona's Grave/Abigail has alerted you to some strange happenings at this "Mona" person's gravestone. What exactly is going on?/Investigate Mona's gravestone at night./-1/-1/0/-1/false'"
}
}
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
I can't find the pin for the GoG version lol
its likely that when you tested it earlier, the trigger action did run but sent a non existent letter. now that the trigger action has run once, it will never run again unless you use a debug command to mark it not applied
(or another action to mark it unapplied)
i used aseprite and gimp so far
a Trigger Action, when it runs (whether you noticed a successful result or not), marks down that the trigger action with its id (in this case HalfAlive.SpiritFieldsMod_DayStarted) has already run and can be removed from the list of trigger actions to consider in the future
so you can also just change the ID and it'll be essentially a new trigger action. or just make a new save. or debug action MarkActionApplied Current <ID> false
(you can also make a trigger action never mark itself as applied with a field on the trigger action itself, but often you dont want it to happen repeatedly)
Ah.
I did find the post though
(my "its in the pins here" was just in response to fireredlily saying they did a search and found nothing, sorry!)
Oh my bad lmao
nah it was unclear on my part
tryin to respond to two people at once and not making it clear what was for who
honestly i do the hard searching
user: pathos/"gog" #making-mods-general message works every time
so I've got some angry errors after testing my bathroom renovation mod on 1.6.9
[18:16:09 ERROR game] Failed parsing condition 'ITEM_ID (WP)12 (WP)21 (WP)MoreWalls:1 (WP)MoreWalls:2 (WP)MoreWalls:3 (WP)MoreWalls:4 (WP)MoreWalls:7 (WP)MoreWalls:9 (WP)MoreWalls:10 (WP)MoreWalls:12 (WP)MoreWalls:13 (WP)MoreWalls:14 (WP)MoreWalls:16 (WP)MoreWalls:17 (WP)MoreWalls:18 (WP)MoreWalls:22 (WP)MoreWalls:23': invalid item type '(WP)12' (should be 'Input' or 'Target').
The flooring is fine but I must have broken the wallpaper somehow?
The GSQ is wrong
does that mean I don't have to fix anything?
(well you have to fix the GSQ)
There should be either Input or Target between ITEM_ID and (WP)12
I'm actually not sure if this is an issue on your end though?
I've seen this error happen a few times too
Let me take a look at the code again, I'm purely CP though, so I'm not sure how it suddenly went wrong
It hasn't happened consistently enough for me to try to figure out what's happening though and it also doesn't seem to be stopping anything I'm expecting to happen
Is it causing issues with your renovation?
Hello!
Let me load up again and make sure the wallpapers actually loaded in properly
I tested my new floor but not my new wallpapers, like a dummy
General question!
I'm working on my dialogues script, whilst also lookin' at references to learn. This example is from another NPC;
"Whoa, @, didn't see that coming!$6#$b#I'll marry you, no doubt about it..$8"
What is '#$b#'? Additionally, how do you get NPCs to talk twice? (two different windows)
okay, so I've reproduced the issue. It fires when I access the catalog.
https://stardewvalleywiki.com/Modding:Dialogue#Dialogue_commands
#$b creates a pause in the dialogue, creating a second window to that conversation
the wallpapers have loaded into the game fine though, and let me grab them from the catalog and use them on the wall
Talk twice, in two different dialogues is $e
Thank you
Cool, I'll try to remember to take a look at this when I have a minute lol
It spams it quite a bit when opening the catalog xD
looks like once per new wallpaper
might've just realised this morning i'd written a hundred lines with $b and $e flipped 
do you need the latest iteration of my mod for a test pack, roku?
(it uses hime's tilesheets now, so that's a new dependency)
:%s/$b/$e/g
ez
how exactly do i create some codeinstruction for ldarg.s drawBGScroll
ldarg 11 doesn't cut it, nor does ldarg_s "drawBGScroll"
what about ldarg_s 11
(i still dont entirely understand when the difference between ldarg and ldarg_s matters i just know i think i usually use the _s form?)
i think i tried that first lol
I'll let you know if I do, but I think it should probably trigger any time the catalog opens regardless of what I have installed, since I've seen it a few times
okay then
I don't use the catalogues much, so I wasn't sure when it was happening
Easiest way for me to test my new wallpapers is by spawning in the catalog, so that's my primary way of doing it. LOL
in context:```cs
ilOut.InsertRange(j - 1, [
// public static void DialogueEffects.ApplyStringOffset(ref Vector2 v, int scroll);
new CodeInstruction(OpCodes.Ldloca_S, 2), // Vector2 position
new CodeInstruction(OpCodes.Ldarg_S, 11), // int drawBGScroll
new CodeInstruction(OpCodes.Call, stringOffsetMethod), // ApplyStringOffset
]);
which worked fine until i changed the signature to add `int scroll`
I uploaded the beta release of Extra Map Actions to my github, Nexus is being dumb right now so I'll try to add it later
https://stackoverflow.com/questions/30550492/whats-the-purpose-of-the-short-notation-of-il
Tldr _s is smaller, otherwise doesn't seem like there's a semantic difference
Cast 11 to a byte
You're only allowed a byte for short form iirc
ldloca_s 2 above it is fine though
and ldloc_s 12 elsewhere
Someone knows or have any idea about how to make this:
public void Edit<T>(IAssetData asset)
{
Dictionary<int, string> nightFish = new Dictionary<int, string>
{
// Bunch of [#intID] = "EditString",
};
IDictionary<int, string> data = asset.AsDictionary<int, string>().Data;
foreach (KeyValuePair<int, string> pair in nightFish)
data[pair.Key] = pair.Value;
}
fit on this?:
private void onContent_AssetRequested(object? sender, AssetRequestedEventArgs e)
{
if (e.Name.IsEquivalentTo(PATH))
{
e.Edit(>>Here<<, AssetLoadPriority.Medium);
}
}
i basically never specifically cast to byte when using _s its always just worked
I want to alter the original as few as possible, and yeah, I am updating another mod
@blissful saddle You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!
i pay for my hubris. i was so confident i could count. it's arg 10 😌
yeah thatd do it
i knew it from the start but i wanted to believe
isnt this just a normal asset requested event 
why cant u use the actual type
it is. the first block is the original how the asset is made
(if no one is immediately answering its likely that no one currently around has the answer or is confident they know, no need to try and bump a message after only a few others)
you need both the event handler and the edit delegate
what exactly do you mean? not sure if I followed
this is a question?
Ah that's my apologies!
this seems to help. I will try
read the page rokugin sent for more details
alas it was all for nothing, npc names in dialoguebox are drawn on a scroll but do not use the scroll param
curse u ape
I wish I could help more but every time I work with delegates I'm really just grasping at how to make it do what I want lol
yeah im pretty sure the whole portrait side of the box is baked into cursors
it sure is 😌
delegates r just methods that you can hold in your hand 
Yeah for some reason I just never seem to be able to remember exactly what I can and can't do with fat arrows
(the only delegate stuff i dont really understand at t his point is what specifically writing "delegate(" is for)
It's short for "I learned c# from copying from decpmpiled code" 99% of the time
Lmao
And a delegate is just a function pointer with type checking
is it otherwise just equivalent to the anonymous function form
Yup
good to know then! btw apropos of nothing at all dont look at my custom museum code
In order to even try to answer that question, I need to know where you found it?
oh button what are u gonna do about collections
what do you mean
do u want to give every new museum their own page
I was lookin' at another NPC code to learn how dialogue is written, and saw this
the collections page
i think its fine as long as its like a new button

and not the dreaded tab
which is less bad for flagging dialoguebox drawstring from spoken words or from npc display name
prefix/postfix on drawportrait to set a flag, or string comparison to displayname on draw call
hm
can u describe usecase
applying text effects to spoken words but not to npc display names in dialoguebox, which share the same method and no unique params
i was gonna say i wasnt really imagining having a separate tab in the collections menu for custom museums bc the current one is just for like, archaeology stuff and not specifically denoted for the museum (i think?) it just happens to share the same item set
and a custom museums intent is for you to just choose which kinds of items get displayed in there which can be from any category (including existing minerals or fruits or things)
but i guess i dont know where else you might be able to denote to a player what can be donated besides the tooltip that appears in an item description (which i did plan on adding) but maybe thats enough?
oh drawportrait flag sounds better
well it could just like like, a simple menu that u can open from map action or some trigger
for the mod to decide how they want to show this info
okay, so that looks like they are setting custom dialogue keys, rather than using default entry names for a standard birthday gift response.
Could you elaborate? If it's not too much trouble, please.
vanilla NPCs use different keys that do the same thing:
And 1.6.9 is adding its own dialogue key for birthdays
depending on the age of the mod, it could be using different frameworks, it could also be something like setting an i18n key if you're looking at the default.json
true
So, would you guys recommend I avoid this type of key in my own dialogue box, and go with the default?
it's like what, custom... fixed dialogue? i don't honestly remember what it still does that vanilla doesn't
Probably easier to use the default unless you know what you're doing. If you DID want custom dialogue for specific gifts, there are keys for that too.
There just isn't a way to check them on a birthday specifically for an individual object right now through CP without using conditions to change them on the set day, AFAIK.
Which is barely a limitation, really
Another thing!
What is the trend in the dialogue template here?
If you're working on an NPC but aren't sure where to start with their dialogue, the template below lists some of the most common places for dialogue and gives you space to start fleshing them out. Note that you're not limited to these options; you can, for example, set dialogue specific to season, different heart levels, specific days (such as ...
you can use the $query dialogue thing
GSQ scares me so I avoid it, but I recognize that it makes more things possible.
What I mean is, etc
oh this is where the load dialogue.json is coming from 
It jumps from 2 days, and so on
The modding wiki, yikes
again, it's in the wiki dialogue, that being the "generic dialogue" of <dayOfMonth><hearts>
Example: Sun4: "Hey, @.#$e#How's your day going?"```
Well, the modding wiki is where stuff like bigger tutorials or examples should live
Reference your keys from the Modding:Dialogue wiki page on the main SDV wiki for an explanation of what the key format means. 😄
AHHH
The official wiki would be a cluttered, out of date mess if those things lived there too
<season>_<key>
if you want to see them all
Avi just screencapped that section, but the wiki has more detail
(side note, seems like that birthday dialogue from CFD got consumed AcceptBirthdayGift_<taste>_<context tag>)
I'm so confused 😭
Is this correct?
Yes it is 8 hearts
You can only have even heart levels with dialogue btw. There's no "Mon7", for example
Dialogue will also default to the highest level of even hearts you match, so if you use the same key but with different heart levels, and jump straight to 10 hearts from 6, you will never see the 8 heart text ( think).
Though, how about normal dialogue.. like everyday dialogue. I may be confusing this for myself if anything, but I'm learnin
That is normal, every day dialogue
And yes fireredlily is correct about skipping dialogue if your heart levels go up too fast
keep in mind location dialogue also tied to heart levels is bugged and won't trigger correctly in 1.6.8 (fixed in 1.6.9, but expect incorrect behavior if you're not testing against the beta)
Got you
If I were to implement the specific categories of dialogues here, for instance;
Where can I find the codenames for them?
Marriage Dialogue section of the wiki has the kid-based ones
breakup, divorced, etc. is in Special Dialogue on the wiki
All on the same page. 🙂
i do what i want 🥳
nice, I love the shrine
Ahh the dancing text is cool--how was that done?
funny_transpiler.cs and math.cos, my two beloved children
Hmm? I can't seem to find it
the one Avi linked here, F1F4
Thank you!
Scroll up and down, there are many sections of dialogue keys
When you make something then take a break from it for a few weeks and come back to it and can't remember how it works
I resemble that remark
if it wokr dont break it 
I made a system that lets you set up a map property to have fireplaces already going using GSQ conditions, but didn't write anything down about it so now I have to figure out what the format was lmao
Also forgot I made it until I started trying to rewrite my documentation
my now-future desire to have fireplaces making everywhere toasty in the winter thanks you
I didn't even know I wanted that xD
There's a tile action that lets you make map fireplaces actually function and then the map property that lets you set up conditional fireplaces that turn on depending on whatever GSQ conditions you want
Yep
did you describe it in these generic terms or was it more fireplace specific?
three animated sprites 😌
I'm not sure what you mean by describe it lmao, I didn't write down anything about it
well
model it?
im not sure of the word

i like modeling things i dont like implementing em
you're in charge for ModContent.LoadAsync now
nou
I expect the design docs on my desk by next Wednesday
let me go test beds real fast
also me
- clicks on the save that crashes the game
- accidentally forgets to skip intro
I would love to be able to tell you what the hell I did, but I'm still trying to figure that out lmao
I might have to take a break on figuring it out because today is feeling like a dead brain day
just redo it then
But it works, I don't wanna :P
I'm close to figuring it out, but I have a noise distraction in the room so I can't focus very well
SWEET YOBA, THAT'S BEAUTIFUL.
(bed not upgraded is reproduced)
Is it ok if I show an issue with my portrait mod here? Or at least can someone help me? The issue is in #making-mods-art
That is an HD mod, uses Portraiture
So I’m confused why there’s a gap when I try to move the next portrait across
u need to use portraiture yourself then
No that’s not the issue
Is this a gap in your art program?
that seems like a problem with your art program
No I copied and pasted the image onto the canvas
should just try it in game 
if it work then u win if not then i guess your portrait isnt square
I'd assume that the image you copy-pasted is not the right size then
It shouldn’t be possible for a gap to be created by a program app since it is in the centre 🤔
That depends on so many things
No even if it wasn’t the right size it shouldn’t be possible
Portraiture base is 512px per portrait, some Portraiture mods are different
What program are you using?
If the portrait is perfectly square then no matter the size it will be perfectly square, so if this is wider than a square then it has nothing to do with the image size
Procreate lol
So that’s why it’s best to try it out?
Can't test that, I don't have any mac products
You can divide the width by 2 to see the original square size that they use, but because portraiture is varied, it's just how it goes
No it’s ok I can
As well as however many vertical portraits, divide that number by the divided width
If it isn't perfect, your base is off
Are you sure it's based on the whole selected area and isn't trimming the empty space out of it?
That would make it no longer square
That’s what I am wondering
I used shies sheet since I thought it’ll be a good reference and I still trust in it since surely others would’ve complained if there was an issue
So what I will do is import the file into my game
Then I’ll check for any other issue
Portraiture is also, Finicky ™️ if all else fails just force your canvas to be whatever square size you want
Difference with breakUp and dumped_Girls?
One is gender based
Dumped is a very specific cutscene, breakUp requires the wilted bouquet
!unpack
Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!
What cutscene?
(that unpack is for me.)
(good unpacking)
||Isn't that the one where you try to date all the girls at the same time?||
|| it is for getting caught dating all the women without a certain item ||
Dumped is used if your ||boyfriend/girlfriend dumps you because you tried to date everyone at once||, yes.
good call on the spoiler tag
Oh I has the certain item thing but it's been in game for awhile ...probably
Just for clarification; dumped_Girls would then.. be the player ||dating all girls|| correct?
Guys is the reciprocal, correct
(technically it's not a 1.6 spoiler, need we mark it?)
Or was there no guys tag to it
we arent even required to mark 1.6 spoilers in here. its just a courtesy
I couldn't remember if 1.6 added it or not tbh I'm lounging in bed 
is there a mod that adds parsnips
I just didn't want to be the one jerk not spoil tagging the same info in a row lol
no thats not possible with vanilla mechanics atm, too hardcoded
I am throwing this here again...
So I read that, and, after lots of tinkering and crashing, I threw up the old class and just copy-pasted the data to the event method.
Although everything runs smoothly, the edit seems to not be made (the changes I would expect didn't happened).
private void onContent_AssetRequested(object? sender, AssetRequestedEventArgs e)
{
if (e.NameWithoutLocale.IsEquivalentTo("Data/Fish"))
{
e.Edit(asset =>
{
Dictionary<int, string> nightFish = new Dictionary<int, string>
{
\\Bunch of [int] = "StringValue"
};
var data = asset.AsDictionary<string, string>();
foreach (KeyValuePair<int, string> pair in nightFish)
data.Data[pair.Key.ToString()] = pair.Value;
},
AssetEditPriority.Late);
}
}
Sorry for pinging you, I just wanted to refer to the link. It's ok if you can't help more 
ignore menightFish is empty
if it makes things clear, I am fixing the Night Owl mod, and this is the change to the fish so they show up between 2AM and 6AM
(is this a joke? the brain death is real right now)
(that's a hilariously weird way to do it
(yes parsnsips are the starter seeds)
let me try something different
cant u add hay though
(oh lmfao, right)
or is that also hardcoded
stoopid question but did you register the event
yeap
if (this.Config.UseInternalNightFishAssetEditor)
helper.Events.Content.AssetRequested += this.onContent_AssetRequested;
always a valid question though
also re: nightfish why not add them directly to the dictionary you're editing, why create a middle man dictionary
private void OnAssetRequest(object? sender, AssetRequestedEventArgs e)
{
if (e.NameWithoutLocale.IsEquivalentTo("Data/Fish")
e.Edit(static asset => {
var data = asset.AsDictionary<string, string>().Data;
foreach (var (key, value) in data)
if (" 2600" in value)
data[key] = value.Replace("2600", "3000")
}, AssetEditPriority.Late);
}
(also why the fuck hard code vanillaish values anyways.)
taht's very weird
the middle man dictionary is given by the original code
I love this implementation
my main issue is know why that monster doesn't work
yeah the original implementation is a bit sus, though I'm still wondering why the function doesn't run
the original implementation was taken from the author original xnb edit, when it was put directly on game data back when the ancient magic was written
I want to say, a very lazy take
and UseInternalNightFishAssetEditor is enabled in config.json?
yeap
I can assure it is running, because it crashed my game sometimes before I found the "right" way to put it
now it is not crashing, but also not changing things
and you confirmed with patch export Data/Fish?
im gonna ask stupid question, you hooked the assetrequest event right
here
console command?
yes
it should make a folder named patch export in your SDV folder, with a file inside containing the full dump
but if it is running but not changing the data, or not loading, I also would expect the exported data would be the same as the base
understood, please do it regardless
Result
as expected, no changes
to comparison, the purfferfish one
[128] = "Pufferfish/80/floater/1/36/1200 1600/summer/sunny/690 .4 685 .1/4/.3/.5/0",
wait
it is changing
it's because the Pufferfish is 12 to 16 only
every other entry that ends at 2600 got changed to 3000
yeap, just noticed the Anchovy
so it is very much working
anyway, 1. make sure to use atra's fixed version, and 2. make sure to always confirm with code 😉
(I will note that I got a bit lazy, if I was doing this proper I would check the actual time field and also do some more detailed replacements.)
but figured it was Safe TM
ok, I am angry now
I am having to fix it from one version before the one in nexus, because the nexus one doesn't have source updated
here was me wondering why you even checked if '2600' in value instead of just using replace(' 2600', '')
the mod currently changed time 2550 to 150...
so the changes on fish will do nothing
no one's ever gonna make a fish named 2600, I think your code is good 
The SCP Foundation's 'top-secret' archives, declassified for your enjoyment.
fak
damn it actually is a fish too
exactly lol
thats incredible
if (this.Config.StayUp && Game1.timeOfDay == 2550)
{
Game1.isRaining = false; // remove rain, otherwise lighting gets screwy
Game1.updateWeatherIcon();
Game1.timeOfDay = 150; //change it from 1:50 am late, to 1:50 am early
foreach (FarmAnimal animal in Game1.getFarm().getAllFarmAnimals())
{
this.oldAnimalHappiness.Add(animal.happiness);
}
}
still won't be hit by the replace method including a space 😌 now that's future proof
looks like you need to specifically account for SCP mods now
what tf??
does any exist
they might write "SCP 2600"
i feel like the venn diagram is 2 circles here
but the circles arent immutable
brb making a mod to add Dr Clef as a romancable NPC
loool thats incredible
would be awesome make an SVE SCP edition
C# syntax question i have a switch case like
switch(enumValue){
case TheEnum.One:
EventOne += Handler;
break;
//... and more cases for all values of TheEnum
}
and a corresponding one thats EventOne -= Handler
is there nicer way to write this 
i was about to write a stupid idea that i didnt know if itd even work and then you had to go and edit your message to imply theres more than 2 values of enum 
i tried to like, make a method to return the Event
but hrm i guess thats not how C# events work
could go for a Dict<enumValueType,type> and just EventOne += Dict.getValue(enumValue)
Not really, except to create an Action<HandlerDelegate> using that very same switch.
how about foreach (var event in eventList)
thats too much python in this house, but also Handler is the constant one
its the event that it gets attached to which changes
EventOne through EventN are all same signatures
It's because events aren't really fields or properties, they're multicast delegates, so add/remove is essentially like a method call, it doesn't matter that they have the same signatures.
Same as "switching" over N methods that all have the same signature.
Either way you need a switch because of the enum so what are you trying to eliminate anyway?
i have 2 switch rn, one for += when u equip trinket
one for -=
i would like to only have 1 switch cus i am a fool and will forget to do it 2x whenever i add new value to this enum
Can't. Again, think of adding/removing event handlers as method calls, essentially.
unfortunate
maybe if i get annoyed enough to make source code generation just for this
I guess you could have one big switch statement with a bool parameter that says whether to add or remove, but you're still going to have separate results for add vs. remove.
this is amazing
Trying to figure out how this map will fit into pelican town it's a farm map heavily inspired by loafys mini garden farm
Should I make it bigger?
hey y'all on the beds, spot the bug
It's the same reason you can't "forward" an event by declaring (for example) class Foo(innerFoo) { public event EventHandler Bar => innerFoo.Bar }, it's simply not how the type system works.
mood
two heights??
yup
so did it break in 1.6.9
very recently too
i feel like my 1.6.8 bed was fine
1.6.8 beds were fine
That seems like it might be good for a warp in Town near the Community Center area maybe?
I could see walking left from Community Center area to there if it's not gonna be the actual farmhouse location.
I loved the solution, but I am hard-fixing it right now
I am just glad the fish times accept more than 2 values if they are giving in pairs
I will use atra's to work on a better version ocasionally, but for now...
is it fine to have a 2 warps from a dead-end location to the same location in sdv 1.6 ?
Wdym
C < - A -> B is fine
You can have loops but the pruning is a bit incorrect and the game generates a lot of not the right path
it's more like
A
↕ ↕
B
Oh that is fine
two separate warps between two locations
Uh, is it A not contiguous?
Does an NPC try to walk there
I guess I should ask if B is not contiguous
aren't those cases isomorphic
you can walk to each warp in each map without leaving the map
i don't know what these words mean
I assumed B has more warps elsewhere
front door ↔ kitchen
verandah ↔ bedroom
That might be fine
isnt this like science house
it's a lot like science house, but less science
(No, maru's bedroom door is hardcoded excluded from the scheduler)
So yes but no
Still, I suspect fine
oh to hardcode people from coming through my bedroom door
why set x if y is offscreen 
nice to know i'm not the only one constantly flipping i, j, x, y, width, height, left, right, ..
if it's only maybe fine to have a circular warp setup i probably wont bother
but think of the R&D
Would it help if I upgraded that to "probably fine"?
hmmm i do like being groundbreaking & 🆕
wobbly text already has such a bright future
think it's safe to format it as "(wave)My dialogue is so good#$b#(shake)so very good"
are u gonna frameworkify anything u r doing for this elaborate map mod
Lmao, nice. I was staring at this code earlier trying to figure out what's wrong 
This is a vanilla issue then, so where would I report that?
i guess it depends if there's interest and the thing ever actually comes out
and if it isn't buggy
and doesn't run very very badly (i dont care about performance at all)
(i hate updates & requests & also any-term support)
!officialbug
If you've checked that it's not a mod bug:
- Report gameplay bugs to the Stardew Valley developers here: https://forums.stardewvalley.net/forums/12/ (do a quick search first so you don't report something they're already looking into).
- Report typos or translation errors here: https://forums.stardewvalley.net/forums/32/
Alternatively, you can emailsupport@stardewvalley.net
Maybe
HI! Im trying to to figure out how to make my NPC mod compatible with other mods like SVE or Polyamory, etc. But I dont know how to do it. Does anyone know/have a sample for it?
@calm nebula: "take a look" (3d ago) [Requested by bblueberry]
the basic process is you use content patcher's HasMod token/condition to check whether SVE is installed. if it is, you do X, and if it isn't, you do Y
do you have a sample for that 🙏 (im a visual learner)
my only example is my NPC mod, which is probably not ideal for learning the ropes
not all mods need special compatibility
i think polysweet should just work if your npc is romancable, but double check the mod page
NPCs usually require some for SVE, because SVE edits every map, often heavily, so much of your schedule is often wrecked
i released my npc mod and someone said it wasnt compatible with polyamory (it crashes on the day of wedding iirc)
hmm. do you have a custom wedding script?
im looking at this rn but i have no idea how to type it out
nope
That's probably a bug with polyamory tbh
@calm nebula: check yourself (6h ago)
i didnt know uber convert myself to yourself
Yup, beds checked
on any patch, you can specify conditions using When, which looks like this:
"Action": "EditData",
"Target": "Whatever/Asset",
"Entries": {
"etc": "",
},
"When": {
"HasMod": "FlashShifter.StardewValleyExpandedCP"
}```
that When condition specifically is for "SVE is installed"
so that patch applies only if SVE is there
ok lemme look around
so once you identify what things about your mod need to change to account for SVE, you add patches for those things gated behind the HasMod condition
in my mod, i set up everything in the default state, assuming SVE is not present. then i use "Action": "Include" with the HasMod condition to pull in a file full of SVE-specific patches which overwrite the default values and/or add new data as necessary
What line is this for you? I'm not actually finding it in my decompile
ahhhh i see!!
okay i get it now, thank you!
so i have to check one by one for overlaps 🤔
... are you checking your festival positions? god help you if so
🥹
but for the polyamory compat, i dont have custom script for wedding or anything so it shouldnt be on my end's error,.....rigth .?
don't forget you have to check four years for SVE spirit's eve, and you have to patch update if you debug switch years because SVE is like that
(source: i failed to do both of these things and just fixed them recently)
they crash everything they try to marry her and go back to farmhouse
Do they have Custom Spouse Rooms Continued? That mod crashes the game when you propose to your second (or third, etc) NPC when using Free Love (and maybe PolyamorySweet). It can be fixed by disabling CSRC on the proposal day and re-enabling afterwards.
Hopefully that's the issue!
I see why, I had switched to my 1.6.8 install earlier and was still on it when I decompiled again 
I don't quite understand how we can do Schedule Animations, despite reading it on the wiki. Could somebody dumb it down for me to how it works? I, of course, understand the part of inserting the code into content.json though.. I'm not sure how the code could identify the sprite sheet, and further.
the sprite sheet the NPC uses for these is just whatever one they are using right now
what ichor said, and then they actually have them numbered like this
I still don't quite understand this as well
How does the code identify which row is what, etc?
its (starting anim)/(main anim)/(ending anim)
for instance: 36/37 37 37/36
Sooo.. if I were to make an animation on the 5th row
would it be 16/17 17 17 17/ 18
and so on?
yes
depends on which sprite youre using
if theyre on those numbers, then those numbers is what youll be using
Got it, thank you!
excuse me, may i ask some questions here?
Yes of course
The urge to respond with the command lol
im currently developing a mod, and i wonder how to call a console command with my mod. i cant find infomation on wiki
It's generally considered not a good idea, but why do you want to do that?
which console command do you want to call
(if it's your own command, you can just call whatever function you hooked it up to)
i want to call player_add(sorry, in fact im a greenhand in both moddeveloping and c#developing)
can you skip doing that and simply add the items to the player's inventory yourself?
I see, thank you
ItemRegistry.Create(qualifieditemId)
and then Game1.player.addItemToInventory
should decompile game if you havent already
have you heard about the mod chat commands? it seems that this mod is invalid in the latest sv version.
i want to use the function at first, so i searched on nexus, but turned out to be invalid. so i want to develop a similar mod.
im now trying to call the command which received in in-game chatbox
Fun fact: I sorta did that a few weeks agp
does this one work https://www.nexusmods.com/stardewvalley/mods/28325
Feel free to lift code, or it's https://www.nexusmods.com/stardewvalley/mods/19458
(What I do is reflect into SMAPI to add the commands into the raw command queue.)
and in 1.6.9 you can just add your own chat commands
the code i lifted from shockah does the same thing and also emits IL for some reason
what do you mean by this 
Funnily enough, I also lifted the same code from shockah ||because I was lazy||
How do I make a portrait mod? Do I just replace the images or is there something more to it?
you make new images the way you like them. then typically you write a bit of json to tell content patcher how to apply the new images
If you're making those HD portraits, you'll need to make it to Portraiture's standard
Don’t worry it’s the correct size
Correct size for vanilla or Portraiture?
Portraiture, 512 px
I don't know if Portraiture has size limitations in the same way vanilla does
The issue with Portraiture is more along the lines of how you add the files to it, since it's not like making a content pack for CP
It still hasn't been updated, so content packs for Portraiture are still broken
Which means the only way to use it is the folders in the Portraits folder inside the Portraiture folder
Is it ok if u teach me how to write the json? I want to overwrite Harvey’s portrait
Yeah don’t worry it works on my other portraits right now so it seems ok
another time, perhaps, but i am signing off in about two minutes
plus you are doing HD/portraiture so you won't need to write any json
I just noticed Portraiture got the Nexus ID 999 lol
the people who download your mod put stuff in the right folders
Oh ok that’s a relief thank you
the only better get was ARV with 9999
i remember it being kind of complicated
It's not that complicated, you need a folder in the Portraits folder of the Portraiture mod folder
someone is hoarding 10000 https://www.nexusmods.com/stardewvalley/mods/10000
You name it whatever you want your set of portraits to be called
Yeah but there was an issue when I tried to draw over a portrait
Then you have to make sure your portraits are specifically named so they override the proper base images
And they all just go in the folder
The Harvey portrait has an issue
The original portrait is fine on it’s own but I can’t try over it since the portrait sprites goes out of place and you can see the top of portrait 2 while portrait 1 is displayed
I'm not sure I understand. Got a screenshot?
All good
I’ll show u in dms
Uhhh ok
I didn’t want to clutter the server
But I hope you can help me, it is fine if you don’t
I just typically don't do support in DM's lol, server is here for getting help so it's my preferred place to do it
We can always make you a thread if you're worried about cluttering this channel, but also the channel isn't busy right now so it's probably fine to stay in here.
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
Missing commas
Oh yeah, that's a wild quote lol
its not actually ending the quote until the quote on the next line, and then ofc errors from there bc thats wrong
Are there any other errors that you can see?
I'm not sure if Red is an indicator of error but
not at a glance. would be easier to just fix that error and pop it back into a json validator and see if it catches any other commas
text inside quotes will appear reddish in the validator
so the fact that things that should be red arent and things that shouldnt be red are indicates some missing or misplaced quotes or commas, in this case both
(bc of the weird not-quote)
After parsing a value an unexpected character was encountered: D. Path 'HitBySlingshot', line 18, position 3.
I added the comma at the end, same with line 18
that error is because of the weird quote at the end of that line
idk what exact symbol that is but it doesnt exactly match a "
write a normal quote, i guess. dunno how you ended up with one single weird one in the first place, so iunno
Keyboard stuff
I'll fix it
Fixed! Now I have this
Property with the name 'Sat' already exists in the current JSON object. Path 'Sat', line 69, position 8.
I see the error
It does not have 2 after Sat
I love that my computer has suddenly decided that it doesn't know how to open png's anymore
Jesus
Could you look at this for me?
It seems that format is completely off the table
its just because you have it set to validate against Content Patcher's format, but this is just normal json
change the json format to just None and its all fine
I guess before I restart my computer, I'll check the new beta and see if they had already caught the bed issue
Anyone know how I could fix this other than rewriting recipes? #modded-stardew message
i was wondering the same thing 
I feel like I've walked into a conversation with no context lol
Bed's are fixed, huzzah
Sorry for the bother! This, now seems to also display as an error.
Though I do understand it--I don't see where the issue is
Your file is formatted as if you're just loading all that dialogue, but your Including it as if it's a patch
Anything you Include needs a "Changes": [] block with the patches you're doing inside of it
In this case EditData for your characters blank dialogue asset
I'm sorry, I'm still a little confused--I'm clearly not the best at this. What should I do, in that case? In the simplest way of explanation
Should I add the typical 'Changes' to dialogue.json?
Hang on, lemme restart my computer, I closed everything and need to restart before I open it all back up again
No worries!
{
"Changes": [
{
"LogName": "Add dialogue for YourNPC",
"Action": "EditData",
"Target": "Characters/Dialogue/YourNPC",
"Entries": {
//dialogue entries go here
}
}
]
}
And I should put this in my dialogue json file?
You would put this in and then all the things currently in your dialogue.json would go inside the Entries brackets
Everything from Introduction to Resort_Wander
And all of this is within my dialogue.json, correct?
Yeah, this is also assuming you've done the blank loading
Blank loading? You mean blank.json?
Yeah
Yeah that's already there
{
"LogName": "Blank json load",
"Action": "Load",
"Target": "Characters/Dialogue/YourNPC, Characters/schedules/YourNPC, Strings/schedules/YourNPC",
"FromFile": "assets/data/blank.json"
}```
Yeah that's already in my content.json
Cool cool
I'll test it out!
Just for verification; I'll send the json log, and let me know if it's correct
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 11 Home, with 5 C# mods and 3 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
Once again, no clue what is going on
nvm i think I might know the problem
or at least a problem
You edited your map without all the tilesheets present and now all your tile IDs are incorrect (or many, at least).
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 11 Home, with 4 C# mods and 3 content packs.
it says that the location is loaded but it still doesn't load?
You have accidentally named your location "Custom_ShurblordsMapPack_BusStopEast"
You have a typo, it says Shurblord
Hello
Does anyone know how to add an event for a custom location I’ve tried and it keeps saying my event is not found
need to load a blank json into your data/event/YOURLOCATION
*only if using tokens
The stuff with {{ }} around them, like {{ModID}} or {{season}}
could you share your current progress?
and a blank.json is literally a .json with { } that you use the "Action": "Load"
This is how to load a blank json to create the Events asset for your custom location.
{
"LogName": "Load blank json to custom locations used in events",
"Action": "Load",
"Target": "Data/Events/{{ModID}}_NationalPark, Data/Events/{{ModID}}_Campervan",
"FromFile": "data/blank.json"
},
(I am loading into two assets in that example, because I have two custom locations I have written events for).
I have a dumb question what is a mod id
The {{ModID}} token is a placeholder for your mod's UniqueID (the one from your manifest). People frequently use UniqueID as a prefix for their mod's assets to ensure they are unique. Some people use the {{ModID}} token to stop them from having to type/copy their UniqueID repeatedly.
Alrighty I have another question do I just put this in content or do I put it with my event?
It's a separate code block from the event itself, but if you're using an Include for your event file you can put the blank json load code block into the same file.
2:0, my reading and writing comprehension vs. me
you can make it worse, you can be like me and actually have it fit with the typo without realizing across both files
include: weeding logname weeding
"I don't want to marry him, I want to garden with him!"
It worked, nice
Heyy i was wonder how would i add that code to my content it keeps making my json invalid
What do your Town.json and Custom_Village.json files look like?
Your second line in there appears to be a botched copy of the first line.
Also, you should name your location something more unique than "Custom_Village" and you don't need to use a number for your event ID. You can use strings in 1.6.
(Also I think this has been recommend to you before, but I really do strongly recommend you use a text editor with syntax highlighting like Notepad++, VSC, or Sublime.)
heres the town
(And please use the smapi.io json validator to share json files in future as it's very hard to read screenshots of non-word-wrapped files)
oki sorry
what do you mean
Look at the two lines of the event in the screenshot. They are almost identical except the second line has several random quote marks and back slashes around the place.
im so confused lol im just not comprehending
Look at the bit underlined in red and then look at the bit underlined in blue. See how the bit in blue is a copy of the bit in red but with extra backslashes and quote marks?
If you still don't know what I mean, upload your Custom_Village.json file to the smapi.io validator and send the link and I will look at it and tell you exactly what to do
https://smapi.io/json/none/261d558aa08e402f86352f7bfb50b299 how do i add the blank json
With this in your content.json (before your includes for Town.json and Custom_Village.json)
{
"LogName": "Load blank json to custom locations used in events",
"Action": "Load",
"Target": "Data/Events/Custom_Village",
"FromFile": "assets/Events/blank.json"
},
Just make sure you have a file in your "assets/Events" folder called "blank.json" which has the following in it:
{ }
I wonder, how does the game handle Furniture in map data? does it instantiate a Furniture object or is it just a sprite?
sittable tiles aren't furniture if that's what you mean, they're their own system
and the fireplaces are their own method in gamelocation 
With Extra Map Actions, you can make fireplaces in maps work (in the beta version, still working on that documentation)
I was thinking of Furniture in general, I know there's a "sitting" map action or something like this. I thought I read about people reading the game Furniture tilesheets to put in a map file, is it just the sprites?
Yes, when someone is making a map with vanilla furniture they just load furniture.png into Maps. No fancy actions, just the images of the furniture.
furniture outside of the farmer placing it is all a lie 
Map furniture is a lie, crows eating crops is a facade, the walls aren't real man
the walls are a front HAH /leaves
okay note to self, Buildings2 will screw with cp tileactions
i just merged it down cause i'm dumb and i don't remember why i even had that
Yep, extra numbered layers are only good for their looks
i can no longer work, orange son is sitting on my mouse
Hopefully you didn't overwrite something lol
nah i think it was quite literally just a door overlay, which....... that must've been a 6am me thing
i've gone the fun route and literally all of my map properties and tiledata is through cp
Hm, sounds like a pain to troubleshoot lol
I have a couple of MapTiles in my Forest mappatch that are just there to delete tiles that I can't otherwise figure out how to remove lol
it's troubleshooting pain but i know what kind of stupid antics i've done, so it's just hunting down either the location edit or the tmx
i have to manually put these trees in ig
my dynamic token isn't working, even with async random 
oh well
easy fix
that's gorgeous
fun fact, that ugly looking brown one changes color and i now have the capability to make it glow in c# so y'know add another thing on the list of "stupid things i'm about to do"
fun fact, you'll have to rework their glow when 1.6.9 drops since it changes the light registration system
unless... does it changes the global glow cache or is it just lights? I can't remember
oh i only work in 1.6.9
that's a good idea
My orange boy just came in, laid down on my foot and started biting me, which usually means it's food time
Since he normally doesn't want anything to do with me otherwise
typical orange
The only orange cat I know is prone to biting and I have grown up with non-bitey cats so my feelings always get hurt when he bites me xD
I saved this punk from my inept neighbor, bottlefed him every couple of hours for weeks, and he grows up to be a jerk
My cat was very uninterested in human interaction (I didn't socialise him well as a kitten) but he did really enjoy headbutts. He'd jump up on our bar stools and headbutt my forehead so hard you could hear the "crack" of our skulls meeting.
Lmao, cats can be so reckless with their skulls it's amazing
It was always astonishing. He could do it so hard it left me with a bruise and he was totally unfazed.
Mine has recently started showing off, where he'll walk to the center of the walkway, flop down and stretch out as much as possible. But he flops by lifting his top half up and slamming his head into the ground as he rolls onto his back, it looks and sounds painful but he just stretches out like it's totally natural to give yourself a concussion before showing off
Hehehe so silly
god this wildtreedata hates me
(It's how he knocks his one braincell into the ether to be shared by the other orange cats.)
Ah yes, the passing of the brain cell
Unfortunately, he's a little bit too smart for his orange coloration
i thought roku's always had the braincell cause it's the smartest one
mine would like to take a loan on the braincell for a day, i went out for a midnight run to the store for cat food and he immediately headbutted the bag while i was cutting open a hole
Wild tree data hating you, though? 
We've had to start locking our screen door because he figured out that if he jostles the handle while leaning into the door it'll open up
cue: i'm permanently stupid and GetData always stumps me
Not everything has a GetData
...blue tongue skinks also share one braincell, but I've yet to discover how they share it amongst themselves yet
what is this and how do i call it
hint: you already have wildtreedata
Oh yeah, you're passing it WildTreeData
And trying to use that to GetData which would give you WildTreeData
one orange role braincell 
roku always has the braincell, i never do
Maybe you two need to headbutt
i say it every day but i shouldn't nap at 6pm
There are so many good emojis in here but by the time I finish perusing them to find one that's appropriate (and different to the ones I always use) the situation has moved on
Lol, the problem with choice
This is the server I was pulling emoji's from when I had nitro
But imagine being on other servers with great emoji choices, I'd never get anything done lmao
SMC has some excellent emojis as well
there's no problem that can't be solved with a good 
(me literally only using keklmaodog)
Which I used a lot here and in DM when I briefly had nitro
if there is, it gets the 
my favorite emoji i've ever drawn


The only reason I even half-get that emoji is because I have seen you use the...fishy? thing in other contexts
oh it's the..
god i have to google it every time one second
i'm fighting demons on making it a stardew fish
It looks like someone slapped googly eyes on it lmao
Huh
you could never have eyes that tiny on a 16x16 sprite. make it full hd
Despite being online almost every moment of every day, I am not very Terminally Online TM
Gotta harness Scale Up
all of my personal discord's emotes are that
and this one emote cause i have a problem

ah, an upside-down cowboy hat. of course
Give it eyes
shit you right
Have you put the beard on the sacabambaspis?
I think you'd need to put the mouth on top of the beard
thankfully i have them still separated
but that is a "i don't wanna work on anything else" time, i'll put it in the backburner
Can't wait to forget about this convo and just be online one day and see this emoji lmao
well on actual topic, now i need to figure out... adding specific hues and intensity to this light
i'd have to make a totally different thing if i wanted target capability, huh
Target capability?
cp capability* effectively putting my own squints dictionary? into wildtrees for adding data to keys (but still being compatible to tree size framework)
Uh, depends on what you're trying to do
Like if you want many fields like how a normal data model is set up, then you would add your own asset
Trying to see if the wiki has a good example of this, but it's kind of two ideas merged to one
i might just be lazy and make it take lantern light
since i'm just using the customfields
https://github.com/rokugin/ExtraMapActions/blob/1.6.9-beta/Framework/AssetManager.cs#L9
I'm doing it here for this super basic asset that I made entirely to make use of GSQ's lol
Models/FireplaceConditionsModel.cs is the data model and assets/DefaultFireplaceConditions.json is what is loaded as the default/gives an idea of what it would look like
I have a more sophisticated one... just gotta remember in which of these mods lol
Eugh, right, this is from when I first learned to do this and is still rough lmao
I'm definitely gonna end up redoing a lot of code in this mod before I release it lmao
oh wait
asset -> model -> implementation is a really simple pattern in sdv with cp, it's super convenient
lemme try and english this in terms of me just using the customfields
i set it to a bool that the customfield has my tag, it goes through the parsing yada yada because i just copy paste it
thinking then i have to find the location of it? or is it already parsed? for doing the draw effect of the lantern 
well if you're checking a light then you either have its id or its instance, so getting the position won't be hard
you could have some model for (bool, position, draw params) and key it to id if you care to, or just do it on the fly
my lighting setup uses custom type instances, so i just pass it the data to hold onto when i instantiate one
it can do whatever it likes from there
(And keep the light source revamp for 1.6.9 in mind to ease the transition later!)
it's a pretty minor transition haha
i hear a lot about it but it really just seems like int -> string
(i deleted my 1.6.8 folder *as an excuse to not debug my SVE-dependent mod
)
That's literally all it is more or less. 
LightSource.onlyLocation is the only other interesting part but i would've figured "that the light is only shown when viewing that location" is how the game would work anyway?
why would i draw a light in a different location. what
Only reason I can think is so that when you transition to that area the light is already going and you don't risk any delay between arriving and it being on
we aren't using fluro tube lights, they don't take that long to warm up 
It would have to be a really important light for that to matter at all lmao
honestly i like the idea of like, that subtle flicker of motion detecting lights woulda been a good project if i planned spooky season better maybe next year
it'll be cool to see more custom lights. i think the only reason they were even changed going into 1.6 is cause i wanted them to flicker lol
so naturally i now have like a thousand lines of data and impl for flickering lights everywhere
A good portion of the mods I've made now have been because someone has been like "I want this thing" and I thought "I actually want this now too, time to make it"
is it hard to 'detect' where the player is in realtime? because i can now just imagine lights going out behind the player(s) as they ascend towards a spooky building
...now there's something that might be fun for MEEP. Proximity lights. 
Just get their tile position in UpdateTicked
you can use vector2.distance(light.position, player.position) to find your radius
@velvet narwhal #making-mods-art message Honestly I think you do actually have a special talent for ~~derailing ~~giving inspiration and motivation cause last time I ended up releasing a whole mod for 1000+ wallpapers after you asked one innocent question! :bongo_cat_heart: :VMVLmaoDog:
- @worn coral (Jump)
grand ideas, no brainpower to do it yet?
ohh those are the quote ids. i've been seeing all these 6xxx quotes and wondering man that 6480 guy sure gets quoted a lot
Lol
wait aren't you a bot mod 
not green, not mine ☀️ (overselling it, i only did leah and jukebox)
I think Uber is a non-server-specific bot
ah okay
my tree lights are now on the backburner because i added the dictionary<string, lightsource> and i don't know what i'm going to break since i just copy pasted return Game1.currentLightSources to every path 
i now brainrot by watching youtube
well it's certainly a start lol. call it bootstrapping and call it a day
correct, but made by an ex-junimo
Ah neat
Hi guys, is it possible to make a custom touch action without C#?
no
i wonder is .NET 8.0 used for smapi mods? I never made one
thank you very much!
the very first tutorial guides how to make a onButton event, so it may help a lot
for compatibility, when is the best moment to check if another mod is loaded?
usually GameLaunched
so im using a lot of mods as references for syntax etc but im noticing that pretty much every single one breaks standard json rules of no comments and no trailing commas, i assume this isnt an issue for contentpatcher, does anyone know how i can disable these warnings on vsc?
though it depends on use case
I want to check it once and store it on a boolean instead of calling the mod registry everytime the clock ticks
so it may help
yes you just store a field or prop once you check
mod list dont change mid playthrough
yeah definitely don't check the mod registry every tick
also I am not sure if the DynamicNightTime can handle times of 150 to 600, so I gonna make a local test
(you should avoid doing anything every tick, if it is possible to avoid)
the code is neat but very heavy
(I assume clock tick is time changed here )
Also I avoid doing things always just to be lazy pufferthumbsup
('good code practices' is a must lecture to game development
)
oh, you're probably right. still, always run your code as rarely as possible
I am used to make codes to handle millions of data, so otimizing it as much as possible is a must to me. and rechecking files/registries that may be giant is a big no in it
(for example, I still have not done the mapdisplaydevice mod thing)
yeap, I just wanted to make it shorter and don't recheck the code
(what is it that you are working for if I may ask?)
(I was supposed to repackage this PR as a standalone mod last weekend. https://github.com/Pathoschild/SMAPI/pull/964)
"supposed to"
oh, editing tools
tbh modregistry lookups are a single string hashmap lookup anyways
this is too advanced to me right now
but it needs to check the registry of all mods, no?
even if the search is usually fast
checking a hashmap is constant time
ok, now I need to learn more about checking a hashmap
the result won't change, since mods are only loaded once, so you should still cache the result like you were planning to do
I am usually stuck checking millions of lines in data registries, what makes my applications take so much time
Quick question - I'm trying to make a quest that requires the player to go to "Mona"'s grave at a certain time. However, I'm not sure how to set the condition; when I researched how to create quests, I saw that, in the raw data, all of the ones that told you to visit specific locations at specific times were marked under the "Basic" category, and seemed to be missing the condition section. How do you set this condition properly? The code is below:
{
"LogName": "First Quest Created",
"Action": "EditData",
"Target": "Data/Quests",
"Entries": {
"{{ModId}}_131": "Basic/Investigate Mona's Grave/Abigail has alerted you to some strange happenings at this \"Mona\" person's gravestone. What exactly is going on?/Investigate Mona's gravestone at night./-1/-1/0/-1/false"
}
}
After this, I'd also like to try making a specific new area we're adding inaccessible until you complete this quest. How would I achieve that?
I am yet making an onGameLaunch to my fix just because I feel it is right
i can't think of a way offhand to do this (complete a quest by interacting with a specific map tile at a specific time) with only content patcher. you could use When conditions and "Update": "OnTimeChange" to set the tile property at the desired time but you wouldn't be able to connect it to a custom action without a SMAPI mod to handle it.
maybe MEEP or EMP or BETAS or a similar framework could help you out
i don't think button has done anything in BETAS regarding tiles queries 
just a guess. it has every other feature /lh
it's not that hard to make something i suppose
