#making-mods-general

1 messages · Page 288 of 1

hallow prism
#

condition would be easier for me to process, but with "when" i often mix what is needed for and and or check

ivory plume
#

If it's for a specific NPC:

"When": {
    "Relationship:Abigail": "Dating, Engaged"
}
hallow prism
#

thanks!

soft granite
#

How do i mark my tech support case as resolved?

ivory plume
#

You should be able to add the Mark As Resolved tag to the post (right-click the header and choose 'edit tags').

soft granite
#

Thanks!

uncut viper
#

SDVpufferheart thank you!

grand gale
#

Hi, I'm using the built-in translation API but can't access to the strings other than English. The same issue happens with Game1.content.LoadString() as well. How to fix it?

#

I also used translations for GMCM and it works fine. So I think the problem shouldn't be with the json file.

rare orbit
#

quick question? how do i edit map files?? Pelican town food truck by 8BitAlien and Overgrown Valley by lune seem to both work but the tree and the truck clip to each other

#

idk how to really edit that

#

honestly knowing how to scoot objects over would be very useful for the future

hallow prism
rare orbit
#

cool cool! it might take a moment to get it but thank you!

hallow prism
#

yeah allow yourself some time for stuff to be processed

rare orbit
#

yee! i wish there were videos on it. i tend to have an easier time understanding it when it's taught in a visual format ;w;

golden spire
#

there are some videos on it, for stardew on youtube, but they're a bit dated.

Also it's easier to just copy all the maps/tilesheets to a working folder somewhere, and open/edit an existing map. You're mostly just painting on tiles to the correct layer

rare orbit
#

cool cool!

#

imma go on youtube n save em!

golden spire
#

and then crop the map to whatever size you want for the patch/edit

rare orbit
#

so like most digital art programs??

golden spire
#

yes. just "painting" with tiles, but you're normally just placing them,

#

and like a good paint program, there are layers, and you "paint" on the correct layer

soft granite
#

I am debugging a mod that shows the incorrect sprite during an event . It’s a mod that depends on another mod, so i’m not sure which mod’s jurisdiction the error is. If i wanted to modify the content.json to enable debug mode, which pack’s content.json should i put it on?

golden spire
#

you can use the patch summary mod.id in the smapi console to see what each mod is doing

soft granite
#

Good advice! Thanks

rigid musk
#

Adding recycling data to an object would just be editing data/machines for the recycling machine right?

hallow prism
#

yes

rigid musk
#

Thank you SDVpufferthumbsup

hallow prism
#

vmv has one example if you want me to grab it

rigid musk
#

I'm gonna go take a break for now cause I'm tired but sure! If you ping me I'll make sure to read it later when I work on stuff again :3

hallow prism
#

(also i hate you discord when you prevent me to just copy paste some json stuff)

astral prism
#

!unpack

ocean sailBOT
#

Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!

hallow prism
#

just to know, the update with the unlimited special order is a WIP with no ETA yet, right?

strong tide
#

hiya folks, i took quite the break from mod dev, just as a quick refresher, we can't traverse the sdv codebase without ILSpy or the likes of right? ignore me -.-

opal oriole
#

Hi there! I'm struggling to find an easy tutorial on how to make a mod that adds a house to an existing map. If you know of one, could you please share it with me? I'd really appreciate it!

hallow prism
#

and look at a simple mod doing what you want to do too

lucid iron
hallow prism
#

thanks

calm nebula
#

Hi chu!

lucid iron
#

atra waves

strong tide
#

anyone know where in the game files the creation of the lil bubbling fishing spot is ?

calm nebula
#

Gamelocation SDVpufferthumbsup

#

Vaguely recall the function name as "update every ten minutes even when farmer is not here"

uncut viper
#

i believe its in performTenMinuteUpdate

#

updateEvenIfFarmerIsntHere doesnt do too much in GameLocation itself iirc

strong tide
#

thank you, i'll have a look into it ^_^

stark spindle
#

For gifting if i wanted to everyone except 3 people in town to reject an item is there i global place to put a RejectItem_Itemid or do i just need to do it for every character except those 3?

strong tide
#

Hmm doesn't seem to be a specific method called for the creation of a splash point which im assuming is the reference to those bubbly spots

uncut viper
#

there isnt going to be

#

its handled within that update function

#

many things are just kinda scattered in places and not given their own functions

lucid iron
#

what are you hoping to do

strong tide
#

i kinda wanted to toy around with creating a splash point around the player for example a x% chance to create a splash point near a player if there isn't one there already

#

i kinda wanted to see how it was implemented i suppose

hallow prism
#

atra made some code for VMV to spawn bubbles

#

well, bubbles and sparkly spots

strong tide
#

yeahh so i think im going to be able to assign a new splashpoint spot closer to the player if there isn't one already close by. i just need to learn a little about how it all works, im a little bit rusty you see

hallow prism
#

(there are other stuff here)

#

no idea how to actually check if there's already a sparkly spot however (and i don't code)

#

so this may be of limited use for the specific case

strong tide
#

i have the bit to check if there is a current splashpoint, and i am sure i can figure out from the gamelocation how far away it is from the player with enough trial and error lols, its just learning how to use the back layers of the map and restrict the x + y to a radius i believe but i might be wrong. thank you for an example, i appreciate it

urban patrol
#

which is worse: my building being absent from town entirely during the egg festival on year 2, abigail getting stuck beside the building during her advancedMove before the egg hunt, or me trying to find a way to edit her advancedMove? i would love to just plop her somewhere else and retain her advancedMove but character coordinates are hidden in Set-Up or somewhere else that i can't find

light jasper
hallow prism
#

i also don't think people would care about abi being stuck 😄 but to be fair i wouldn't advise anyone to add a building to town

urban patrol
#

it's been a bit of a struggle yeah :') but so far all of the y1 festivals work okay

light jasper
#

usually it's me and whoever I'm playing with VS abigail lmao

#

if she wins it means we're bad

#

do I have to listen to pathos here? I feel like I know what I'm doing but also I recognize that I'm an idiot

lucid iron
#

using the property version is fine

light jasper
#

I mean I can't get the event on the wrapped version, so I need it right?

lucid iron
#

ah yea urite yggy

ivory plume
#

Usually you'd want to use the property instead, but in this case you're using the net field deliberately to access its events. So you can suppress the warning in this case.

light jasper
#

oh hi lol
great, thanks 👍

ornate locust
#

I also would not advise adding a building to town, I say while adding a building to town (weeps)

urban patrol
#

https://www.nexusmods.com/stardewvalley/mods/31888 for fans of the show OR anyone who likes characters and content with a hint of the supernatural about them, i've just released my first mod, with many more updates planned in the future!

Nexus Mods :: Stardew Valley

An expansion based on Netflix's Dead Boy Detectives. Adds new characters, locations, and more!

#

and by "it's done" i mean i still have one zillion more things i want to do but here's the initial release

hallow prism
#

oh it's for this mod

#

i guess a disappearing building isn't too out of theme honestly

urban patrol
#

haha yeah

#

in the end nobody gets stuck during the actual egg hunt, so i decided it was okay to have abigail get stuck in the beginning every other year

proven spindle
urban patrol
#

oh yeah i leveled up yesterday i forgot!

undone hawk
#

Eyyyyyy first bug report! I'll be tackling that tomorrow it seems :3

urban patrol
#

ooh nice!

light jasper
#

does SObject#isOn indicate if a machine is running?

#

or is it for something else

ivory plume
#

It's for something else. That's used for certain items like torches or fireplaces to check if they're lit.

golden spire
swift falcon
#

we need more movies limey i love the other one you posted😭

#

such an unexplored area in sdv modding ngl

golden spire
#

well the field is wide open for others... hopefully ones with better drawing skills

light jasper
light jasper
golden spire
#

I think I said in here, I know I have in other rooms, the main problem with making custom movies, is that it's a lot of work. For something that only gets watched once during late game.

ivory plume
light jasper
#

yeah that's what I was wondering, it works normally after you sleep, I just don't have anything to deal with the initial data, and heldObject isn't set.

#

I can make a workaround for it, I think it's one of the only machines that does this, it just bothers me that my current logic doesn't work with a solar panel at its default state

golden spire
#

the real mystery is why a solar panel and a lighting rod generates a battery.

latent mauve
#

Is it necessary to create a separate i18n entry for both the plural and singular of a noun, or is there an easier way?

#

I'll do it if I have to, but if I can get away with only using one entry for both Duggy and Duggies, for example, that would streamline things a bit

hallow prism
#

i don't really see another option unless you can grab the vanilla text somehow

lucid iron
#

theres auto pluralization for some context (probably not monsters tho)

#

thats how you end up with Weedses

urban patrol
#

they had gollum do their translations /j

latent mauve
#

Fair enough. Different question then: If I wanted to i18n my config options, do true/false for AllowedValues need to remain true/false and not have translations to function?

#

(the example in the CP documentation for Config > Translations uses Metal and Wood, so not quite the same situation)

ivory plume
#

They should be true and false. Content Patcher will detect that it's a boolean field, and represent it as a checkbox in the config UI.

latent mauve
#

Thanks! I will skip the config.<name>.values.<value> key for those config options then

ivory plume
#

Mod build package 4.4.0 is now available!

This has two big changes:

  • Added %ProjectVersion% token for manifest.json.
    The token is replaced automatically with your project's <Version> when the mod is deployed or zipped, which avoids needing to set it twice when following .NET best practices. This also works with bundled content packs, so you can keep all your versions in sync.
  • Revamped the package readme.
    This makes it easier to see the features at a glance, and collects the info for each feature into one place.
latent mauve
#

i18n question: Can comments be used in i18n files?

ivory plume
#

Yep.

latent mauve
#

Thank you!

#

I'm having trouble finding the specific event where you get the magnifying glass from Krobus (not the part where you see him at the bus stop, but the part after you investigate the bush) in the unpacked files... Is that possibly hardcoded?

#

(I mainly want to change the NPC's name in the resulting dialogue)

ivory plume
#

I don't know off-hand, but you can use Debug Mode to see the event ID for the event that's currently playing.

uncut viper
latent mauve
#

Yep, I just need to change "Shadow Guy"

#

Thanks!

uncut viper
#

it just loads that string directly since its not an actual event when you shake the bush so editing that should do it

latent mauve
#

That's really helpful, I apparently haven't scoured String/Locations enough since I missed that

lucid iron
#

when you edit CustomFields like this

{
  "Action": "EditData",
  "Target": "Data/Machines",
  "Fields": {
    "(BC)24": {
      "InteractMethod": "LivestockBazaar.OpenBazaar, LivestockBazaar: InteractShowLivestockShop",
      "CustomFields": {
        "mushymato.LivestockBazaar_Shop": "Marnie"
      }
    }
  }
}
#

is CustomFields entirely replaced

uncut viper
#

i would think so

tiny zealot
rigid musk
#

Does FarmTypeManager's "CPConditions" work with configs?

lucid mulch
#

ModBuildConfig and ModManifestBuilder approaching on eachothers turf

lucid iron
rough lintel
#

sooo... when is globalfadetoclear going to not be broken

#

id like to use it but god hates me :-|

vernal crest
#

What do you mean, broken? I use it.

rough lintel
#

wtf everyone tells me it sbroken

#

im going to explode

lucid mulch
rough lintel
#

i used it but it like was kind of a jarring fade in instead of.... smooth

#

like globalFade

urban patrol
#

i wouldn’t call it broken but i would call it annoying (<-person who cannot wrangle event commands to save their life)

tiny zealot
vernal crest
#

It's kind of weird because it goes mostly light quite quickly and then takes most of its time just to remove the last little bit of black overlay but I use it without it feeling jarring, I think.

lucid iron
#

i get the idea i think, tho it is kind of pain to need 2 edits for properness here

#

my second confuse is why does droping an item into machine not block interact method bolbthinking

#

im not sure if that is just how it works or what

rough lintel
#

do fadein and fadeout work at all

urban patrol
#

there's no fadein or fadeout but there is fade

#

and unfade if fade's parameter is set to not true

rough lintel
#

so with that

#

if i want it to fade and stay faded

#

and then unfade ... later...

#

do i do fade true first? and then just...?? or does it not work like that?

#

is it even true that you type? or just fade unfade?

#

im just tired of doing the globalFade viewport -1000 -1000 trick because i can't fade it back in right when moving the viewport

#

so i thought this would be better, but it is still not doing what i want lmao

lucid mulch
#
public static void Fade(Event @event, string[] args, EventContext context)
{
    string option = ArgUtility.Get(args, 1);
    if (option == "unfade")
    {
        Game1.fadeIn = false;
        Game1.fadeToBlack = false;
        @event.CurrentCommand++;
        return;
    }
    Game1.fadeToBlack = true;
    Game1.fadeIn = true;
    if (Game1.fadeToBlackAlpha >= 0.97f)
    {
        if (option == null)
        {
            Game1.fadeIn = false;
        }
        @event.CurrentCommand++;
    }
}
urban patrol
rough lintel
#

ok wait i just had to add true to globalfadetoclear

#

i'm going to jump off a bridge. sometimes talking about it helps figure it out lol

#

nvm fellas

#

but thank u for rubber ducking for me

lucid mulch
#

rubber duck debugging is great

urban patrol
#

i'm trying to understand how UnlockConditions for NPCs and GSQs work. i think the GSQ that i want would be IS_EVENT {{ModId}}myeventname, because it just has to check if you've seen the event and then the NPC is unlocked forever, right?

uncut viper
#

that would make the character only unlocked while you are in the event

rough lintel
#

wouldnt it be PLAYER_HAS_SEEN_EVENT

uncut viper
#

yes

rough lintel
#

my big brain status restored...

uncut viper
#

the UnlockCondition has to remain true after for them to stay unlocked

urban patrol
#

i see!

ivory plume
# lucid mulch ModBuildConfig and ModManifestBuilder approaching on eachothers turf

(ModManifestBuilder is safe, since it has a different philosophy from the mod build package. The mod build package sees the manifest.json as the source of truth for the mod info; the version is an exception only because it's a standard .NET build property, but even then the source of truth is still the manifest.json (which can optionally pull the version from the project). So given that philosophy, it'll never replace ModManifestBuilder which sees the project file as the source of truth for the mod info.

And of course you can use both together, in which case ModManifestBuilder just creates the manifest.json which the mod build package then uses.)

rough lintel
#

ok new weird thing: after setting the viewport to -1000 -1000, i try setting it back to the original viewport after some dialogue, and it's 1 tile off. tried changing the x to be one tile more, but it still sets it back 1 tile off. what the flip.

#

globalFadeToClear what voodoo are you doing rn.

urban patrol
#

is it not recommended to have the player be All? i wouldn't want the character to be permanently inaccessible because you invited joe to play once and he never played again for example, but to me it makes sense that logically all players should have seen the event, otherwise you would be minding your business fishing and she would pop up lol

uncut viper
#

All would mean everyone has to see the event

urban patrol
uncut viper
#

which you dont want

#

you generally do not want NPCs unlock status to differ between players

urban patrol
#

okay

#

would every player still be able to see the event at whatever pace they choose?

uncut viper
#

assuming you didnt gate them out of the event somehow, sure

#

you can always make it a broadcasted/shared event too

urban patrol
#

oh that would be ideal i think

#

because it's story-wise a one-time occurrence to bring her into the game

uncut viper
#

then i would make it a shared event and check either the Host or Any for having seen the event

urban patrol
#

sounds good!

rough lintel
#

also, wtf does clamp do

urban patrol
#

idk how it works, but it's supposed to lock the camera from moving like how it does when you approach the edge of the screen. i'm not sure how useful it would be in an event where you don't control the farmer

#

i think. i just went to check the wiki and it's not there so actually idk where i got that from

uncut viper
#

i think it will make it so that if you set your viewport too close to the edge of a map, it will shift it as needed to make it not show off the map

#

emphasis on "i think"

#

from a cursory glance at the command code

#

i dont know what the unfreeze part does

#

i guess it means if you dont include the unfreeze part then the viewport wont move after. i guess. shrugs.

golden basin
#

anyone understand how to spawn artifact spawns via farm type manager

lucid iron
#

I remember talks about it few days ago

#

Usage of "buried" in ftm

latent mauve
#

What would be a fair price for a specialty milk item? (Lon Lon Milk and Large Lon Lon Milk)

lucid iron
#

Previously you could do it by BetterCrafting or Calcifer

latent mauve
#

I know what the normal milk sells for to Pierre, so I'm not sure if should just mark that number up a bit and then double it.

lucid iron
#

Does it still come from a cow

latent mauve
#

The farmer cannot get it from a cow.

golden basin
#

so i can make a catalogue?

latent mauve
#

It is from the ranch cows specifically

lucid iron
#

I didn't actually get the impression that lon lon milk is better than regular milk when i played

orchid glade
#

If I want to change the character spawn location on summer fridays only after a certain event is seen, would it be better to put those conditions as a When in the EditData, as a GSQ condition in the "Home" part of Data/Characters, in both at once (redundent..), or to split the conditions (like When event is seen, EditDate so Home changes on condition summer friday)?

uncut viper
#

its name brand how could it be worse

latent mauve
#

I'm gonna play into the "special feed" aspect, so these are the cows Marnie spoils with Amaranth.

lucid iron
#

I feel like it'd be unbalanced if they are free free

golden basin
#

hell yes

#

thats exactly what i need too I can get rid of that tree thing in my animals buildings

lucid iron
#

Also it's gotta be a big craftable not furniture bc I am using niche vanilla feature for this kyuuchan_run

golden basin
#

sounds good to me > : 3

urban patrol
#

SMAPI and/or content patcher aren't friendly with android, right? i just got a comment about my mod not working with android lol

lucid iron
#

What's the list of dependencies you have

urban patrol
#

the above two along with spacecore and BETAS

#

and an optional dependency for SVE but i assume that's not relevant

tiny zealot
#

when i get a comment about my mods not working on android, i say something like "sorry, good luck" and attempt to forget it happened

urban patrol
#

yeah that's the reply i went with 😂 but then i realized i know nothing about android so might as well ask

lucid iron
#

Well ik spacecore need the special fork

#

So i guess android doesn't like something in BETAS?

brittle pasture
#

any mods other than the ones that get SVE to run is most likely not compat

lucid iron
#

Content patcher does work tho

brittle pasture
#

(actually does SVE even work on 1.6 android)

hard fern
#

With difficulty

lucid iron
#

With a fork yea i believe so

latent mauve
#

Question, since I can't easily test without making yet another save and progressing it to CC unlock: Does adding an object with the context tag large_milk_item automatically make it work for the Animal Bundle in the Community Center?

brittle pasture
#

(in unrelated news, got another Android bug report for EMC today SDVpufferclueless )

latent mauve
#

(I'm okay with it not being valid, just not sure if that's something I need to deal with)

lucid iron
#

But yea nic you as a content pack mod really can't do shit about it

brittle pasture
latent mauve
#

Excellent!

lucid iron
#

Just dw about it™️ is my recommendation

latent mauve
#

I wanted the NPC item, but not to make the bundle too easy, so that works out great for me.

urban patrol
brittle pasture
#

none

lucid iron
#

1oo

brittle pasture
#

actually the report is just "the furnace cannot be used", but I'm 95% sure it's android

lucid iron
#

I thought emc just refuse to load on phones rn

brittle pasture
#

it loads, but then explodes machines

hard fern
#

Why would people reporting a bug ever include a smapi log

#

That sounds unrealistic

lucid iron
#

Unrelated to ur android woes selph, but i think it would be fun to make interactmethod that passthrough to trigger action

orchid glade
#

Hey if you have an NPC that spawns on the beach, will they spawn during the night market?

lucid iron
#

And perhaps to tileaction (you do get a location in the arg

#

Like directly out in the beach bolbthinking

#

I wanna say no cus night market beach is swapped out for different location right

brittle pasture
#

different map, but I think same location

#

actually ignore that im dum

lucid iron
#

But all me crab pots r not there

brittle pasture
#

yeah I just remembered

orchid glade
#

Oh so not the same location then?

latent mauve
#

I think it's just a map change-- would warping to the beach during night market be a good test or nah?

orchid glade
#

you can warp there during night market

latent mauve
#

I think your NPC will show up there but it's not really hard to test quickly.

orchid glade
#

true

calm nebula
#

No

orchid glade
#

I'm also still preoccupied with whether I should put conditions for using that spawn location in Data/Characters or on the patch that edits data/Characters!

latent mauve
#

the Night Market schedules all direct them to the Beach

calm nebula
#

It is not a map change

#

It is truly a location chanfe

#

But every third thinf in the family checks for that

#

And redirects

#

Warps redjctr

latent mauve
#

ah, and there's C# shenanigans that make the references to Beach in schedules work anyway, I take it?

calm nebula
#

Maybe npc sxbeudsls

#

Fish should now have fwdjbg

tiny zealot
#

tag yourself i'm sxbeudsls

calm nebula
#

I'm gonna go ro bed now

orchid glade
#

Wha that sounds complex

brittle pasture
#

I checked Willy's schedule and it seems he spawns in the saloon on night market days?

lucid iron
#

Are you doing ok atra

calm nebula
#

I'm doing fine just tired and will sleep

orchid glade
#

I guess she just wouldnt spawn on nightmarket then. I can work with that I guess

latent mauve
#

I looked at Elliott's

lucid iron
#

But anyways bezajel if you give your npc a little house map to spawn at u can deal

orchid glade
#

Doesn't elliot spawn in his house?

latent mauve
#

yeah, I just knew he had an easily findable night market schedule entry

#

"winter_17": "800 ElliottHouse 1 5 0/1000 ElliottHouse 6 4 0/1100 ElliottHouse 1 5 0/1130 ArchaeologyHouse 21 11 2 elliott_read/1650 Beach 38 36 2 \"Strings\\schedules\\Elliott:winter_17.000\"/2500 ElliottHouse 13 4 1 elliott_sleep",

orchid glade
#

Oh yeah do schedules auto redirect Beach to nightmarketBeach

latent mauve
#

but I'll pull up his Home entries too to be thorough

golden basin
#

yes it does auto redirect

orchid glade
#

cool

latent mauve
#

Yeah, Elliott never changes his home

orchid glade
#

I am guessing squidfest and trout derby work the same way?

latent mauve
#

So I suppose, an easy solution if the NPC doesn't spawn on the beach, is spawn them in town on the bridge and have them walk to the beach first thing.

#

on Night Market days.

lucid iron
#

Those might be passive actually

latent mauve
#

Night Market is also passive, chu

lucid iron
#

I don't remember misplacing me crab pots during those

latent mauve
#

According to Data/PassiveFestivals

orchid glade
#

Yeah it's quite a different NPC, I don't want her actually to travel anywhere like a normal person

#

Just sort of, 'be'

lucid iron
#

A map tile PecoSmile

orchid glade
#

But 'be'ing in different places sometimes

#

lol

lucid iron
latent mauve
#

TroutDerby and SquidFest have "MapReplacements":null

#

and are just map patches

#

That's the difference

orchid glade
#

Ohh cool

lucid iron
#

Yey

latent mauve
#

(that's also why you can get silliness with desynced players seeing the Squid Fest map patch a day later and not interactable sometimes in multiplayer when using pause time mods, I think)

brittle pasture
#

could be fun, but better crafting already kinda does that, though it is only tile action

vernal crest
#

Is changing homes one of the things that risks duplicating the NPC?

uncut viper
urban patrol
uncut viper
#

nah i wouldnt go out of your way to especially since it might not even be BETAS, i was just curious if they had. no ones reported anythin to my page directly so

urban patrol
#

yeah who knows 🤷

lucid iron
#

could easily be bc they installed wrong spacecore

urban patrol
#

would i need to have done anything on my end re: android spacecore? or is that handled by spacecore

lucid iron
#

no

lucid iron
#

there's a special fork of spacecore that works on phone

#

if they didnt get that then spacecore doesn't work

orchid glade
#

The thing for Home says that it takes the first one that meets conditions, so unless that's what bugs out sometimes. It's only something I've heard passing mention of though.

graceful goblet
#

hey y'all! is there anyone who's familiar with modding maps specifically down to chat and help me out as someone who's never modded before? basically there's this edited vanilla map in a mod i really like but i dont want anything else in the mod but the map... idk if it's possible to get it out? much thanks!

vernal crest
graceful goblet
vernal crest
#

Wow okay I was definitely expecting a smaller mod but that's ok lol. I think it will mostly be a case of commenting out everything from the content.json except the stuff that applies to maps, though because there are probably map changes from events and things that will complicate things slightly.

graceful goblet
vernal crest
#

You don't need to touch any files except .json files.

#

You can just leave everything from SVE in the folder and just comment out the json that tells the game to use most of it.

#

"Comment out" means to add comment characters to the lines to indicate that the line is a comment and should therefore not be read as data/executed as code, by the way. It's how you can "delete" code/json without actually deleting it.

proper bobcat
#

Is there actually a way to 'delete' events and content using a CP mod or something rather then directly editting the mod?

tiny zealot
#

yes

uncut viper
#

it depends

tiny zealot
#

button has considered something i did not

vernal crest
#

If you want to just extract the bits of SVE that you want to use and create your own (personal use only*) mod with those you can, but I think at the beginning at least it's going to be easier to approach it my way instead because there's less work involved so you can see if it actually works and then if it does you can just pull the stuff that isn't commented out into your own mod.

proper bobcat
#

There is a certain event in a mod that doesn't suit my personal headcanon, so I do wish to personally edit it out, although I don't have anything against the mod itself

graceful goblet
uncut viper
#

it also somewhat depends if you mean delete or if overwriting will suffice

#

audiochanges, for instance

#

deleting an event is easy

tiny zealot
#

also make sure your patch comes after the one that adds it. recommend a Priority value for this

uncut viper
#

if a mod Loads over top an entire asset, you cant really simply delete those edits either. at best you can simply become the one loading instead

proper bobcat
#

Tysm, I always get scared of replacing stuff with 'weird' data types even though I know as a coder that it's not only acceptable but pretty normal haha

tiny zealot
#

lol i do consider events a weird data type, that much is true

uncut viper
#

(you can of course edit the data after their Load, but you wouldnt stop them from having replaced the entire asset in the first place)

vernal crest
# graceful goblet awesome! i'll def try your way first, i anticipate needing quite some time to go...

You should be able to do the bulk of the changes just in the content.json by commenting out the "Action": "Include" code blocks for anything that isn't map-related, but for map stuff that is dependent on certain events having been seen etc you'll have to decide individually what changes to make.

I won't be at my computer for several more hours so I can't look at the SVE files yet but if you run into trouble you're welcome to ping me about it and I can have a look when I'm free.

proper bobcat
#

Worst case scenario I'll just edit the event to have the farmer just stare at the normal situation and just leave lol

graceful goblet
lucid mulch
#

AudioChanges is the main exception to the rule, because its not the asset itself, its a list of mutations to run on the audiobank(s)
so removing an entry in AudioChanges wont remove the audio (or if it was an override, wont revert back to the vanilla value)

hard fern
#

wheew taking a break and spending time to overthink my npcs paid off

#

i have newfound inspiration

sullen girder
#

Is there anyone here that's super familiar with using the mod Theme Manager? I'm attempting to get more compatibility made for my Dark Mode UI, and there are some niggly little texts I can't seem to find the name of to add to my theme.

#

Namely these bits. I'm assuming this is Small Font and Tiny Font.

#

While my mod has those replaced via the png, that's not super helpful with hard coded colors like this.

inland cedar
#

in event UpdateTicked, how to check if game is not paused?

brittle pasture
mortal goblet
#

which map is the top of mountain? i'm so confused.

#

where the 100% anime plays

brittle pasture
#

Summit?

lucid mulch
#

the definition of 'paused' is very vague

lucid mulch
mortal goblet
#

not summit

brittle pasture
#

that is the summit, the panoramic background is hardcoded

lucid iron
#

what are you looking for

#

sve's got a different summit

spring marlin
#

what is a "harmony patch postfix"?

lucid iron
#

!harmony

ocean sailBOT
#

Harmony is a framework for patching .NET code, allowing you to take any portion of the game's logic and insert or substitute your own. This gives you more flexibility and control than SMAPI helpers and events, at the cost of being typically more complex and difficult to use safely and correctly, and more likely to break with a future update of the game and/or SMAPI.

If you are trying to do something that isn't possible or practical with SMAPI alone, then Harmony is usually the solution.

For more information, refer to the following:

mortal goblet
uncut viper
#

@latent mauve @vernal crest

vernal crest
#

You're the saviour of all our NPC icons meow_sticks

mortal goblet
lucid iron
#

its cursors

#

the sky is 1px wide but drawn across the whole thing

#

the bushes are from minigame clouds

uncut viper
#

just like real life

lucid iron
#

if you want a panorama i made framework for that Dokkan

mortal goblet
#

in fact i want to make an anime in the panorama

lucid iron
#

i don't know what you mean by an anime yggy

#

you can add some moving stuff with temporary animated sprite i suppose

mortal goblet
#

i will take a try. thanks!

worldly sundial
#

Hey do all objects inherently support quality? Like even tools, rings, bait etc? ( I know it wouldn't do anything without extra work)

rigid musk
#

i was going to say yes but im not sure honestly

#

I think so

#

CJB item spawner lets you spawn stuff in like that (not sure about the rings but i know bait does)

#

not tools though

#

i think... i think id have to go and test it actually now that i think about it

uncut viper
#

as long as it subclasses from Item it can have a Quality, tools included

rigid musk
#

Thank you oh knowledgeable Button

uncut viper
#

items, tools, clothing, rings, and special items

#

or well, objects* not items, which has its own subclasses as well i.e. furniture and mannequins etc

#

(there are Items and there are Objects and there are Objects but Objects =/= Objects. do you get it)

inland cedar
urban patrol
#

the mayor yearns for the mines

#

i have people asking if they can translate my mod (i have it in my permissions that i don't want AI translations, but we'll see how that goes), but would they even be able to if it's not i18n-ified?

#

relatedly, does anyone speak chinese lol

brittle pasture
#

that would require them to basically redistribute the files

#

are you okay with them redistributing the files?

urban patrol
#

the code i don't care about, but the art no at least for the time being

uncut viper
#

they just need to redistribute the jsons

#

unless your art has english text in it

urban patrol
#

i think i have one sign in english

uncut viper
#

maybe some tmxs too if theres text in those like message actions

urban patrol
#

oh yeah i've got a bunch of message and dialogue actions

#

but tmxs i'd be okay with them distributing

uncut viper
#

by doing the file redistribution way of translating, itd also require users to, yknow. overwrite your files. which is not reversible. and it'd break in every update

brittle pasture
#

regardless that sounds like a recipe for breakage

urban patrol
#

eesh

spring marlin
#

how do i make a custom shop contain wine with a type?(not the semi-rare "wine" item, but like "strawberry wine" or whatever)

uncut viper
#

and not even the kind of break thatd be easily fixable, since theyd have to replace the files again... which wouldnt have your updates

#

theyd be broken until the translator updated the mod

brittle pasture
#

yeah, I recommend i18n-fying your mod if you can. there's an i18n converter you can try, though you'll probably have to convert the tmx files to reading from an asset

urban patrol
#

yeah it's on my list of things to ideally do, but it's not a high priority for me at the moment. i'd rather add the additional characters etc. that i've started making

uncut viper
#

the longer you wait to do i18n, the bigger pain in the ass its going to be later

urban patrol
#

oof

uncut viper
#

see: exactly this scenario

#

if it sucks to i18nify it now, its gonna suck a lot more after adding a bunch more characters and locations and dialogue

urban patrol
#

yeah...

uncut viper
#

imo you should think of i18n-ing it as a one time effort payment and you might as well pay it while its the cheapest itll ever be again

#

but its up to you ofc

urban patrol
#

going forward, would i have to learn how to write things in i18n for new content?

uncut viper
#

you'd be moving all of your current user-facing strings (dialogue, map messages, mail text, etc) into a different file and replacing the stuff in your content.json/includes with tokens, but its not really learning anything new

#

you would probably want to come up with some sort of convention you remember for giving your i18n keys, though

#

like "dbd.somemail.title": "Letter from Whoever", "dbd.charactername.dialogue.Sun4": "My sunday 4 dialogue" etc

#

doesnt have to be like that and doesnt technically need to be any convention at all, but it helps to be organized about it

rigid musk
#

how does one add priority to things with CP again

uncut viper
#

going forward, it would mean you have all your dialogue and messages and mail text in a different file and not in your patches themselves, so it might take some getting used to

rigid musk
#

my brain is refusing to understand how to do it

uncut viper
#

Loads and the other stuff use different words for the priorities since they work differently, so whatre you using

rigid musk
#

I'm looking at it for EditData cause I'm trying to edit one of SVEs events to work with my mod heehoo

uncut viper
#

then "Priority": "Early" for example

rigid musk
#

and I want my version to load before SVEs without me having to add SVE as a false dependency

#

Ah so I was just over complicating it in my head

uncut viper
#

can replace early with Default or Late instead, or a relative value like Early + 50

rigid musk
#

CB_clappyclap thank you button

mortal goblet
#

i want to use mail to unlock my crafting recipe, what is the "key"

#

can i use {{ModId}} in mail?

brittle pasture
#

the key is what your recipe is named (in the key) in Data/CraftingRecipes

#

and yes, you can use {{ModId}}

mortal goblet
orchid glade
#

I have an i18n question, if a mod has the default.json in another language and an en.json (or whatever the code is), would I need to rename the en file default or does the game know to get the english one instead? (like is default only loaded if there is no file matching game language)

uncut viper
#

actually, right now en.json is broken and completely ignored

orchid glade
#

WHHAAAAA

uncut viper
#

default is loaded if there is no matching language file found, but switching to english wont make it use en

#

itll just use default

#

known SMAPI bug

orchid glade
#

Ok, so if a mod with default in another language wants to add an english translation, they need to make it default

uncut viper
#

its ONLY en, though

#

they do yes

orchid glade
#

Or, the user does

uncut viper
#

either or

orchid glade
#

Does this look like correct use of local tokens to randomise schedule?: { "Action": "EditData", "Target": "Characters/schedules/Nari", "Entries": { "rain": "1100 {{Random: {{mountain_x}}, {{mountain_y}}, {{mountain_z}}}}/2200 Mountain 57 20 2", "Mon": "GOTO spring", "Tue": "GOTO spring", "Wed": "GOTO spring", "Thu": "GOTO spring", "Fri": "GOTO spring", "Sat": "GOTO spring", "Sun": "GOTO spring", "spring": "1000 {{Random: {{mountain_a}}, {{mountain_b}}, {{mountain_c}}, {{mountain_d}}}}/1600 {{Random: {{mountain_a}}, {{mountain_b}}, {{mountain_c}}, {{mountain_d}}}}/2200 Mountain 57 20 2" }, "LocalTokens":{ "mountain_a": "Mountain 57 20 2", "mountain_b": "Mountain 68 20 2", "mountain_c": "Mountain 56 31 2", "mountain_d": "Mountain 53 36 0", "mountain_x": "Mountain 77 9 2", "mountain_y": "Mountain 81 12 2", "mountain_z": "Mountain 58 6 2" } },

median forum
#

i wrote an event with question forks (listen, i know) and, while the different forks all show up, whatever choice i pick just defaults to the NPC dialogue for the first choice. i'd like to use what i've done without recoding it into quickQuestion and setEvent, if it's possible at all

hallow prism
#

you may want to show what you have so people can compare with documentation

#

however quickquestion i believe is a bit more common/familiar to people

median forum
#

oh yeah, sorry

hallow prism
#

no prob!

median forum
# median forum i wrote an event with question forks (listen, i know) and, while the different f...

speak Peter \"{{i18n:skipdozerMP403P}}\"/showFrame 95/pause 300/playSound coin/pause 600/showFrame 0/pause 500//question fork0 \"{{i18n:skipdozerMP404P}}#{{i18n:skipdozerMP405P}}#{{i18n:skipdozerMP406P}}\"/fork skipdozer.MP41/friendship Peter 125/speak Peter \"{{i18n:skipdozerMP407P}}\"/pause 250/emote Peter 40/question fork1 \"{{i18n:skipdozerMP408P}}#{{i18n:skipdozerMP409P}}#{{i18n:skipdozerMP410P}}#{{i18n:skipdozerMP411P}}\"/fork.skipdozer.MP42\fork.skipdozer.MP43/friendship Peter 60/pause 500/speak Peter \"{{i18n:skipdozerMP412P}}\"/emote farmer 60/globalFade/viewport -1000 -1000/end position 20 12", "fork skipdozer.MP41": "pause 500/stopMusic/friendship Peter -500/speak Peter \"{{i18n:skipdozerMP413P}}\"/question fork2 \"{{i18n:skipdozerMP414P}}#{{i18n:skipdozerMP415P}}#{{i18n:skipdozerMP416P}}\"/fork.skipdozer.MP44/friendship Peter 50/speak Peter \"{{i18n:skipdozerMP415P}}\"emote farmer 28/globalFade/viewport -1000 -1000/end position 20 12", "fork.skipdozer.MP42": "pause 500/speak Peter \"{{i18n:skipdozerMP419P}}\"/speed Peter 2/move Peter 0 8 0 true/globalFade/viewport -1000 -1000/end", "fork.skipdozer.MP43": "pause 500/speak Peter \"{{i18n:skipdozerMP420P}}\"/speed Peter 2/move Peter 0 8 0 true/globalFade/viewport -1000 -1000/end", "fork.skipdozer.MP44": "pause 500/friendship Peter -250/speak Peter \"{{i18n:skipdozerMP418P}}\"/action AddMoney 2000/emote Peter 12/speed Peter 2/move Peter 0 8 0 true/globalFade/viewport -1000 -1000/end"

#

that's the relevent part, the stuff before it works fine (character walking into the event scene etc)

golden spire
orchid glade
golden spire
#

ah

orchid glade
#

Or at least that's what I have in my notes, which might have been context specific, let me check

median forum
#

oh yeah i was uh. trying to use them to branching dialogue paths in one heart event. the way i wrote the script for my mod was to always have one or two paths that continue the scene and a third option to cut it short

#

which i'm sure i can do with quickQuestion and setEvent, i just learned it the wrong way first

orchid glade
#

I think the events the forks point to play as part of the same event, it's just they look like a new event entry

#

just with a slightly different format, i.e. no preconditions

vernal crest
#

question fork can only end the current event and start a "new" one (new in quotes because it specifically starts a fork, not a whole separate event like switchEvent does - edit later in case someone reads back: I was wrong about switchEvent - it also changes to a fork that doesn't need the initial event setup) or continue the current event. You cannot have more options than those two, so if you need three different paths you cannot use question fork.

median forum
#

well dang it

#

so i do need to recode it

orchid glade
#

I know it sounds like it should do more lol

median forum
#

no like, you're helpful for sure

#

this is my first mod

#

so i don't know what the heck i'm doing

vernal crest
#

(I didn't weigh in earlier because I'm not familiar enough with using question fork to be able to read it properly, but I confirmed the other day that it definitely cannot take more than two options which is why I did jump in now.)

orchid glade
#

i mean you can have multiple forks in the same event, just each question only has two paths leading from it

median forum
#

right right

vernal crest
#

Yeah

median forum
#

i do definitely have three options in at least one spot though, i know that

orchid glade
#

But your format I don't think was doing that anyway

#

like, fork was not being used correctly, I don;t think (but it was hard to tell with all the i18n and no formatting)

median forum
#

if i'm using quickQuestion/setEvent can i have a branching path that just, like, ends the whole heart event early?

vernal crest
median forum
#

i have trouble reading it with the i18n tbh

orchid glade
#

You can use dialog response codes, but I don't think you can use q dialogue format in an event?

#

more descriptive i18n codes could help

median forum
#

i've been coding in notepad++ and looking at the i18n in visual studio

#

which doesn't help here, granted

vernal crest
#

By the way, not sure if you would find it easier, but you can multiline events.

median forum
#

that's not a bad idea

vernal crest
#

Like so

orchid glade
vernal crest
#

There's even a Visual Studio Code extension that converts single line events to multiline (it's how I read vanilla/other people's events because I hate single line).

orchid glade
#

Unfortunately it only works with complete events, so I couldnt use it with the partial event you sent

#

AND you can't seem to open multiple events in different windows (with that extension), it just pastes it at the bottom of the open one!

vernal crest
# orchid glade dream format for event

It's just so, so, so much easier, right? You could even put the dialogue from the i18n into a comment at the end of each speak line if you want to be able to see at a glance what's being said during the event.

golden spire
#

I used to just have a find replace macro to split up the event commands and rejoin them

#

mostly finding / and replacing with \n /

vernal crest
orchid glade
#

Yeah I just don't know those off the top of my head and I'm lazy...

median forum
#

i cut it out because i was already pasting in like 2000 lines of broken code 😔

#

but next time i'll try to just format it in a more readable state

vernal crest
#

I'm going to try my own idea of adding the dialogue in a comment actually. See if it makes it easier to follow.

median forum
#

thanks all for the help btw. asking for help is really hard for me so i appreciate it

golden spire
#

found the old video I made for someone years ago..

median forum
#

that really does help with readability

vernal crest
#

Wow that's really straightforward actually

#

And I can do it my preferred way with the forward slash at the end too

#

So intensely screamy in my theme lol

golden spire
#

D=

#

heathen

vernal crest
#

Which part? Forward slash at the end?

golden spire
#

yes

#

😛

vernal crest
#

I find it easier to read and it stops me forgetting that I need a forward slash between the command and my comment. Doesn't stop me forgetting that I need a forward slash at the end of the comment too though lol

golden spire
#

but of course, can reverse the whole process too, if needed for whatever reason.

vernal crest
#

Like you're sending your event to one of the weirdos (affectionate) who prefer to read them single-lined lol

golden spire
#

that or for anything in the future where you're splitting things but has to be in 1 line

vernal crest
#

Now to find out how N++ handles its file associations so I can tell it my events file is in JSONL so it's not so eyesearingly red

#

That might be handy for me for schedules actually. Schedules are technically supposed to be capable of handling multiline too but I have found it is way more fragile than events so I gave up on it.

golden spire
#

slight tangent, Whenever I deal with CR and/or LF always reminds me how some things in computing date back to earliest days of type writers.

Even the shift key is called "shift" because on a type writer you held it to shift the mechanism to stamp different characters for typing Capitals/special symbols

vernal crest
#

I remember doing that with the shift on a typewriter (only for fun, not old enough to have needed to use a typewriter for work).

median forum
#

oh, CR, carriage return

#

same

golden spire
#

Caps Lock, a physical lock, locking it in place

calm nebula
#

Bug

golden spire
#

not a bug it's a feature

#

:p

calm nebula
golden spire
#

ancient tape

calm nebula
#

It's not actually the reason why we say "computer bug"

#

Or written by Grace Hopper

#

But it's cute

golden spire
#

I think my favourite etymology is "upper case" and "lower case"

orchid glade
#

Okay so usually when I'm on my dev profile I can run debug commands just by going like /sleep or /time ..., but now that's not working when I launch through Stardrop (I have to write /debug in). Have I just disabled a mod that makes that possible, or is it the result of the latest SMAPI update? Anyone else use Stardrop and having the same issue?

calm nebula
#

Probably (a)

#

It's not part of the main game

#

Either you (a) have a mod that enables it (I think Event Tester does but not by default) or (b) it's set that way in the save file

orchid glade
#

Hmm, I'll see if enabling Event tester works if it's disabled. I think I had just enabled or disabled that around the time it stopped working.

#

Okay it works with Event Tester enabled, but I was sure I don't usually have that on. Either I'm tripping or there's something else going on too! Thanks for the help though 😄

calm nebula
#

There are a bunch of mods that can enable it

#

Like, I think everyone's debug mod allows it haha

orchid glade
#

Wouldn't surprise me.... I couldn't figure out what else it could have been, so i'll just keep event tester on for now

gentle rose
rigid musk
#

Hi Iro wave

gentle rose
#

looking into this did lead me to discover that Thomas Edison had very weird handwriting though SDVpuffersquee

gentle rose
rigid musk
calm nebula
whole raptor
#

Did hospital map change in 1.6? SDVpufferthink

golden spire
#

I don't think so

#

but I rarely ever go in there

hard fern
#

I think it got some changes 🤔

#

But minor ones

#

...or i really don't remember what the hospital looks like

orchid meadow
#

Hi all, I'm not sure if this is the right place to ask, but I have a question. I updated a mod in which the content patcher code had to be updated to the newest format. The code simply did not work in 1.6.9. I tried to contact the mod author for permission on Nexusmods but I received no rssponse. It has been nearly 7 years since the author logged on. Other people in the comments of the mod seem to want the update. Currently, I have not shared the mod update with anyone. What's the best way to share this with others without the NexusPolice™ on me?

golden spire
#

without permissions you cannot

rigid musk
#

^ If they don't have open perms you can't share it unfortunately

golden spire
#

We're equally as strict as NexusPolice

rigid musk
#

It's a matter of respect, too. Sure they haven't updated it but it's still their work, and redistributing it without their permission isn't very cash money if you get what I mean

orchid meadow
#

Fair enough. This is why I am asking before I do something absolutely stupid.

lucid iron
#

You can make stuff for personal use all you want

orchid meadow
#

Of course. Thank you all.

lucid iron
#

And you can use what you learned from personal edit to make your own mod Dokkan

rigid musk
gentle rose
strong tide
#

is there an event that fires when a player changes options ?

#

or do we want to check for changes in an update tick method?

lucid iron
#

Changes options in GMCM?

strong tide
lucid iron
#

Hm idk if there is good way beyond harmony patch Options

#

But you can also detect menu changed perhaps, and only do a check then

#

It helps if you explain why you want to detect change zoom level

strong tide
#

ohh im just building a common library for helper functions for lots of things to make my life easier is all. i'd prefer not to use harmony patches but am not oposed

#

do we know the performance impact for checking to see if there are changes in options in the updateTick function

#

something that looks a little like this ZoomLevel = (ZoomLevel != Game1.options.zoomLevel) ? Game1.options.zoomLevel : ZoomLevel;

lucid iron
#

Well I just don't see why you need to check this at all

#

It applies at render so anything you queue onto spritebatch get the zoom level

strong tide
#

ohh right fair enough

#

this is wwhy i ask cuz i am rusty af and stoopid lols

#

thank you

calm nebula
strong tide
#

are texture sizes constant? like for example each tile size is 32 x 32 and the game rescales it? so for something that is two tiles high, textures are 32 x 64 or is that a gross simplification and in total not true?

#

i am aware that there a sprite sheets and so its not that simple but

keen sigil
#

If I want to add an object to be available through panning, what do I edit? I'm assuming it's some kind of EditData with a target of Data/something, but I can't find the something XD

brittle pasture
brittle pasture
strong tide
#

i see, so if i wanted to use a 2 tile high texture i can use a 16x32 ?

brittle pasture
#

yes, when in doubt just follow what the game does

#

!unpack

ocean sailBOT
#

Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!

keen sigil
#

If I understand Item Extensions right, I can't edit the mystery box loot with it? Anyone have another framework for that, by any chance? 😉

brittle pasture
#

not sure, but it definitely sounds like a feature request for IE

#

I think misty is still busy though

keen sigil
#

Oh, it isn't that necessary to go bother people over. I'll just add my thing as another panning drop for now 🙂 Thanks again!

lucid iron
strong tide
rigid musk
#

If i have two of the same event, one that has a condition and one that doesn't, will the one with the condition overwrite the base one ?
(specifically: I'm adding a 'playerkilled' cutscene when the player dies in Qi's Arena, and I want an alternate version for when the player is married to Qi so I'll add a condition for when he's their spouse. However I don't know if I need to also specify a condition for the base cutscene itself)

lucid iron
golden spire
rigid musk
#

oh my god

lucid iron
#

Can you fit more if you drop some frames

#

Im sure everyone brains have badappleinterpolation.dll installed by now

golden spire
#

technically, timing becomes a pain, would need to do the maths right with the gap between frames

lucid iron
#

Im sure one of ffmpegs 11000 arguments is suitable for this

golden spire
#

I'm not fully sure what the timing gap even is for the movies, I thought it was in ms but when I did the maths right for 30fps, it ran too slow, changed it to 1 and it ran at the right speed (I think, might be a bit fast)

silver sand
#

Rule ⁹

karmic gust
rigid musk
#

That's true... I don't remember how to do the reverse of that

#

like a 'when spouse is not' instead of spouse is

#

is that just the ! in front of it?

uncut viper
#

also Lily if your events have the same key then whichever patch is applied later will overwrite the original

karmic gust
rigid musk
#

ah im doing it as a when condition

#

I forgot how to negate those

uncut viper
#

if you're doing it as a when condition you dont need to do anything

rigid musk
#

I wouldn't need one specifically for the uh.. m ybrain is not letting me think right now

#

I have one version of the event that has a condition and one that doesnt

uncut viper
#

if the base version is adding an event with the key eventid/preconditions and your patch with the when condition is also editing eventid/preconditions then it gets overwritten

#

same as if you were editing an object you added previously but with a when condition

rigid musk
#

very nice very cool

golden spire
uncut viper
#

is there a download link anywhere—

golden spire
#

not currently, need to just tidy up my test-junk/names/etc

lucid iron
#

What's the villager preference on Bad Apple

golden spire
#

currently none

#

now.. how well it runs on someone elses computer.. will be interesting, I do wonder if the timer-gap is CPU related

lucid iron
#

Are you at 60fps

golden spire
#

yes

lucid iron
#

A mystery DokkanStare

golden spire
#

the vast majority of this json is:

{"Image":561,"Music":"","Sound":"","MessageDelay": 68,"Script":null,"Text":null,"Shake": false,"ResponsePoint": null,"ID": "561"},
{"Image":562,"Music":"","Sound":"","MessageDelay": 68,"Script":null,"Text":null,"Shake": false,"ResponsePoint": null,"ID": "562"},
{"Image":563,"Music":"","Sound":"","MessageDelay": 68,"Script":null,"Text":null,"Shake": false,"ResponsePoint": null,"ID": "563"},
{"Image":564,"Music":"","Sound":"","MessageDelay": 68,"Script":null,"Text":null,"Shake": false,"ResponsePoint": null,"ID": "564"},
{"Image":565,"Music":"","Sound":"","MessageDelay": 68,"Script":null,"Text":null,"Shake": false,"ResponsePoint": null,"ID": "565"},
{"Image":566,"Music":"","Sound":"","MessageDelay": 68,"Script":null,"Text":null,"Shake": false,"ResponsePoint": null,"ID": "566"},
{"Image":567,"Music":"","Sound":"","MessageDelay": 68,"Script":null,"Text":null,"Shake": false,"ResponsePoint": null,"ID": "567"},
{"Image":568,"Music":"","Sound":"","MessageDelay": 68,"Script":null,"Text":null,"Shake": false,"ResponsePoint": null,"ID": "568"},
{"Image":569,"Music":"","Sound":"","MessageDelay": 68,"Script":null,"Text":null,"Shake": false,"ResponsePoint": null,"ID": "569"},
lucid iron
#

Button is eager to test 4 u so perhaps u can send wip build here for ppl to try

#

See how it goes etc

uncut viper
#

scope creep: make the response point the name of the touhou character that appears on screen at that moment so my NPC can call out their names

#

(/j... unless)

lucid iron
#

I dunno that sounds like a core feature

golden spire
#

sadly any kind of interaction like that would desync the audio completely

uncut viper
#

need a Better Movie Framework mod

golden spire
#

unless.. maybe a speech bubble above their head.. as that wont have a need to "click to continue"

uncut viper
#

i thought thats what movie theatre reactions always were

#

i dont go to the movies much as you can tell

golden spire
#

well they are mostly all dialogue boxes that pop up.. from what I can tell they're like normal events/etc.. but a speech bubble doesn't need to be clicked..

uncut viper
#

you are my absolute hero

#

i am dropping everything to test this

golden spire
#

D=

#

film is on every season, every year

uncut viper
#

the film seems to not want to start SDVpufferthinkblob

golden spire
#

I can only assume it's something due to system differences and the sheer number of frames.

#

I would have gone over the "safe" limit for image size

uncut viper
#

maybe i just need to sit on the first frame long enough and eventually itll start

#

since it seems to at least load the first one

lucid iron
#

Is your texture bigger than 4096 in either direction

golden spire
#

yep

uncut viper
#

do movie frames have to be a specific number of columns?

golden spire
#

I tried extending columns, didn't seem to work sadly

uncut viper
#
public static Rectangle GetSourceRectForScreen(int movieIndex, int frame)
{
    int yOffset = movieIndex * 128 + frame / 5 * 64;
    int xOffset = frame % 5 * 96;
    return new Rectangle(16 + xOffset, yOffset, 90, 61);
}

it does assume 5 :v how unfortunate

#

i assume you used some sort of script to lay out the frames or did you actually make the png manually

golden spire
#

I used imagemagick and shell commands

uncut viper
#

if it was easy to generate one thatd be within the 4096x4096 limit i kinda wanna write a transpiler just to make this work

#

to allow more than 5 columns

golden spire
#

montage `cat filename2.txt` -geometry +0+0 -tile 1x438 movie.png

#

(final comand after putting them in rows)

rigid musk
#

what is it that causes a recipe in a shop to show with the torch ingredients again?

#

as far as I can tell the recipe itself works, at least it shows up when I use lookup anythingpondering

uncut viper
#

if the recipe itself works then it may be a discrepency between the item id the recipe makes and the Name you gave it in its objectdata

rigid musk
#

OH oh

golden spire
#
ffmpeg -i Touhou\ -\ Bad\ Apple.mp4 frame%04d.png
magick mogrify -resize 90x61\! -path resized/res%04d.png
montage `cat filename.txt` -geometry +3+0 -tile 5x1 all3/all-%04d.png
convert * -resize 480x64 -gravity north -extent 480x64 pad-%04d.png
montage `cat filename2.txt` -geometry +0+0 -tile 1x437 movie.png

all my commands and bizzare filenaming.

only had to do a minor manual thing at the very end, to align the frames in the exact spot

uncut viper
#

(why do the Movies spritesheets have so much padding around them anyway...)

golden spire
#

no idea

#

the left has the movie poster but that's it.

rigid musk
#

Hm.. actually i don't know it seems to be right. I didn't actually add an item so much as do a few patches over the pre-existing 'qi arena totem' in the game, so the object's item ID and name are just 892

golden spire
#

do you want all the small-resized frames button?

uncut viper
#

then i have no idea as recipes are not my strong suit

uncut viper
#

small resized?

lucid iron
golden spire
#

the individual frames I used to make it, wasn't sure if you were going to try to stitch them together yourself

lucid iron
#

Ik you are reusing the unused qi arena totem but for future compat i would do custom

uncut viper
#

if the alternative is no frames at all then i will take em and give it a shot

golden spire
#

technically I could save a few frames by making the initial one have a longer pause as it's just black.. but wouldn't save enough to be worth it

shut mountain
#

Is this the appropriate place to ask for help using tiled? ;-;

golden spire
#

yes

shut mountain
#

So I'm trying to edit the mining farm map, but when I try to open the tbin file, it just says "file format not recognized" and I'm confused.

rigid musk
#

what item category would totems be in?

shut mountain
#

Lemme check

rigid musk
#

Also they should be tmx files iirc

shut mountain
#

Nope. It's a tbin file

rigid musk
#

like the unpacked game files made them a tbin?

shut mountain
#

The file I'm trying to open is Farm_Mining.tbin

golden spire
#

what did you use to extract the game files?

rigid musk
#

Mine have always exported as .tmx

shut mountain
#

Hold please

rigid musk
#

!unpack

ocean sailBOT
#

Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!

shut mountain
#

Do I have to install things for this? >_>

golden spire
#

it's just a script that will extract

#

no "installing"

rigid musk
#

^

shut mountain
#

Oh thank god, my laptop's hard drive is tiny

golden spire
#

and you'd need to install a plugin to get tbins to work... but TMXs are easier to deal with anyway

#

as they are just xml files

shut mountain
#

Of course the recommended option requires me to have the very large game on my crappy laptop 😒

golden spire
#

don't have a friend who has the game who can do it for you?

shut mountain
#

Nope!

golden spire
#

well you need to look for the tbin plugin for tiled to open them then, if that's all you have

shut mountain
#

One of them can't even follow basic instructions

latent mauve
#

TMX files also have the added benefit of letting you use flipped or rotated tiles.

fading walrus
#

I have one, most of my games are on it

shut mountain
#

I move my laptop too much

fading walrus
#

Or you can alternatively put all your other stuff on it to leave room for games

shut mountain
#

It could easily get disconnected

golden spire
#

but you can move a portable drive??

fading walrus
whole raptor
#

Can we do patch summary for the game asset? SDVpufferthink

fading walrus
#

You can disconnect them when not in use no problem

blissful panther
#

Honestly, even the cheapest of the cheap 32GB flash drives would do it. Slowly, but they would do it!

lucid iron
#

Yes

golden spire
#

and tons of old small SD cards in peoples desks

latent mauve
#

Even with all my map edits living in the unpacked contents folder, the unpacked folder still fits on a basic USB drive.

rigid musk
shut mountain
#

My laptop doesn't have an SD card slot SDVpuffersob

golden spire
#

but it has a USB slot? there are many tiny USB drives

shut mountain
#

How small are we talking?

golden spire
#

aboutt he size of the whole connector

shut mountain
#

That's tiny

rigid oriole
#

i mean even the old thumb drives i have are no more than an inch long

golden spire
#

that's 32GB

fading walrus
shut mountain
#

What if I'm actively editing said files and it gets unplugged?

#

That's what I'm scared of

golden spire
#

well you'd struggle to accidently take out that tiny thing,...

shut mountain
#

Obviously not the tiny one

latent mauve
#

It's a lot harder to accidentally unplug such a small USB

fading walrus
golden spire
#

but like all flash memory, make sure you're buying genuine-branded stuff

shut mountain
#

I have 3 cats

blissful panther
uncut viper
#

at some point one must consider "having access to the game in some form" to be a requirement for modding and dedicate 1 gigabyte somewhere

golden spire
#

not the 100s of fake listings on Amazon that Bezos fails to remove

rigid oriole
uncut viper
#

so a cheap tiny flash drive is the easiest way to meet that requirerment

fading walrus
#

This is what I have, it fits snugly into the USB C slot and doesn't come loose

#

It even tucks under my laptop stand and out of the way

#

It's not even the size of my palm

shut mountain
#

I think I'll look and see how much the tiny one is

fading walrus
#

The tiny tiny one should be pretty cheap

fading walrus
urban patrol
#

i just bought a 128GB usb at micro center for like $8

latent mauve
shut mountain
rigid oriole
#

i remember as a kid i got a 16GB usb drive from the library reading program as a reward for reading some quantity of books and thinking that it was more storage than anyone could ever need

rigid oriole
shut mountain
#

I was looking at thumb drives 😅 I don't think my laptop has a big slot anyway

fading walrus
#

Big slot?

shut mountain
#

And that SD card is now a part of my phone

rigid oriole
#

type C drives exist

fading walrus
#

Oh an sd card slot

rigid oriole
rough lintel
#

usb c :)

#

my beloved…

shut mountain
#

USB, USB-C, and HDMI

rigid oriole
#

wait if you have a normal USB-A then why can't you put a thumb drive in if u buy one

shut mountain
#

I can

#

Well, I could if I had one

latent mauve
#

Microcenter has the same Ultra Fit USB with 64 GB for $11, so definitely look around!

shut mountain
#

Why are we (people on Amazon) spending $92 on a terabyte

rough lintel
#

for funsies :3c

rigid oriole
#

wait do we make terabtye flash drives nowadays?

shut mountain
#

Yep

#

Mother has one

fading walrus
#

Could've gotten this one for my linux install shenanigans instead of the one I bought, that one was a bit more expensive iirc

gentle rose
#

is anyone here familiar with AT witchcraft/arcane curses sideeye

prisma ibex
#

Hey

lucid iron
#

What ails you

#

I looked at the sauce a few times

brittle pasture
#

Strings/StringsFromCSFiles

gentle rose
#

so uh. at is being weird and rearranging the frames of this animation

#

and I don't know why

lucid iron
#

Maybe it's determining frames wrong

#

Source rect problems

gentle rose
#

here is the minimal repro pack. The affected animation is BowlLong which is summer/winter

lucid iron
#

Is just use spacecore anim not an option LilyDerp

gentle rose
#

the source rect seems fine and the other things it does make me think it's not a sourcerect problem

gentle rose
lucid iron
#

I guess there's no choice but to run debugger on AT iro

gentle rose
#

hahahahahabsolutely not

#

if nobody knows what is causing this I will simply assume all AT is dark magic SBVPensiveButt

strong tide
#

does anyone have an example for registering a new big craftable?

#

or furniture

urban patrol
#

i just did this yesterday, give me a minute

gentle rose
urban patrol
#

i didn’t include the recipe though if that’s what you mean

brittle pasture
#

[[Modding:Items]] follow the links for BCs/Furniture

strong tide
#

ohh don't worry about a recipe for now, just getting it in would be fab

lucid iron
#

Are you in C#

strong tide
#

yes im in c#

brittle pasture
lucid iron
#

Well if you don't want to make content patcher pack then you need to edit the data

gentle rose
#

you got my hopes up just to let me down selph

brittle pasture
#

it would be an edit on Data/BigCraftables or Furnitures in AssetRequested to add your entry

lucid iron
gentle rose
#

anyway this is how the texture looks (the animation is literally just each frame in order for 200ms), but

lucid iron
#

If u have a more specific mod idea we can probably help better

gentle rose
rigid musk
#

I've fixed animations with AT before (specifically when patching over chests and the spinny wheel thingie that does wool (i cannot remember its name)) but I have no clue what you're doing there Iro

gentle rose
#

this is a chest

strong tide
gentle rose
#

are chests special?

rigid musk
#

that... is a chest?

gentle rose
#

that is a chest

rigid musk
#

can i ask you why

gentle rose
#

lizard-shaped

rigid musk
#

uh...huh...

gentle rose
#

lily are you not familiar with my lizards

rigid musk
#

catpeek it appears as though I am not

gentle rose
#

crime

brittle pasture
#

Will your furniture do anything special or are they just decorative

#

oh wait you said LogBook

lucid iron
brittle pasture
#

the functionality would be c# then, but adding the furniture item ingame can be done either way.
if you want to keep it all in one mod then follow the instructions from the wiki above to edit an asset

lucid iron
#

Anyways i say you just add a big craftable with interactmethod (yes i have acquired yet another agenda)

#

I don't think you need to worry about the part where player opens up a book rn honestly

strong tide
#

im going to use StardewUI i think to create the UI but i'd like to learn how to add a new furniture item for the sake of knowledge lol

lucid iron
#

I'd break this down into

  1. Gather and print data
  2. Make a menu to display the data
  3. Decide how this ui should appear to player
#

If you want to experiment with 3 first then sure why not

lucid iron
#

Otherwise check the content patcher docs

strong tide
lucid iron
#

The data may not always exist in a nice form for you

strong tide
#

of course, i'm gonna have to finagle gathering and parsing data as i go which will be.... gross x_x

lucid iron
#

probably just need to harmony postfix a bunch of places and maintain a counter yourself tbh

#

Or netfield event in some cases

#

It's definitely the bulk of the mod

strong tide
#

yuhhh is gonna suck, im sure i can get away with hooking into some events but the majority of it is gonna be a whole lotta harmony which i aint looking forward to thats for sure.

#

and then organising the data storage is also gonna be a pain in the butt storing data day by day, another issue i think is that i can't store a whole season's worth of data into a single json file either

lucid iron
#

If it's just counters I don't see why not

strong tide
#

surely loading 30 days worth of data from a single json file could cause hitches

gentle rose
#

niceee lily helped me and now I caused the crash I wanted to reproduce s_serve

lucid iron
#

It's not that big compared to the save itself lol

gentle rose
#

which confirms it is indeed caused by what I thought it was caused by

strong tide
#

then imagine loading 4 seasons which, 120 days worth of data and thats just for 1 year, imagine extrapolating that over 10 years, thats ALOT no ?

lucid iron
#

As long as you aren't doing it like, save timestamp per incident

strong tide
#

ohh no no no im not gonna recreate a replay mod xD

#

altho that would be kinda interesting.... xD

lucid iron
#

1 day is probably just 10 to 20 counters o stats

rigid musk
#

Also I'm glad I... helped you crash the game?

lucid iron
#

Rotate yer log ofc, and load on demand PecoWant

strong tide
gentle rose
rigid musk
#

i cannot count the amount of times I have done this... pain

rigid musk
#

I feel like I crash my game enough by just existing

prisma ibex
#

I shouldn't be modding this game with my current sense of humor

lucid iron
#

You better not be making an xnb mod

gentle rose
rigid musk
#

That is ... oddly specific

rigid musk
gentle rose
#

that will break the entire save so do this in a spare save

lucid iron
rigid musk
#

I would absolutely not do this in any save I cherish - oh my

#

Don't worry I would never make or install an XNB mod... cursed creation that they are

gentle rose
rigid musk
strong tide
lucid iron
#

Furniture is a Dictionary<string, string> iirc

#

So you just do that in an Edit

undone hawk
#

Y'all, do you know if there's a mod that changes the legendary fish context tag?

lucid iron
#

I got some example here

#

Tho for a big craftable

strong tide
#

oooo thats wonderful thank you this is exactly what i needed 😮

lucid iron
#

Same concept tho

strong tide
#

yeahh, part of me was concerned with the whole slash delimited string thingybob which ermmm is funky to me lol

lucid iron
#

It is funky yeah

#

That's why big craftable is better

#

Honestly if you don't need a thing bigger than 1x1 footprint and 1x2 appearance just use big craftable

rigid musk
#

gosh darn it i did it again pensiveclown

ornate trellis
#

love that band /j

dusk mulch
#

hi hi

#

i didn’t die

#

i just took a break for minecraft, which i’m going to continue for another few more months

#

cya

strong tide
lucid iron
#

Well again it's literally just a string

#

You can edit in that string same way as long as format's correct

strong tide
#

are we talking <name>\\<type>\\<width> <height>\\<width> <height>\\<rotations>\\<price>\\<placement restrictions>\\<displayname>\\<sprite index> ?

lucid iron
#

Yeah

#

It's a slash delim string

strong tide
#

ohh wow first try? amazing xD

lucid iron
#

Awful but doable

strong tide
#

yeah slash delim strings are.... new to me

lucid iron
#

Idk if u got all the fields correct pls refer to wiki

#

And decompile

brittle pasture
#

and also unpack and compare against vanilla

strong tide
#

yh i pulled the fields from the wiki and i deffo didn't unpack anything

#

sadgies

lucid iron
#

!unpack

ocean sailBOT
#

Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!

lucid iron
#

!decompile

ocean sailBOT
lucid mulch
#

Prior to 1.6 almost everything was slash delimited strings.
1.6 unfortunately didn't remove all of them

strong tide
#

i decompiled it, but didn't unpack it

empty sail
#

Hey im quite a noob when it comes to modding but could anyone help me with a few questions i have, im planning to make a dialogue mod

lucid iron
#

!startmodding

ocean sailBOT
#

Making mods can be broadly divided into two categories:

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

empty sail
#

ive seen this but it doesnt answer all my questions

#

or maybe it does and i just dont know what to look for on the page

#

but im not sure on how to make it so if i interact with something like a bookcase in someones house and the npc is nearby that then triggers them to say something

lucid iron
#

Well for a dialogue mod, i would start with basics of content patcher

#

For map interactions take a look at the maps page

#

[[modding:maps]]

empty sail
#

ah ok thank you

gentle rose
strong tide
#

found out it uses / instead of \\ after unpacking. ty for telling me about unpacking otherwise i'd cry xD

brittle pasture
#

you'd use \\ if you want slashes inside an entry, like if you loaded your furniture's texture into MyCoolMod/CoolChair but don't want the furniture data to think you gave it two fields MyCoolMod and CoolChair

#

ie. MyCoolMod\\CoolChair

strong tide
# brittle pasture you'd use `\\` if you want slashes *inside* an entry, like if you loaded your fu...

now that you said this, i am having issues loading the texture -.- which is essentially Mods/LogBook/assets/Textures/LogBook.png soooooo.... i have:

    public static string LogBookPath = "assets/textures/logbook.png";
    public static string LogBookId => $"{ModEntry.ModId}_LogBook";
    public static string LogBookQId => $"(F){ModEntry.ModId}_LogBook";
    public static string LogBookTexture => $"Mods/{ModEntry.ModId}/LogBook";

    internal static void OnAssetRequested(object? sender, AssetRequestedEventArgs e)
    {
        if(e.Name.IsEquivalentTo(LogBookTexture))
        {
            Log.Debug("LogBookPath: " + LogBookPath);
            e.LoadFromModFile<Texture2D>(LogBookPath, AssetLoadPriority.Exclusive);
        }
        if (e.Name.IsEquivalentTo("Data/Furniture"))
        {
            e.Edit(Edit_Furniture);
        }
        if (e.Name.IsEquivalentTo("Data/Shops"))
        {
            e.Edit(Edit_Shops_Robin);
        }
    }
#

but this quite simply isn't working... it doesn't even trigger the log either because it errors out... so i think i am doing something wrong

lucid iron
#

it means you aren't actually requesting the texture at any point

#

patch export Mods/<your literal mod id here>/LogBook

#

try this and see if u get a png

strong tide
#

This is the encoded delim string: LogBook_LogBook/decor/2 1/2 1/1/10000/-1/LogBook/0/Mods/LogBook/LogBook

i think the issue is that it uses / meaning it is taking the Texture field and thinking its the last 3 fields in the string

#

do i use \\ here instead?

#

so it looks a little more like: LogBook_LogBook/decor/2 1/2 1/1/10000/-1/LogBook/0/Mods\\LogBook\\LogBook

#

or literally any other separator?

brittle pasture
#

is your ModId just LogBook?

strong tide
#

it wasn't originally but i changed it to simplify debugging, before it was a little more unique

#

it was chadlymasterson.LogBook

brittle pasture
#

it has to match the LogBookTexture above (with the slash changes of course)

#

I think you can just switch that field to backslashes as well

#

and pass it in as is

strong tide
#

it now looks like Item: LogBook_LogBook/decor/2 1/2 1/1/10000/-1/LogBook/0/Mods\LogBook\LogBook

#

pffft i think it works now but the texture is too zoomed in so i may need to redo the sizing

lucid iron
#

maybe just don't use / in the texture asset name

strong tide
lucid iron
#

nothing wrong with {ModEntry.ModId}_LogBook

strong tide
#

lols xD

#

im assuming i set the width and height of the spritesheet to the size of the file lol xD

strong tide
#

bruhh texture sizing is so confusing xD

rigid musk
#

Does anyone know why it would be showing the 'indoors' dialogue instead of the 'funleave' dialogue pondering

latent mauve
#

Friendly reminder that things in game tend to be at a 4x scale and assets shouldn't actually be that size xD

undone hawk
#

My coding teacher is making me use ReadOnlySpan when working with data from file, and it’s so tedioussss

strong tide
lucid iron
#

yea

strong tide
#

ewwwwwwwwwwwwwwwww

#

hate that

#

how does this work when this texture is 96 x 96 ?

brittle pasture
#

are you pulling from the wiki?

#

use the unpack

strong tide
#

the unpack is in a spritesheet right

brittle pasture
#

yes

#

it is also what the game actually uses

#

the wiki scales things up for visibility

urban patrol
#

also you can resize yours if you use nearest neighbor

ornate locust
#

Yeah, I was about to say: Resize with "nearest neighbor" and it should keep the hard pixel edges

#

May mess up some details, but there'd be less to fix

brittle pasture
#

(I literally thought you were suggesting resizing the wiki image, sorry)

strong tide
#

so am i just resizing a 96x96 down by 4?

ornate locust
#

I gotcha

#

Yeah, basically. Just make sure it's nearest neighbor so it doesn't do any blending

strong tide
#

surely that ends up as 24x24 which also isn't quite 32x16?

ornate locust
#

It's not likely to be perfect, but it's better than starting from scratch

strong tide
#

hmm i'll give it a go i guess

urban patrol
#

the original asset wouldn’t fit 32x16 either, i’m confused

brittle pasture
#

the catalog's collision size is 3x2 (EDIT: no, it's 2x2)