#making-mods-general

1 messages · Page 173 of 1

tiny zealot
gentle rain
#

Thank you for your guidance 🙏 I'll get to reading it!

torn beacon
#

I am at 99% percent done updating Light Mod to 1.6. This is one of the toughest mods you could cut your teeth on, some of their other mods might be a better starting place.

gentle rain
#

💦 I was thinking of starting with a content patcher kind of modding as my first starting step, perhaps a portrait kind of mod? Or maybe retexturing kind of mod but I saw the Light Mod and it broke and thought well... maybe? Definitely not a beginner project for me then, but I could try sth while learning about C#

#

Thank you for your advice though, seriously. I was really about to roll up my sleeves and try it but that'd have been an absolute exercise in frustration with zero coding knowledge adhsjkshadjk

tender bloom
#

Content patcher content packs are very doable as a first mod

#

Making new portraits for an NPC is fairly straightforward

#

(Making new portraits for every NPC is hard but that’s mainly because drawing that much art is hard, not because the CP side is hard)

gentle rose
#

in the meantime, my mod Light Radius can change the radius of lights (just less configurable than light mod) so that might help you out until Light Mod gets fixed!

calm nebula
#

Tbh it isn't impossible

#

To make an unofficial update as your ibtro to a language

#

But it is not a trivial thing to do

brittle ledge
#

I think we have a portrait or image replacer tutorial on the modding wiki, but also the NPC tutorial explains Appearance (thanks to Airyn).

faint ingot
#

Could someone with permission to do so please post my mod in the showcase? I have just released the first major content update which adds additional events and configuration options. There is now the option to send Lewis to jail in addition to Pierre. https://www.nexusmods.com/stardewvalley/mods/23979

Nexus Mods :: Stardew Valley

Adds a sheriff's office / jail near the community center, two new NPCs (Russell and Shannon), and a justice system with the potential to finally put Pierre (and now Lewis) in jail where they belong. C

median dune
#

Hello again with another dumbass question but I can't seem to find an answer, should I use harmony 2 or harmonyX ?

teal bridge
#

You don't get to choose, Harmony is a shared dependency that's added by the mod manifest builder when you set <EnableHarmony>true</EnableHarmony>.
(And for the record it's not HarmonyX)

median dune
#

oh okay then

#

thanks

rancid musk
#

It's also a bit out of date. Some helper methods and such aren't available. Not a huge issue, but it is noticable

median dune
#

Hey there, sorry for asking only now but do you have any more information regarding the topic of spouse non-scheduled logic?

#

like where do I start looking

calm nebula
#

Okay, I'm at the dentist and then headed to work

#

Farmhouse.updateEvenWhenFarmerIsntHere is the method name I remember

#

You should also be able to subclass PathFindController iirc

#

Do note that PathFindController has a lot of odd logic around it

median dune
final sequoia
#

So I made an event for a custom map but it isn't triggering. I looked for when this happened to others and I saw to export the patch file. I did that, and it seems something is going wrong.

So I have it load assets/blank.json into "Data/Events/Custom_CrazyEds" (blank.json having {} in it only). I have EditData, "Data/Events/Custom_CrazyEds" as you'd expect. But when I do the patch export Data/Events/Custom_CrazyEds, the file shows... the grandpa events? The first is year 3, and the second is about judging too harsh last time.

Que?

calm nebula
calm nebula
median dune
#

holy damn the house AI literally is just like 3 cases of possible movements

tiny zealot
final sequoia
calm nebula
#

I had to yeet them lol

tiny zealot
#

they don't appear in my patch exports

calm nebula
#

(For event tester.)

calm nebula
#

Tryloadlocationevents is what I suspect is adding them

#

So if the data was just called via patch export it shouldn't be there

tiny zealot
#

cursed. anyway

calm nebula
#

Sleeping in a tent does not let you escape grandpa

tiny zealot
final sequoia
#

I worried that naming may be the situation, so I copied and pasted the string to ensure they matched exactly.

This is how I am adding the map, under Changes:

            "Action": "Load",
            "Target": "Maps/Custom_CrazyEds",
            "FromFile": "assets/Maps/CrazyEd.tmx"
        },
        {
        "Action": "EditData",
            "Target": "Data/Locations",
            "Entries": {
                "Custom_CrazyEds": {
                    "DisplayName": "Crazy Shop",
                    "DefaultArrivalTile": {
                        "X": 13,
                        "Y": 13,
                    },
                    "CreateOnLoad": {
                        "MapPath": "Maps/Custom_CrazyEds"
                    },
                },
            },
    },
        {
            "Action": "Load",
            "Target": "Data/Events/Custom_CrazyEds",
            "FromFile": "assets/blank.json"
        },```
#

Sorry, I tried to make that as a code block.

tiny zealot
#

you want backticks ``` for that there you go

#

well, that looks fine to me. i would go for a patch summary next to see what the status is of all your loads and edits

#

based on prior messages, i suspect the EditData is the problem. maybe it's behind a When condition that isn't being met?

cyan marsh
#

Trying to replace the SDV title theme.. any insights? ```json
{
"Action": "EditData",
"Target": "Data/AudioChanges",
"Entries": {
"MMR_TitleA": {
"ID": "MMR_TitleA",
"Category": "Music",
"FilePaths": [ "{{AbsoluteFilePath: Music/Title/Overture.wav}}" ],
"Looped": false,
}
}
}

#

not sure how to use the CP thing to replace music

ivory plume
#

You can target the audio track ID to replace. So for example, let's say you want to replace title_night with a random selection from three audio files:

{
    "Action": "EditData",
    "Target": "Data/AudioChanges",
    "Entries": {
        "title_night": {
            "ID": "title_night",
            "Category": "Music",
            "FilePaths": [
                "{{AbsoluteFilePath: assets/music/title/overture.wav}}",
                "{{AbsoluteFilePath: assets/music/title/second.wav}}",
                "{{AbsoluteFilePath: assets/music/title/third.wav}}"
            ]
        }
    }
}
shut edge
#

it's out, at last

gray bear
#

rawr

shut edge
#

hopefully nothing terribly broken in ver 1 here

#

maybe i can sleep now and not go make 4 more animals right away

gray bear
#

sleep good, i rec

shut edge
#

damn i didn't put the mod title on my fake box lol

#

fixed

cyan marsh
acoustic summit
cyan marsh
median dune
#

I was absolutely wrong and this class contains part of spouse AI as well like porch or patio standing

cyan marsh
#

mcthink I'm thinking of using one of my Drakkhen Remixes for the Character Creation screen

median dune
#

Not gonna lie gotta love the stardew spaghetti the spouse AI is divided between updateEvenIfFarmerIsntHere() what is this name even in farmHouse class, marriageDuties() and tryLoadSchedule() in NPC class

latent mauve
#

I'd be interested to learn more about the spouse AI one day so I could potentially know why sometimes the spouse randomly walks through the walls of my bathroom mod (the walls are properly set as buildings but the NPC does not seem to care)

#

I'm assuming it's related to whatever weirdness also caused the spouse to appear in the void above the kitchen when you don't have the kids room upgrade (and thus no bathroom either)

median dune
#

also bathroom mod? GIMME

#

there is no furniture more important than the bathroom throne and yet there is so little mods that add it

tribal ore
#

Tbh, I'm scared to set any custom heart events inside the farmhouse, because of mods and the upgrades

#

I'd really love to use the area, but I don't know how to guarantee that pathing NPCs around won't break furniture and stuff

teal bridge
median dune
teal bridge
#

It's the same reason an NPC can walk across the ocean if pathfinding goes haywire.

cyan marsh
#

farmhouse events should be super simple due to the each player has their own way of making their home

tribal ore
cyan marsh
#

and it never calls for it

tribal ore
gentle rose
cyan marsh
#

advancedMove is just an instruction set so you don't need multiple move commands

teal bridge
median dune
#

but can't you actually make them pathfind instead?

tribal ore
cyan marsh
#

they would

gentle rose
cyan marsh
#

it's no different from multiple move <NPC> X Y F

median dune
#

I don't think they would destroy it and instead just render on top as furniture isn't destroyable I think

cyan marsh
#

maybe not destroy.. but it can break the event

median dune
#

still equally bad

teal bridge
tribal ore
tiny zealot
cyan marsh
#

you can make it where you can move and advance the event

tribal ore
tiny zealot
cyan marsh
rotund elm
#

Hi yes I am having a bit of an air head moment, a stroke if you will.... wtf is the secret woods location pathed to? I had that set for the backwoods and I just realized that is the path above the farm

tribal ore
tiny zealot
#

(move and advancedMove also differ in how they check whether the movement is complete, which is why using move after positionOffset can sometimes get NPCs to start voidwalking and break your event. this is one of the non-obvious ways they differ)

cyan marsh
#

beginSimultaneousCommand and endSimultaneousCommand will run any event command all at once in between them

tiny zealot
cyan marsh
#

there might be limits.. but as for movement stuff.. the video shows it's possible

tribal ore
#

As for setting an event inside the farmhouse, do you guys have any recommendations for mods that actually do this well? I've been avoiding it, but I'd like to give it a try

gentle rose
cyan marsh
#

you will need to check for each farmhouse type

#

and check for house mods

tribal ore
cyan marsh
#

you still need to know the coords.. they are different

tribal ore
#

But there's no way I'm going to be able to check for all of the different house mods

cyan marsh
#

it's simpler to not use the farmhouse unless you're doing something that doesn't place anyone down aside from the void

tribal ore
#

xD

#

Except Seb's 14 I think...

latent mauve
#

There are, but they are mostly conversations that take place in spouse rooms

tiny zealot
latent mauve
#

Sam also has one

cyan marsh
#

Farm events only cover a certain place because making npcs walk the farm area is dangerous since there's no telling what's there

tiny zealot
#

anyway if you do beginSimultaneousCommand/move person X Y D/move otherperson X Y D/endSimultaneousCommand they will move one at a time. you'd have to put the optional true on the moves to have them not block, at which point the simultaneouscommand part is (nearly) pointless

tiny zealot
#

you can give multiple moves at once to get simultaneous walking, so for that specific case you should do move person X Y D otherperson X Y D which should do it

#

but of course that only allows one axis per command, so if anybody needs to turn you are in advancedMove territory

tribal ore
faint ingot
lucid iron
faint ingot
#

thanks

frail moss
#

how i should change the id for a crops growing ?

#

what is the meaning this id ?

#

(im not sure if i explain good my question)

rough lintel
frail moss
#

so its parsnip seed

#

i should change it into what ?

uncut viper
#

keep in mind item IDs are not always numbers

rough lintel
#

the seeds and the crop are different objects, so they would have different id numbers

#

newer items will be just strings instead of numbers

uncut viper
#

all item IDs are strings

#

some are just strings that have just numbers in them

#

"472" is a string

frail moss
#

if i want my item being a seed ill change this number at the id of my item ?

rough lintel
#

meant strings of text but thanks for the correction

rough lintel
frail moss
#

making a seed (but i dont have the plantable seed (but i have the sprite))

uncut viper
#

(not trying to be super pedantic, just don't want someone trying to write 472: { instead of "472": {)

tender bloom
#

are you making a new crop, or editing an existing one?

#

like is this stuff here because you copied some stuff out of vanilla and are trying to make it do what you want your new stuff to do?

frail moss
#

im trying to make a new crops and i looked in vanilla stuff

#

to maybe get helped (but that not helping me more)

tender bloom
#

if you follow the example of parsnip, you will need to replace "472" (parsnip seed ID) with your seed's ID and "24" (parsnip ID) with your produce's ID

lucid iron
#

For custom items use string ids

#

{{ModId}}_yourSeed

tender bloom
#

so if you're growing onions, "{{ModID}}_OnionSeed" wherever you see "472" and "{{ModID}}_Onion" wherever you see "24"

tribal ore
#

(Even if you aren't editing vanilla items in any way, I find it's helpful to have something like this on hand to help you read the vanilla examples: https://mateusaquino.github.io/stardewids/ ) <-- you'll see that the older items have strings that are all numbers ("472"), but the newer items are things like "Book_Void"

Complete item cheatsheet guide to help you find all IDs of items in Stardew Valley, updated for 1.6. Quicky locate between objects, seeds, plants, furnitures, shirts, books and more!

#

Like MathPerson said, though, absolutely prefix all of your new IDs with {{ModId}}_

frail moss
#

kay thx

frail moss
#

so if i make
"{{ModId}}_Name_of_My_Crop" :
its good ?

tender bloom
#

Is your crop the seed , the thing you get when you harvest, or the crop itself?

frail moss
#

the thing that i plant in the grass

tender bloom
#

Every crop has 3 different things associated with it like that (or more if it’s complicated)

frail moss
#

the seed

#

(it took me 3 years to understand and respond but dont make attention)

tender bloom
#

That sounds correct—try it and see?

frail moss
latent mauve
#

your fallen star seed is outside of your Changes block AND you haven't set an Action or Target for it to apply the changes to.

#

you can't just use the entry part as is, you have to tell Content Patcher where to put the new entry

light bramble
#

Why is the name the description?!

latent mauve
#

Oh, I ran into this earlier! You have to do a separator to use both a name and a description or it defaults to just description

latent mauve
#

It's name_description

#

in the string

#

The underscore is what separates name and description.

light bramble
#

so....what would I put instead?

#
            "Action": "EditData",
            "Target": "Strings/UI",
            "Entries": {
                "n3rdgirl_MassiveFarm": "{{i18n: MassiveFarmUI}}"
            }```
latent mauve
#

"TooltipStringPath": Massive Farm_add description here

#

for example

light bramble
#

Still don't understand...

latent mauve
#

Okay, so in your Farm data entry, your ToolTipStringPath is the i18n file, right?

oblique frost
#

Is there a guide on how to add seasonal outfits for NPCs?

light bramble
#

I'm still not fully following? Like what do you mean ToolTipStringPath???

#

"MassiveFarmUI": "A MUCH larger farm for you to be able to do more things!" This?

latent mauve
#

Yes, that

rocky flame
#

Hello all, I am quite new to C# and Json, but have experience in various other languages. I am trying to write a mod where I need to check the farmer skill level at the end of the day. I have not yet found a way to do this properly and am not quite sure whether I should define this action in a C# project file or the content.json file. I am definitely giving up for the day but if anyone has an idea on how I should structure this and what function I should call from the stardewModdingAPI I would appreciate it! 🙂

latent mauve
#

You just need your string to contain the name first, with an underscore, and then the description text

#

That should be enough to fix it.

#

in "MassiveFarmUI"

lucid iron
#

I am asking bc there are several ways, depending on whether you are in C# or only content patcher

latent mauve
#

My thoughts are a bit scattered, but basically, you want: "MassiveFarmUI": "Massive Farm_A MUCH larger farm for you to be able to do more things!"

light bramble
#

Ok

latent mauve
#

or whatever your farm name is gonna be instead of Massive Farm

rocky flame
#

I want to ensure the farmer is at level 25, so that after that event I can initiate/unlock another action sequence. So i want a letter with item attached in the mail the next day and from the day after on I want to player to find something similar to trinkets througout the game that further enhances skills. I felt like after my tools are upgraded there is litte incentive to further optimize the farming/ manual labour which I enjoyed upgrading a lot. So I wanted to see if I can add something to the game while learning game/mod coding and two other languages (C# and Json).

rocky flame
uncut viper
#

well, checking the level and sending the mail does not require C#

rough lintel
#

game state query is not c#

uncut viper
#

but the rest depends on what exactly you want to add that is like trinkets

latent mauve
#

I at least fixed the validator error

rocky flame
# uncut viper well, checking the level and sending the mail does not require C#

also not if the item that is sent should function like an additional trinket slot for the farmer? I gathered that adding another 'trinket slot' would require C# coding, but if not that's better 🙂 I want this item to be an empty necklace that can hold 3 beads. Each bead could represent a skill boost for a skill. The beads can be found all over the valley/accessible areas. The necklace should be inserted in the trinket slot.

uncut viper
#

no, adding a slot like that would require C#. just not sending the item to go in that slot

latent mauve
#

The mail (and even the item, potentially) doesn't need C#, the item slot would.

rough lintel
#

so a craftable iridium band but its a necklace

uncut viper
#

you can maybe get away without C# at all if you want to make it an actual trinket using the Trinket Tinker framework

#

depends on what kind of boosts you want, too

lucid iron
#

Im not sure if they meant trinkets as in the equipment item

uncut viper
#

well, they said it goes in the trinket slot, is why i say that

latent mauve
#

They also said "another trinket slot", which implies an accessory slot to me, but language is confusing

lucid iron
#

And hm

rocky flame
#

Ah that's good to know, thank you 🙂 so I should write the mechanics of adding another slot in the C# file and the item descriptions of the beads and the necklace, as well as their introduction to the game in the content-file? I have time and am willing to learn so if the addition of the trinket slot would require C# I wouldn't mind. It's just a steep learning curve. I meant it to be like a trinket slot, but it would have to be a separate slot, which would not accept trinkets.

uncut viper
#

another trinket slot would imply to me that it is still a trinket, though, but i agree language is confusing and i dont always language good

lucid iron
#

I guess trinker tinker kind of supports the effect via buff ability

#

The ? is just where do u equip that

uncut viper
#

if you want a totally separate slot from trinkets that does not acceppt trinkets and your item is not actually a trinket, then that would require C# yes

lucid iron
#

I would actually look into spacecore equipment slots

#

Although u need c# for that too, u can make equipment slots for items that aren't trinkets

uncut viper
#

that still requires C#, no?

rocky flame
lucid iron
#

It sounds more suitable for the mod u r hoping for

frail moss
rocky flame
lucid iron
#

You would probably just do the check for skill level inside C# too tbh

uncut viper
#

truthfully, while you CAN add the item via content patcher, it sounds like it may not be soimething you'll need to use tokens or patch updates for which is what CP is good at

#

so i was also going to say you could probably just do everything in C#

#

completely personal preference though

lucid iron
#

Not particularly related to this talk but i had a stupid idea for how i might do more trinket slots

#

What if i gib trinket an inventory through global inv or something, and then make ability that just "equip" the trinkets inside the chest

uncut viper
#

what if i want more than 184 trinkets?

rocky flame
lucid iron
#

Then u install lefauxmatt unlimited chest

#

Palpatine.png

uncut viper
#

that said though i dont think thats a stupid idea, i kind of like the idea of replacing the trinket slot (or adding a new one) with just like. a Chest icon. like a toy chest. trinket chest

#

and just dropping things in there

lucid iron
#

What is cursed about that is like

#

Recursive trinkets

#

Put trinket of holding in a trinket of holding...

uncut viper
#

trinket of holding?

#

oh wait when you said give trinket an inventory you meant like. give A trinket an inventory

#

i thought you meant replace the trinket equipment slot with an inventory

lucid iron
#

Yeah the interface was gonna be, you "use" the trinket to open an itemgrabmenu

uncut viper
#

you could just not accept trinkets that have an inventory in the inventory

#

thats not an uncommon limitation in games where you can put inventories in inventories

lucid iron
#

DokkanStare mayhaps

lucid mulch
#

Any items like that would have their backing storage be a global chest with their id, so there's no technical problems doing nested, only balance issues

lucid iron
#

Im not sure of best way to generate a global inventory id

#

In a unique per instance of trinket item way

lucid mulch
#

Generate a guid, put it on the items moddata

lucid iron
#

Hm ig that how it goes huh

#

To have it persist

uncut viper
#

you can write your own serializer to save a custom TrinketStorageList class to the save file that you load as necessary

#

i would do the moddata thing though

lucid mulch
#

There's already a vanilla global storage mechanism

tawny ore
#

Technically unlimited trinkets, if you consider cosmetic hats to be trinkets

lucid mulch
#

Don't mess with the save serializer when vanilla already does it for you

uncut viper
#

the joke was that chu's "ig thats how it goes" made it seem disappointing so i jokingly suggested something much more unnecessarily complex

acoustic summit
#

The only thing preventing more trinket slots is the base game not displaying them

tawny ore
#

You're right. Game1.player.trinketItems

latent mauve
frail moss
#

nope

latent mauve
#

Then what can't you find?

frail moss
#

the seed

lucid iron
#

Not about the part where u actually equip the trinkets and make them do things

latent mauve
# frail moss the seed

Are you using something to spawn it in? It won't appear in shops without you editing shop entries to add it in.

lucid iron
#

The fact that it's a list and not a dict is annoying too actually

#

Need extra work to make sure unequip works correct

frail moss
latent mauve
#

You also need to create object data for both the seeds and the crop it produces

frail moss
#

want*

latent mauve
#

Okay, yeah, you need to add entries to Data/Objects for the seed so that it exists as an item

frail moss
#

after i send the link i added an item section above the crops section

brittle ledge
latent mauve
# frail moss after i send the link i added an item section above the crops section

I think this would be a minimal objects entry for your seeds: {"Action": "EditData", "Target": "Data/Objects", "Entries": { "{{ModId}}_Falled_Star_seed": { "Name": "{{ModId}}_Falled_Star_seed", "DisplayName": "Falled Star Seed", "Description": "The seeds of a falled star", "Type": "Seeds", "Category": -74, "Texture": "assets/Falled_Star_seed.png", "SpriteIndex": 0, }, } },

frail moss
#

the people in this server are the goat

#

where i should put it ?

latent mauve
#

oh, name will need to match {{ModId}}_Falled_Star_seed there

#

Knew I forgot something

desert crane
#

Hi sorry for bothering. The code did work good but we didn't implement the command to take away the current tool from the inventory. Could you tell me what I need to add to do it?

latent mauve
# frail moss where i should put it ?

you should put a comma after the { "Action": "Load", "Target": "Mods/{{ModId}}/Arme_de_Nia", "FromFile": "assets/Arme_de_Nia.png" } and then paste the new code with a comma on the end of the last } there as well

frail moss
#

like this ?

latent mauve
#

code looks right

frail moss
latent mauve
#

In the validator, it looked like the comma was missing, but if there is already one there, you're fine

#

Sometimes the validator strips out things on the preview until you go to Edit it

frail moss
#

okay

latent mauve
#

Now, just to make it clear, you didn't change the Harvest result of your crop, so it will still produce Parsnips until you change "24" to the object ID of the crop produce you are making.

#

And that crop produce will need a Data/Objects entry too

frail moss
#

okay for now im making seed, crops growing and then the harvest

latent mauve
#

okay, just didn't want you surprised when it gives you Parsnips in testing. 😛

frail moss
#

yeah no prob, so its working

just missing the sprite🫠
im pretty sure that the name of my sprite

tribal ore
frail moss
#

not sure

tribal ore
#

I didn't mean in your file names. I meant just as a general English language thing

latent mauve
#

Fallen would be more correct in English, I just don't adjust spelling when editing code for the authors.

frail moss
#

ooh right

latent mauve
#

Okay, so the sprite not showing is because you're using an internal asset

#

and not a loaded texture

#

Two options here: change assets/Falled_Star_seed.png to {{InternalAssetKey:assets/Falled_Star_seed.png}} OR
create an action block to load the texture, and then use the loaded texture path instead.

frail moss
#

load block like this but for my seed ?

latent mauve
#

Yep!

#

And then anywhere it wants a Texture, you'd use your "Target" from that action, since that's where the game will put it to be used later.

frail moss
#

okay i can make this alone (that literraly 3 line lol)

latent mauve
#

I prefer loading Textures when possible instead of using InternalAssetKeys, it's much more friendly to mod authors who want to do sprite retexture packs later.

nimble marlin
frail moss
latent mauve
#

you added the Load block, you just didn't change the Texture pieces for the objects or crop entries after 🙂

#

Find where it says "Texture": "assets/Falled_Star_seed.png" and change it to "Texture": "Mods/{{ModId}}/Falled_Star_seed"

drowsy pewter
lucid iron
#

The cooking skills mods continue DokkanStare

gentle rose
frail moss
#

also i got a flash green screen with leaf falling after the flash and that after i popped the frame of the dev (i dont have record cause i didnt know) while charging the game, do you know what that mean ??

frail moss
#

and yaay i found (with a lot of help and thx again)

gentle rose
hallow prism
#

graine
french

frail moss
#

yes**

gentle rose
#

I think there are some special ones that happen sometimes at random

frail moss
#

so.. im lucky ??

hallow prism
#

yes but more you test mods more you see screen so you have higher chance of seeing it overall

gentle rose
#

is this the one you mean?

frail moss
gentle rose
#

if it is, yes, it’s a rare screen! I’m not sure what the exact odds are of getting it though, the wiki doesn’t say

nimble marlin
frail moss
#

i should really record my screen

round dock
#

Also definitely very vanilla!

gentle rose
latent mauve
#

Kain's message got a little bit buried in all of that. I don't know enough about tool upgrades to know what's wrong here, but maybe someone else can help them? #making-mods-general message

frail moss
#

now i need to make that the crop have the texture that i planned (i already have them ( i guess ?))

desert crane
frail moss
nimble marlin
pine ermine
#

I'm pretty sure the equation for a fish's relative spawn probability on the wiki [[Modding:Fish data#Spawn rate]] is wrong. SDVpufferthink
After looking at the code myself, carefully following the math, and lots of double checking, I believe that the correct (and easiest to compute) equations are:

gentle rose
frail moss
gentle rose
#

I like the LaTeX btw haha

lucid iron
#

There was a person who did the maffs right

lucid iron
#

Wonder what happened to that

gentle rose
pine ermine
calm nebula
#

Yeah, someone was

gentle rose
#

the latex font is so satisfying to look at

frail moss
pine ermine
# gentle rose I can have a look at that in a bit to see if I can also vouch for that if you’d ...

I used this proof to simplify the part of the equation where the fish are checked in a random permutation order for each precedent group: https://math.stackexchange.com/a/4988938
(Uses combinations instead of permutations which is sooooooo much faster :P)

lucid iron
#

You can have giant crops that are 32x32 or 48x48 ofc

frail moss
#

if my sprite editor cant make 16x32 sprite

lucid iron
#

But those aren't growth stages

frail moss
#

can you give me a name of sprite editor ?

lucid iron
#

! software

#

Hecc

#

!software

ocean sailBOT
gentle rose
lucid iron
#

The one most common is aseprite (free if you build from source, or if u use the fork libresprite)

#

Gimp is also free and good enough

frail moss
#

kay ill choose krita (its like a starter pokemon lol) cause ive already installed it

gentle rose
#

idk which platforms pikopixel works on but that’s a thing too

lucid iron
#

I'm pretty sure any image editing can do 16x32 sprites tho

#

As long as u tweak the pencil tool or equivalent

gentle rose
#

I was editing sprites in procreate on my ipad the other day, the possibilities are endless

lucid iron
#

Check the game's crop tilesheet for the format, it's slightly strict

frail moss
iron ridge
#

No 48x32

lucid iron
#

Im on me phone so i can't check so trust pillow yes DokkanStare

royal stump
dusk terrace
#

Broken code in DialogueDisplayFramework.dll: reference to StardewValley.Menus.DialogueBox.shouldDrawFriendshipJewel (no such method).
but only broken for android somehow? 🤔

gentle rose
#

I might edit that into the wiki later, thanks esca

dusk terrace
#

does the android version not have friendship jewels?

gentle rose
#

you may be better off asking in the android smapi server tbh, very few people here have much experience with it

dusk terrace
#

there's a different server for android smapi? 😅

gentle rose
#

yeah, it’s the thai sdv server!

royal stump
#

yeah, no idea what the 1.6 android port looks like, but the previous ports had a bunch of different control and UI elements

gentle rose
#

!androidsmapi

ocean sailBOT
#
Android SMAPI

There is an unofficial port of SMAPI for Stardew 1.6 to Android. Please see the wiki instructions for more information.

IMPORTANT: This is a highly experimental build and may be prone to glitches, bugs, or incompatibilities. We are not able to provide support if you run into trouble or compatibility issues; please use the discord linked on the Android SMAPI github.

Do not harass mod authors to make Android specific compatibility patches.

gentle rose
#

the link is in one of those links

round dock
#

!andro— tsk SBVPensiveButt

dusk terrace
#

ohh unofficial port...

gentle rose
#

also very early days, and unsupported by most mods

dusk terrace
#

that's a bit annoying tbh xD

#

now I got a bunch of people asking for android compat lol

gentle rose
#

I think most mods don’t have compat with it by default, they had to port some big ones already

uncut viper
#

i mean theres not going to be an "official" port of SMAPI

gentle rose
uncut viper
#

old SMAPI android was also an unofficial port. which is called a fork. which is normal in open source stuff

#

its also possible that specific function got inlined in the android compile

royal stump
#

based on what I saw in the last two SDV ports, some aspects just get rewritten because they didn't run well or because the UI needed to change, etc

dusk terrace
#

yea... the method that's missing for my mod was a one-liner so probably inlined :/

royal stump
#

until someone (hopefully not me) updates pathos's android repo, I'm just kinda telling people "wait for updates"

gentle rose
#

I’m guessing there’s also just some parts of dotnet that work differently on android, though I don’t know enough about dotnet to say that with any confidence

royal stump
#

yeah, I remember some differences like that in the 1.5 one, though luckily I never had to look into it

#

I think it affected some harmony/reflection type-getting methods SDVpufferdizzy

dusk terrace
#

huh yea didn't think of that... how does our mods written for dotnet work on android lol

drowsy pewter
#

the thai sdv server doesnt really provide smapi support. i dont see any activity for it anywhere

(its also not the thai sdv server, its a server for the thai translator team who works on multiple games)

gentle rose
#

I wonder if pintail would have helped with that or made it worse

drowsy pewter
#

(also they all talk in thai)

gentle rose
royal stump
proud wyvern
#

Pintail only helps with duck typing and/or „fast reflection”

lucid iron
#

Tbh it's within your right to just refuse compat

#

Someone can fork n fix ur mod if they care

uncut viper
#

its in your right to refuse PC compat too if you want

drowsy pewter
royal stump
#

posting a notice that my mods are only for the sdv board game now

dusk terrace
#

I just feel a bit more pressured since it's a framework mod... but yea 😅

proud wyvern
#

Speaking of Pintail, it would be nice if Pathos updated SMAPI’s version of it, I’ve made it much faster recently

brittle ledge
#

(Mangupix your pfp is very cute!)

proud wyvern
gentle rose
#

I need to try pintail at some point, the python user in me is very intrigued at duck typing c#

brittle pasture
lucid iron
#

I mean it's not really a thing you try

proud wyvern
#

If so, then you’ve used Pintail already

lucid iron
#

It just works™️

normal trout
#

Is it possible in current modding to tell the game to spawn the bed in a different tile location of the farmhouse map at the start of a new game? Or is that hard coded and messy like it used to be.

iron ridge
brittle pasture
#

I also got an Android compat request for EMC; it turns out there might be a crashing issue beyond the doomed clickCraftingRecipe transpiler, but for now I've been washing my hand on it SDVpufferpensive

iron ridge
#

Unreleased wii u port

lucid iron
#

My money is on the slingshot ammo, torpedo trout too powerful for the average mobile phone

brittle pasture
normal trout
#

Dang, I was really hoping for the other answer lmao

#

Thanks guys

#

Carry on

gentle rose
calm nebula
#

(That's actually true, huh.)

royal stump
#

sounds like too high a bar for me SDVpufferlurk

#

(except when I leave 0.0.x changes sitting around forever)

brittle pasture
sullen sun
#

Hey just checking in on something- when adding coop animals via content patcher what do I need to properly set the egg item for incubation? I swear I have everything set up correctly, but I cannot for the life of me get the game to allow me to place the item of the ID selected inside. Do I also need to modify the incubator BC file in some way?

calm nebula
#

I don't know, this is what user 1 is doing

gentle rose
#

ooo pretty cables

brittle pasture
calm nebula
#

It's lace! I just haven't blocked her properly yet SDVkrobusgiggle

sullen sun
#

Yeah, got it set and everything.

gentle rose
#

I never block my knitting

sullen sun
#

I even double checked my formatting via the default animal file from vanilla, seems alright

desert crane
gentle rose
#

the channel? because it’s for talking about making mods

gentle rose
sullen sun
#

Yup, the same ID is set for the produce

#

And I tested by spawning the animal, it produces correctly

brittle pasture
#

Looking at vanilla files I see that EggItemIds use unqualified IDs (without the (O)), try removing it?

sullen sun
#

Hm, will give that a go

#

Incubator has accepted it now, still testing though

#

We have achieved incubation ladies and gentlemen

brittle pasture
#

ah animal data, one of the last strongholds of purely unqualified ids

#

(see also produce)

sullen sun
#

Yeah like- honestly I would have never expected it to use the unqualified id

#

especially because the produce does work with the qualified id SDVpufferdizzy

#

thanks again y'all

gentle rose
calm nebula
#

No.

#

Limited to normal objects only

gentle rose
#

oh, so it’s unqualified but only because it has to be (O) anyway

royal stump
#

I like the idea of a 1x2 egg though SDVpufferchickbig2

gentle rose
#

tall egg

calm nebula
lucid iron
#

thats how u hatch bookworms

acoustic summit
#

Would anyone know where the default marriage dialogue comes from? I swear I didn't give this NPC dialogue but its talking about reasonable vegetables in their dreams...?

#

Nvm I realise my issue, I was looking for "reasonable" but the default marriage dialogue just happened to give me reasonable and cucumber from "%adj %noun"

shut edge
#

uh oh someone requested a i18n for my new mod

#

guess that's a new bridge to cross

lucid iron
#

theres that i18nfier

tawny ore
#

How about, instead of using words to express ideas, just use emojis since those are a universal language /s

finite sequoia
#

Would any NPC creators be willing to allow their NPCs to show up as background characters to a pride festival during an event? They'd only show up in the background, but it'd mean a lot! Especially becausethe festival is currently a little dead

velvet narwhal
#

i mean, you can throw mothman in there since he's lesbian flagged KEK but i don't know how you intend to have him show up in the event, my mod required sprites in detail

dim yew
#

They’re just map tiles!

#

(it’s my event we’re collaborating 😽)

velvet narwhal
#

feel free to rip the sprites then, i might have the "standard size" that i squashed for testing purposes somewhere though, lemme find it

finite sequoia
#

I have the tilesheet open and editing in fake NPCs rn, I can just copy and paste this rq!

pine ermine
#

How is the sell price of fish calculated? Is there an equation somewhere on the wiki? I'm having trouble finding it if so.

final sequoia
finite sequoia
#

Oh! I love his design- I haven't been the most active here 😅 but have you posted anymore about him?

brittle pasture
pine ermine
#

With quality and profession

brittle pasture
#

check out Object.sellToStorePrice, though if I understand your project correctly that shouldn't matter since it's applied to all fish

#

(Side note, but have you considered pinging aloe/aceynk, I think she worked on a similar fish profitability project some months ago, also with copious math)

pine ermine
#

:O

#

I asked if someone did this already >.<

#

I'm almost done though

velvet narwhal
#

well selph wasn't around when you asked SBVPensiveButt

pine ermine
#

oof

lucid iron
#

Since it wasn't made to be a mod

pine ermine
#

oh okay

lucid iron
#

The mod version of this would be a fishing sea but that one's like "screw maffs stealing the prng lol"

#

It has per tile fish predicting

brittle pasture
#

Yeah I only caught that you worked on it earlier while backreading lol

#

let me search for her writeups on the thing

final sequoia
# finite sequoia Oh! I love his design- I haven't been the most active here 😅 but have you post...

Not really. Just been asking a lot of trouble shooting for events. I am expanding on Crazy Ed's Fruit Trees (https://www.nexusmods.com/stardewvalley/mods/28661). My current avatar is his portrait. Essentially, he is a former Joja employee who was termed and is now trying to engineer trees, plants, and crops that shouldn't exist. Just stupid things. I even am having a Salmon bush (not a salmonberry bush...)

brittle pasture
finite sequoia
#

Wait I live for this!!

#

A salmon bush would be very nice, too- fishing is too much of a hassle for a game as peaceful as Stardew...

pine ermine
#

This didn't help...\

calm nebula
#

You need to look at the overrides

brittle pasture
#

that's Item.sellToStorePrice

rancid temple
calm nebula
#

Rokugin, how long have you been a snowflake

pine ermine
rancid temple
#

Too long

#

But it's still cold, so snowflake I shall remain

brittle pasture
#

the top one?

calm nebula
#

Haven't melted yet?

#

You can literally right click and ask it about the overrides on that method

#

Right click-> analyze

#

Then look at "OverridenBy"

pine ermine
#

found it

teal bridge
calm nebula
#

Anyways, it scales linearly so I'm not sure it matters if your goal is to calculate the most valuable location to fish

#

Like, unless Mod Map X made a 100% prismatic shard fish able or something

#

It scales = professions scale it

#

I guess the coal for the smoker if you assume you buy that

brittle pasture
#

yeah I dont think it's important that I know 120 > 80 if I already know 100 > 65
I guess this is for getting the most accurate value after all game modifiers?

#

and non-fish items

brittle ledge
pine ermine
#

I can't tell which profession is for the fish because everything is just a number >.<

finite sequoia
brittle pasture
#

blame C# compiler yeeting the consts
let me find the wiki page

pine ermine
#

Why are they consts instead of enums SDVpuffersquee

finite sequoia
#

Im just helping with some minor things, and making like 100 sprites for one event is more difficult than making something collaborative out of it SDVpufferblush

brittle pasture
#

(Though then again why not just call the function directly)

#

(mods can also patch it)

#

(like mine)

pine ermine
#

Because creating the objec to check would create garbage like you wouldn't believe

brittle pasture
#

ehh it's not that bad at all

lucid iron
#

theres a buch of consts on the farmer

#

Stardew Valley/StardewValley/Farmer.cs

pine ermine
#

I might try to call the functions later but for now I'm focusing on vanella

brittle pasture
#

fun fact, when you open the gift tastes screen the game creates temp objects for every icon

lucid iron
#

mood

tiny zealot
lucid iron
#

i too create and destroy temporary objects when i dream of ui

pine ermine
#

Just a reminder that this loop took 60 seconds to run before I was able to find an alternate forumla that used combinations instead of permutations.

finite sequoia
brittle ledge
brittle ledge
#

I can also send you Wren's internal ID if you want to include her (she's very queer)

finite sequoia
#

Sure! Send them all in

calm nebula
#

If you put a hat on a scarecrow. The game generates a temporary object every tick the scarecrow is on screen

finite sequoia
#

If mice can come, so can cats!

tiny zealot
finite sequoia
#

Perfect!

calm nebula
finite sequoia
#

Thats really fierce, actually

tiny zealot
#

fun fact Lacey and her family have a canonical surname! i will not be revealing it, it is classified

finite sequoia
#

Because there's only one of one Lacey Lacey

uncut viper
#

its Lacey Stardew of course, in the same vein as Sans Undertale

#

or John Halo

calm nebula
#

Does the game still track somewhere about whether or not you have gotten an artifact/gem

brittle pasture
#

It's only on donation after 1.6.9 I think

tiny zealot
uncut viper
#

yes

tiny zealot
#

amazing

calm nebula
#

Yeah, which is unfortunate when there are nondonateable gems/artifacts

normal trout
#

[EDIT: This has been fixed, by just not using the rug. So the woodcut rug and floor tv do not play nicely for reasons unknown. I'd still love an answer if anyone is interestedin digging deeper, but for now I'm just not going to use that rug.]

Huh. So I'm doing a thing where I change the FarmHouseFurniture map property in my content.json for a custom farmhouse map design I'm using. I've had no issues up until this point, but does anyone have any idea why the floor tv would spawn like this???? It's fine once picked up and set back down. But like... wtf?

My map is set up properly - floor tiles on Back, the base of the wall on Buildlings, etc. It's worked in every other decor iteration I've ever done.

Context:

      "Action": "EditMap",
      "Target": "Maps/Farm",
      "MapProperties": { 
         "FarmHouseFurniture": "1616 1 1 0 1616 13 1 0 1602 11 1 0 1606 4 1 0 1777 6 4 0 1792 9 4 0 1680 6 4 0 300 6 6 2 1449 5 4 0 18 1 6 0 18 1 9 2 1122 1 7 0 1364 1 7 0 1755 1 5 0 1376 1 10 0 1384 13 4 0 1393 11 8 0 1362 11 8 0 2742 7 7 0 709 13 9 3 "
         }
      }```
uncut viper
calm nebula
#

Iirc it was not fixed

shut edge
rancid temple
#

It doesn't like when you do multi-lining but it works well otherwise

shut edge
#

what's it called?

hard fern
#

i've used it, i like it. but since ive started writing everything with i18n from the start, i dont use it much

rancid temple
#

Uh, I tried it like yesterday and it didn't work with multi-lining

uncut viper
#

it was fixed like literally 2 days ago

shut edge
#

lol

uncut viper
shut edge
#

thanks

rancid temple
#

I'll test it again, maybe it was before then, the days are bleeding together

normal trout
rancid temple
uncut viper
#

i dont know what im supposed to be looking for bc i never used it so idk what its supposed to look like

rancid temple
#

Well it should have the content and i18n spots filled out

uncut viper
#

but if its still not working id tell nomori

hard fern
#

wait you can break up events like that now?

rancid temple
#

I deleted one of my whitespaces and put it back and it's working with it there still

#

So I'm not entirely sure what the actual problem with it is

uncut viper
#

are you sure its not just not doing anything bc you already have i18n in it

tiny zealot
rancid temple
#

I figured it would still work with the tokens in place, since it's just looking for quotes

gentle rose
rancid temple
#

Oh it's only the one I deleted the multiline for lol

#

The other one is still not working

gentle rose
#

it sounds like a pretty straightforward task on paper but I say that knowing nothing about how either donations or the collection are handled

uncut viper
#

i see in the source it also does checking for dynamic tokens

rancid temple
uncut viper
#

so the regex for that might be catching the normal tokens as dynamic tokens and skipping them

wispy gale
#

foof, i just finished the dialogue draft of a mod that's been living in my brain since the holidays. trynna push it out before new job starts. next stage is testing -- also i did nawwwt realize the olympic struggle that is capturing NPC chat bubbles for mod pics?? they're so fast SDViconskaterboi anyone got tips/hacks for this?

uncut viper
#

i hate reading regex more than i hate reading literally anything else though so im not looking at it any more

gentle rose
#

wait which one’s jsonl lol, I only know jsonc and json5

rancid temple
#

json lines

uncut viper
gentle rose
uncut viper
#

it was only changed in 1.6.9

#

or 1.6.10 or smth. around there

calm nebula
#

Yeah

rancid temple
#

jsonl throws out a lot of other syntax checks though, so that's unfortunate

gentle rose
#

didn’t it record all gems/artifacts on first pickup?

finite sequoia
calm nebula
#

I think I can simple transpiler it to have the previous behavior

rancid temple
#

but you're retired

calm nebula
#

If it's still tracked

#

(Lol)

gentle rose
#

I wonder if there was a reason it was changed

uncut viper
#

tbf its not like there needs to be a reason other than "CA liked it better this way"

calm nebula
#

(There was)

lucid iron
#

Back porting stuff wow

calm nebula
#

Players were using it to check their museum donations and getting confused

uncut viper
#

back porting for atra makes sense bc atra's mods are all in the past still

calm nebula
#

Exactly!

gentle rose
uncut viper
#

(i also think it was a good change for the collections menu tbf, i think it makes more sense. that said i wouldve checked if it were non-donateable)

old edge
#

Currently working on a museum patch how many mods patch this room?

uncut viper
#

like 7 at least probably

tiny zealot
gentle rose
#

yeah, you could always patch it so that only non-donateable items have the previous behaviour since the issue doesn’t matter with them anyway

calm nebula
#

Yup!

lucid iron
#

why does ItemGrabMenu succ

gentle rose
uncut viper
#

if only there was a repo i could look at to reference the 1.6.8- behaviour... oh well

lucid iron
#

button cant u just

#

decompile the 1.6.8 branch

uncut viper
#

i dont feel like reinstalling 1.6.8 every time i want to glance at its code for 2 seconds

calm nebula
#

Oh, looks like Button has it, awesome

#

Awesomesauce

uncut viper
#

i dont have any awesomesauce

calm nebula
#

I'm glad all yall are super supportive of me staying very retired 😛

uncut viper
#

im not touching the collectionspage with a transpiler with a 10 ft pole

calm nebula
#

Every time I mumble about doing something someone else does it SDVpufferthumbsup

#

What about a 11 foot pole?

lucid iron
#

but what about buttonmuseumframework

uncut viper
#

thats been on hold since october

tender bloom
#

Or a 9 foot pole?

#

Really 8 feet is the easiest length to get things in

gentle rose
#

I’m out, I’ve yet to try transpilers and this feels like maybe not the ideal place to start pffft

tender bloom
#

I can procure a lovely 8 foot pole

#

Sadly I can’t transpile either

lucid iron
#

atra u did vmv ender chests yggy

calm nebula
#

Yes

uncut viper
#

the CollectionsPage in general is not a good place to start

lucid iron
#

is it better to make a Chest or just try to do it with just Inventory + ItemGrabMenu

calm nebula
#

I did inventory+ itemgrabmenu

lucid iron
#

but then u cant pick chest size right

tiny zealot
gentle rose
#

I could, in theory, do a skipping prefix on the whole thing with a copy of the decompiled method with just the relevant parts changed. It’s a terrible theory but a theory nonetheless SBVLmaoDog

uncut viper
uncut viper
calm nebula
lucid iron
#

yea hrm

#

well idk what if i just

calm nebula
#

Tbh I also have a full homemade implementation of an inventory menu with scrolling

lucid iron
#

stardewui me own item grab menu since the game's succ anyways

gentle rose
#

I tried looking at the AnimalMenu code once and my brain broke

calm nebula
#

Two years ago damn

lucid iron
#

i sense this dumb feature becoming dumber so i am kicking it to next sprint

uncut viper
#

the CollectionsPage and PowersTab menus wouldnt be so bad if they didnt just shove literally fucking everything into the constructor

calm nebula
#

Speaking of sprints I should do that

lucid iron
#

knitting sprints yggy

uncut viper
#

i wouldve been happy if they only shoved half of all things into the constructor

gentle rose
#

chu, you work on mods in sprints?

lucid iron
#

no i don't it's a joke

uncut viper
#

chu's very agile

gentle rose
#

lmao, I was wondering

wispy gale
lucid iron
#

i work when the worms tell me to

finite sequoia
calm nebula
#

I need to work out mpre.

#

Snow trashed my training. Schedule last week

uncut viper
wispy gale
uncut viper
#

BETAS has a TextAboveHead action that you can run from the console to make the speech bubble appear for a customizable length of time so you could set it to like 90 seconds for the screenshot. could make it happen anywhere and just photoshop the speech buble onto a different image after

gentle rose
#

are you on windows, confetti?

#

windows+alt+r starts a screen recording, then you can just use an online tool to get the right frame

wispy gale
wispy gale
whole raptor
uncut viper
#

not a clue! thats a question for roku

rancid temple
#

I don't know exactly what the problem is, it doesn't seem to like the multi-lining

whole raptor
#

I thought I fixed it recently, but maybe I missed something... Can you send me the string you tried?

rancid temple
#
"{{ModId}}_FirstQuestMaruEndMarriedFarm/!SawEvent {{ModId}}_FirstQuestMaruEnd/Spouse Maru/HostOrLocalMail {{ModId}}_CollectorDesignEndFlag": "
        continue/-10000 -10000/Maru -100 -100 2 farmer -100 -100 2/broadcastEvent false/eventSeen {{ModId}}_FirstQuestMaruEnd true/setSkipActions AddItem (BC){{ModId}}_Collector#MarkCraftingRecipeKnown All {{ModId}}_CollectorRecipe/skippable/warp farmer -100 -100/faceDirection Maru 2/warp Maru -100 -100/warp Maru 65 15/positionOffset Maru 0 -20/
        globalFadeToClear 0.02 true/viewport 64 15 clamp true/pause 1000/playSound doorClose/emote Maru 16 true/warp farmer 64 15/faceDirection Maru 3/pause 500/
        pause 300/faceDirection farmer 1/pause 300/
        speak Maru \"{{i18n: first-quest-maru-end-married-farm-event.0}}\"/pause 300/
        emote farmer 32/pause 300/
        speak Maru \"{{i18n: first-quest-maru-end-married-farm-event.1}}\"/pause 300/move farmer 0 2 1 true/move Maru 0 2 1 true/globalFade 0.02/viewport -10000 -10000/pause 300/
        changeLocation ScienceHouse/switchEvent {{ModId}}_FirstQuestMaruEndMarried"

I was originally using this without the translation tokens in place but it seems to be fine with the tokens there just spits out funny translation tokens and content.json

#

I had to delete the space before the speak commands and then when I added it back it was working fine for that command

#

So if I only do one it only fixes that one and not the other

#

Maybe some kind of issue with pasting in multi-lines?

whole raptor
#

Hmm.. I don't think it's line breaks, cause after deleting all of them it still doesn't show SDVpufferthinkblob

rancid temple
#

Huh, that's weird, I was getting it to work by removing them

whole raptor
#

Ah, got it

#

It work with line breaks, but not whitespaces between / and speak

#

Easy fix

grand scaffold
#

how would i have a npc have specific dialog the first time the player talks to them after seeing Elliot's 8-heart event?

rancid temple
#

Ah, so I guess it really is just pasting in whitespace instead of line breaks

whole raptor
#

Did you find anything else not working correctly? I can probably push an update in 30 minutes or something

uncut viper
#

linebreaks are just whitespace, just vertical whitespace

uncut viper
calm nebula
#

Button, may I have diagonal whitespace

uncut viper
#

i dont know take that up with whoever writes text parsing standards. linebreaks being whitespace wasnt a joke

#

id support diagonal though i spose

whole raptor
#

Whitespace as in the thing you make by clicking the spacebar SDVpuffersquee I always get confused if it has it's own name in English

uncut viper
#

i would just call that a space, though in a programming context "space" is just potentially vague and "whitespace" is very encompassing is all

whole raptor
#

With my love/hate (with emphasis on the latter) relationship with regex I sometimes wonder why I made this converter SDVpufferthink

rancid temple
lucid iron
uncut viper
#

you didnt show off the cancel button so i can only assume its broken and you're trying to hide it

lucid iron
#

well, it actually just does nothing

uncut viper
#

so i was right

lucid iron
#

the cancel button is an empty entry with only label and no action/tileaction

uncut viper
#

what if i want dialogue when i cancel

lucid iron
#

then u put an action in there

#

its not special blobcatgooglyblep

uncut viper
#

does it take tile actions or normal actions

lucid iron
#

both

uncut viper
#

trigger action actions

#

ooh

lucid iron
#

im writing docs tmr but here's the model

public class QuestionDialogueEntry
{
    public string Label { get; set; } = "[LocalizedText Strings/UI:Cancel]";
    public string? Condition { get; set; } = null;
    public List<string>? Actions { get; set; } = null;
    public List<string>? TileActions { get; set; } = null;
}

public class QuestionDialogueData
{
    public string Question { get; set; } = "";
    public string? Speaker { get; set; } = null;
    public Dictionary<string, QuestionDialogueEntry> ResponseEntries { get; set; } = [];

    public IDictionary<string, QuestionDialogueEntry> ValidEntries(GameStateQueryContext context)
    {
        return ResponseEntries
            .Where((qde) => GameStateQuery.CheckConditions(qde.Value.Condition, context))
            .ToDictionary(qde => qde.Key, qde => qde.Value);
    }
}
#

i have no idea what speaker does tbh but i do Game1.getCharacterFromName to it

brave fable
uncut viper
#

speaker determines the portrait of a dialogue box

brave fable
#

now what you're really look for here is a solution though, rather than an explanation

uncut viper
#

and name

lucid iron
#

sometimes u want tile action cus it does actually pass on the tile (Point)

#

yea but, question dialogues dont have portrait boxes???

brave fable
#

and luckily for you, i don't have a fucking clue

calm nebula
#

Back to blueberries

#

And less holly

uncut viper
#

maybe a question box can be forced to have one

#

theyre used for NPC questions too anyway arent they

calm nebula
#

Yes bit the npc is not there

#

In npc questions

whole raptor
#

Huh, it seems i18nifier doesn't like tokens in event IDs, guess I'll fix that too

lucid iron
#

so the Game1.getCharacterFromName definitely got Krobus i think

#

(as per the test data i put in)

#

but it doesnt seem to do shit

uncut viper
lucid iron
#

maybe it matters for like, the following dialogue if u spawn something with action?

#

ill release this once i write them docs, it doesnt seem too explody

shut edge
#

there's some way to filter by mod in CJB item spawner isn't there?

lucid iron
#

search ur own mod id?

brave fable
#

not exactly, but search includes internal name, so just search by unique id

#

for example, searching for blueberry will give you a tart and every love of cooking item

shut edge
#

yeah i tried using my name and stuff...

#

oddly it sees two items from one of my mods but not others

#

like what

brittle ledge
#

hey blueberry, while you're here, do you have plans to update your instant farm cave/pet mod? No worries if not, just keeping it in mind if you do for a mod idea request.

rancid temple
#

Did you use your mod id in those others?

shut edge
#

as in {{ModID}} in the json? yea

brave fable
#

i didn't think instant pets was needed anymore

gentle rose
#

is there not a map tile Action that does dialogue questions in the base game? and if not, what was I using to do it a week ago 😭

brave fable
#

for some reason

shut edge
rancid temple
#

Pet is timing based isn't it?

shut edge
#

if i f1 an item it knows where it's from

uncut viper
rancid temple
#

Lookup Anything and CJB are separate mods

shut edge
#

right

#

but they're reading the same data from my mods right?

brittle ledge
lucid iron
#

isnt that a event thing though

brittle ledge
#

Thaaaat's not the right link

gentle rose
#

I love when I make mods and immediately forget everything I learned while making them s_sigh

lucid iron
#

this is a tile action

#

<- knows -2 of dialog/event tbh

gentle rose
#

time to look through my own code so I can figure out what I was trying to ask you chu

uncut viper
#

if ur talking to me i dont mean the event thing i just dont know the dialogue commands

#

$q or w/e

brittle ledge
#

Unless that changed in 1.6

lucid iron
#

ig its just question of whether u can spawn a dialog with action

gentle rose
#

oh, I made my own tile action

shut edge
#

maybe i;'m config'd wrong or something

uncut viper
#

i think 3 of us are on 3 different pages thinking we're all on the same one

rancid temple
calm nebula
shut edge
#

CJB doesn't seem to be letting me search for anything by mod names hmm

rancid temple
#

CJB isn't like the Minecraft item search stuff, it doesn't categorize things like that

brave fable
#

are you searching by mod unique id, or mod display name?

uncut viper
#

i think CJB can search by mod id if you have the mod id in the item id?

shut edge
#

i've tried quite a few and nothing seems to be quite working hmm

brave fable
#

it's possible your items are just invalid

shut edge
#

swear i've seen it do this

#

maybe i'm just imagining a feature i want here

rancid temple
#

Have you tried just using console commands to spawn them to make sure they're valid?

#

Or do they show up if you search differently?

shut edge
#

oh they are all fine, i just wanted to use it to test my translation strings

#

ie i wanted to see all my items at once

brave fable
#

but that's already a feature, cjb searches by internal name

shut edge
gentle rose
#

/// <summary>functools.partial my dead girlfriend...</summary> chu I have questions

shut edge
#

they're here

brittle ledge
# calm nebula Yesish

Atra would you be able to remove the preconditions in CP with nulling the event/creating a precondition-less one, or are they too hardcoded for that?

shut edge
#

seems like it's all good......which is suspicious, what do you mean nothing broke??

old edge
#

Just trying to find if any other mods I haven't checked off yet patch the museum. So far I have taken into account VMV, MGR, Museum expanded, and Jasper the mod.

shut edge
#

did content patcher change format versions overnight?

#

thought we were on 2.5.0

rancid temple
#

2.5 has been out for a few days but I don't think the validator is updated yet

uncut viper
#

we're on 2.5.1 now

shut edge
#

if anyone cares to give my first attempt at i18n a quick lookover

#

it seems like it's working?

brave fable
#

imagine the worldwide bandwidth use if all cp mod authors updated their mods for each format version

lucid iron
#

it's a longing...

calm nebula
#

Also could use spacecore to launch the evnt

uncut viper
#

cant you also just switchEvent to it

gentle rose
#

why use partials when you can make awkward wrappers instead /lh

uncut viper
#

or fork

brave fable
#

lunch events. wrappers, forks..

calm nebula
#

The setup commands

#

The first three clmmanss

uncut viper
#

what about them

whole raptor
#

Okay, the update for i18nifier with better whitespace handling (again) is up

calm nebula
#

Are not valid in a switchevent

shut edge
#

am i doing something wrong on nexus with comments, i reply to things and it shows it as a reply and as a solo post

calm nebula
#

Tbh I think spacecore is a super common framework and most content pack authors are happy to use it

whole raptor
lucid iron
#

that happens all the time dw about it

#

it fixes itself

calm nebula
#

So "you can do X with cp+spacecore" js more than find

shut edge
#

ahh ok

whole raptor
#

If you refresh it's normal

calm nebula
#

Dine

shut edge
#

thanks

calm nebula
#

Fine

uncut viper
#

what do you mean they arent valid in a switchevent

shut edge
#

lunch events, dine

#

sounds like a plan

brittle ledge
shut edge
#

now to decide if i should take a break today or ride the momentum and update one of my other mods...

lucid iron
#

u can always ask uber

shut edge
#

i was thinking of making RSV fruit ghosts but man....most of those fruits are red and i've already used most of the red and orange ghosts

lucid iron
#

.choose break, updoots, actually play the game

patent lanceBOT
#

Choose result: actually play the game

lucid iron
shut edge
#

lol

#

that was an option??

lucid iron
#

i am on a "no starting new mods" phase in that the next things i wanna do r kind of late game

#

so i want to get to like y2 on a save first

whole raptor
#

Did I just see "play the game" in making mods...? Blasphemy SDVpufferban /jk

brittle pasture
tiny zealot
tiny zealot
#

although they'll probably be logged as errors and proceed in 1.6

uncut viper
#

whats the point of a switchevent then

calm nebula
#

Switching to a 🍴 which doesn't have those startup ckmmands

uncut viper
#

but then why not just use fork

calm nebula
#

Fork is conditonal

uncut viper
#

what would be the usecase of switchevent then instead of just, continuing in the same event string?

tiny zealot
#

switchEvent is ideal for forking in a quickQuestion

calm nebula
#

Also go explain rhr typos my hands are very cold

calm nebula
#

Oe, a, fork b or c, all switch back to d to end

tiny zealot
#

i have used it for diamonds, as well as splitting out ends to certain events which differ depending on config settings

#

so like switchEvent myEventPart2, and part2 has two different versions which i patch in conditionally

#

you could just do that with two complete copies of the event but i'd rather just change the part that is different

calm nebula
#

Events are a program language

gentle rose
#

why is github search the way that it is 💀

calm nebula
#

Events scary

lucid iron
#

u can clone things to grep locally

#

what do u seek

pine ermine
lunar dawn
#

hi guys, I've been wanting to improve my mod for a while now. it features 8 types of produce that the animal digs up but the issue is that they oftentimes go multiple days without digging anything up, and on days that they do I'm lucky to get 1 produce on that day. I altered the content a few days ago to see if it could help improve the produce levels but it doesn't seem to change anything, does anybody have any clue why they would produce so little?
https://smapi.io/json/content-patcher/fd270e8f49504ff8aaaac99bbd89bd1a

#

i originally didn't have the deluxe produce item ID bc they don't have deluxe produce but i just added it to see if it would up produce. they act the same with or without those extra bits

pine ermine
#

I got the fish census working! These numbers seem accurate based on my sampling if I downgrade all the iridium fish to gold fish.

gentle rose
#

what's the easiest way to test out a map tile property/action? make a map that has it and load it into the game?

desert crane
#

Thank you anyway for the help!

uncut viper
#

actually, that means you can just remove the first 3 fields from that event with TextOperations, and switchevent without getting errors

desert crane
#

Also I want to share something I've never seen before. Don't know how many people know these. Before on the loading screen while hitting concernedape, it changed animation smiling, and leafs falled from the screen. And another thing, while fishing in the secret area, a green monster appeared walking from one side of the screen to the other one

uncut viper
#

(or redistribute an event without permission)

calm nebula
#

Events. Having the precondition in the sky

#

Is annoying af

uncut viper
#

sure, just the same as it would error if someone called a fork event normally

#

the event was marked as seen and didnt happen normally after i tested it

#

marnie did not show up with a second pet

calm nebula
#

Yes, but how the game decides if is fork or not is based on the key

#

And you would have to get ahead of it

#

Ie, if you happened to already satisfy the precondition

uncut viper
#

how is event priority decided, anyway?

#

ive never looked into it

tiny zealot
uncut viper
#

either way though i concede its a bit finnicky for events in general then. but it would definitely work for instant pets at the very least

#

since you cannot possibly meet the precondition on day 1

calm nebula
#

Order

#

Msyvui

uncut viper
#

is there a framework that just turns events into a data model already

#

and just isnt used much

calm nebula
#

Nah

uncut viper
#

"dictionary order" terrifying

calm nebula
#

Cab sodk around with spacecore triggeractions

#

Good eb I h

uncut viper
#

atra you're stretching my limits of error correction

#

i dont have enough parity bits or whatever

tiny zealot
#

tag yourself i'm "Msyvui"

uncut viper
#

im Cab

gentle rose
#

can I be eb

pine ermine
#

What item is (F)2423? (Hopefully not anything with spoilers :P)

#

Also (F)2425

#

and (F)2427

gentle rose
lucid iron
#

There's a number of furniture that u can fish up

#

If u don't want spoil then don't look them up

lucid iron
#

(F) means furniture

pine ermine
#

Oh, okay

gentle rose
#

they're in the furniture tab

pine ermine
#

That explains why it doesn't have an item definition

#

And then there is that one place where the item id is LOCATION_FISH Forest BOBBER_X BOBBER_Y WATER_DEPTH which is only ever used once and probably annoying to deal with.

lucid iron
#

Mods would use those

pine ermine
lucid iron
#

Fish is item query iirc so u should just use item query resolve crap

calm nebula
#

Forwards to forest at the same location

#

Read that as "same pool as foest"

lucid iron
#

Any data model that impl generic spawn item data really

pine ermine
#

If it is the same pool as forest, that means whenever I encounter that, I need to recursively call my probability function and somehow squeeze it into the loop. SDVpufferwaaah

#

Which means there is now recursion in my permutated algorithm SDVpufferdead

lucid iron
#

Well u build a static list with item query first

pine ermine
#

I can't use item query, because that query doesn't always return the same fish, It can return any fish from the forest, each fish having a varying probability, which needs to be calculated using the function that I am querying it from.

lucid iron
#

You can use the all items mode instead of the random items mode

#

To get all valid

oblique frost
#

Can someone help me figure out why adding a dialogue when an NPC is at a specific location isnt working? (not sure how to post the code here correctly)

pine ermine
#

I don't need the items, I need the probability of getting it.

lucid iron
#

Though there was some nonsense with how feesh rates work that meant it wasn't just flat

ocean sailBOT
#

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.

tiny zealot
lucid iron
#

But that is at a full fish list level iirc

#

Not a singular item query level

pine ermine
#

chu

#

I am trying to calculate the population mean profit-per-cast

lucid iron
#

At any rate idk what ur gonna do for modded locations that use non item id item spawn besides using item query

pine ermine
#

Also I already solved part of that nonsense

lucid iron
#

I am not saying to use this for any final result

lucid iron
#

It's for building the list o fish to math on

uncut viper
#

i thought chu was just saying to pre-calculate the entire list possible from the item query and then run your calcs on that, instead of recursively calculating the item query itself

pine ermine
#

It already does

lucid iron
#

I am unsure what u would do for the RANDOM gsq but i guess u will have to sanitize that

pine ermine
#

That's a thing?

lucid iron
#

Idk if it's used in any vanilla fish data but yes it's a valid item spawn field thing

#

In Condition

lucid iron
#

public class SpawnFishData : GenericSpawnItemDataWithCondition

#

yep it is valid to use gsq here

#

prob fine if u just assume people arent weird and use Chance instead of RANDOM

#

at any rate all i really meant is, you do this bit but with TryResolve instead of TryResolveRandomItem

#
Item item2 = ItemQueryResolver.TryResolveRandomItem(spawn, itemQueryContext, avoidRepeat: false, null, (string query) => query.Replace("BOBBER_X", ((int)bobberTile.X).ToString()).Replace("BOBBER_Y", ((int)bobberTile.Y).ToString()).Replace("WATER_DEPTH", waterDepth.ToString()), null, delegate(string query, string error)
                {
                    Game1.log.Error($"Location '{location.NameOrUniqueName}' failed parsing item query '{query}' for fish '{spawn.Id}': {error}");
                });
#

GameLocation.cs

pine ermine
#

So now this part of my code is no longer deterministic.

#

yay

lucid iron
#

tryresolve should give u a list that r evenly distributed

brittle pasture
#

it only ever returns one fish

lucid iron
#

wow lame

#

once again fish is cursed sleep

brittle pasture
#

because of the probability bs of fish data it can't give a proportional list