#making-mods-general

1 messages · Page 126 of 1

cold summit
#

where did i fuck up why does it look like that and why are there no buffs?

rancid temple
#

Effects isn't a field

#

I'm not really sure what's going on with the recipe slapped into the middle of the entry either

#

Your texture and sprite index are inside the effects field, so they won't be read at all since that's not a real field

cold summit
#

i have no coding experince at all please forgive the messiness

#

ohhh ok

rancid temple
#

Is StarJewMod a dynamic token?

cold summit
#

that is the mod id

rancid temple
#

You don't actually change that

#

It should be literally {{ModId}}

cold summit
#

ohhhh ok

rancid temple
#

Tokens are all double bracket enclosed

#

And that token is specific to pulling your UniqueID from the manifest

#

Have you unpacked the game contents?

cold summit
#

I am sorry I really don't have any experience, what does that mean?

rancid temple
#

!unpack

ocean sailBOT
#

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!

rancid temple
#

It creates an unpacked contents folder with all the games content files in a readable format

cold summit
#

ohh no i did not do that

rancid temple
#

So you could open up Data/Objects and see what the other items in the game look like

cold summit
#

that's a great suggestion, thank you

rancid temple
#

I suggest unpacking, opening up Data/Objects and checking out entry "204", Lucky Lunch

#

You'll be able to see what all the fields that an object can have are as well as how the Buffs field is set up

unique sigil
#

anyone here who has made a custom farm map ever worked on adding SVE compatibility for the farm nexus warp point?

#

was wondering if i could change that warp without adding my own spot, otherwise i'll have to list it as a known incompatibility

cold summit
#

last question i swear, the item appears in my recipes but it is grayed out, even though i set it as default. idk how to make the recipe accessible :\

lyric kestrel
#

I'm struggling to get my mail trigger to work, and after looking through the guides / examples, I'm not sure why it's not working... 🙃

cold summit
#

i also tried unlock through friendship and it didn't work either

lyric kestrel
#

Is it supposed to be in this format? { "Action": "EditData", "Target": "Data/Objects", "Entries": { "{{ModId}}_TestObject": { "Name": "{{ModId}}_TestObject", "DisplayName": "Test Object", "Description": "Test object.", "Type": "Cooking", "Category": -7, "Price": 110, "Texture": "{{ModId}}/TestObject", "Edibility": 45, "ContextTags": [ "color_blue", "food_test" ] } } }, { "Action": "EditData", "Target": "Data/CookingRecipes", "Entries": { "{{ModId}}_TestObject": "20 1 22 1 419 1/25 5/{{ModId}}_TestObject/null/" }

cold summit
#

this is what mine looks like and it is working perfectly rn

patent lanceBOT
#

@tardy adder: check charity box compat, ponder dewb multiplayer (10h ago)

tardy adder
#

-> right

tropic lichen
#

Hey guys I’m thinking about making a mod that replaces the town buildings, I should just be able to use content patcher right?

brittle ledge
#

Sorry, I went to bed, but pretty sure there's no practical limit. If you're adding a bunch of similar items, context tags makes it less annoying though (for example, I have Jorts and Jean add WAG's tea_sachet_item because they don't have a preference for scent on their smelly cat toys SDVpuffersquee )

calm nebula
#

Individual items have priority over context tags

carmine lintel
#

what coding language does mods use?

coarse lance
#

A quick question for people more familiar with tokens and game state queries - I can't find a built-in reference to your wedding anniversary anywhere (though it shows as a heart on the calendar!) - is there an easy way to refer to this or should I do something dynamic/count days since the festival?

tiny zealot
slender badger
#

I don't think there's an easy way, unfortunately. You could maybe do something tricky with having a trigger action that increments a stat or something, but the easier way (depending on what you're trying to do) might just be to have a config for the player to set their anniversary date

carmine lintel
coarse lance
#

Reasonable. Thanks for the info, I'll probably do the day counting method for what I'm after.

tiny zealot
# carmine lintel i learned basic JS so do you think i can learn c#?

yeah. they're both descended from C so the syntax will at least be familiar, but a bunch of macro stuff will be different.
it's generally the case, as chu was saying, that once you know any one language, learning others is easier. the fundamentals of thinking like a programmer translate easily no matter what language you are using

calm nebula
#

If you put your mind to it you can learn anything

carmine lintel
#

should i learn python first as it is similar or c++or just start straight at c#?

slender badger
#

Rather than immediately jumping into which coding language to learn though, the better starting point is what type of mod you want to make, because like Ichor said, plenty of mods don't need "real" coding at all

calm nebula
#

I would go to c# over python

#

Personally

tiny zealot
#

(that said, if you do want to write code, jump straight to C#)

#

i would choose almost anything over python, but i have Opinions™️

carmine lintel
#

is python that hard?

tiny zealot
#

"hard" is not a factor

carmine lintel
#

i feel like nothing now like i struggled in JS to make a button change colors now im scared

#

one of the biggest difficulty spikes are going from css to js

tropic lichen
#

Lol y’all are scaring me python is my main language rn

carmine lintel
#

i heard that in c++ (not sure if in c#) every thing is in classes just like in html every thing is in div

tender bloom
#

Python is fine, it can teach your bad habits sometimes though

#

Airyn is right when he says plenty can be done without C#

tiny zealot
#

figure out what your goal is, then choose the best tool for the job. frequently that tool is Content Patcher or a similar content pack framework, and then you don't have to do "code" at all

fallow musk
#

is there a resource for all QualifiedItemIDs for all items?

jagged grotto
#

Hi, i dunno if you guys support questions about mod editing for compatibility?

brittle pasture
#

!itemids for vanilla stuff

ocean sailBOT
jagged grotto
# brittle pasture what's your question

This is from a conversation with my friend who also does a bit of modding who told me to ask here.

welp, update on my mod compatibility editing journey, its NOT a schedule conflict. the schedule is fine. I've realized the issue is that the "editImage" part of the script for a mod isnt running. from what i can figure, i think it conflicts with the "load" of the dateable caroline mod which replaces her tilesheet? but changing it so both of them are "editImage" just gives me a blank space where caroline is.

#

is there maybe a way to get the other mod to target the tilesheet from the dating caroline mod instead of the base spritesheet?

acoustic stag
#

etiquette question: is it socially acceptable to offer to copyedit peoples mods? theres a number of mods i have downloaded/nexus pages i have seen that are like Good Mods That I Like with random spelling/punctuation/capitalization errors, which like i know if i posted something and it had stuff id missed i would want to be told, but i have no idea if thats because i am Extremely Autistic And Have A Special Interest In Editing/Proofreading or if thats normal, and i dont want to try and do something helpful that is actually in fact being rude to people if it isnt socially acceptable

(re: the fact that this is typed absolutely atrociously, i prioritize speed over formality in casual communication. which discord counts as. i do this professionally i promise lmao)

lucid iron
#

i imagine you can't just send a PR to most of these dialog mods, but you can politely comment/dm them i feel

jagged grotto
#

Yeah, i just felt like its such a niche case scenario that i may as well try and see if i can do something about it myself?

brittle pasture
jagged grotto
#

Tried doing so in the manifest. How does mod priority work on that by the way? Do i set the "load" mod as a false dependency of the "editImage" mod?

slender badger
#
Stardew Modding Wiki

PLEASE NOTE: This method has been largely obsoleted with 1.6's mod Load Order, but may still be useful for 1.5 content mods.
False dependencies are one method of managing load orders for Stardew Valley mods. Say that you have two mods that you would like to use together: Mod A, Incredible Items, changes every item sprite, while Mod B, New Apple ...

brittle ledge
#

At the least, if you're not rude about it, it wouldn't be considered inherently so to offer.

jagged grotto
cold summit
#

Hey guys, I just wanted to pop in and say a huge HUGE thank you for all the help I got on here. I have never ever coded before in my life and now I have completed my first mod and I could not have done it without the assistance I got here. Thank you for being such a warm and helpful community ♥

lucid iron
#

⭕ hey i like your mod, but i noticed you spelled a few words wrong
❌ hey i think your mod could be good, but first rewrite this character completely to suit my tastes

acoustic stag
tender bloom
#

It’s possibly also helpful to reach out to the authors directly to ask?

acoustic stag
#

oh yeah no copyediting is just. the actual words and like, format structure if relevant (mostly not for this because of the nature of videogame). i would absolutely never dream of asking someone to change dialogue meaning

tender bloom
#

It’s often something they would be happy to have help on, but it’s a little smoother when you ask first

#

If it’s just a couple lines, then summarizing in a comment on the mod works, but if you have a pretty long list, you could send them a zip of the edited mod, for example

acoustic stag
#

that makes sense! im just generally used to working in environments where im being asked to edit by the writer rather than reaching out and offering, so I wasn't sure if there were any established methods of approach so to speak

#

/if it was like, cool in the first place (a la unsolicited critique on art for example since its basically the same thing)

round dock
#

Yup, no harm in asking politely, especially if it’s in good faith.

slender badger
tiny zealot
jagged grotto
#

Woops, didn't see the no@, thats on me, my bad

blissful panther
brittle ledge
#

(I used to type super formally in my 20s and got all snooty about people who didn't lmao. Then I got old and tired and realized if it's understandable, proper grammar in casual convos wasn't really important SDVpuffersquee )

lucid iron
#

i shall word how i want when it not work sleep

tiny zealot
#

when i realized that interviews and formal transcripts are edited to create the sentences the person was trying to say and not what actually came out of their mouth

#

actual speech is riddled with dead ends, stutters, mistakes, elisions, and the like

acoustic stag
#

i think its a function of the way/reasons i write + edit actually! most of my writing is either super super technical or very character/context/dynamic variable, because its either academic or for a LARP i'm assistant staff at. having to jump between so many style rules (or non-rules: one of the characters i write the most viewable text for writes like a homestuck character lmao) at high speeds really enhances the ability to toggle proper capitalization or fully-spelled-out words on and off at will

blissful panther
#

You know, since this is at risk of derailing into language talk (as modders here so easily do)...

acoustic stag
#

Whoops Yep Sorry

blissful panther
#

making-mods-language-derailment

#

This one is long overdue.

acoustic stag
#

thats so smart

blissful panther
#

Now if it happens again, things can just shuffle over to there!

acoustic stag
#

anyway thank u all for the input!! i really appreciate it :3

blissful panther
#

It's definitely a kind offer, though! Just as long as it's done as everyone suggested and it's obvious there's no pressure for the author to accept, it's a great idea.

blissful lichen
#

I started a C# mod but I'm not actually sure how to add the internationalization aspect yet.

https://github.com/a2937/WishingWell

It's a spirit of the water. They take a coin and heal you. I wanna replace the hard-coded English dialog text though with dialog from internatilization JSON files. I know a key value pair is involved but is there anything built-in I can use specific towards internationalization.

GitHub

A Stardew Valley mod that adds a Water Deity. Contribute to a2937/WishingWell development by creating an account on GitHub.

#

It's not Content Patcher so that doesn't seem like an option.

blissful lichen
#

Thank you.

blissful panther
#

The nuget package option does make the process very nice.

tropic lichen
#

Question - when people make content patcher replacements, how do they know the exact dimensions for the image file of the item they want to replace? for example, the unpacked game files have most of the town buildings in one image file but what if i just want to edit and replace one at a time? For example, This mod does it that way: https://www.nexusmods.com/stardewvalley/mods/14524

Nexus Mods :: Stardew Valley

A Content Patcher pack for seasonal replacements of all the buildings around Pelican Town.

tiny zealot
#

open the .png in an image editor and measure the part you care about with some kind of tool, like rectangular select

#

any reasonable program should tell you the position and size of your selection, so those are the coordinates you give to content patcher

tropic lichen
#

what if im off by a few pixels, does it matter?

tiny zealot
#

generally you want to get it exactly right. if the thing you're editing is surrounded by empty space, then you have some wiggle room

#

most things in the game (not the stuff on Cursors.png, though, lmao) are multiples of 16 pixels wide and tall, so that may help you line up correctly

tropic lichen
#

how will i get it exactly right 😞

#

do i just keep cropping it until its perfectly in the middle

tiny zealot
#

maybe it will help if you tell us what you are trying to replace? perhaps i can sort of walk you through it

tropic lichen
#

i want to replace the harvey/pierre shop building in the town

#

I have the game unpacked already

lucid iron
#

for tile sheets, they are always multiple of 16

#

once you set up the initial content patcher mod with an edit image, you can patch reload to get any changes in without restarting

tropic lichen
#

mhm

#

so crop it test it in game and if its not centered crop it again?

#

after reloading ofc

lucid iron
#

you can specify a cropping area for the source image too

{
  "Action": "EditImage",
  "Target": "Maps/springobjects",
  "FromFile": "assets/Flooring1_summer.png",
  "FromArea": {
    "X": 0,
    "Y": 192,
    "Width": 16,
    "Height": 16
  },
  "ToArea": {
    "X": 16,
    "Y": 560,
    "Width": 16,
    "Height": 16
  },
},
#

this example is editing item icon on springobjects, but the principal is the same

tiny zealot
#

pierre's and the clinic are in multiple pieces on spring_town so this is a good example for piecing together multiple edits

tropic lichen
#

mhm

#

so i would do maps/spring_town as the target

#

obv different for each season

tiny zealot
#

yeah. (you can make your life a bit easier with the {{Season}} token, but we'll cover that later)

tropic lichen
#

the X and Y and the Width and Height is the stuff i hate

tiny zealot
#

for now, just do spring

lucid iron
#

It's already seasonal right

#

spring_town summer_town etc

tiny zealot
#

anyway, @tropic lichen in your image editor you can probably turn on a grid overlay. what are you using?

#

if you can get your grid set to 16x16 then you can easily see the outlines of tiles

tropic lichen
#

wait but i still dont know how big my canvas needs to be SDVpufferwaaah i guess i could just crop then spring town png and adjust it later?

tropic lichen
tiny zealot
tropic lichen
#

both programs have grids but idk if i can do a 16x16 grid in procreate

tiny zealot
#

this is just for finding the values for your rects, so open it in whatever

tropic lichen
uncut viper
#

to be clear, no matter the size of your canvas, you will only be telling Content Patcher to use the part of it that is the same size as the thing you are replacing

#

you cannot replace a building with a higher resolution texture

eternal mortar
#

How do i put a custom shop on the map? Is it just Action and the custom shop name?

uncut viper
#

even if your canvas is 5000x5000, you will be telling content patcher (for example) "i want you to use this 50x50 block here in the middle, ignore everything else"

coarse lance
#

So, hopefully last question for this mod. I'm testing an incoming phone calls content pack but I'm not getting calls when I think I should from the wiki documentation. From some poking in-game and on the wiki it seems like there's additional conditions I can't access in StardewValley.Objects.Phone::CanHearCall - how do I find out how this class behaves?

tiny zealot
# tropic lichen im using aseprite for lineart and procreate for coloring

here's me selecting one of the regions at issue in GIMP. i can tell that i've got it right because of the 16x16 grid.
this part of the spritesheet is at (80,176) and is size (160,144) so that would go in the ToArea for one of your patches for this building.
(i can also tell that those values are correct because they are all multiples of 16)

lucid iron
#

Wiki should have info on the arguments

eternal mortar
#

And where do i put ths shop name so the game knows what shop?

lucid iron
#

[[modding:Maps]]

eternal mortar
#

alr ty

uncut viper
#

it would be in CheckForIncomingCall in the DefaultPhoneHandler class, and you can view it with ILSpy after decompiling

#

!decompile

ocean sailBOT
coarse lance
#

Because I'm testing the code I put the base chance override to true though...

tropic lichen
uncut viper
coarse lance
#

Yeah, it triggers for one of the four tests but not the others. They have the same TriggerConditions.

eternal mortar
tiny zealot
# tropic lichen ok thanks for this that is very helpful 😭

sure! you have to do the same thing for your source image (FromFile) to get its location to give as your FromArea, and you'll have to repeat for all the other pieces that are put together to make the complete building, since they're not contiguous

tardy adder
#

Remind me in 6 hours to plan for the scope creep powered by MEEP, and by Elli and Shrimp

patent lanceBOT
#

you're in luck, I have one spare egg timer available. I think it's broken but we'll give it try. (#6397382) (6h | <t:1733269877>)

uncut viper
#

(also CanHearCall doesn't exist so im not sure how out of date the wiki is for that in particular)

tropic lichen
tardy adder
#

Remind me in 18 hours to start dealing with the xmas mod and ze dreaded sprites (again)

patent lanceBOT
#

Sure thing, 13midnight (#6397385) (18h | <t:1733313186>)

tropic lichen
#

like will i get the coordinates etc

#

i can do the grid idk abt the other stuff

tiny zealot
tardy adder
#

sorry for ze random reminders am setting, my every electronic is saying bye bye now

blissful panther
#

It's in the bottom left in a similar, though slightly more confusing layout!

tiny zealot
#

(there's no way it's more confusing than gimp, which only displays the position if you try to move the box, and the size if you try to resize it, so you have to click and hold without moving the mouse)

blissful panther
#

Gives you the top-left corner, bottom-right corner, and the dimensions.

#

It's just... a little more to parse.

#

(Dimensions if you make a slection!)

tropic lichen
#

i hate it heeeeeeeere

#

sorry

#

ok i will go do it

tropic lichen
lucid iron
coarse lance
tiny zealot
#

(0 48 is "X": 0, "Y": 48, btw)

tropic lichen
#

thannnnks 😁

#

ok NOW i can try

teal bridge
#

Does the game have a function to resolve indefinite articles for item names, like "a cabbage" vs. "an orange"?

uncut viper
#

i believe thats in the Lexicon class

#

i could be misremembering though and iirc its not like... the most sophisticated

#

Lexicon.getProperArticleForWord

teal bridge
#

Wow, you weren't kidding, it just looks at the vowel.

uncut viper
#

about on par with Lexicon.makePlural, which used to give great results such as Hay => Haies

teal bridge
#

I just realized it's counted so it's better to use a number instead of the article and yeah, I see pluralization is in the same class.

#

Pluralization is... slightly better, I guess.

#

I love that for any language other than English it just... gives up.

uncut viper
#

tbh i dont know how i wouldve solved it for any arbitrary language either

teal bridge
#

ICU syntax, each item defining its own traits.

#

But what we have is what we have, not what'd be nice to have.

lucid iron
#

Is there ICU lib for c#

tranquil quiver
#

I'm trying to edit the spouse portraits is this the right code. "Action": "EditImage",
"Priority": "Late",
"Target": "TileSheets/junimo_furniture",
"FromFile": "assets/junimo_furniture.png",
"FromArea": { "X": 0, "Y": 0, "Width": 32, "Height": 32 },
"ToArea": { "X": 0, "Y": 272, "Width": 32, "Height": 32 },
"PatchMode": "replace",

uncut viper
#

assuming its formatted as json correctly in your actual file and your coordinates are correct that looks tentatively fine to me

tranquil quiver
#

ok thank you

tiny zealot
modest dagger
#

how the hell am i meant to know what layer is passable in tiled

latent mauve
#

Buildings is the only not passable layer by default

modest dagger
#

so we can't edit that?

latent mauve
#

And you can change that with a TileData object on the Buildings layer if necessary

#

You'd use the Passable property on that TileData object to set passable tiles on the Building layer

#

That's why you would typically place your walls and map boundaries on the Buildings layer, but you can cover them up visually with things on the Front and Always Front layers if needed

modest dagger
#

guess i gotta just redraw everything then

lucid iron
#

I usually test the passable in game

#

Using data layers

tiny zealot
#

i think you can make tiles on other layers impassable by setting the Passable property

latent mauve
#

If it helps, in Tiled you can right click with the tile stamping tool to "grab" that tile to use again, and just place it on a different layer.

tiny zealot
lucid iron
#

Passable on back blocks u

#

Passable on building let u through

latent mauve
#

Considering that we can add extra draw layers now, there really isn't any need to have more than one block passage layer

tiny zealot
#

thanks, chu SDVpufferheart

brittle pasture
uneven dagger
#

Hello all. I'm playing with calendar data. I can find the festival dates and passive festivals (e.g. midnight market). Where does one find when the bookseller will be in town that also shows in the calendar. As I type, I'm also thinking about desert festivals (yet I haven't made it that far in the game yet since 1.6 so not sure what to expect there)

brittle pasture
#

desert festival and others are static and defined in Data/PassiveFestivals

#

bookseller is random, and you can check with Utility.getDaysOfBooksellerThisSeason in C# code

#

not yet possible to check bookseller in content code I think

uneven dagger
bold cairn
#

I've fallen a bit out of the loop with some of the new modding / content patcher options with the recent updates. I looked through the current Content Patcher docs on github but am not sure if I'm missing something.

For Content Patcher, is it possible to perform query expression arithmetic operations on a value without also having to explicitly define the value?
E.G. Currently I use query expressions to change the price of an item like so:

            "Price": "{{Round: {{Query: {{Crops Value Multiplier}} * 55 }} }}"
            },```
where I define the custom token `{{Crops Value Multiplier}}` elsewhere. 
However, is it possible to do something like this, but without having to enter in the `55` value, and just have it perform an operation on whatever it finds as the current value in that field? Something like:

```    "188": {
            "Price": "{{Round: {{Query: {{Crops Value Multiplier}} * {{CurrentValue}} }} }}"
            },```
using `{{CurrentValue}}` or something to just refer to whatever the current value is?
teal bridge
#

How come the game only sometimes checks whether a quest is accepted before progressing/completing it? Is there rationale or just the usual Stardew randomness?

old edge
#

Is it possible to add a when condition for a config schema?

brittle pasture
bold cairn
dusky sigil
#

trying to decide if i should publish my mod with a lack of polish or bite the bullet and learn transpilers. because my head is spinning trying to comprehend transpilers

uncut viper
#

you only get one first impression and one chance to get to trending

#

so take that under advisement

dusky sigil
#

that's very true

brittle pasture
#

is this the "no nausea debuff from ghosts" thing
because tbh from an average mod user's perspective there's no difference between "immune to nausea" and "immune to nausea from the only vanilla source of nausea"

teal bridge
#

Funny how much of mod culture is built around one arbitrary and silly Nexus popularity mechanic.

calm nebula
#

I mean, if you want users lol

#

Unless you're the type who only cares about user #1

#

God I'm tired but

calm nebula
#

Tbh you don't need transpilers for that

#

But it might be a fafd

#

Faff

#

I can explain more when I get home if I remember

brittle pasture
calm nebula
#

But the jisr is to find the function that ghosts use the launch projectiles

mighty quest
#

Anybody know where this method went in 1.6?
Utility.getUncommonItemForThisMineLevel

calm nebula
#

And then track the projectiles produced and remoce the debuff

dusky sigil
#

well i've already got it working that there's no debuff, it's just. so the mod is actually a necromancy mod, you can summon undead monsters and make them fight for you

#

and it seems a bit silly to have them trying to debuff you and throw bones at you while they're under your control

calm nebula
#

Sounds interesting!

lucid iron
#

That's a lot more complicated than just making player debuff immune monS

brittle pasture
#

that seems like a completely separate problem you should be solving

calm nebula
#

Can't you like just prevent them from spawning the mumble jumble

#

Anyways

mighty quest
#

Have you solved the problem of getting monsters to fight each other?

calm nebula
#

Enjoy!

lucid iron
#

I think u should probably just make Companions

calm nebula
#

I'm going to go cry over labview, see y'all later

teal bridge
mighty quest
#

it's not, Walk Of Life solves it

dusky sigil
mighty quest
#

but do your minions actively seek out your enemies?

lucid iron
#

Certainly vanilla does it only for trinkets but there's no direct dependency there

dusky sigil
#

tbh this was probably a lot for my first ever c# mod but i'm so close! it's really close to being there!

mighty quest
dusky sigil
#

oh thank you, that could help

mighty quest
#

(just realized this code may be hard to understand if you don't know what the mod does.. but I recommend cloning this repo and searching for uses of FakeFarmer class)

#

Walk of Life uses this to control Slimes as minions, so its basically the same idea.

cyan marsh
#

I'm trying to think of a way to have a list of stuff preloaded that can be accessed by anything that isn't a static list but can be accessed by anything I'm doing

dusky sigil
#

that is basically the same idea, there's probably a lot i could glean from this code base

cyan marsh
lucid iron
#

No down with core mods

mighty quest
#

me neither, its almost a meme at this point

lucid iron
#

Put it in ur project template Dokkan

mighty quest
#

but some times they're a necessary evil

modest dagger
#

two questions with map making:

  1. How the hell does lighting work
  2. How do I place doors
teal bridge
#

If you make it a broadly useful framework mod, then it's OK.

#

(so says I)

lucid iron
#

I'm only again core mod posted on nexus for sole usage as a dll for ur own mods to ref

cyan marsh
lucid iron
#

That's just what static is for Bolb

#

I usually make a static class so it's all in 1 place

cyan marsh
#

i suppose... I was just thinking if there was another way

#

😮 that isn't really a bad idea actually

#

I'm trying to keep my new code neat and that's the stuff i'm looking for

mighty quest
lucid iron
#

You can also make a normal class that u instantiate once (as a static on something else)

#

The general term is singleton

mighty quest
#

singleton is just static with extra steps

cyan marsh
#

i like the static thing

faint ingot
#

testing out my mod and forgot I put this dialogue line in lol

latent mauve
#

mini-mod idea to add shop entries based on a chosen context tag works.

#

I've only got vanilla food items in there for now, but it works! I set up a Dynamic Token so that the context tag can be set via the config options.

#

Only negative is that you have to predetermine the context tag options for the config

cyan marsh
#

blargh trying to populate data and i feel like eating nachos

desert pagoda
#

How does one learn to add locations I have tried the

#

Modding:Location data

#

and I have no idea what to start doing it, and all the tutorials I have found are for pre 1.6 locations tuff

uncut viper
#

have you unpacked your files?

desert pagoda
#

Yeah

uncut viper
#

you basically wanna do what Data/Locations is doing then

desert pagoda
#

I got the map ready, I just dont know what to put in the content .json

#

Oh

uncut viper
#

if you know how to add an object to Data/Objects for example, you're doing that now but adding stuff to Data/Locations instead

latent mauve
#

It pains me that I got the minimod working but not one of the food mods I downloaded actually sets a food_ context tag in them for their dishes

uncut viper
#

you'll also need to make sure you load your map to the Maps asset now too

#

i think. dont remember if Locations can load them directly from a tmx

latent mauve
#

We need standardized context tags for food mods xD

uncut viper
#

someone else more familiar with location and map stuff will probably correct me if they are around

desert pagoda
#

Why did they make it more complicated T-T

uncut viper
#

well, it wasnt feasibly possible at all before without a mod like CP to do it for you

#

now they made it into a data model so its very easy to add new ones

#

and customize things about them

latent mauve
#

Data/Locations is actually pretty straight forward, quite a lot of the fields in the data model are optional

brittle pasture
uncut viper
#

(i know CP still does it for you in this case but yknow what i mean. it did a lot of the things f or you)

latent mauve
#

Like, someone yesterday wanted to filter for food_sushi, for example

desert pagoda
#

Also what is location context do I have to worry about htat

desert pagoda
#

also I opened location .json

#

I have no diea what I am looking at

uncut viper
#

they changed it to make modding them in general much easier for everyone

#

with or without content patcher

latent mauve
#

So, what kind of location are you trying to add? A farm, a building interior, an outdoors map?

#

That determines what has to happen and how much detail you need to add

desert pagoda
#

An interior

desert pagoda
#

Wait so it was harder before?

latent mauve
#

It was way more fragile before, IIRC.

desert pagoda
#

So if rn it seems like everything is written in Chinese, before was like hieroglyphics.

lucid iron
#

To make a new location u need to load the tmx and add a new entry to Data/Locations that's about it

desert pagoda
#

That is what I tried to do but there is now something called location data that I am trying to wrap my head around

rotund walrus
#

hey can someone help me with my mods? I can't get my tileData to work on the game for some reason and I'm not so sure cause I'm new to modding

lucid iron
#

Most of the fields r self descript and u also don't necessarily need to change em

desert pagoda
#

But where do I even put it?

latent mauve
lucid iron
#

Do you have knowledge of content patcher in general

latent mauve
#

You can pretty much skip all the worldmap entry stuff in there, and the edit to the mountain map.

desert pagoda
#

I have watched a 3 year old youtube video

#

4 3 year old youtube videos

lucid iron
#

Erase the videos from your mind PecoSmile

desert pagoda
#

There are no other tutorials that I can see

desert pagoda
#

I also did recolor abigail's sprite

latent mauve
#

Video tutorials are not common because they become outdated VERY quickly

desert pagoda
#

but where would I go to get examples?

lucid iron
#

What particular kind of mod do you wish to make?

desert pagoda
#

I just wanna create a room, and a warp to get to that room, I got the room in tiled

#

Made it

#

Now I just wanna load the room into the game

cyan marsh
#

XNBs were really not that hard to understand.. just had to get an XNB extractor then you can see the data

latent mauve
#

Okay, so from my example Rito Roost that I sent you, you'd only need the first two blocks + wherever you're setting the warp to get into the room.

latent mauve
#

You had to then re-add them every time

cyan marsh
#

i am aware.. I was messing with XNBs before CP was a thing x3

desert pagoda
#

Oh

#

got it

#

found it

latent mauve
#

(just want to be sure we are absolutely not encouraging anyone to XNB anything in the year 2024 or beyond.)

desert pagoda
#

I did try that once like 2 years ago (failed horribly)

cyan marsh
latent mauve
#

The third block in my example also shows how to add a warp from an existing map to your new area, if you haven't already got that bit figured out

desert pagoda
#

yeah thank you

latent mauve
#

It's a bare minimum example that will get you up and running, but you can take a look at the optional fields in the Modding:Data/Locations wiki page if you need any extra bells or whistles. 🙂

desert pagoda
#

Once I am a competent individual and not a bumbling cat stumbling around in the dark, I will hopefully make more tutorials

#

because god knows reading documentation can get confusing XD

brittle ledge
#

[pops up] I would love to see more tutorials!

#

We have a bunch on the modding wiki, but since the game kind of upended all the old methods about 7 months ago, the documentation hasn't caught up.

desert pagoda
#

The documentation is mostly there but like the applied step by step stuff

latent mauve
#

My constantly-a-work-in-progress Legend of Zelda NPC Overhaul mod is a great excuse for me to learn all the aspects xD

#

I had to get a crash course on NPCs and locations so far

brittle ledge
#

(We do have a tutorial for NPCs if you still need help SDVpuffersquee )

latent mauve
#

(I made a NPC builder, I'm good at this point)

desert pagoda
#

Honestly the best thing I will do is go dissect my entire modlist see what each part does

desert pagoda
desert pagoda
#

where may I find such a coveted piece of art?

brittle ledge
#

!npc

ocean sailBOT
#
Creating a Custom 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:

latent mauve
tight rivet
#

Today, in fun things: "Oh hey, this update is getting hit with a Trojan detection."

#

"Well, that explains why it's not on Nexus."

latent mauve
#

yikes

brittle ledge
#

I should probably bump some tutorials up my list since I finished most of the big updates I had pending. I could probably do at least the basics on adding fish and on farm animals SDVpufferthinkblob

desert pagoda
latent mauve
#

If you want to snag bits of my SDV Object Parser (the furniture spreadsheet) to transform into a tutorial on CP furniture, I will not complain.

tight rivet
#

I'm poking at the source code of StardewUI now but woof, I forgot how much I hate source code

#

(of GUI frameworks)

humble timber
#

...looks at the npc builder...

#

sweats nervously

latent mauve
#

LOL a whole lot of it is optional fields, and they're all explained when you hover, breathe ❤️

lucid iron
tight rivet
lucid iron
#

i think its not that bad though, just dont think about the focus search code ukimasu

desert pagoda
tight rivet
#

is it?

#

Like every time something's gotten through Nexus is usually is stuff that wouldn't be in most AV stuff to begin with

lucid iron
#

did u check if the github version has same problem

tight rivet
#

i downloaded from github

lucid iron
#

oh i misunderstood cus of the nexus mentions LilyDerp

tight rivet
#

.. flagging that again on Nexus for Project Danger Weather

#

the hell

#

grumbles, goes to load up virustotal

#

i think this is a problem with what file it scanned, but it's also clearely likely a defender issue

cyan marsh
#

Looks like i'm not the only one making an NPC thing

latent mauve
tight rivet
#

I am, actually

brittle ledge
modest dagger
lucid iron
#

i recommend cellar replace mod for baby's first map Dokkan

wanton pebble
#

Alright, coming in with a weird question. I just got a log from a user that appears to have conversation topics being treated as events? Did a new mod come out that may have caused this or is there an error going on?
Log: https://smapi.io/log/fdda02fb638e41c0985f1dd06a1dbcfd
Specifically, a trigger of mine isn't working because breakfastpause is present, but so is breakfastpause_memory_twoweeks

light bramble
#

so quick question, if a map patch (so like not the full map but a section of it that gets patched in based on a condition) has tile data for having a string shown when the user clicks (like how there's some flavor text in the houses) will that tile data copy over? or will it not?

#

Also, you can patch maps based on the in game season right? Like I'm not just going crazy there

hallow prism
#

i know some CT are autogenerated based on event name, i don't know if CT are generated based on CT names

brittle ledge
#

The twoweeks is the vanilla 1.6 thing SDVpufferthinkblob Is the trigger A breakfastpause for the event?

hallow prism
#

do you have an event named this way, and how the second CT can even be interfering?

brittle ledge
brave fable
hallow prism
#

(the game will generate a lot of various CT including stuff like event_memory_oneweek and event_memory_oneday, but i fail to see how the two weeks one would cause issue without a check for it?)

brave fable
# light bramble these

sure, your TileData objects on matching layers will be copied in. of course there's certain EditMap PatchMode values that could prevent them from being copied, but generally they'll be included

light bramble
# light bramble these

I want to have them on the patches I'll be patching in for each season...for flavor reasons

hallow prism
#

it may be easier to have the seasonal in the i18n if you use translation than in the map patch

light bramble
#

Lets just say my NPC farmer will have a special coffee plant that grows year round.

hallow prism
#

(unless the sprite too is changed)

tall shale
#

hi! is there a way to obtain for my added object a number id? the problem is that i need to create TemporaryAnimatedSprite for bomb, and for bombs the argument accepted is int initialParentTileIndex.
so is it possible without modifying the tilesheet?

hallow prism
light bramble
#

and I have zero idea on how to do i18n files >_<

#

I'm just baby

brave fable
hallow prism
#

ok... i hope you'll grow one day...

brave fable
#

just follow the same conventions as in the base game (spring_ + myFunnyTilesheetName, summer_myFunnyTilesheetName, ...)

light bramble
hallow prism
#

tia's jort and jeans is a great npc example mod

light bramble
#

I would 100% eventually like to have translations for my mod...I just need to not bite off a lot, lest I get burnt out again

brave fable
#

FYI I18n is really extremely simple and saves you so much time and effort

light bramble
#

So I've been told, but I've also looked into a lot of it....and well, my brain just doesn't compute properly...

brave fable
#

the only setup required is having an i18n/default.json file in your content folder with as little as {} as the content

#

CP does the rest

hallow prism
#

you can ask question but i18n will save you lot of effort in the end and can be very cool for some dialogue trick later

light bramble
#

Honestly I probs will ask more questions...when I have more time lol, I need to get ready for work and I've been pretty busy for this holiday season.

brave fable
#

from there, just grow your content and default files as you go:

// MyFunnyMod/i18n/default.json
{
    "myfunnykey.dialogue1": "Hello world!",
    "myfunnykey.dialogue2": "Man i love internationalisation$h"
}
// MyFunnyMod/content.json
{
    "Changes": [ { "Action": "EditData", "Target": "Characters/Dialogue/MyFunnyNpc", "Entries": {
        "winter_1": "{{i18n:myfunnykey.dialogue1}}"
        }
    } ]
}
#

i typed that in 2 mins in a discord chat. that's all the setup for i18n SDVpufferthumbsup it's that easy

brittle ledge
brittle pasture
#

custom numbers wouldnt work anyway since it's checking against one of the 3 vanilla bomb numbers

tall shale
# brittle pasture is this for custom bombs? iirc you can just use one of the other constructors an...

maybe something other here's wrong, but with this method overload, by bomb is spawning, shaking, etc., but it doesn't explode

TemporaryAnimatedSprite customExplosion = new TemporaryAnimatedSprite(
    textureName: "Mods/Arteesian.ExplosiveKegs",       
    sourceRect: new Rectangle(0, 0, 16, 16),           
    animationInterval: 100f,                            
    animationLength: 1,                                
    numberOfLoops: 24,                                     
    position: placementTile * 64f,                     
    flicker: true,                                    
    flipped: false                                     
)
{
    scale = 4f,                                        
    color = Color.White,                               
    layerDepth = 1f,                                   
    alphaFade = 0.01f,
    bombRadius = 5,
    bombDamage = 50,
    shakeIntensity = 1f,
    shakeIntensityChange = 0.0002f,
    extraInfoForEndBehavior = idNum,
    endFunction = location.removeTemporarySpritesWithID
};
tall shale
#

it seems like it's exactly this overload is used for bombs, according to its description

lucid iron
#

There's a iridium bombs from a while back

#

I don't know if the code is open source but I believe it just patch placementaction to let u put bomb and then modify bomb radius after creating the tas

#

Might be able to find discussion of it if u search up this channel

brave fable
#

but the code above also modifies bomb radius after creating the tas

lucid iron
#

I dunno why they bothered to put an ID then yggy

brave fable
#

how do you mean?

lucid iron
#

Why put 936 specifically I mean

#

Tho maybe it's decompile funny business

brave fable
#

well the (the other decompiled) mod author is using the default bomb TAS ctor, which takes a sprite index

#

and our (beloved confused) mod author is not, using the more sensible custom texture sheet TAS ctor

tender bloom
#

I made fireworks work like a bomb in Fireworks Festival

tall shale
#

936 because i think the creator adds another row to the game's original tilesheet via CP, it makes sense why 936 this way

tender bloom
#

I didn't do very much custom though

#

Just dropping the damage to very low and making the TAS colored

#

The 936 thing is bad practice...

lucid iron
#

How sinful yggy

tall shale
#

yeah, that's why i'm looking for another options

lucid iron
#

I think u can use any of the TAS constructors

tender bloom
#

gotta be honest, I don't remember what I did in FF

#

I'm pretty sure it works though

lucid iron
#

As long as u set the explode related fields it'll blow up

tall shale
lucid iron
#

Could probably have a bomb object that places as a different sprite if u want

brittle pasture
tender bloom
#

Not the same as the ones added in 1.6

brave fable
tender bloom
#

Since Fireworks Festival predates 1.6

#

It looks like I had to force the texture name for reasons that I have never understood

brave fable
#

x0y0 is 0, x16y0 is 1, x32y0 is 2, ...

tender bloom
#

I pull from a custom spritesheet I made though which it sounds like is what you want?

brittle pasture
wanton pebble
#

sorry for the delay, it's been a bit

tender bloom
#

the explode chain of code is wonky

#

I thinkkkkk it might have to do with Bomb radius or bomb damage

#

but it's been way too long

wanton pebble
#

The vanilla 1.6 behavior of _memory_twoweeks I know happens for events, but does it happen for Conversation Topics?

hallow prism
#

i am still confused about what is the rapport of the memory ct with the initial issue

#

you have a CT set by the event, named whatever, that didn't expire after how long you set it to last?

tender bloom
#

what you need to look for in the code is GameLocation.Explode getting called in TAS cleanup code iirc

wanton pebble
#

Correct. Here, let me grab the code

hallow prism
#

(how long should it last?)

tender bloom
#

I sympathize greatly as I recall lots of hissing and such

wanton pebble
#

"177751/SawEvent 96/DaysPlayed 84": "Saloon1/14 19/farmer -100 -100 0 Gus 14 18 2/skippable/addMailReceived breakfastBegins/addConversationTopic breakfastpause {{CTDelay}}/pause 1700/textAboveHead Gus \"{{i18n:Crisis.177751.0}}\"/pause 1500/
{{CTDelay}} is the config, which is 1 (one day) per the log

hallow prism
#

what is the max it can have?

brittle pasture
wanton pebble
#

the max is 56, but the default is 14

tall shale
hallow prism
#

ok

#

(i don't trust user to have set it properly then not realising that maybe the duration is already set)

#

i wonder if there's a way to check the remaining duration of a CT

wanton pebble
#

and for the record, the CTDelay is only for the backup. They're tired of waiting on it on the board, so they're using the backup system to get the special order

#

And since 14 days is two weeks.... well, that's two cycles of special orders. I doubt they got tired second run XD

hallow prism
#

(and yes, the breakfastpause_memory thing is strange and intriguing, but i doubt it's the cause of the issue, it may be a symptom but it would be weird that it's only on your mod it happens)

brittle pasture
#

maybe your own TAS has some extraneous fields?

wanton pebble
#

Oh I don't think it's the cause, but I think it happening may have caused the original CT delay to not expire

#

which is why I'm trying to figure out said cause

hallow prism
wanton pebble
#

In short:

  • Gus's special order has to show up normally on the special orders board, where it may compete with 100s of them
  • Backup system, if enabled, causes Gus to send the special order by mail to activate it, using a trigger action
  • The special order can show up immediately, but the backup system has a pause (configurable) meant to give Gus at least a little time in universe
#

What the user is saying is they're not getting the backup mail. Because they still have "breakfastpause" for some reason, the trigger action will never fire

hallow prism
#

ok

#

cool cool cool

#

i checked quickly, the gsq for the CT cares only if it exists

#

i don't remember anything that would see what is the duration left for a CT

wanton pebble
#

Yep. So I'm wondering why the CT still exists

hallow prism
#

maybe it's stored in the save

#

in which case you can see if they are ok to share it with you

#

it may give you extra informations and maybe a possible solve by save editing (as long as they backup of course)

wanton pebble
#

I mean the solve is easy from a "I can tell them how to fix it"

#

trigger action via debug command to force end breakfast pause

#

I'm trying to figure out why it happened in the first place SweatSmileIan

hallow prism
#

yeah but if it's stored in the save it may show that the value remaining is 40 and it would be likely "user entered big number by mistake" or that it doesn't exist and it's a clue

#

maybe an harmony summary can show if something is strange too

#

but i don't have more ideas

wanton pebble
#

Gotcha. I'll ask for their save, but that's unfortunate. Thank you for the help, regardless!

brittle ledge
#

Yeah, the only other thing I could think of was Lasting Conversation Topics, but that's not installed and even if it has been, it wouldn't affect CTs after being removed

pseudo roost
#

Id like to make a try to make a mod but i have no idea how to code

brittle pasture
#

!startmodding

ocean sailBOT
#

Making mods can be broadly divided into two categories:

Usually it’s easier to start with making content packs, since you don't need to learn programming.

brittle pasture
#

depending on what you want to make you dont need to write code at all, just json files and pixel art

patent lanceBOT
tardy adder
#

AH THE MEEP

tight rivet
#

MEEP?

lucid iron
tight rivet
#

ah, right.

patent lanceBOT
#

@calm nebula: edit the wiki (12h ago)

calm nebula
#

Ahhhh no u

#

Remind me 2 hours to edit thr wiki hopefully your dumb ass will be home by then and not yelling at labview

tall shale
lucid iron
#

weeds honey

hard fern
#

you need to load in your custom asset, and direct "Texture": to it

worldly barn
#

hello! I have an incredibly specific question - my goal is to make the Stone Floor completely invisible, so I can use it as a connector for Junimatic without worrying about having it look nice. I have the code to replace the image working successfully, and it's pointing correctly to my 64x64px transparent image correctly, but it's showing this semi-transparent gray layer (presumably underneath?) any thoughts or tips on how to remove that? i can send the code I have, if that's helpful - no mentions of opacity or anything like that currently. i'm running several mods, but this is pretty lightweight, so i'd be surprised if there was any sort of issue with compatibility

lucid iron
#

you should just make a new flooring

worldly barn
#

how do i do that?

lucid iron
#

edit Data/FloorsAndPaths

calm nebula
#

There are settings for shadows yeah

#

Somewhere in data/floorsandpaths

worldly barn
#

i've never modded before, so I figured (possibly incorrectly) just replacing was easiest haha

lucid iron
#

if u add new u can keep stone floor for decoration purposes

#

it'll be less annoying AquaThumbsup

worldly barn
#

yeah i don't really use flooring as decor, and i worry that adding a new one might screw with Junimatic? but i can experiment

lucid iron
#

it will not

drowsy pewter
#

if you do this method with a path it will not have the shadow

#

aside from what other people have already said

tall shale
lucid iron
#

!unpack

ocean sailBOT
#

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!

worldly barn
# lucid iron !unpack

thank you! i've never looked at the game code before, since i've been sticking to editing mod files, so this is a helpful place to start

lucid iron
#

u need to add new thing in Data/FloorsAndPaths, and a new Data/Objects for placing those

worldly barn
drowsy pewter
#

ah

hard fern
#

only flooring?

lucid iron
#

i dont think junimatic cares about what floors u use

#

only that it's a FloorsAndPaths thin think

worldly barn
#

that's my understanding, my (invisible) gravel paths that i had set up for automate didn't seem to work :( but maybe i just totally misunderstood the mod wording!

drowsy pewter
#

ermm yeah i swear mine use stone paths

worldly barn
#

ok cool i'm probably just stupid and making things more difficult for myself lmao

lucid iron
#

game doesnt make distinction between floor and path, they r all Flooring class

worldly barn
#

woohoo! that sounds like i'm just being stupid, which will be easiest to fix in the long run

lucid iron
#

but since ur stuff is invisible maybe u just placed them wrong PecoSmile

worldly barn
#

thank you all for being SO helpful you're incredible

worldly barn
lucid iron
#

if u dont wanna fuss about too much, this mod has a grass looking gravel path

worldly barn
lucid iron
#

there really arent that many flooring mods that r actual separate flooring huh Bolb

calm nebula
#

It's new to 1.6

#

Chue, please

lucid iron
#

its been 9 months PecoSmile

calm nebula
#

Also there was a framework that did it on 1.5 but it was fragile and kept breaking saves

#

Chue

lucid iron
#

but also i find having more flooring kind of fussy

calm nebula
#

9 months is short in modding time lol

brittle pasture
#

archaeology skill adds glass and bones flooring

#

perfect for my "spooky and extremely slippery dungeon that cuts you if you slip"

calm nebula
#

In before flooring with special effects

lucid iron
#

the flooring is lava

drowsy pewter
#

hmm

calm nebula
#

This one has Uber fast travel speed

#

That one is an uber

latent mauve
#

Randomly teleporting flooring

lucid iron
#

pokemon conveyer belt

latent mauve
#

I was thinking the Team Rocket hideout warps, but that works too

humble timber
#

pokemon...

steady folio
#

(my bad, I thought you meant the spinner tile mazes from the first games)

tropic lichen
#

I tried and gave up

lucid iron
#

if u send png here i'll whip up a quick example

teal bridge
calm nebula
#

Lol

woeful zealot
#

Can anybody help me convert Yellogs furniture mod to AT? I'm having a hard time getting cp2at to work.

gaunt orbit
#

!startmodding

ocean sailBOT
#

Making mods can be broadly divided into two categories:

Usually it’s easier to start with making content packs, since you don't need to learn programming.

gaunt orbit
#

you want the first option

#

there's a CF version of yellog's as well, and you may be able to use the CF-to-CP converter (to add new furniture)

#

also, please remember that you should not publish without permission from the original author, and this should be for personal use only until then

woeful zealot
#

The issue I'm having is I have both the CP and CF version but I would like to switch to AT so the furniture isn't replacing anything. I'm using CP2AT but im getting a error.

lucid iron
#

your floor is sliced wrong

tropic lichen
#

😞

#

it originally was for AT!

lucid iron
#

mind you it doesn't impact how to put it in game

tropic lichen
#

but then i realized i needed to edit corner size and you cant do it in AT

lucid iron
#

only that it will look weird at certain connections

#

everything in Data/Objects after "SpriteIndex": 0, is optional actually

#

i left it cus lazy

tropic lichen
#

this code is so long but i will bookmark it for when im ready to tackle it again................

#

can you tell me why there are two edit actions with different targets

#

yipee

lucid iron
#

so Data/Objects is about adding in the flooring item

#

which u can spawn and place

#

i didnt add any recipes or shop entry btw u gotta do that

#

Data/FloorsAndPaths tells game how the flooring works

tropic lichen
#

ok cool

lucid iron
pseudo roost
brittle pasture
ocean sailBOT
#
Creating a Custom 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:

lucid iron
#

and also u only have 1 texture but u can make a winter texture thats all frosty if u want

#

the other 3 seasons need to use the {{season}} token

tropic lichen
#

of course

#

thank you so much!

pseudo roost
#

Um.....how would I do the art? I dont really do pixel art ^^;

calm nebula
#

!pixelart

ocean sailBOT
#

Where to Start With SDV-Style Pixel Art
If you've never done pixel art before, don't stress! It's easy to pick up the basics - the key is to start small, ask for feedback, and incorporate that into your work.

To start, you'll want an art program. See a list of recommended programs in the !software command.

Here's some good beginner tutorials!
http://pixeljoint.com/forum/forum_posts.asp?TID=11299&PID=139322
https://medium.com/pixel-grimoire/how-to-start-making-pixel-art-2d1e31a5ceab

To start off, try opening an existing portrait and changing the outfit. Start small: edit a shirt pattern, change a jacket collar, or remove a scarf and draw the clothes underneath. Ask for feedback too! The best way to improve is learning how to identify what's wrong and why, so then you can work out how to fix it.

Here's more good tips from the artist of "Celeste":
General pixel art 1: https://www.patreon.com/posts/pixel-art-1-6971422
General pixel art 2: https://www.patreon.com/posts/pixel-art-part-2-11225146
Outlines: https://www.patreon.com/posts/outlines-14106192
Shading: https://www.patreon.com/posts/shading-13869731
Portraits: https://www.patreon.com/posts/portraits-8693396

SDV has a few quirks to remember too:

  • Colour limits: Limit the number of shades you use - stick to six including the outline.
  • Hue shifts: Rather than making shadows and highlights lighter or darker versions of the base tone, SDV shifts the hue too. Eg. a base orange will have yellow highlights and red shadows. This goes for skintones too!
  • Light source: SDV uses a top-right & slightly forward light source - check the vanilla art for reference.
    Most importantly, don't hesitate to ask questions and get advice from people. Have fun!
pseudo roost
#

Would anyone wanna work on a mod together?

deep cypress
#

What mod are you thinking about?

hollow hinge
#

what do you need from the collaborator

pseudo roost
#

A romanceable NPC mod. Id take on the writing and art stuff, I just need someone to do the coding and bounce ideas off of.

deep cypress
#

Idea for Stardew 1.7 code change: Farm Animals can be picked up, to take them back to the coop at nite. (I got super terrified cause little Annie the Chicken got very lost on my mermaid farm. I found her in the middle of a random forest and cleared the way for her to get back.)

pseudo roost
#

I sent a few ideas when your free

faint ingot
#

I'm running very limited mods right now doing testing and I don't think it's mine that's doing this... does this happen in vanilla?

brittle pasture
#

wild guess, but did you install SVE halfway

faint ingot
#

I've used SVE but in this install directory don't have it at all. These are the mods - Law and Order is mine

#

After a quick search it's maybe a very old bug that takes care of itself after a couple days... I guess I'll wait and see

tall shale
#

if i have loaded an asset in the event handler,

 if (ev.NameWithoutLocale.IsEquivalentTo("Mods/Arteesian.ExplosiveKegs"))
 {
     ev.LoadFromModFile<Texture2D>("assets/Objects.png", AssetLoadPriority.Medium);
     this.Monitor.Log("Asset 'Mods/Arteesian.ExplosiveKegs' loaded successfully!", LogLevel.Info);
 }

how can i access the texture out of this event?

TemporaryAnimatedSprite TAS = new TemporaryAnimatedSprite(0, 100f, 1, 24, placementTile * 64f, flicker: true, flipped: false, location, who)
{
    texture = ???,
    

8 hours into this and i am understanding less and less xd

lucid iron
#

if u look at TemporaryAnimatedSprite.loadTexture it shows u Bolb

tiny zealot
#

texture = Game1.content.Load<Texture2D>("Mods/Arteesian.ExplosiveKegs"), i believe

calm nebula
#

it's finicky iirc

#

with tas

#

like

#

you should set the texture name and let the tas load the texture itself or else it looks weird if you broadcast it in mp

#
TemporaryAnimatedSprite TAS = new TemporaryAnimatedSprite(0, 100f, 1, 24, placementTile * 64f, flicker: true, flipped: false, location, who)
{
    textureName = "Mods/Arteesian.ExplosiveKegs",
};
tiny zealot
#

atra probably knows what's up, ignore me

calm nebula
#

I...was about to ask you to call TAS.loadTexture, I just realized that's like private

#

sorry, ichor

#

I have a photographic memory and I use it very badly, lol

tiny zealot
#

no worries, i shoot from the hip a lot on here

calm nebula
#

see, the next thing I want to do is call TAS.loadTexture() but that's private

#

so I guess reflect for that?

uncut viper
#

you did the "ending your sentence with 'i believe' or 'iirc' or 'maybe'" thing which absolves you of everything

tender bloom
#

the snippet I linked earlier today

#

out of my mod

#

I force the texture name

#

idk why but I had to do that to get it to work

calm nebula
#

what is the bomb code lol

tender bloom
#

if you're having problems I recommend this

#

I don't know why it works

calm nebula
#

alright, this piffle is a sleepy

tiny zealot
tender bloom
#

But it works

calm nebula
#

well, looks like textureName is public now

#

which is nice

tender bloom
#

Oh, that's neat

calm nebula
#

i'm trying to figure out the bomb code

tender bloom
#

I used to know the bomb code

calm nebula
#

bomb

tender bloom
#

It's spread across toooo many classes

#

There's TAS -> GameLocation.explode

#

But then also some of it is MP broadcast

#

Testing it was a huge pain

lucid iron
#

TIL flooring violently crash the game if the texture is not found SDVpuffersquee

calm nebula
#

if (this.currentParentTileIndex - this.initialParentTileIndex >=  this.animationLength)
 // stuff
 // beforewarned my day job is heavily python
 // so my syntax is stupid
 if (this.currentNumberOfLoops >= this.totalNumberOfLoops)
 // more stuff
      if (this.bombRadius > 0)
          // flashy!
          // explode
tender bloom
#

yeah, I would 100% believe it just uses bombRadius

calm nebula
#

Mr. CA, bless his heart, did not originally design the game to be modded, and Mr. Pathos the best did a lot of work to make it moddable, but yes.

#

in many places the game looks at bad data and Just Dies TM

tender bloom
#

there's a bunch of nonsense where it goes through a bunch of animations before/during exploding

#

which took me a bit to figure out which tilesheets it was using for that

#

I think it's both tilesheets/animations AND maps/springobjects somehow

calm nebula
#

yeah, it's fairly hardcoded lol

tight loom
#

hello! i'm new to discord, if I want to have the mod author range I have to have the Farmer range first - do I get if from just texting here a lot? Or do I have to do something else

calm nebula
#

basically, yeah

tight loom
#

okay, thanks 🙂

lucid iron
#

i think it just didnt get a fallback error texture, unlike items

#

if u want to post to #mod-showcase u can ask someone to do it on your behalf

#

until u have the level for the role

tall shale
teal bridge
#

Anyone knowlegeable about how quest IDs get assigned? Trying to figure out if it's just the daily quest that gets no ID, or if it can happen to other quests.

tiny zealot
#

i think quest ids are the keys in data/quests (unsure about special order quests; those might come from the special orders asset?)

tender bloom
#

I had issues with this but eventually ironed them out

#

I forget how, but I might have had to load the texture separately?

latent mauve
#

Special orders IDs are in Data/SpecialOrders, yeah

teal bridge
latent mauve
#

But they can be a little confusing since some of them are just the NPC Names being used as the Id

tiny zealot
#

i don't know of any other sources of quests besides plot quests, special orders, and the help wanted board

teal bridge
#

What do plot quests mean here? The game has a plot?

acoustic summit
#

Trying to change a (custom) map based on conditions on warp, is there a way beyond going tile by tile with SetmapTile? Like maybe a way to hide / unhide layers in code

rancid temple
#

Just create the changes you want in a separate tmx and patch it over your map

hard fern
#

plot quests, like the ones that you always get based on certain points in the game?

calm nebula
#

(I mean, maps are mutable .... SDVpufferthink )

teal bridge
tall shale
# tender bloom I had issues with this but eventually ironed them out

now the error is like that:

[06:27:19 ERROR game] An error occurred in the base update loop: NullReferenceException: Object reference not set to an instance of an object.
   at ExplosiveKegs.ModEntry.DoKegExplosionAnimation(GameLocation location, Int32 x, Int32 y, Farmer who) in C:\Users\volts\source\repos\ExplosiveKegs\ExplosiveKegs\ModEntry.cs:line 156
   at ExplosiveKegs.ModEntry.PlacementAction_Prefix(Object __instance, GameLocation location, Int32 x, Int32 y, Farmer who, Boolean& __result) in C:\Users\volts\source\repos\ExplosiveKegs\ExplosiveKegs\ModEntry.cs:line 109
   at StardewValley.Object.placementAction_PatchedBy<Arteesian.ExplosiveKegs>(Object this, GameLocation location, Int32 x, Int32 y, Farmer who)
   at StardewValley.Utility.tryToPlaceItem(GameLocation location, Object item, Int32 x, Int32 y)
   at StardewValley.Game1.pressActionButton(KeyboardState currentKBState, MouseState currentMouseState, GamePadState currentPadState)
   at StardewValley.Game1.<>c__DisplayClass964_0.<UpdateControlInput>b__0()
   at StardewValley.Game1.UpdateControlInput(GameTime time)
   at StardewValley.Game1._update(GameTime gameTime)
   at StardewValley.Game1.Update(GameTime gameTime)
   at StardewModdingAPI.Framework.SCore.OnPlayerInstanceUpdating(SGame instance, GameTime gameTime, Action runUpdate)
tiny zealot
tiny zealot
#

the idea in my example is there is a sort of base form of the map, and some overrides which you want to apply based on your conditions (in mine, it's to add the ladders only for the entrances which are currently open)

#

so when you warp in, i reload the map, clear the set of applied map overrides, then run the ones i need

tender bloom
tiny zealot
#

your conditions may not require you to clear and re-run on every warp in. as you might expect, i recommend doing that as little as possible

indigo yoke
brave fable
#

and maybe sourcerectangle if possible

tender bloom
#

that's what I did, plus forcing the texture name (for some reason it was necessary at least in 1.5)

#

i'm not really clear on which part is doing NRE for atreesian

calm nebula
#

Harmony discord had a great saying the other day

#

No code, no context, no service

lucid iron
#

there's a harmony discord Bolb

calm nebula
#

Yup

azure hound
#

i'm so mad at myself
i had been putting off making colorable clothing items because i thought it was complicated
it's actually the easiest thing ever?? zannahPout

rancid temple
#

As long as you remember to make the sheet width the correct size, pretty easy

rancid musk
#

@brave fable Hey I've been doing a little Better Crafting stuff today and I was thinking about LoC. I don't use LoC so I might be missing some stuff, but I had an idea for a couple things that might be useful for you for API stuff. Any feedback on these thoughts?

  1. An event that checks if a recipe can currently be crafted by a farmer, with the ability to return a string to display as a reason why it can't be crafted. I was thinking you could use an event like that to implement the ingredient count restriction of your upgradeable Frying Pan. Probably something like
bcapi.CheckCanCraft += evt => {
    if (Utilities.GetMaxIngredients(Game1.player) < evt.Recipe.Ingredients.Length)
        evt.Fail("Learn to cook better nerd.");
};```

2. An event that's run during the crafting process for the express purpose of applying seasoning to a recipe. You can basically do whatever you want in the method and modify the output item. And you can return an IIngredient list which will only be consumed if the craft doesn't fail for some reason.
```csharp
var someIngredient = bcapi.CreateBaseIngredient("917", 1);

bcapi.CookingSeasoning += evt => {
    if (evt.Item is SObject sobj && sobj.Quality == 0 && evt.HasIngredients(someIngredient)) {
        sobj.Quality = 1;
        evt.SetSeasoning(SomeIngredient);
    }
};```

The only thing I'm still thinking about there is how to handle multiple different things trying to apply seasoning, and what to do about the base game's Qi Seasoning. 🤔 

You can already handle your extra drops / burnt items with existing events. Is there anything I'm missing?
tall shale
rancid musk
#

Suppose I could just add a evt.DisableQiSeasoning(); call for mods to stop that from working.

#

Actually, yeah, I like that. A call to disable the vanilla behavior and a property to see if another mod has already set seasoning. Though just checking the state of the output item should be sufficient there.

brittle pasture
#

SDVpufferlurksince you're here I sent a PR to BC that fixes SpaceCore recipes not showing crafted count

brave fable
# rancid musk <@169338783307792385> Hey I've been doing a little Better Crafting stuff today a...

this all sounds real good! i haven't been thinking much in general so i can't say if anything's missing -- as far as i remember the seasonings were one of the very few incompatibilities/inconsistencies with BC+LOC, so covering that is a great step to saying the two work together.

LOC includes Qi Seasoning in its own itemid: quality dict (https://github.com/b-b-blueberry/CooksAssistant/blob/master/LoveOfCooking [CP]/assets/mod-data.json#L134-L148), so at least if we only consider vanilla OR loc it'll always be accounted for

#

checking output item quality might give dubious results if say, a cooking skill or other cooking mod sets quality based on other factors, so it might still be worth checking the seasonings local if possible

rancid musk
#

Does your seasoning logic run before or after cooking skill quality logic?

brave fable
#

that does assume that all custom seasonings will transpile and use the local, but hey, they all do now ☀️

#

uhhhh it's in my craftitem transpiler

rancid musk
#

I'll go have a look in a bit.

#

In a game now, like some kinda weird person who plays games instead of only modding

brave fable
#

my cooking skill doesn't affect output quality, but it's possible that others do (eg. the original cooking skill)

calm nebula
#

crochets a sweater

brave fable
#

so i actually transpile the default seasonings pick behaviour out of existence entirely and replace it with my own method call

#

which sets the seasonings local declared immediately before

fair tiger
#

Hi, I’m using this to get new invite code because sometimes invite code randomly becomes invalid:

var multiplayer = typeof(Game1).GetField("multiplayer", BindingFlags.NonPublic | BindingFlags.Static)?.GetValue(null) as Multiplayer;

multiplayer.Disconnect(Multiplayer.DisconnectType.ServerOfflineMode);
multiplayer.StartServer();
Game1.server.setPrivacy(ServerPrivacy.FriendsOnly);

When I run this, SMAPI throws a bunch of error like this:

[game] An error occurred in the base update loop: NullReferenceException: Object reference not set to an instance of an object.
   at StardewValley.Network.LidgrenServer.receiveMessages()
   at StardewValley.Network.GameServer.receiveMessages() in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Network\GameServer.cs:line 263
   at StardewValley.Multiplayer.UpdateEarly() in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Network\Multiplayer.cs:line 1948
   at StardewValley.Game1._update(GameTime gameTime) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Game1.cs:line 3538
   at StardewValley.Game1.Update(GameTime gameTime) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Game1.cs:line 3222
   at StardewModdingAPI.Framework.SCore.OnPlayerInstanceUpdating(SGame instance, GameTime gameTime, Action runUpdate) in /home/pathoschild/git/SMAPI/src/SMAPI/Framework/SCore.cs:line 1093

Is there a better way to get new invite code without causing these error?

lucid iron
#

this is an always on server?

fair tiger
#

yea

lucid iron
#

well you shouldnt have to reflect into Game1.multiplayer

#

there's Game1.Multiplayer

#

i wonder what is cause NRE here tho think

calm nebula
#

lidgren is the ip-based backend

#

I would say that whatever you're doing, it's the wrong thing SDVpufferthumbsup

fair tiger
#

maybe I'll start using a direct IP instead of an invite code

#

thank for ur help

hollow hinge
#

So sorry to butt in here. Is there a possibility to make a mod that changes an npc's name, gender, portrait and sprite

#

i have been reading through a lot and my head spins at the sight of making a new npc

latent mauve
#

Yes? All of that is contained in the Data/Characters model

slender badger
#

That's easy, yeah. Lots of examples in existing mods

hollow hinge
#

what about the manifest and content .json files?

slender badger
#

What about them?

latent mauve
#

You still need them for your mod, you aren't directly editing the Contents folder

hard fern
#

any cp mod needs a manifest and content.json

slender badger
#

Most aspects of editing an existing NPC are about the same level of difficulty as creating a new one, you just don't have to load a blank file to edit

hollow hinge
#

i have been trying to find a tutorial on what to write for the content.json file but the ones i have found were specifically for custom npc making

#

unless i am mistaken and missed something

hard fern
#

i mean they're pretty much the same

#

just instead of it all pointing to your custom npc, point them at someone like robin

latent mauve
#

All that changes is your Target

hard fern
#

so instead of editing Data/Characters/Dialogue/YourNPC, it would be Data/Characters/Dialogue/Robin

latent mauve
#

Shrimply, they want the character data model not dialogue

hard fern
#

ohh

#

😭

#

am i dumb

slender badger
#

(also dialogue is in Characters/Dialogue/[CharacterName], not Data)

lucid iron
#

what is the motivation

hard fern
#

😭 I am dumb

#

i should go back to doing my work

lucid iron
#

deleting a vanilla npc has many consequences

slender badger
#

As I mentioned earlier though, Zomibom, there's a lot of existing mods that replace a vanilla NPC with a custom character, so you can look at their code to figure out what you need to do

latent mauve
#

Chu, it sounds like they want a genderbend mod based on the initial question

#

Not nulling the NPC entirely

hollow hinge
#

i have been trying to disect a lot of different mods but i got incredibly confused sadly.

my goal is to replace sebastian's portrait, name, gender and sprite

lucid iron
#

ah ok

#

well u can keep the internal id the same (Sebastian)

#

but do all the text PecoWant

hard fern
#

you'd want to change DisplayName to get the name change to show up

hollow hinge
#

noted! for replacing the portrait and sprites do i have to replace the name of the directory to the png's name or turn the png into a xnb file?

slender badger
#

No, you just edit the existing art to overwrite it with your new files

#

There's a tutorial for that on the modding wiki and I'm pretty sure it's in the CP docs too

latent mauve
#

You can EditImage to replace the original XNB with a FromFile to your PNG.

#

That's likely the easiest method

latent mauve
#

Ladies of the Valley should have the portraits and sprite code at least

hard fern
#

portraits and sprites ( i will get the path right this time) are under
Portraits/Sebastian and Characters/Sebastian
it's not hard to write up a few lines in your content.json to target those (don't forget the beach/winter sprites and portraits otherwise you'll get vanilla seb at GI and during winter 😔 i forgot to do that once.)

latent mauve
#

But I don't think they have changed the Data/Characters model at all

hollow hinge
latent mauve
#

That definitely has the image code in it

hard fern
#

😭 for a second i was confused as to why maru was there... nope, demetrius

hollow hinge
#

ill definately look into it!

slender badger
hollow hinge
#

i would be unstoppable the moment i know how to code properly /lh

latent mauve
#

With the amount of people who ask for the bachelor and bachelorettes to be older/not seem like teens, I am surprised we don't see more of them aged up honestly

hollow hinge
#

i know what im gonna make next

slender badger
#

Finish your first project before getting too caught up in future plans 😆

hollow hinge
#

i cant im too excited to make mods monkeyspin

hard fern
#

😭 im gonna be so real when i first played sdv i thought abby was around high-school age

latent mauve
#

She definitely acts pretty immature, LOL

#

She and Maru both felt like they were on the younger side to be sure

#

Same with Alex and Sam tbh

hard fern
#

i can make my own older bachelor/bachelorette... as a treat. 😔

latent mauve
#

(this is why I aged up some of the WIP Zelda mod NPCs when I drew them.)

#

Ralph and Maple both got aged up

modest dagger
slender badger
#

Scope creeping is for people who have a handle on the basics 😆

modest dagger
#

fair fair

hollow hinge
#

i think i messed it up a bit

#

im gonna attempt it one more time

#

okay imma pick it back up tomorrow

#

thank you all for helping me out!

#

i might come back and ask more questions as its giving me some trouble

rancid musk
#

Better Crafting's API file has officially hit 2,000 lines \o/

#

(What am I doing with my time it's just crafting)

deep cypress
proud wyvern
rancid musk
#

XML docs too. I should do a cloc on it to get the declarations count

deep cypress
proud wyvern
#

my biggest API file is 918 lines long with XML docs, but that mod has like 30 of these files. but it's an all rounder library mod

modest dagger
#

for the sake of making chairs can the seats be on layers other than the building layer?

rancid temple
#

Looks like no

civic juniper
#

any info smapi 4 for android?

hard fern
patent lanceBOT
slender badger
ocean sailBOT
#
Android SMAPI is NOT compatible with 1.6

SMAPI isn't updated for Android and does not work past version 1.5.6.39. We don't know if/when it'll be updated or who will update it. It is not possible to legally downgrade to 1.5.6.39, so do not ask how to do this.

Please see Installing SMAPI on Android for more info.

Be advised we most likely won't be able to help you with android modding issues.

slender badger
#

Also if you're asking as a mod user, that question goes in #modded-stardew, not here

civic juniper
# slender badger !smapiandroid

No worries. Someone told me to check this place out to ask about an Android SMA for Stardew Valley 1.6 mobile. I found it on GitHub already.

slender badger
#

It doesn't work yet, for the record. It's an alpha only

civic juniper
slender badger
frigid hollow
#

btw airyn, have you turned off message highlights in server settings? or do you still want those for other kinds of pings

slender badger
#

Message highlights is a separate thing, it's not related to pings 😅 And it's the ping background that annoys me, which doesn't get removed if I turned off @ mentions

rancid temple
#

Highlights also seems like a dumb feature

fallow musk
#

is it possible to have a single special instance of an item and change its properties to make it not sellable?
In my case, i want to a add a price catalog book in players inventory, but i dont want to allow the player to sell it or only sell it at 0 gold

rancid temple
#

You can certainly set it's price to 0

calm nebula
#

You can also make it a quest item if you're in c#

fallow musk
#

would it affect all price catalogs in the game or just this one

frigid hollow
#

i think there's probably some option to do that since aren't a lot of catalog furniture unshippable?

calm nebula
#

Just do the quest item thing

fallow musk
#

ok got it thanks

calm nebula
#

Oh I misread

#

Just set price to 0

fallow musk
#

oh ok

rancid temple
#

Catalogues are big craftables aren't they?

fallow musk
#

they are objects i think

hard fern
#

they're in the furniture tilesheet

rancid temple
#

They are indeed furniture

#

I think you already can't ship furniture, though I haven't tried to see if Robin buys it

fallow musk
#

the book i meant was the price catalog thing which is sold by the book keeper

#

wiki said its sellable at 1000g , ill double check

rancid temple
#

Oh books

#

Then yeah probably just have to 0 its price

#

Wait you're trying to make just a single copy of the price catalogue unsellable/worthless?

fallow musk
#

yes

rancid temple
#

But you want any other copies of the item to have value?

fallow musk
#

yes

slender badger
#

I don't think you can do that unless you make them separate items

fallow musk
#

oh

calm nebula
#

You can trivially do this in c# but like

#

No doing this in cp

#

I forget

royal stump
#

yeah, in a C# context, each instance should be able to have a different price

calm nebula
#

Are you a c#?

royal stump
#

CP wouldn't really have access to individual instances of anything

fallow musk
#

im trying to make a C# mod rn, yes

#

prob need to add something here

rancid temple
#

CP best way I could think would to be to patch price to 0, spawn the item, then unpatch lol

royal stump
#

item.Price = 0; is probably what you want there

#

but that seems implemented on Object, so maybe (item as StardewValley.Object).Price = 0;

fallow musk
#

thanks for the help it worked

blissful saddle
#

I just noticed one of NOP issues reported that I thought was a Linux issue was caused by me wrapping NOP with ModBuildConfig 4.3.0.

9 days later I got to it and pushed an updated version with the updated package to fix it.

I am utterly ashamed...

fervent horizon
#

I think I figured out my fish issue from the other day, for some reason I was pointing to Data/Objectinformation, instead of Data/Objects in my Edit Data for the fish items

#

Always fun how you can rewrite something multiple times, and rewrite it wrong each time

blissful saddle
#

muscle memory is a bitch in coding...

coarse lance
#

I'm having something that I assume is a really basic issue - I'm putting in dialogue but it's giving me an error when I try and make a choice - "System.Collections.Generic.KeyNotFoundException: The given key 'PhoneCallsExpandedSVE_Hayley_DesertRequest_Yes' was not present in the dictionary". I'm not sure what I'm doing wrong as that key is loaded in the same file.

tender bloom
#

Double check spelling perhaps?

#

Patch export?

#

!patchexport

ocean sailBOT
#

A patch export makes a copy of specific stuff in your content folder so you can see what changes have been applied.

  1. Load up a save (with Content Patcher installed)
  2. Type patch export <FILEPATHOFTHING> in the SMAPI console and hit return
  3. Look in your patch export folder in the game folder for the relevant json file or image
  4. If it's a json file, you can share it via smapi.io/json. If it's an image you should just be able to look at it.
blissful saddle
#

I just now noticed you doubled with atra with the nickname. and I loved it

#

the urge to change mine to Relativistic MathPerson is bigger now

tiny zealot
#

do it. embrace chaos

coarse lance
#

Hmm, I did a patch export and it's definitely there. Curious.

blissful saddle
coarse lance
#

Still the same error but I've no idea why. I'm loading the key into Strings/Characters. I'm doing a phone call but that shouldn't make a difference as I understand it, it's just the standard dialogue engine... the in-game behaviour is that the question keeps repeating and not going to any answers.

blissful saddle
#

I know it is not very productive, but seems like you are forgetting to load it somewhere else.

I would test the dialogue as a normal dialogue to see if it is working that way, or look in a mod that does this through a phone call to see if they added something I didn't somewhere...

coarse lance
#

I'll keep poking around. The patch export says it's in the file but I'll try out some combinations of alterations.

tiny zealot
#

are you making an incoming call (i.e. your phone rings and it's someone calling you)?

#

ok. the dialogue for that call can actually come from anywhere. when you add it to Data/IncomingPhoneCalls you specify the Dialogue, which for the vanilla ones gets pulled from Strings/Characters via LocalizedText

coarse lance
#

Yeah, I've been adding the phones into data and the strings into Characters. All the calls trigger fine but when I do a question it breaks on finding the responses, which is odd.

tiny zealot
#

ah, ok. sorry i thought you were just loading it into Strings and maybe missing the data part

coarse lance
#

Hah, then it wouldn't ring at all! I got past that bit, I'm into the dialogue sections now which are oddly giving me more trouble than the phone calls themselves.

latent mauve
#

If it's breaking on the question, is it possible that the formatting is broken somehow? Would you mind sharing your dialogue string?

coarse lance
#

"PhoneCallsExpandedSVE_Hayley_DesertRequest_Yes": "Great, you can pick me up a coconut then!#$h#$b#...thanks!",
"PhoneCallsExpandedSVE_Hayley_DesertRequest_No": "Oh. That's disappointing...#$s#",
"PhoneCallsExpandedSVE_Hayley_DesertRequest": "Um, hey @.
#$q 1013/1014 PhoneCallsExpandedSVE_Hangup#You're going out to Calico Desert, right?
#$r 1013 10 PhoneCallsExpandedSVE_Hayley_DesertRequest_Yes#Yes, I will be soon!
#$r 1014 -20 PhoneCallsExpandedSVE_Hayley_DesertRequest_No#No, sorry.",

#

As I said before, first mod, probably doing something really silly

tiny zealot
#

ok right off the bat you don't want # characters before your portrait choices

#

...coconut then!$h#$b# is what you want

#

i'm not 100% on how $q works but i'm fairly sure if the dialogue is linked to an NPC, the key references there are loaded from the NPC's normal dialogue asset (i.e. Characters/Dialogue/Haley) and not from the asset you are "in"

astral rover
#

One question, if I install this mod: CJB Item Spawner, in a cooperative world, will my friends also have this mod?

tiny zealot
fossil osprey
coarse lance
#

Ah, interesting! The wiki implied it searched through all the dialogue areas.

#

I'll rewrite and test it in a bit, I'll take a break from the wall first.

fossil osprey
#

Which anti-malware are you using? I know some of them are often raising false positive on games

rancid musk
#

This is not the channel to ask that

latent mauve
eternal mortar
#

ok so sorry! ill delete these messages

rancid musk
fallow musk
#

where can i find this data?
my goal is to modify the prices of some buildings in robins shop
is altering this data the right approach?

tender bloom
#

Data/Buildings?

rancid musk
#

The carpenter building menu draws from Data/Buildings, yeah. Not shops.

fallow musk
#

do i need to seperately decompile StardewValley.GameData.dll to see this data?

#

ive only decompiled the base game .dll until now

ivory plume
#

@lucid iron Congrats on winning today's Winter Star raffle! Your DMs seem to be closed, so feel free to DM me to get the game code.

desert pagoda
#

Why are the most basic things listed as an advanced guide for modders?

ocean sailBOT
#

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!

brittle pasture
#

Ah whoops I should clarify, decompiling GameData.dll ia useful to see how the game reads the game data under the hood. Unpacking game files is useful to see what the game data actually is.

fallow musk
#

thanks. im able to see the details now

#

i assume CP would allow changing prices easily. But in my case, I only want the price to change after a certain condition is fulfilled in the game, so would somehow unpackin,modifying and repacking this data programmatically be possible, and would it even be the right approach?

tiny zealot
#

CP can apply any patch conditionally

brittle ledge
#

Pretty sure CP can do ... Yes

#

🐌

tiny zealot
#

so you can easily set up a patch for just the price field on an item that only applies in certain conditions

lucid iron
#

Remember that changing the data won't change any existing items

fallow musk
#

thanks. i checked CP docs
the condition things seems to be the "when" keyword, which I assume would look for the state of some variables in the game?

In my case,(not sure if im following recommended design guidelines since its my first mod)
I am storing a dialog response in a local string variable, and ideally i want to check if the variable is equal to something specific, if yes, then change prices

but would this random local variable inside a mod.dll be visible to content patcher?

tiny zealot
#

does your mod already have a CP content pack component?
any one mod can either be a SMAPI/C# mod or a content pack for CP or another pack framework. so to do both in one "mod", you make two mods ("components") and ship them together in the same zip

fallow musk
#

is it possible to do this only in C#? i want to keep things simple this time

tiny zealot
#

if you don't already have a separate CP component, you can either add one or you can do your price changing directly in C#

calm nebula
#

So what's this free game raffle lol

#

(There is no point to me putting my hat in. )

brittle pasture
latent mauve
#

^

#

Today is a horror game, so I'm out on that one xD

rotund elm
#

Is there a way to add ring effects with CP yet or another framework mod that would allow this without the use of C#

calm nebula
#

I believe spacecore has it

rotund elm
#

Thank you so much!

#

Would anyone have a good example mod using spacecore to add ring effects? The only one I can find is Skill Rings

fervent horizon
fallow musk
#

maybe it has what ur looking

rotund elm
#

thank you!

desert pagoda
#

How does one create a door, as in add a door sprite into a prexisting area without replacing the map

desert pagoda
#

I have no idea what PIF is

frigid hollow
#

!pif

#

damn we don't hve that?

fervent horizon
fervent horizon
desert pagoda
#

No I would more like to add a door in the cave leading to a custom location, I have the location done, and can warp through commands, just need a way to get to it naturally

#

But for compatibility reasons I dont wanna overwrite the entire cave map

fervent horizon
#

You would need to make your own map file with the door, and then patch it over the cave map

desert pagoda
#

So use the map overlay function from content patcher?

fervent horizon
#

yeah

#

this mod does what you are talking about

#

adds a new door at the back of the farm cave

desert pagoda
#

Interesting mod

rancid musk
#

!stone