#making-mods-general

1 messages · Page 226 of 1

lucid iron
#

you need to do moveentries

#

send the rule to top

hot gale
#

So I would always be placing the fruit in the jar with my hands, not the actual mead?

ocean sailBOT
#

@hot gale You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!

lucid iron
#

yea

hot gale
#

Thats.. not ideal

lucid iron
#

why not

#

how are you gonna pick what flavor otherwise

hot gale
#

only have 10 of the fruit you are going to use on you I guess

#

You raise a good point

lucid iron
#

again, send the rule to the top

#

but hm

#

u could stick it on casks if it bothers you

hot gale
#

I tried originally with casks, you cant have it create a separate output item I guess?

lucid iron
#

nothing says you have to use OutputMethod for a cask rule

#

simply edit in the rule you have on preserve jar to cask

hot gale
#

When it's on cask it takes the integer max to age, and can be harvested immediately

lucid iron
#

the int max is uiis2 bug

hot gale
#

I mean I could still harvest it immediately, It didnt take 10 seconds much less 40+ days like it was supposed to

lucid iron
#

harvested immediately just means you didn't set a MinutesUntilReady

#

or DaysUntilReady

desert tinsel
#

Hey everyone, I'm new to this community and to the whole modding thing.SDVpuffersweats
I'm not very good at English—I'm Brazilian—and I'm diving into this vast world looking for help to create the mod I have in mind. That said, I have a question.
Would it be a big problem if I kept coming here to ask the simplest and silliest questions that come to mind during this process? Or would that be too much of a bother for you, guys?SDVpufferblush

uncut viper
#

thats what this channel is for SDVpufferthumbsup as long as you are trying, people wont mind

desert tinsel
#

That comforts me a lot. I hope I don’t end up sounding too silly, even though I actually am. :')

hot gale
#
{
            "Action": "EditData",
            "Target": "Data/Machines",
            "TargetField": [ "(BC)163", "OutputRules" ],
            "Entries": {
                "agedbearhoneycask": {
                    "Id": "CaskHoneyMead",
                    "Triggers": 
                        [
                            {
                                "RequiredItemId": "bonghits.Cp_BearHoneyMead",
                                "Trigger": "ItemPlacedInMachine",
                                "RequiredCount": "1"
                            }
                        ],
                    "OutputItem":
                        [
                            {
                                "Id": "bonghits.Cp_AgedBearHoneyMead",
                                "ItemId": "bonghits.Cp_AgedBearHoneyMead",
                                "CopyQuality": true // Retain Quality
                            }
                        ],
                    "MinutesUntilReady": 600 // 10 Hours
                }
            }
        },

This is producing non-aged mead, raising quality but remaining the same item

vernal crest
#

I sure do love that end tables need to have the words "End Table" in their names to let them rotate xD

spiral lion
#

Hello!
I did the SMAPI log thing, i think...
https://smapi.io/log/b1bb8846345241e28b2d11cb45eb024b

My mod is called "Bloom and Brew"
Does anyone know why my town map does not load? It does not work when i remove the ""When": { "World": "SVE" }, " eather 😦

This is my code:
{ "Format": "2.5.0",

"DynamicTokens": [
{ "Name": "World", "Value": "Vanilla", "When": {} },
{ "Name": "World", "Value": "SVE", "When": { "HasMod|contains=FlashShifter.StardewValleyExpandedCP": true } }
],

"Changes": [
//Loads tilesheets
{
"Action": "Load",
"Priority": "Low",
"Target": "outdoorsbrew",
"FromFile": "Assets/{{Season}}_outdoorsbrew.png",
},

//Loads SVE maps
{
  "Action": "EditMap",
  "Target": "Maps/Town",
  "When": { "World": "SVE" }, 
  "FromFile": "Assets/Maps/SVE/BrewTown.tmx",
  "PatchMode": "Replace",
},

],
}

ocean sailBOT
#

Oops, couldn't parse that file. Make sure you share a valid SMAPI log.

spiral lion
hot gale
#

Welp I can see what I want to do is technically possible, apparently just beyond me I give up on this idea, been bashing my face against the keyboard for hours with literally zero progress

vernal crest
spiral lion
#

oh okay, where can i find that?

vernal crest
spiral lion
ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Home, with 22 C# mods and 55 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

spiral lion
vernal crest
# spiral lion hahah i found it yes! https://smapi.io/log/fb0246fd178443fda28fb1a357881d81 Tha...

These two errors are the relevant ones. The first one is telling you that you're trying to load a tilesheet that doesn't exist (summer_outdoorsbrew.png), so check what your {{Season}}_outdoorsbrew.png tilesheets are actually called.

The second one is that you have tilesheet file path climbing. That means that your map is looking in the wrong folder for tilesheets. To fix that, right-click on your .tmx file and open it with your text editor (Notepad++ or whatever you're using - if you're using Notepad, stop using that and download something better). Find a line that looks like this <image source="../../Tilesheets/spring_outdoorsbrew.PNG" /> and change it so the image source part looks like this source="spring_outdoorsbrew.PNG". Then search the file for any other source= lines and do the same thing.

lucid iron
#

example of rule that makes fruity roe in a cask

#

something funny i found is that if it elapse time normally then u can collect it

#

but if its completed by fairy dust, it continues to wobble

swift needle
#

How to change 2nd year products on shop to be available immediatly like rice shoot?

lucid iron
#

you need to target "Condition": "YEAR 2", and change it to "Condition": null

swift needle
#

Like this?

"Entries" : {
"Rice Shoot" : {
"Id": "273",
"ItemId":"273,
"Condition": null
}
}
lucid iron
#

no you need targetfield

#
// debug shop SeedShop
"Action": "EditData",
  "Target": "Data/Shops",
  "TargetField": [
    "SeedShop",
    "Items",
    "(O)466"
  ],
  "Entries": {
    "Condition": null
  }
},
#

there's also case where the condition is compound

swift needle
#

What is format: 2.0.0?

lucid iron
#

"SEASON spring, YEAR 2"

lucid iron
lucid iron
swift needle
#

adding null will remove the existing requirements on the vanilla right? or should i do the "SEASON spring"?

hallow prism
#

it happened, somehow, that a branch or two were shaken...#$b#Or a tree climbed.
Are the verbs right here?

lucid iron
spiral lion
swift needle
#

but it will remove the 2+ year requirement right?

lucid iron
#

yes, because `YEAR 2" is the "year 2 requirement" part

swift needle
#

Thanks!

gritty hazel
#

just looked at the decomp, and the price multiplier for fisher and angler is actually a property of the SmokedFIsh PreserveType rather than the smoked fish object
so
adding "PreserveType": "SmokedFish", to my contentpack just works

#

or does that break anything else?

gritty hazel
#

so uh
how do i find out my nexus update key before uploading my mod to nexus?

#

or should my version 1.0 just be updatekeyless

ivory plume
#

As soon as you save the mod details when creating the new mod page (before you actually upload the mod file), your new mod ID will appear in the URL.

proud wyvern
#

yup. just do the first step of mod page creation

#

it won't publish anything yet, but you'll get an ID

gritty hazel
#

oh, i see!

brittle pasture
#

though I'm not 100% sure, preserve type is a weird thing that generally shouldn't be set on things that are not actually that preserve type

brittle pasture
#

that's why I recommended Kai against making input/output cask rules and to put it in the preserves jar instead

flat sluice
#

Hi!
I'd like to ask - if I want to have some "dialogue checker", which will check if the player has seen the dialogue (and then do something about the fact the player did), I can do it using actions (https://stardewvalleywiki.com/Modding:Trigger_actions#Built-in_actions).
If I am right, I should use either text#$action AddConversationTopic XXX 1 (or, maybe, text#$t XXX 1, if it is better), or text#$action AddMail current XXX received.
Which would you recommend using? And why? Note that I want it to be as universal as possible (so, for example, the one that would work in the /message event command/dialogue % with i18n translations) and also maybe as simple as possible, but that's not necessary.

Stardew Valley Wiki

← Index

rancid musk
#

I kind of want to detect Tidy Crafting and show a warning to users that it causes problems.

flat sluice
brittle pasture
gritty hazel
#

if your mod's name is "Remove Crafting"
and your description "Removes crafting from the game."

pale pecan
#

Hey there! I've just got a quick question about attaching custom data fields to basegame villagers (sorry if this is interrupting other discussions!!). The wiki's got documentation for CustomFields as something that exists but it's rather sparse; just wondering if anyone has any experience?

#

I'm working on a mod that gives a fluctuating mood value to NPCs based on luck, weather, and season that influences their schedule and dialogue; to assist in this, I want to add fields for likesRain (true or false) and tempPref (temperature preference - warm means happier during summer, cold during winter etc.)

brittle pasture
#

it's just a dictionary of strings to strings, you can set it like any other dicts in a content mod

#

and in your C# mod read if from the NPC data

royal stump
#

^ CP or C# mods can add arbitrary data to it like this in the Data/Characters asset, and then a C# mod should be able to see and use that
(edit: CP packs would use your mod's ID, not theirs)

//...
"CustomFields": {
  "YourModID_LikesRain": "true"
}```
pale pecan
#

Oh awesome tysm both of you!

pale pecan
scarlet ether
#

Hey, does anyone know what tilesheet the experience bar from UI Info Suite 2 is pulling from? It looks super clunky with my modded UI and I'm trying to find the origin to fix it so it doesn't look so ugly. D:

lucid iron
#

Can you show which bar you mean

scarlet ether
brittle pasture
#

it's probably somewhere in the UI tilesheets, meaning changing it will also change every other UI elements that use it

scarlet ether
#

It kind of looks like it's from MenuTiles, but I'm not sure. :/ S'why I asked.

lucid iron
#

Fascinating ui interface mod you got there DokkanStare

scarlet ether
#

Personal mashup of CleanUI and Meow Interface. :3

lucid iron
#

Assuming it is menu tiles it'd be annoying to change yes

ornate trellis
#

must be some pieces from the menu tiles i dont remember coloring anything remotely similar back when i did my own UI mod hmm

#

could always directly ask Abs0rbed what was used

scarlet ether
#

Looking at the tilesheets, pretty sure it's MenuTiles after all.

#

/sadge

#

Guess I'll switch back to xp bars later.

#

Thx

ornate trellis
#

the icon itself tho btw is on cursors

pale pecan
#

Hi again! Another quick question if that's alright; right now in my C# mod I'm accessing the daily luck value with Game1.player.team.sharedDailyLuck.Value, because as far as I'm aware this is the value that's going to be the most multiplayer-friendly? Since I know player.DailyLuck also exists but I'm not certain the difference. Does anyone know if this is the most reliable way to access that value that works on both singleplayer and multiplayer?

brittle pasture
#

from the code:
public double DailyLuck => Math.Min(Math.Max(this.team.sharedDailyLuck.Value + (double)(this.hasSpecialCharm ? 0.025f : 0f), -0.20000000298023224), 0.20000000298023224);

#

it's mainly to take the special charm into account

#

I'd assume you want player.DailyLuck most of the time

#

unless you're working in a context where you don't have/don't want to use a farmer

pale pecan
#

Gotcha! Hmm, I think I'll go with sharedDailyLuck.Value then. (Was taking a moment to debate whether I wanted the special charm to have a global "everyone has a slightly better mood on average" effect bc that'd be the main consequence of the decision here; I might change my mind later based on vibes lol)

#

Tysm again!

pine elbow
#

Hello! Does anyone know which Stardew Valley dll class has the place where the game's fishing mini game is?

calm nebula
#

BobberBar

#

(in menus)

light jasper
calm nebula
#

(please don't link to that)

#

(also that's the fishing minigame in the stardew valley fair, I listed the actual class name for the normal fishing minigame.)

light jasper
lucid iron
#

Why is this still up

calm nebula
#

!decompile if you want to look at the game code

ocean sailBOT
dreamy arrow
pine elbow
#

I know there is a mod for the skip fish mini game, but it makes the person always catch the fish, and I found the code too complex to understand... I thought that maybe via harmony it would be possible to skip the mini game and create a random variable that the person could or could not catch the fish, instead of the mini game.

light jasper
#

Essentially you’d just replace the call to the fishing minigame start with the call to the function that runs when you finish the minigame

#

That’s simplifying it a bit obv but the concept is the same

pine elbow
#

Do you know in which class this call occurs?

dreamy arrow
#

It's in StardewValley.Tools.FishingRod.startMinigameEndFunction

#

You would want to skip beginReelingEvent.Fire(); and set hit=true. I think that should do it.

pine elbow
#

In this case, would it be better to remove this line?
beginReelingEvent.Fire();

and change it to this one?
hit=true

light jasper
#

@pine elbow it depends how you want to go about it. The place where you actually get the fish is in pullFishFromWater, which is where you'll likely add your chance modifier

if ((double) this.distanceFromCatching > 0.8999999761581421 && currentTool != null)
          {
            currentTool.pullFishFromWater(this.whichFish, this.fishSize, this.fishQuality, (int) this.difficulty, this.treasureCaught, this.perfect, this.fromFishPond, this.setFlagOnCatch, this.bossFish, numCaught);
          }
#
public void pullFishFromWater(
      string fishId,
      int fishSize,
      int fishQuality,
      int fishDifficulty,
      bool treasureCaught,
      bool wasPerfect,
      bool fromFishPond,
      string setFlagOnCatch,
      bool isBossFish,
      int numCaught)
    {

/** Add your chance to return here **/
      this.pullFishFromWaterEvent.Fire((NetEventBinary.ArgWriter) (writer =>
      {
        writer.Write(fishId);
        writer.Write(fishSize);
        writer.Write(fishQuality);
        writer.Write(fishDifficulty);
        writer.Write(treasureCaught);
        writer.Write(wasPerfect);
        writer.Write(fromFishPond);
        writer.Write(setFlagOnCatch ?? string.Empty);
        writer.Write(isBossFish);
        writer.Write(numCaught);
      }));
    }
#

If your goal is to make a mod that integrates with Skip Fish Minigame, that's likely all you have to do, since it seems like the mods still call pullFishFromWater (at least from the glance I took at the source). If you want your own mod that skips the fish minigame AND does a chance to catch, you can just latch on to a MenuChangedEvent, check if it's the BobberBar menu, and skip it with a call to pullFishFromWater and close the menu

#

@pine elbow

#

if you want to integrate with skip fishing mods you'd need harmony to patch pullFishFromWater, but if you want your own custom mod you could do the chance to catch right in your event handler without any harmony patching

brittle pasture
#

(side note, but hmm I wonder why the pile of reflection code; every field they want to get in BobberBar is public)

calm nebula
#

(A lot of things were made public in 1.6)

light jasper
#

iirc a bunch of fields changed in 1.6.9 or similar that weren’t public before. I had some reflection break because I was checking for NonPublic

pine elbow
#

I got confused with so many examples lol

scarlet ether
#

I'll just turn that feature off for now.

light jasper
scarlet ether
#

Uh, hold on; Let me check. But probably not, since I use Dialog Box Redesigned.

light jasper
#

Huh didn’t know that was a thing. I can also add a check to use a normal texture box draw if the mod exists

scarlet ether
#

Nope, dialog boxes don't seem to look like that.

pine elbow
#

Hi, does anyone know if there is any property of the map that allows Robin to build buildings, besides this "CanBuildHere":"T"
Because this option allows you to build buildings in the city, for example, but it doesn't allow you to build a normal house, only the house on the farm appears. Is there a way to be able to build a house in the city?

scarlet ether
#

Up to you. I appreciate that you're even considering it, since this is most likely something people other than me won't encounter. ¯_(ツ)_/¯

gentle rose
latent mauve
#

Yeah, AFAIK actual farmhouses can't be added as new Buildings, but you can probably mimic one with a custom Shed?

brittle pasture
#

yeah you can define a new Shed-like building in Data/Buildings to be your "House" in the city

gentle rose
#

a cabin might be the even better way though

#

since it literally behaves like a farmhouse

#

(assuming you can build that in non-farm maps)

pine elbow
#

But the idea was to play co-op with someone living in the city.

uncut viper
#

you cant make a cabin without open cabin slots though

gentle rose
#

if the idea is to play co-op then a cabin is 100% the correct option afaik? because they will most likely need one anyway

uncut viper
#

you also cant reassign which cabin is yours though, so all the cabin events would still be on the one in the farm

#

which might be acceptable

brittle pasture
#

Would that mod that allows moving buildings across maps work

uncut viper
#

i think that would depend on how that mod moved them

#

i didnt know that mod existed so

#

shrugs

#

Cabins do just have an AssignFarmhand(Farmer) function though and it might be as simple as just. calling that. but. it may also have some fucked up consequences if someone has two cabins

gentle rose
#

I assume so, yeah. Though I’m not sure how ownership is set for things like the island farmhouse so it may be okay?

uncut viper
#

i dont believe islandfarmhouse has an owner

#

its just a place

#

yeah IslandFarmHouse is just a DecoratableLocation not an actual FarmHouse

pine elbow
#

So in this case would it be better for me to build a new house in the city?

uncut viper
#

without writing a custom C# mod to make things happen yourself i believe the best you could do would be to start a new game, cheat in resources to immediately build a cabin in the city for your friend, and build another cabin that remains empty for yourself, and just pretend that cabin is your farmhouse

calm nebula
#

late to the convo but pathos looked at allowing cabins off the main farm but apparently there were Many Issues with that

#

so, yeah, best of luck SDVpufferthumbsup

pine elbow
#

It was actually just a generic idea to build a mod for those who like to play.
But when I heard you talking about the house on the island, I understood that it could actually be a house without an owner, since the idea would be to have a house to sleep in without having to run to the farm, if necessary.

calm nebula
#

the islandfarmhouse is just another decorablelocation

uncut viper
#

you can make a location that looks like a house just fine

calm nebula
#

you could do that fine

uncut viper
#

it just wont function as a FarmHouse

#

there will be no spouses living there and no farmhouse events and you wont go there when you pass out by default

#

you'd still have to visit the actual Farm to unlock the stuff that happens there

pine elbow
#

I think it would be interesting if it was the same as in Harvestmoon, building the house on an empty lot in the city.

dreamy arrow
#

I don't know about adding cabins off the farm but it's now possible to set the map properties AllowBeds T and AllowMiniFridges T plus add a tile in buildings layer with custom property Action kitchen and a back layer tile with WaterSource T for the sink. It won't technically be a FarmHouse but you can still live in it. You can also set map proprties PassOutSafe , IsFarm and CanCaskHere to round things out.

spiral lion
#

Hello!
I am trying to make a mod where i need to replace the town map. For this i have made custom tilesheets for the different seasons. But the problem is that i dont know how to get them to change seasonen. I tried, but it does not work (spring tiles in all seasons). Does anyone know how to fix it?

https://smapi.io/log/62bb12a8a8204a6bb69750cc4cd68427

{ "Format": "2.5.0",

"DynamicTokens": [
{ "Name": "World", "Value": "Vanilla", "When": {} },
{ "Name": "World", "Value": "SVE", "When": { "HasMod|contains=FlashShifter.StardewValleyExpandedCP": true } }
],

"Changes": [
//Loads tilesheets
{
"Action": "Load",
"Priority": "Low",
"Target": "outdoorsbrew",
"FromFile": "Assets/Tilesheets/{{Season}}_outdoorsbrew.png",
},

//Seasonal edits
{
  "Action": "EditImage",
  "Patchmode": "Overlay",
  "Target": "Assets/Tilesheets/spring_outdoorsbrew.png",
  "FromFile": "Assets/Tilesheets/{{Season}}_outdoorsbrew.png",
},

//Loads SVE maps
{
  "Action": "EditMap",
  "Target": "Maps/Town",
  "When": { "World": "SVE" }, 
  "FromFile": "Assets/Maps/SVE/BrewTown.tmx",
  "PatchMode": "Replace",
},

],
}

ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Home, with 22 C# mods and 55 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

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.

spiral lion
uncut viper
#

it means please use that link in the governor command for sending json, please do not post giant walls of json in here directly

spiral lion
scarlet ether
#

"Target": "Assets/Tilesheets/spring_outdoorsbrew.png", This should be the tilesheet you want to replace. @spiral lion

#

"Target": "Maps/{{season}}_town",

spiral lion
#

"Target": "Maps/{{season}}_town",
why should i use {{season}}_town? 🙂

scarlet ether
#

If you want seasonal changes, you need to target the {{season}}_town map and replace or overlay with {{season}}_outdoorsbrew.png.

hexed siren
#

I'm working on a custom map/location for a custom NPC and am running into a wall with NPC pathing. I can get the location loaded up just fine, warps are in place, my farmer can go in and out, but the NPC will not move around the map or leave it for his schedule. It seems like the map doesn't have NPC pathfinding? Is there a guide for how to add that? Something I need to set in Tiled or a code? I have "ExcludeFromNpcPathfinding": false,
Schedules work when I start the NPC from an existing location (Forest).
I've seen this question asked in a few places, but can't find an answer to save my life!

latent mauve
#

Secret Woods, Backwoods, and Farm are the common culprits because they are excluded from pathfinding by default.

hot gale
hexed siren
latent mauve
#

The other thing is to make sure that you are sleeping or loading a new save when you make any schedule changes in your code, as the pathfinding logic is set before DayStart

hexed siren
#

Hmmm okay that could be something, I'll try sleeping (I thought I had but with how many times I do patch reload, there's no guarantees, ha!)

latent mauve
#

That would also apply to any location changes that might alter the pathfinding

lucid iron
hoary lake
#

You know that type of friend who regifts things you have given them?
what if we had that?
you give them a disliked gift and you get a bit of dialogue that from the person who actually likes the gift saying "hey X gave me this for my birthday. it was very thoughtful of them" or something similar.

latent mauve
#

You could make those a dialogue string based on a conversation topic, probably

hoary lake
#

now that i think about it.......inter NPC relationship trees would be quite cool in general!

#

you give a present to Pam and Penny is happy also becuase you remembered Pam's birthday.

latent mauve
#

There is at least one mod (Part of the Community, IIRC) that has friendship/relationship interactions based on other NPCs

pale pecan
# hoary lake now that i think about it.......inter NPC relationship trees would be quite cool...

Sort of on a similar note, one of the features I want to include in a future mod is giving NPCs friendship trackers with each other! There's already in-game events for NPCs greeting each other when in proximity so that can be treated like the friendship boosts from talking, and NPCs having an 'inventory' based on gifted items, delivery items, and possibly a set based on the character themselves that gets added randomly over time could allow them to then gift things to other NPCs (or you!) during these interactions. The mod I was talking about earlier in this chat (called Free Will, still very WIP) is supposed to vary schedules dynamically based on different factors and part of it I'm thinking will be NPCs being able to choose to visit each other rather than the scripted hang-outs currently present. That could be more likely with higher friendship between two characters.

(This will be a minor headache to logistic around but I'm having fun working at it lol)

ivory plume
#

@teal bridge I reimplemented the new Data Layers API to allow future versioning and add the update-rate config, and added docs for mod authors. Any objections to the new API form for your usage, before I merge it?

lucid iron
#

are the built-in layers left as they are or also use same setup as mod provided?

ivory plume
#

They're mostly left as is; mod-provided layers get added to the same internal system with a wrapper ModLayer.

dusk mulch
#

Whenever the character speaks they say the raw text instead of the token, I am not sure why.

Tue: "{{i18n:Tue.{{Random: {{Range: 1,3}} }} }}",

cunning kiln
#

A coupe of random questions. First, is there any reason why you couldn't edit one of the maps in the mines? (I couldn't see anything that would prevent it, but I can't think of any mods that edit the mine levels and it's hard to believe no one has done it before unless there is some reason why you couldn't.)

ivory plume
# dusk mulch

Tokens can only used in a Content Patcher patch; so if you're using "Action": "Load" to load a data asset directly from a file, that file can't contain tokens since the file's contents aren't a patch.

cunning kiln
#

And, second, if you can edit mine levels, where are the levels between 61 and 120? They aren't in the unpacked maps folder.

dusk mulch
lucid iron
#

is there any reason why you couldn't edit one of the maps in the mines
the mine layouts can be edited somewhat, but they don't match floor (its random)

ivory plume
dusk mulch
#

Cool, ty!

uncut viper
lucid iron
#

atm the mods with combat focus go for adding their own dungeony area instead

#

like Sword and Sorcery

dusk mulch
#

Can I use the same blank file for 2 different patches or do I need a seperate blank file if I am using it for another patch?

uncut viper
#

you CAN edit the maps so long as you are fine with the limitations, i have for one of my mods

cunning kiln
#

I was going to try to edit level 68 so that the tunnel in the middle of the map goes somewhere, but it sounds like that is a no-go 😩 Thanks for the help!

lucid iron
#

you could do that edit and it'd apply to every floor with that layout

#

if thats fine with you then go for it PecoWant

lucid iron
#

i thought layout is random though

uncut viper
#

as far as i know there are no unique layouts besides like, chest floors and lake floors and 120

lucid iron
#

dont always get that one layout on f68

cunning kiln
#

I get a very consistent layout when I go through the mines. Every once in a while (maybe every 100 levels) I'll get something different than expected, but in the main mines, most of the levels seems consistent.

ivory plume
cunning kiln
#

Definitely not ready for C#!

uncut viper
#

looking at the code for the mineshaft, floor 68 is not guaranteed to be unique once you've reached floor 120

lucid iron
#

hm so in MineShaft.loadLevel theres a constant path for before reached 120, and a bit more random gated after if (lowestLevelReached >= 120 && num != 10 && num % 5 != 0 && mineLevel > 1 && mineLevel != 77377)

#

i think this shuffles in those funny new 1.6 layouts

dusk mulch
#

If I have a dialogue set up for a certain day of the week, but its raining, does the rain override the day of the week?

pale pecan
#

I think rain schedules override day-of-week schedules but not calendar-day schedules?

lucid iron
#

is this the layout you are thinking of

cunning kiln
#

If I edit the appropriate layout, that should take effect, regardless of the specific level the layout is used for, correct?

cunning kiln
# lucid iron is this the layout you are thinking of

I'm actually looking at the layouts now and am struggling to find it. I'm wondering if the tunnel is a tilesheet that only applies to the cold levels and doesn't actually have an equivalent in the other tilesheets.

lucid iron
#

with frost tiles showing the nowhere tunnel

uncut viper
#

it will take effect on every level it is used on, whether its floor 38 or 68 or floor 792 of the skull cavern

lucid iron
#

hmmm

cunning kiln
#

There's actually a different level with a tunnel (I'm starting up the game now to get a screenshot.)

lucid iron
#

another issue with editing this cave is that you cant extend map left and up

cunning kiln
#

My goal with editing would be to put in a warp point to a new cave map.

calm nebula
#

Levels 1-40 are the standard ones

#

41-60 are the alt (rare) ones

uncut viper
#

leaving the mines will likely cause issues, too, as they will reset when the player leaves after 10min

lucid iron
#

need mod that busts down this wall tbh

#

the spiral of doom

uncut viper
#

im not even totally sure you'd be able to add a warp back to a specific mineshaft floor with just CP?

#

you also wouldnt know which floor to warp back to anyway, bc it'd happen on every floor that layout is used

cunning kiln
lucid iron
#

this was a whole thing ichor had to deal with for portable hole

cunning kiln
#

This is why I'm asking the questions before I deal with tiled (I only embark on the challenge that is tiled if I know everything can work.)

lucid iron
#

all these things combine to explain y no one likes touching mines

calm nebula
#

Please

#

I don't care it makes no sense

lucid iron
#

hmm ok so

uncut viper
#

if it is possible to warp back to a specific mine level if you just know the generated location name for it, then it is technically feasible with BETAS, but it really hinges on that being possible and the mines resetting not affecting it

lucid iron
#
  1. edit all the standard map to put in dug up states
  2. do C# TAS to show the "diggable" wall
  3. yeet the TAS when player is near
#

no tools involved shovel scary

uncut viper
#

wouldnt it be easier to just remove the tiles on the Buildings/front layers

lucid iron
#

yea but i want the wall to crumble dramatically

uncut viper
#

replace them with animated crumbling tiles

lucid iron
#

ig it can be both though

versed lintel
#

Hello, I am trying to fix my custom NPC that I made, It worked fine before but ive been trying to make it compatible with 1.6 and the npc spawns in the map and the events work, but you cant interact with any dialogue and she doesn't move I attached the content.json any help is appreciated!

lucid iron
#

front diggable tiles

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.

lucid iron
#

big TAS to hid us removing tiles

cunning kiln
#

Here's the level I was thinking of, BTW.

lucid iron
#

which number is this

cunning kiln
#

I guess I could sneak in a little room in one of the black areas.

#

Let me go through the maps again now that I have something to compare to.

#

It's map 28

#

(or level 28?)

lucid iron
cunning kiln
#

(It looks very different with the earth tilesheet.)

lucid iron
#

yea if u look closely at the ice tile sheet

cunning kiln
#

But I guess there is still a tunnel there.

lucid iron
#

the minecart tracks r removed

#

i think its fine to do edit as long as u dont leave this actual map

#

or if u do, dont plan on coming back

cunning kiln
#

That's another possibility -- if you go through the tunnel, there's no way back.

calm nebula
#

(The vmv way)

cunning kiln
#

(Which might be easier than trying to figure out how to use different tilesheets on the same map. How does it know which tilesheet to open?)

uncut viper
#

it swaps out the tilesheet based on floor number

lucid iron
#

in tiled u can swap the sheet

#

right click edit tileset, and Edit the image path

cunning kiln
#

So if I put a warp point in the map, I don't need to worry about the tilesheet -- that will auto-select? (I say this like ever done a warp point before, but I'm hoping it's relatively straightforward.)

lucid iron
#

?

dusk mulch
#

When I play the event the dialogue says there is no translation when I put in the i18n.

lucid iron
#

a warp is a map prop not a tile prop

#

ig u can use touch warp but idk if mines inherit the prop from their tilesheet, maybe?

cunning kiln
#

My ignorance is definitely showing! So I don't need tiled at all? I could just add a warp point with CP?

lucid iron
#

you could yes

#

i have no idea how content update works out in mines though

cunning kiln
#

Huh. But if I wanted to add some sort of warning sign, that would definitely require tiled.

lucid iron
#

prob fine if u add it unconditionally

#

you can add whole tiles to map with cp

#

just not new tilesheets

cunning kiln
#

I think I'm going to have to play around with this a bit, but it's exciting to know it's possible! Thank you for your help!

lucid iron
#

but yea what is fine for normal maps may be weird in mines

cunning kiln
#

(And that was just for four tiles!)

dusk mulch
#

What is the event command for making a character or the farmer jump? Like on the 1st winter where the shadow guy jumps then runs away

faint ingot
#

'jump'

dusk mulch
#

Seems a bit... straight forward... thank you!

#

Isnt the <random> value in the <weather>_Day_<random> dialogue key just the same as the i18n random key?

latent mauve
#
      "LogName": "Dialogue",
      "Action": "Load",
      "Target": "Data/Characters/Dialogue",
      "FromFile": "assets/dialogue/Dialogue.json"
    },```

You use `Data/Characters/Dialogue`, when it should be `Characters/Dialogue/NPCName`
#

(also please note that you'll get a faster response in the future if you use the JSON Parser like Button suggested, folks don't always want to have to download the JSON files directly)

#

"EditData" requires that Data be capitalized, you can't use "Editdata"

dusk mulch
latent mauve
#

Not entirely sure what you're asking, Person, but I do know that it behaves the same as Rainy_Night under it, where you need to have multiple dialogues for the random to pull from.

#

So having keys with:

  • Rainy_Day_0
  • Rainy_Day_1
  • Rainy_Day_2
  • Rainy_Day_3
  • Rainy_Day_4

should automatically make the game choose one of the 4 when it's Rainy and Day.

scarlet saddle
#

Hey, is there anywhere to request mod ideas? I have an idea for something that doesn't seem to exist (that I know of) but I'm fairly certain it requires programming I don't know.

latent mauve
#

!modideas

ocean sailBOT
#

If you have a mod idea that you aren't planning to make yourself, you can put it in the mod ideas github: https://github.com/StardewModders/mod-ideas

However, this does not mean anyone is guaranteed to work on your idea—modders who are looking for ideas sometimes go through and work on what they find interesting off this list. If you want to pay someone to make your mod idea, there are a few people who do commissions (mostly art, sometimes code); you can ask around, search usernames for the word comms, or see !commissions.

scarlet saddle
#

ty

latent mauve
#

The wiki's a little confusing about it, but yeah, the game should automatically pick one at random from the dialogue keys as long as the <random> section of the key is actually a number between 0 and 4.

dusk mulch
#

Can I use that in i18n then also use the i18n randomization token with it?

latent mauve
#

If you wanted more than 4, you could maybe do that for the numbered entries?

dusk mulch
#

Fair enough

latent mauve
#

But I think having 0-4 entries would effectively have the same result as using a i18n random for a single Rainy_Night entry

brittle ledge
lucid iron
#

tiled is fine as long as u do these 2398232 magic spells before you try anything

scarlet saddle
#

Yay posted the idea, now I just wait to see if someone likes it enough to take it xD Also now that I know this github exists I can keep an eye on it for things I can do \o/

lucid iron
#

im not sure what is the usecase for this

#

though i can tell you is C#

brave fable
#

tiled is peaceful and friendly and i won't stand for this map editor slander

urban patrol
#

https://smapi.io/log/195d1a50a529441b8ac2f72cb13571d3 is anyone able to parse this error message? i was having an issue where my custom NPC was doing his schedule and his animations, but wasn't saying the correct dialogue during it. i thought that maybe the issue was me calling \"Strings\\schedules\\Character.000\" in the schedule instead of in the animation json, but now it appears to be even worse and i'm getting the above error looping until i pause the game

ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Pro, with 4 C# mods and 1 content packs.

urban patrol
#

i can send my schedule and strings and animation files, if needed

brittle ledge
#

Please do and also just to be sure, you have loaded a blank file for your schedule strings, yes?

latent mauve
#

I feel like the <weather> dialogue key itself is only used in marriage dialogue.

#

Discord removed the message I replied to as I was replying to it, so I'm not entirely sure if that went through xD

brave fable
#

isn't rain used for anyone though?

brittle ledge
#

yes but it's not a key iirc

rigid oriole
#

If i'm using the content patcher ConfigSchema field and I want a config option that allows "any positive integer" is there a way I can constrain to only those values?

brave fable
#

what does penny use for the "the rain comes down loud on the roof of the trailer. it's soothing" line

latent mauve
#

The rainy dialogue is its own JSON (Characters/Dialogue/rainy)

brave fable
#

ah i see.

brave fable
#

i should really get around to implementing dialogue so i can actually answer these questions SDVdemetriums

urban patrol
#

okay i'm not actually sure if i am.

"LogName": "Blank JSON load",
"Action": "Load",
"Target": "Characters/Dialogue/CharlesRowland, Characters/schedules/CharlesRowland, Strings/schedules/CharlesRowland",
"FromFile": "assets/blank.json"

to me this looks like i'm doing a blank load for the dialogue.json, the schedule.json, and the strings, but maybe not the animations? i can't tell

latent mauve
#

Strings\schedules\CharlesRowland:Saloon.001 doesn't exist

#

According to your Strings file

brittle ledge
#

Animations doesn't need one, it's just an edit iirc

#

Strings are per NPC which is why you need one there, but animations are all together

urban patrol
latent mauve
#

Your Rain and Friday schedules (which I think your Day formats may also be wrong, unless there's something undocumented on the wiki) call a nonexistent string, Saloon.000 exists but Saloon.001 doesn't

urban patrol
#

ohhhh 001

#

that should be 000, let me fix that

latent mauve
#

Schedule keys for Days are usually in three-letter format, so Tue, Wed, Fri, Sat, etc.

urban patrol
#

man i would never have figured that out lol, especially since i haven't even gotten to the point of testing those days' schedules out yet lol. thank you, i'll see if that was the issue

latent mauve
#

The wiki page for [[Modding:Schedule_data]] is super useful for fixing keys. 🙂

urban patrol
#

and to test an NPC's schedule after any changes, i need to load a new save or sleep, correct?

latent mauve
#

Correct!

urban patrol
#

hmmm, it's still throwing the same endless wall of red text

latent mauve
#

did you reload your patch?

dusk mulch
#

The i18n keeps saying the dialogue has no translation when it does.

{
                "Action": "EditData",
                "Target": "Characters/Dialogue/rainy",
                "Entries": {
                    "{{ModId}}_Tantelot": "{{i18n: Rainy}}"
                }
},```
urban patrol
#

yep, closed the game and everything

#

should i move calling the strings out of the animation file and back to the schedule file, the way i had it before?

brittle ledge
#

Can you have a space between i18n: and Rainy?

rigid oriole
dusk mulch
dusk mulch
rigid oriole
#

there's def a console command to reload i18n values

dusk mulch
rigid oriole
#

do other i18n keys work

dusk mulch
#

Yes

rigid oriole
#

and did you save your files

dusk mulch
#

Yes

rigid oriole
#

drop your folder structure?

#

this is odd

#

i guess your structure is fine if other keys work

dusk mulch
#

Stardew/Mods/MyMod/i18n
|
/assets/Manager

hard fern
#

(what does that mean)

dusk mulch
#

the file structure?

latent mauve
#

Is there a reason you're not using the i18n default feature instead of (no translation:Rainy) ?

dusk mulch
#

What?

latent mauve
#

{{i18n:some-key |default=default text to display}}

uncut viper
#

i have never used that personally

dusk mulch
#

Oh, I didnt know that was a thing

rigid oriole
#

It would solve the issue but not the root of the issue right

latent mauve
#

I used it in the apartments mod

dusk mulch
rigid oriole
#

then your i18n is not getting loaded by the game?

hard fern
#

hm

dusk mulch
#

But the other keys work

#

So it is

brittle ledge
#

did you post the json of your i18n?

dusk mulch
#

I will post it now

rigid oriole
#

there's a partial SS above

brave fable
#

partial screenshots aren't a lot of help

uncut viper
dusk mulch
#

(since its a i18n, ignore the errors)

rigid oriole
#

and the name of the file is?

dusk mulch
#

Default.json

latent mauve
#

(there is an i18n preset in the dropdown for the validator, for future reference)

rigid oriole
#

i always default.json

hard fern
#

Who knows 🤔

#

Well we'll find out soon enough

latent mauve
#

Worth a try to lowercase it, it may cause issues with Linux/Unix down the road otherwise.

rigid oriole
#

if the other keys work it's odd for this one not to work

brittle ledge
#

(always assume case sensitivity!)

rigid oriole
#

which makes me think a file got edited and just isn't being loaded properly into the game

uncut viper
#

it shouldnt matter

urban patrol
latent mauve
#

Yeah, it wouldn't be breaking it for that one key specifically.

uncut viper
urban patrol
#

sure

dusk mulch
#

Nothing.

#

Just checked, other keys still work

ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Pro, with 4 C# mods and 1 content packs.

rigid oriole
#

and you promise you either did a patch_reload + reload_i18n or fully relaunched the game?

dusk mulch
hard fern
#

Is there a possibility you've been editing the wrong file this whole time?

#

I've done that before

rigid oriole
#

omg i've done that

#

i'll edit my git repo folder but not my deployed mod 😭

hard fern
#

And only realized that i hadn't replaced the version in my testing setup with the one i had been working on

dusk mulch
#

I only have 1 i18n file in this mod and 1 file for the dialogue

rigid oriole
#

yes but do you copy/paste over to your Mods folder to test is what i think Shrimply is saying

uncut viper
# urban patrol https://smapi.io/log/8a604196a4ac40b69164aa38fdaee9a5

well... unfortunately i dont know enough about schedules or animations to be much help, but the only place i can see this error happening in that function is when its doing stuff with the schedule animation, trying to access stuff in routeAnimationMetadata, which is fields 5+ in the AnimationDescription

hard fern
#

Yeah, idk if you're working directly in the mods folder or if you work elsewhere then move the mod in

dusk mulch
#

Hold on!

#

I exported the patch I am editing and it is getting registered in the export

uncut viper
#

(or 4+ maybe idk. one of the two)

urban patrol
uncut viper
#

routeAnimationMetadata is only checked if there are more than 4 fields in your AnimationDescription though which is why i thought removing the trailing slashes would help. can you post an updated json for your animations?

dusk mulch
#

Wait, there is a 50% that the game uses the rainy dialogue so since I dont have another dialogue set for the conditions today

urban patrol
#

hang on soccer is missing a comma

#

and a "

uncut viper
#

soccer isnt just missing a comma, you're escaping the final quote when you shouldnt be

#

or yeah, that i mean

#

do you need quotes there at all around the message key?

urban patrol
latent mauve
uncut viper
#

also, does this error happen every single day regardless of which schedule should be loading, or does it only happen with one specific schedule?

urban patrol
uncut viper
#

that would be bagoftricks then

#

might be good to try switching ot to winter or fall or something to see if it occurs with the other animations at 630

#

(after sleeping a day or two ofc)

urban patrol
#

i'll try that! also, taking out the quotes surrounding the strings\schedules etc had no effect, same error message

uncut viper
#

i wouldnt have expected them to fix it, but it makes it easier to worry less about slashes without them

urban patrol
#

is there documentation on message keys, that you know of? i'm thinking at this point i might as well put the strings/schedules back into the schedule.json and deal with the devil i know rather than this game-breaking message key crap lol

uncut viper
#

its just a translation key

#

as far as i can tell theres nothing enforcing it needing to be in Strings/Schedules

latent mauve
#

I definitely didn't bother with putting my animation dialogue inside the descriptions, mine are in Strings/schedules because I got tired of fighting with it, but the base game does have some in the strings/animationDescriptions file.

urban patrol
#

trying to make sure i understa what everything does. so instead of calling Strings\\schedules\\CharlesRowland:Batswing.000 in my charles_animations.json, which edits Data/animationDescriptions, should i call it in my schedule.json, which edits Characters/schedules/CharlesRowland? or is my charles_animations.json perhaps wrong, and it should be editing strings/animationDescriptions?

#

although i took most if not all of my code from tiakall's lovely templates, so it should be correct if i didn't change it. hmm

uncut viper
#

i dont know anything about schedule strings or if you can do one or the other, all i was saying is that it doesnt matter that the translation key in your animation descriptions is Strings\schedules instead of Strings\anythingelse

#

it doesnt even have to be Strings\ at all

urban patrol
uncut viper
#

oh, wait

#

are you meaning to call frame 267 in bagoftricks lol

latent mauve
#

LOL

urban patrol
#

uhhhh lmao NO

uncut viper
#

i was so focused on where an index could be out of bounds in the specific function in the error i didnt even think about the bounds of the animation itself

urban patrol
#

that's why it's out of index, no wonder

latent mauve
#

well, I think you found the issue, Button

urban patrol
#

wow i bestow upon you eagle eyes award of the year

#

thank you good lord i was losing my mind

uncut viper
#

i wouldnt call em very eagle-y ive been staring at this for like 20min SDVpuffersquee

ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Enterprise, with 20 C# mods and 4 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

urban patrol
#

NO why is it still giving me the same index error 😭

uncut viper
#

havr you closed and reopened the game just to be safe and are you sure you edited the right file/saved it

urban patrol
#

i closed and reopened the game, started a new save, and i only have one copy of my files

uncut viper
#

maybe try adding those // back at the end? iunno

urban patrol
#

hmm okay. and still without the quotes, yes?

uncut viper
#

yeah the quotes can be left out still

dusk mulch
#

Tried restarting the game, nothing. I also added a default to the i18n rainy key

latent mauve
#

I don't know that it would matter, but could the i18n's key name somehow be at fault?

dusk mulch
#

Hm...

#

I will try changing the key name

#

Nothin.

latent mauve
#

hmm

dusk mulch
#

I will try on a new save

urban patrol
#

i'm going to go have dinner and come back to this

latent mauve
#

I'm digging out my edits to the Satoru Gojo NPC mod just for you, nic. LOL

uncut viper
# urban patrol same issue :(

can you send your current json and fresh log again? (just in case theres something different in the trace) (when you get back from dinner ofc!)

dusk mulch
#

Okay!

#

I got the stupid i18n to work on the new save.

#

It may have been because the rain was already there, im not sure

#

But I got it to work!

latent mauve
#

Working example from my Satoru mod update:
From the patch to Characters/schedules/Satoru: "Tue": "700 Town 46 32 2 Training \"Strings\\Characters:Satoru_Forest\"/2000 AdventureGuild 7 16 1",
From the related patch to Strings/Characters:

"Target":"Strings/Characters/",
"Entries": {
  "Satoru_Forest": "Hello, @! I'm just out here training for a bit.$9#Training is my way of preparing for whatever comes my way. Can't afford to be caught off guard.$9"}
}```
dusk mulch
#

Thank you @uncut viper , @latent mauve @light totem and @rigid oriole

light totem
#

I have never sent a message here my entire life

latent mauve
#

They meant @hard fern , apologies for the accidental ping on their behalf, shrimp.

hard fern
#

oop

#

😅 i didnt really do anything but im glad i could help (?)

true coyote
#

*turns off and on sweet gem regrow to work with vanilla tweaks instead*
*suddenly doesnt work anymore*

#

literally just changed the image and mod id that referenced better crops SDVpufferwaaah

brave fable
true coyote
#

is nexus down for uploading files? been trying to update my mod for 20 min now and its still just spinning trying to upload the file

urban patrol
hard fern
#

😭 why'd i put so many windows in this building

calm nebula
#

Sunlight is good for the soul

brave fable
#

i believe you can separate those into lines these days, same as event commands

#

it's a little more readable but still annoying

drowsy pewter
tropic walrus
#

I'm having a weird situation with my dynamic tokens where using addTemporaryActor {{Name}}? in an event causes a shadow to render where the temporary actor should go, when the NPC explicitly does not exist. Is this normal behavior?{ "Name": "Name", "Value": "InternalNPCname", }, { "Name": "Name", "Value": "OTHERInternalNPCname", "When": { "HasMod |contains=SomeMod.Here": true }, },

#

Is addTemporaryActor just not meant to be used with question mark exclusions?

gentle rose
uncut viper
#

why is atra the only one with that privilege

gentle rose
#

you can also drag me out of my dark room when I’m dead, Button

uncut viper
#

thank you!

calm nebula
#

Atra has been lifting weights, that's why

gentle rose
#

wait when did you become Quantum Squint

uncut viper
#

wasnt atra quantum originally

calm nebula
#

I was originally quantum

fleet oyster
#

so... I am wanting to add an item. It is a crop. I am using content patcher,. I'm not sure why but it isn't showing up in list_items when I build it (even though it successfully builds - the mod info updated to the recent mod version number). My content file is looking like:

`{
"Format": "2.5.0",
"Changes": [
{
"Action": "EditData",
"Target": "Data/Objects",
"Entries": {
"{{ModId}}_Wolfbane": {
"Name": "{{ModId}}_Wolfbane", // best practice to match the ID, since it's sometimes used as an alternate ID (e.g. in Data/CraftingRecipes)
"Displayname": "Wolfbane",
"Description": "Seed for Wolfbane to grow.",
"Type": "Seeds",
"Category": -74,
"Price": 1200,

      "Texture": "Mods/{{ModId}}/assets",
      "SpriteIndex": 0
    }
  }
},

// Crop data
{
  "Action": "EditData",
  "Target": "Data/Crops",
  "Entries": {
    "{{ModId}}_Wolfbane": {
      "Seasons": [ "spring", "summer", "fall", "winter" ],
      "DaysInPhase": [ 1, 1, 1, 1, 1 ],
      "HarvestItemId": "{{ModId}}_Wolfbane",

      "Texture": "Mods/{{ModId}}/assets",
      "SpriteIndex": 0
    }
  }
}

]
}`

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.

true coyote
uncut viper
#

what do you mean by "builds" when talking about a content patcher mod

drowsy pewter
fleet oyster
gentle rose
#

I don’t think I was here back when you were quantum

fleet oyster
gentle rose
#

mods are either content patcher or c#, not both?

uncut viper
#

correct, you cannot have two mods in the same single folder like that

#

you dont have to build content patcher mods, they arent built

gentle rose
#

you can have a nested CP pack inside a larger mod that also has a nested C# mod

uncut viper
#

they are just either on their own or packaged alongside your C# mod by the modconfig thingy

hard fern
#

(even if a mod has both C# and content patcher stuff they're still technically separate mods too)

gentle rose
#

but you can’t have a mod “contain” both C# and content patcher

uncut viper
#

once SMAPI finds a manifest.json file, it will not look for any other manifest.json file in that folder or in folders inside that folder

ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Pro, with 4 C# mods and 1 content packs.

urban patrol
#

yep this is a brand new save day 1

#

i tried it with a rainy day from an old save, and i didn't get the same issue

uncut viper
#

since you moved the strings to the schedule instead have you tried removing the last 3 slashes from bagoftricks and just having the frame data

urban patrol
uncut viper
#

(disclaimer i really know not much at all about schedule animations)

urban patrol
#

the wiki says those last three fields are for message key, laying_down, and offset x y

#

so i'm not sure if they're required or what

#

charles_music seems to work, and that's the only laying down animation

true coyote
#

missed an error smapi threw because it loads fast in some spots

uncut viper
#

afaik only the first three fields are required

#

that said if removing the slashes doesnt affect anything then i think ive outlived my usefulness in debugging this issue

urban patrol
#

sadly no change, yeah

#

but thank you for all your help, you definitely pointed out things that were a problem, just not THIS problem, haha

hard fern
#

SDVpuffersweats building 1 interior is as finished as it can be as of now. No exit warps because i havent finished the actual map

dusk mulch
#

Is it possible to make an NPC walk faster?

#

Like with an action or command in the data?

fleet oyster
uncut viper
#

you dont nest them. you put them side by side

#

two different mod folders, within the same parent folder. two different manifests, two different unique IDs

fleet oyster
#

Oh. So like MysticValley/MysticValley and MysticValley/[CP]MysticValley?

uncut viper
#

correct

fleet oyster
#

Structuring mods are so hard and different XD

dusk mulch
tribal ore
#

Getting lost in the weeds for dialogue preference order :/. Does anyone know if fall_Mon or Mon2 would have a higher order of preference?

lucid iron
#

you can use ContentPacks in the csproj

#

to handle bundling in a content pack w/ ur mod

dusk mulch
#

...

tribal ore
#

in an event

fleet oyster
dusk mulch
tribal ore
dusk mulch
#

I mustve messed up the schedule on my NPC a bit, they walked into the saloon then walked through the bar, through gus, through the bedroom and into the void...

dusk mulch
tribal ore
dusk mulch
#

Hm.

tribal ore
#

Well. Half the time. The other half the time they just stick in a doorway

lucid iron
#

this is unrelated to the code

fleet oyster
#

Alr, I think I got it. Nice!

tribal ore
# dusk mulch Hm.

I had this happen I think when I told an NPC to go to a coordinate that wasn't actually walkable (blocked by an object), even though it looked alright

uncut viper
#

fall_Mon should have priority

tribal ore
#

Interesting. I was expecting the opposite

dusk mulch
uncut viper
tribal ore
#

Ok, I was having trouble reading that list before, but I think I understand now

uncut viper
#

it is not possible via CP accessible means to alter an NPCs walk speed

#

just in general

versed wyvern
#

If it's for testing purposes you can get FastForward so you don't spend a million years just waiting for a specific segment

dusk mulch
#

Can you add warps outside of the designated map area in tiled? Like -1 1?

dusk mulch
tribal ore
#

Or set whatever happens at the saloon back later?

dusk mulch
#

Eh, its whatever

tribal ore
#

Yeah, it's a long walk. But I feel your pain!

tiny zealot
#

unfortunately, it simply takes that long for NPCs to walk the length of the forest map

tribal ore
#

I had this problem a lot with Mountain -> Town stuff

versed wyvern
#

Maybe you can add an NPC-only warp? Not sure how that would affect general pathfinding though

tiny zealot
#

you can zero schedule them to start somewhere closer on the day it matters

tribal ore
#

How would that work?

dusk mulch
#

It's whatever, I will just change their schedule to something that works

uncut viper
#

a 0 schedule just starts them at the first location instead of their home point

versed wyvern
#

I heard that zero scheduling can cause NPCs to spawn clones sometimes, is there any truth to that? ThinkO_O

tiny zealot
#

^ put 0 for the first time and they'll spawn there instead of using it as a departure time/destination

tribal ore
#

Very interesting. Tucking that in my bag of tricks in case I ever need it later

prisma heart
#

@teal bridge Hi, sorry if this is the wronge place to ping you but the #1272025932932055121 is a forum now instead of a normal discord channel lol.
I was just curious if it would be possible to add a mode to Star Control where when the player releases the trigger it simply swaps to that item instead of also using it?

#

I went to gift someone during my first day with the mod and accidentally at the melon xD

lucid iron
#

The forum thing is for you to open a thread in with a log, if you have issues Dokkan

#

I don't think this server has dedicated "unsolicited mod author suggestions" besides here sometimes tho

uncut viper
#

usually the nexus comments are enough

hard fern
#

hm maybe this isnt a question easily answered: but im splitting up my default.json and i dunno if i should split it based on character or not

uncut viper
#

it cant be easily answered bc the answer is entirely subjective

#

if it feels right to you or helps you organize, then no reason not to, really

#

just know that if you split up one language you are required to split them all up

hard fern
#

alright, i just wondered if there were some like. unforseen side effects that might pop up

uncut viper
#

there are no functional differences between the usual i18n or subfolder i18n

hard fern
#

SDVpufferthumbsup got it

uncut viper
#

aside from the aforementioned requirement that they must match across all languages

#

once they get past the stage of loading there is no difference

lucid iron
#

Say is there a resolution on which one's default if both default.json and default/*.json exist

uncut viper
#

yes, its default.json

hard fern
#

😅 that would be a problem for any future translators

lucid iron
#

I was contemplating if i ought to change my dotnet template

hard fern
#

however long that might take

uncut viper
#

if you have both non-sunfolder i18n and subfolder i18n in the same mod, the game warns you about it and says it will go with the non-subfolder i18n

#

and tells the user that they should reinstall the mod to fix it

lucid iron
#

But intuitively i feel it should go other way SDVpufferpensive

#

Start with default.json split up when it scope creeps

uncut viper
#

you are correct and Pathos also agreed that it probably wouldve been changed if it had been brought up before that feature released, but it is what it is now

lucid iron
hard fern
#

🤔 this question is in the same vein, but will splitting up parts of my content.json (into includes), does it have a significant impact on load times if i have too many includes?

uncut viper
#

not to a degree you should worry about

hard fern
#

yaay i can split everything up into everything

lucid iron
#

Unless you are like, giving each line a new .json

#

You will be fine

hard fern
#

yeah, since im working with like. a handful of npcs i want to make it easier on myself so im not searching my jsons for "specific npc dialogue number 800"

teal bridge
#

(It's definitely OK to ping with a quick question like that, although folks generally use #modded-stardew for it)

#

That is actually how my own configuration is set up right now, I use a button press to activate the item (primary) and trigger release to select it (secondary).

fleet oyster
#

So how would I get a texture to show up. I got the texture path pointed to in the json. Do I also have to do a load with the edit data to get the texture to appear?

latent mauve
# urban patrol i got this instead

just back from dinner, so I'm looking into this again. But the "string" "gs/sch" and so on looks like it's trying to reference the line and then getting cut off mid-parse.

#

So it's likely something with the animationDescription that is causing the issue

urban patrol
#

and i'm still not sure what's up with my other problem, which is that weird out of index error

latent mauve
#

I have another one that does Strings/schedules/Satoru as well, but I only ended up using those for things like the Desert Festival, not anything with an attached animation

urban patrol
#

interesting okay

latent mauve
#

It shouldn't matter where the string you're referencing is located, as long as it's formatted correctly

tiny zealot
#

since you get to specify which asset to use to find your schedule dialogue, you can put it anywhere you like. my NPC just has hers in her regular dialogue asset

latent mauve
#

And to be absolutely certain-- there's no weird invisible characters or newline characters in the middle of your dialogue string, nic?

urban patrol
#

the music one should be "%Charles' music is too loud to hear you."

latent mauve
#

The fact that it ran "string" as though there was nothing to parse and THEN "gs/<pathnonsense>" is the part that's odd.

urban patrol
#

which i admit i don't entirely understand, but i thought the percent made it a text box instead of dialogue

latent mauve
#

I've seen S T R I N G and so on before, but that's usually because my asset path was wrong in the schedule entry that was trying to load the string (using StringsFromMap instead of StringsFromMaps, for example)

agile terrace
#

Anyone know which event Abby holds the stick in? It's 38, 39, 52, and 53 on her vanilla sheet. They're not new or anything, I just don't remember them from when I last romanced her...

latent mauve
latent mauve
#

Yes

#

Even if it's just one tile over, just to see if it's the \"" somehow causing weirdness

urban patrol
#

gotcha. in every line, or just the rain schedule?

latent mauve
#

Just for the one you want to test for now

urban patrol
#

okay, i'll be running "rain": "0610 DeadBoyAgency 10 7 3/0620 DeadBoyAgency 10 9 2 charles_music \"Strings\\schedules\\CharlesRowland:Music.000\"/0900 ArchaeologyHouse 15 9 0/1330 TragicMicks 11 16 3/1700 Saloon 33 18 0 \"Strings\\schedules\\CharlesRowland:Saloon.000\"/2200 DeadBoyAgency 10 9 2 charles_music \"Strings\\schedules\\CharlesRowland:Music.000\"2300 DeadBoyAgency 10 7 3",

latent mauve
#

Make sure you do a / before 2300

urban patrol
#

oop good catch

#

nope, same result at 0620, he does the animation without a wall of red text but the dialogue is String/gs etc etc

tiny zealot
latent mauve
#

ok

latent mauve
#

Have you tried cutting it off before /900 to trim it down and see if it still acts up with the string?

#

(if that does fix it, we should have a way to call the other schedule points after)

urban patrol
#

i haven't heard that before, no, let me try shortening it

calm nebula
#

!log plz

ocean sailBOT
#

Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.

Please share your SMAPI log file. To do so:

  1. Open this page: smapi.io/log.
  2. Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
  3. After uploading, it will show a green box with a URL to share. Post that URL here.

Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didn’t occur in your last session, please load the game to the point where the issue occurs, then upload the log.

latent mauve
#

who's log are you wanting, atra?

#

nic gave theirs earlier

calm nebula
#

have you loaded a blank file for Strings/Schedules/CharlesRowland ?

dusk mulch
#

Does anyone have a checkerboard pattern for tile index's?

calm nebula
#

it's probably not the case but I notice your capitalization doesn't match

latent mauve
# urban patrol yes

please confirm that it's Strings/schedules/CharlesRowland just for case sensitivity purpsoes

calm nebula
#

Strings\\schedules\\CharlesRowland:Music.000 <-- lowercase

calm nebula
# urban patrol yes

the reason why I ask is because I don't see evidence of that asset being loaded

urban patrol
calm nebula
#

okay, let's change it to a file we know exists

latent mauve
#

Alright, then let's follow atra's guidance right now on confirming the blank load.

urban patrol
calm nebula
#

"0610 DeadBoyAgency 10 7 3/0620 DeadBoyAgency 10 9 2 charles_music \"Strings\\Characters\\NameYourHorse\""

latent mauve
#

Also just to make absolutely sure our bases are covered. Your blank.json is a JSON file with just {} in it, correct?

urban patrol
latent mauve
#

I thought we'd already fixed that, but wanted to put it on record. 😛

urban patrol
#

loading up the name your horse one now

latent mauve
dusk mulch
#

16x16

urban patrol
calm nebula
#

weird

#

oh, wait

#

I screwed that up

latent mauve
# dusk mulch 16x16

generally we just use a program that has a "grid" feature and make our grid 16 pixels by 16 pixels

dusk mulch
#

Oh yeah

#

I have a grid, I forget about that

calm nebula
#
NameYourHorse\""```
#

tjat

vernal crest
#

Aseprite even shows you the index (based on grid I assume)

latent mauve
#

(Furniture Sprite Index tab)

urban patrol
calm nebula
#

okay, so the issue is with your string

#

patch export strings\schedules\CharlesRowland

latent mauve
#

How are you loading your EditData patch for Strings/schedules/CharlesRowland? Is it an include?

urban patrol
urban patrol
latent mauve
#

It's likely that your EditData patch isn't being applied, especially if it spat out the blank

urban patrol
#

too many files aaa

#

okay i think perhaps that might be the issue, i don't see it being included anywhere. i include the character file, the dialogue, the schedule, and the animation

latent mauve
#

That would do it, LOL

urban patrol
#

let me confirm that worked for rain, and then let me see if that ALSO fixed the index out of range error

#

HE SPEAKS okay now to test a non-rainy day

#

wall of red text returns, which makes me think there's absolutely some kind of issue where the other animations don't have correct syntax. the music one is the only laying down one, and the only one that works so far

calm nebula
#

drop the extra slashes

#

"charles_bagoftricks": "26/26 26 26 25 25 26 26 27 27 27 27 26 26 25 25 25 25 25 26/26"

urban patrol
#

i have since then, sorry. let me send the freshest copy

agile terrace
calm nebula
#

notice the vanilla data doesn't have the extra slashes

urban patrol
calm nebula
#

log with the exact error please

urban patrol
#

hang on i just noticed i had copied the animations into my content.json... why did i do that

#

let me reload with that deleted

#

okay yep oh my god now it works MASSIVE FACEPALM

#

thank you so much for your help and your patience with my stupid mistakes

calm nebula
#

glad we got it figured out!

scarlet ether
ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Home, with 18 C# mods and 24 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

latent mauve
#

If you're doing a complete replacement, then you might see void on the map if you are replacing a solid tile with a transparent one that is used on a map's back layer

#

Missed the EditImage before, current message should be correct

scarlet ether
#

Cool, thank you. I'll fix the back layer for the void. Museum still isn't loading though, just showing me the Stardew Foliage Redone version instead of WBPT :/

latent mauve
#

Does Foliage Redone load after WBPT?

#

If so, you may need to set a Priority on the WBPT patch

scarlet ether
#

Wow, I'm dumb. Forgot about Priority. Don't use it that often. D:
WBPT is loading after Foliage Redone, fyi.

tiny zealot
#

if foliage redone is using a priority, then you will have to add one to WBPT, or remove it from foliage redone

latent mauve
#

Might not be a bad idea to check if "Priority":"Late" solves it anyway, for the reasons ichor just mentioned

#

ugggggh, I have to go through and do studies of all the arm/feet positions for my custom sprites now

dusk mulch
#

Well my mod is almost done, after a week and a half of working on it

latent mauve
#

I hate side poses so much

dusk mulch
#

Debugging, Use JSON validator!

#

It was very effective!

#

Wall of red text has fainted!

celest creek
#

Hey! I’m new to modding and I was wondering if anyone had experience with the glow buff mod? I’m trying to make one of the vanilla NPCs glow under certain conditions and was wondering if there was a way to do that

#

this is what I have rn:

{
"Action": "EditImage",
"Target": "Characters/Elliott",
"FromFile": "assets/elliott_{{look}}.png",
//"TargetField": [
//"{{Your_ItemId}}"
//],
"When": {
//conditions for his mer form to appear: sunny, 7+ hearts, 1000-200 AM
"Weather": "sun",
"Hearts:Elliott": "7, 8, 9, 10, 11, 12, 13, 14",
"Time": "{{Range: 2400, 2600}}",
},
"Update": "OnTimeChange",
"Entries": {
"Buffs": [
{
"BuffId": "MindMeltMax.GlowBuff/Glow", //Must be this exact Id to load the correct buff
"Duration": 120, //The duration of the buff in game minutes
"CustomFields": {
//Add the properties for the buff, will be explained in Fields
"Texture": "1",
"Radius": "3",
"Color": "{{red}},{{green}},{{blue}},{{alpha}}",
},
},
],
},
},

scarlet saddle
#

Just a hunch but I think I f'ed up sfgsdhsgfj

celest creek
#

oof okok i was looking over the nexus posting and it was updated 2 weeks ago

#

would there be another way to get an npc to light up?

brittle ledge
brittle ledge
celest creek
#

glowing

#

but yeah

brittle ledge
#

There's a glow framework, maybe that?

celest creek
#

im not familiar with that but ill look into it

#

thank u!

celest creek
brittle ledge
#

ah yeah, either I hallucinated it or I'm just not finding it

#

there's a Light Mod but it's objects only, looks like

celest creek
#

yeah that's what this one looks like too unfortunately

scarlet saddle
#

I put towninterior instead of towninterior_2 lmfao, no wonder

celest creek
#

thank you anyways, i'll try to get the tile to light up instead i think

brittle ledge
#

Is this on a schedule or in an event?

celest creek
#

on a schedule

brittle ledge
#

ah, dang

celest creek
#

ikr aghhh

dusk mulch
#

god i feel like a caretaker, trying to get this NPC's schedule just right

onyx mantle
#

I just spent like an hour scrolling through wiki pages trying to a very simple thing in the game, but I was unsuccessful so I need help here lol

I am working on a very very small change, simply changing the name of a 3 of the items in the "Special Items & Powers" menu

I downloaded a lot of software that the wiki recommended I downloaded, and I thought I changed things succesfully, but I think theres a few steps im missing to fully implement my very few changes

What exactly do I need to do to update the name of items in this menu?

latent mauve
#

You can do this from CP very easily if all you need is the Display Names changed

#
"Target":"Data/Powers",
"Fields": {
"RustyKey": {
"DisplayName": "Sewer Key"
},
"DwarvishTranslationGuide": {
"DisplayName": "Dwarvish Dictionary"
},
} //Close Fields
} //Close Action```
#

something like that, I think?

hard fern
#

😅 wow i hate answering questions on nexus... maybe i should just put together a relatively short mod list so people stop asking what mods im using

latent mauve
#

You can look at Data/Powers to get the internal name of the objects, Odayaka

onyx mantle
#

That seems simple enough

#

I would change the "RustyKey" from your example to the internal name of the ones I want to change, and then change the "DisplayName": "Sewer Key" from your example also to the one I want to change?

#

And where exactly would I type this

#

Sorry I like just started doing things like this for the first time

latent mauve
#

Yep, you'd make a Content Patcher mod for this, so this would go in content.json

onyx mantle
#

What wiki page should I look at for a guide on how to implement the change

latent mauve
#

The "Get Started" section will get you started. 🙂

onyx mantle
#

Thank you!

lucid iron
hard fern
#

you're right i should only ever upload vanilla screenshots

#

on my mod pages

onyx mantle
#

Like the "Fields": { line, would I just leave it unchanged?

#

Currently I have this written in the file that will become the "manifest.json"

#
"Target":"Data/Powers",
"Fields": {
"ForestMagic": {
"DisplayName": "Forest Knowledge"
},
"DarkTalisman": {
"DisplayName": "Funky Key"
},
"MagicInk": {
"DisplayName": "Funky Ink"
},
} //Close Fields
} //Close Action```
#

Do I need to change anything?

#

Or would this change the 3 names of the items

#

The wiki has an example with things very spaced out

#

Do I need to write it like this?

tiny zealot
#

whitespace (spacing, indentation, etc.) doesn't affect how the json works. but it usually makes it easier to read

onyx mantle
#

Ok so if I have my manifest.json file has the text:

"Format": "2.5.0",
"Changes": [
{"Action":"EditData",
"Target":"Data/Powers",
"Fields": {
"ForestMagic": {
"DisplayName": "Forest Knowledge"
},
"DarkTalisman": {
"DisplayName": "Funky Key"
},
"MagicInk": {
"DisplayName": "Funky Ink"
}
}
]
}
}```

Will this be all I need to have written?
#

Or am I missing something / did I do something wrong

hard fern
#

Funky key, lol

onyx mantle
#

Yeee

#

Is an inside joke

lusty elm
#

my brain is going there is something that allowed us to plant crops as a feature as part of writing a map, but i dont remember if it was from a like 1.6 update or a core mod framework, can someone help refresh my brain?

#

so you could like mark a location where crops would naturally grow, so you could make someone have a functional garden or something outside their house

faint ingot
#

my custom NPC doesn't seem to use their sleep frame when going to bed after marriage... do I need to do something different for their sleep frame to apply post-marriage?

hard fern
tiny zealot
#

so if your NPC is called e.g. SDVHead.LawAndOrder_Russell, then the required key would be sdvhead.lawandorder_russell_sleep

faint ingot
#

oh, does it need to be lowercase? That may be it then

tiny zealot
#

it needs to be lowercase

lusty elm
#

it might even be outdated or defunct by now with 1.6 for all i know

hard fern
#

I knew there was a mod that let you plant stuff anywhere, but I dont think it was a map thing, and yeah im not sure if it still works,

onyx mantle
#

Did I simply type something wrong?

faint ingot
onyx mantle
devout otter
lusty elm
#

Part of me is wondering if it was a TMXL/PYTK feature at some point, didnt think i was thinking that far back though

tiny zealot
uncut viper
onyx mantle
#

O

#

Would the text I have written above be all I need to include in the content.json

uncut viper
#

i missed that you said it was in your manifest.json earlier

#

yes. but your manifest.json needs certain stuff in it too

#

use the "For a content pack" one

latent mauve
#

Sorry, I just came back from some late night errands, LOL

#

As you are doing a Content Pack, you should only have a content.json and manifest.json in this case.

#

And this would be in your own Mod folder

onyx mantle
#

mainfest.json:

"Name": "Kill Wizard",
"Author": "Odayaka",
"Version": "1.0.0",
"Description": "Hehehe slight wizard changes.",
"UniqueID": "Odayaka.KillWizard",
"ContentPackFor": {
"UniqueID": "Pathoschild.ContentPatcher"
}
}```
#

I think I did the first like 5 right but the last 4 i do not know how to fill out

latent mauve
#

UpdateKeys is your Nexus Mod ID number or the equivalent of wherever you plan to publish your mod

onyx mantle
#

Im just using it myself

uncut viper
#

if you dont plan on publishing your mod publicly, you can remove the updatekeys line entirely

latent mauve
#

^

onyx mantle
#

O ok

uncut viper
#

version should also technically be 1.0.0, its the version number for your mod, but

#

if its for personal use it doesnt matter

onyx mantle
#

Oh I thought that meant game version

uncut viper
#

you can change it if you want or not, up to you. every other line is correct

latent mauve
#
      "UniqueID": "Pathoschild.ContentPatcher"
    }``` is exactly right how you have it.
lusty elm
#

I may have to give up the growing crops idea, if i cant even figure out what was supposed to be used to do it :p.

latent mauve
#

The "ContentPackFor" is the same for every Content Patcher mod. 🙂

onyx mantle
#

Ok epic I think that should be all I need to do then

#

I shall test it

faint ingot
#

does offset not work with the spouse sleep animation I've tried a few variations of this and none seem to be affecting position that I can tell: "{{russell_sleep}}": "16/16/16///offset 0 64",

lusty elm
#

The only thing i found was spacecore allows you to place fruit trees rooC

#

which helps for the idea i'm thinking of, as i dont require the crops growing in the map, as i can makeshift it with FTM.

inland cedar
#
  "Action": "EditData",
  "Target": "Data/Events/Farm",
  "Entries": {
    "1930900001": "continue/64 17/farmer 64 16 2 Lewis 64 18 0/pause 1500/speak Lewis \"{{i18n:foodstore.event.1930900001.1}}#$b#{{i18n:foodstore.event.1930900001.2}}#$b#{{i18n:foodstore.event.1930900001.3}}#$b#{{i18n:foodstore.event.1930900001.4}}#$b#{{i18n:foodstore.event.1930900001.5}}\"/pause 700/end"
  }
},

how do I add the addItem to this event?

dreamy cedar
#

Quick question - is there an easy way to make the emote shown by NPC.doEmote() show for all players? (I know a few non-easy ways to do it already, just seeing if I'm missing something.)

faint ingot
onyx mantle
#

Thank you guys so much for the help

#

I would not have been able to this at all without your help

lusty elm
#

.choose New/old mod, map, code.

patent lanceBOT
#

Choose result: New/old mod

hot gale
#

Where does this pull information from exactly?

"ObjectDisplayName": "[LocalizedText Strings/Objects:AgedRoe_Flavored_Name %PRESERVED_DISPLAY_NAME]",
tender bloom
#

String/Objects it looks like, plus most likely something set in C# about which type of roe it was

#

Or I guess not C#, one of the known things you can pull?

#

With the %PRESERVED_DISPLAY_NAME being the “flavor” of the item?

lucid iron
#

thats the "AgedRoe_Flavored_Name" key in "Strings/Objects"

#

GetObjectDisplayName replaces %PRESERVED_DISPLAY_NAME yep

hot gale
#

So do I add a JSON to my mod in Strings/Objects? or can I redirect to like modfolder/data? Sorry im not very familiar with this. I used the recipe you sent me earlier and I got it to work - except the name comes out in raw code because I assume its looking for something not there

lucid iron
#

You add your own custom string yeah

hot gale
#

kk

lucid iron
#

{0} Bear Mead

#

Something like that

#

To do this you gotta EditData the Strings/Objects target

hot gale
#

Ima cry 😭

#

Finally

#

Thank you :D

dreamy arrow
#

I'm new and don't have Mod Author role, can I share a link to my mod here? I'd like to get it in the showcase if possible.

uncut viper
#

you need mod author role to put it in the showcase yes

#

but to just post it no

#

so 1 out of 2

#

someone else who DOES have the mod author role can post it to the showcase on your behalf though if they are around and willing

dreamy arrow
tacit moth
#

Interesting mod. Nice work!

dreamy arrow
#

Thanks! I put a lot of effort into making it feel polished.

#

There's a video on the page that shows a quick example of how it works.

uncut viper
#

im also impressed with the custom UI work

acoustic summit
#

I think I can post if to showcase for you, what message would you like attached @tacit moth ?

uncut viper
#

(wrong person)

acoustic summit
#

Oh

#

Sorry regal duck for the mis ping, @dreamy arrow

dreamy arrow
uncut viper
#

vanilla stardew ui system in a nutshell

dreamy arrow
#

I could have released this days ago with just a config file but it would not been anywhere near as useful.

acoustic summit
#

I think you responded to the wrong person, unless thats the message you want attached in the showcase SDVpuffersquee

dreamy arrow
#

oops, sorry yeah that was @ button, got sidetracked lol it's late. gimme one sec

acoustic summit
#

np I did basically the same thing 5 min ago, very late SDVkrobusgiggle

dreamy arrow
#

Uh, just the tagline from the link is fine, I don't need any special text. "Enhance your Stardew Valley Combined Rings with custom sprites and color effects!"

acoustic summit
dreamy arrow
#

Awesome! Thank you!

acoustic summit
#

I did not realise the tagline needed to be repeated... it is 4am I am sorry. It looks really cool though yeah! That UI looks amazing, which is something I've struggled with a tonne

acoustic valley
#

Hey does someone have a reference on how i could modify an NPCs Schedule during runtime?

dreamy arrow
#

And I'd be lying if I said it wasn't a little bit spaghetti-like under all the polish.

vernal crest
hot gale
#

When doing PriceModifiers can we add a range/randomization instead of flat addition/multiplication?

#

or would that fall under some C#

mighty ginkgo
hot gale
#

Badass, thanks!

#

Version 1.0 of my first mod complete :D

#

Finally fully flushed out the first feature I wanted

acoustic valley
hot gale
#

Shameless plug 😅

lusty elm
#

stares at map I forgot to have a place for grandpa's shrine

hard fern
lusty elm
#

I'll just extend this a bit and... there, it exists now.

acoustic valley
#

I guess the best example of what i want to do, is making my own Spring festival? I guess thats the start

uncut viper
#

schedules are just generally not designed to be changed mid-day. theyre chosen once and a whole days schedule is loaded, parsed, and set at once

#

and theres a bunch of different functions that touch each piece of it

acoustic valley
#

ah.. so i guess i cannot dynamically pick and choose characters that will attend the event? Aw man

proud wyvern
#

"event"?

uncut viper
#

if you're making your own event thats much different from modifying an NPCs schedule at runtime

#

you would just need to choose who goes at the start of the day

#

unless you mean something like the night market?

acoustic valley
#

I am calling the project "Tea Party", my basic idea is to give the player the option of increasing friendship by inviting an npc to the farm, in a set timeslot (idk Sunday 4-6pm)

uncut viper
#

ah.... an NPC on the farm is an entirely different category of Problem

acoustic valley
#

Thats what i thought

uncut viper
#

pathfinding does not happen there

#

its not related to schedules they just cant navigate to, from, or really within it

acoustic valley
#

And if i were to move the "event space" onto the normal map? Say in front of the Community Center, that would be different?

#

I guess i am reaching for the stars here with this idea D:

uncut viper
#

you'd then be back to just making sure you modify their schedule choosing at the start of the day

#

like with enough C# anything is possible ofc

#

but it will be a bit of an uphill battle if you want to be able to invite an NPC at 3pm and have them show up to a just-then-decided location at 4pm

acoustic valley
#

Oh no, not that dynamic. I just wasnt sure if NPC schedules are "per-day" basis or set in stone on world load

uncut viper
#

per day

acoustic valley
#

ahh ok. So where would i look for more info on modifying the behaviour? is there any documentation or do i have to scour the NPC classes?

uncut viper
#

generally for C# stuff your best bet is to look through the decomp yourself to find what you need or learn from the wisdom of others
depending on your specific needs some people may not have that wisdom
my Custom Schedule Keys mod (force load a specific schedule key according to a GSQ) and its source code may be of use to you though but thats as far as i can offer right now as i am going to bed

#

it just patches NPC.TryLoadSchedule, which may be all you need. again, depends on your specific needs/plans

#

(aside from GameData stuff like on the wiki for things like ObjectData or MachineData and the like or random C# functions here and there, SDV source code is not documented bc it was never meant to be, its just a game after all and not meant as a public API thing)

acoustic valley
lusty elm
#

I need to get used to the fact there is an art channel now for WIPs.

hot gale
#
{
          // Bear Honey Mead +  10x Fruit -> Preserving Jar -> Flavored Bear Honey Mead
          "Action": "EditData",
          "Target": "Data/Machines",
          "TargetField": [
            "(BC)15",
            // Added support for Machine Progression System
            "nachonline.mps_SteelPreservesJar",
            "nachonline.mps_GoldPreservesJar",
            "nachonline.mps_DiamondPreservesJar",
            "nachonline.mps_IridiumPreservesJar",
            "nachonline.mps_RadioactivePreservesJar",
            "nachonline.mps_PrismaticPreservesJar",
            "OutputRules"
          ],

Is this the proper way to add support for multiple machines, i.e; the machine progression system preservation jars

#

Follow up question, if these are optional rules for the recipe, would having these present when the user does not have MPS installed error/crash or just be ignored? Do I need to add MPS as a dependency to my mod, or should I?

hallow prism
#

i don"t believe it would work, what i remember about targetfield is that it does search target 1, then target 2 in target 1, then target 3 in target 2

#

and so on

#

so i don't picture how this would work

hot gale
#

I kinda assumed, trying to figure out how to add support for the 'advanced' machines from MPS

#

They dont have a wiki that I can see

vernal crest
#

By repeating your patch for each machine, I would assume

hot gale
#

🤦🏽‍♂️

#

Duh

hallow prism
#

i don't know if we have a shortcut for that

uncut viper
#

(hi im supposed to be asleep but if each machine can work with the same copy pasted code look into localtokens for templating since targetfield supports tokens ok goodnight)

hot gale
#

I was trying to find another mod to look at their code to see how they do it but im failing in that regard lol

#

hmm,

"Action": "EditData",
        "Target": "Data/Machines",
        "TargetField": [
          "nachonline.mps_SteelPreservesJar",
          "OutputRules"
        ],
``` did not appear to work 🤔
mighty ginkgo
#

it could be a problem elsewhere on the patch, or a patch order issue between the mods (either no manifest dependency in your mod or patch priority issue)

hot gale
#

Does doing a patch reload in the smapi cli also reload the manifest file?

mighty ginkgo
#

i don't think so

vernal crest
#

No

hot gale
#

Ahh, darn ok

#
[Content Patcher] Can't apply data patch "(CP) Expanded Artisanal Goods > EditData Data/Machines #4" to Data/Machines: the field 'nachonline.mps_SteelPreservesJar' doesn't match an existing target

Manifest has it listed as a dependency, is it the patch priority then?

vernal crest
#

Probably not. Do a patch export of your data/machines to make sure that the MPS machines are there. patch export data/machines

hallow prism
#

you may need the (BC)

vernal crest
#

You can also do patch summary asset "data/machines" to see the list of which mods' patches are being applied to that asset.

#

Ah yeah the wiki page says the key is the qualified item id

hot gale
#

omg this export is amazing

vernal crest
#

So I think Lumi is right you're missing the (BC)

hot gale
#

Yep in the export they have the (BC)

#

Thanks guys!

#

Im real new to this so I dont know all these little nuances

vernal crest
#

We all go through it, except maybe the people who read C# well enough that they can figure this stuff out from reading the decompile