#making-mods-general

1 messages · Page 356 of 1

lucid iron
#

i thought that's on the farm map bolbthinking

#

hence why i didnt change it

#

can u get the farm maps name i have no idea

calm nebula
#

No

lucid iron
#

but yea i think i dont want to change it, since u can in fact just move that one

twilit quest
#

It's the starter package in the farmhouse; I think it's in the farm map properties, but I will double check

lucid iron
#

DayStarted trigger on mushymato.MMAP_ShiftContents for wherever the seed is

#

the reason why i bothered with farmhouse furniture at all is because moving bed after the fact doesn't work very good

twilit quest
lucid iron
#

not quite, it's a trigger that move stuff in a location

twilit quest
#

Oooh neat

lucid iron
#

mushymato.MMAP_ShiftContents 4 7 X Y 1 1

twilit quest
#

Gotcha, I'll try that out

#

Thank you!

lucid iron
#

but you do need to magically know it's at 4 7

#

or u can do a wider area like

#

mushymato.MMAP_ShiftContents 3 6 X Y 3 3

twilit quest
#

Will that shift everything in that square?

#

(rectangle)

lucid iron
#

yea

#

it was originally made so that you can upgrade a custom farmhouse without stuff ending up in the void

twilit quest
#

The starter package is defined in the farm map properties (like the furniture) so it's fine for vanilla maps, but tricky when it's a custom map that puts it in a weird place. But there's a fairly narrow area it can be in, and if all other furniture is cleared with your other command, it should work

twilit quest
#

Thank you so much

lucid iron
#

make sure u mark trigger as applied, and block it behind PLAYER_FARMHOUSE_UPGRADE Current 0 0

half tangle
#

sometimes I am a fool; sometimes I am wise and notice when I was a fool in the past. (I locked a variable assignment in one place but not the other place it gets assigned thus rendering the lock useless)

calm nebula
#

Locks?

#

You have threading?

twin wadi
#

wait is leah back alive?

torpid sparrow
#

Am I able to stack conditions? like When: hasseenevent and also When: somethingelse

brittle pasture
#

yes you can add multiple entries in When. it'll be true if every condition is true

hard fern
#

leah lives

twin wadi
#

yay! im gonna wait to post my mod though to let u and claire's mods get the attention they deserve SDVpufferheart

round dock
#

Leah has risen SDVpufferchickbig2

#

Sugar, it’s okay hehe you should go showcase pats

twin wadi
#

u sure?

round dock
#

Yeah! SDVpuffersquee

twin wadi
#

thank u SDVpufferheart

full bear
#

wait no, you might be onto something

#

someone should make some new wood and stone-themed recipes which use furniture

#

wood sandwich:
2x wood path
1x wood floor

lucid iron
#

Aw we still can't pub other people post

uncut viper
woeful lintel
urban patrol
#

did i mess up the formatting, or is the i18nifier bugging out? it converted the reaction text properly for my previous quests i input into it

#

i can do it manually of course but i'm worried i did something wrong

dire kestrel
#

can i alter the trash can animation through content patcher?

uncut viper
urban patrol
#

what's the format for that?

uncut viper
#

same as any other dialogue. put a # between the text and the $action

urban patrol
#

so i've been doing it wrong the whole time 🙃

woeful lintel
tiny zealot
dire kestrel
urban patrol
#

i must still be writing this wrong :( /Excellent work, @. This void essence will help anchor the ghost to this plane during the ritual.#$action AddMail Host SeanceIngredients1 received",

#

a different one works, because it has a #$b# in it. do i need to put a break whenever doing actions?

half tangle
# calm nebula You have threading?

yep, it became necessary down the line for some of my more complex code in specific circumstances - as I understand it I need to avoid threads when it comes to game data or graphics, but in this case it's all internal data that gets handled by the added threads

twin wadi
#

i might be wrong tho

urban patrol
#

button said i did, but i don't know if i understood how to do it correctly

tiny zealot
#

you do need to have a # (the $action is its own dialogue command, so you need the separator). you don't need the $b, but you may also just have to rearrange your dialogue; action parsing in dialogue strings is a bit fucky and sometimes breaks for mysterious reasons

uncut viper
#

also, dont judge functionality based on the i18nifier. judge it based on whether or not it works in game

#

if it works in game but not in the i18nifier, its just a bug with the i18nifier

urban patrol
#

yeah, that's true lol

twin wadi
calm nebula
#

Happy Canada Day!

#

(I hope)

tender bloom
#

Drink some maple syrup ingame to celebrate? 😛

calm nebula
#

In and Out and sleep is my goal

lucid iron
#

atra when will u graduate 12th grade physics

vernal crest
#

They're moving along at a pretty fast clip so I predict before the end of winter

#

My winter. Their summer.

tender bloom
#

Could be any winter, really

#

This year’s, next year’s

#

Yours, mine

vernal crest
#

I see you are really committing to a prediction Elizabeth /lh

tender bloom
#

I’m a regular oracle

torpid sparrow
#

is there any way to mention your pet's name in dialogue during an event

tiny zealot
#

"gotPet_memory_oneyear": "I just remembered... it's been about a year since you adopted %pet. I bet you two have grown really close by now!",
%pet should work, but will probably only work for the pet you got in the event

tender bloom
#

it doesn't look like it is a CP token

twin wadi
woeful lintel
tender bloom
calm nebula
#

Someone find what happens lol

tiny zealot
#
        public string getPetDisplayName()
        {
            foreach (NPC j in Game1.getFarm().characters)
            {
                if (j is Pet)
                {
                    return j.displayName;
                }
            }
            foreach (Farmer allFarmer in Game1.getAllFarmers())
            {
                foreach (NPC i in Utility.getHomeOfFarmer(allFarmer).characters)
                {
                    if (i is Pet)
                    {
                        return i.displayName;
                    }
                }
            }
            return Game1.content.LoadString("Strings\\StringsFromCSFiles:Farmer.cs.1972");
        }```
this
#

from this (Dialogue.cs):
str = str.Replace("%pet", this.farmer.getPetDisplayName());

uncut viper
#

"which pet name will it return?" "yes"

tiny zealot
#

looks like "the first one it finds", which is wild

uncut viper
#

made more sense when you could only get one pet

tender bloom
#

tbh while it is wild it's fully in character

tiny zealot
#

oh yeah, this is the good kind of wild. the "based CA" wild

calm nebula
#

It's canon

#

Npcs just talk about the first pet of yours they remember

#

What's the fallback

half tangle
#

lol
"Farmer.cs.1972": "the farm",

round timber
#

(nodding) the farm

tiny zealot
#

it's been about a year since you adopted the farm

calm nebula
full bear
#

the farm:
meow_party

dire kestrel
uncut viper
#

my guess would be annoying, since im willing to bet itd require a transpiler

dire kestrel
#

oh ok i'm dropping the idea right now then

#

LOL

uncut viper
#

im not 100% guaranteeing it would, but it seems like something that would need it

twin wadi
#

ello! i little python tool for event scripting i made SDVpufferheart
its not a full-on program, so it won't do much of the work for you, since event scripting takes a lot of creativity. however, it will (hopefully!) make event scripting more easier to read and more user-friendly. SDVpuffersquee you'll have to use some functions i added in a section of the code then run it to get the script text. disclaimer: you do need understanding of event scripting - it's just a tool to make the process more convenient.
also, emphasis on simple. this tool was initially made for personal use, so it's more catered to which commands I use most often. it doesn't include the entire command list, but it does let you add custom commands that isn't specifically supported by this tool.

get it here: https://www.nexusmods.com/stardewvalley/mods/35281

Nexus Mods :: Stardew Valley

This is a Python tool for NPC or event modders! You can use functions in the mod to create the event and run the file to get the event string. It makes the process of creating events more user-friendl

gaunt orbit
#

Trashcan animation is a TAS, so theoretically you could add a postfix and try and figure out which TAS is the lid and either replace or modify it

Depending on how you change it, you might also have to do some tile fiddling

It IS possible to do without a transpiler but may be simpler to do with one

calm nebula
#

Is it broadcast

uncut viper
#

no

#

maybe if its a big explosion one

delicate tinsel
#

I have a question SDVpufferflat Can the "Action Letter" property type be changed? Like, to a Joja letter for example? Or is it always the default one?

urban patrol
ocean sailBOT
#

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

tranquil schooner
#

I've heard Vortex can occasionally delete files for seemingly no reason, if that helps at all

urban patrol
#

the file is still there and it appears in the log though, which has me 🤔

tranquil schooner
#

The SpaceCore warning, right?

urban patrol
#

no, the spacecore warning is referring to a .tmx file i have with an invalid warp because it doesn't link to a location yet

tranquil schooner
#

Ah, okay nevermind

half tangle
latent mauve
#

spring is just LooseSprites/map

#

(can't EditImage an asset that doesn't exist yet, so maybe try Loading map_spring first with a Low priority?)

#

Or, y'know, ignoring the season argument in spring.

urban patrol
#

ohhh i wonder if that's it, because i had originally not had the season token in there but then it was ONLY applying for spring

latent mauve
#

Yep, map, map_fall, map_summer, and map_winter are the vanilla assets

urban patrol
#

i probably fast forwarded to summer and didn't test it in spring again after that change

#

how would i make the patch ignore the season token in spring?

latent mauve
#

Make a separate patch for the {{season}} variants with a When condition

urban patrol
#

oh so no matter what i need a second patch, either to when condition it or to load it

#

thank you!

latent mauve
#

There might be a way to do it in a single patch but my brain can't think of one right now.

urban patrol
#

so fair haha

#

i'm trying to become smarter about my patches in general, because before i was just doing whatever tutorials told me to and not understanding it

#

but sometimes that leads to me overthinking it

latent mauve
#

But yeah, you could do two separate EditImage patches as well, and just make sure the LooseSprites/map one is "When": { "Season":"spring"}

#

and the other would be something like "When": {"Season":"summer, fall, winter"}

urban patrol
#

in general, do you need to make sure that all posibilities are covered by conditions? or is it okay practice to have the other one be conditionless?

latent mauve
#

Normally it's fine, but I don't know if the fact that you need separate targets matters.

#

Like, if you have all 4 assets, does the game skip over LooseSprites/map and go straight to LooseSprites/map_summer in the summer anyway?

#

Could try it without putting a condition on the "Target":"LooseSprites/map" (spring patch) for science.

urban patrol
#

let's find out

#

it does still seem to work with zero conditions!

latent mauve
#

hooray!

urban patrol
#

feels janky though lmao i might put it back to be safe

latent mauve
#

LOL

urban patrol
#

i also am realizing that i18n messed up my map strings ugh

latent mauve
#

That's me with adding non-{{season}} token references to summer because of the dang ginger island. xD

#

(I started to just load summer separately because otherwise the island gets mad in spring)

urban patrol
#

i based one of my maps off of the ginger island cave, and oh boy was it mad about me trying to use fall tilesheets for the Vibes haha

stable grotto
#

I have no issues finding it
what for though?

worn oar
latent cape
#

Is it possible to warp the farmer immediately to the farm after we finish a character event just like it did with regular occurring event?

stable grotto
#

same folder structure as the game: Tilesheets

royal stump
grave scarab
#

something to be aware of

#

I don't know whether that means developers or mod users, or both

gentle rose
#

I’m pretty sure it’s mod users

#

judging by nexus’ actual announcement

proud wyvern
#

and they're probably required to do so by law, at least in some countries

gentle rose
#

including the UK, which is where they’re based

#

and which has issued a threat of at least £18m for offenders

stray sinew
#

is there a mod where I can make custom villagers? like customise their preferences, name, birthday, the way they look and more

ocean sailBOT
#
Creating a Custom NPC

Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:

hard fern
#

Uh technically there is a mod, but the catch is you have to make said mod yourself

stray sinew
#

does it need coding or something like that?

thorny tiger
hard fern
#

you should read up on the npc making guides to get a feel for the basics

#

although "lots" is also kinda up to you

#

depending on how complex you want to make your npc

gentle rose
stray sinew
#

alright I'll take a look though I don't think I'll make it since I'm too lazy but thanks a lot!

calm nebula
#

(If you don't like it complain to your government.)

gentle rose
#

like I really don’t know what people expect nexus to do about this. Pickysaurus says the minimum penalty for their kind of business is £18m. Trust me, they can’t afford that

gentle rose
hard fern
#

i dunno much abt uk law but is it something like either banning all adult content or the website requiring age verification and they chose the latter?

#

im fighting my laptop rn

calm nebula
thorny tiger
gentle rose
hard fern
#

ah

#

well

#

same difference either way i guess

gentle rose
#

so yeah, those were their options in effect

calm nebula
hard fern
#

i thought you were 12th grade physics

#

not 7th grade

gentle rose
calm nebula
#

The checkbox?

#

Texas law requires actual ID which is....not great

gentle rose
#

actual ID is where you lose me, 100%

thorny tiger
#

but it does require id

gentle rose
thorny tiger
#

they need something like facial recognition, credit card, licence etc

gentle rose
#

(/gen, I haven’t looked into it yet)

thorny tiger
#

not at the moment I'll get back to you when I'm on a computer and I can find the thing I looked at

gentle rose
#

facial recognition? what would that achieve?

calm nebula
#

(Although the TX one is directed at...uh, more of a... film thing and I suspect not...certain gravity modeling programs)

thorny tiger
hard fern
#

i thought people just used facial recognition to make sure it's actually ur face on the ID, not anything like that

hard fern
#

anyways i feel like the conversation has gotten away from making mods

thorny tiger
thorny tiger
#

so uh

#

modding am I right

gentle rose
#

(source: OFCOM). While I agree that there is plenty of room for concern regarding requiring any amount of personal information online, I also think making it sound like something that it isn’t is an issue and distracts from the problem at hand. All OFCOM are really saying is that they no longer allow users to just pinky promise they’re over 18.

thorny tiger
#

what I'm trying to say is that people still can and will

#

they'll use smaller sites that haven't been hit and might contain malware

#

they'll use vpns

gentle rose
#

they already do.

thorny tiger
#

people who are currently using safe sites will use not safe ones

#

that's the thing that worries me most

red egret
#

Or ko-fi

thorny tiger
#

if it was going to actually prevent the consumption of that media then sure but I don't think it will so I think it's an unnecessary danger

lucid iron
#

It's not required for normal usage of site though just restricted content

red egret
#

Ah so mod users and modmakers both are fine if they avoid Adult content on nexus?

gentle rose
#

yup, your experience won’t change whatsoever in that case

red egret
#

Okay cool

lucid iron
#

We can complain after the experience changes for the worse

gentle rose
#

I’m not going to say that this law is 100% great, it’s definitely concerning, but it’s been blown out of proportion a fair amount by some people. I agree there might be a problem with where underage people go if they want this stuff now but that’s not really up to nexus or even relevant in this particular discussion of nexus’ choices

spice inlet
#

it's a slippery slope : )

#

it always is

gentle rose
#

I mean, if it always is, there’s no point fighting about this one, right? /lh

#

anyways

#

how have you guys been finding the 1.6.16 alpha so far if you’ve used it

thorny tiger
#

didn't know there was one

#

what's new

lucid iron
#

All yer furniture broke PecoSmile

hard fern
lucid iron
#

I used it one time to check if me mods work there and so far only the enchantment one broke

gentle rose
#

lewis is getting replaced with a new npc named MegaMayor5000

vernal crest
#

Buncha changes to several assets. Big change to events (though the old stuff will be deprecated so it'll still work).

lucid iron
#

Which is expected

vernal crest
#

I want to explore the new event commands but all my mental capacity is going towards landscaping so I have no brain left for even getting 1.6.16 to work let alone playing around in it yet.

gentle rose
#

all events now start with an unskippable scene of the farmer riding a bear

red egret
#

A new version of the game still coming?

gentle rose
#

not really, mostly under the hood changes

calm nebula
#

(I wonder if there will be new content)

gentle rose
#

as far as we know

red egret
#

So.. old mods should still work?

gentle rose
#

if there is content, we won’t find out until it’s out

red egret
#

Phew

vernal crest
#

I think Pathos plans to do a lot of older mod rewriting in CP to preserve as many older mods as possible?

gentle rose
#

(but it’s never guaranteed, so if you can, write new mods with stuff that isn’t deprecated please)

gentle rose
#

(genuinely have no clue, last update I was around for was 1.6.0 lmao)

#

(that one did, in fact, have new content)

red egret
#

Is it just including a version in manifest?

vernal crest
#

No, things like don't use the single letter alias preconditions in events etc

thorny tiger
#

choose/goto is replacing all question types right?

vernal crest
#

Version History page says there have been 4 updates with new content since 1.6

thorny tiger
#

that seems like just a way better question fork

hard fern
vernal crest
#

Yes or I will GooseBonk you /j

vernal crest
calm nebula
#

Smh unfair to trans peeps

thorny tiger
hard fern
#

they've learned the forbidden fusion technique

vernal crest
#

They should've changed it so they send you mail acknowledging the gender change lol

thorny tiger
#

(prismatic and ancient fruit)

lucid iron
#

Identify as item spawn codes

vernal crest
#

Yes exactly. Give all the anti-woke crowd conniptions!

lucid iron
#

It does seem like a simple mod to make tho

thorny tiger
#

i identify as a [434]

delicate blaze
#

Can anyone suggest a way to make the vanilla Charcoal Kiln produce not only coal but also ash? I don’t see the point in copying the machine into my mod just for ash. I could add an ash recipe for the campfire, but then ash could also be cooked on the stove — which would be strange..."

lucid iron
#

If you want to add a chance for ash then you can do it by new rule

#

Need emc for byproduct

delicate blaze
opaque field
#

very tempted to try the new alpha release because I use switchEvent and I just KNOW it's gonna take forever for me to adjust.

#

today though, today I suffer while I try to figure out/wrangle maps

tiny zealot
#

you're welcome to try it out, but as pathos has mentioned, there's no timeline for release, so don't needlessly delay the release of your mods by holding out for it

opaque field
#

That definitely helps haha I think scope creep is more of a danger for delayed release than anything:p

dire raven
#

Is anyone working on updating Dynamic Bodies to 1.6 by any chance ?

opaque field
#

How do I get the 1.6.16?

lucid iron
#

Steam only atm

lucid mulch
opaque field
#

beautiful, thank you!

#
            "Action": "EditMap",
            "Target": "Maps/Forest",
            "AddWarps": [
                "111 83 {{ModId}}_FloralGlade 16 19" 
            ]
        }```
#

can anyone help me figure out why it keeps saying that my warp is wrong?

#

it says Can't apply map patch "TheWolf > EditMap Maps/Forest" to Maps/Forest: AddWarps > warp 111 83 CacklingCaracal.TheWolf_FloralGlade 16 19' couldn't be applied: must have exactly five fields in the form fromX fromY toMap toX toY.

#

what's the extra field I'm flubbing T>T

tiny zealot
#

hmm, that looks like five fields to me

#

are you sure your target location is fully loaded and reachable (via, e.g., debug warp)?

#

the other thing i'd try is to put in something that i know is one word for the target, like Mountain, and see if it stops complaining. if it does, you maybe have a non-printing unicode whitespace in your mod id or something wacky like that which is breaking parsing?

opaque field
#

I can debug warp to it just fine, though it's zoomed in kinda close. I'll try a different Target and see what happens 🙂

tiny zealot
#

zoomed... in?

opaque field
#

yeah like I can't see the fencing off to the right or the rocky walls. I did get the map to warp though!

pine elbow
#

Is anyone here good with Fashion Sense hair packs? I'm having trouble. The Back Hair won't show up in game, it just shows the side hair instead

#

This is how my sheet is formatted. It's 64x32

#

I looked through the docs but the examples for long hair are animation only, as far as I've seen

#

Hold on you know what

#

I was editing a copy file

#

smh

#

Okay, I fixed part of it. Now it only shows the front hair no matter the position

#

I feel so embarrassed. I figured it out. So Sorry for clogging chat SDVpufferwaaah

lucid iron
#

Set that to the top left pixel of each hair

pine elbow
#

Yeah, I figured that out after I posted these ;; embarrassing

lucid iron
#

Usually it's good to say what u figured out

#

Someone else may find it helpful

uncut viper
pine elbow
#

Ah, true! Basically, elaborating on what you said: If you don't set the starting position of your hairs (top most left pixel), they simply won't show up/if you set them all the same, you'll get a funny image of all your hairs lined up on your character

#

Identifying the pixel placement, it'll be on the bottom corner of aesprite (idk other programs, sorry!)

urban patrol
#

is there any text that can’t be i18n? i’m running into errors with my farm animal display names, and with the display of strings from cs files in the world map

uncut viper
#

the game has no way of knowing you used a token. if something supports tokens and expects a string, it supports i18n

#

if you mean [LocalizedText], thats a different system entirely and there are limitations to that, however if a string is user-facing it generally supports it

lucid iron
#

For the map messages they take a translation key

uncut viper
#

(there are ofc exceptions)

lucid iron
#

So u gotta i18n token edit that

uncut viper
#

i assume nic is talking about Data/WorldMap?

lucid iron
#

Yes

#

I am giving example of no i18n

uncut viper
#

you could just put the text directly in there though with the i18n token, you dont need to give it a translation key

#

the world map just uses [LocalizedText] but you dont need to follow suit if you dont want to

abstract peak
#

Turns out I did need to edit some Rizum sprites for SVE, how do I make my content pack replace the SVE sprites? I dunno how to read that content.json.

urban patrol
uncut viper
#

then yeah, you need to follow the tokenizable string system, not just Content Patcher's system

#

[LocalizedText {{ModId}}/MyAsset:someKeyHere] will look for the string -> string dictionary under the Target {{ModId}}/MyAsset and look for the someKeyHere entry and take its value as the text to display

#

if {{ModId}}/MyAsset doesnt exist or it does exist but doesnt have a someKeyHere entry, it wont work

#

there is no reason it needs to be in Strings/StringsFromCSFiles

urban patrol
#

so i would directly put [ localized text {{i18n.text path}} ]?

uncut viper
#

no

#

you would put [LocalizedText {{ModId}}/MyAsset:SomeKeyHere]

#

elsewhere in your mod you would put an EditData action on Target {{ModId}}/MyAsset
and inside Entries put "someKeyHere": "{{i18n: your i18n key}}"

#

but again you literally dont need to use LocalizedText at all here

#

(also you would need a blank.json load to {{ModId}}/MyAsset first)

#

(you CAN also just put it in StringsFromCSFiles instead if you want im just trying to make it clear that it doesnt need to be. it just needs to be an asset that is a string to string dictionary)

urban patrol
#

oh then i’m confused about what’s going wrong i think. i do have it in strings from cs files, and that’s i18n-ed, but the error i’m getting is no translation. are {{}}tokens not considered strings or something?

uncut viper
#

please show your json for every relevant edit here, stringsfromcsfiles and i18n and data/worldmap

urban patrol
#

okay one sec i’m on mobile

uncut viper
#

tokens dont work in i18n keys

#

bc i18n is not a CP system

#

{{ModId}} in an i18n key will jus end up as literally {{ModId}}

#

but in your content.json (or whatever) it gets turned into your mod id proper

#

also, a mod ID at all in your i18n keys is entirely unnecessary

#

i18n keys are not shared across all mods. they do not need to be unique whatsoever aside from being unique across your i18n

lucid iron
#

Use something like vscode to do multi file search

urban patrol
#

the keys were added by the i18n conversion website automatically whenever something was named {{ModId}}_name. do i have to remove all of the {{ModId}}s?

uncut viper
#

either remove them or replace them with your actual mod id written out

urban patrol
#

okay. if i replace it with my mod ID written out, can i leave it as {{ModId}} in the content.json?

uncut viper
#

can you give an example of what you put into the i18nifier that made it spit out a key with the token in it?

#

you can yes

uncut viper
abstract peak
lucid iron
#

There's a side bar 🔍

urban patrol
lucid iron
#

Click on that and then put Wizard or whatever

#

Need to first open the folder

uncut viper
#

actually ig its easy enough for me to take one and un-i18n it

urban patrol
#

no need, i've got it here

abstract peak
#

See... I don't know where the bit that changes the overworld sprites are.

lucid iron
#

Yeah so look for Target that involves wizard

#

I am fairly sure it is just editimage tho

uncut viper
urban patrol
#

sure, let me set that up real quick. might take a second as i transfer files

#

i'm pulling everything down off of github haha

lucid iron
#

The point is that u can search across whole folder

uncut viper
#

no rush!

abstract peak
#

I guess I'll just do a simple edit, then. Think it's kosher to copy the image edit command from SVE?

#

This is too useful not to...

uncut viper
#

theres only so many ways to write a basic EditImage, and beyond that SVE has very open permissions for edits, so you're fine

abstract peak
#

Alright. Do I need to have the RR stuff mentioned in my manifest for the HasMod to be considered?

uncut viper
#

HasMod will work regardless of whats in your manifest

#

having it in your manifest as an optional dependency however will mean your mod loads after it, which may be helpful

abstract peak
#

Phew, alright. Will add them to my mod, then. This might actually be something I can release on the Nexus.

#
{
      "Action": "EditImage",
      "Target": "Characters/Wizard",
      "PatchMode": "replace",
      "FromFile": "/assets/MagnusOverworld.png",
      "Priority": "late",
      "When": {
        "HasMod |contains=Parrot.RomRas": false,
        "HasMod |contains=Jellonip.RRRR": false
      }
    }```

Overworld sprite is still SVE. What am I doing wrong? It's that one slash, isn't it.
calm nebula
#

The one slash seems like not a good plan

urban patrol
uncut viper
#

mind if i use your json link to let em know then?

urban patrol
#

for sure! did you want me to confirm that that was the issue by testing other things like mail and quests? i hadn't gotten around to testing those after i18n, but if you're confident that that was the issue then i won't bother reverting the change, testing that, then un-reverting it to test if that fixed it

uncut viper
#

im rather confident

urban patrol
#

okay sounds good SDVpufferthumbsup

slim gorge
#

shoulder surgery sucks.

uncut viper
#

@whole raptor hello! your i18nifier doesnt seem to be correctly removing CP tokens from i18n keys for some of the i18nifier categories. using this Quests json as an example:
https://smapi.io/json/content-patcher/f94885282b7c480299f08b274679ae4c
the resulting i18n keys are "{{ModId}}_EverbloomQuest.title" etc which wont work bc tokens dont work in i18n keys.

i also tested this just now with the other i18nifiers and it seems like Recipes, Gift Tastes, Dialogues, and Movies also keep the tokens in the resulting i18n keys.
Events and Objects do seem to correctly remove the tokens, however! i didnt test the config one bc i dont think those support tokens in general anyway. though for Events and Objects, doing {{ModId}}_Text worked while doing {{ModId}}Text does not and leads to some malformed output. dont know if you wanna do anything about this.

(if you're already aware of this stuff then my apologies for the ping, i just wasnt sure how to find if someone brought it up before SDVpufferheart)

latent mauve
#

You will likely need to make a map edit for that particular spot--is it one of the renovation hallways?

#

Or a custom farmhouse?

unborn pond
#

uhhh, IDK!!! Ill take a ss

#

could you tell me if my farm house is modded (not the furnitures just the layout)

#

The hallway stands out alot!!!

lucid iron
#

You have to edit the tmx

unborn pond
#

may I know the name of the file for the hallway thingy SDVpufferwow

ornate locust
#

You know how NPCs talk about getting stuff at Pierre's and it being bad or good? Is there any way to change it for a NPC?

lucid iron
ornate locust
#

I've found stuff like how to change what they say when they see you dig in the trash, but not that one

urban patrol
#

the trait that allows them to is CanCommentOnPurchasedShopItems—could look for a reference to that in strings maybe?

ornate locust
#

ooh thank you, that's perfect

half tangle
latent mauve
#

Yeah, that's definitely a recolor in play for the top borders that doesn't hit the wood trim on that wall

ornate locust
#

Do you use Hallway Fix?

#

Since it's just that bit, it seems like it could be Hallway Fix

#

Maybe check your settings and see if that's in there, it has compatibility stuff built in

#

it can be set to do other stuff, but I think it defaults to just that hallway

#

And I know it has its own textures for that specific bit of wood trim that are colored oddly for you

#

might just need to set it to the right recolors if that's what you've got

uncut viper
#

there are some hardcoded exceptions for specific NPCs

ornate locust
#

The hardcoded exceptions threw me off

uncut viper
#

yeah it literally checks for Abi, Caroline, Pierre, Haley, Elliott, Alex, and Leah, but only those ones. it never does a generic "or whatever name is here" check

#

probably not a bad thing to ask about for 1.6.16 tbh

round timber
#

!commissions

ocean sailBOT
ornate locust
#

It'd be nice to have, letting people set their own "bought at Pierre's" dialog

#

I mainly wanted my guy to not comment badly on stuff he bought to the farmer, so turning it off is perfect for me

round timber
#

look at the message that governor sent after that.

blissful panther
#

(Though I will say that your portfolio has nothing in the way of anything that would be relevant for people wanting Stardew mod commissions. Might be worth working on some stuff first to show you can do what people would want?)

thorny tiger
#

i was interested what their portfolio actually was if it wasn't stardew relevant so I clicked the link in their bio

#

bam

#

flashed

uncut viper
#

(also a reverse image search of a random thing on there reveals its stolen from artstation, so...)

#

(yeah everything i reverse search on there is stolen)

gentle rose
#

(I was just about to do that myself, thanks button /gen)

lucid iron
#

I'm always puzzled by 3d modelers (alleged) coming in here to advertise modding services

#

Do they ever get anyone

gentle rose
#

how often does it happen?

iron ridge
#

it seems to be more common in dms than in the server

gentle rose
#

oh I did have one of those a while back (it was reported to bouncer at the time dw)

lucid iron
#

It's not that common

#

2 nickels perhaps

abstract peak
#

I'm getting some pics for the upload, how do I trigger the first cutscene with the wizard?

lucid iron
#

But like this might get one or 2 ppl in a skyrim modding server but who r they fooling in the 2d farm sim game modding scene

gentle rose
#

idk, I’m tempted /j

lucid iron
#

debug ebi <event id>

#

But idk what the wizard event is off hand blobcatgooglyblep

abstract peak
#

And the event ID for that scene iiiiisss...?

uncut viper
#

you can find it in your unpacked files

gentle rose
#

we are unfortunately (mostly) human people without perfect memory of every event ID in the game

visual dirge
#

if two npcs have stories that are very tied up in each other, would it cause (gameplay) problems to have some of their heart events require having seen one of the other's heart events?

gentle rose
#

it shouldn’t cause gameplay issues but you’ll have a million people ask why they aren’t getting events

lucid iron
#

You can alleviate it a bit if events for A give friendship to B

visual dirge
#

hmmm good idea

gentle rose
#

(obviously if the requirements are cyclic they just won’t trigger, but I assume you already guessed that)

visual dirge
#

yeah ofc

#

another question: would it cause problems (e.g. with perfection) to have a non-romanceable character whose max friendship is permanently lowered by chosing something in an event?

#

(or lowered long-term with the possibility of increasing again through some other event)

uncut viper
#

you can exclude an NPC from perfection

visual dirge
#

is that necessary here?

uncut viper
#

if its only lowered to 8 minimum then its fine

#

but since you said non-romanceable 8 is already the max

prisma sky
#

helooo could anyone explain to me how do I trigger onAssetRequested outside mod entry?

uncut viper
#

or maybe its 10 for non-romanceable still

#

either way. if its lower than the usual max for a non-romanceable, it needs exclusion

latent mauve
#

I intend to do 'group' events eventually for my own mod, and what I will probably do is set odd-numbered heart events to require multiple NPC friendships just to make it be clearer. XD

royal stump
#

the max friendship for perfection (8 or 10 depending on romance) is hardcoded in Utility.getMaxedFriendshipPercent, so you'd need to exclude them or patch that, among anything else

visual dirge
#

i'll probably patch that for this character then

uncut viper
#

im not sure why you'd do that instead of conditionally patching their PerfectionScore

visual dirge
#

hm?

uncut viper
#

PerfectionScore is the field on their CharacterData that determines whether they count for perfection

#

getMaxedFriendshipPercent is a loop over every CharacterData so patching that to specifically exclude yours seems like more work

visual dirge
#

i want the npc to count for perfection, just with a lower friendship requirement under some circumstances

uncut viper
#

even if its just a postfix that redoes all the work (and messes up any other mod that might hook into that calculation)

#

you could make PerfectionScore false (exclude them) if the player has e.g. 6 hearts with them

#

but make them count if they dont

visual dirge
#

that would give the wrong percentage, wouldn't it? although i guess it would only be off by a tiny bit

royal stump
#

the % is binary, so editing the asset to toggle the perfection flag would be identical very similar to a patch

visual dirge
#

oh okay

uncut viper
#

it would, though the player would only know that if they knew exactly how it was calculated anyway and were looking at the qi room scorebord

#

itd be the difference between like 27/30 vs 27/31

half tangle
prisma sky
#

I'm trying to add a custom animation, but as far as I got was making the game crash out because Sprite.LoadTexture was searching in the game files (but for some reason my animation displayed but completely broke the npc)

uncut viper
#

(actually it might be 28/31 for the latter)

visual dirge
uncut viper
#

not only is that still more work im pretty sure but also less performant

#

even if only technically

visual dirge
#

but the most compatible 👍

uncut viper
#

getMaxedFriendshipPercent is called a lot

royal stump
#

the game very rarely looks at perfection anyway, but I'd defer to "don't patch stuff for no reason"

uncut viper
#

i dont know why changing the PerfectionScore is less compatible

royal stump
#

i.e. I removed like 10 perfection patches once it became a 1.6 native thing

visual dirge
#

oh lmao

royal stump
#

(also why I forget how they work now)

visual dirge
uncut viper
#

oh. then yeah, itd be the most compatible out of the harmony options

#

besides a transpiler

#

but it might be equal to a transpiler

#

in terms of compatibility

#

however transpiling loops sucks ass

visual dirge
#

making compatible transpilers is tricky

prisma sky
uncut viper
#

(actually ig basic loops not so bad, but once they start involving early continues or skips or using LINQ it sucks)

royal stump
#

oh right, they also renamed the whole NPC asset

#

but the basic logic was in fact transpiling out any NPCs who should be ignored

half tangle
prisma sky
#

and again the weirdest thing is that my file gets loaded somehow, but then the game tries to also look for it in the game content and everything breaks

uncut viper
#

you can request an asset at any time and from any function

#

aka there are infinite ways to potentially trigger an AssetRequested event to happen

#

it always happens if the asset in question is invalidated and then someone needs something from that asset again afterwards

prisma sky
uncut viper
#

anything that asks for an asset name does it.

prisma sky
#

so how do I prevent it from looking in the game content?

uncut viper
#

if something requires looking inside a data asset for something, it mustb e loaded. it doesnt matter what it is thats asking

royal stump
#

then presumably set the textureName field in your created TAS-es to the name you use there

prisma sky
#

theres been an misunderstanding somewhere, I'm not using TAS-es now, before I did and it worked fine with just the file name but now when trying to set npc.Sprite.LoadTexture it both triggers the hook and looks in the game content which obviously it doesn't exist

lucid iron
#

Why not just keep using the texture name

prisma sky
#

it both triggers the hook and looks in the game content which obviously it doesn't exist

uncut viper
#

that is why Esca is telling you to make it exist

lucid iron
#

Make it exist by implementing AssetRequested

uncut viper
#

you WANT it to look in the content pipeline

#

a TAS cant get it from anywhere else in any case, but even if it could, you want it in the content pipeline

prisma sky
#

oh OH

royal stump
#

everything in the game uses the same content system, and AssetRequested causes whatever you load with it to be available through it

#

e.g. that wiki example allows the game to load a dictionary if any classes look for "Characters/Dialogue/John"

lucid iron
#

I think i showed u my tas custom asset code before

#

That thing was meant to be used with a content patcher mod that would do Load or Internalassetkey

#

And in the back cp does the asset requested handling to make it exist

uncut viper
#

(CP doesnt do that with InternalAssetKey, SMAPI handles it)

#

(just to make it clear that an internalassetkey will not be in the content pipeline and CP will not make it so.)

lucid iron
#

Wait i thought it gets a SMAPI prefixed asset name

prisma sky
#

yeah well I see where I got confused but then how the hell does it both display the file and throw an error for file not existing

uncut viper
#

it does, but for all intents and purposes, its not in the pipeline proper, as nothing else can touch it

lucid iron
#

But yeah putting that aside u just need to do it somehow

uncut viper
#

and that behaviour is undocumented and internal, as it can change without warning

#

it may not do so in the future (not that id assume it ever will change)

lucid iron
#

Something i wonder about is whether Internalassetkey is mp safe

#

Is it deterministic

alpine phoenix
#

Hello. I have a question about map editing. I hope I'm not interrupting

uncut viper
alpine phoenix
#

I have already set up a custom map, and added warp locations. But how would I replace the town map with the modded one?

lucid iron
#

You want to patch only little bits of it

alpine phoenix
#

How would I do that? 😅 sorry this is my very first mod

lucid iron
#

There's 2 fields for EditMap in content patcher FromArea and ToArea

alpine phoenix
#

The command for the Json file would still be edit map?

lucid iron
#

Yep

alpine phoenix
#

Thank you! Will I need to make a custom map with just the edited patch?

lucid iron
#

Depends on what you want to add

prisma sky
#

so my entire case was something that should work but it doesn't for some reason, I have a hook and load the file into the content pipeline as far as I understand it, it loads the animation initially but then it doesn't

alpine phoenix
# lucid iron Depends on what you want to add

I'm adding a path at the edge of the town map that will warp to my custom map. I've already edited the location on the towns map but I just need to figure out how to apply the modded area so the warp will work.

lucid iron
#

If you wish to make a new location then you need to Load the map and then EditData a Data/Location entry to use the map with

alpine phoenix
#

Thank you! I'm gonna try that

latent mauve
#

Oh, whoops, ignore me, I completely overlooked where you said you already edited the location on your towns map and thought you hadn't put that in game yet either

alpine phoenix
#

Yes I have the warp set up already. I just need the town map to be edited so I can access the warp area

alpine phoenix
latent mauve
#

Specifically you are looking for the top left corner of your patched spot for your x,y coordinates and then the width and height of your rectangle area from there

alpine phoenix
#

and would the format be (x, y width heigth)?

latent mauve
#

There's an example further down the page chu linked that may help: { "Format": "2.7.0", "Changes": [ { "Action": "EditMap", "Target": "Maps/Town", "FromFile": "assets/town.tmx", "FromArea": { "X": 22, "Y": 61, "Width": 16, "Height": 13 }, "ToArea": { "X": 22, "Y": 61, "Width": 16, "Height": 13 } }, ] }

#

(that patches the town square)

whole raptor
#

Ah, as in ModID token is used in the i18n key, makes sense how I missed it

alpine phoenix
prisma sky
#

I don't get what I'm missing

uncut viper
#

yeah. ModId is just what was used an example, but any token should be banned from being in the i18n key

#

including dynamic tokens

prisma sky
#

so assetRequested and its e.LoadFrom are responsible for loading the asset into the content pipeline right?

gaunt orbit
#

Load or LoadFrom yes

#

For things that aren't in Content/

prisma sky
#

then why oh why does it work once and then tries to happen twice more and breaks if it should get invoked only once to start with

#

it breaks at the end of the first instance of my loop, doesn't even allow it to progress past the broken animation

uncut viper
#

its really difficult to give exact answers without a) an actual description of what you mean by "breaks" and/or b) the code in question

prisma sky
#

breaks meaning: in game the animation plays once, it then stops at the last frame and completely stops npc ai and my code, in SMAPI it always shows the error of file not existing twice after that

uncut viper
#

there are several flavours of nonexistent file errors. so we would need an actual log and again the code in question

whole raptor
uncut viper
#

dont take that as me demanding a fix for it toh. i dont use the i18nifier and its already a good enough tool, saying "just put a custom key to fix it" is well within your rights SDVpuffersquee

uncut viper
#

though, a custom key still breaks with {{ModId}}Text i think?

lucid iron
#

Here the one example i got for loading texture in asset requested

whole raptor
#

Well yeah 😅 I'm still intending to look into it when I have time (shouldn't be too hard)

rough lintel
#

question: recipes can't do the "flavored" thing that machines can, right? like if i have it accept any of an item type, it won't prefix the result with (item name) thing

#

im 90% sure they cant but i just like to be sure as always

whole raptor
lucid iron
#

It's slightly strange bc it's constructing the path but u hope u get it

prisma sky
#
 private void Content_AssetRequested(object? sender, AssetRequestedEventArgs e)
 {
     if (e.Name.IsEquivalentTo("HaleySprite_Test1"))
     {
         e.LoadFromModFile<Texture2D>("Assets/HaleySprite_Test1.png", AssetLoadPriority.Medium);
     }
 }```

this is the most basic I could have done to even try getting it to work
lucid iron
#

Yes u need at least this much PecoWant

prisma sky
#

and then I just use npc.Sprite.LoadTexture("HaleySprite_Test1");

uncut viper
#

it turns it into e.g. {{ModIdMyObject.DisplayName

latent mauve
lucid iron
prisma sky
lucid iron
#

Sprite.textureName.Value = "HaleySprite_Test1"

#

Gotta do it like this for multiplayer reasons

prisma sky
#

and then I assume UpdateSourceRect should update it

whole raptor
#

If it's a prefix like in object then yeah, it wouldn't work... I really need to looks into objects, cause I have no clue why it even ignores {{ModId}}_ specifically in the first place 😅 Maybe I just started fixing it and forgot to finish.. SDVpufferthink

lucid iron
#

Source rect has nothing to do with tx beyond using the rectangle

uncut viper
prisma sky
#

wait forget abt that Im not thinking clearly no more-

#

tf I meant update, assigning a new value is instant

uncut viper
#

(also dont forget Events also ignores ModId)

#

though strangely it breaks differently when you remove the _

whole raptor
#

At least in events it was intentional SDVpuffersquee

#

... well shit

uncut viper
#

if you remove the _ and make it {{ModId}}MyEvent, the key becomes the first command in the event, which is the music name

whole raptor
uncut viper
#

"{{ModId}}3910674/f Shane 1000": "shaneTheme/-2000 -2000/ ... becomes shaneTheme.0 for example

whole raptor
#

Huh... interesting...

#

Although I have an idea why at least

prisma sky
lucid iron
#

You will have to post log at this point

#

I do not know your problem

prisma sky
#

the only thing it did is that now it throws the error 4 times instead of 2 lmao

#

where do I post it?

lucid iron
#

!log

ocean sailBOT
#

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

Please share your SMAPI log file. To do so:

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

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

prisma sky
#

do I upload the entire log or just the error message

lucid iron
#

Entire log

prisma sky
lucid iron
#

Need the actual file not the console window

prisma sky
#

give me a moment gotta disable some mods

lucid iron
#

I'm not gonna judge u for lewd stuff, but you should be testing on a minimal mod list anyways

prisma sky
#

I was too lazy to get a new save file

#

and so far I haven't done anything that could invade other mods

gentle rose
#

we really do need to see a log to help you any further

lucid iron
#

It's less about that and more about other mods affecting you

#

Plus faster load times with small list

prisma sky
#

true

lucid iron
#

I am also pretty confused about the goal of your mod anyways

#

What are you hoping to achieve with replacing the texture on the actual NPC? It is probably bad for compat

prisma sky
#

I want to add new animations

#

for new activities I'm doing, but that part doesn't matter for now

haughty charm
gentle rose
#

hi logo!

haughty charm
#

Hi, iro!

lucid iron
#

The new activity part is concern tbh, NPC path finding is cursed

prisma sky
#

that's a whole another load of crap I'm dealing with

#

I doubt it has anything to do with a file not loading properly

lucid iron
#

I think it's quite a bit easier to hide original NPC and then use a new entity for the new stuff

gentle rose
#

we really won’t be able to tell until we get that log, though…

prisma sky
#

yeah I'm getting there

ocean sailBOT
#

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

prisma sky
#

I looked at it myself and it reminded me how much random stuff I have there

#

also wth a new smapi version

red egret
#

Im trying to make the mega house but it doesnt even get shown on the map, i made it narrower as it wanted but still nothing

gentle rose
#

hmm, do asset names not need at least one part of the path before them? like Maps/Whatever etc

#

also it’s very hard to tell when you test a mod while having so many unrelated mods, like chu said. it’s best to test literally with only your mod and its requirements (if any)

haughty charm
gentle rose
#

is there a specific reason to use both?

haughty charm
#

That was the suggestion at the time

prisma sky
haughty charm
#

Or I misunderstood completely

uncut viper
haughty charm
#

So originally what I wanted was for the mailflag to trigger if someone had built either coop

#

But that didn't exist because of escaping shenanigans or something

#

So I had to work around it

gentle rose
#

(but also unless you’re using the mail flag for other things too, I think you can actually use GSQs directly in event preconditions now)

#

(which may help you work around all of this)

uncut viper
#

if both types of coops should lead to the same mail flag, they can just both add the same mail flag, no need to put a 1 at the end

haughty charm
#

I have no loyalty to one way over the other, I just want the event to trigger.

gentle rose
lucid iron
#

It's not important

gentle rose
#

ah, ty chu

prisma sky
uncut viper
#

i think if you took an existing save that did not have both types of coops, itd work fine

lucid iron
#

Anyways did you register AssetRequested

prisma sky
uncut viper
#

and the reason it works with a new save is bc you're not gonna be able to miss triggering the event between building a big coop and going to get the deluxe

#

so you'll never have the chance to have both flags at once

haughty charm
#

What would be the most efficient way to fix it?

uncut viper
#

or, well, you might miss it if you slept on ginger island

uncut viper
#

or anywhere besides the farm

gentle rose
#

(may I ask why you’re doing this with C# and not a content pack with spacecore animations, anyway? that just seems so much easier)

prisma sky
#

because I need to trigger those animations in specific cases

uncut viper
prisma sky
lucid iron
#

I still have no idea what's the difference between your thing and schedule anim but not gonna stop you Dokkan

gentle rose
#

I’m confused about why you can use c# but not content patcher

lucid iron
haughty charm
#

Thank you, Button! SDVpufferheart

prisma sky
lucid iron
#

Rn i see in the trace log that your texture got loaded once in a random spot which makes me think you just called the method

uncut viper
lucid iron
#

This gif has 0 useful info to me

#

Do you understand what I am trying to explain or not?

prisma sky
#

nope

uncut viper
#

ideally your event will always exist in the games data

lucid iron
#

Please read the wiki page on handling content then PecoWant

haughty charm
#

Thank you again! SDVpuffercactus

prisma sky
lucid iron
#

Did you look at the example data edit

#

Or either example i linked

#

Ah it looks like the official microsoft term here is subscribe to event

#

The thing i been trying to ask is whether you did this bit

gentle rose
#

you can also do a more direct version by replacing the mail flag precondition with GameStateQuery Any \"BUILDINGS_CONSTRUCTED All \\\"Big Coop\\\"\" \"BUILDINGS_CONSTRUCTED All \\\"Deluxe Coop\\\"\" I think logo and removing the mail flag if that ends up causing you issues

uncut viper
#

iirc that was what we originally tried to do last year but

#

it was in the trigger action

haughty charm
#

Yeah, that's exactly what we tried to do

uncut viper
#

and it was Escape Hell

haughty charm
#

yep yep

uncut viper
#

in fact i believe back then was before 1.6.9? which i think fixed something to do with GSQ precondition escaping

gentle rose
#

I think those escapes should theoretically maybe work possibly?

haughty charm
#

I'm 99% sure that it was fixed in 1.6.9

#

But I am not very knowledgeable about this bit of modding

#

Which is why I'm here SDVpuffersquee

uncut viper
#

"The G precondition parsing isn't properly quote-aware, which is fixed in the next 1.6.9 beta patch. Thanks for reporting it!"

prisma sky
#

Im getting really confused, do you mean this? this.Helper.Events.Content.AssetRequested += Content_AssetRequested;

uncut viper
#

so yah the GSQ precondition literally was not an option at the time SDVpuffersquee

lucid iron
#

Yeah ok DokkanStare

haughty charm
#

So now I could add it directly to the events json and skip the whole trigger action/mailflag bit!

gentle rose
#

I’m not sure if this would need triple or double \ but pathos says double so listen to pathos

uncut viper
#

you can yes

half tangle
#

yeah, that's subscribing to the event AssetRequested so now your method Content_AssetRequested will run whenever the AssetRequested event is triggered

haughty charm
#

Thank you for the help, iro & Button! SDVpufferheart

half tangle
uncut viper
#

(in fact you can probably just copy exactly what Pathos wrote in that message linked)

gentle rose
#

(mostly button SDVpuffersquee I’m here to learn things)

haughty charm
#

(that was my plan lol)

uncut viper
#

just make sure when you copy it that your text editor doesnt auto add any more slashes

haughty charm
#

It's not, just yelling at me for not abiding json schema

lucid iron
#

I also need to know if u did the subscribe to event part in Entry or some other time

prisma sky
#

in entry

gentle rose
#

would it be possible to see your code? via github preferably if it’s long

prisma sky
#
(Entry){

      this.Helper.Events.Content.AssetRequested += Content_AssetRequested;
  }

  private void Content_AssetRequested(object? sender, AssetRequestedEventArgs e)
  {
      if (e.Name.IsEquivalentTo("HaleySprite_Test1"))
      {
          e.LoadFromModFile<Texture2D>("Assets/HaleySprite_Test1.png", AssetLoadPriority.Medium);
      }
  }
lucid iron
#

What is (modEntry)

prisma sky
#

this is everything I have on the assets

#

that's just my simplification to show thats in modEntry because I didn't want to copy the entire class and the shitload of junk in it

gentle rose
#

but is it in the entry method?

uncut viper
#

chu asked to make sure its in Entry, not ModEntry

prisma sky
#

oh yes sorry

lucid iron
#

Ok sure ill trust that it's the Entry method specifically

prisma sky
#

thats my bad

#

yes it is

lucid iron
prisma sky
#

where do I put it?

gentle rose
#

isn’t patch export only for content patcher, chu?

lucid iron
#

May need to give it the Texture2D type if it's never been loaded

#

It's any asset

uncut viper
gentle rose
#

ah, I see

half tangle
prisma sky
#

it looks like a smapi command but I litera

#

yeah

uncut viper
#

if it cant figure out what an asset type is, you can also tell it what type it is to export it as

lucid iron
#

But yeah I'm just puzzled by why it does attempt a load, but only afterwards

prisma sky
#

I'm surprised this turned out to be something more interesting than me just being dumb

gentle rose
#

tbh idk if this is the same for you guys but I struggle to think in code snippets SDVpuffersquee I can only really start spotting issues when I see the actual code base

lucid iron
#

Most bugs are someone being dumb somewhere but there's no shame in that

#

I'm asking dum question to probe for the dum

half tangle
#

we have all been dumb and will continue to be

cold marsh
#

Where can I find the sprites for the fishing spot bubbles? The ripples look hardcoded as part of the water, but the rest look like regular sprites

gentle rose
#

you know me, I have never asked a dumb question in my life sideeye

lucid iron
#

TileSheet/Animations uf I gotta guess

#

Or Cursors cursors ofc

uncut viper
#

i would guess Cursors first

prisma sky
#
[Content Patcher] Exported asset 'HaleySprite_Test1' to 'C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley\patch export\HaleySprite_Test1.png'.```
uncut viper
#

either way good luck looking for a mostly transparent ring that blends into the bg

lucid iron
#

Nice so this means you did all the content loading parts correctly

cold marsh
gentle rose
#

can we see the code where you’re using the sprite?

lucid iron
#

Next thing to check is how are you acquiring Haley

rough lake
#

Does anyone know how to change the name of an NPC in all the game's dialogues, whether in events or conversations with other NPCs? It's driving me crazy searching paragraph by paragraph for Sam's name in all the game's dialogues.

gentle rose
#

it would require C# if you want to do it for everything I think

lucid iron
#

Yeah check the J Club

rough lake
#

The truth is that this is my first mod and I don't even know what I'm doing.

lucid iron
#

What's the goal here anyway, replacing Sam with another character?

rough lake
#

yes

lucid iron
#

You sure you don't want to just make a new npc?

rough lake
#

no

#

I want to replace Sam with Fang from Brawl Stars XD

uncut viper
#

theres no way without C# to do it in entirety

lucid iron
#

We r just warning you, it's about as much work to replace npc as to create new one

rough lake
#

I managed to replace the portraits but the rest is becoming too difficult for me.

uncut viper
#

but you can do some of it with CP by editing Data/NPCNames

#

or Strings/NPCNames i forget

prisma sky
uncut viper
#

but other NPCs mentioning Sam will have it written directly in their dialogue

lucid iron
#

Yes, how did you obtain the npc instance?

haughty charm
#

(I'd wager it's more work because of all the other references to Sam)

rough lake
lucid iron
#

Well sure i think my point stands

rough lake
prisma sky
uncut viper
prisma sky
#

the only instance in which I can have the npc in one place and not mess with things

#

also why I was too lazy to create a new save file

lucid iron
#

Well u could have used getcharacterbyname

#

But it does sound like you acquire the actual npc instance yep NotteThink

prisma sky
#

that I do and theres no doubt abt it

lucid iron
#

I'll also assume not multiplayer

gentle rose
#

what method/part of the code are you doing this in? I assume not also in Entry

prisma sky
#

definitely not currently

rough lake
prisma sky
uncut viper
#

probably not, but feel free to check those mods for yourself to see if they can let you do that

lucid iron
#

How did u acquire a spouse before loading into a save

gentle rose
#

I’m confused, was this line in the Entry method or not

prisma sky
#

I get the instance and try to load the texture from another class

#

entry is only for the event hook

gentle rose
#

okay, so where do you do it?

#

(this is why seeing the full code would be helpful, even if you think most of it is irrelevant)

rough lake
#

I'm going to cry

#

:,v

prisma sky
patent lanceBOT
prisma sky
gentle rose
#

we really, really aren’t…

lucid iron
#

Just rewrite everything and it'll magically work ez

prisma sky
#

that is not a bad idea at all tbh

lucid iron
#

I do find the timing of everything somewhat puzzling tho, will go try stuff and get back to u

gentle rose
#

most of us are pretty decent at reading code, but if we only see snippets we literally cannot know if something is wrong just outside of what we’ve seen

#

sometimes it’s as simple as an unexpected typo

torpid sparrow
#

ermm showFrame suddenly stopped working

#

it worked in my other events but not in the one im currently writing

lucid iron
#

mod that change everyone sprite to assets/Clint_Winter.png

gentle rose
#

everything is boncher lite

lucid iron
#

merely everyone, and only on demand

#

dont as why theres translation class in here its not important

gentle rose
#

can I have a copy of your boilerplate code please, mine’s awful SBVLmaoDog yours is so nice /hj

lucid iron
#

u can install it with dotnet new --install path/to/sdvmod

#

but i imagine u dont want mushymato to be in there

hard fern
#

Somehow i didn't register that everyone was clint

lucid iron
#

and the $(MSBuildUserExtensionsPath)/sdv.props is also for some never to be committed bits

lucid iron
gentle rose
#

wait didn’t you have a bit that replaces the username with mushymato SDVpufferthinkblob or am I just not finding it

lucid iron
#

thats in the never to be committed bit

#

cus yknow, its got my local paths

gentle rose
#

very fair

uncut viper
#

why not make your own dotnet template

#

i find it fun to create and customize my own

#

like a lil dotnet zen garden

lucid iron
#

yea thats what im saying to iro

#

u can yoink mine and do w/e to it

uncut viper
#

hand me down dotnet template, gross /j

calm nebula
#

Iro knows about shares libraries

gentle rose
#

why can’t I just use my sbt template I made in uni. shouldn’t they be interchangeable /j

lucid iron
#

heres the sdv.props bit

#

its not in the template due to reasons blobcatgooglyblep

gentle rose
lucid iron
#

ideally i want ppl to be able to clone my repo and just build it without issue, and this stuff potentially cause issue

gentle rose
#

(I’m still convinced the version currently in the alpha branch of your github just doesn’t compile)

lucid iron
#

iro the secret is to just

#

yoink it out

#

and bonk until it works bapbap

gentle rose
#

atra claims it should compile as is

lucid iron
#

yea well i dont trust ppl who use VS

#

not even pathos repo compiles with no change for me

calm nebula
gentle rose
#

I’ve even tried it in VS! it didn’t even compile then!

lucid iron
#

no offense to anyone it's just how it is being second class citizen

prisma sky
#

btw just to make sure, so when I assign npc.Sprite.textureName.Value I dont have to use npc.Sprite.loadTexture

#

Im getting bamboozled

#

I'm trying to fix this mess of code a bit

lucid iron
#

you dont need to do load texture

#

see the body of ConsoleClintTime in the example

prisma sky
#

hm

lucid iron
#

textureName is a netfield, and setting it trigger the field changed which loads texture

prisma sky
#

what I just maybe found out is silly to say the least and the error logs completely misguided me, I feel like the biggest issues might be caused by the animation itself

#

I did something

#

I got rid of the error messages somehow but the npc sequence still breaks the same way

lucid iron
#

it's possible that you dont have enough frames

torpid sparrow
#

Hi um one of my events is not working. It straight up stops recognizing event commands even though the same commands are working in every other event

latent mauve
#

Does AddItem in an event show it over the farmer's head, or is it just AwardFestivalPrize that does that?

torpid sparrow
latent mauve
#

Or a precondition change

torpid sparrow
#

i changed the music id

#

and thats it

prisma sky
torpid sparrow
#

i didnt touch anything else from after i tested last time

lucid iron
#

since this is an npc they'll try the 16 frame walk at some point

torpid sparrow
#

ok wait i think i found the issue

#

the errors were throwing me off

prisma sky
#

I'm adding my own animations, not replacing them

lucid iron
#

yes but AnimatedSprite still has expectations about spritesheet

#

thats the class u are using

#

the reason why i suggest temporary animated sprite is bc tas don't have all this stuff

prisma sky
#

I mean for them to go back to their original spritesheet after it finishes

ocean sailBOT
#

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

prisma sky
lucid iron
#

PecoWant well either is possible, but yknow NPC are just cursed in many ways

#

faking it to do ur own thing is 100% less of a hassle kyuuchan_run

#

while trinket tinker wasn't made for this, it is quite good at faking other entities monS

#

and to do this conveniently i just made my own sprite frame class to draw with

prisma sky
#

yk what I'm just gonna

public static void testAnim()
{
    string backSheet = spouse.Sprite.textureName.Value;
    spouse.Sprite.textureName.Value = "HaleySprite_Test1";
    List<FarmerSprite.AnimationFrame> testSheet = new()
    {
        new FarmerSprite.AnimationFrame(0, 200),
        new FarmerSprite.AnimationFrame(1, 200),
        new FarmerSprite.AnimationFrame(2, 200),
        new FarmerSprite.AnimationFrame(3, 200),
    };
    spouse.Sprite.setCurrentAnimation(testSheet);
    spouse.Sprite.loop = false;
    spouse.Sprite.endOfAnimationFunction = (Farmer farmer) => 
    {
        spouse.Sprite.textureName.Value = backSheet; 
         
        canContinue = true;
    };
}```

just tell me how cursed it is ![SDVkrobussad](https://cdn.discordapp.com/emojis/898395723924656189.webp?size=128 "SDVkrobussad")
lucid iron
#

did u do animateOnce at any point

prisma sky
#

...no?

urban patrol
lucid iron
#

looking at NPC.update, animateonce gets called after some other stuff

latent mauve
#

I'm trying for the effect you get when you open a chest in the caves for instance, or when you get the sword, which seems to be done with AwardFestivalPrize, but since that looks like it will be moved away from in the future... :/

#

Trying to futureproof my event a little

lucid iron
#

i'd try making the custom sheet haley vanilla + your 4 frames at the end

#

write down the numbers ofc PecoWant

#

may also need to Halt the npc first

prisma sky
#

as far as I understand the issue is that the endOfAnimationFunction isnt happening

#

does it even work for NPC's?

lucid iron
#

as far as i can tell only farmersprite uses that

prisma sky
#

imma go crazy

calm nebula
#

Animation frames might also have associated delegates?

#

How does Clint do his hammer noise

torpid sparrow
#

I'm in here so much tonight but does anyone know how to add an object on the ground that can be picked up? I want to have a piece of cloth on the ground you can take once and that's it

urban patrol
#

that might fall under spawnables? which i believe need a framework, unless you can somehow set it up as a forageable or something. other people know more than me about this though

prisma sky
#

just an educated guess but wouldn't it fall under the same category as robin's axe and linux's bucket?

lucid iron
#

u can maybe use a lost item quest

torpid sparrow
#

hmmm

#

i did look at lost item

#

its just that this isn't a lost item

#

like there wouldn't be anyone to return it to

prisma sky
#

you might at least look into how the item is rendered into the world

torpid sparrow
#

its in the quest

#

i think

#

yeah its set up in the quest itself

prisma sky
#

you could replicate the part that makes it appear and interactable, no need for the quest shenanigans, but apperantly Im a crazy masochist so thats what I would do

torpid sparrow
#

i do not know how to do that nor do i want to figure it out LOL

#

i think i'll just have emily send some mail

#

oh wait i'll just do a conversationtopic

royal stump
#

if you're trying to do it via CP, your options for forage (a.k.a. objects on the ground) are the Data/Locations forage system, an FTM content pack, or spacecore's spawnable system

torpid sparrow
#

augh yeah thats too complicated

royal stump
#

it's a decent amount of set up for a once-only item to pick up, yeah

torpid sparrow
#

its just one item so ill work around it

#

yeah exactly

prisma sky
#

on my issue @lucid iron do you think there is a way to check when the animation finishes?

#

if all else fails I will go to the dark side and use the tas

lucid iron
#

animateOnce returns true when it's done

#

but like, you do not control the update loop for NPC

prisma sky
#

animateOnce took a gameTime parameter

#

where do I even get that from

lucid iron
#

have you considered looking at this NPC.update method i keep bringing up PecoSmile

prisma sky
#

my brain must have skipped it but now I do

lucid iron
#

i dont think tas is the darkside anyways

#

theres even a thing to attach a TAS to a Character

#

its quite convenient, but ultimately you should really think about how you want to organize this mod

prisma sky
#

at least I'm exploring different possibilities...

lucid iron
#

and ofc

#

give it an exciting name YuniHappy

prisma sky
#

I have a tas commented out already but someone told me to try this way

lucid iron
#

thats the most important part™

prisma sky
#

[SMAPI] - your project name yeah

prisma sky
lucid iron
#

the bit that handles CurrentAnimation?

#

unrelated to this though, are you sure whatever it is that you want cannot be a schedule animation?

prisma sky
#

yes.

lucid iron
#

how come

#

i don't think i can help you very well when the desires remain vaguely defined

prisma sky
#
 if (Sprite?.CurrentAnimation != null && !Game1.eventUp && Game1.IsMasterGame && Sprite.animateOnce(time))
 {
     Sprite.CurrentAnimation = null;
 }``` this is the only thing abt currentANimation
lucid iron
#

yea u can see where animateOnce is being called in the update loop

prisma sky
#

which is also why I'm doing it with spouses for now, they don't leave the farm

#

most of the time

lucid iron
#

i suspect the fact that it's spouses might be causing a separate set of problems

#

their behavior is quite hardcoded

prisma sky
#

you can always overwrite their bahaviour

tiny zealot
#

if it's a spouse, that definitely explains why it can't be a schedule animation, lol

prisma sky
#

for now I didnt have problems as they stand on the porch most of the time

lucid iron
#

what's the high level goal here yggy

latent mauve
#

Patio animations are the least troublesome for spouses

prisma sky
#

wait nvm I forgot I literally did a harmony patch to make them stand there 24/7 overwriting marriageDuties

#

oop

lucid iron
#

i wish u luck in untangling ur mess

prisma sky
#

its not that deep when Im working with concepts now

#

the patch makes them not do all the crazy hardcoded shit, and then I can do whatever I want with them afterwards

lucid iron
#

is this mod specifically meant to make spouses better

#

or broadly applicable

prisma sky
#

its supposed to be part of a bigger npc initiative but I needed test subjects

#

and no Im not gonna overwirte schedules that would be a disaster for everything and everyone

lucid iron
#

if u r moving around npc to where they r not supposed to it is already disaster 3sSmolMiku

prisma sky
#

I think I said it once already but I wanted to utilize it in a new setting I will create possibly

lucid iron
#

but perhaps the disaster is goal here

prisma sky
#

test subjects

lucid iron
#

the last time you said you want to make some sorta trpg

prisma sky