#making-mods-general
1 messages · Page 184 of 1
@ornate trellis i released MMAP-1.4.0 which has the draw layers stuff, there were some field name changes so here is new wind turbine set up. the produce is still a problem with only 1 tile though, cant seem to have input and output chest on same tile
Finally finished my mod! https://www.nexusmods.com/stardewvalley/mods/31119/ Thanks to everyone who has helped me in the discord!
congrats! would you like for this to be put on showcase?
That would be awesome 🙂
(If we make it a central station, one benefit could be maybe integrating it into Train Station and renaming it to Central Station to cover all the transport types.)
(have you tried just one chest)
(ignore me if you indeed only put 1 chest)
would you like to add a blurb for the showcase or is the description sufficient?
I’m down to do whatever you need. If you commission me lol 😂
I think the description works as is
what's the method to display a popup message that doesn't have the little icon box? (like the level up notification)
@unique sigil Since you were suggested first, would that be something you'd be interested in? If so, do you want to move to DMs to discuss the map/pricing/etc?
sure! 
Congrats Kisaa XD
may I make a suggestion for the nexus page?
I’m sure you’re going to do a darn good job
Yeah?
It's just a property on hudmessage
which is all fine for me as I still need to properly set up my pricing for map mod commissions…
NoIcon = true or smrh like that
@unique sigil might I be allowed to send a dm?
you may want to add at least one close-up screenshot of the crops- either manually blowing up the sprites, or using a higher-resolution screenshot
sure!
hm maybe what i need to do is make 1 chest thats simultanously both input and output?
@thin hamlet fyi, here are the 30 minerals in your MCGM mod that are classified as gems (category -2) today (the others are classified as -12 (minerals)): (O)Alexandrite (O)Ammolite (O)BlueZircon (O)BrownZircon (O)Clinohumite (O)BlueCoral (O)BrownCoral (O)GreenCoral (O)PurpleCoral (O)CrystalOfLife (O)CrystalOfDeath (O)CrystalOfLifeAndDeath (O)Cymophane (O)FireAgate (O)Fluorite (O)LavaCrystal (O)MossAgate (O)Andesine (O)Aventurine (O)LavenderQuartz (O)RutilatedQuartz (O)RedZircon (O)PurpleSapphire (O)VioletSapphire (O)StarGarnet (O)GoldTopaz (O)SkyBlueTopaz (O)YellowTopaz (O)YellowZircon (O)Zircon
see my mistake was trusting the constructor to have all the relevant bits in it
yes, with the "Chest" type
It would show a chest ui which is somewhat annoyong
yea
Yeah the in-game screenshots came out blurry when I cropped them, I'll have to mess with it. But for now, just happy its working and ready to be shared
it also just, looks kind of weird with just the stalk
Game1.showGlobalMessage?
i think a 2nd tile for outtake would look nice prob
Sounds good!
Wow ive added over 50 minerals already
I think that broadcasts it though

have a maintenance panel visible on the left side as input?
First rule of programming: trust no one
especially not yourself
ah okay then HudMessage is what you want
https://github.com/zombifier/My_Stardew_Mods/blob/master/FreshFarmProduce/ModEntry.cs#L582
Not even yourself....
Welp bedtime. I’m tired I sleep
i trust you atra
comments for the comment god, xmldoc for the xmldoc throne
mhm mhm
Prancing around in winter in a Lara croft top for the...win?
</> </> </> behold my shruiken collection
New quote added by chu2.718281828459045235360287471 as #6305 (https://discordapp.com/channels/137344473976799233/156109690059751424/1332193696963367023)
I'll get started on the TCC ones now, this process is so much faster with colored objects!
Cant wait to see!!
I think I'm going to remove your crystal of life/death though, those are worth so much that they become brokenly valuable when put through the machine
Yeah
Theyre super duper rare on their own
Like 0.5%, i could imagine their high price would break stuff
the crystal of life and death become a pair of earings worth 225750 😛
anyone know offhand the id for that maraca-like sound that sometimes plays when you try to do stuff and the game won't let you?
I don't suppose there's any way for a mod to check for the player's horse friendship when using Horse Overhaul?
Was thinking a letter with the Horse Flute being sent at full friendship would be a good way to unlock it during the mid-game rather than all the way at the end
has anyone had an issue with smapi freezing when trying to type a command in? Trying to type sinz.eventbyid in and as soon as I type sinz it freezes and while the scroll bar moves, the display does not. Game still ran fine. I am very confused
u can do debug logSounds
huh, that's really useful, thanks
These look neat! Can I make a small suggestion for your mod page? 
Oh nm I see Wren had the same idea I did 
Thanks! Yeah I’ll have to make a banner and maybe take a regular screenshot rather than use the in game screenshot function.
Is there anything more satisfying in dev than deleting thousands of lines of broken zombie code?
(Deleting millions of lines of unneeded code.)
doing it twice?
Good point, Topper. Still, I don't think a lot of folks have one-man projects that have millions of lines period, never mind millions unused.
So I am celebrating anyway.
oh since you're around and i went down a rabbit hole of "gotta stick to the bit of shitposting"
i have finagled my own way around j club compat in my nickname/named dialogues:
[LocalizedText Mods/Aviroen.MMaru/Translations:Nickname]
i'm gonna test in a second but, uh 
i am curious

it seems it will not work in conjunction with BETAS
#$action Spiderbuttons.BETAS_DialogueBox Aviroen.VoidsentCP_Edelweiss \"Yo! Sinny! What's up?$1\"
#$e#...[LocalizedText Mods/Aviroen.MMaru/Translations:Edelweiss], can you please stop calling me that?$2```
but the LocalizedText does work
unless i've forgotten something somewhere, highly plausible
interesting that the BETAS dialogue box appears to be displaying the internal name under the portrait? 
funny enough, a lot of the J club relies on Dialogue parsing strings for display to the player. as long as a jayified NPC's display name appears in the text, it gets replaced. so it doesn't matter if you put it in via localizedtext or some other way
gonna test rq without j club if the internal names still show up because i realize, uh, i've been debugging these chaotic dialogue lines with vanilla characters
yeah BETAS is showing internal names, i go ask button
probably a simple goof. Name is the internal name field (easy to use by mistake)
oh so even if it was hard typed as if i wrote Edelweiss it'd get jayified? 
yeah, if it matches the NPC's original display name
BETAS is not the one displaying the name
its the dialogue box that displays it based on the Speaker its assigned
it was me, i thought i hit build at some point but apparently i have not 
i think i'm most likely hitting the record on tallest cliff face in stardew with this map
at 30 tiles tall, and man at that height i'm definitely pushing what the tiles support.
Earlier I was struggling with getting an AT pack to work for me, and got some suggestions but nothing really did what I was looking for. I'm happy to report that after taking a break, and working on it some more, I managed to do what I wanted to do with AT! 🙂 I still don't know why it wasn't working before, or what I did differently this time. But it works, and I was able to apply the texture I made to my shed, so I'm content. I have some tweaks I want to make on the texture I made (namely that I don't like the barrel on the right so that's going the way of the dodo), but I'm super happy with it now 🙂 I've always kept a shed just for fish and bait and such, and having the exterior reflect the contents makes me happy 
if you're curious what it looks like atm, Planning on making the bottom part beach.
Your maps are always stunning, Draylon. I'd kill for like... a working stream? To see your process when you start a new map and how you work through the design process.
I actually did a few a few years back when i tried my hand on streaming on twitch. those vods are probably long gone though, and it can take a lot of time to go through, I've probably already put like 10 hrs into this one for example?
One of the secrets weirdly enough is a larger map, while a lot more work, gives you a lot more space to "draw" on, its one of the main reasons i tend to make large maps, I ALWAYS want more "canvas" to work on.
actually y'know what i'mma be streaming my tiled in Joja Mart Channel for a bit if you want to watch.
just a theoretical question: a mod to let companions (no function) follow behind certain NPCs?
...in other words, giving Pokemon to the love interests? 👀
I would also like to know the answer to this... 👀
I looked into it at one point for the same reason (as well as for DSV's Marigold) - Custom Companions can have a companion that follows a particular NPC around, but they can't move between maps unfortunately
onlocationchanged, clear in old, add in new? It seems doable!
!! Thank you for the answer!! Weird they can't go between maps? Do you set it for like, every map then or...?
(this sort of thing is far out in my mod but I'm still so curious Thank you !! )
Best option would be to either have a CC pokemon that just roams around the character's house or make them an antisocial custom NPC that has the same schedule as the character, though that can run into schedule compat issues
I def. want as much compatibility as possible, but maybe it can be a side mod for my own learning/for the more vanilla players
( also, I'm making Junimos into Miniors bc I imagine Stardew Valley's "Mythic" Pokemon is...Jirachi)
Nah, it doesn't work. Trust me, I looked into pretty much every possible way to do it with CC (and that was testing with Linus too, who has a very minimal schedule), but it's a major pain in the ass and finicky as anything
CC just isn't designed for it, unfortunately
(im also imagining you blocking the NPCs path so they get annoyed and then rush off... leaving their pet in their dust... sad...)
LOVE that idea
oh chu's here perfect, i was about to ask how feasible the idea of giving an NPC a trinket
not necessarily for you to do
like waffle ES
you just know how trinkets work best
i don't think npcs have the List<Companion> field that trinkets use to put their guys in
would Trinket Tinker trinkets work if a mod did give NPCs companions, or do they specifically rely on a Farmer
the abilities depend on Farmer ofc, but u can have trinkets that lack ability
that said, Owner is type Farmer, so it'll be jank
If we're getting into C# territory, my thought was doing an antisocial NPC but with some way of grabbing an NPC's schedule and setting each co-ordinate to square roam around that point 
new idea: fake invisible farmer that follows the NPc everywhere on top of them
Though it'd get crowded in the saloon lol
i just dont really think it's a good way to do things u know 
say what about sprites in detail
for pokemon, they could "go into their balls" in crowded places like the saloon 😂
what about sprites in detail
Yep, but Sprites in Detail just makes the visible sprites larger, it doesn't affect schedules 
NPC still has the same hitbox
Collision box? Whatever the term is
naruhodo
tbh i think any good solution here would require C#
i personally think just making anti social npc would be alright
just some schedule faffing about
i mean what would you do as soon as any mod touches literally anything in the schedule
9001 compat patches
Yeah, it's definitely a way that would work, if you don't take into account schedule compat
its not even always fine in those cases!
alternatively u just have pokemons around people's homes like pets
( I'm a fetus-level programmer so this is really cool to see ya'll discussing, thank you)
thats how it tends to work in the actual pokemon games anyways
Which is also part of why Marigold is automatically disabled if SVE is installed, I do not care in the slightest for going through & adjusting her schedule to whatever SVE does to Linus's schedule and the map changes
i always talk to all of them
subclass monster and have it move towards a target NPC, like slimes
Is the main issue something with collision?
the main issue is kind of the all of it with different submain issues depending on your requirements
Could do a combination where most pokemon just hang around at home and only some characters have them following, like Abigail taking hers to the mines
and what exactl you were imagining
Alternatively, edit the NPC's sprite itself to have the Pokemon around?
not a whole lot of room without sprites in detail
now, bc trinkettinker has the whole anchor system
there actually isn't that much association with farmer
I was imagining just the sprites near them--no need for any function to them!
And I was eyeing editing the sprites themselves at some point if it came to that...sprites in detail would probably help? 👀
its just that there's nothing implemented to spawn a companion adhoc
how much of a refactor would it be to make the Owner a Character instead of a Farmer 
that part is just going through vanilla trinket logic that i didnt touch
Sprites in Detail would definitely help if you want large NPC pokemon that can still move around 😄
this still requires the player to wear the trinket though
not really
I imagine you can also use this framework if your Pokemon is something like Ghastly: https://www.nexusmods.com/stardewvalley/mods/30741
nothing stop me from doing some nonsense where i add a companion to the farmer whenever they r in a map with an npc that is "supposed" to have a companion
besides position the farmer is really just used to determine whether we should do some owner/local player only code 
ultimately this is like
( for the pokemon I was thinking purely aesthetic but hey if someone adds more-- 😂 )
creeping way off the trinket framework purpose lol
r we sure this aint the exact kind of thing custom companions is for 
you're a lot more reachable than the person behind Custom Companions
Main issue with CC is that they can't move between maps
and malleable
CC's more designed for things that either follow the farmer around (proto-trinkets) or randomly roam around a single map
i say this with nothing but kindness in my heart
companions cant rly do that either
not yet!
At least we can spawn them in people's home then!! 
Everyone gets to headcanon who has what
yep that part's fine and vanilla
Peaceful was very reachable & helpful with suggestions and questions, but they suddenly disappeared a while back 😅 Hope they're okay
Completely off topic, but my (portrait-ing) life would be complete if there's some way to patch CC portraits with content patcher.
yeah theyre still active on GitHub and such
Which method to go with comes down to how exactly you want them to function. The two easily doable methods are CC or antisocial NPC:
Both methods:
- can add dialogue if you want, including portraits
- can be set to randomly roam around
CC:
- can fly
- can easily follow an NPC around a single map
- can't move between maps
Antisocial NPC:
- can move between maps, but requires duplicating an NPC's schedule
- can easily hook into CP conditions/triggers/etc for stuff like changing the sprite after a condition
- more likely to have compat issues with mods that edit schedules
I thiiink you might be able to? You can definitely CP patch dialogue, so portraits might be possible too
despite us talking about Custom companions i still for some reason thought you meant Community Center portraits
I've looked and tinkered it for a long time. You can patch dialogue. You can patch overworld texture. But not portraits. 😔 (well at least I was unable to find how in the end.)
This was an amazing breakdown--I've saved it for down the line when I figure out which direction I want to go. Thank you so much!! 
No problem! 
"Id": "{{ModID}}_barrierspherebuff", "BuffId": "{{ModID}}_barrierspherebuff",
is this gonna cause any problem or is that correct?
a little context?
just trying to get my buffs operating correctly. like you have the item with it's buff, and the buffs entry, yeah
they will double if you set them the same so leave the item with just the buff id?
"Name": "{{i18n: barriersphere.Name}}",
"DisplayName": "{{i18n: barriersphere.Displayname}}",
"Description": "{{i18n: barriersphere.Description}}",
"Type": "Basic",
"Category": -18,
"Price": 2500,
"Texture": "{{ModId}}/assets/livestockdinositems",
"SpriteIndex": 20,
"Edibility": 0,
"IsDrink": false,
"Buffs": [
{
"Id": "{{ModID}}_barrierspherebuff",
"BuffId": "{{ModID}}_barrierspherebuff",
"IconTexture": "{{ModId}}/assets/livestockdinositems",
"IconSpriteIndex": 22,
"Effects": {
"Immunity": 12.0,
},
"Duration": 500,
"IsDebuff": false,
"GlowColor": null,
"CustomAttributes": null,
"CustomFields": null
}
],
"GeodeDropsDefaultItems": false,
"GeodeDrops": null,
"ArtifactSpotChances": null,
"ExcludeFromFishingCollection": true,
"ExcludeFromShippingCollection": true,
"ExcludeFromRandomSale": true,
"ContextTags": [
"color_brown"
],
"CustomFields": null
},```
this is how i have it, it does work but is probably doubling. mostly just hoping the ID stuff isn't gonna make a clash
``` at each end for code blocks 💦
thought it was one, oops
BuffId is the value used when fetching attributes from Data/Buffs, so if you have a value it'll search that asset for any stat changes. you can leave it null if you aren't changing attributes
i was about to confidently announce that Id is what's checked when applying a buff to check for removing another with the same id, but I'm not sure
typically, this is either Food or Drink, or maybe Tipsy (which would use BuffId: 17 as well)
so for a custom item i prob just want the buffID there, and then the rest of that done in the buffs block?
"Name": "{{ModId}}_pacdango",
"DisplayName": "{{i18n: items.pacdango}}",
"Description": "{{i18n: items.pacdangodesc}}",
"Type": "Cooking",
"Category": -7,
"Price": 150,
"Texture": "{{ModID}}/assets/fruitghostitems",
"SpriteIndex": 8,
"ColorOverlayFromNextIndex": false,
"Edibility": 100,
"IsDrink": false,
"Buffs": [
{
"Id": "{{ModID}}_pelletdangobuff",
"BuffId": "{{ModID}}_pelletdangobuff",
}
"GeodeDropsDefaultItems": false,
"GeodeDrops": null,
"ArtifactSpotChances": null,
"CanBeGivenAsGift": true,
"CanBeTrashed": true,
"ExcludeFromFishingCollection": false,
"ExcludeFromShippingCollection": false,
"ExcludeFromRandomSale": false,
"ContextTags": [
"color_yellow",
"food_sweet"
],
"CustomFields": null
},```
like this one perhaps
id use Id: Food and keep buffid as-is to match your Data/Buffs entry
for a non-food buff you could probably use the same value for both
like I'm not sure what a barrier sphere is but if you eat it and you don't want it to stack with food buffs then use Id: Food hahah
yeah it's a custom item that gives immunity
if i make it not food it will work outside of food buffs? i would prefer that
you still eat it to activate tho lol
i have a bowl of lagman korma in front of me instead of game code so i can't say for sure, but as long as you have some way of applying Buffs you can use whatever sort. the Id value should just mean it will replace any other current Buffs with the same Id
ah i see, that makes sense. cool.
ultimately though the bit that makes me unsure is the way that the game allows you to stack unique food Buffs that don't affect player attributes, e.g. Ravioli and my custom Kebab, but not Spicy Eel and Lucky Plate
yeah there seem to be two or three methods for actual buff effects
still not even sure what some of the combat buff options do exactly either lol
genuinely nothing
defence works as expected though iirc, unsure about attack. precision is definitely nothing
ah is it
how broken does this seem: "CombatLevel": 2.0, "FarmingLevel": 0.0, "FishingLevel": 0.0, "MiningLevel": 0.0, "LuckLevel": 1.0, "ForagingLevel": 0.0, "MaxStamina": 100.0, "MagneticRadius": 128.0, "Speed": 3.0, "Defense": 12.0, "Attack": 12.0, "AttackMultiplier": 2.0, "Immunity": 12.0, "KnockbackMultiplier": 0.0, "WeaponSpeedMultiplier": 2.0, "CriticalChanceMultiplier": 7.0, "CriticalPowerMultiplier": 7.0, "WeaponPrecisionMultiplier": 2.0
this is a combo item requiring an item made with radiactive ore
3 speed is already cracked imo hahah, everything else is just bonus
there's a catch to buff attributes though, some attack attributes aren't available in the usual way unless that changed since loc 2.0
i had to do this in order to add a knockback food buff:
https://github.com/b-b-blueberry/CooksAssistant/commit/41eeec2f38bb14f7426a611c886e59227c988f0c
if you have the source code handy, you can check out wherever Data/Buffs is loaded and find the BuffAttributesData or something class it uses
while Buffs can affect these extra combat stats, not all food Buffs can from Data/Buffs
i guess that makes locs braised leeks all the more 🆒 and 🆕
hell yeah
i am surprised at how few buff effect choices there are, i came up with a few maybe cursed ideas along the way here but i'm not gonna make em either
sprite size, collision, make enemies scared of you, cooldown for weapon specials...
smelly debuff that makes you lose friendship with nearby villagers? lol
someone can steal these and implement them if they wanna
if you'd like, you can put them in the mod ideas repo
for sure, the world's your food buff with c#.
ridiculous example:
https://github.com/b-b-blueberry/CooksAssistant/commit/aed3b382d2f4cf532da3f5c0d2e20747f0645f85
no attribute changes, but makes 2 more projectiles from your slingshot while active
i only made the buff since the words 'profiteroles proliferate projectiles' came to mind while brainstorming stuff
sometimes fun ideas come from the strangest places
but yeah it'd be fun if in sdv1.7 we could get a few more buff attributes opened up, some of them are already implemented like knockback but we can't set them from Data/Buffs
i tried for ages to get knockback going with increasingly massive numbers like 10,000+ before realising i couldn't do it, so I tried with the method above and smacked a bat into another dimension
haha
yeah it feels like MOST stuff in the game is pretty easy to edit for anyone now...other than stuff like buffs and monsters and a few other little specific bits
yeah even wild trees are opened up a little now. wild
hmm do i want to open the can of worms of making a toggled neon sign tonight...
maybe i'll just test buffs
woo
durations are screwed but that can be fixed
somehow duration 500 gave me like several minutes on my previous mod and now 500 is making them just turn off instantly
ahh must be some other mod doing that, interesting
ok yeah i can stack the buffs, neat
Hi, if I'm translating an i18n can I use quotation marks within quotation marks? Like this:
"example.id":"This is a "random" sentence.",
No, it'll break things
thanks, i figured
You'd have to use single quotes or backslash to escape the double quotes
anyone know what these sparkles are used for on cursors?
Stars on the shipping screen night sky background
@lucid iron Huh, looks like someone did use Trinket Tinker to make a new NPC Adventures 👀 https://www.nexusmods.com/stardewvalley/mods/30989
what does this mean?
Ok I figured out the problem, i had two seperate dialogue strings leading to the same i18n string!
is that an elliott trinket?
Yep, adds trinkets for all of the marriage candidates (and maybe also all the villagers + animals?)
Yeah, though the villagers are just from one configurable trinket wih generic dialogue.
(The author is asking for dialogue suggestions for the villagers.)
Wait do they hide the npc somehow 
I don't think so. They'll just be doppelgangers.
Which makes the title They Stay With You have a horror tinge.
Like, Elliott staying with me is cool, but if Elliott is actually over there, then who...?
You could say it's some sort of spirit projection, like the sages in Zelda tears of the kingdom
(also is that the android ui. hmm)
Speaking of which, can Trinket Tinker companions be talked to and have portraits?
(Not a feature request, to be clear. Just curious.)
No
add new trinket ability - banish specified NPC to shadow realm
process is irreversible until next day
Aa I see.
Talking to them is technically doable now i think?
There's a trigger action for setting an NPC as invisible? 
Through BETAS dialogue box which is an action
And the action ability, there's just no "interact" proc rn so u can't do the expected click on people and speak to them
Oh then i just need to make the action support an unequip action
speaking of android, I got this log for EMC:
https://smapi.io/log/739c0d833fe54b7ba896db358f6827e3
worth noting is that (IIRC) the current version of EMC is built against 1.6.14; maybe rebuilding it against 1.6.15 would fix the invalid IL error?
(of course the clickCraftingRecipe transpiler can stay broken, no mod is or will-remembers 6480's comment)
Log Info: SMAPI v4.1.10.3 - 1735840167 with SDV 1.6.15 build 24354 on Android Unix 34.0.0.0, with 16 C# mods and 30 content packs.
(also legal disclamer just in case this is not a commitment to fixing this mod for android. I will only do the bare minimum to make it working)
wait wrong log
ok right log edited
You can try I guess but it also likely rewriter gone wrong
Is there a tag that prevents minerals from being museum donate-able
not_museum_donatable
unfortunately that doesnt prevent your minerals from showing up as a gray icon on the collection. known issue after 1.6.9
Ok cool
PSA: if you are writing new trigger actions and your execution succeeds, you need to set out string error to null and NOT an empty string. if you use an empty string, your action will still succeed but the game will complain about it failing
“Task failed successfully”
Anyone encountered this issue where AcceptBirthdayGift_Positive overwrites specific item birthday responses, which should not happen? I'm on the latest game/CP/SMAPI versions and all
Have you tried placing the item-specific responses before the _Positive response?
Not really, but even if that did work it sounds like unintended behavior
(rearranging the keys in your dictionary will have no effect)
hi! how can i make a text box without portrait appearing?
im trying but appears a error
if it's dialogue, start the message with %
i tried but didn’t work
its on a event
hiii i need help
im a begginer mod maker and does anyone have like a template for a custom npc or can tell me what to do lol
like how do you actually code the npc into the game
!npc
Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:
-
Tiakall has a great tutorial on making a custom NPC for 1.6.
-
NPCs no longer use dispositions, check the wiki page for the new NPC data.
-
Aviroen has put together a template that will allow you to easily create a romanceable NPC.
-
Feel free to jump into the https://discord.com/channels/137344473976799233/1277457201077813280 thread for more interactive feedback and help!
-
Fireredlily has a WIP NPC Builder Please do report any errors you get with it into the NPC thread!
in an event, you can use one of:
message \"Your text here.\" (makes the box small, to fit the text)
speak NPC \"%Your text here.\" (regular dialogue box size)
you can even do the % inside a string of boxes:
speak NPC \"Portrait here.#$b#%No portrait here.#$b#Portrait here.\" (second box has no portrait. others do)
tysm!! 🙂 i will try rn
weird question but is it possible to remove code from SVE files of an npc other than the parts where they're needed in cutscenes?
why would you need to do that?
or even want to, i can only imagine that would come with its own problems
i want this npc to be romancable but sve throws a whole wrench in that, i want both to work. ik its a tall order this is just my last ditch effort
is this an sve npc? if not, how is it preventing it from being romanceable?
it's marlon and i want it to work with werewolfmaster's mod for him
I see, but it’s loading the SVE version of marlon instead?
i didnt dare to test it out but im pretty sure it would do weird stuff like duplicate the character
or yeah sve overwrites the other mod
tbh, knowing sve, I doubt you can get both to work together
all good, i knew itd be impossible lol thanks for the answers!
Werewolfmaster's Marlon is Marlon. SVE Marlon is MarlonFay. So yeah you'd have duplicates.
The simplest way to do what you want is just delete MarlonFay's disposition
sve has certain things depend on marlon though, like the rusty key
And then change any event involving MarlonFay to use a temporary actor instead.
Oh yeah, Avi ran into a ton of problems with SVE's marlon implementation
yeah it confuses me tho cause there is code for normal marlon in sve's files, probly just too deep for me to understand
and also I’m guessing they do something to hide the original marlon
@velvet narwhal if you feel inclined to share your wisdom
yes and no, iirc he's still used in events
i will try ty
Oh yeah, like hearts and such, huh.
I just mean that just loading another marlon mod may end up with him not being around through whatever method they’re using to hide him for the most part
Alternatively you can just hijack MarlonFay and make him load Werewolfmaster's dialogues instead.
(that was at tia haha, sorry)
...so sve's marlon is cursed in some ways
that was my other plan
then if changing his disposition works it might be possible idk
will reread and try suggestions at home, thanks sm guys
So each Entry is a dictionary?
the dialogue assets are, in particular (string-to-string dictionaries)
dictionary is just a common word for this sort of data type. the keys are unordered and allow arbitrary lookup. what affects priority on the keys is the order the game checks for them, not the order they are listed in the data
Coding is so nerdy I love it
@ivory plume I am getting some odd behavior around the parsing of $action commands within dialogue strings. At this time the trouble seems to be caused by running multiple actions at different points in the string while also having the first dialogue command be $action. Here is my repro case (running in plain SMAPI, no additional mods installed):
debug speech Abigail "Strange...#$b#$action AddMoney 50#This version seems to work.#$b#$action AddMoney 50#On to the next example!$h"
debug speech Abigail "$action AddMoney 50#This version gets a literal curly brace and cuts off here.#$b#$action AddMoney 50#This dialogue is not displayed, but the preceding action runs.$s"
aside from the text content, the only difference is that the first example starts with regular dialogue and works as expected, while the second one fails to connect to the final command and renders the { connecting character in the middle dialogue instead.
I assume this is unintended, but perhaps I have missed a caveat somewhere?
in homer voice NNNEEEEERRRDDDD
I don't fully understand the game or CP, but on the 2nd example, are you trying to run $action before the dialogue? And if so, is there any reason for that? Because AFAIK, it is the same in-game to use $action before (it it even is possible) and after the dialogue.
But I might be wrong, so I can't guarantee it really is the same. Either way, I don't know how it should react on the 2nd example, so...
there’s no difference in the example ichor provided afaik, but using other actions there could be differences, since $action allows you to use any trigger action.
would you believe i found this because, for my purposes, it is important to run the action before the first dialogue appears?
OK, I believe you, even though I can't think of any situation why. But that is OK, don't worry about that.
If it is for dialogue (because of the command, I guess it is), then I don't know. Writing #$b# at the very start of the dialogue or creating some dummy/null dialogue, which would have nothing in it, wouldn't help - my guess is that it would break the dialogue even more than it is right now.
I thought so - I was just brainstorming ideas. Sadly, I don't think I'll be much of a help, though I try.
How does that dummy dialogue even look like? I didn't think it was even possible to create something like that...
Yeah, dialogue parsing is a clusterfuck
empty, or 1 character. Dialogue skips any command shorter than two characters
you can also do empty fields in various string things using [EscapedText], though idk if it would work here
have you read the decompile of parseDialogueString since 1.6? it's bonkers
an excerpt for everyone's enjoyment. having a normal day over here
}
}
goto IL_08a5;
IL_01b6:
if (!(commandToken == "$k"))
{
goto IL_08a2;
}
goto IL_08a5;
IL_08a2:
handledCommand = false;
goto IL_08a5;
IL_020e:
if (!(commandToken == "$q"))
{
goto IL_08a2;
}```
Curious if there is a way to make a custom NPC wear a certain outfit on certain days. (IE. My character does drag on saturdays, so I was going to have them in a drag outfit if possible only on saturdays) I cannot seem to find anything from looking online, or I am missing the thing I need. So I wanted to reach out here, to see if anyone else had any knowledge!
yes you can
using the appearance feature
you basically can put whatever condition and priority you want here
!! Ahh thank you. I will look into it more with that as my focus
https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_Seasonal_Outfits_via_Appearances This is the tutorial you're gonna want 😄
If you want to add seasonal outfits for your NPC, there's two ways you can do this: the token way or the Appearances way. Appearances is a new code structure added in SDV 1.6, so if you're looking at an older NPC's code for reference, they'll most likely be using the token way. The main difference between the two is that the token way is simpler...
!dsv You can also look through some of DSV's code for particular outfits (a snippet of it is used as the example code in the tutorial), although be warned that it's a pretty complex beast, haha
Diverse Stardew Valley (https://www.nexusmods.com/stardewvalley/mods/17059) is an expansion mod that adds extensive seasonal, festival, and location-specific outfits and alternate diversity redesigns for NPCs supported by dialogue, event edits, and map edits. Outfits are available for either the vanilla or alternate character designs and nearly every aspect of DSV can be configured individually. See the DSV website for more details, including a list of mods with special compatibility: https://diversestardewvalley.weebly.com/
Oh yes another mod to disect and gain knowledge from
Thank you for fueling my powers!! 😈😈
An outfit that's used all day on Saturday is pretty simple though! If you want to get more complex, you can also have the outfit apply at a particular time and/or in a particular location, like for example if your character is a drag performer who performs on Saturday nights at the saloon
There's a lot of different conditions that can be used depending on what specifics you want
Amazingggg ❤️
Appearance, another incredible 1.6 feature 
(My personal mod closet for Abigail and Leah agrees with that statement wholeheartedly XD)
(Considering SCA uses your code anyway, you could probably put together an add-on pack of some sort that would edit the SCA Appearances to slot in alongside DSV's 😆 Though the art would be inconsistent)
So
That's what I did in my personal mod closet, and I edited the art to be consistent (i.e. SCA style head, DSV outfit) XD
Don't worry, it shall never leave my computer though
If it does, full permission to go
on me
The sprite inconsistency doesn't bother you? 😆
I edited the sprites too!
Oh wow, dedication 😆
Well, unless hoods
Look I don't know if I was possessed by the spirit of Leah or something but I knocked out all of them a while back in like a week
Tbh it’s really like that!! I just get my bursts of motivation and work non stop until I’m out of juice 😅😅
Anyone...used the mod Nature In the Valley?
Bc that is the perfect framework for a lil' Pokemon collecting it looks like 
Low-key love that idea
Actually though, hol up. Reskin Ivy to be Prof. Oak. Enable content packs only
You literally get a pokemon catching sim
PROFESSOR IVY IS RIGHT THERE (in the anime)
If you needed any help setting that up I could help you, though the data format isnt too complex
MB TRUE
It's been added to my every-growing pokemon to-do list 
I just woke up and I'm about to head to work so
Remind me in 7 hours to pull up my Marlon repo for #making-mods-general message
oh aviroen you sweet summer child. trusting me with such a task? all right ;) (#6493038) (7h | <t:1737767862>)
Tldr: it's annoying
I have conditioned includes depending on if SVE is installed or not
I am seriously debating reaching out to see if someone is willing to collaborate with me on the Zelda NPC mod at some point if I can't work out this wolf sprite xD
Iirc SVE just takes Marlon [vanilla] and sends him to the shadow realm and makes him invisible
Though all the other stuff they do with it is... also cursed
I did a similar thing with the vanilla Mr.Qi (I was just gonna overwrite him NPC wise but vanilla itself does some weird stuff with him so I just figured it was easier to send that npc to the shadow realm too)
Also if I wanted to make it so that an NPC doesn't spawn until after a player visits the desert (specifically to stop him from going anywhere ever until the player unlocks the casino) would that just be a when condition for the whole casino thing? or would it be better if I just added a condition for his schedule(s) to not take place until after the casino is unlocked?
I think you can do it for the NPC themselves (look at Kent's Data/Characters entry for an example there)
Didn't even think about Kent actually
Hi guys I'd like to make a mod which allows players to decompose iron (gold)bars into copper (iron)bars ,is there a similar mod already?I can't find one on nexus. I'd like to know if all the things I need to do in code is just add a new recipe to "Data/Crafting recipes"? thanks ❤️
There's several, yeah. Reverse Transmute, Reverse Transmutation, VPP has it as a talent, and there's probably a couple of others too
yes, i think all you have to do for this is add the recipe. this idea is familiar so i expect it was finished, but i don't know what it's called (airyn to the rescue!)
Ok I'll try to search it,thanks a lot!☺️
I also made a mod for that lol mine is called Transmutation Time (though iirc I recommended using a different mod in my mod page because they had a bunch of other stuff in it) - it still works with 1.6 though
So I have a config option to toggle whether or not crops added by my mod count towards perfection - by default it should be set to true but for some reason it only works when you check the box off?
ah wait I see what I did I think ...
i think the field is called ExcludeFromPerfection or something so you may have it reversed
Yep that's exactly what I did
there's a Condition field in dispositions that you can put a GSQ in, pretty sure there's one for "has visited Desert"
Ah but I want it to be the Casino specifically - I'm a bit worried about it being player specific though? Although if I just do it so that it has to be the host I think that would be fine
Isn't that the club card
PLAYER_VISITED_LOCATION Host Casino would work
it is though I cant find a GSQ that relates specifically to the wallet item for it / having the club card
That's what I was thinking :3
its so weird to see him walking around in the valley
Any instead of Host will match anybody having been there, yeah
Hi folks, i have a potentially silly request, I really like those prismatic clothes and the cowboy hat due to the color changing but i find it frustrating because there are no prismatic boots, does anyone know of a mod that will add color changing boots that matches the color of the rest of the suit?
in general*
ok i'll check Fashion Sense out
I cant recall if it actually lets you make your shoes prismatic or not but I know it lets you dye them so perhaps
i have worked around this problem by reimplementing my action as a weird dialogue command. probably not ideal, but oh well
there's a prismatic framework that lets you make them iirc!
i think i'll continue to try and just make my mod calling it Cowboy Up 😄
just making a full set of the Cowboy gear to look and function like the cowboy hat
oh i guess i should be more patient as i see there's a pair of Enchanted Cowboy Boots, i wonder if those color change already, will save me time on this mod
https://www.nexusmods.com/stardewvalley/mods/25287 this was what I was thinking of, specifically supports boots
there's also https://www.nexusmods.com/stardewvalley/mods/24796 which adds a bunch of prismatic clothing, though I believe it uses C# to do so
i wonder why those weren't showing up when i searched Prismatic on nexus, weird, ok thank you all for being so kind
Those days when you look at your 17-item to-do list and go "nope" to every single one of them...
Has anyone ever tried and/or figured out a way to use Publicizer without automatically creating a hard dependency? (i.e. if the publicized code is only actually run when some API is detected?)
Just for anyone else who might be uh doing this/anything related to locational data for the casino - It's called club not casino ... I also thought it was just casino
I was wondering why he wasn't spawning 😭
woaah I haven't seen this one
The constraint isn't c#
What you describe is how it actually works in c#
It's in smapi but is difficult because the checks are run before you are loaded
I've in the past theorized that instead I would just put code in a different assembly and have my mod load that
One of my many "it works in theory" but I never tested
Hm, so I'd have to... hide it from SMAPI somehow.
Yup, so my theory was I would have the mod dynamically load a subassrmvly
Which would not be scanned by smapi
Yeah, like stick an entire byte array (or if that still gets scanned, a base64 string) with the entire compiled code. But the build/deploy process for that, yuck...
is there an issue with just putting the publicized stuff after a "if (mod is loaded)" check? i dunno much about publicizer stuff still
Yeah, the point is the dependency gets enforced on startup, before even the mod entry code runs.
Doesn't matter that the code only runs conditionally - publicize another mod and yours will automatically crash if that mod is not installed.
I suppose maybe the subassembly thing is not actually that bad, I could just set it up as another project and then have a build step that dumps it into a mod asset or something.
Basically!
This feels dirtier than Harmony, Reflection and Publicizer all combined. I'd almost rather try to Harmony-patch SMAPI, but I guess even that is not an option because by the time it gets to run it's already too late.
My biggest wish was for smapi to be able to load in new mods without having to restart the game
Hell no, that's why I switched to publicizer in the first place.
It's one thing when you just need to call a method or pull one field, it's quite another when you need an entire hierarchical data model.
could try something like this maybe? then we can make the two bottom tiles building layer?
1x2 footprint then 
if it works, just came to my mind just now lol
It should work yea, though ofc it's necessary to pick a input item still
And maybe limit the daily convert count to like 4 

Deciding on muh balance is hard desu
[SMAPI] - Meowmere Weapons 1.0.0 because its DLL 'MeowmereWeapons.dll' doesn't exist.
Is the .dll file the only thing im missing for my C# mod? ive been reading yellow book but with all the medications im on, i feel really foggy and i just want this released already ;/
Do you have a ModEntry : Mod
internal sealed class ModEntry : Mod i didnt add this
Hm your cs has random csproj stuff
I recommend taking another look at a full c# mod and start from the top, ultimately you need to build a dll from the cs source code in a way that smapi can load
thank you, do you have a recommendation to study from
ah beat me to it, tyty
This is my smallest mod that consists of just 1 Harmony patch
appreciate chu
(ignore that it is a transpiler, the other stuff is the same)
The itemgroup thing is actually supposed to go here
This packages [CP] Sprinkler Attachments with the mod
thank you
This is your source directory, not output directory. You have to build it, at which point you'll also see that the <ItemGroup> stuff can't go in a .cs file, it's part of the project not the source. Aside from the manifest, the DLL is the entire mod.
If you're building C# mods, you really should use Visual Studio or Rider. Avoid VSCode for that if you can. If you must use VSCode, you have to install the .NET/C# tools for it, cannot just edit and deploy source as you would for a content pack.
yeah im thinking of just scrapping it and starting over in visual studio, im having multiple files and just confusing myself.
Well there will be multiple files. There is always at least a .csproj, at least one .cs file and a manifest.json (or the equivalent with Khloe's builder, which you're probably not using here).
But that is your source. The DLL is the mod.
When I create a new project it doesn't come up as .dll though, did I do something wrong
TIL 4 string comparisons are better than parsing it for 4 int comparisons, mb!
(I'll believe profiler)
DLL is the output. The source compiles to a DLL.
You're used to using VSCode as an editor (which is what it actually is, primarily), but you need an IDE/Compiler here.
(And yes, to the peanut gallery, I'm glossing over CLI stuff to avoid adding confusion)
gonna try doing this again
(and here i was gonna suggest just writing the .dll manually byte by byte)
Yep, those are good instructions.
They don't cover Harmony, but Chu's example should help with that.
If you follow those instructions you will end up with a project like Chu's (just without the Harmony bits)
String comparison under 4 char are extremely cheap
Simd accel
does the file location matter, i see its different on the wiki
you dont want to put it in your mods folder
ah
Yeah it was just single char like the options being 0-4
i see now ty
these files are not the mod. these files are essentially instructions that will tell Visual Studio how to package them into a mod
and the ModBuildConfig thing will place it in your Mods folder for you
Thank you
Within a Special Order, can the "Message" field be used for non-delivery orders? The wiki doesn't even list this field
I want to have my requester have a message for completing a fish special order, without relying on a mailflag + CT for it
the contents of the Data field are different depending on the Type field above it, because the Type literally tells the game what C# Type to use for parsing the order. so different objective types look for different data. so in other words, likely not
No, the Data fields are pretty cusrom per objective
I see, thanks for the answer.
after a quick check, no other objective type looks for a Message
custom modded objective types may do so but that would be documented in their mod pages and is not very relevant here i assume
I noticed some weird behavior with a custom special order in my mod
it requires you to deliver a mead to my NPC, and deliver 5 mead to pierre's box. If you donate to the box first, it works as expected.
but if you deliver to the NCP first, you give them 2 instead of 1. Then if you go to the donation box, the extra one you gave to the NPC is already there.
also when delivering to the NPC first it shows their gift reception dialogue, and presumably it triggers heart effects (don't know this for sure)
so in the end it works out, requirements wise, but definitely raises eyebrows
Did both donate boxes have the same id
there's not two donate boxes. one is a donate (pierre's box) and the other is a deliver (give to the npc)
I wonder if it's makes a difference if npc needed 2 mead
Was I supposed to format it like this? I tried adding the code after this and am getting errors.
Lines 44-54 need to be inside a class somewhere. So adding a new line after line 41 and pasting it there would be a start!
I never use the Harmony annotations though, so I couldn't tell you anything past that point. 
Using Harmony annotations requires you to add one line somewhere to invoke the detection. But I don't use the annotations either so I can't be specific. It's somewhere on the wiki.
I found it, thank you.
That just gives you access to Harmony, it's not the line I'm talking about.
Ah
You do need that as well, but you need a line of code to invoke the annotations.
This?
Is there a way to edit the joja development forms without C# ?
That's the non-annotation method, yeah. There's a different syntax for annotations.
You can also use that method and just delete the [HarmonyXyz] attributes.
Hey guys, I'm new here and I want to know if anyone would like to make a mod for me cause I don't got time to earn C# Message me privately if you would
for harmony annotations you need something like this
var harmony = new Harmony(ModManifest.UniqueID);
harmony.PatchAll(Assembly.GetExecutingAssembly());
//or
harmony.PatchAll(typeof(ModEntry).Assembly);
//either will work, choose one
!modideas
If you have a mod idea that you aren't planning to make yourself, you can put it in the mod ideas github: https://github.com/StardewModders/mod-ideas
However, this does not mean anyone is guaranteed to work on your idea—modders who are looking for ideas sometimes go through and work on what they find interesting off this list. If you want to pay someone to make your mod idea, there are a few people who do commissions (mostly art, sometimes code); you can ask around, search usernames for the word comms, or see !commissions.
If you're looking for people who do mod commissions (either art or code), here's a wiki page with a non-comprehensive list of people who do them: https://stardewmodding.wiki.gg/wiki/Stardew_Mod_Commissions
hey, I'm having a weird issue where smapi freezes while typing. Is there a good way to solve this besides closing smapi and restarting the game?
@midnight bear
you can just do Harmony.PatchAll()
what do you mean smapi freezes while typing?
Also to note your mod might not require C# depending on what you want :) it might be easier to make than you think
huh, that would do it I suppose, not sure why I've never seen it used just like that in the repos i've looked at though 
meanwhile i was confused bc ive never seen someone specify the assembly lol
so, I'm tring to input the command sinz.eventbyid and once I type in "sinz" the cursor itself actually stays solid, I can't input and more keys, and while the scroll bar moves the text in smapi does not.
i dont often look at the actual patchall call though tbf
I can show in a VC if that'd make more sense
that seems more like a modded-help question
or modded tech support or w/e the channel is called
kk thanks
yeah that seems more like a tech issue cause that... well ive never really run into that
i mean sometimes i forget to press enter and wonder why my smapi console is being weird but its never done That
This is probably some shenanigans with the terminal u r using
nevermind, my computer just had a stroke apparently. It unfroze after letting it sit for 2minutes.
Side, question. Is there anything that could cause a cutscene to not use modded portraits or sprites? Testing event id 38 (Penny bathhouse) and it is using vanilla portraits/characters when I thought it would use the ones I've created like it did in other events
Check if it's only event repeater or any console command
Where would I fix this?
it wants a minimum value for version for content patcher i think
it is going to be very difficult to make a C# mod with just copy pasting things in places without understanding the why or how
https://www.nuget.org/packages/Pathoschild.Stardew.ModBuildConfig#bundle-content-packs
you must specify the version in the csproj
something like this yeah
that is not relevant to that error
oh
thanks, and yeah, im not sure why im having difficulty absorbing what i read from online
it is a ModBuildConfig error for a C# mod csproj
Time to start the long process of detailing. 
I kinda want using these stairs to drain extra stamina.
/j
its one of those things that might end up changing cuz it doesnt have that proper feeling of "depth", so i'm likely to play around and make it seem like if it can feel better, or maybe make a rope so you "rappel" down or something
Yeah, height and depth is easier to obscure/portray with lots of smaller... layers I guess you could call it?
I've done that before as well, but yeah i could just put a little cave at the top you pop out of, be kinda funny actually 
hey im back (but nobody care so im passing this) i have some issu with texture, when i take my crops the crops on the ground transform on a line, i dont know where it from so if someone can help me, also i finish to understand how spriteindex work pls
if i put space its make the crops invisible
I remember there was this 1 area in pokemon ultra sun where u r going around big rocky area but sometimes u go outside
U have space for a little balcony here if u do 2 sets of cave in/out
i dont want them seeing the cliffs up close if i can avoid it, because we only have like a dozen cliff tiles and they dont exactly mesh into each other super well
so it looks wonky, to me at least
ye
vines everywhere
Alternative https://i.gyazo.com/cf020f3838afe996e60932499bddad4d.png
What do you think, lower the cliff a little to make a ledge or the little popup cliff? 
Oh, that feels really nice.
I have tried searching so many different key words in nexus and cannot find what I'm looking for. Does a decent mod exist anymore that lets you cook from storage anywhere on your farm? Similar to a craft from storage type thing? If not, would it take C# to make that happen, or could it be done with json files? EDIT: disregard. I'm doing some further digging into something else that may scratch the itch and make this question not a priority for me anymore.
More Fiddling https://i.gyazo.com/70a134fdf6af7c11b2424487255a6333.png
So much of my process is, ooh what about this, gotta test it see if it feels better. fiddle fiddle another version, cuz u dont want water leaking into the beach cave right?https://i.gyazo.com/4d81c3053b7c0fa82376ea61d56cda72.png
it looks gorgeous!!!!!! wowowowo
after fiddling with the lower ledge bit for 15 minutes i think i finally found a version i'm happy with. https://i.gyazo.com/024c435200b585069dc0895e3ee42b8c.png
Now you know why it takes me so long :p.
Now what Was I doing? Ah Detailing.
this for a new map?
Yes, Just starting on detailing and fixing things that dont seem quite right as i do micro examinations on each area.
lol
Sega mobile port brought to you by raid shadow legends
Do not play, 95% of play time is ads
Anyways, cant wait to make some rocks!
is it possible to make a room where you can apply wallpaper to it?, that isnt the farmhouse
there's a tile property you apply to the top of the wall I believe, I can't remember what it is though
let me try to find it
If it's not the farmhouse or a shed, I think you also need to make it a Decoratable Location
in addition to the Floor and Wall IDs
-# I was just going to say you were one of the people I saw looking at this haha
I'm the test case for the custom renovation weirdness with this, LOL (which has since been fixed)
I have a Bonus Cellar on one of my maps, and Someone just mentioned they cant change the wallpaper, so i'm like "you can do that?" and trying to figure out how to accomidate them
Well, you need Map Properties and TileData objects for the Floor and Wall IDs, for a start.
I can't find the tile property that needs to be set right now, but I do remember that it needs to be set on the top tile of the wallpaper/flooring in each column for it to work correctly (and I assume it only works when the walls are the standard height)
is there a wiki page that has the info? cuz I can't find the info.
There is something on the wiki, but it's scattered across a few pages, one moment.
"Wallpaper and flooring can now be applied to custom map tiles if their tilesheet ID contains walls_and_floors." is the only thing i could find related to it in maps, buildings, 1.6 migration and 1.6.9 migration 
If you find the info, I can make a quick page in the modding wiki that explains it
here's some helpful screenshots, the first is the Map Properties
I'll pull the wiki info momentarily
the initial FloorID and WallID documentation is from the 1.5.5 migration guide.
It's still waiting to be merged into the wiki pages for Modding:Wallpaper and Flooring and Modding:Maps, but I fear editing the wiki xD
I get that haha, I was so scared to edit something into the modding namespace the other day even though I do edit the main wiki sometimes
the tldr of things it that
I need to just publish my bathroom reno mod so I can point people to it as an example, LOL
u need to make the location have type DecoratableLocation
Yes as long as it's DecoratableLocation
which u can do with Data/Location edit
Unfortunately that makes it mutually incompatible with cellars
then u need to set up ur tmx to have all the wall floor stuff
what i actually recommend u to do is to just make a PIF room out of your map
all PIF rooms are decoratable
PIF?
PIF is a framework for new rooms in your farmhouse.It's especially useful on tiny farms and in multiplayer, as time stops in that room on days when the player didn't play.Access to your pe
It's a framework for custom room instances
so making it a Decoratable Location Disables Cask Functionality?
the only negative in this case for a PIF cellar would be that in multiplayer, an offline player's casks won't age, and PIF rooms are inaccessible if the owner of that room is offline.
but game forces cellar to create as cellar type iirc
ah, i'm just calling it a cellar and its just a room that has Casks enabled.
by using pif ppl get rooms that are caskable and placable anywhere in their house
in that case u should do it through the DecoratableLocation thing 
"CreateOnLoad": {
"MapPath": "YourMapTarget",
"Type": "StardewValley.Locations.DecoratableLocation",
"AlwaysActive": true
},
okay so its a CP thing then
yeah i'm using Data/Locations for this map already, so it shouldn't be a problem
customlocations doesnt let you do like anything
i dunno what happens to existing saves though
Custom Locations should be avoided when possible anyway, it's outdated and the rewriter potentially won't catch it if you use newer features/format versions of CP anyway.
will it just work
customlocations will still work even with newer format versions, but yes it should be avoided regardless
FormerLocationNames is all you need to fix CustomLocations going forward to Data/Locations, as far as the location not breaking mid-save
No, you can use the CanCaskHere property. The main problem is the warp tweaking that Cellar does. If you change the type it'll break the warps
You wouldn't be able to patch reload it and have the map work, but the OnLoad in this case just updates when you load the save file, and it will change then.
Yes
yay ok
But you'd have to save and reload to see changes take effect
what if i change the CreateOnLoad.Type to ArchaeologyHouse
No idea
sounds fun
question to c# authors: do you guys typically stick to the one class per file rule?
it depends on the class
how can i make a random system when i break a bloc ? for explain i break a stone i get stone or coal etc
Usually, but there are some exceptions.
If I have a lot of related data models, sometimes I'll group them.
Other exception is when I had a non-generic and generic version of a class.
I'm making two transpilers that work almost identically and will require a shared method, idk if I should do three separate files (each transpiler and a class for the method) or just throw them in one file
i just put them all in one class
one class called WhateverImPatching and then 3 different functions inside it, two transpilers and one method
my RelationshipChanged trigger for example is one class, in a single file RelationshipChanged.cs, and in that class is 3 helper methods and 5 transpilers
the transpilers themselves dont need their own class
...idk why I didn't think of that
ty button
I think it's because I'm using annotations on the whole class right now and forgot there are other options
yeah you just need one [HarmonyPatch] annotation on the overall class
more specific annotations on the functions inside
Now I'm fully stumped. Using sinz event viewer to force events. In event id 34, Penny does use the mod sprites and such, but in event 38 (her 10 heart), she is seemingly using vanilla files. Is there something obvious that I'm missing? I wonder if whatever I'm missing is also causing the game to use vanilla assets for the sprite of penny when you click on her portrait in the social tab (the actual thing in social tab is her mod sprites oddly)
https://smapi.io/json/none/9debe6cccc944c5b96383bc7d873c30c
https://smapi.io/log/4474e3c2f8aa4d0fb4bad7e4e3aba30b
Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Home, with 38 C# mods and 50 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
i do 1 namespace per file but ill die if im forced to do strict 1 class per file
i just havent had a situation where i need it yet but i also wouldnt have a problem with multiple classes per file
or well not needed, but no situation where it wouldve come up anyway
multiple namespaces per file sounds fuckin awful
it comes up more for data model classes
is there a way to apply one transpiler to multiple methods? they require the literal exact same transpiler
because those r often 2 or more nested custom types
makes sense
just do it
i did have multiple per file for one of my data models at one point but it never made it to commit, i moved em all to separate files but not to follow any rules just preferred it at the time
uhhh
actually i ran into some issue with that
with annotations
it was only ever checking one of the annotations on the method
and thus only transpiling one method
harmony.Patch(
original: AccessTools.Method(typeof(Building), nameof(Building.draw)),
transpiler: new HarmonyMethod(typeof(DrawLayerExt), nameof(Building_draw_Transpiler))
);
harmony.Patch(
original: AccessTools.Method(typeof(Building), nameof(Building.drawInConstruction)),
transpiler: new HarmonyMethod(typeof(DrawLayerExt), nameof(Building_draw_Transpiler))
);
harmony.Patch(
original: AccessTools.Method(typeof(Building), nameof(Building.drawBackground)),
transpiler: new HarmonyMethod(typeof(DrawLayerExt), nameof(Building_draw_Transpiler))
);
oh well, annotations L i guess
you can ofc do it the manual way easily but i assumed iro wanted to keep using annotations
ig in a pinch I can probably just wrap it in two identical wrapper functions (or just do it manually lol)
i had to use TargetMethods
(in this case the [HarmonyTranspiler] annotation is not actually necessary bc the function is named Transpiler but i didnt bother removing it)
Personally I have multiple nested classes in my ModConfig file
Meanwhile my actual mod is still all one class
on a side note, with transpilers right now I keep bouncing between "this seems like an issue if the code is changed" and "this transpiler would have to be fixed if it changes in that way anyway so not dong this fixes nothing"
(TargetMethods has no access keyword or w/e bc i copied it from the harmony docs and only just realized it doesnt)
ModConfig is where itd make easy sense to me to use multiple classes per file! ive not needed custom data models in any of my configs yet tho myself
it would just default to private anyway ig, I realised earlier today that I did the exact same thing in my transpiler class
yeah theres no harm obv but im gonna fix it anyway later bc it bothers me lol
For some reason it took me so long to think of making extra classes for storing config values as a way to organize my config file
It was very simple to implement but just never occured to me
This seems annoying though
In terms of accessing value i want from C#
What is your particular use case?
maybe me and spacefireworks are thinking of different things but i was thinking id have like. a ModConfig class and inside that class i want to store data about say a source rectangle. instead of having four different config values, each one being an int for x y width and hneight, id have one SourceRect definition; config value, and then in the same file but in a different class id define the SourceRect class
(ignore the fact that Rectangle is already a class that exists)
so it'd still be ModConfig.definition.X or w/e
well, I got the wallpapaer working.... but not the flooring 
ugh I just realised that the two methods' transpilers actually do differ by like two ldloc.whatever being different 
Oh yeah that makes sense and i have done it b4 with enums specifically
pain
Especially for records
I guess i just didn't think of them as classes cus they r kind of fake
iro, do you care what the actual number of the ldloc is?
Especially for records
or do you just need to know that it IS an ldloc?
I do, I need to insert them at some point
Pathos puts them in separate classes and I sure as hell don't
that should still be fine
You can also check the type of the ldloc
new CodeMatch(op => op.IsLdloc())
store its operand and use it again later
coincidentally enough also used in that transpiler i just sent you
that works for the one I need to match against, but the one I need to insert is set in some random other part of the code which is different in the two methods unfortunately
well, to me that sounds like they couldnt be identical transpilers in the first place but not bc of the ldloc being different
I mean I rock thousand line files like nobody's business but still
Only the most trivial of atra mods have only one class
(the identical part is because they're both transpiling literally the same line of code copy pasted across the two methods lol, it's just that I need to use a single variable in the part I insert which is set in different ways)
If anyone is in contact with the author of Luna Astray. You should let them know that they have a pretty seroius bug where you get 50 crops per harvest from plants.
I am thinking it is this
"HarvestMinStack": 3,
"HarvestMaxStack": 3,
"HarvestMaxIncreasePerFarmingLevel": 10.0,
Blueberries and potatoes both have this at 0. I fixed my copy as it was game breaking how much money I was making.
my modjam entry didnt even have just one class and that was especially lazy
isnt that literally one of the pinned most common bugs in the modded tech support forum
also if it wasn't, I'd imagine the best way to go about reporting things (after having checked they haven't been reported already) is through the bug reports on the mod and not here
how long ago was it updated
April. and the bug has been reported on the mod page.
if it's been reported, then either the author is aware or is no longer maintaining the mod tbh
sounds like theres not much point in broadcasting it to no one in particular in here then
I was not sure if they just didn't check nexus.
Raf is in fucking medical school lol
you can see they have logged into nexus
he does also have his own discord, too
They are, fundamentally, at the fucking bottom of the todo list, barely above "vacuum the floor"
(an amusing example bc ive literally chosen to vacuum my floor over fixing a bug before to give me time to ponder it)
generally it's safe to assume that if it's been reported and the author hasn't acted on it, that it's because the author isn't dealing with that stuff right now (or possibly ever again) for some reason or another
And Raf is in fucking medical school
do you think medical school was more or less challenging than updating RSV for 1.6 /j
(true, but ngl the reason for not addressing mods could be that someone decided to go on a year long tropical vacation and it would still be a perfectly valid reason not to update mods for all I personally care lol)
hmmm is there a way to force lamps on in an interior map? cuz i think they are set to only light up at night now?
u can set ambiant lighting low maybe?
I believe the way the value is used changed in 1.6 either in base game, ja or elsewhere, changing balance in a few things. Here it made extra drops go from an occssional occurrence to like, 100x more often. Sometime knowing the why is helpful for me.
hm i crashed all my mods by attempting to load game while mod is building
BadImageFormatException: An attempt was made to load a program with an incorrect format. 
I'm currently testing the limits of how much free disk space stardew needs before giving up, we're at under 50MiB right now... I'm pretty sure rider will give up first at this rate
is the context tag: fish_has_roe what makes possible fishing the specific fish roe with the book of roe, or is that not connected?
thanks
having a mild moment over here....this code works fine in my previous mod "Action": "EditImage", "Target": "Maps/springobjects", "FromFile": "assets/kibble.png", "ToArea": { "X": 160, "Y": 112, "Width": 16, "Height": 16 }, "When": { "LocationName": "{{ModId}}_DinoCave" }, "Update": "OnLocationChange" }
this does not "Action": "EditImage", "Target": "TileSheets/Craftables", "FromFile": "{{ModID}}/assets/dotmachine.png", "ToArea": { "X": 48, "Y": 384, "Width": 32, "Height": 32 }, "When": { "LocationName": "{{ModId}}_ghosthouse" }, "Update": "OnLocationChange" },
removing the ModID bit doesn't seem to help either
you do need to remove the modid bit from the fromfile path, but it might not be the only problem. What do you mean by not working?
no. i'm not super consistent, but these days i have been grouping my stuff into files more or less based on purpose (e.g. i'll have a Config.cs which has my config file data model and any enums or whatever, the GMCM api interface and code to register the menu, etc.)
no rules, just vibes
it's supposed to change the hopper while inside the house, which it has before, but now it's just the default
do people really put enums directly in namespaces?? that sounds terrible
vibes-based mods are the best mods 
plus side my painting mask is workin
where am i supposed to put them? /gen
but then you can't do public MyEnum MyEnum;
I avoid sharing names anyways because it tends to make things less readable
especially when static methods are a thing (though that doesn't apply to enums)
idk, enum Mode and public Mode Mode makes perfect sense to me
or DisplayStyle
most such enums really
I usually add a qualifier to one or the other, like ProcessMode Mode
@normal trout I commented this in the mod ideas repo itself as well, but your idea actually doesn't require any c# coding if you want to attempt it yourself 
that is true, if you use them a lot outside the class, it is more convenient to have it in a namespace
you can using static but that's even worse than fully qualifying it tbh
it really is
A lot of configs (mostly keybinds), in a mod which isn't compatible with gmcm
It is minorly annoying to have to call the extra class name but the increased readability and organization in the final config file is well worth it
how comes the mod isn't compatible with gmcm? are the config options something gmcm can't handle itself? because it can do keybinds
it's always interesting reading about how and why people do things
- It can't do arrays of keybinds though, which I'm using to add basic compatibility for other mods
it supports KeyBindList but only allows defining a single bind for it
And 2) it doesn't seem to have support for controller mode, which makes it incompatible with the purpose of my mod unless I added special code for it (which I don't really want to do lol)
(The amount I want to figure out how to add adjacency to the gmcm menu items is 0)
Yeah and I specifically need a list of keybinds where 1) the order matters and 2) you can add or subtract entries at will to adjust for mods which change the sizes of inventories/chests, so I can't just use keybindlist on its own (since keybindlist doesn't tell you anything about the order of the keybinds)
(I'm actually using an array of keys, not an array of keybinds, and converting them to keybinds later)
well, GMCM does support adding custom widgets
you can add multiple keybinds to a keybindlist
But not ordered
you can put them in whatever order you want
Yeah, that's the problem
I need to be able to access the index of which keybind from the list was the one that triggered the event
can you not just search thru the list until you find the matching button
Also I'm sure I could figure out how to add an array of keys to it, but that would still require me to add extra support to make the menu navigable. I'm pretty sure it would actually be easier to make my own custom settings page, which I'm considering doing at some point, but that's a "when everything else is done and I have time on my hands thing and also my mod is released and other people are using it" thing
I was under the impression that you cannot access the order of the keybinds in the list
I'm literally converting the keybinds to numbers based on their location in the list and then doing math on them to match them to the rows and columns in the player inventory/chests, so that you can go directly to an inventory slot by pressing the row and column keys for it sequentially
a keybindlist just has an array of KeyBinds
theres an order to the array
i might not be fully understanding the explanation which is probably on me im not very focused right now admittedly (trying to multitask and failing)
I think the multithreading and prioritisation algorithms in my brain are broken tbh
Which means you have the adhd
@velvet narwhal: pull up your Marlon repo for #making-mods-general message (7h ago)
perfect reminder, then
I love it when I finish a .json and run it through the checker and it has 0 errors. It rarely happens for me. I always miss a { of something.
i don't even know if someone wanted to deal with my spaghet
I'm trying to edit the Wizardhouse so that passing out within the tower causes you to wake up there instead. Does this code look ok? I've checked multiple mods as a reference and I'm still not entirely sure if this is the way to do it. { "Action": "EditData", "Target": "Data/LocationContexts", "Entries": { "WizModWizardHouse": { "Name": "WizModWizardHouse", "PassOutLocations": [ { "Id": "Default", "Condition": "PLAYER_NPC_RELATIONSHIP Current Wizard Friendly Dating Engaged", "Location": "WizardHouse", "Position": { "X": 3, "Y": 4 } } ], "MaxPassOutCost": 0, "PassOutMail": [ { "Id": "Default", "Mail": "WizModwizardhousepassout", "MaxPassOutCost": -1, "SkipRandomSelection": false } ], }, }, },
https://github.com/Aviroen/MarlonExpanded/blob/master/[CP] Moonstruck Marlon/content.json#L168 made my repo public cause it's not really anything all too special, but it's Got A Lot Of Spaghet™️ that you have to have 🤏 a decent understanding of CP for
The issue was dealing with "Marlon" vs "MarlonFey" right
basically i compensate the includes depending on if SVE is installed or not
if SVE is installed = i only affect the schedule
it's really the Appearances that i had a headache for due to Marlon and MarlonFay being used in events 
Easy enough to just dynamic token thT shit
yeah it's dynamic token'd
Marlon if not sve else marlonfey
i just had to remove the dynamic token for Marlon appearance just so it'd grab both appearances
No you might be right, I looked a little into keybindlists and my impression was that they were unordered, but I might have given up too quickly before finding out how they were implemented under the hood. So I might be wrong about the fact that they're unordered. I'll probably stick with what I have though because I'd prefer a list of keys to a list of keybinds (restricting them to one key is preferable imo)
(though tbh at this point i think i'm also gonna go the BETAS-only route because i don't want to compensate the dialogue
)
anyone know off hand what the stuff like "l 20" means in cooking recipes? seems to be an unlock condition but i dunno what
Everything in the list with l <#> seems to coordinate with a Queen of Sauce recipe, or a recipe that can only be purchased.
ahh that could be it
yeah, afaict only default, f, s, and skill names do anything in unlock field
cool
how do I add a Contexttag without overriding what is already there? Do I just have to add the preexisting tags as well as the one I am adding?
For example
{
"Action": "EditData",
"Target": "Data/Objects",
"Fields": {
"386": {
"ContextTags": [
"color_iridium",
"ore_item",
"use_reverse_name_for_sorting"
** "temisthem_bettertruffles",**
],
}
},
},
the bold is what i want to add to iridium
use TargetField
#making-mods-general message
thanks so it would look like this
{
"Action": "EditData",
"Target": "Data/Objects",
"TargetField": {
"386": {
"ContextTags": [
"temisthem_bettertruffles",
],
}
},
},
no
follow the format of the msg I linked
(ignore the When field it's not needed in your case)
Is this thingy still valid? https://stardewmodding.wiki.gg/wiki/Content_Patcher_Snippets_for_1.6#Context_Tags
I remember pathos was maybe going to make it better
so this
{
"Action": "EditData",
"Target": "Data/Objects",
"TargetField": ["386", "ContextTags"],
"Entries": {
"temisthem_bettertruffles":"temisthem_bettertruffles",
}
},
yep that looks good 
CP supports targeting list of strings by the entries themselves now so using indices is no longer needed
but that still works
how are we doign this lovely fall day
about to enter mountain tunnels again so if this message gets sent 10 min later that's why
I’ll try to get my snippets updated then
But if anyone else is inspired it’s a wiki so go wild if you know what you’re doing
can you explain for a layman hehe
did you write this portion for sve?
is this OG marlon's void
it's SVE compat + using OG marlon's Data/Character
basically, if MarlonFay exists = hijack that, if it doesn't, use Marlon
Really?! Wow I'm super surprised it could be done without actual coding! Yeah, I'd absolutely be interested in taking it on myself! How would I go about it?
ohhh ok
would ummm :3c would the marlon mod be ablw to hijack this way if this was included in my sve mod files?
just make the mod and comment in the issue with the link once you're done! As for the technical aspects, content patcher has a token called HasCaughtFish, that you can use as a condition for sending the letter with the recipe for each of the legendary fish when they're caught
i didn't backread, so you'll have to do a tldr, did you say you wanted a different marlon mod to have SVE compat?
tbh if it's personal use, you can probably just dig into SVE's code and set some things in Marlon's Data/Character edit to be like: "CanBeRomanced": true
as well as just, dumping whatever original marlon mod's dialogue you wanted to use to be in SVE's default.json MarlonFay keys
(I believe they wanted to use a different marlon mod in conjunction with SVE avi)
for a 4th party to make the compat between the two would be convoluted 
even as a personal edit?
personal is easy
it is 1000% for personal use, i dont wanna commit blasphemy against any mod authors lol
dump the nonSVE into SVE's dialogue keys, and probably throw in a marriageDialogue file
are there any tutorials i could watch since i don't really understand what keys are, im very beginner and only have done minor edits and fixes whenever i download mods
uhh
the added problem is that SVE is kind of everywhere, i can probably do a thorough tldr in #1277457201077813280
(i think a "thorough tldr" is called an explanation /lh)
if its not too much of a bother hehe
ofc i can also just go off on my own if i have a starting point
@tight rivet hi! are you still interested in making this mod? https://github.com/StardewModders/mod-ideas/issues/439
@
how do you add multiple conditions in the json file?
do you mean on a specific content patcher patch?
I'm adding music to the game, so yeah with 2 whens I guess
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.
here is one way: (a dynamic condition that aggigates the 2 into a single true/false value)
{
"Name": "DragonHouse",
"Value": "mytigio.dwarven_expansion_LargeCavern",
"When": {
"MoveDragonsToCavern": "true",
"HasMod": "mytigio.dwarven_expansion"
}
}
sure, sorry I'm being vague
but basically, this would work directly as well, you just seperate them with a comma
I hope I can properly put an example in here, I don't use discord much either 😛
"Refugee_Theme": {
"Id": "Refugee_Theme",
"Track": "Refugee_Theme",
"Condition": "SEASON Spring"
so that works, but I can't figure out how to add more conditions
a Condition like that is a GSQ. you can add more by separating them with commas (within the string)
https://stardewvalleywiki.com/Modding:Game_state_queries#Query_format <--- the top section talks about both having and and or conditions
e.g. "Condition": "SEASON Spring, DAY_OF_MONTH 12" to be satisfied only on spring 12
I tried: "Condition": "SEASON Summer, WEATHER Farm Rain"
but that doesn't seem to work
does "WEATHER Farm Rain" work by itself? (just to make sure it's not a problem with the condition itself)
that's a good question, I can test that right now, cause it was raining on my current day
Not anymore, the thign I did is p dead
I unassigned you from the issue then 
where/how are you applying this json? i don't see Track or Condition at [[Modding:Audio]]
Data/LocationContexts
@blissful panther What is your timezone so I know rougly when meep (may be) released? (here is a cookie as comp for the ping 🍪 )
ah
Music
(Optional) A list of cue IDs to play before noon in this location unless it's raining, ...
this seems relevant (emphasis mine)
its plausible that it just wasnt picking that music to play
if its not raining, then it chooses the song based on how many non-rainy days there have been in the current month
sometimes I boggle at the logic choices CA went with for things 😛
that one makes sense
dont want it to be random
itd be annoying to get the same morning song 3 days in a row
but if dwarfmp is trying to get it to choose music when it's raining, then...
yeah rain seems to be a problem, that might've been it
it checks the weather in that location context
but dwarf is checking specifically the farm for the GSQ
if this was adding music to the desert, for instance, it'd be completely fine
do any of you happen to know how hardcoded the emote menu is? specifically, how difficult it would be to put something in it that triggers an animation/dialogue box/trigger action instead of showing an emoji in a speech bubble
yeah, so technically if it was raining on the farm, but not his custom location, it might pick the song
the way i read the wiki entry, the Music list is not consulted at all if it is raining in the location context
thats true
but it might not be raining in their location context
regardless of whether or not its raining on the farm
in other words, more info needed
All lists are ordered, including keybind lists. That is the definition of a list, as opposed to a generic "collection" or other set structure.
theres a function thats called to confirm the selection of the emoji you could postfix but what its actually doing is typing /emote [whatever] into your chatbox for you
also by opostfix i mean prefix if you wanna stop it entirely
check EmoteMenu
it's a little strange though cause there's also "MusicIgnoredInRain false"
which I assumed would make the music play on any weather, rather than just in rain
thats for a different music selection
the music list you're looking in is JUST for choosing a song to play in the morning
I personally don't intend of doing this, but I needed to gauge the difficulty to be able to label something in the mod ideas repo, so thank you!
and MusicIgnoredInRain means it plays nothing in rain
oh. well then id label it "ezpz"
all harmony has been banned from the ezpz label unfortunately 
it can be done with content patcher with BETAS-
i think it can be done without harmony
well no music in rain, ah well, but I thought I hadn't written it right, cause I'm also having problems with "SEASON Summer, MusicIsTownTheme true"
im like 80% sure he's in GMT


