#archived-modding-development

1 messages · Page 531 of 1

cedar hemlock
#

make sure you only use 1 of them

#

or, at least one of them

fair rampart
#

Ohh

#

Ok I’m tempted to boot my computer back up now

cedar hemlock
#

go sleep

floral blade
#

rest!

fair rampart
#

I mean I’m not that sleepy

#

I’m just tired

cedar hemlock
#

goodknight _ _

fair rampart
#

Woke up at 3 pm yesterday

#

I’m only going back because I know it will be built done and quick after I switch to usings

#

does this work fine?

#

I uh, googled what usings are and I got intellisense as a result

#

nvm

#

OH I REMEMBER NOW

#

GOD HOW DID I FORGET THIS

#

@cedar hemlock yeah there's UnityEngine at the top

cedar hemlock
#

does it work now or not?

fair rampart
#

well I only have 22 errors now

#

but I still have these

cedar hemlock
#

well, do what it says

#

reference UnityEngine.CoreModule

light zodiac
#

Show all your references

fair rampart
#

if I use both UnityEngine and CoreModule I get "exists in both 'X' and 'Y'" type errors

#

and when I did both usings it gave me an error saying it was unnecessary to use said directive

#

I've been programming on and off since 2017 so I dont know why im struggling with this

#

maybe its because im inexperienced with Unity, but I'd say this is pretty simple

#

so yeah im stumped on this one

#

current usings:

cedar hemlock
#

ye reference UnityEngine.CoreModule.dll

fair rampart
#

and now its just 138 monobehavior errors

#

we're getting closer

#

I think I just need to reference PlayMaker

#

...no?

cedar hemlock
#

you already have it referenced

fair rampart
#

alright I saw

#

the MonoBehavior errors needs UnityEngine to be referenced but I already tried toying with that

#

is there any other way to get rid of these errors?

cedar hemlock
#

try removing unityengine from refs and reffing it again

fair rampart
#

alright

#

its back to being oofie again

light zodiac
#

Right click on the redlines in code and see what the lightbulb says to do

#

Also doing this in 1.5?

fair rampart
#

I’m not even sure what version I’m trying to build at this point

#

I’m aiming for 1.4

#

Because that’s the popular version atm

light zodiac
#

because 1.4 api doesnt have mm_hook .dlls

#

what .net framework is your project

fair rampart
#

I’ll check when I wake up

worn eagle
#

if I can make a suggestion, putting adds in a boss fight is difficult to make fun

floral blade
#

what's an add? is it like a term for spawning more enemies ?

worn eagle
#

yuh

floral blade
#

gotcha

fair rampart
vocal spire
#

aww I missed stuff happening

primal latch
#

Isn’t that the way we live? How desperately we try to keep up with everything in the world. Can you ever truly say that you know everything that is happening in this world?

proven cipher
#

Does anybody know what exactly was changed to make wall cling storage not work the same after 1221, and if it would be possible to patch it back in through QoL mod. (Or, of course, just a different mod.)

primal latch
#

Nope. I wasn’t around during 1221. I only joined during 1.4.3.2

pure kernel
#

Hey all! I tried installing the Enemy HP Bar mod but they happen to take like half the screen when I play, since I play in 4K and it's apparently built for 1080p. I found the source of the mod (here https://github.com/ricardosouzag/Enemy-HP-Bars), I don't have any experience at all in C# but I'm a webdev, and I figured it wouldn't be complicated to change the resolution. I want to try editing stuff but I have no idea how to compile it to a DLL file, is there an easy way to do it? Thank you :)

vocal spire
pure kernel
#

you mean" ModdingApi.GlobalSettings"?

#

I only see "EnemyHPBar": true in it, should I add something?

vocal spire
#

no

#

there should be some enemyhpbar globalsettings

pure kernel
#

Oh, right! Nice, works perfectly now, thanks a lot :)

primal latch
#

What is the status of MI 2.5 and 1.5 and 3?

light zodiac
#

When is MI 20 coming?

rough pulsar
#

when is mi 69.420 coming

languid goblet
#

how could one make fake achievements?
by that I just mean displaying like a custom achievement with a custom icon

light zodiac
#

SFCore

languid goblet
#

oh sick didn't know that was a feature
well, that'll make it a lot easier

jolly oriole
#

on 1.5 that part is basically entirely broken

#

until i come around to fix that

languid goblet
#

well, 1.4.3.2 is the mod version anyway

#

what?

light zodiac
#

1.5 best mod version

languid goblet
#

well so should I try developing for 1.5 or 1.4.3.2

light zodiac
#

1.5

ornate rivet
#

I hate 1.5 with a burning passion but you should probably do it in 1.5

languid goblet
#

also, is it possible to display an achievement multiple times?

light zodiac
#

Just remove achievement before giving it again?

languid goblet
#

oh

light zodiac
#

Or make it have a different achievement key

languid goblet
#

I'm looking real dumb rn aren't I

light zodiac
#

Like different key, same name/sprite

copper nacelle
#

1.5 is better Saleh is just a coward

worn eagle
#

isn't ple curt already in 1.5

#

how do you escape asterisks

ornate rivet
#

yea

languid goblet
#

\*

ornate rivet
#

to both what jingle and 56 said

languid goblet
#

I saw that

ornate rivet
#

saw what?

languid goblet
#

nothing

ornate rivet
#

good

jolly oriole
#

pale court leaks in hk main smhmyheads

ornate rivet
#

Now no one will see the エロアニメ image I posted on main

copper nacelle
#

saw the impostor from among us

#

he's becoming weeb

#

spent too much time with sid

ornate rivet
#

sid can be based sometimes

copper nacelle
#

often

ornate rivet
#

true

primal latch
#

For if any of you ever struggle with accessibility levels:

#

Why does it even need it? I mean: we have reflections so in theory every value is public

jolly oriole
#

imagine being limited to 5 keywords

ornate rivet
#

reflections are slow though

primal latch
primal latch
copper nacelle
#

because reflection to get around accessibility for random shit is a hack that becomes necessary when dealing with a game

#

you don't want to just reflect every field in any random library

nova acorn
#

Isn't pale court gonna be out soon

primal latch
#

I know. I said theoretically. I know it’s not practical

copper nacelle
#

that's breaking the abstraction and leaves api compatible updates causing breaks due to depending on internals

primal latch
#

I know. I’m just wondering what the use of accessibility is. Just make everything public and if changing a variable that has the potential to break things, make an expert keyword or something

floral blade
#

The way i understand it is something like : say you make a mod , with 2 methods magic and magicAPI you expect people to use magicAPI , but i use magic , down the line you update your mod and because u expect people to only use magicAPI you change how magic works but keep magicAPI the same. but now your update breaks my mod 😦

#

this wouldn't happen if you would keep magic private and magicAPI public , unless i really wanted to mess with things and used reflection to get at magic

primal latch
ornate rivet
#

not having print hierarchy tree is murdering me

#

modcommon I love you

#

why did you forsake me

vocal spire
#

Steal it from modcommon

ornate rivet
#

I couldn't compile it :(

vocal spire
#

Oof

#

I have one I could send

#

Isn’t for latest patch, will fail to load, but calling stuff in it still works

ornate rivet
#

ooo

worn eagle
#

is unityexplorer not good enough for you 😤

vocal spire
#

No

copper nacelle
#

You shouldn't be using internals regardless of your level of expertise

#

Because that breaks abstraction

#

The only case to is when you have to or you're doing something like serialization

ornate rivet
copper nacelle
#

internal is so you can have things within the assembly but still keep it away from public users

vocal spire
copper nacelle
#

a random user shouldn't be able to mutate list backing stores or lengths because it could very easily lead to breaking many things

#

especially if your implementation uses something like unsafe because it knows due to internal state that what its doing is safe

#

suddenly you've ruined internal state and read oob

#

unsafe read oob so maybe a segfault maybe junk

#

The other use case for reflection is just traversing fields and checking stuff dynamically

#

Access protection shouldn't be ignored for no reason

#

Look at something like BitConverter.ReadInt32

#

if you could modify private variables you could fuck with the array length and get uninitialized data in seemingly safe code

primal latch
#

Hmmm…… you are right

copper nacelle
#

While it may seem pointless on the outside it allows library refactoring to take place independently meaning you can get speed benefits and internal improvements while ensuring that the consumers are unaffected

jolly oriole
#

that sounds like what i did with sfcore's achievmenthelper

copper nacelle
#

In cases like hollow knight some people elect to use attributes which ignore access checks along with a stripped public-ed version of the assembly so they don't have to deal with modifiers as bypassing them is necessary

#

other times you get heavy use of reflection

#

or unsafe

#

or all of the above

#

But in the general case modifiers are important for libraries and stability

#

modding just makes it feel otherwise because you kinda have to bypass them a lot of the time

fair rampart
#

how can I check what NET framework my visual studio has?

light zodiac
#

See the csproj file

fair rampart
#

alright

#

its NET Framework 3.5

#

so if I wanted to build this mod for 1.4.3.2, I would have to use 4 or something along those lines?

light zodiac
#

No 3.5 is correct

#

Just make sure your referencing the correct API and unity modules

fair rampart
#

because I get build errors depending on what references I have

#

right now I have 18 errors for GameObject

light zodiac
#

From which folder are you referncing these stuff from?

fair rampart
#

this one

#

although maybe I should redownload the references from another download

light zodiac
#

Unity core module in API?

fair rampart
#

yeah im sort of new to this, although I understand what im supposed to do, I dont understand how to do it

#

I've been programming on and off since 2017

#

but never went too deep with Visual Studio

light zodiac
#

Do you have a 1.4 install?

fair rampart
#

that may be the problem

#

I initially installed 1.5 on accident

light zodiac
#

You need to reference stuff from that install

fair rampart
#

alright

light zodiac
fair rampart
#

I already have 1.4 as my default version on Steam

#

so uh, I need to move my references to the folder I just downloaded for 1.4, correct?

#

and leave the Unity dlls where they were in Unity? (I copied them over)

light zodiac
#

Wait

#

Open modinstaller, download modding api from that into your 1.4 install

And then only reference dlls (including unity dlls) from the hollow_knight_Data/managed folder in your 1.4 install

floral blade
fair rampart
#

yeah...

#

I must be doing something terribly wrong

floral blade
#

have you installed mods in your 1.4.3.2 steam install?

fair rampart
#

yes

floral blade
#

just copy the managed folder from there

fair rampart
#

ok

floral blade
#

and use the dlls from that copy as refs

fair rampart
#

getting close to the finish line for my first test build

floral blade
#

add playmaker

fair rampart
#

already did, but I solved it anyways

#

making it lowercase fixed the issue

floral blade
#

the g ?

#

lol

#

nice

fair rampart
#

I dont know whats causing it to exit with code 1

vocal spire
#

A path is probably wrong

steady comet
#

Do you have HK open?

vocal spire
#

Or that

fair rampart
#

I dont

#

oh its the path

#

its trying to reach Hollow Knight in my C drive

light zodiac
#

Where do you want it to go?

fair rampart
#

in the mods folder of my api references

vocal spire
#

Then just change the path in the .csproj file

fair rampart
#

hooray im learning

languid goblet
#

anyone know why I can't choose .net framwork 3.5 as a build option

#

I installed the sdk through the visual studio installer

vocal spire
#

You probably choose a .net standard project

#

Instead of .net framework

languid goblet
#

I chose class library with .net framework

vocal spire
#

Well imma go do something else cya

languid goblet
#

...cool

jolly oriole
#

but what do you have as options?

languid goblet
jolly oriole
#

interesting, because for me it looks like this

languid goblet
#

I installed the 3.5 development tools through the visual studio installer and everything, so I'm really confused as to why it's not showing up

jolly oriole
#

hm, idk

vocal spire
#

Could you screenshot the project type you’re choosing?

languid goblet
#

this one

vocal spire
#

It looks correct (I think)

copper nacelle
#

just change in the csproj

#

all my homies hate vs ui

lucid needle
#

@light zodiac i really hope it isnt a bother pinging you but i really need that source code if you have a chance to send it.

languid goblet
#

hmm
so apparently you need .net 3.5 installed, not just the sdk
in retrospect this was very stupid

#

now time to try and code a mod I am probably never gonna finish pepegamaster

fair rampart
#

so im sitting here wondering what the Aim function does

#

because I cant click on it on the FSMViewer without it crashing

#

my plan for one of Final Radiance's attacks is to have her eye beams attack go slightly faster, but then aim again and shoot five super accurate lasers from the opposite direction of the knight

fair rampart
#

Ug I’m too dizzy to mod right now

#

The day I fully understand fsms is the day I get to work on Final Radiance

#

My issue with programming isn’t understanding the building blocks, it’s how to use them

#

Sorry if I’ve been talking too much

lucid needle
#

how do i make a mod generate a ReadMe that i write?

copper nacelle
#

why generate?

lucid needle
#

well display one

copper nacelle
#

in game?

lucid needle
#

when someone clicks "ReadMe" in the ModInstaller.

copper nacelle
#

you just leave a md/txt file next to the dll

lucid needle
#

im having a hard time understanding. admittedly i dont know how to mod, im just relaying this information to my modder friend who is finalizing a mod i had made. do you mean i do that while compiling?

lucid needle
#

because when i look in my mod locations, for example, DebugMod has a readme, but no txt file in the location

fair rampart
#

he said next to the dll

#

maybe when you submit it to the modinstaller you submit a .txt file as well?

#

im actually curious how modinstaller uploads are done

lucid needle
#

oh okay. yeah me too.

#

glad it wasnt a stupid question. i feel like ive been asking a lot of those recently.

fair rampart
#

same here

#

im also new to modding, but right now I just want to get a hang of FSMs and modifying attack patterns

lucid needle
#

i have to admit i dont know how to mod whatsoever. i just commissioned the mod im having done and i just needed a few more touches on it.

languid goblet
#

is it a common theme that people who ask questions here feel dumb

fair rampart
#

I have a faint idea how to mod

languid goblet
#

because that's me
every time I ask a question here

fair rampart
#

but the reason programming may not be my favorite thing to do is because I dont know how to put the building blocks together

lucid needle
#

maybe its because modding this game is SUPER daunting if youre just getting into it

fair rampart
#

two computer science classes and neither one told the class to experiment and use logic

#

just following simple assignments

lucid needle
#

i looked at some stuff in dnSpy and was just like "what the hell"

fair rampart
#

@lucid needle is it daunting? I'm starting off by making a clone of Ultimatum Radiance

#

I dont want to make any other types of mods other than boss mods so I mean

lucid needle
#

well to someone that barely knows how to code HTML yeah its daunting to me lol

fair rampart
#

I know some HTML

#

keyword being some, I probably forgot some of it by now

#

just be thankful this isnt Minecraft Forge

merry lotus
#

Re Readme.txt:
Mod Installer puts the readmes in a different folder

#

So when you submit a mod, you should be submitting a folder that has the .dll and the readme, and then Mod Installer specifically puts readmes in one folder, and mods in the Mods folder

#

That being said, to those working on the new Mod Installer(s):
can you maybe put readmes into /Mods/Readmes instead of the root folder? That might make more sense overall

#

For those curious, this is where ReadMes currently get placed by ModInstaller:

lucid needle
#

ohhhhh! thank you so much!

copper nacelle
#

there is a zip you upload

#

within the zip is the dll and the readme and whatever else

#

in the near future the plan is one folder per mod under the Mods folder

#

So readmes and stuff are close to the mods

lucid needle
#

if a mod i had commissioned is finished, can i submit it for the ModInstaller? i feel its a pretty good mod. it raises how much health all enemies in the game have depending on what × you set and raises how much mask damage they do to you depending on what number you set.

#

i call it the "AAA New Game Plus" modpack. (mostly because thats what the title ended up being)

#

ive even been writing a ReadMe for it.

lucid needle
#

awesome!!! ill post it here when ive finished testing it as much as i can!

fair rampart
#

@lucid needle you know I had an idea for a Hard Mode of Hollow Knight where every enemy and boss is buffed to be difficult at the point you fight it

lucid needle
#

yeah certain enemies and bosses scale with your Nail Damage, and the mod boosts that too.

#

unless you mean they scale health to your health

#

or similar

worn eagle
#

what's the depot number for 1432 if I want to create a separate install for it?

copper nacelle
#

It's easier to get the beta then copy the folder tbh

#

The numbers are on src though I believe

worn eagle
#

I'm just trying to be able to use fsmviewer+assetstudio w/o having to switch patches a bunch of times

copper nacelle
worn eagle
copper nacelle
#

bruh

lucid needle
# vocal spire Yes

currently the base mod works, but we are also getting it to play better with EnemyHPBar mod. basically: can i also update the mod after its uploaded?

#

it currently works with EnemyHPBar, but the HP bars only show up when you bring the bosses to vanilla health

floral blade
lucid needle
#

thank you!!! this is exciting!

worn eagle
#

does the AreaTitle component even do anything

jolly oriole
#

Ig its for area titles, but i cant check rn

jolly jungle
jolly jungle
fair rampart
#

Avalonia isn’t in the pins

jolly jungle
#

Lemme find it for you

#

It also looks slightly more aesthetically pleasing

#

This is what I was given two months ago

fair rampart
#

I’m on mobile right now so if you dm it to me I’ll download it tomorrow

jolly jungle
#

👌

#

What are you working on btw?

fair rampart
#

I’m still trying to fully figure out fsms for my radiance mod

#

Because I want to be more than just some ultimatum radiance clone

jolly jungle
#

Ah

#

Radiance

fair rampart
#

Like symmetrical phase 4 platforms and maybe some other mechanics

#

I learned some Visual Studio stuff so that’s cool

jolly jungle
#

I personally prefer modding things that don't get much attention

fair rampart
#

I’m doing radiance first because it’s simple with the code from ultimatum radiance to go off of

jolly jungle
#

But it's always fun to see a new radiance hornetsip

fair rampart
#

But nearly every radiance mod feels the same

jolly jungle
#

Always best when you have something to base

fair rampart
#

Except for AnyRadiance 2 but that’s just a bullshit hard boss

jolly jungle
jolly jungle
worn eagle
#

wait you're working on a sheo mod?

jolly jungle
fair rampart
#

Also lunatic radiance but I’m not at that level yet to make a literal hollow Knight bullet hell

jolly jungle
#

Damnit

fair rampart
worn eagle
#

that somebody else may be me

jolly jungle
#

Eyy, nice hollowknice

worn eagle
#

idk, what was your idea?

jolly jungle
#

I didn't actually start, I

#

m in the middle of colo stuff

fair rampart
#

I just don’t know how to carry out enemy spawns if I ever make it to that point

jolly jungle
#

wdym runick?

fair rampart
#

For Final Radiance

#

I may have phase 4 be a custom enemy spawn phase

jolly jungle
#

you wanted to add spawns? shroompog

#

Epiccc

fair rampart
#

Yeah

#

But it’s gonna be hard to balance

jolly jungle
#

Hm, maybe

fair rampart
#

Gotta find the right infected enemies that don’t just fly offscreen or fall in the void to start

jolly jungle
#

Before balancing, though, comes making sure you can even spawn them in

#

do you have any idea how you want it?

fair rampart
#

Well

#

The only idea I had so far was 2 primal Aspids while radiance shoots a laser every 5 seconds

jolly jungle
#

I'd suggest a timed spawn rather than a attack-based spawn

fair rampart
#

Yeah that MIGHT be easier

#

But I’m still struggling with fsms so I’ll have to focus on learning that first

jolly jungle
#

make a timer separate from her attacks and such

fair rampart
#

I know how they work but getting custom eye beams to work is another thing

jolly jungle
#

ooh, I feel you

#

Before the colo stuff, I was in the middle of working on a Crystal Guardian mod

fair rampart
#

Ooh

jolly jungle
#

So yeah custom beams ;-;

#

Anyhow good luck

#

You'll figure it out

fair rampart
#

Should I focus on the light orbs attack first?

jolly jungle
#

Depends what your idea is

fair rampart
#

Because my idea is to have them spawn at the eyes like a Gatling gun

jolly jungle
#

ah, nice

fair rampart
#

So a bit more basic than lasers

jolly jungle
#

yeah, that should be simple

fair rampart
#

So far I sort of got them to spawn faster

jolly jungle
#

you'll only need to change their spawn position, and speed

fair rampart
#

So uh

#

Light orb antics is their random spawn location I presume?

jolly jungle
#

look in the actions

#

I never looked at radiance's fsm

fair rampart
#

It’s kinda understandable

#

Especially since I read some of the api docs

primal latch
#

Fun fact: I leaked Fyremoth yesterday

cedar hemlock
#

fun fact: we got rickrolled on a massive scale yesterday

primal latch
#

True

#

I was there

cedar hemlock
#

cruel is the better word

jolly oriole
#

nah, was real fun commiting mass piracy by letting people download the original rickroll video

worn eagle
#

so uh

#

is the preloaded buzzer a part of the 1.5 api

jolly oriole
#

uh, idk what you mean with

preloaded buzzer
but generally i think no

worn eagle
#

nvm it was on 1432

#

from...debug?

light zodiac
#

Buzzer is vengefly?

jolly oriole
#

ye

light zodiac
#

I did it so I could make self damage work

worn eagle
jolly oriole
#

constructing a damage box on the fly isn't that difficult, y'know?

#
// this can be put whereever you want to let the player die
var go = new GameObject("death", typeof(BoxCollider2D), typeof(DamageHero))
go.Layer = 8;
var bc2d = go.GetComponent<BoxCollider2D>();
bc2d.size = new Vector2(4, 4);
bc2d.isTrigger = true; // might be named differently
var dh = go.GetComponent<DamageHero>();
dh.damageType = 1;
dh.damageDealt = (PlayerData.instance.GetInt("health")+PlayerData.instance.GetInt("healthBlue")+PlayerData.instance.GetInt("joniHealth")) * 2;
go.transform.position = HeroController.instance.transform.position;
light zodiac
#

Nice

worn eagle
#

what linq expr could I use to get an array of all the waits/randomwaits in an fsm?

#
FsmStateAction[] waits = _fsm.FsmStates.Select(state => state.Actions).SelectMany(actions => actions).Where(action => action is Wait || action is RandomWait).ToArray();
jolly oriole
#

looks about right

primal latch
light zodiac
#

Ik it does

#

It needed a gameobject as parameter

primal latch
#

Just create an empty one

light zodiac
#

Makes sense

#

I tried to keep the original function same so I don't break anything

jolly oriole
#

just do what i did and don't even interact with that yourself, as that can only go wrong

worn eagle
#

does "Lord" sound like a step up from "Master"

#

I wanna refrain from using "God" that's used in a billion other mods

light zodiac
#

King?

worn eagle
#

Paintking Sheo 😐

light zodiac
#

Sounds like a knock-off tbh

jolly oriole
#

do it like soul master

#

so Painttyrrant Sheo

lucid needle
#

Paint Tarkus Sheo

floral blade
#

Art Director Sheo

worn eagle
#

Production Manager Sheo

jolly oriole
#

i want to speak to your manager

ornate rivet
#

Paint Lord sounds the best imo

worn eagle
jolly oriole
#

bruh

#

just everything about that

ornate rivet
#

oh shoot

floral blade
#

Paint Ninja Sheo

worn eagle
#

is it possible to export a unity shader to a file at runtime?

ornate rivet
#

I dont think so
at least I doubt there's a non-hacky way to do it

worn eagle
#

trying to get Default/Sprites-ColorFlash and modify it to replace the brush tip and slash colors

#

though idek if you can load a shader at runtime like that

#

utinyripper saves the day

rough pulsar
ornate rivet
#

I thought Utiny couldn't rip shaders properly

jolly oriole
#

Oh no, not shaders again

worn eagle
#

would I have to hack around with assetbundles to get a shader to load at runtime, if at all?

jolly oriole
#

once you load the assetbundle itself it should be fine i think

worn eagle
#

ok so utiny doesn't work after all

ornate rivet
#

maybe assetripper will

charred topaz
#

Wouldn’t that still give you the compiled versions of them?

fair rampart
#

alright for today im going to study FSMs

copper nacelle
#

My condolences

fair rampart
#

hi 56

worn eagle
#

hi 56

ornate rivet
#

hi 56

floral blade
#

hi 56

jolly oriole
#

hi 56

charred topaz
#

hi 56

copper nacelle
#

hi

worn eagle
#

has anyone done runtime shader loading with tk2d

#

getting the cursed magenta square

fair rampart
#

hmm

#

FindFsmFloat and the such seems to be errored out. Has there been any changes to that command since it has been put up on the APIDocs?

jolly oriole
copper nacelle
#

.Fsm.FindFsmFloat

fair rampart
#

so uh

#

the prefix Fsm should be replaced with any Fsm im trying to pull it from, correct?

#

like _attackCommands.FindFsmFloat?

#

because thats what I did

#

I also put a using for Playmaker

#

what im trying to do specifically is set the position of the orbs to 0, but im not sure if that will make it spawn in the center of Radiance or if it will spawn at the map coordinate 0,0

worn eagle
#

there're like 80 material and materialInst fields on tk2dSprite, tk2dSpriteDefinition, etc

copper nacelle
#

most of the definitions share a material

#

if you loop through all of them on the animator it should be plenty

steady comet
jolly oriole
#

tk2dSprite.GetCurrentSpriteDef().material

copper nacelle
#

you can do either I'm fairly sure

steady comet
#

Oh right

#

Uhh

worn eagle
#
struct v2f
{
    float4 vertex   : SV_POSITION;
    fixed4 color : COLOR;
    float2 texcoord  : TEXCOORD0;
};

fixed4 _Color;
fixed4 _FlashColor;

v2f vert(appdata_t IN)
{
    v2f OUT;
    OUT.vertex = UnityObjectToClipPos(IN.vertex);
    OUT.texcoord = IN.texcoord;
    OUT.color = IN.color * _Color;
    #ifdef PIXELSNAP_ON
    OUT.vertex = UnityPixelSnap(OUT.vertex);
    #endif

    return OUT;
}

sampler2D _MainTex;
sampler2D _AlphaTex;
float _AlphaSplitEnabled;
float _FlashAmount;
float4 _ColorKey;
float4 _ReplacementColor;

fixed4 SampleSpriteTexture(float2 uv)
{
  fixed4 color = tex2D(_MainTex, uv);

  #if UNITY_TEXTURE_ALPHASPLIT_ALLOWED
  if (_AlphaSplitEnabled)
    color.a = tex2D(_AlphaTex, uv).r;
  #endif //UNITY_TEXTURE_ALPHASPLIT_ALLOWED

  return color;
}

fixed4 frag(v2f IN) : SV_Target
{
  fixed4 c = SampleSpriteTexture(IN.texcoord) * IN.color;
  /*if (c.r == _ColorKey.r &&
  c.g == _ColorKey.g &&
  c.b == _ColorKey.b)
  {*/
  c = _ReplacementColor;
  //}
  c.rgb = lerp(c.rgb, _FlashColor.rgb, _FlashAmount);
  c.rgb *= c.a;
  return c;
}
#

just trying to get the whole sprite to be a certain color for now

fair rampart
#

and so it begins

the testing

ornate rivet
#

very good

copper nacelle
#

he's become khan

fair rampart
#

whos khan

copper nacelle
#

get qol and save yourself 10 seconds on every test

fair rampart
#

ok

worn eagle
fair rampart
#

imagine if someone made a magenta square boss mod

copper nacelle
#

check the player log tbh

#

and if you look up the default shaders you can find some impls to test if those work

fair rampart
#

Ug, i'm not sure why this isnt working basil_cry

            _attackCommands.GetAction<SetFloatValue>("Orb Pos", 1).floatValue = 0f;
            _attackCommands.GetAction<SetFloatValue>("Orb Pos", 3).floatValue = 0f;
            _attackCommands.GetAction<SetFloatValue>("Orb Pos", 4).floatValue = 0f;
            _attackCommands.FsmVariables.GetFsmFloat("Orb Max X").Value = 0f;
            _attackCommands.FsmVariables.GetFsmFloat("Orb Max Y").Value = 0f;```
#

Im also not sure why its going slower now

worn eagle
#

using the result of Shader.Find("Sprites/Default-ColorFlash") works fine

fair rampart
#

orb machine broke

copper nacelle
#

you probably set the velocity

jolly oriole
fair rampart
#

yeah I set velocity on accident

#

maybe I got the wrong index

#

wait a second... velocity is not only position, but also direction and speed

#

but they still didnt all spawn at the same spot. weird

copper nacelle
#

you set the max to 0 idk what the min is and both might get set before that state

#

and then you changed setfloatvalue not randomfloat

fair rampart
#

oh

#

yeah maybe thats the problem

#

well im doing something right, they're spawning on the floor now

lucid needle
#

didnt know whether to ask this in Modding-Help or here but my buddy and i just finished polishing up a mod ive been having work done on, its a nearly perfect mod if i do say so myself, but every time i open ModInstaller, it tells me its outdated. well, it cant be outdated, there is nothing to update to. any fix for this?

#

actually i think we figured it out: i had an older version in my Disabled Folder

worn eagle
jolly oriole
#

now have that work correctly ingame

copper nacelle
#

having it work in game shouldn't be bad

worn eagle
jolly oriole
#

rip

#

did you build the shaderbundle for your platform?

worn eagle
#

yeah, Standalone Windows

jolly oriole
#

hm

#

may be good to inquire how asciicamera was made

lucid needle
#

how do i submit a mod to display on the ModInstaller? i think this mod is finished, and its an absolute banger of a mod.

jolly oriole
lucid needle
#

awesome! thank you!

worn eagle
#

all this just to make some colored paint that probably won't even look good

ornate rivet
#

but if you figure it out, it will be progress for all mods

lucid needle
copper nacelle
#

what do you want to do to the paint again

#

I can give it a shot

#

I have a working shader thing for something else

worn eagle
#

I want to chroma key the brush tip and paint slash colors into different colors so there're more than just 4

copper nacelle
#

so have like a field on the material shader to change the active color or for each individual object?

#

they share a sheet I'm pretty sure

#

I guess you could do it based on the original and some modification of the color from there

worn eagle
#

yeah, the active color in the whole sheet

copper nacelle
#

what color is the one you want to kill

#

Alright

worn eagle
#

for now I'm just trying to replace all white pixels with black

copper nacelle
#

alright

#

I'll try it in a bit

worn eagle
#

'preciate it

fair rampart
#

im sitting here wondering how to do Final Rad's eye beams

#

because I know what I WANT to do, but I dont know how I would pull it off

#

I might need to insert some events too and I barely know how to do that

worn eagle
#

got the latest unityexplorer working for 1.5

ornate rivet
#

epic

copper nacelle
#

11gb later

ornate rivet
#

unityoooooooooooo

worn eagle
#

unityexplorer is voring all my game inputs

charred topaz
ornate rivet
#

but when I try to say my favorite c word, the bot gets mad

#

racism

copper nacelle
#

true

ornate rivet
#

wtf they deleted mine

#

actually racism

#

clearly jingle has some dirt over the mods

copper nacelle
#

voring

ornate rivet
#

wtf

copper nacelle
#

the noun is different than the present participle

#

it only does the former

#

hello water

meager herald
#

yeah we'll get to that eventually, lets not make that word a topic ever thanks

worn eagle
#

why does my config.ini keep resetting on game start

copper nacelle
#

to suffer

#

Does it parse?

#

If it does then just make the file immutable

#

Can't lose

worn eagle
#
UnityExplorer 4.2.0 initializing...
Cached AppDomain assemblies in 1.411387 seconds
Initialized Legacy Input support
Unable to patch Cursor.set_lockState: Invalid generic arguments
Parameter name: typeArguments
Unable to patch Cursor.set_visible: Invalid generic arguments
Parameter name: typeArguments
Unable to patch EventSystem.set_current: Invalid generic arguments
Parameter name: typeArguments
Unable to patch EventSystem.SetSelectedGameObject: Invalid generic arguments
Parameter name: typeArguments
Finished core setup, waiting for UI setup...
Creating UI...
Loading modern bundle for Unity 2020.2.2f1
copper nacelle
#

amazing

#

i thought you meant the game's ini

#

with the fps lock shit

worn eagle
#

🤌

copper nacelle
#

extremely true

worn eagle
copper nacelle
#

it's tk2d?

worn eagle
#

what, the shader?

copper nacelle
#

no the sheo

worn eagle
#

oh, yeah

#

not trying to go to weavercore levels of recreation

copper nacelle
#

🥴

#

might've gone a bit overkill

worn eagle
#

pog

copper nacelle
#

idk how battle scene children includes the knight

#

but alright then

#

Was your problem shader code or mod code?

#

or should i just give both

worn eagle
#

mod code, it looked alright in unity, just not in game

copper nacelle
worn eagle
#

did you modify the shader file at all?

copper nacelle
#

i did not use your shader ngl

#

i took one i had and deleted 90% of it

#

only the bottom subshader is used

#

can just kinda yeet everything else

#

and the bottom subshader is just dot the delta from a constant vec and check if it's under a threshold, if so change the fragment output

worn eagle
#

what's _Pain

copper nacelle
#

i was trying to scale the level of randomness in the color

#

i believe

#

though that part doesn't matter

#

41-185 are commented out

worn eagle
#

mhm

#

did you reference anything to make this?

copper nacelle
#

the glitch one is like robbed

#

that is why it is mit

worn eagle
#

guess I have to incorporate sprite flashing now

tawdry veldt
#

Hi is there a way I can make a mod where I change a bunch of sprites

worn eagle
#

are my drivers fucked or what

#

this is a project with literally just the class that 56 gave plus an ab containing the jingle shader

charred topaz
#

I can give it a try

merry lotus
charred topaz
#

One unrelated bug I found is that if a single mod fails to load, the mod list in the corner doesn't seem to show up. I got this when I added Jingle's mod but forgot Vasi

charred topaz
worn eagle
#

maybe I shouldn't be building bundles on 2020.3.15f? or using assetbundle-browser at all?

charred topaz
#

Maybe, but then I would think it would throw an exception at this point if it was the asset bundle:

 Shader[] shaders = ab.LoadAllAssets<Shader>();

if (shaders == null || shaders.Length == 0) 
    throw new InvalidOperationException("Unable to load shader!");
copper nacelle
#

this is 2020.2.2

charred topaz
#

I'm also seeing this in the Player.Log file:

D3D shader create error for vertex shader [0x80070057]

It shows up when the Sheo Scene is loaded and it's printed twice

#

56's bundle fixed it 👍

worn eagle
copper nacelle
#

former

worn eagle
#

it was the unity version

#

the days of using a newer version of unity to make bundles is over 😔

jolly oriole
#

Assetbundle browser WutFace

primal latch
#

The fsm viewer in the pins doesn't seem to work. It keeps crashing. Anyone got another program?

jolly jungle
#

fsmviewer avalonia

primal latch
#

thanks

vestal plover
#

To be fair, I can't seem to open some FSMs in FSMViewAvalonia either. It just crashes when I try to open .../Crossroads_10_boss.unity and then the False Knight New-FalseyControl FSM.

lucid needle
#

is there a mod that multiplies the amount of Geo you gain?

primal latch
lucid needle
#

sorry. i figured to ask here because my next question was going to be asking for one.

cedar hemlock
#

should be easy enough

lucid needle
cedar hemlock
#

nah, i've put more effort in a mod than multiplying some ints

#

watch me regret that sentence

lucid needle
#

cool. i figured it was as easy as just multiplication. but like you said, watch us regret saying that lol

worn eagle
#

my rate is $40/hr and I estimate such a mod will take a full work week

primal latch
#

and that is if you work 24/7

jolly jungle
#

Damn, that's cheap af

jolly oriole
#

i take payment and then start to work ofc

jolly jungle
#

how do I manually recreate some of the effects of a dreamnail hitting an enemy?

#

I don't know how to find them with DnSpy

steady comet
#

I would guess that has what you're looking for, based on the name

worn eagle
#
_dreamImpactPrefab = _dreamNailableEnemy.GetComponent<EnemyDreamnailReaction>().GetAttr<EnemyDreamnailReaction, GameObject>("dreamImpactPrefab");
jolly jungle
worn eagle
#

oh wait I think that uses modcommon mylaU

#

shouldn't be hard to adapt it to ReflectionHelper tho

jolly jungle
#

Oh god, reflections

#

I still have no idea what they are or how they work

#

Anyhow I'll need to continue this later

worn eagle
#

is the proper way to set shader parameters with Material.Set{x}() or by assigning a MaterialPropertyBlock to a Renderer?

#

I was using Color when I should've been using Color32

ornate rivet
#

yooo

jolly oriole
#

damn, a normal filename lol

#

but nice

worn eagle
#

oh no the paint particles are still the same color

jolly oriole
#

prob either hardcoded or not part of the normal sheet

#

somewhere in the fsm i mean

#

i hate qml

worn eagle
#

is cpp not available

jolly oriole
#

nothing about hk, just ranting in general

#

though i could force it onto people with mi3

#

would be nice, because it looks fucking awful

worn eagle
#
private void AudioPlayOneShotSingle(AudioClip clip)
{
    GameObject actor = ObjectPoolExtensions.Spawn(_audioPlayerActor, transform.position);
    var audioSource = actor.GetComponent<AudioSource>();
    audioSource.clip = clip;
    audioSource.Play();
}
jolly oriole
#

shouldn't be

#

as you manually set one to play

patent zealot
merry lotus
worn eagle
#

ig, since it'll cover the entire rainbow everyone'll be able to see a color

#
private void AudioPlayOneShotSingle(AudioClip clip)
{
    StartCoroutine(Play());

    IEnumerator Play()
    {
        GameObject actor = ObjectPoolExtensions.Spawn(_audioPlayerActor, transform.position);
        var audioSource = actor.GetComponent<AudioSource>();
        audioSource.clip = clip;
        audioSource.pitch = 1;
        audioSource.Play();

        yield return new WaitWhile(() => audioSource.isPlaying);

        audioSource.clip = null;
        actor.Recycle();
    }
}

hacky af but works

primal latch
#

welcome to programming

worn eagle
#

does fsmviewer crash for anyone on these two specific states in nailmaster_sheo?

#

there's only one action on each but it's weird

jolly oriole
#

which scene

#

wait nvm

#

works with fsmviewavalonia

#

but looks about as nice

floral blade
languid goblet
#

temple of the kevins sheos

languid goblet
#

can I use hooks in classes that aren't the main class? (the one that extends from Mod)

copper nacelle
#

yeah

languid goblet
#

what's the difference between the takehealth and takedamage hooks?

languid goblet
#

there's no entry for TakeDamageHook

light zodiac
#

It's right below

languid goblet
#

that's AfterTakeDamageHook
unless the "after" doesn't mean anything

light zodiac
#

80% sure it's reffering to takedamage hook

languid goblet
#

hmm ok

steady comet
#

TakeDamageHook and AfterTakeDamageHook are different

languid goblet
#

I'm just using takehealth for now

#

also, does anyone know what I'm doing wrong here? debug log says the coroutine is throwing a null reference exception

#

ngl I'm kinda just bs-ing my way through this

copper nacelle
#

I have no idea what this is supposed to do

languid goblet
#

set health to 1 after taking damage, restores health back to what it would be after 5 seconds

floral blade
#

is there a way to have your string be processed by language get hook ?

primal latch
#

Yes

floral blade
#

like if howwow knyght mod is installed , i want to put my own strings in the hook so that my strings are owoified

primal latch
#

Idk how though

primal latch
steady comet
#

Just add something to the hook that returns the string you want

primal latch
copper nacelle
#

you just need proper priority

#

if the text transformation is after your own strings then they'll be changed

#

I need to get the like monomod hook priority thing

#

It's so good

primal latch
floral blade
#

right so when i call orig , if i am the top dog then all other mods get my values , and if i dont call orig other mods just dont get the hook?

#

(ones after my mod i mean)

jolly oriole
#

tot's strings get owofied on 1.4.3.2

#

and i didn't do anything special

floral blade
#

even custom strings that might not exist in the original game?

copper nacelle
#

what's your mod name btw

floral blade
#

like i make my own tmpro for them for example

copper nacelle
#

dandy

#

your mother asked zaliant

floral blade
# copper nacelle what's your mod name btw

i work on many mods, i mean no particular one here.
just trying to understand how the priority thing works. because i have been recommending to people to always call orig so it wont break.

#

the one that might apply here would be smolknight i think if i get around to making the new area i planned

copper nacelle
#

are you monomod hooking the language or what

#

I mean just going through normal language and language get should get transformed

jolly oriole
#

i think owo-mod 1.4.3.2 even uses a high/low priority, which ever makes it go last

floral blade
#

how though if i just make my own tmpro and put it on a go and put my text in it as a string i dont see how it would be owofied

#

i can see dialog boxes being owofied

steady comet
#

owo mod 1.4 doesn't actually use the languagegethook, it does the detour thing on the function

jolly oriole
steady comet
floral blade
#

aaa what is this

floral blade
floral blade
#

i am confuse

floral blade
#

also if i dont call orig do other mods just not get the hook?

#

if they registered the hook after my mod ?

jolly oriole
copper nacelle
#

ignore access checks to

#

fucked up

worn eagle
#

wanna avoid repeating mistakes like traitor SHOD by listening to feedback

copper nacelle
#

yeah

floral blade
#

for 1432 you need unity 2017 to make asset bundle and 1.5 u need 2020 ? or are the bundles cross version compatible ?

ornate rivet
#

looks great

jolly oriole
#

you can use 2017 ones in 2020 though

floral blade
#

but can i save the unity project reopen it in another version and re build using the bundle tool menu thing ?

ornate rivet
#

huh really? why did I have to rebuild pale court then?

#

yea you can reopen the same project in a different version

jolly oriole
ornate rivet
#

probably that yea

floral blade
#

i am going to be following your video saleh, anything i should note to do differently? (since you marked it as kinda outdated)

#

and do minor / patch versions matter or can i take any 2020 unity and any 2017 unity

ornate rivet
#

get the specific one hk uses

worn eagle
#

2020.2.2f for 1.5

worn eagle
#

I found that I could bundle for 1.4 with unity 2018 but best to be safe

ornate rivet
#

I dont think anything else changes besides that in my video
The api might be a bit different from my code in hk 1.5

floral blade
#

and considering i am on mac do i need windows build support for asset bundling ?

jolly oriole
#

only when dealing with shaders

floral blade
#

i probably wont be doing it but will download it to be safe

jolly oriole
#

but then you'd need a bundle for each platform

floral blade
#

this is what i am installing rn

floral blade
#

also like is the blender plane thing necessary or can i just draw a png and import it as long as i draw my collider on it big enough that the knight can fit the gaps ?

jolly oriole
#

as long as you have something that looks like collision it should work

floral blade
#

i assumed that the blender thing was to help with unity units

jolly oriole
#

me/saleh/others are using blender because that's likely what TC also did

#

as the vanilla scenes also have their terrain in mesh chunks

floral blade
#

okay i'll just do that too then

#

another question, how do i skin the blocks so they look different? they're not a GO so adding a sprite doesnt make sense

jolly oriole
#

the blocks?

worn eagle
#

how could I handle two possible coroutine paths based on a condition?

yield return new WaitUntil(() => {
    if (Mathf.Abs(_hero.transform.position.x - transform.position.x) <= _dStabRange)
    {
        StartCoroutine(DStabAntic());
        //yield break;
    }
    return IsGrounded();
});

StartCoroutine(Land());
#

do I have to use like a bool

floral blade
jolly oriole
#

that is done in vanilla with meshrenderes, or the mesh, i actually don't know what you mean with skin, so they look different
you have a mesh that is up to 32x32 units, shows maybe a path or something
have a go, with meshfilter and meshrenderer, so the mesh is visible (with black color to be vanilla)
then either edgecollider2ds or polygoncollider2ds, depending on what you want, polygon is imo better, but TC uses edgecollider

floral blade
#

so in saleh's video the mesh thing looks like a grey shape in game, but in game the things are clearly not black and like floor or whatever right ?

#

so i meant how do i take a png of how i want the floor to look like and make it look like that in game

#

so i get that you'd need a collider of some sort to make the knight be able to walk and climb on it

#

but i also want it to not be grey and look like prettier

jolly oriole
copper nacelle
#

what's the idea behind your paths rn

#

like wait until the hero is in range or you're grounded and then move to the next coroutine after that?

floral blade
#

i'll take a look at PatchSceneMap once, but can u use a material to make the edges of cliffs be different from the middle and such?

jolly oriole
copper nacelle
#
// or something i presume
_anim.Play("Idle");

bool InRange() => Mathf.Abs(_hero.transform.position.x - transform.position.x) <= _dStabRange;

while (!InRange() && !Grounded())
  yield return null;

if (InRange()) {
  yield return DStabAntic();
} else {
  yield return Land();
}
floral blade
worn eagle
#

oh yeah I can just recheck the range condition after one of the conditions has been satisfied

jolly oriole
copper nacelle
#

if you don't want to do that you can assign to a bool or something

#

like

floral blade
jolly oriole
#

vanilla also does that

floral blade
#

okay then can the terrain also not be that same go?

copper nacelle
#

something like

yield return (InRange(), Grounded()) switch {
    (true, _) => DStabAntic(),
    (_, true) => Land(),
    _ => null
};
#

though you'd need to break out after

#

so maybe not that

jolly oriole
fair rampart
#

how can i upload mods to the public?

floral blade
floral blade
#

okay so workflow is :
0. download unity , blender, add asset bundle browser , watch saleh video , ask sf lots of questions

  1. make mesh - add collider
  2. add gos with sprites and make it pretty (optional for stage 1)
  3. add gates / enemy locations / item pickups (as objects with some name and then do magic to replace them them in mod code)
  4. bundle
  5. be good with mod code
  6. it should work in game
jolly oriole
#

i'd say gates would be step 2, if you mean battles gates leave them where they are but add transitions in and out of the scene, for easy access

floral blade
#

no i mean entry gate for scene transition

jolly oriole
#

ah ok

#

for step 1, i have something i just remembered

floral blade
#

pls share

jolly oriole
languid goblet
#

is it ok to bind a monobehaviour to herocontroller?

floral blade
#

or the mesh

jolly oriole
floral blade
#

gotcha easy tracing

vocal spire
floral blade
#

use it in unity right ?

#

or in mod at runtime ? 😮

vocal spire
#

In unity

fair rampart
#

anyone knows how do check how much time the player dash has?

#

not the cooldown, i meant how much is left until the dash can be used how do i find the value

floral blade
worn eagle
#

hmmm, considering tracing oro and mato's sprites into extra sheo sprites and making paintsage sheo

light zodiac
worn eagle
#

this sometimes doesn't return true on a non kinematic rb that's clearly hitting the floor

private const float _raycastExtent = 0.25f;
private bool IsGrounded() => Physics2D.Raycast(transform.position, Vector2.down, _col.bounds.extents.y + _raycastExtent);
#

copying CheckCollisionSide code seems to work

jolly oriole
#

<@&283547423706447872>

#

damn, others were faster

primal latch
#

Is there a hook for when a spell is cast?

jolly oriole
#

nope

primal latch
#

ok

light zodiac
#

On hook?

primal latch
light zodiac
#

On.HutongGames.PlayMaker.Actions.SpawnObjectFromGlobalPool.OnEnter

#

This is what dandy used for smol knight to make Vs smaller

primal latch
#

ok

primal latch
copper nacelle
#

there's a modcommon hook lmao

#

i made it a while back

primal latch
#

We just steered away from modcommon

#

I’ll yoink the code though

cedar hemlock
#

<@&283547423706447872>

remote zealot
#

ty

worn eagle
#

nooo my free nitro

cedar hemlock
#

Does a mod not get loaded when its recognized as a library?

jolly oriole
#

why would it not get loaded

cedar hemlock
#

idk, it got recognized as a library and init wasn't called, likely that i did something wrong

fickle sparrow
#

I removed the library code from 1.5

#

and in 1.4 a library means theres no class that inherits from Mod

cedar hemlock
#

well it said [INFO]:[API] - HowwowKnyight - LIBRARY in 1.5 so i'm just confused lol

fickle sparrow
#

idk then

#

I don’t remember that log so maybe 56 changed something

worn eagle
#

what color palette should I make modded sheo's attacks? roygbiv? pride flags?

#

oh wait gay pride includes roygbv

ornate rivet
#

do one with different shades of blue

worn eagle
#

maybe I should let players customize them in settings feelspkman

light zodiac
#

You assume people will change settings vesselsip

jolly oriole
#

for that they'd have to find them first

floral blade
#

use mod menu smh

#

wait, can modmenu be ported to 1.4 ?

#

i think someone was working on it

worn eagle
#

come tf on TC

cedar hemlock
#

what is ModSettings in 1.5?

vocal spire
#

Unless you mean another someone

cedar hemlock
#

unless you mean someone as in someone zote

worn eagle
#

does DamageHero still hurt the player if it's disabled?

floral blade
#

ah yes i misunderstood this

#

and this lol

floral blade
jolly oriole
#

nice

floral blade
#

btw sf have you tried custom scenes with hkmp ? does it work ?

jolly oriole
#

yea, flawlessly

#

even the washing mashine works across clients

floral blade
#

haha is it synced ? like the rotation ?

jolly oriole
#

yes

floral blade
#

wait how does that get synced ?

jolly oriole
#

well, to be exact, it starts at the same time

floral blade
#

yeah so if someone joins like 5 mins late they would be off cycle

#

but still pretty cool i think

jolly oriole
#

unless all leave and reenter the room

floral blade
#

yeah makes sense

#

also does the camera not go into -ve ?

jolly oriole
#

it only moves in the positive x/y range

floral blade
#

my terrian was at 0,0,0 and if i walk off the left edge the knight is offscreen , but if i walk off the right edge i can wall climb the thing from outside

floral blade
worn eagle
#

implementing damaging paint splats is turning out to be much more of a chore than I thought

worn eagle
#

so I have a bunch of paint splat objects that I want to fade out over time, but only a few fade out, the others stay opaque
https://pastebin.com/zZSXrdsm

#

specifically, I want cyan splats to be damaging, as a test

languid goblet
#

is there a way to update the hud? rn I'm just using HeroController.instance.AddHealth(0) but that doesn't seem to update lifeblood masks

copper nacelle
#

there's an fam event

languid goblet
#

fsm?

copper nacelle
#

yeah

safe hamlet
#

fam

copper nacelle
#

yo it's my boi sid

#

what's up fam

worn eagle
#

what's up fsm

copper nacelle
#

true

ornate rivet
#

true

vocal spire
#

!true

languid goblet
light zodiac
#

PlayMakerFSM.BroadcastEvent("UPDATE BLUE HEALTH");

jolly jungle
worn eagle
#

idk

#

which is bad because even I brainstormed move ideas for my worse bosses

#

open to suggestions

jolly oriole
#

paint

floral blade
#

Jingle make it like mspaint default colors

#

feelspkman and one attack can be flood fill bucket shot towards the knight like a bullet

#

if it hits the knight not only loses a mask but also changes color with the shader magic u did last time

vocal spire
#

Maybe a sea of paint for a phase?

#

prevent healing

#

add color to the white palace?

winter moss
#

Is there any way to view the game scenes in Unity? It would make modding a lot easier

rough pulsar
#

ask sfgrenade

#

maybe hkedit

young walrus
#

get a job with team cherry. Kappa

jolly oriole
winter moss
#

I tried that and it always gives an error when I try to open a scene

vocal spire
#

Also if you want to use utiny ripper to rip every scene from the game, you can do that on ver 1.4.3.2 and before

winter moss
#

Version 1.4.3.2 and the error differs. I've gotten OverflowException, NullReferenceException, OutOfMemoryException, and the one where it couldn't read past the end of the stream

vocal spire
#

Huh

#

Maybe that ver of hkedit is for 1.5?

winter moss
#

It still doesn't work

#

Hold up I think I'm using the wrong version of Unity

languid goblet
#

why is health so annoying to work with wai

worn eagle
jolly oriole
#

can you give them an empty fsm called damages_player to show their hitboxes?

#

wait nvm

#

should show with a normal damagehero monobehaviour as well

worn eagle
#

I dnspy'ed 1432's ShowHitboxes mod and tweaked it to work w 1.5

jolly oriole
#

why not use debugmods one

worn eagle
#

does it work for any layer go?

jolly oriole
#

yes

worn eagle
#

and polycolliders?

jolly oriole
#

yes

worn eagle
#

I'll see

jolly oriole
#

though maybe it only likes 1 path per polygoncollider

worn eagle
#

ah I have to enable it in settings

jolly oriole
#

i have it on 'O', cycles through none, basic colliders and basic colliders + all triggers

worn eagle
jolly oriole
#

looks interesting

worn eagle
jolly oriole
#

as long as it works

worn eagle
#

I should probably add an opacity threshold where the damager disables before the splat fades out completely

jolly jungle
#

is it like when infection blobs linger on the ground?

winter moss
#

Does anyone know what scene the map object is in

jolly oriole
winter moss
#

Ok thx

jolly jungle
#

Also, is cyan altered red, or in addition to red

worn eagle
#

not sure yet, and idk wym by altered/addition

jolly jungle
#

Well its clearly based off the red attack

#

question is, is the red attack gonna stay too, or is this gonna replace it?

worn eagle
#

oh yeah I just recreated it

#

the entire fsm with all his attacks is gone

jolly jungle
#

Ohh

#

So building from scratch?

#

damn

#

can you show a bit of your code?

#

I wanna understand how to manage fsm states correctly

worn eagle
#

you mean recreating an fsm in code or modifying a pfsm?

jolly jungle
#

both

#

For the second one, I know how to edit states, I just don't know how to make new ones or rewire them well

#

so whatever you can show will help

worn eagle
#

the only thing I do with playmaker is destroy the ones on sheo

GetComponents<PlayMakerFSM>().ToList().ForEach(fsm => Destroy(fsm));
#

though I do get audioclips and stored gameobjects on nailmaster_sheo beforehand using fsm util stuff

jolly jungle
#

Wait

#

Hm

#

So how do you make the new one?

#

In unity?

worn eagle
#

I don't create a new pfsm, I just mimick it in code

#

and yeah, you can do that

jolly jungle
#

Show show show

#

I probably won't last more than two attacks trying to build an ai like that, but still gotta see

worn eagle
#

it's basically a bunch of ienums that call each other to create a flow of logic

#

I store functions for attacks in a dict and invoke them as they're randomly chosen

private Dictionary<Action, int> _maxRepeats = new();
private Dictionary<Action, int> _trackingInts = new();
private Action ChooseNextMove()
{
    Action selectedMove = _maxRepeats.Keys.ToArray()[Random.Range(0, _maxRepeats.Keys.Count)];
    if (_trackingInts[selectedMove] >= _maxRepeats[selectedMove])
        selectedMove = ChooseNextMove();

    foreach (Action move in _trackingInts.Keys.ToList())
    {
        if (move == selectedMove)
            _trackingInts[move]++;
        else
            _trackingInts[move] = 0;
    }

    return selectedMove;
}
#

between each move is an idle ienum where the next attack is chosen

private IEnumerator Idle()
{
    _anim.Play("Idle");
    _rb.velocity = Vector2.zero;

    if ((_hero.transform.position - transform.position).magnitude <= _evadeDist &&
        transform.position.x >= ArenaLeftX &&
        transform.position.x <= ArenaRightX)
    {
        Evade();
        yield break;
    }

    float idleTime = Random.Range(0.25f, 0.35f);
    yield return new WaitForSeconds(idleTime);

    ChooseNextMove().Invoke();
}
#

and every attack finishes with restarting the idle routine

jolly jungle
#

Hm

#

Nice

#

Much shorter than fsms, obviously, but I think it would be a bit harder for me to keep track at first

#

Can I read over what you wrote?

worn eagle
#

dm me your github user and I'll share the private repo w you

jolly jungle
#

Oh I meant the code here but sure

worn eagle
#

you can read over it, sure

vocal spire
worn eagle
#

you could always go the TC route pepegamaster

jolly oriole
#

imagine not constructing a pfsm in code 😤

#

... which doesn't work with purely sfcore fsmutil because pfsm sucks