#archived-modding-development

1 messages ยท Page 69 of 1

rain cedar
#

Also annoying, but fuck people so meh

pearl sentinel
#

Lol

leaden hedge
#

why do chests have a health manager

#

I mean I know "why" but why

rain cedar
#

Do they?

#

I just meant that the new health manager has geo prefabs

#

And they added utility to fling geo for this as well

leaden hedge
#

they probably do, or an abridged version I'd assume

pearl sentinel
#

I added geo to enemies in enemy randomizer, it works well

rain cedar
#

Oh this also explains why fragile greed is way better for some enemies

#

The bigger geo pieces dropped the better

#

Since it's a ceiling

pearl sentinel
#

One thing I'm unclear on is how to "INSTA KILL" enemies now

#

Since the health manager doesn't seem to have that

#

Die() seems to be the replacement but so far it seems like I'm missing something there

rain cedar
#

Does it not work?

pearl sentinel
#

Not sure. So what my code used to do is take the replaced enemies and hide them and make a pair out of the new and old. Then when you killed the rando replacements, I would call insta kill on the old. I switched that to Die() and in my initial test rando enemies I killed would respawn when I changed scenes and came back, indicating they weren't dead, I think. I need to test it more though. (Afk from pc for tonight)

rain cedar
#

Check the isDead bool on the original

#

I think the object still exists after killing them

pearl sentinel
#

Ahh, good call

rain cedar
#

I just want to point out that part of their optimizations includes enemies persisting after death

#

Fucking funny

rain cedar
#

Gonna need patch specific randomizer requirements now

#

Hooray

#

Could just add a platform there to keep things consistent idk

#

You would have an early claw in way more seeds with this high wall

copper nacelle
#

platform > more early claws

#

imo

pearl sentinel
#

Yeah just add a platform

rain cedar
#

I just have to cache the geo prefabs at some point

pearl sentinel
#

Ooh

#

Neat

rain cedar
#

I wonder if it's possible to add an arbitrary function call to an fsm state

#

Probably not even something that's worth trying

pearl sentinel
#

To a state or an action in a state?

#

You could probably make an action and put it in a state

rain cedar
#

Yeah, but I think it would in the end be better to make my own pickup class instead

#

The only thing is how to deal with all the unique looking pickups like ddark and shade soul

#

But yeah I'll probably end up doing something like attempting to cache the prefabs on every scene load until it works

#

Then if you somehow get to a pickup after loading in without seeing a single enemy just add the geo directly

pearl sentinel
#

Idk if you saw my timing, but loading about 70 scenes for enemy rando takes under a minute now

#

The update made it about 3x faster

#

So if you need to preprocess some scenes like I do it would go fast

rain cedar
#

I don't really think that's necessary

pearl sentinel
#

Just saying

rain cedar
#

You'd have to do some stupid shit to purposefully get the fail condition like quit out at the shade soul bench and completely restart the game

#

And it's not like it would just break everything at that point

#

Oh wait I think I misunderstood what you're referring to

#

Yeah it might be worth it to grab the unique pickup objects

pearl sentinel
#

It's honestly almost freakishly fast compared to what it was

rain cedar
#

Although it's not like I would be wanting to stick the ddark rock in another scene

#

So whatever class ends up needing that I could just instantiate on first load of that place

#

Yeah probably better

#

I wonder what they did to make it so much faster

#

It's just Unity scene loading so there's nothing they could have done to optimize that

#

Must just have made the scenes themselves more efficient

pearl sentinel
#

Well they did reduce the amount of fsms with the removal of the health managers

rain cedar
#

Ah yeah good point

pearl sentinel
#

That aline removed a huge amount of objects per scene

#

Alone*

rain cedar
#

Yeah that's probably it

#

Just HealthManager components now

pearl sentinel
#

2nd I noticed their scene loading now uses an async version

rain cedar
#

Yeah makes sense

#

Because now they've got the little walking dude on the load screen

#

Can't just freeze everything

pearl sentinel
#

Yep

#

I based my loading hook off your rando code so my mod used unity's scene manager loading hook, so I didn't have to fix much of my stuff other than code that interacted with fsms

rain cedar
#

Neat

pearl sentinel
#

Did you see that new world class they added?

#

I think with that we could make a nieve entrance rando really easily

rain cedar
#

I saw someone post about it

#

Probably you

#

Yeah this is pretty nice

pearl sentinel
rain cedar
#

I already dumped all the exits a while ago but I just posted it in here and didn't really save it

#

So it's lost to the ages, I'm sure

pearl sentinel
#

Yeah, plus new content will be there for sure

rain cedar
#

And the new smaller scenes

#

7k lines lol

#

Actually mapping this out to where a sane room randomizer is possible is so unrealistic

pearl sentinel
#

Yeah, that's why I decided to try the pathfinding

leaden hedge
#

did someone actually write that out

#

I hope they automated that

pearl sentinel
#

I hope too, but either way, it exists

rain cedar
#

Nah that's why this took so long

#

They made that by hand

pearl sentinel
#

Man, after the shit I've seen at my work I'd believe it

leaden hedge
#

I feel like if it was automated, it wouldn't output to code

#

it would have been outputed to xml or something

pearl sentinel
#

It's amazing the amount of work people would rather do than write a tool to di it for them

copper nacelle
#

di

rain cedar
#

Fuck man I'll spend an hour writing code to save me 5 minutes

pearl sentinel
#

So, story about this

leaden hedge
#

I'd spend infinite time to avoid doing the same thing for 5 minutes

#

menial work is literally the worst

pearl sentinel
#

My first game at my company, everyone was importing data from the game designers (tables of data) from excel and putting it in c++ header files by hand

copper nacelle
#

w h y

pearl sentinel
#

I asked one senior engineer how long it took him every time new data 2as dropped by design to update the game

#

He said "around 30 minutes to 2 hours depending"

#

I wrote a tool to automate it and became "the guy who could make builds fast"

#

But no one else wanted to use it because it wasn't "normal process"

rain cedar
#

You shouldn't have told them

#

When you had to do it, just run the script and have a 2 hour break

pearl sentinel
#

I didn't, they just noticed when they asked me for changes and it happened same day

#

But... yeah now 5 years later I keep expectations in line

#

Famous quote by the CTO of our game engine team a few years back "we don't have time to do it right, we just need to get it done"

rain cedar
#

Makes sense

pearl sentinel
#

famous words before creating a system that has caused over half our senior engineers to quit since then

#

If I wasn't working in an isolated subsidiary with virtual independence...

#

/endrant

#

So hey, if anyone wants to work in Nevada we're hiring elderbug

rain cedar
#

Is medium geo 5 or 10?

#

It's 10, right?

pearl sentinel
#

Not sure, I never had time to sit down and check

rain cedar
#

I don't want to check either

#

I'm going with 10

pearl sentinel
copper nacelle
#

lol

rain cedar
pearl sentinel
#

I will snag that for sure

#

Add it to my geo functions probably

rain cedar
#

Neat

#

It's untested

#

But probably works

#

You need a transform for this to work and I'm just using gameObject.transform since I'm planning to have this on a component

#

Easy to change that, though

pearl sentinel
#

i like how i was skimming through it and went "why doesn't it just subtract the larg, med, and the put remaineder in the small" and then notice that it does just that at the top

#

nice tho

#

i like it

rain cedar
#

Alright

#

Well

#

I don't know what went wrong but when I ran this it instantiated so many new prefabs the game ran out of memory and crashed

copper nacelle
#

oof

pearl sentinel
#

when did you call it?

rain cedar
#

I just ran it in HeroController.Attack

#

So it's not getting called more than once

#

And I used a small number (69 heh)

pearl sentinel
#

hm

rain cedar
#

This exact method of spawning geo worked when I was just doing a set number of large geos

#

We're talking 20000 lines of this in the output log btw
Object Pool attached to GlobalPool has run out of Geo Small prefabs, Instantiating an additional one.

pearl sentinel
#

oh

#

wait nvm, hmm

#

maybe it has to do with the type of object you pass in?

#

like maybe the gameObject passed in is expected to have a certain component

#

or fsm

#

like a personal object pool

rain cedar
#

That would be strange

#

I'd expect the function to take an actual object as a parameter if that's the case

#

Not the transform

#

I'll check anyway, though

#

I think this should be fine

copper nacelle
#

ahhhhh

#

I've got code for 3 mantis lords

rain cedar
#

Something is clearly wrong with how I'm iterating

copper nacelle
#

they're all children of the same object

#

but it only works on the second two

rain cedar
#

This didn't crash this time and spawns ~1.2k

#

Oh wait I'm just an idiot

#

I'm looping the number of them and passing that number into the spawn

pearl sentinel
#

there's also a hard memory limit they put into IsUnloadAssetsRequired

rain cedar
#

So I'm spawning num^2

pearl sentinel
#

in GameManager.cs

#

but i don't think that should hit what you're doing?

#

ah

#

yeah

charred iris
copper nacelle
#

wtf

#

i wrote dumb code

#

and it worked anyway

#

the reasonable code fails

#

but the dumb code works

rain cedar
#

Story of my life

copper nacelle
#

and it started working

#

even though p2 isn't ever set by anything else

#

and even I remove the if part of the else if

#

it doesn't work

#

but putting updateLord under the log works

#

:**: ![suicidethink](https://cdn.discordapp.com/emojis/353699860316291094.webp?size=128 "suicidethink")

rain cedar
#

Nice

copper nacelle
#

on the bright side

#

mantis gods now works on both patches

rain cedar
#

Medium geo is 5

copper nacelle
#

oof

pearl sentinel
#

woo, now i know

#

and knowing is half the battle

#

๐ŸŒˆ

copper nacelle
#

lol

pearl sentinel
#

so the scene loading is so fast that i think i might have the new logic load every scene

#

and remove the fixed list of enemies that i was maintaining

rain cedar
#

Wow that sounds pretty intense

pearl sentinel
#

that would randomize... everything, bosses included

#

unless i put an exception in

rain cedar
#

Would be funny to just go into a boss arena and find a crawler

pearl sentinel
#

well, i have a list of "things not allowed in arena scenes"

#

but yes

rain cedar
#

Ah, boring

pearl sentinel
#

my end game is to allow that

#

but "enhance" things not normally hard so that it fits when randoed

#

so a crawler, but it has 1000 hp and summons primal aspids or something

copper nacelle
#

neat

rain cedar
#

Sounds pretty hilarious

pearl sentinel
#

really that's kinda my hope

#

last night i did a randomizer + enemy rando play to test things

#

i got crystal dash in fury of the fallen's place

#

and then double jump at salubra

#

so i went up to where glowing womb was

#

the ambush scene ended up being those flies that drop orange infection and exlpode + heavy mantis fliers

#

i died for like an hour until i finally beat it, it was nuts

rain cedar
#

Oh god the mantis fliers

pearl sentinel
#

yeah, i had to do a lot of cheese

#

that kinda stuff is why i like the combo of randomizers tho

rain cedar
#

This geo spawn code weights small geo too highly

#

I mean every medium that doesn't get spawned is 5 more smalls

#

Gonna change the random to be 1/2 of medium max minimum

#

Odd sentence

#

Yeah I think this is much nicer

#

Not getting lag anymore when spawning 655

#

No reason to check higher than that, that's the biggest chest in the game

pearl sentinel
#

nice

rain cedar
#

I should actually reverse the order of choosing, though

#

Small first, then medium, then large

#

This way it is still technically possible for it to choose to spawn like 300 smalls

#

Alright this still looks like a nice random geo explosion and reduces the max amount of geo things spawned by like 3x

int smallNum = random.Next(0, amount / 10);
amount -= smallNum;
int largeNum = random.Next(amount / 50, amount / 25 + 1);
amount -= largeNum * 25;
int medNum = amount / 5;
amount -= medNum * 5;
smallNum += amount;```
warped sinew
#

So how goes? Is modding going to be accessible now?

rain cedar
#

It's a lot nicer for some stuff, yeah

#

The new HealthManager component is great

pearl sentinel
#

some is better for sure

warped sinew
#

Ya Will mentioned to me last night that you guys will like the health manager

copper nacelle
#

health manager >> fsm health_manager_enemy

pearl sentinel
#

oh yes, i certainly do

rain cedar
#

Yeah, and it helps load time hugely

copper nacelle
#

enemy rando load time went from like 5 minutes to under 1

warped sinew
#

Niice

pearl sentinel
#

there's still a few FSMs i wish were gone, but it's already much better

rain cedar
#

Yeah

#

Shiny control I really want gone

#

I'm sure gradow wants sharp shadow fsm gone pretty badly

pearl sentinel
#

and it sounds like float is still around (someone was saying)

rain cedar
#

Yeah, it is still

#

Idk who tested and said it wasn't but they just suck at glitches

copper nacelle
#

yeah

pearl sentinel
#

oh, @warped sinew the new health manager, SetGeo functions are public, but there's no way to "Get" the geo without some tricky hacks since that stuff is not public

rain cedar
#

Just make a GetPrivateField thing that caches ones you've asked for already

#

It'll come in handy for other modding you do I'm sure

pearl sentinel
#

well, i just wrote a function that uses reflection to get the private int

#

but a getter should be trivial for them to add, or just make the int public (shrug)

rain cedar
#

Yeah, would be easy, but I'm not sure how much this is a thing where we can request changes

pearl sentinel
#

yeah

#

usually when i run into something like this it's just a case of "oh i forgot"

warped sinew
#

Haha yeah I don't do the glitch testing s
Another tester did and said it was gone but here we are :)

pearl sentinel
#

so i figured i'd mention it

#

bc i know they're a tiny team

#

so far the bane of my enemy rando has been getting mages to work

warped sinew
#

I just find bugs/balance and do 106% runs over and over... I dont have to to try and break stuff someone else can

pearl sentinel
#

everything else has been pretty easy tho

#

and the mage fsms still seem to be around so sadgrub

#

something to do with the teleporting

warped sinew
#

You guys should write out a well formatted list of code issues you have found and stuff. I can then submit it to the guys I'm sure they won't mind.

rain cedar
#

That would mostly consist of "x FSM is bad" and I'm sure they know that already

warped sinew
#

Game is still in beta for a reason

pearl sentinel
#

i mean, sure thing. i'm sure we can compile a nice google docs list or something

#

honestly, i bet with a few succinct changes a lot could be easier

rain cedar
#

Yeah, actually

#

Like all the places they access playerdata vars directly

#

Instead of the get/set functions

pearl sentinel
#

heck, i bet we could provide code for them to just paste in

#

๐Ÿ˜›

#

but yeah, cool idea graig

warped sinew
#

I cant promise anything will actually be implemented but it might be. Worth a shot (if you can be bothered)

pearl sentinel
#

i know they're probably really busy, but i've put together more for management at work with less possibility of it being looked at ๐Ÿ˜‰

rain cedar
#

Since I'm in the process of making my own shiny item class I might as well try to get that made "official"

#

Worst case I just mod it in anyway

pearl sentinel
#

and if we do something like google docs it could be an ongoing document that they could just poke at whenever

warped sinew
#

Now is the best chance to get anything changed as they are still working on the nitty gritty stuff. Pro tip If your change will lower system resources it has a much higher chance of implementation.

rain cedar
#

Anything that removes an fsm will improve performance

pearl sentinel
#

noted! i'm sure any fsm-replacement would do that

#

their move to unity 5.6 is pretty sweet too btw

rain cedar
#

Oh

#

What version of .net does that use?

pearl sentinel
#

5.6 doesn't yet have the experimental support for the new version

#

that's 2017.whatever

#

i don't see them upgrading again so soon to release, but 5.6 has stuff like the new line renderers

rain cedar
#

Ah ok

pearl sentinel
#

specifically: Initialize engine version: 5.6.3p2 (b3d7a6428558)

wary drift
#

wait can i use unity to mod hollow knight?

formal pecan
#

Hollow Knight was made using unity

#

so yeah

wary drift
#

O_o

formal pecan
#

atleast, I think

#

I emailed them like, 1-2 years ago about it xd

wary drift
#

welp time to make a mod that turns hollow knight into a undertale like RPG

formal pecan
#

oh.

wary drift
#

and every fight makes it like hollow knight

formal pecan
#

fair enough

wary drift
#

with hollow knight characters

#

no

#

primal aspid = cuphead

#

with tri shot

ornate rivet
#

you dont use unity to mod hollow knight

#

you use dnspy

#

it's a unity decompiler

formal pecan
#

well, yeah

pearl sentinel
#

You can create an asset bundle using unity and load it through a script if you write it into the game. (Asset bundle content does not contain scripts) So technically you could use unity... but all the work we do is modifying/adding/removing c# code that already exists. Very little use of the unity program...

cyan moat
#

Hi, I was told to ask here: I recently found out that abyss shriek/howling wraiths can damage Grimm and NKG in pufferfish mode. He's supposed to be invincible, right? Can someone look into it?

solemn rivet
#

I'm pretty sure KDT knows NKG inside out by now. If anyone, he would know

leaden hedge
#

shouldn't be damageable at all the pufferfish is a seperate entity, unless this is a lifeblood change

#

even if you enable the hitbox on it, it still wouldn't hurt him

obtuse sequoia
#

so you use dnspy for the code, but if you want to add new sprites or something you'd use unity?

ornate rivet
#

no

#

another program

copper nacelle
#

unity studio also works

#

iirc

ornate rivet
#

oh

#

oh yea unity studio

#

I thought you meant unity

obtuse sequoia
#

I don't know the difference

ornate rivet
#

unity studio is a different app

#

from unity

copper nacelle
#

is there any way I can have code using the new health manager w/out it failing on earlier patches

#

if I use the health manager I get typeload exceptions

leaden hedge
#
Type type = Type.GetType("healthmanager")
if( type != null ){
...
}

?

#

might work

rain cedar
#

Capital H and M, but yeah

#

Should work

copper nacelle
rain cedar
#

Nah that would probably fail

copper nacelle
#

got it

#

i think

rain cedar
#

What's the way?

copper nacelle
rain cedar
#

typeof?

#

Oh

copper nacelle
#

nvm

#

typeof complains about using a variable as a type

rain cedar
#

Well it's fucking awful but I'm sure typeof(Activator.CreateInstance(hManager)) would work

#

Don't do that before trying more stuff

pearl sentinel
#

You can use get component with a string instead of a type

#

GetCompnent("HealthManager")

copper nacelle
#

but i still get the component does not contain a definition for 'hp'

pearl sentinel
#

Well I mean, it will return null on versions without the component

#

Oh, I see why you're saying

#

You would need to use reflection

#

Here let me paste u something

#
    public static class HealthManagerExtensions
    {
        public static int GetGeoSmall( this HealthManager healthManager )
        {
            FieldInfo fi = healthManager.GetType().GetField("smallGeoDrops", BindingFlags.NonPublic | BindingFlags.Instance );
            object temp = fi.GetValue(healthManager);
            int value = (temp == null ? 0 : (int)temp);
            return value;
        }
#

so if you change the binding flags and the variable name

#

basically you can use the "string" name and reflection to get/set the variable

rain cedar
#

Gross, not caching the FieldInfo

pearl sentinel
#

yeah i should

#

i just threw it together in like 2 seconds yesterday to test since health manager doesn't have a getter for geo

rain cedar
#

Yeah I've got something similar for getting the prefabs

pearl sentinel
copper nacelle
#

nice

#

it worked

copper nacelle
#

and works on beta and 1.2.2.1

pearl sentinel
#

Sweet

#

so i printed a list of all the prefabs (i think) in this build of hk

#

one thing i noticed is the prefabs for menu styles in the list

exotic venture
#

txt
3.39 MB

#

shieet

pearl sentinel
#

Classic_Style, Infected_Style, Steel_Style, etc

#

Shade_Style

#

Grimm_Style

exotic venture
#

that must be void

#

and grimm

pearl sentinel
#

HD_Style

#

Modern_Style

exotic venture
#

lifeblood i assume

pearl sentinel
#

aand

#

GG_Style

exotic venture
pearl sentinel
#

yeah, i kinda wanna see what that is

exotic venture
#

same

#

is there a way to invoke that?

pearl sentinel
#

yup, it's just a prefab, i just need to call "Create" on it basically, but i wanna figure out where it's supposed to be put in the game's code

#

so... ima do that now

#

:3

exotic venture
#

send pics if you succeed

pearl sentinel
#

ofc

exotic venture
#

i gotta see that shit

pearl sentinel
#

did you see the scene list i posted yesterday?

exotic venture
#

nope

pearl sentinel
#

check out the enemy randomizer folder on the mod drive, there's a scenes.rar in there

#

it's all the scenes dumped into text form

exotic venture
#

found it

pearl sentinel
#

"Dream_Backer_Shrine.txt" i think is an interesting name for a scene

rain cedar
#

Not really

#

It's obvious what that is, isn't it?

pearl sentinel
#

no?

#

not resting grounds

rain cedar
#

Shrine of believers

exotic venture
#

a scene specifically for backers

#

yeah

pearl sentinel
#

but

#

there's also

#

Dream_Room_Believer_Shrine.txt

rain cedar
#

The shrine is two scenes

pearl sentinel
#

ohh

rain cedar
#

You dream nail the thing and get put outside the shrine

#

Door to go in

#

What's a loop?

pearl sentinel
#

maybe the assembler unrolled the loop?

#

(unlikely)

rain cedar
#

Yeah I doubt it

exotic venture
#

nice checks tbh

#

charm notches/salubra's blessing i assume

rain cedar
#

Checks?

#

It's giving you all the charms

#

That's a cheat function for dirty cheaters

pearl sentinel
#

their cheat engine thing right

rain cedar
#

It's just in PlayerData

exotic venture
#

wot

pearl sentinel
#

oh, they did add the

public class CheatManager : MonoBehaviour
#

tho

exotic venture
#

dirty dev hax!

#

:V

rain cedar
#

Damn they're trying to steal my job

pearl sentinel
#

it does a lot of stuff

rain cedar
#

Hm, guess it's not on any objects for this build

#

Should open if I hold home and end

pearl sentinel
#

if (Application.isEditor || Application.platform == RuntimePlatform.Switch || Debug.isDebugBuild)

rain cedar
#

Ah yeah in the init

pearl sentinel
#

probably just need to fake that it's a debug build

#

then it'll load

#

or rather

#

overload that with monomod

#

probably easier

rain cedar
#

Easiest to just remove the if

pearl sentinel
#

yea

exotic venture
#

ooo

#

maybe if the debug build is enabled it'll spill all the tools too

rain cedar
#

What do you mean?

pearl sentinel
#

so i found the MenuStyles class

exotic venture
pearl sentinel
#

just need to figure out where to set it to GG_Style

rain cedar
#

It's probably just gonna be some boring shit

#

Like the style after beating HK

exotic venture
#

i meant if you enable the trigger for the debug build (if is met) maybe it'll enable all the dev tools? idk

#

i don't know jack about modding though so idk

rain cedar
#

Debug is better

#

This menu is kinda lame

pearl sentinel
#

that pool stuff isn't in debug tho right

#

and a couple other things

rain cedar
#

I pressed the thing to enable all stags and now my character is stuck moving left

copper nacelle
#

lol

pearl sentinel
#

lol

exotic venture
#

n i c e

#

real functionality

#

right here

#

who needs the fancy UI of debug mod when you can have

#

shitty standard unity ui

copper nacelle
#

don't forget

#

m o v i n g
l e f t

exotic venture
#

yeah, who needs basic movement tbh

copper nacelle
#

why are scream and double jump 0/10

rain cedar
#

I lost all movement control

#

Then I started a new game and I'm moving right

#

Idk how this menu is supposed to work

#

I hate it

copper nacelle
#

lol

exotic venture
#

*everybody move to the left

everybody move to the right*

rain cedar
#

Hm, I think they're not using LoadFirstScene anymore

#

I changed that and it still dropped me into king's pass

pearl sentinel
#

they are

#

but most of the functions in game manager changed slightly

#

i updated them in my build of the api

#

example for loadfirstscene

#

        #region LoadFirstScene
        [MonoModReplace]
        public IEnumerator LoadFirstScene()
        {
            yield return new WaitForEndOfFrame();
            this.OnWillActivateFirstLevel();
            this.LoadScene( "Tutorial_01" );
            ModHooks.Instance.OnNewGame();
            yield break;

            //yield return new WaitForEndOfFrame();
            //this.entryGateName = "top1";
            //this.SetState(GameState.PLAYING);
            //this.ui.ConfigureMenu();
            //this.LoadScene("Tutorial_01");
            //yield break;
        }
#

(comments is old code)

rain cedar
#

No, they're not using it anymore

#

The first scene is loaded from OpeningSequence.StartAsync

pearl sentinel
#

oh, hmm

rain cedar
#

Actually hm maybe not

#

That didn't change anything either

#

Maybe it's StartSync I need to change

#

Oh, lovely

#
while (this.chainSequence.IsPlaying)
{
    SkipPromptMode nextSkipMode;
    if (this.chainSequence.IsCurrentSkipped || this.skipChargeTimer < this.skipChargeDuration)
    {
        nextSkipMode = SkipPromptMode.NOT_SKIPPABLE;
    }
    else
    {
        nextSkipMode = SkipPromptMode.SKIP_PROMPT;
    }
    if (GameManager.instance.inputHandler.skipMode != nextSkipMode)
    {
        GameManager.instance.inputHandler.SetSkipMode(nextSkipMode);
    }
    yield return null;
}```
#

Here I was thinking you couldn't skip cutscenes immediately so they could load stuff

#

But no, they just added an arbitrary timer before you can skip

copper nacelle
#

wtf

rain cedar
#

Alright yeah OpeningSequence.StartSync controls the first scene now

pearl sentinel
#

@exotic venture

rain cedar
#

Neat

exotic venture
#

wow that's cool

pearl sentinel
#

i like it

exotic venture
#

ACTUAL FIRST LOOK AT GNG

#

totally spoiled

vagrant leaf
#

oh shit

#

did you make that?

pearl sentinel
#

lol

vagrant leaf
#

where did that actually come from

pearl sentinel
#

i sound the GG menu style in the resources

exotic venture
#

if you won't i will

pearl sentinel
#

go for it, i'll watch

vagrant leaf
#

i doubt that

pearl sentinel
#

i found it*

#

it's in the game

#

then i wrote some code to set it

vagrant leaf
#

really?

pearl sentinel
#

yep

vagrant leaf
#

what's the file called

pearl sentinel
#

GG_Style

vagrant leaf
#

because that seems unlikely

#

oh wow

#

thats real cool

#

you should make a mod that's just exclusively that menu option

pearl sentinel
#

i just made a thing to cycle through all the menus

#

see here's ss

exotic venture
#

could you make the modding api set it to this on boot, or unlock it to be selected?

#

because i would love to set this as current title screen

#

it's cooler than the steel soul one

rain cedar
#

Yeah should be easy

pearl sentinel
#

honestly it's trivial to change it

#

MenuStyles.Instance.SetStyle( i, true, false );

#

^that, i think 4 is GG

exotic venture
#

uh i am a newb with bare amounts of coding skills

#

qw q

copper nacelle
#

imo start modding

rain cedar
#

Just set that line of code somewhere

#

With 4 instead of i

#

Put it in OnScreenDebugInfo

exotic venture
#

but how

pearl sentinel
#

i might do it in enemy rando, since i liked changing the title screen music

rain cedar
#

Dnspy

copper nacelle
#

Oh yeah

#

the enemy rando title screen is now

#

the royal waterways music

exotic venture
#

ok let's see how this works out

pearl sentinel
#

yeah, they changed the scene orderings

#

so i'm re-working my scene loading code rn

copper nacelle
#

๐Ÿ†’

pearl sentinel
#

i kinda want that new boss track as the title music

exotic venture
#

so i open up Assembly-CSharp right

rain cedar
#

Yeah

exotic venture
#

huh, there's specific objects for knight and hornet

pearl sentinel
#

and yep, 4 is the GG background

exotic venture
#

this is cool

#

wait where do i even navigate to

copper nacelle
#

On screen debug info

rain cedar
#

Could also just override it to always set 4 in MenuStyles

vagrant leaf
#

we should tell graig or someone from tc about this next time someone's on

#

i don't think this is intentional

copper nacelle
#

no don't

#

shut

exotic venture
#

shut

vagrant leaf
#

too bad

#

it happening

exotic venture
#

gey

rain cedar
#

Like just put index=4 at the start of MenuStyles.SetStyle

young walrus
#

How bout we tell TC nothing ever again

#

Since they don't give a shit about us anyways

#

May as well keep them from patching everything out

rain cedar
#

Hey they may hate speedrunners but they like the people over here

hazy sentinel
#

inb4 TC lurking in speedrunning channels to find new bugs

young walrus
#

Worst kind of Dev TBH be honest

exotic venture
#

let's see

#

if i bonked everything up or not

#

doesn't change anything

#

hm

rain cedar
#

Worked for me ๐Ÿ‘

hollow pier
#

tbh april 1st they reveal it was all a meme and now you can teleport everywhere

rain cedar
#

Made that change

exotic venture
#

all right this i can work with

#

let's see

#

yes it fucking works

#

thanks a ton

rain cedar
#

Anyone know if you can detect FSM events without an FSM?

#

Want to be able to detect the "START INSPECT" event that gets sent from the inspect region FSM on all the shiny items

#

Might just have to make code for that too, idk

copper nacelle
#

ez

rain cedar
#

That's not very appealing

copper nacelle
#

sh

vagrant leaf
#

wow beautiful background

#

putting it on rn

hazy sentinel
#

solid black menu screen when

pearl sentinel
#

i wrote a component that makes a dictionary of all the fsm states and then keeps track of when they change when it's on

#

then you can check

#

pfsm.Fsm.LastTransition != null ) pfsm.Fsm.LastTransition.EventName

#

when the state changes

rain cedar
#

Wow that's horrible

pearl sentinel
#

doesn't catch everything tho

#

yeah, i didn't see a callback

rain cedar
#

I'll just make a component for inspect region as well

copper nacelle
#

wtf the menu styles are supposed to unlock from achievements

vagrant leaf
#

really?

copper nacelle
pearl sentinel
#

some, idk if like classic does or a few others

#

but like the steel soul one makes sense

copper nacelle
#

setstyle in initialize causes a black screen

#

w/ aftersavegameloadhook

pearl sentinel
#

i have my initialize set off a coroutine

#

yield return new WaitForSeconds( 2f );
MenuStyles.Instance.SetStyle( 4, true, false );

copper nacelle
#

neat

pearl sentinel
#

hmm

#

goes back to normal after save and quit tho (probably need to change that 2nd flase to true

copper nacelle
#

bool save

#

bool save is a lie

rain cedar
#

I'm pretty confused right now

#

The FSM mod shows there being an "inspect" FSM on the inspect region objects

#

But I can't find it at runtime and it's not in kerr's object dump

pearl sentinel
#

is it created at runtime?

rain cedar
#

It would really be something if TC was adding FSMs to shit at runtime

leaden hedge
#

they are added at runtime

#

theres another fsm that spawns a prefab

#

with all the inspect stuff on it

copper nacelle
#

w h y

rain cedar
#

I dig it

#

FSM to spawn another FSM from a prefab

leaden hedge
#

y not

solemn rivet
#

so, I'm finally able to look at the assembly for the beta

#

what have you guys found already?

rain cedar
#

Biggest thing is the HealthManager component

#

Lots of other small changes, though

solemn rivet
#

I see there's also a MenuStyles thingy

#

nice

copper nacelle
#

yeah

solemn rivet
#

also, any news on fsm dumper for the beta?

copper nacelle
#

they left in the gods and glory one

#

enemy rando has something which dumps the fsms in a scene

#

to modlog

solemn rivet
#

hm

#

do we know that the remaining FSMs (aside from the health manager change) are still basically the same?

rain cedar
#

The old FSM dumper still works, though

copper nacelle
#

wait what

#

i tried it and nothing happened

solemn rivet
#

oh, I thought someone had said it didn't

#

oh, it was 56

rain cedar
#

What a dungo

#

It works fine

copper nacelle
#

re

leaden hedge
#

wow what a dungjead

rain cedar
#

For FSMs idk if they're the same

copper nacelle
#

mantis lord fsms were the same

rain cedar
#

Shiny item has some weird states that might be new

#

I'd have to look at the old one

solemn rivet
#

hm k thanks

rain cedar
solemn rivet
#

I'll take a look at sharpshadow and superdash then

#

fling

#

oh yeah, there was something about flinging geo?

rain cedar
#

Fling is normal, it's for the animation on stuff coming from chests and whatnot

#

Just idk what fling grub/bubble are

#

Slug has gotta be divine

#

And yeah it's really easy to spawn geo and fling it around now

#

Actually grub is probably grubfather

copper nacelle
#

wtf

#

i tried the fsm dumper again

#

nothing

rain cedar
#

You have a save_fsm folder, right?

copper nacelle
#

uhh

#

forgot to recreate that

#

am dungo

#

ty

rain cedar
#

Sick

copper nacelle
#

holy shit

#

that dumped

#

so much faster

rain cedar
#

It's because it's not loading 500000 health managers

copper nacelle
#

lol

#

this barely affects load time

#

I'm just going to leave it on

solemn rivet
#

inb4 your save_fsm folder explodes

#

or not, since hmanagers are now gone

copper nacelle
#

what the fuck

#

it went from 1.13GB

#

to 57MB

solemn rivet
#

wut

#

are you serious

copper nacelle
#

old patch was 1.13GB

#

beta is 57MB

rain cedar
#

It's not like it saves every fsm immediately

#

You had more in the old patch because you used it longer

#

There's still a lot of fsm

pearl sentinel
#

mfw new enemy rando is better than ever

copper nacelle
#

i have a copy where i'm pretty sure I just did the initial dump

#

and that was 1.06GB

pearl sentinel
solemn rivet
#

wait, did I miss the release of a beta-compatible api ver?

#

also, Kerr: NICE

#

just push CG off the cliff

#

ggez

rain cedar
#

I don't think anyone has posted a modding api dll

pearl sentinel
#

he knocked me out of room

copper nacelle
#

lol

solemn rivet
#

kek

pearl sentinel
#

also

#

no loading lag on entering rooms

#

and rando is almost instant

solemn rivet
#

noice

#

for now I might do an assembly mod just to test if blackmoth still works

copper nacelle
#

imo ask kerr for an api copy

solemn rivet
#

if his has all, or most, hooks, I'm in

pearl sentinel
#

these guys exist now

#

seanpr might have a better one

solemn rivet
#

you know what they say...

#

don't let your dreams be dreams

ornate rivet
#

wat

#

they didnt exist before?

solemn rivet
#

no

#

dey be dream

rain cedar
#

I don't have a better one

#

I'm lazy

#

Not gonna compile this shit

pearl sentinel
solemn rivet
#

was about to dm you

#

much thank

pearl sentinel
#

np

#

some enemies have disappeared tho, namely the colosseum ones

#

like zote is gone, i need to find where he went

rain cedar
#

Found him

#

He's in the vengeflies mouth in that screenshot you sent

solemn rivet
#

^

pearl sentinel
#

lol

#

tfw all the watcher knights go randoed

#

i killed the replacements at the door opened correctly too

solemn rivet
#

do they still die from the chandelier tho

pearl sentinel
#

i think so

#

because the chandelier kills the originals by script

#

which triggers my tied replacements to die

#

else apparently i would've had to fight lost kin in here

#

yep

#

black knight 2 was replaced by lost kin

#

nvm, he went down here

#

lol

copper nacelle
#

nice

pearl sentinel
#

well this is awkward

#

soul master and soul tyrand

#

tyrant*

#

and above them

copper nacelle
#

lmao

pearl sentinel
#

huh, he works too

hollow pier
#

bossrush but not

pearl sentinel
#

scary place around here

vagrant leaf
#

oh shit

#

is there like a boss mode now

pearl sentinel
#

no i decided to add everything back into the randomizer

#

to see what happened with the updates

copper nacelle
#

y e s

pearl sentinel
#

most of it works now

vagrant leaf
pearl sentinel
#

it needs some tweaks

ornate rivet
#

wait we can get bosses randoed now too!!

#

wafwadwa

#

this is 10/10

pearl sentinel
#

Eventually, right now I still need to put some rules in to fix some new softlocks. Like replacing gruz mother is still bad and breaks the gate she's connected to

#

I think I'm finally gonna move the enemy sets/rules to xml so others can help with development, next time I have time to work on this

#

I won't be doing a release this weekend, but if someone really wants the current version I can put it up here

copper nacelle
#

imo do it

pearl sentinel
#

it's missing a bunch of colosseum enemies and who knows what else is broken in it

copper nacelle
#

thank

rain cedar
#

Currently finding a game object so I can find another game object it has as a child so I can find an fsm on that game object so I can find a prefab in the fsm to spawn a game object which has the fsm I actually want on it zote

copper nacelle
#

<DebugInput>d__24.MoveNext() :::: Dumping Scene to D:/Steam/steamapps/common/Hollow Knight/hollow_knight_Data/Managed/Mods/Hive_01

#

n i c e

foggy prawn
#

do the different zote tiers count as different enemies for the randomizer? im imagining a room full of zotes

#

each more magnificient, diligent, etc than the last

solemn rivet
#

blackmoth works, just need to fix a few things

#

so, hmanager is now a component attached to a game object, correct?

rain cedar
#

Yeah

#

With geo prefabs

#

Love geo prefabs

solemn rivet
#

geo prefabs will make increased drops so much simpler in bonfire...

rain cedar
solemn rivet
#

nice! Thanks sean!

rain cedar
#

That should be fine for any reasonable amount of geo, just don't try spawning thousands at a time or you'll probably run into lag issues

solemn rivet
#

yeah, that happened when I first messed with geo in bonfire

rain cedar
#

Also obviously you need to grab geo prefabs from a health manager at some point

solemn rivet
#

5k small geo at once

rain cedar
#

Oh no

#

5k is waaaaaay more than it would take to crash

solemn rivet
#

yup

#

I wasn't really thinking when I put 5k there

rain cedar
#

Well, that should never spawn more than ~10% of the put in amount as small geo

solemn rivet
#

I was just testing if it worked

#

yeah, that's a good idea to remove/reduce lag

rain cedar
#

I was just choosing completely random amounts for large/medium then putting the rest in small

#

Did not work well

solemn rivet
#

now I need to figure a way to check if an enemy was hit, since health_manager is not FSM anymore, so geteventsenderhook won't work

rain cedar
#

There's a few functions that look promising

#

There's Hit, NonFatalHit, and TakeDamage in the new HealthManager

solemn rivet
#

yeah, I'm rummaging through the assembly as we speak

rain cedar
#

Hit is probably what you want

#

It even tracks the GameObject doing the damage

#

I copied code exactly from an FSM action and it doesn't work

#

Fuck me

solemn rivet
#

yeah

#

but Hit is the opposite of what I want

#

interesting, nonetheless

rain cedar
#

Ah right this is for dealing damage to other things

solemn rivet
#

TakeDamage seems promising

#

it even has a switch case for sharpshadow

rain cedar
#

Nice

solemn rivet
#

this.hp = Mathf.Max(this.hp - num, -50);

#

kek

#

this makes me want to do >50 damage at once, just to see it break

#

but sadly...

#
if (this.hp > 0)
        {
            this.NonFatalHit(hitInstance.IgnoreInvulnerable);
            if (this.stunControlFSM)
            {
                this.stunControlFSM.SendEvent("STUN DAMAGE");
            }
        }
        else
        {
            this.Die(new float?(hitInstance.GetActualDirection(base.transform)), hitInstance.AttackType, hitInstance.IgnoreInvulnerable);
        }```
#

it won't break

copper nacelle
#

lol

solemn rivet
#

also, this might fix the vanilla bug thingie with sharpshadow not dealing damage

#

we'll have to see

rain cedar
#

I highly doubt it

#

That's probably a problem in the sharp shadow fsm

solemn rivet
#

yeah...

#

I basically had set that same code in blackmoth as a way to circumvent the vanilla way of sharpshadow dealing damage

#

and, reportedly, it still broke

#

I made sharpshadow deal 0 damage and, instead, actively subtracted what I wanted the damage to be on contact

rain cedar
#

Just fix the FSM

solemn rivet
#

nah, too much effort

#

actually

#

I kinda wanna take a look at that fsm later

rain cedar
#

I mean I'm trying to change the crappy 3 fsm item pickup system into a component

copper nacelle
#

3 fsms wtf

rain cedar
#

Haha yeah

#

It's an FSM to actually give the item

#

Then an FSM that spawns another FSM and sends events to it

#

Then the spawned FSM which controls the marker over the pickup

#

Current problem is that I can't get the marker into the right position

#

The code for setting position in the FSM action they call doesn't work

chrome orchid
#

Sorry to interupt but I just wanted too ask if there was an Health Bar mod for the bosses

rain cedar
#

Yes but not for the beta

#

Check the pinned messages

pearl sentinel
#

Can't get the marker into position?

rain cedar
#

Well I could easily get it into the right position

#

The problem is programmatically finding the right position

pearl sentinel
#

Oh, project up, then project a few raycats down 45 degrees left/right and pick the one with a collision normal pointed up?

rain cedar
#

I'm trying to emulate the TC code here so I just want it at the position they've got it set to

#

Just gotta find where in the FSMs that's buried

pearl sentinel
#

Oh, gotcha

rain cedar
#

I think I have an idea

solemn rivet
#

okay, TakeDamage will work

#

now, I need to make a hook

#

sigh

#

actually...

#

FSMUtility.SendEventToGameObject(base.gameObject, "TOOK DAMAGE", false);

#

how would I subscribe to that event?

#

if there is a way...

rain cedar
#

There's not

#

Also my idea didn't work

#

I thought maybe implementing the SetParent FSM call would help because they do one of those

#

But it turns out they're just parenting it to itself

#

Idk what that is even meant to do

pearl sentinel
#

What if, could we monomod the playmaker dll to add a handler to sub to for events?

rain cedar
#

That's a bit tricky because you'd end up with a circular dependency

#

Maybe it could work, though

pearl sentinel
#

I feel like, at this point, modding playmaker is what needs to happen

rain cedar
#

Just get TC to make actual code

#

Easy

#

They did it for a few of them, at least

pearl sentinel
#

Yeah, but the fsms at leat have a base class. Couldn't be that bad to alter

solemn rivet
#

if I could just turn an fsmevent into an event...

rain cedar
#

Oh, this is pretty inconvenient

#

Apparently the logger in the api doesn't just print "null" if you pass it null

#

It gets a NRE and kills your function

pearl sentinel
#

Well

#

rip

rain cedar
#

My shit still doesn't work, though

#

This makes no sense

#

Both the position values in the FsmAction are null

#

So it SHOULD get set to 0,0,0

#

Which is what my code does

#

But somehow without modding shit it gets set to 18.4, 23.9, 0.2

#

Does casting something back and forth lose data?

#

I'm grabbing the FsmAction from an array of those things

#

Then I cast the right one back to the proper thing (SpawnObjectFromGlobalPool)

#

I doubt that loses data

solemn rivet
#

fsmstates/actions do some weird shit

#

I tried manually setting the speed for the cdash (it's a vector2)

#

it completely ignored my override when I did anything to the y coordinate

rain cedar
#

Nice

solemn rivet
#

but it accepted it in the x coordinate... As long as it was a simple change from 1 to -1 and vice-versa

#

changing it to 0 didn't work either

#

I'm sure there's something happening in the background we're not seeing

solemn rivet
#

dumb question, but when does OnEnter happen? Specifically, TakeDamage.OnEnter(). When is "Enter"?

#

meh, I give up

#

I dunno how to do this without hooking into HealthManager

rain cedar
#

OnEnter is an FSM thing, I think

#

Just when you enter the state

solemn rivet
#

hm...

#

because that's how the game deals damage now

#

OnEnter it creates a new HitInstance corresponding to the object which is hitting

#

and that HitInstance is used in the HealthManager thingies

rain cedar
#

You could hook the HitInstance creation

solemn rivet
#

yeah

#

either that or the TakeDamage method in HealthManager

#

one of those two

rain cedar
#

Sounds good

solemn rivet
#

I think a TakeDamage hook could be more useful for modding in general

rain cedar
#

Yeah, probably

solemn rivet
#

sounds good

#

I'll do that tomorrow

#

now, sleep

rain cedar
#

Night

solemn rivet
copper nacelle
rain cedar
#

Must be an argument passed into the FSM event somehow that's getting lost when I look at it at runtime

#

And that object must be getting created at runtime because it's not in kerr's scene dump

#

Wonderful

#

Idk if this works in the general case but I'm looking for a child object named "Prompt Marker"

#

Works here to get the right position at least

pearl sentinel
#

not a bad idea

#

since that probably exists on every single pickup ever

rain cedar
#

Just need to be able to pull the "Inspect" text and what the pickup actually is from the FSMs now

#

After that I think I'll have everything to recreate the pickups in code

#

Ah right and also gotta figure out how they're storing if it's been picked up already

#

Something in SceneData, I'm sure

pearl sentinel
#

the object probably has a persistant bool right?

#

(a component named something like that)

copper nacelle
#

and not at all useless

pearl sentinel
#

a list/array of events

#

and of floats

#

ofc

#

time to iterate deeper

#

before i wrote some helper functions i had this

#
                PlayMakerFSM deleteFSM = null;
                for(int i = 0; i < modifiedPrefab.GetComponentsInChildren<PlayMakerFSM>().Length; ++i )
                {
                    PlayMakerFSM fsm = modifiedPrefab.GetComponentsInChildren<PlayMakerFSM>()[i];
                        foreach( var s in fsm.FsmStates )
                        {
                                foreach( var a in s.Actions )
                                {
                                }
                        }
                }
copper nacelle
#

i think this will work

#

Log(string.Join(",", rand.events.Select(x => x.Name).ToArray()));

#

the loop is probably better for more data tho

pearl sentinel
#

so riddle me this, when i loaded colosseum in my loading code and dumped the scene (in the text files i posted even) it was missing most of the colosseum enemies

#

and still is when i run my loading code

#

but, when i went there, it had all the enemies in the scene

#

(i did a manual scene dump when i went there)

#

the loading code is the same as before when it used to get all the enemies

copper nacelle
#

maybe it loads the enemies in after the player loads in?

#

oh wtf

pearl sentinel
#

maybe

#

but something changed is all i can think

#

either way it's kinda annoying, bc now i need to figure out how to get them to spawn so i can save them off

#

oh well, a problem for another day

copper nacelle
#

Decreased boomerangs in the second phase a ton & buffed a few other moves a bit to compensate

Should make the fight not RNG

rain cedar
#

Alright I just made some more good progress

#

I've got the pickup taking control, playing an animation, then giving back control when you inspect it

#

That's one of the hard parts, all that's left there is just regular position checking logic for proper animation

solemn rivet
#

omg, so easy

solemn rivet
#

gah

#

I added a simple line to make it print whenever something gets a hitinstance

#

and everything gets a hitinstance 3x

#

why would they need to iterate it 3 times?

copper nacelle
#

to cause pain

solemn rivet
#

I love dnspy

#

turning this:

#
Modding.Logger.Log($@"HitInstance for {base.Owner.name}:
Source: {base.Owner}
AttackType: {(AttackTypes)this.AttackType.Value}
CircleDirection: {this.CircleDirection.Value}
DamageDealt: {this.DamageDealt.Value}
Direction: {this.Direction.Value}
IgnoreInvulnerable: {this.IgnoreInvulnerable.Value}
MagnitudeMultiplier: {this.MagnitudeMultiplier.Value}
MoveAngle: {this.MoveAngle.Value}
MoveDirection: {this.MoveDirection.Value}
Multiplier: {(this.Multiplier.IsNone ? 1f : this.Multiplier.Value)}
SpecialType: {(SpecialTypes)this.SpecialType.Value}
IsExtraDamage: false");```
#

into this:

#
Modding.Logger.Log(string.Format("HitInstance for {0}:\r\n\t\t\t\t\\n Source: {1}\r\n\t\t\t\t\\n AttackType: {2}\r\n\t\t\t\t\\n CircleDirection: {3}\r\n\t\t\t\t\\n DamageDealt: {4}\r\n\t\t\t\t\\n Direction: {5}\r\n\t\t\t\t\\n IgnoreInvulnerable: {6}\r\n\t\t\t\t\\n MagnitudeMultiplier: {7}\r\n\t\t\t\t\\n MoveAngle: {8}\r\n\t\t\t\t\\n MoveDirection: {9}\r\n\t\t\t\t\\n Multiplier: {10}\r\n\t\t\t\t\\n SpecialType: {11}\r\n\t\t\t\t\\n IsExrtaDamage: false\r\n\t\t\t\t", new object[]
            {
                base.Owner.name,
                base.Owner,
                (AttackTypes)this.AttackType.Value,
                this.CircleDirection.Value,
                this.DamageDealt.Value,
                this.Direction.Value,
                this.IgnoreInvulnerable.Value,
                this.MagnitudeMultiplier.Value,
                this.MoveAngle.Value,
                this.MoveDirection.Value,
                this.Multiplier.IsNone ? 1f : this.Multiplier.Value,
                (SpecialTypes)this.SpecialType.Value
            }));```
#

love it

#

perfect

exotic venture
#

i don't have to be a coder to know the top one is better

vagrant leaf
#

^

#

pretty sure r/n/t/t/t/t/ is bad

solemn rivet
#

that's actually my fault

#

because I had $@ so it interpreted what I wrote literally

#

and all those indents and linebreaks became \r\n\t\t\t

#
[INFO]:HitInstance for Gas Explosion L(Clone):
Source: Gas Explosion L(Clone) (UnityEngine.GameObject)
AttackType: Generic
CircleDirection: True
DamageDealt: 9999
Direction: 0
IgnoreInvulnerable: False
MagnitudeMultiplier: 1
MoveAngle: 0
MoveDirection: False
Multiplier: 1
SpecialType: None
IsExrtaDamage: false```
#

I really like this healthmanager thingie

#
Source: SD Burst (UnityEngine.GameObject)
AttackType: Generic
CircleDirection: False
DamageDealt: 10
Direction: 0
IgnoreInvulnerable: False
MagnitudeMultiplier: 2
MoveAngle: 0
MoveDirection: False
Multiplier: 1
SpecialType: None
IsExrtaDamage: false```
vagrant leaf
#

DamageDealt: 9999

#

sounds fun

fair rampart
#

that cant be good for your helth

solemn rivet
#
[INFO]:HitInstance for SuperDash Damage:
Source: SuperDash Damage (UnityEngine.GameObject)
AttackType: Generic
CircleDirection: False
DamageDealt: 10
Direction: 180
IgnoreInvulnerable: False
MagnitudeMultiplier: 1.5
MoveAngle: 0
MoveDirection: False
Multiplier: 1
SpecialType: None
IsExrtaDamage: false```
#

interestingly, there's two HitInstances for SuperDash

#

both deal 10 damage, and both have multiplier 1

#

but one of them has magnitude 2, while the other has magnitude 1.5

#

and this is what magnitude is used for:

#
    if (this.recoil != null)
    {
        this.recoil.RecoilByDirection(cardinalDirection, hitInstance.MagnitudeMultiplier);
    }```
#

now it's so much easier to make bonfire work

exotic venture
#

no more great crystal dash spin?

#

d'aww

vagrant leaf
solemn rivet
#

that's still in the works

#

sadly, cdash is still FSM