#making-mods-general
1 messages · Page 71 of 1
booberry i think you may be overestimating how much time you have left to c omplete this just a teensy bit
looks at timer
halloween's still 3 weeks away right
oh that's less than 3 weeks
how time flies when ur having fun
<t:1730419200:R> 
i'm cooking real hard with this mod. could probably get away with posting it in both channels
i still wanna enter the art and writing contests too. also still in uni. not enough time in the day 
(i know the writing one isnt a contest i was just typing fast)
i speedran it all inbetween job apps
if you make an event script long enough, can you post it in writing-contest too 
it isnt a contest but mods will still highlight their fav ones
a not-not-contest
a prestige contest
the thought of posting art and writing fills me with horror terror so i am slacc on those
I DIDN'T WANNA BE THE FIRST ONE TO PUT MY WRITING UP BUT I SAID SCREW IT
I cooked up a shitpost in 20 min for writing, you can do it
Are there any good NPC pathfinding troubleshooting tools in 1.6? I really miss GIMA.
actually for people who have been here for prior contests/mod jams, has it ever been said if there was like. certain criteria things are judged on. or is it just vibes
very glad selph came in behind with the IRS
you get a game key
does sinz have something hidden away?
Exposure 
honestly when i was going over the entries for one of the last events the only criteria were the rules everyone sees, and from there it's just how impressed you are with the entry
or do they have category
you get a game key if you win (your choice from a list) and you also get entered in a raffle just for entering
i think the raffle is also for game keys
yes ofc, but also is there like "best gameplay" or "best story" type categories
novelty, effort, detail, polish, heart, that's all i really considered
nope, not really
ooh i didnt know you helped with previous ones. can i also ask then if theres any like. "ok well we already highlighted this person as a fav entry/winner for THIS Contest so maybe we shouldnt also judge them that highly for this other contest they entered" to prevent multiple winners
ofc it's been a year at least and it's different people doing it and everyone does it their own way
i don't remember if we had one person in multiple contests previously, the nature of the server usually means people just post their one thing
every judge has their own vibes
ofc with hundreds of submissions you wouldn't notice the same person unless they won both
man there were a lot of submissions lol
i plan on entering like, everythin, so... i just wanted to make sure i shouldnt want to only enter in the mod one if thats the one i cared about most lol
like if i didnt wanna ruin my chances with it so to speak by entering another one
(not that i think im a shoe in for art or writing or anything anyway, i just consider these things regardless)
as far as categories go, novelty factor means uniquely different submissions naturally have a higher chance to place higher, so for example sculpture/crochet/watercolour will probably have a higher chance of getting top 5 than digital art if there's 10 times as many digital submissions
Hello, people. How are you? I made several mods, SMAPI loads them correctly, no errors but InGame they don't work correctly.
Actually out of three mods one is the one that doesn't work properly. They are not complicated mods, in fact I had already done something similar but now I'm getting something wrong and I don't know what it is, I know what they are but not their causes.
again though, up to whoever's reviewing them 
are they C# or content patcher
The errors are as follows:
-
the ingredients of the cooking recipes are not the correct ones, it does not use ingredients from the base game, but others from a mod I made but apparently I have not indicated them correctly.
-
I can buy the recipes and they appear correctly in the shop but they do not appear in the kitchen to elaborate them.
-
I want to introduce a certain item to the dehydrator but it does not allow me to do it.
However the mod to create vodka and rum using the game's own barrels works correctly, I used the same principle for the dehydrator but it did not work.
post your code maybe?
!json pls
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
I know but unfortunately I only have 20% vision normally and I find it easier to use notepad than the other dedicated software.
Anyway I validated the files and they did not give any errors, now I will publish the files, give me a second.
manifest.json: https://smapi.io/json/i18n/6071d5fd86f34bd38b8a7a27f8017465
machines.json: https://smapi.io/json/i18n/b747c9514dfd47be9032d42e543e01fe
that's the mod that gives problems
the machines.json I just saw that it gave an error in the validator, on line 22
for machines.json, per the error on the validator page, you have two entries with the same ID
you can give them different IDs, however since they both have the same output you can merge them into one
and edit Triggers to have two entries, one for each input
I understand, although it is the same product, they should have two different IDs because I can do it in two different ways.
the cooking recipes dont work due to not referencing valid inputs or yield
SORRY FOR GOING AFK
I re-read the code and I realized that it was "HasMod|<ModId>" instead of "HasMod": "<ModId>" 💀
It makes sense now
you can do this:
"Entries": {
"{{ModId}}_extracto_vainilla":{
"Id": "extracto_vainilla",
"Triggers":[{
"RequiredItemId": "(O)infusion_vodka",
},
{
"RequiredItemId": "(O)infusion_ron",
}],
"OutputItem":[{
"ItemId": "(O)extracto_vainilla",
}],
"MinutesUntilReady": 6000,
},
}
How are the light rays added in the island_east map?
Ok Ty
I checked the decompiled code but didn't see anything about light rays
note the itemid's should be {{ModId}}_infusion_vodka
search for LightRays, it's used in IslandForestLocation
Interesting
If I'm adding code to a farm do I add the type with spacecore like a location?
Ok and how do I indicate that a recipe uses ingredients from another mod?
custom type farms seems like a worry; if people change their farm map down the line you could have trouble
You need to use whatever the item ID is for those items
Also the item ids in your objects.json and your machines.json do not match
if nandodrinks.Vodka is actually an item thats fine, but the yield of {{ModId}} isn't an item
you might just want a method to draw light rays if the location matches some values you expect, like a map property
Yeah I was hoping there was a secret map property
What if I just animate it using tiled...
And paste it in

possible, you'd just need a lot of alwaysfront tiles and make sure the seam at the top isn't visible
i have no idea what the island forest looks like btw
nandodrinks.vodka is the ID of a bottle of vodka that's why I used it
If I understand correctly, I should omit the {{modid}} field.
the yield should be what you want the cooking recipe to make
so {{ModId}}_infusion_vodka or something
I think the question about whether nandodrinks.vodka is a valid item ID is because the ones you shared have {{ModId}} so the assumption becomes that your other ones do too
If it's from a different mod and it has the {{ModId}} token then you need to include the UniqueID from the manifest of the other mod wherever you're trying to use it
infusion_vodka is the result of the recipe, I must combine vanilla pods and vodka to obtain that product
For example: in order to use {{ModId}}_infusion_vodka in other mods you would need to reference it as hayato2236.Extracto_Vainilla_infusion_vodka in other mods
Oh yeah I used those page breaks but some people say it shows the coin idk why
if it broke that means something is missing, is it fully #$b#?
is this the right format?
$sLine 1..#$b$s#Line 2.
sad portrait, i hope
$s#$b#
<actual dialogue> [emotes/item/action][page break]
dialogue strings looking like a bag of chex mix
if you think dialogue's bad you should see my events
this is advanced ugly
Now I think I'm getting it, the ingredients are from another mod, not from this one, but taking into account what you two are explaining to me, I think I understand. I'm going to put it into practice when I get back to the PC.
oh wait why am i even picking spouse/roommate/random, can i query some character by highest friendship?
without registering a new cp token
What location is this?
nope, to the C# mines you go
island shrine i think?
i keep going there by accident when trying to go to my own shrine lol
east of island, where you place 4 gems to offer from the birds and get golden walnuts
Is the map set darker or something?
And what do you think is the problem why the recipes do not appear after purchasing them?
I want to make an outdoors location but I want it dark like this
Recipes in shops are very finnicky, they have to be exactly right or they'll have all kinds of problems
Island_Shrine uses the map property forceLoadPathLayerLights T with some basic lights on Paths, you can do the same easily
oh
atra gave me the ambient light cheat sheet hold on 
{
// set the IsOutdoor thing in the map props.
loc.ignoreDebrisWeather.Value = true;
loc.ignoreOutdoorLighting.Value = true;
}```
why did it take all of my whitespace
But doesn't ambient light property only work in indoors?
this one lets me set the ambientlighting map property
that's meant for indoors, yes
You made it work outdoors with some code?
i made it ignore the day/night ambient lighting
Ok that should be ok for a island map I think
In this case, I'm thinking it's probably because the internal Name and item ID don't match exactly for these items
I made another mod where I added a recipe that is bought in a shop and I had no problems, I tried to use the same structure for this one and it didn't work for me
You can use the field ObjectInternalName to try to match the item you're attempting to sell a recipe for
So I probably don't need spacecore for adding that to my farm location?
Anyway, I decided that the recipe can be bought in a shop because it seemed to me to be the quickest way to test it.
Ok I'll check it
I have so many different examples of cooking recipes and shops and mail lol, can't find one similar to this issue
What is your uniqueid
wiki page: The game will unlock the recipe with the ID equal to the item query's ObjectInternalName field, or the target item's internal Name (which defaults to its ID) if not set.
thats fixed in 1.6.9 right
I thought that was fine before also
Fixed in 1.6.9
I didn't understand
from the recipe mod?
Yeah, I was using Recipe in 1.6.8 without any particular issues
you don't have Recipe in the ItemId though
Oh that's true, but I dunno why I would lmao
or ObjectInternalName
Was that the issue?
there was a mod maker who was running into phantom issues because their mod ID has Recipe in the name
and they were using {{ModId}}_Something as their item ID
Ah
debugging that was a 'fun' 30 min
I got lost, I don't know what you need
you should fix the ModId issue first, and when things still dont work come back here with your updated files
feel free to ignore the chatter haha
your items Name field is infusion_vodka and infusion_ron but the recipes key is infusion_vainilla
so when you buy the recipe associated with infusion_vodka it cant find any recipes to unlock because the recipes associated with an unknown item
Evening all been away a bit had some things to take care of 😉 any major changes to file structure I need to know about before hitting my mods again
aaahhh I forgot to fix that, I left the old mod name
depends, since when? 1.5 or 1.6.8?
either way the migration page for 1.6 and 1.6.9 should have the full details
Hmm 🤔 between 1.6 and 1.6.9
not much changed between 1.6.0 and 1.6.8
1.6.9 isnt as extreme as 1.6.0 for content mods
https://stardewvalleywiki.com/Modding:Migrate_to_Stardew_Valley_1.6.9
some changes, the only stuff that's breaking is in C# land
also the item coloring stuff ig
Ah I used CP for 99.9%
yeah the only 'breaking' CP changes I recall is that if you have a mod that adds a custom colored items (flowers, artisan goods, etc.) you need to set a new field in item data, otherwise it will look weird
Thanks for being patient with the blind guy hehe in a while I'll correct that and test it
Lol that was fun
K my 3 main mods shouldn’t be broken then since there building additions for Robin and a reskin of mailboxes and buildings
How do I make my own map?
Thanks
Me personally I use program tiled but just coming back so gotta look things up myself lol
is that a mod?
Tiled is still the go to for stardew modding
Perfect lol don’t have to learn a new program 
A lot of data stuff changed, for migration help it's best if u can tell us which mod
Hmm 🤔 the ones I have published besides house lights the others should be working fine I’ll do a through test and check and republish if no major issues found but you can find me on vortex under Celestia87
those who know lookup anything: I'm looking for the part of the code that generates the "fish spawns where?" block
trying to figure out why pufferchick doesn't have it rn
Oh it's fish spawn field
pufferchick is in Data/Locations
pufferchick is in Data/fish
what am I missing?
Pufferchick is fishable
string original_condition = $"PLAYER_HAS_CAUGHT_FISH Current (O)128, PLAYER_HAS_MAIL Current {AquariumPlayerHasChicken} Any";
SpawnFishData basePuffer = new()
{
ItemId = PufferchickQID,
Id = PufferchickQID,
IsBossFish = true,
CatchLimit = 1,
Condition = $"{original_condition}, {AquariumGameStateQuery.RandomChanceForPuffer}"
};
``` pufferchick
Maybe I derped here iono
😦 idk how to glowy or if I can even glowy
{
"Action": "EditData",
"Target": "Mods/mistyspring.ItemExtensions/Data",
"When": {"HasMod": "mistyspring.ItemExtensions"},
"Entries": {
"ManaFertilizer": {
"LightData":{
"Size": 2.5,
"R": 0,
"G": 227,
"B": 54,
"Transparency": 0.75,
},
},
}
thanks! I'll take a look when I get home
(that pr was for chest tuna fix)
LightData is the type. You want just Light
also tried with that, no go
ok somehow the SPF food dialogue works but not the light 9-9
Time to reload 😄
I got nothing lol. did you restart the game?
I am about to restart it again, on a fresh save this time
I discover my old mistreated test saves don't like me
likely that light stuff only restart on day start
I was able to add one of the two necessary ingredients, the other one for some reason appears as an error, I think I did it right but obviously I didn't hahaha.
IT WORKS
Also now I have a translation error but it is not something that worries me, I prefer to solve the other problems.
your item IDs don't match. post your objects.json again if you can't figure it out
At least the mod items keep their correct names and descriptions, and can be generated without problems.
I will send both, the recipe mod and the mod from which it takes the ingredients.
Extracto_Vainilla´s objetcs
https://smapi.io/json/i18n/c3040413f9cd41b5a453ffe14e84e166
nandodrinks items.json
https://smapi.io/json/i18n/5467e6a624d94701ac7296d0b3663c2a
nandodriinks´ manifest.json
https://smapi.io/json/i18n/f2017f383dd14bd988b5f8242ffb1fa8
the original mod's item is nandodrinks.Vodka, while you're using Hayato2236.nandodrinks_nandodrinks.Vodka in your recipe
same with Rum
[Content Patcher] Ignored dynamic token 'Quit': the token value is invalid: '{{i18n.menu.quit}}' can't be used as a token because that token could not be found.
nooo wtf
I have a question - I'm trying to create a quest that requires you to visit a certain location at a certain time. However, it's extremely unclear just how you're supposed to do that. The raw quest data is on the relevant wiki page, but those quests are marked under the "basic" category, and they don't have a solution attached to them. So how exactly do those quests get marked as complete by the code?
ugh, still can't figure out why lookup anything no understand pufferchick
{{i18n : menu.quit}}
i might've just noticed that this very second lol
you're welcome, from the person who once wrote {{i8n: blah}} and could not figure out what was wrong
intlerston...
they could be hardcoded, or maybe they could be completed in an event that triggers at the right time (i don't remember offhand if there's an event command that can do this).
can you give a specific example of a quest like this so i know what to look at?
(any Location quest, maybe)
try quest 16
any more conditions than "just show up there while quest is active" may be hard to do without C# though
ok this one's actually a problem:
Error parsing 'Nightmare}}' as a tokenizable string
can i use a config value in a dynamic token?
"ConfigSchema": {
"Nightmare": {
"AllowValues": "true, false",
"Default": "false"
}
},
"DynamicTokens": [
{
"Name": "Quit",
"Value": "{{i18n:menu.quit}}"
},
{
"Name": "Quit",
"Value": "{{i18n:menu.quit.nightmare}}",
"When": {
"{{Nightmare}}": "true"
}
}
]
I think you just do "Nightmare"?
remove the outer quotes from the when condition key
er
braces
oh bless, ty
outer braces
Why does one go with the ID and the other does not?
because they refer to the same item, so they have to match exactly
mod ID doesn't matter
same item?
let me clarify - you must use nandodrinks.Vodka in your recipe
the item is named nandodrinks.Vodka, so you must type in nandodrinks.Vodka for your recipe
Why do I have to put the mod ID with the other ingredient? hayato2236.nando_vanilla_nando_vanilla_pod
with that ingredient I had no problem
I am in data/locations. I am in data/fish. I am a fish
because that is your own item
what. am. I. missing
I don't see it in https://smapi.io/json/i18n/5467e6a624d94701ac7296d0b3663c2a
because it's not from that mod, it's the vanilla crop one
maybe I go write 300 word about wizard and get a purple color instead
vanilla pods are from here https://smapi.io/json/i18n/5c4e5818d0ed46c893768a69b5791ae5
the vodka item comes from this file: https://smapi.io/json/i18n/5467e6a624d94701ac7296d0b3663c2a. It is named nandodrinks.Vodka
the vanilla item comes from this file: https://smapi.io/json/i18n/c3040413f9cd41b5a453ffe14e84e166. It is named {{ModId}}_extracto_vainilla
you use the name it is given
and this is its menifest
https://smapi.io/json/i18n/927cbd18af564975afc28b9a429653f1
yes, and the mod ID is not in nandodrinks.Vodka
if you want to use hayato2236.nando_vanilla_nando.Vodka, name your item {{ModId}}_nandodrinks.Vodka
wait give me a moment, let me correct the names
the vanilla pods do not come from that mod, for me it was easier to send the files in a zipped file with each mod separated so you could check it easier than sending links that lead to confusion.
sorry I mistyped, and you don't have to send the files
one more time: your item is named nandodrinks.Vodka, so you have to use that value in your recipes
if you want to use Hayato2236.nandodrinks_nandodrinks.Vodka you have to rename the item to Hayato2236.nandodrinks_nandodrinks.Vodka
change this line: https://smapi.io/json/i18n/5467e6a624d94701ac7296d0b3663c2a#L39
and the line below it
very sad that putting Passable T on building tile prop doesnt just werk
I think what ppl do is put non passable on Back instead? But Passable T should work though
in that case ignore me
I understood that, what I don't understand is why some ingredients should randomly carry the mod id of the mod they come from and why other ingredients should not carry the mod id of the mod they come from.
because that's how the mod author coded them
But okay, I'll edit it like you said, give me a few minutes.
Not sure why, but my shed is behaving oddly if I try to change the building exterior's size.
It acts like it has an offset when it doesn't, even though the texture and the Size for collision match.
me? hahaha I think I understand the problem
(anyway I must run for a couple hours, other people here can help you!)
Literally has been doing the spinny on the...wgar
(ok one last thing before I run though: what about CollisionMap)
Probably the one where you have to visit the beach before 5:00 to talk to that “Willy” person.
I have to remember to give a good punch to the mod author, thanks now I understand why, I have to code more orderly and keep a homogeneous form between my mods, so I don't get confused so much.
ah, ok. that one is handled by an event at the beach which has a time and date restriction:
"739330/t 600 1710/*n spring_2_1": "ocean/-1000 -1000/farmer 28 35 1 Willy 44 35 1/removeQuest 13/
the key part here is removeQuest 13, which removes that quest from your journal
I had a feeling events were necessary to achieve this. Thanks for your help!
lols in forgets to install content patcher
Now I have to correct the problem of the translation that I think I know how to do it and the problem that it has no sprite, in theory I think I know how to solve them, in theory....
Is it possible to unify everything in a single mod? This way I don't force to download several mods to those who want to download them.
deranged syntax but i think this is exactly what i want 
/// <summary>
/// If set, an ASCII text block which indicates which of the building's tiles the players can walk onto, where each character can be <c>X</c> (blocked) or <c>O</c> (passable). Defaults to all tiles blocked. For example, a stable covers a 4x2 tile area with the front two tiles passable:
/// <code>
/// XXXX
/// XOOX
/// </code>
/// </summary>
[ContentSerializer(Optional = true)]
public string CollisionMap;
all i gotta do is change the obelisk warp actions then
Hey @ivory plume , sorry, but I can't figure out why pufferchick doesn't show up in LookupAnything as a fishable fish...
data/fish
"Cherry.StardewAquarium_Pufferchick": "Pufferchick/95/mixed/28/28/0 2600/spring summer fall winter/both/688 .05/5/0/0/0/false"
puffer's entry in Data/Locations
{
"Chance": 1.0,
"Season": null,
"FishAreaId": null,
"BobberPosition": null,
"PlayerPosition": null,
"MinFishingLevel": 0,
"MinDistanceFromShore": 0,
"MaxDistanceFromShore": -1,
"ApplyDailyLuck": false,
"CuriosityLureBuff": -1.0,
"SpecificBaitBuff": 0.0,
"SpecificBaitMultiplier": 1.66,
"CatchLimit": 1,
"CanUseTrainingRod": null,
"IsBossFish": true,
"SetFlagOnCatch": null,
"RequireMagicBait": false,
"Precedence": 0,
"IgnoreFishDataRequirements": false,
"CanBeInherited": true,
"ChanceModifiers": null,
"ChanceModifierMode": "Stack",
"ChanceBoostPerLuckLevel": 0.0,
"UseFishCaughtSeededRandom": false,
"Condition": "PLAYER_HAS_CAUGHT_FISH Current (O)128, PLAYER_HAS_MAIL Current StardewAquarium.PlayerHasChicken Any, StardewValleyAquarium_RANDOM_CHANCE_FOR_PUFFER",
"Id": "(O)Cherry.StardewAquarium_Pufferchick",
"ItemId": "(O)Cherry.StardewAquarium_Pufferchick",
"RandomItemId": null,
"MaxItems": null,
"MinStack": -1,
"MaxStack": -1,
"Quality": -1,
"ObjectInternalName": null,
"ObjectDisplayName": null,
"ToolUpgradeLevel": -1,
"IsRecipe": false,
"StackModifiers": null,
"StackModifierMode": "Stack",
"QualityModifiers": null,
"QualityModifierMode": "Stack",
"ModData": null,
"PerItemCondition": null
},
puffer in Data/Objects
"Cherry.StardewAquarium_Pufferchick": {
"Name": "Pufferchick",
"DisplayName": "[LocalizedText Strings\\Objects:StardewAquarium_Pufferchick_Name]",
"Description": "[LocalizedText Strings\\Objects:StardewAquarium_Pufferchick_Description]",
"Type": "Fish",
"Category": -4,
"Price": 2000,
"Texture": "Mods/StardewAquarium/Items",
"SpriteIndex": 2,
"Edibility": -200,
"IsDrink": false,
"Buffs": null,
"GeodeDropsDefaultItems": false,
"GeodeDrops": null,
"ArtifactSpotChances": null,
"CanBeGivenAsGift": true,
"CanBeTrashed": true,
"ExcludeFromFishingCollection": false,
"ExcludeFromShippingCollection": false,
"ExcludeFromRandomSale": false,
"ContextTags": [
"fish_legendary"
],
"CustomFields": null
}
is there something really obvious I'm missing?
I can't figure it out, my apologies!
Looks like an edge case which occurs when a fish can only be caught via Data/Fish and has no entries in Data/Locations fish fields:
// get spawn data
FishSpawnData? spawnRules = gameHelper.GetFishSpawnRules(fish);
if (spawnRules?.Locations?.Any() != true)
yield break;
```'
It has a Data/Locations fish field!
Oops, missed that.
I copied the exports just to make sure the edits took
The data all looks correct, so not sure off-hand why it's not showing up. I'd need to debug with a repro content pack to see what it's doing.
I can send you the slightly cut down version of Aquarium I'm debugging with, which is basically "Aquarium but with dependencies commented out"
slash I got lazy.
(But with 1.6.9 releasing in two weeks, it might be a bit before I can look into mod issues like that.)
How come we still haven't had a mod where you can lock houses in MP yet?
Isn't pif a personalized farmhouse
probably cause most people who play MP wouldnt find it necessary so theres no drive to make it. you can be the one though!
I'll DM you a pack, but I'll probably get around to pulling your repo and taking a look myself at some point soon anyways
https://www.nexusmods.com/stardewvalley/mods/20537 technically already exists
this makes no sense
I'm trying to edit the torch offset for a custom fence texture and I'm getting this error: [Content Patcher] Can't apply data patch "Better Fence Gates > EditData Data/Fences" to Data/Fences: the field '322' > 'HeldObjectDrawOffset' has type 'Microsoft.Xna.Framework.Vector2', which isn't recognized by Content Patcher
Is this not a thing that can be done or did I mess up my EditData entry?
"Action": "EditData",
"Target": "Data/Fences",
"TargetField": [
"322",
"HeldObjectDrawOffset"
],
"Entries": {
"y": 0
}
}```
Finally, thank you Shadow Selph, wherever you are!
while its true that you are missing i18n for the letter names, that shouldnt cause repeat mail?
Content Patcher doesn't know how to use a Vector2 field as a model currently. You'll need to edit one level higher instead:
{
"Action": "EditData",
"Target": "Data/Fences",
"TargetField": [ "322" ],
"Entries": {
"HeldObjectDrawOffset": { "X": someValue, "y": 0 }
}
}
Or using the shortcut for a one-level-deep edit:
{
"Action": "EditData",
"Target": "Data/Fences",
"Fields": {
"322": {
"HeldObjectDrawOffset": { "X": someValue, "y": 0 }
}
}
}
I see, thanks!
i would assume that the title-less letters just wouldn't show? --oh
theyd show with the "missing translation" string
that's what i was thinking
do i need to fix that?
i mean that part is a legitimate bug that should be fixed. your letters currently dont have names and show as error strings
i just dunno why theyd be gettin repeat letters
How do I fix that?
add i18n keys for the letter names
"EmilyAcaiBowlLetter": "{{i18n:Mail.Emily.EmilyCooking.LetterText}}^%item cookingRecipe {{ModId}}_AcaiBowl %%[#]{{i18n:Mail.Emily.EmilyCooking.LetterName}}",
exactly the same way that you did the letter context
the letter title is that second i18n token at the end
but you dont have anything written in your default.json in your i18n folder for it
these are the letter names that are shown when you look at the letters in your Collections page on the pause menu
anyone interested in playtesting my halloween contest entry 
Okay thanks, and just repeat this for all of them?
actually, how does that interact with the cookingrecipes
exact same way you'd do the i18n for anything else, yep
is it because it's title-less that it's the only real reason why it's repeating?
id probably ask them what recipe in particular is being repeated
"{{ModId}}_AcaiBowl": "-6 1 258 1 400 1 834 1 91 1 88 1 340 1/10 10/{{ModId}}_AcaiBowl/f Emily 6/{{i18n:AcaiBowl_name}}",
it shouldnt be, its not like the game searches by letter id when determining mail keys
i assume all of them, since all of them don't have the i18n titles
i thought it did-
but letter names dont need to be unique anyway, theyre just part of the letter string
it does the <npc>+Cooking, right? that craziness we went over last time
wake up in the farmhouse on the 3/9/15/21st of any month to begin 


you'll be visited again 2 days later if you succeed.. or 6 days later if you fail 
enable NIGHTMARE in the config if you're so brave
it shouldnt be repeating the same recipe, though
no ending event yet, only puzzles
i hope you know i'm testing this in 1.6.9
yeah the <npc>Cooking mails are a bit cursed
these arentr <npc>Cooking letters anyway
oh, i thought because of the f Emily 6 it checks it for the npc
i wrote it in 1.6.9, so hopefully it just works anywhere lol
these are just regular mails specifying which recipe to attach
oh, youy mean in the cooking recipes json
yeeeeeeeaaaaaa
i thought you were talking about the cookingRecipe part in Mail.json
nope, the cookingrecipes.json
okay, yeah, thatll cause duplicate letters
( @ivory plume - I see it. I have a Condition but no seasonal condition. https://github.com/Pathoschild/StardewMods/blob/3366e0d4b86711d8eba3a79394cf51e26a48c3da/LookupAnything/DataParser.cs#L191 )
would those need to be nulled since they're already being mailed out with trigger actions?
(good catch i looked at Mail.json first, saw they were normal mails, then looked at trigger actions and saw the mail senders, and just assumed the recipes didnt have requirements like that attached to them in cookingrecipes.json)
I need to head out, but I can PR later
correct those requirements need to be removed
(i always look at cookingrecipes first)
(my heart belongs to trigger actions)
so 2 things, null out all of the friendship requirements in your cookingrecipes.json, and add in i18n title keys and you'll be back ship shape
i think mine might belong to context tags
not hats.... sad for lacey
how would the game recognize when to have the recipes send?
raises hands for events
thats what your trigger actions are doing
you've already set them as trigger actions
setting the friendship requirement in the recipe itself with e.g. f Emily 6 means that when you reach 6 hearts with emily, then overnight the game will look to see if emily has a EmilyCooking mail in its data (she does)
or well actually it goes in reverse
it checks the mail first
then checks if youve met the requirements for the first recipe it can find
I'm testing in 1.6.8
then it sends it if you do
but then you yourself are also sending a different letter with the same recipe
but manually, with trigger actions
it's probably rolling repeating because it's trying to look for something called Emily+Cooking+RecipeName
as a mail
no it just looks for EmilyCooking
"{{ModId}}_AcaiBowl": "-6 1 258 1 400 1 834 1 91 1 88 1 340 1/10 10/{{ModId}}_AcaiBowl/f Emily 6/{{i18n:AcaiBowl_name}}" -- > "{{ModId}}_AcaiBowl": "-6 1 258 1 400 1 834 1 91 1 88 1 340 1/10 10/{{ModId}}_AcaiBowl/{{i18n:AcaiBowl_name}}"
and then sends the first valid recipe it can find
eventually it would stop sending emily cooking letters
you still need the field there, it looks strange but you do //
"{{ModId}}_AcaiBowl": "-6 1 258 1 400 1 834 1 91 1 88 1 340 1/10 10/{{ModId}}_AcaiBowl//{{i18n:AcaiBowl_name}}"
ah thanks all 
I had a field where it was /none/ i guess both work?
or should i delete that too
(with the power of forwarding--maybe my editors will test it but i doubt they want to do anything except deal with the SVE update)
it actually does not matter
if its not f <NPC> <Hearts>, s <skill> <level>, or default, then literally anything else you write there counts as just "im gonna do it manually my own way"
okay good to know ty!
takin a page out of the minecraft modding handbook
ah fuck my weakness, a maze without a map
i'm dumb sorry, what/where do i need to add for the i18n title keys??
(That will never work.)
your default.json has the letter contexts:
"Mail.Emily.EmilyCooking.LetterText": "Hi @!^If you wanna know the secret to how I stay moving without feeling full, it's from eating a deliciously healthy açaí bowl! Enjoy! ^ -Emily",
you'd jsut have to do :
"Mail.Emily.EmilyCooking.LetterName": "LETTER TITLE HERE"
ah okay thanks for helping!
brain doing the json: ah yes
brain doing ze dialogue writing...
yes I am stuck at this part o(<
i regret looking away for a minute, i am Extra Lost ™️
so, quick question while I continue working on my Google sheets NPC builder project and procrastinate on my mods: For Data/NPCGiftTastes, does the game throw an error if you have an extra space between the / / separators (such as when there are no objects provided to go with a specific response?)
offhand, i would guess no, but it warrants testing for the real answer
fair enough.
(i dont know the answer either but do wanna say just in case its an unintentional typo that its NPCGiftTastes not GiftTastes)
It mostly just determines how much work I have to do to remove that space if the objects table is empty
Yeah, I got lazy when typing. 😛
(.. all typos are unintentional io was trying to say like "just in case you had it confused")
It's right everywhere that matters (like in the code and the builder), but I got lazy when writing it out for Discord, LOL
very fair
It currently generates this:
"Target":"Data/NPCGiftTastes",
"Entries": {
"{{ModId}}.NPCName": "Wow, this is great!/ /Thanks, I like this./72/I'll take it if I have to, I guess.../30/I can probably find a use for this./18/Ugh, gross!/20/",
},
}```
so, mostly correct, as long as the spaces don't bother it.
just a few tweaks to make still
seems like it should work fine
the relevant code in getGiftTasteForItem just creates an empty list of items for the one thats all spaces and NPC.CheckTaste will just return false if theres nothing in that list to iterate over
if it doesnt break there i cant imagine itd break elsewhere
(i will have to come back to this maze tomorrow, i am getting serious nausea kickback from whatever i ate
)
(the other important places the gift tastes are parsed is GetGiftReaction, which just gets the dialogue, and getFavoriteItem, which just returns null if theres no loved items. theres also CanReceiveGifts and hasPlayerTalkedToNPC but those just check for the existence of data in NPCGiftTastes and not the item ids)
and the "Speak" event command, i guess
The speak event command does what
which just adds that NPC to your friendship dictionary if it doesnt already exist
so, same check as hasPlayerTalkedToNPC
in case you speak to them for the first time in an event
the tile prop that let u fall in a hole is here too 
That makes me wonder
What is the lowest percent of perfection you can be
To get the rest of perfection via waivers
i'd have to recheck without SVE but waivers with 0 progress on anything got me to 91% (i left an autoclicker going as i went to dinner
)
i think you probably wanna look at low% speedruns for that
i know someone did it pre-1.6
Ugh, should I send Pathos a quickfix or actually fix this....
surely it's whatever percentage is the minimum to unlock the guy, since i think the waivers just cost money
i thought he was there immediately
I am not sure he would appreciate sudden bitflag enum tbh
But logically it becomes very messy otherwise
doesn't he send you a letter when he appears? but i forget what the conditions are
(fwiw i went to go check and while it will ofc be lower since you dont need to go this far, but that guy i mentioned got to Qi's Walnut Room with only 3% perfection)
What was the 3%?
the walnuts are a lot, some friendship was required
uhhh probably some other things idk its a 50min video
Lol
actually they didnt even get any friendships the highest was only 6 hearts. the 3% might actually just be the walnuts
tho i said itd be lower since the waiver guy is there earlier but i guess in the process of just getting money for the waivers, you might necesarily go above 3% in the process
(idk i dont remember what exactly counts for perfection)
dont say tht til you see my messy modjam code
don't look at me and my 12 strings of the word "click" in different iterations
Game1.addMorningFluffFunction ah yes, i too must have a morningfluff
the wicked, dreaded re-release... now with sdv1.6 and 1.6.9-beta flavours
we all have a little morning fluff 
incidentally, there is a map. but only if you're not playing in Nightmare mode 
hover over the topleft of the screen to zoom in
ofc i gotta play in nightmare mode, i'm stupid, not a weenie
(incidentally this is also why i don't play dark souls games because i get lost while driving)
you play dark souls games while driving?
it's a dark souls adventure for me every time i need to drive farther than 5mi from my house if i'm not using gps
Huh
(It's nearly impossible for me to get lost.)
I also apparently impressed a coworker by...memorizing an IP address today
ive got mine memorized! 192.168.1.1
(It was a 192.168.x.x lol)
This has a different meaning for me, I do a lot of memorizing of areas before jumping into DS
I memorized two numbers
i changed my local address to 10.1.1.x since i somehow kept forgetting 192.168 
it looks nicer. very formal
don't cheat the puzzles btw. i'll know 
i am on attempt two because i got lost
Jump over everything? Okay!
hm do you think it's inconvienant that light props only go on Front layer
i picked that arbitrarily
maybe? my custom tile prop lights go on alwaysfront
no bucket tool for booberrys maze 
i'm pretty sure this will find out if you use jump-over and get you for it
I don't use jump over! I have my own jump
does it work during events 😌

i did like the little swirling stars, definitely distracted me from the maze though
fireredlily can decide i guess
the other 3 puzzles go ham on the sprites 
not in a bad way but a, i'm a golden retriever with a low memory retention
favourite is definitely debug ebi Custom_blueberry_H2024_3
1 is good. 2 is so-so. 3 is perfect. 4 is pretty tootin good
honestly i expected nightmare mode to have warps with a map change cause of what you were talking about
ah yeah fair enough
makes me wonder if you could've gotten away with the custom festival though, hindsight is 20/20 as i was looking into custom festivals earlier today
it'd be very very very very very bad if i did, since this is the event format:```json
"{{ID}}_1/u 3 9 15 21",
"{{ID}}_2/u 5 11 17 23/n {{ID}}_1",
"{{ID}}_3/u 7 13 19 25/n {{ID}}_2",
"{{ID}}_4/u 9 15 21 27/n {{ID}}_3"
fair enough
ah yés you have 16 new events festivals in the month
Busy month
me, taking notes for my expansion's festival map:
make it probably 100x100 tiles so i never have to hear about npc compatibility
and many punch bowls
they're all away from the main town anyway, so it's just up to whether or not people actually wanna add in their npc to my wild adventure 
The Google Sheet I've been working on: https://docs.google.com/spreadsheets/d/11botrgeisuyBDAfzRWnm5K7IR9umaqT3Z9xX3re13Yo/edit?usp=sharing
Let me know if there's anything obvious I'm missing that I should add, or anything I messed up, if y'all have time to take a peek at it. 🙂
(I should almost definitely add the NPC tutorial links we have floating around somewhere to the title page)
I will have a look tomorrow
I don't know if you've added chips (like drop down chips) but that's what I had for my personal gift tastes creator
Yeah, the NPC Builder page uses the dropdown chips
I haven't put them anywhere else though
I should probably leave a note somewhere about the spouseroom change in 1.6.9
I might go back in and reorganize or at least color-code the Social and Romance fields for the builder, but right now I am sleepy
if i make all of an NPC's home locations null/invalid for one day only, will that cause a breaking error or will it just make the NPC quietly not show up to stardew that day?
is it a thing that angry spouses don't accept gifts?
I think that dumps all the npcs in Town
ah heck
okay well thats fine ill just add a second location somewhere off in the void for that day then
i just need to yeet an NPC out of the way to make room for my own temporarily
Doppelganger/changeling
different question: if i set an NPC's home tile to like, x500 y500 on a map that is less than 100x100 large, does that break. does the home tile need to be within the map tile boundaries or nah
im not looking for best practices here ive got 10 days
i put my shop cat for sailor styles at -1000 -1000 home and 0-schedule and that seems fine
Look, just make a jail map that has a NPC warp to it and call it a day. xD
bless thank you
cough sailor styles is mostly an untested 1.6.9 alpha
if someone did test it, they didnt say there's issues ☀️
this character im trying to move doesnt even have a schedule so iunno how id warp em
this should work fine
Hello! I can't seem to find the content.json code for events--does anybody have it, or know what I should do to start working on the events.json? (it is my last so yippiee!!)
Data/Events is a folder with a json file for each different map
Events are map-based, so you'll need to edit the appropriate json for where you want your event to trigger ^
(it is specifically the entry map in Data/Events in most cases)
well there's nothing stopping you from giving them a schedule; the sailor styles shop npc was just a mariner clone to start out, but works just as well as a villager-ish npc scheduled to either be inside the map or out
Island events are an outlier and should not be counted.
I'm still a little confused
I see the files you mentioned, though, what do I do with that?
hmm... i did not know this. so i can just add their name to the assetrequested event and the game will automatically pick it up and use their custom schedule? (the character in question being the dwarf). i assume id still need to add the spring fallback?
err well it's slightly more involved hahah, here's the main json files
but you can see the schedule is as basic as it gets
You need to do an "Action":"EditData" to target the json and add your own event entry, if you are creating custom events for your NPC.
oh but you did keep the other Old Mariner in there then. so wouldnt the original dwarf still be in the same spot
Just set invisible
i forgot that was a thing tbh
I'm not following; is that the code I should put into my content.json to target the event.json itself?
My apologies, little confused
First time making events
https://stardewvalleywiki.com/Modding:Event_data so here's the wiki page about Event data, which will explain what you're looking at (and give you two examples at the start for Pam's events).
Your starting block is going to be the same as the other EditData actions were for the NPC, but your target will have to change to the json you are trying to target within Data/Events.
Sample Block:
"Action": "EditData",
"Target": "Data/Events/BusStop",
"Entries": {
"eventkey": "your event script"
}
},```
Thank you
if you figure it out lmk cuz i cant get this for the love of god
What are you confused about?
im not getting any errors but also cant get it to even trigger
tried to make it trigger on a specific day and it doesnt work
sounds like you need to share an smapi log with patch summary while in the event's intended location, as well as your content json including your event data
fairly hard to troubleshoot 'doesnt work' hahah
That
And also, here you go
I recently overcame my fear of events and wrote several in a short span of time. I wanted to share some of the things I learned that helped me.
As the page title suggests, I'm not an expert. If you're looking for information from that level of expertise, check out Siv's guide and tips by Arknir.
This should display all possible errors, their causes, and their fixes
i have that and the "for babies" one open
If it doesn't trigger, and no error is displayed; it suggests that the whole code is not being read by the game in the first place.
So double-check your formatting
dont even think i wanna troubleshoot i kinda just gave up on the event part
you'll never succeed without failing ✨
Exactly!
so best get the failure out the way first so we can get somewhere
I'm 3 days away from my anniversary with my partner, and my gift only needs the events part now.
So I gotta push 💪
at least the other parts were kinda fun to fail on and realize the error was like some dumb thing like a typo or just reading teh wrong file
this just makes me wanna pull my hair off
Events are typically the hardest scripts to form
well, that's what this channel's for hahah
definitely the most problems i've had in years have been with making events in the last few days
but that's fine since other people have suffered first
i feel mad annoyign 😭😭😭😭😭
almost like begging for someone to hold my hand and guide it
(fun fact, Lookup Anything will still catch an NPC even if theyre set to invisible. you can keep track of Elliott even when hes on his book tour
)
For clarification; this goes into my events.json, but again, does anything go to my content.json.. or is it only the events.json that comes to play?
it goes into any list of "Changes": [] you have, whether it's in content.json or an "Action": "Include"-d file
Alright
General question
Does the NPC have to be at the sight of the event for the event to trigger?
only if you use an event precondition that says so, otherwise, no
Hmm
In that case, I'm facing the same issue of not being able to trigger the event
Are you able to look into it for me, please? I only made one quick event to test it out.
you'll need to share your content and log files 
I'll send over the log, though just give me a moment!
I'm gonna test out something as well
There you go!
@brave fable (sorry for @ )
precondition:
springisn't a valid event precondition, you want to replace this withz summer/z fall/z winter- your precondition ends with a
/which may break it, should remove it
script:
- the first command should be a music track name (from https://stardewvalleywiki.com/Modding:Audio#Music), if you want the museum music you'll use
libraryTheme - i've never used
question/forkand they scare me, but i can tell yours is totally busted
Got you
I've been trying to learn from another NPC mod as an reference--your point outs helped me out
Thanks!
I'll check it out
First bullet point; completely replace 'spring' with what you provided?
How about spring itself, in that case?
Yeah, the way questionfork works is only the first choice will trigger a fork, and that's not at all how you format the fork either, if you want a different outcome for each choice I'd do a quickQuestion and switchEvent
The z means “not that season”
The z precondition is "not season", in 1.6 you can use Season Spring instead as well
So the z summer z fall z winter ensures it must be spring
z season is one of the preconditions listed on the wiki, reviewing those will help a lot here!
(If it’s not winter, not fall, and not summer)
Second point, where do you see that?
The /
the end of your id/precondition
Is this better?
2920091/F/s F1F4Gift 500/t 1200 1800/z summer/z fall/z winter":
here's an example question/fork from Farm.json, edited down a lot to fit here:```json
{
"3917587": "pause 1000/question fork0 "Give Alex 5,000g?#Yes#No"/fork giveAlexMoney/pause 1000/speak Alex "Really?$s"/end",
"giveAlexMoney": "pause 200/money -5000/pause 500/speak Alex "Great!$h"/pause 500/end",
}
you can see that there's 2 outcomes, either the first answer (which is basically `switchEvent` using the param after `fork`), or the second answer (which skips the fork and continues the rest of the event)
I believe empty preconditions are fine (since to make a no-precondition string id event you need to add a / with nothing afterwards for it to not be considered just a fork)
sure, you need to load it yourself elsewhere though
I'll look more into it when I'm done with the events itself
Also the validator was fussing because you didn't properly write drawingChoice, if you haven't fixed that yet.
(please don't close drawingchoice with a {} it shouldnt look like that lol)
LOL
what do you mean?
(politely as humanly possible) ignore that message 😌
You have 3 opening { and only 2 } in your code
fireredlily, there should not be any {} near drawingChoice at all
as long as you rewrite drawingChoice to be a simple string as given in the Alex example above, you won't worry about {} braces
Yeah, the 3rd { isn't needed, right?
there should only be 2 braces in the file at all. drawongChoice is just a string, not a json object
3*
losing braincells right now
if somebody is able to take the code, and make an example of what you all mean
i'd really appreciate that
cries
Basically, drawingChoice doesn't use a {
right same here tring to read thsi chat
Is what button
(i think i (and blueberry?) misinterpreted your "if you havent fixed that yet" message as you saying "fix that by closing it with a }")
Ah, and where is the music put, in that case?
Right, I was incorrect in suggesting he close it, which I can go edit out, because I know why the validator was mad but not enough about how the fork works
ohhhh if that's what you meant then that's fine 
Highlighted purple is the bracket I removed
The pink is what stayed
Is this correct?
i think (i THINK) this should be fine:
https://smapi.io/json/content-patcher/30b12104e58445f783dbbcfe70adf327
Validator is pleased with it
sadly the validator knows even less about events than i do, so it's only going to say if the formatting's right
i could've screwed up the question/fork/switchevent commands, but we'll see
Honestly the thing that throws me (often) is that most event preconditions are a "NOT the thing I wrote", which is opposite of how conditions work
pls note i changed your event id to MyCoolEventId instead of 2996296296 since we're allowed to give them good names
Yep, you can even stick your ModID in the event name now I think, to prevent mod incompatibility?
I could be wrong on that though
Custom_blueberry_H2024_1234 is what i used for my four contest events
very compatible, very understandable, very ugly
Tokens work in a lot of places but there are a few where they do not and I don't remember them all
Tokens work everywhere outside of config schema and loads iirc
sounds about right 
i thought there was one more very niche area where you couldnt use them but i cannot for the life of me remember now so. maybe im just wrong
They also do not work in Tiled files because they are not Content Patcher code.
Which is a silly mistake I made before with Tiled warps
also can someone remind me of what the bare minimum is for an (antisocial) NPC to be like, functional in the world
whatever i posted above in the sailor styles files is the bare minimum im p sure
characters entry, portraits sprite, world sprite
schedule you'll be using anyway
Uh, a disposition I'd wager, that's all for a stationary non-speaking antisocial npc, then schedules and dialogue if you want
Sprite, Portrait, Data/Characters entry, Schedule with 2 points?
i wonder if my NPC being on top of an invisible one is whats makin me unable to talk to em then
Which technically a stationary non speaking antisocial npc could also be just a map tile if you wouldn't wanna create a dispo ;p
can't vouch for talking, sailor styles puts a tileaction on the npc for interactions
Dialogue is not actually required as far as I know
i wanted them to speak!
tileaction shop, take it or leave it 🤷
we'll see how much longer my patience lasts with it at all in the first place
The bare minimum to spawn any npc, social or antisocial is sprites portraits and a dispo, everything else is technically optional
they do spawn and appear, i just cant talk to em
Feel free to poke at my npc builder sheet for the basics
(and also BETAS throws a bunch of errors when i try, oops, i wonder what thats about oh well no time to worry about that right now—)
Hm, I wonder if CanSocialize false stops npcs from talking
i changed CanSocialize to true and yeah, still no talky.
Event does not trigger, but no errors are displayed; I suspect the issue is probably because I have nothing in my content.json file that actually links to the event.json (as every other file does)
The wiki does not supply information regarding this
well, if you didn't use "Action": "Include" to include your events file..
Mhm, doing that now
Hm, weird, did you add in the dialogue correctly, double checked the target is correct? 
oh i sure didnt
Data/Characters/Dialogue/{ModManifest.UniqueID}_NPCName
whoops
It wouldn't, that's a CP specific issue that would be taught via the CP author guide on the Github page
Are you... Doing this in c#...? That looks a lot like an interpolated string
sure am!
like 98% of the rest of the mod is all C# code, i didnt feel like including a content pack in this
honestly i gave up on doing npcs and shops and such in c#, it's a drag when cp is so flexible and legible (and reloadable)
if you weren't pretty done i'd say just move it over for convenience
My favorite Casey quote at it again
new modbuildconfig package is convenient for bundling them, too. just needs a couple of fixes for include patterns
Added this to content.json
"Action": "Include",
"FromFile": "assets/events/events.json"
}, ```
Though
i didnt do it because i thought itd be easy and convenient i did it bc i thought itd be quicker if i dont need any of the CP conveniences
or maybe it doesnt and its fine and my projects are busted. should test with my new pack hahah
turns out its none of those 3 really
The event.. unfortunately does not trigger.
amusingly my contest mod was going to be cp only because i thought itd be quicker if i dont need any of the c# tools capabilities. oh how wrong i was
Have you verified that your preconditions are exact?
Have you tested it with debug ebi to make sure your event is valid?
resend content json, events json, and log json 👏
I always do debug ebi first, then trigger it in game without preconditions and then finally add preconditions
Jesus
I must apologize for all the trouble guys 🙏
No errors are displayed in the console
Though, I'll send over both.
One question, did you mean the precondition to be s F1F4Gift 500 and not f F1F4Gift 500? (The first requiring the farmer to have shipped 500 items with the id F1F4Gift and the 2nd requiring 2 hearts with the npc F1F4Gift)
(that said i still cant get them to talk. but they CAN accept gifts when i turn that back to true for em. shrugs. maybe ill just have them be a silent shop only i dont really care that much)
Are you using location dialogue button?
(see i saw that s f1f4gift 500 and thought wow, funny the npc shares their name with an item. sure need to ship a lot of those)
(you never know, maybe that is the intended precondition)
That's the NPC name, so definitely a mistype on that s that should be an f
Yes, the problem is the s before it
Just in case you are doing location dialogue: NPCs need gift tastes for location dialogue to work. Even antisocial ones.
they talk now!
it wasnt the gift tastes tho. i actually did give t hem give tastes already
everyone's a winner 🥳
so if i add dialogue im assuming theres certain keys i need to have? cuz it only worked after i just copied the dwarf's dialogue file in
but i started from the dwarf's dialogue file originally and just cut out some stuff i didnt need
Now, for general questions!
Actually
I think I'm all clear
I just need to adjust the event aha
Alright, thank you guys!
I don't know if there are any you need to have. I always just have Mon through Sun as my minimum.
Also, did realize that no theme is playing in the event
I'm unsure on how the library theme sounds
I'll check it out
seems like you need em. i always assumed it'd fall back to like... idk. Mon
Spring is a fallback for a lot of the other NPC data, so that is one I would probably include just in case
Yes, but I do not know if the same holds true elsewhere
Ah, I see
Also for multiple schedules, they have Mon-Fri entries, but they use GOTO to not have to write a bunch of repeats out
So you might be able to set just one and then make the others GOTO that one?
Oh wait, that's only schedules too
My brain is not working right now
its fine enough for me to just write two more lines of dialogue anyway
as long as ive got mon - sun, im good. they only exist for a single week anyway
why is this not triggering...................
Data/Events isn't an asset the game will ever request, you want to go with Data/Events/NameOfLocationYourEventStartsFrom, such as Data/Events/FarmHouse or Data/Events/JoshHouse
Also I wouldn't load any vanilla event file unless I wanted to remove every event there and just have my own (which why would anyone do that)
So what I'd do is:
- In your events.json file add
{
"Changes": [
//Current content of your Events.json
]
}
``` 2. From your content.json remove the target line and switch it to `"Action": "Include"`
Kinda, includes don't have a Target ever, what an include is telling CP is basically act as if this file was in the content.json and do those patches, you can technically never use an include and have just one very long content.json, includes are basically just for organization
i seeeeeeeeee
thats good to know
ill probably just have it on my content then
since almost everything besides i18n and the schedules are inside of it
this isnt funny anymore
My last count of Stardew related tabs open was 207
It's how I know Stardew modding is still interesting to me
wWHAT 😭
i hope that isnt th epath im going down to
I have all the tabs of pages I refer to every day, plus ones I'm interested in getting to but not ready for yet, plus about 50 Nexus pages for mods I'm interested in or ones I've investigated for support problems. Plus I'm bad at closing ones I'm finished with lol
And my own mod page so I can monitor it for reaching 100 UDLs so I can celebrate
sounds painful
Sometimes it gets a bit ridiculous and I get lost but most of the time I'm happy with it
You're insane (in a good way), I love that for you, unfortunately for me, I am bad at organizing and a singular tab sometimes becomes 5 different pages for me that I constantly just switch between
I'm at the point where I could write just ev and my browser immediately autofills the event data page url
sorry, but, did i not do this right??? 😭 its still not triggering teh thing
does f 0 breaks the event or smth
It shouldn't, you're testing in fall between 6am and 10pm yes?
If I didn't have Firefox view to let me see my open tabs I'd get lost all the time lol
yeahhhh exactly
the haracter doesnt need to be at teh busstop before i enter for it to work right
unless i specify it
Correct
Can you try to debug ebi your event to see if it's being added at all
debug ebi <event Id>, don't forget to write out the modid instead of trying to use the token
huh
it kinda worked although i just saw a shadow moving offscreen
no theres nothing happenign
oh ok the log just updated let me check
what is this supposed to mean? her portraits work just fine
Did you load them to the Portraits/Maxine target specifically, or is there a modId in there somewhere?
huh
Okay, are you using the appearances system to set the portrait and sprite textures?
And if so, do they use the ModId?
im using it for her winter stuff does that count
Hey! I need help with a random issue, rather.
Take a look at this command;
/speak F1F4Gift \"This one is my favorite... but I think it needs something.\"/move F1F4Gift -1 -1 0/faceDirection F1F4Gift 1
Once it ended the dialogue, the NPC walked off the map (??) although I was under the impression that negative numbers meant a decrease in the tile (For example; 14x to 13x) hence, -1.
Could somebody tell me what went wrong there?
I'm complicating whether the /move commands asks for the tile coordinates, or the number of steps to a tile.
Is the NPC's internal name {{ModId}}_Maxine? If not, you will need to add a Texture field to change the default path for the Portraits and Character sprite
Also, is it winter?
If it's not, you may need a Default appearance block as well, to serve as a fallback
to set that i just redo teh same thing i did with that
?
I changed the values to 1,1,0 and that had them do the same thing, but in the other direction.
I've managed to understand that -1 is left, and 1 is right.
Still, I'm confused.
Copy/paste your Winter appearance block, change the ID, leave the season condition blank, change the portrait/sprite path to your default, and then set your winter appearance block to have a Precedence of -1, I think?
You want Winter to be a lower Precedence number so it is checked before the "any season" appearance you are adding.
this?
wait forgot about condition
nvm that one part
i can have them both like this right
You should be able to include Maxine and Maxine Winter within the same Entries block
So, not closing Entries before Maxine_Winter, but after.
I think
oh right
oversight
@ashen goblet Have you used positionOffset earlier in your event? I think that makes NPCs walk off screen if you then use the move command.
Whoops my previous message was for you
I just had to use /move twice
Like this;
/move F1F4Gift 0 -2 0/move F1F4Gift -1 0 0/
One AXIS at a time
Season: null might not work, you may just want to delete the season line entirely for that one, since not including the line makes it "any"
But the issue is
When the NPC walks upwards, the walking sprites are not in play
You can only see the sprite dashing upwards with no moving legs
I'm not sure why that is
alright
another question, doing "f Maxine 0", does the event trigger even if the NPC isnt met by the player yet? or do you need at elast one interaction with em
That one I am not sure of
Oh yeah I didn't even notice you were trying to do two at once >_< whoops
Does that happen in her normal schedule too or only in the event?
Event
Ignore the silly glitch here--I'm still testing, adjusting my first event but it just gives this straight animation (and does pull out a sprite later on, but it's very delayed)
it checks for an entry in the player's friendshipData dictionary. there wont be one if they have not met the NPC yet, so it wont happen until they meet
If you want it to trigger without meeting them, leave that precondition out
I don't know why that would be happening, sorry. If you post a link to your whole event script it might give me or someone else a clue though.
ah ok
Can do
Give me a moment
Ignore the Gordon Ramsey playing in the back
Background noise keeps me focused
So much jumping
To express cheer
Do ignore the last walking off the map glitch
I'll still work on that once I figure out the first part
Though if you see 0:07
Walking upwards; the animation is sorta just.. dead
It looks like both times immediately after the jump, the walking animation is wonky
Good call
Can you try a facedirection before they move after jumping?
its still not working https://smapi.io/log/aa503583c67149e9abb60e8411103ebe
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Home, with 20 C# mods and 5 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
Can you share your json of your event?
Isn't your NPC's internal name {{ModId}}_Maxine?
internal name is this? if so then yeah
You have just Maxine listed as the actor in the event
May need to make that match the internal ID
:(
i kept only that cuz i saw into nora's event and it said just nora so i was like well then that should work
Like fireredlily said you are calling them just Maxine when you need to be calling them {{ModID}}_Maxine.
Depending on the mod you are looking at, they may not have prefixed their internal name with the mod ID
A lot of older mods just didn't bother
What is Nora's internal name though? Because it might just be "Nora".
Nora's internal name is indeed just "Nora."
Your textAboveHead won't work either because you haven't specified an NPC for it.
thought that was like a must
It's a fairly recent practice but it is HIGHLY encouraged
(Basically SMAPI is looking for Portraits/Maxine because the event is calling for an NPC named Maxine, which internally doesn't actually exist in your mod.)
highly encouraged to not bother or to do it
Older or bigger mods like SVE and so on don't bother and rely on everyone else to work around their NPC Ids
It is encouraged to use the modId
Using {{ModID}} is not a must, but highly encouraged to avoid getting tangled with any other mod that would potentially use Maxine as an internal name.
On the off chance another mod adds a character named Maxine, it will save you a lot of headache
right, so nora is just nora becuaes theyre probably confident that nobody would use the same id then
Yep
(We've already had that with CSC and RSV's Faye, as well as TNG and MT's Thomas.)
You're doing great!
If pause doesn't solve it, then you can possibly use a happy emote instead of a jump in case the two jumps together are increasing the delay too much.
Pause 800 does not solve it
im confused, does the "move NPC" adds to the current position or does it overwrite/sets it
It's how many tiles away you want them to move from their current position, so it is relative
Maybe try taking the jumps out entirely just to test if that fixes the issue because if it turns out the problem still happens without the jumps you don't want to have wasted a bunch of effort trying to fix the wrong thing.
Uh, it's initial jump velocity
Emote is the command for it, yes?
Yes
Jump is the issue
What is the command for the dialogue that uh.. does not involve NPCs or characters
What I mean is, the box that appears to either describe a setting
so on
Message?
I suppose
It wasn't so much we "didn't bother' it was more that we didn't realize it would be a problem later on, and once it became apparent that it might it would mess up people's games to change it.
Hey! I need some help with formatting regarding the events.json
It sucks the most with temporary NPCs used in cut scenes, because most of the time you don't know they exist until you see the events they're in, and prior to 1.5, you couldn't change the name that appeared beneath the portrait so if you used namespacing to upload them, that would become the NPC's name.
Given this first event--I'm unsure on how to fit in the second and so on without getting an error.
the main issue as far as I'm concerned is that for a while people were naming their kids the same name as NPCs (without realizing that they were NPCs) and it would break the child mightily.
@vernal crest Apologies for the @, and I hope it's not a bother!
Are you able to help me with this?
No bother, I never mind being pinged :) I can try, but I don't actually know what you mean by "fit in the second"?
I want to do 5 events; 2 hearts up to 10 hearts.
I finished my first event as shown previously, and I want to add my second.
Still, I get errors about formatting.
For instance
I want to add the second event into the script, just struggling too.
Can you show me your attempt to add the second event? I need to see where you're trying to add it. Also, is the second event also in the museum?
You just have two extra close curly braces, the ones on lines 24 and 25.
(It would be much easier for you to find this stuff for yourself if you stopped using Notepad)
I'll eventually grow out of it
yeah, a lot of the conventions appeared because it was :
- easier to have them without display in annoying places for internal names
- more common to have npcs and so similar npcs names
- more obvious that it was needed
- easier to do
it wasn't really something obvious that we needed unique internal names outside of the mod id, since npcs mods were quite a lot of work and not so common : when a duplicate was happening, just checking here and asking the community if the name existed was usually enough (and in general, unique names are a good idea to avoid confusion)
with the more tools we had and the more existing npcs mods and the fact that unique prefacing was used for items and events now, it's more obvious that a real convention is a good idea
Additionally, I don't see what they mean with this error;
https://smapi.io/json/content-patcher/9091c7d8175b4d91be09cb8160f51f0c
You have an additional quote mark after the 1 in this command which is breaking your entry: speak F1F4Gift \"Oh, @!$1"\"
No, the quote mark needs to be after the backslash, not before it. Remove the one that is directly after the 1.
I see the issue
Yeah
Thank you
Also, another issue;
It's not error in the console, but instead just the code itself
When it gets to the choices, clicking any choice repeats the choice prompt
So if you were to click 'Yes'
It gives you the options again repeatedly
then you don't have the right formatting, but it's hard to know what's wrong just with that
honestly for me i don't know the different questions code well enough so i can't help with that, the only one i use is quick question for this reason
search vanilla events or mods using this feature and see what they have you don't
yeah well you're in luck because the advice still apply
but if i can progress a bit on my own mod making i may try to look at it later
but basically
you are missing stuff if you use quick question
Still seems there is an issue, regardless.
the wiki has info albeit hard to understand without looking at a vanilla example


