#archived-modding-development

1 messages ยท Page 35 of 1

rain cedar
#

Guess I'm lazy

#

So changing anchor from top left to center moves it exactly center

solemn rivet
#

there's also the issue where NewPlayerDataHook was running... basically multiple times

buoyant wasp
#

yeah, i am gonna look at that

#

GUI.skin.label.alignment = TextAnchor.MiddleCenter;

#

that's in bonfire

#

wondering if that is it

rain cedar
#

Yeah, I would imagine so

buoyant wasp
#

so just need to change the new label you create to be textanchored to the upper left instead

#

i assume

rain cedar
#

Yeah

#

Should also change the font and font size to be sure

buoyant wasp
#

k

rain cedar
#

Actually there's probably a default skin you can set it to

#

GUI.skin.label = GUIStyle.none; Maybe?

buoyant wasp
#

i'll try it

timber gale
#

Is there any way to re-fight grimm using the debug mod after the troupe's been banished?

young walrus
#

Respawn boss

broken fable
#

does setting the grimmchild level work?

timber gale
#

*Nightmare King Grimm

young walrus
#

Tent will be gone, but load zone will be back

timber gale
#

?

young walrus
#

Debug mod has a "respawn enemy/boss" feature

timber gale
#

Yes, but where do I go to respawn him if the troupe has already been banished?

buoyant wasp
#

the load zone will exist

#

so just go to where the door should be

#

and press up

rain cedar
#

The dream bosses can be respawned from anywhere

timber gale
#

Ah, I see

buoyant wasp
#

so, i think the problem is 2-fold. bonfire is not handling gui properly nor is the API. Neither should be editing the Gui.skin.X directly. They should both copy from GUIStyle style = new GUIStyle(GUI.skin.label); and then use that new style for their rendering.

rain cedar
#

Yeah

#

That's why I'm saving all the variables to set back to the original later

buoyant wasp
#

Modding API 1.2.2.1-9 (BETA). - Fixes a couple issues with Mod Settings. Changes the default encoding for ModLog.txt from UTF16 to UTF8. Save data after serialization and before deserialization is now dumped to ModLog.txt if the logging level is at it's finest (0). Fixes issues with version info being in the wrong place.

fair rampart
#

There is a hardlock situation I ran into in the randomizer, I think. If you get to the Abyss with Shade Cloak and without Mantis Claws you can get to what normally gives Shade Cloak and that traps you in the abyss with a hardsave it seems.

rain cedar
#

Yeah, that's known

#

I'm pretty sure I have it fixed on my end but I haven't gotten around to testing it

#

Need to rework some other stuff too

buoyant wasp
#

like putting kingsoul into the mix ๐Ÿ˜‰ and grubsong (though need to make that list first)

rustic fossil
#

How difficult would it be to give The Hive a separate map?

rain cedar
#

You'd have to add the map item, a cornifer position, and change the actual map screen to reflect this

rustic fossil
#

That's the only separate area without one, right?

rain cedar
#

None of which I know how to do

rustic fossil
#

I imagine the hardest part would be splitting it off from the map of Kingdom's Edge

rain cedar
#

All of it is gonna be hard

rustic fossil
#

Would Cornifer be that difficult?

buoyant wasp
#

i'd assume you'd have to take his fsm, copy it, from somewhere else, move him there, add triggers that determines when he's there and when he's not, you'll have to get those little page things he drops, you'll have to create another item of map type and change the fsm that controls when he shows up in dirtmouth and when his wife's dialog changes. you'd have to split the map out separately.

#

and probably a bunch of stuff i've missed

rustic fossil
#

That would be a pain for sure

#

Might be a cool mod, though

rain cedar
#

I don't think it's worth the effort

rustic fossil
#

We really need more tools to do anything big

#

Have they talked about bringing it to Steamworks?

rain cedar
#

No, they don't seem to have any desire to implement mod support

buoyant wasp
#

honestly you're still trying to tackle huge complicated difficult stuff

rustic fossil
#

The problem is that modding in Hollow Knight is way harder than it should be because of FSM

#

I'm assuming the devs have some sort of tool for that

rain cedar
#

We've got a viewer for them but not an editor

rustic fossil
#

Yep, exactly

buoyant wasp
#

as far as moddb/steamworks/etc, that can't happen unless TC fully enables modding as part of the game

rustic fossil
#

Yep

buoyant wasp
#

which isn't going to happen

rustic fossil
#

Even if they just threw us a folder of tools with no documentation it would be better than nothing

buoyant wasp
#

eh, no, not really

#

becuase the critical part of modding is 1 of 2 things

#

either A: the game as a built in API to do modding

#

or

#

B: you have to edit the DLLs yourself

rustic fossil
#

Yep

#

But if you have tools, it's easier than editing the DLL without

buoyant wasp
#

yes, but you can't distrobute the DLLs

#

TC has kindly overlooked that we do it in this discord

rustic fossil
#

I guess I don't get your point

buoyant wasp
#

with the understanding that the modded dlls don't get hosted on places like moddb

#

Assembly-Csharp.dll IS hollowknight

rustic fossil
#

I don't care about distribution, I think it would be nice to have tools for modding itself

#

Not "modding" tools, but tools that will inherently help

buoyant wasp
#

i don't think that's likely, the tools they could give us, likely require the critical piece of having the source code

rustic fossil
#

It's possible

buoyant wasp
#

the tools that don't require the source for, we already have

rustic fossil
#

See, I've come from Rain World and The End Is Nigh modding

#

Both have level editors that don't require the source

buoyant wasp
#

well, keep in mind that TC's coding folks consist of 2 people

#

who didn't start out as programmers

#

which helps explain oddities

rustic fossil
#

Same with RW, it came from an artist and a musician

#

To be more specific, I think two tools in particular would be helpful, a one to edit levels and one to edit FSM or make it easier to do so

#

See, in RW, if we could fix the decompiled code we could do almost anything

rain cedar
#

You can do both of those at runtime

rustic fossil
#

With this FSM makes it still tough

#

Hmm? How so?

#

If there is a way I'd love to know, even if it's tedious

#

I know some basic FSM stuff can be done

#

But has anyone modified the actual layout of a level?

rain cedar
#

Including adding platforms to levels to prevent getting stuck

rustic fossil
#

Interesting

#

Do people know how the format works?

#

Can assets be added and changed?

rain cedar
#

I have no idea if it's feasible to modify resources

#

Other than basic stuff like images

rustic fossil
#

Dang it. So what I'm getting from this is that this game is too tough to mod to be worth it for anything but small things, and that probably won't change. Is that correct?

rain cedar
#

The changes you can make are limited but that doesn't mean you have to make small mods

buoyant obsidian
#

Work with what you're given with I guess

rustic fossil
#

I'm still not 100% clear on what that is

#

No expansion or custom enemies, correct?

#

It's really just modifying existing things

rain cedar
#

You technically could expand the game world programatically but it would be a huge effort

#

It's just Unity scenes though

#

So it might work to add new ones in

rustic fossil
#

Actually, that's another question. Could we theoretically augment the code in such a way as to allow custom content? Things such as new methods that the game can read?

rain cedar
#

So it might work to add new ones in

#

Internet is dying, guess I'll move to my phone

#

Adding new methods is easy

#

Maybe you mean something different

rustic fossil
#

I mean, adding a method is always easy, but how difficult would it be to add some code that calls a method with a new enemy behavior completely self-contained? Or even a new enemy that doesn't use FSM but is hard-coded in C# instead?

rain cedar
#

You could probably make your own enemy starting from scratch

buoyant wasp
#

the world is technically rendered in 3d isn't it?

buoyant obsidian
#

Copy a Cuphead enemy in and replace all the collider code

rain cedar
#

Yeah it's 3d

rustic fossil
#

That would be hilarious

#

Do they just use a shader to get the cartoon effect?

buoyant obsidian
#

Yep

rustic fossil
#

Nice

broken fable
#

@rustic fossil i just looked into the map code the other day. pretty much the whole mapping system is copypasted for every major map. i'm interested in modding the map, but it's so terribly coded as is, we'd need to do something serious to get it into a moddable state. if you don't care about going through the modding api mod, then you can just continue with the copypaste pattern easily enough, but to get it to a state where the modding api can allow a mod to contribute a new area or something would require a huge modification of the mapping system.

#

like look at this copypasta:

    public void QuickMapCliffs()
    {
        this.shadeMarker.SetActive(true);
        this.flamePins.SetActive(true);
        this.dreamGateMarker.SetActive(true);
        this.displayNextArea = true;
        this.areaAncientBasin.SetActive(false);
        this.areaCity.SetActive(false);
        this.areaCliffs.SetActive(true);
        this.areaCrossroads.SetActive(false);
        this.areaCrystalPeak.SetActive(false);
        this.areaDeepnest.SetActive(false);
        this.areaFogCanyon.SetActive(false);
        this.areaFungalWastes.SetActive(false);
        this.areaGreenpath.SetActive(false);
        this.areaKingdomsEdge.SetActive(false);
        this.areaQueensGardens.SetActive(false);
        this.areaRestingGrounds.SetActive(false);
        this.areaDirtmouth.SetActive(false);
        this.areaWaterways.SetActive(false);
        this.PositionCompass(false);
    }
buoyant wasp
#

@leaden hedge odd bug if you fight Hollow Knight, then False Knight, only about half of your hits on false knight will land (the others bounce off him) and you have no health masks or soul vessel. Guesing something weird about the state you get into after killing HK that radiance normally fixes.

leaden hedge
#

btw unitys gui system is all one thing, so if you change any variables on it anywhere, it changes them for everything

#

honestly though I'd highly recommend everyone just use canvas if your not using text input

#

also hard coding new entities works

#

I did it originally for item pickups, but it caused player animations to bug out and I was too lazy to fix them

#

oh, and for physics code, just add a new component onto the base game object, and give it FixedUpdate()
and you can also do collision detection on new components, just do
public void OnTriggerEnter2D(Collider2D col)
and
public void OnTriggerExit2D(Collider2D col)
and that will work on any object that has any kind of collider, be it box, polygon or circle

#

as for editting FSM good luck, if you'd want to do a major change to how something works I'd just recode it in csharp, it'd be less of a pain in the dick

#

and I think I'm caught up with chat now hollowface

#

@buoyant wasp its probably because you're in a cutscene, I assume you mean failed champion and not false knight too

buoyant wasp
#

well it might think i'm in a cutscene

#

but i fought the entire fight of FK and NKG with no health/mana (until i died to him)

#

i was just stuck in that state forever

late sphinx
#

is wayword compass supposed to be an item in bossrush

#

does it do anything

leaden hedge
#

its filler

#

no it does nothing

late sphinx
#

oh

#

that's nice

late sphinx
#

goddamnit that not item dropping bug happened again

#

i was doing so well

rain cedar
mild maple
rustic fossil
#

truth

late sphinx
#

without monarch wings or mantis claw

#

welp

wary drift
#

xD

late sphinx
#

t i m e t o d o i t a l l o v e r a g a i n

#

actually i think mantis claw was an option at some point

#

and i forgot i needed it

#

so this is my doing

leaden hedge
#

it certainly was

#

as it'll drop every item atleast once

late sphinx
#

i really like myself

late sphinx
#

wth

#

i took mantis claw but i didn't actually get it

leaden hedge
#

yeah thats bugged hollowface

late sphinx
#

wh

#

whgtvuyg ut24gt7415

#
-why do you not tell me these things```
copper nacelle
#

rip

#

are there any tutorials for getting into hollow knight modding or anything?

late sphinx
#

also i can't help but notice kingsoul doesn't work unless i die

#

i think

copper nacelle
#

that's cool

#

is that the randomizer mod?

leaden hedge
#

no its boss rush

late sphinx
#

everytime

#

i get a good build

#

and have the mobility to beat radiance

#

either grimm of thk don't drop items

#

too much fun for your body to handle

copper nacelle
#

I really should play boss rush

#

it looks very fun

late sphinx
#

it is

#

mostly

#

i say mostly because of the bugs intenseface

lilac bronze
#

A mod without bugs, now what fun is it in that. Giving the player a nasty suprise left and right... "wonderful"

late sphinx
#

some of the bugs require you to restart boss rush or even restart the game hollowface

royal ridge
#

is one of the bugs a tiktik intenseface

solemn rivet
#

ofc

lilac bronze
#

That is how they make sure you never get tired of it, if you complete it always ๐Ÿ˜‰

solemn rivet
#

tiktik last boss confirmed

#

God of High Heavens Tiktik has Descended

lilac bronze
#

Oversized Tiktik.. grew to large of the infection..

#

I wonder, will it be to hard to make a mod playing as your shade and/or your "final form" against Radiance (when Hollow Knight pry her open). Thou not sure how the whip like attack would even work

timber gale
#

You'd need all of those animations, which as far as I know don't exist

swift cairn
#

yeah it probably doesn't have the right animations for anything but that sequence

timber gale
#

What you could do is probably switch shade and hk animations and fight using spells only

#

Would be weird tho

buoyant wasp
#

claw will be fixed next release of boss rush ๐Ÿ˜‰

timber gale
#

To update boss rush do I just drag it into the game folder?

late sphinx
#

nice

buoyant wasp
#

yeah, to update a mod you basically just do what you did to install it in the first place

#

which, as you said, drop and drop

timber gale
#

I think I should be able to handle that then

buoyant wasp
#

re: no items dropping in boss rush. yeah, annoying, hopefully kdt can figure out what causes that to not happen. but it doesn't kill your run. you can still use LT or Tab to just skip picking up the non-existant items.

late sphinx
#

that doesn't work for me sometimes

#

mostly

buoyant wasp
#

interesting, i've not had it not work personally, though outside of doing testing, i rarely use it

lilac bronze
#

Didnt someone said that Grimm only had 50% to drop anything or I just read the old notes to fast on boss rush

late sphinx
#

yeah

#

50% chance

#

is bug

buoyant wasp
#

don't really know exactly that it's 50%, but that's the closest we can guess. HK has the same issue. And there is a weird bug with dream bosses where sometimes the screen fades to white/black and gets stuck.

solemn rivet
#

okay

#

it's working!!!

hazy sentinel
#

but will it blend

solemn rivet
#

I'd like to thank once more @leaden hedge, @buoyant wasp, @rain cedar and @vale zenith for their help - without you all this mod would not be possible

buoyant wasp
#

btw, if you want to run BonfireMod, you need to grab the 1.2.2.1-9 version of the API (the beta one i posted last night). It has a few fixes that we found while debugging bonfire. the 1.2.2.1-6 (the one on gdrive) won't work

#

actually, lemme see if i can just update gdrive. I did a boss rush and a rando on -9, both seemed to work fine

#

so

#

@rain cedar or @leaden hedge or @dapper folio - whoever has upload perms to gdrive, if you would be so kind as to upload this, that'd be great. Thanks.

solemn rivet
#

I have

#

I have

hazy sentinel
#

I have

#

also can bonfire mod still be broken

solemn rivet
#

oh

#

forgot to implement anti-verulean maneuvers

buoyant wasp
#

i think you broke permissions since now it doesn't show at all ๐Ÿ˜‰

solemn rivet
buoyant wasp
#

make sure the zip is set to "anyone with the link can view"

hazy sentinel
#

what will you pay me if i still break the mod

solemn rivet
#

wth

buoyant wasp
#

anyone at UC Santa Cruz

#

lol

solemn rivet
#

I have no idea why it's set up like that

#

maybe SD changed something and it applied to all his folders?

hazy sentinel
#

maybe dargons goes to uc santa cruz

#

really makes you think

solemn rivet
#

dunno if I should just change it tho...

hazy sentinel
#

gradow u didn't answer my question

solemn rivet
#

I'll pay you by adding you to the credits

hazy sentinel
#

"Lead Breaker"

solemn rivet
#

"lead guy-who-does-his-very-best-to-make-sure-everything-is-breakable"

#

for now I changed sharing permissions to "anyone with the link can view"

#

if SD complains I'll change it back

#

@dapper folio just tagging you so you know what's going on

buoyant wasp
#

cool, it's viewable now, thanks

lilac bronze
#

Does Blackmoth mod work or is the api just screwing with me

solemn rivet
#

it should work

#

didn't try on newest api/game ver tho

#

but it should

#

what's wrong?

lilac bronze
#

I think I should just recheck my files from steam then reapply it again.. might have screw it up

#

The game just dont wanna start that is all

solemn rivet
#

does the game even start, or does it crash on start?

lilac bronze
#

crash at start

solemn rivet
#

weird

#

just a sec, lemme try it here

lilac bronze
#

But I will recheck the files again and see how it goes

#

I was messing around with Lightbringer mod yesterday, and I though I reapplied right backup.. but yea.. I think I should just let steam do it

buoyant obsidian
#

Yeah verify game files on Steam

solemn rivet
#

it works here

lilac bronze
#

verified the game files and managed to start it, but the moment I dash the knight wont stop haha..
Not sure if it because I changed the keybind on my ps4 controller or am I using a wrong version of said mods

buoyant wasp
#

infinite dash!

solemn rivet
#

eh

#

lemme check, I only checked if the game launched properly

#

hahahahahaha

#

love this bug

#

okay, I'll fix it

lilac bronze
#

Tiny ant gotta go fast!

solemn rivet
#

maybe the new patch has changed dash?

#

sigh

lilac bronze
#

Well I can wait no rush. Was just in the mood for blackmoth + steel soul that is all

#

1.2.2.2, might change some codes as well. Sure it is in beta so far but who knows it will come out

solemn rivet
#

they changed some charms

#

charm32 is now charm31

buoyant obsidian
#

you're joking

solemn rivet
#

that's Quickslash

#

no

buoyant obsidian
#

They switched Quickslash and Dashmaster?

solemn rivet
#

wait

#

nvm

#

I'm the one who switched them

buoyant obsidian
#

Lol

buoyant wasp
#

hmm. I think i'm going to change the events a little in the api to log when a mod subscribes to an event so that it's easier to see when that happens using custom event accessors....though really i need to work on IL weaving first ๐Ÿ˜ฆ

dapper folio
#

OK, so what's going on? something about permissions?

buoyant wasp
#

gradow uploaded the newest api version for me (cause i don't have perms), but when he did initially it said that only folks at UC could view with the link

#

so he wasn't sure if he did it right or not

solemn rivet
#

I changed it to anyone with the link can view

#

this is how it was before

dapper folio
#

how what was? the mod file?

#

the drive link pinned here is a view link for all of the modding folder

solemn rivet
#

no, that was the API

#

Wyza asked me to update it

#

so I updated it and posted a link here

#

but no one could access it

#

so I looked into permissions

lilac bronze
#

Was it because speedrun.com was linking towards it as well or what

dapper folio
#

that's also a view link

#

eh, whatever, it's solved now

solemn rivet
#

I just tagged because I'm not comfortable changing permissions without your permission

dapper folio
#

@buoyant wasp dm me which email you want to have editing privileges

solemn rivet
#

found the error

#

sadly, it's api-side

#

the new version of the api accidentally wrapped this.dash_timer += Time.deltaTime; inside the check for DashVelocityChange hook

#

so ...

#

I can correct it mod-side

#

but if I do so, every mod that eventually uses this hook will have to remember to add that line at the end

#

so I think it'd be best to fix that api-side

buoyant wasp
#

@solemn rivet - just send me the code change from dnspy (what it is currently and what it should be) and i can fix it this evening (in about 5 hours) when i get off work.

solemn rivet
#

oops

#

umm

lilac bronze
#

Want me to check it with blackmoth?

solemn rivet
#

it's literally something like```csharp
Vector2 vector = ModHooks.Instance.DashVelocityChange();
if (vector.x != 0f || vector.y != 0f)
{
this.rb2d.velocity = vector;
return;
}
other things;
this.dash_timer += Time.deltaTime;

#

which I changed tocsharp Vector2 vector = ModHooks.Instance.DashVelocityChange(); if (vector.x != 0f || vector.y != 0f) { this.rb2d.velocity = vector; } else { other things; } this.dash_timer += Time.deltaTime;

#

@lilac bronze that should work for sure

#

I tried it here

buoyant wasp
#

k, i'll do more testing this evening and then release it as v-10.

solemn rivet
#

it's a pain to add mod-side too

#

because dash_timer is private

#

yeesh

lilac bronze
#

@solemn rivet OK, I will test run this API, and notify if something odd comes up

solemn rivet
#

thanks!

buoyant wasp
#

it was 99% likely it was a simple copy/paste error.

#

hence the need to figure out IL weaving so that most of the hooks get put in automatically when we build the API rather than by hand. reducing error and all that ๐Ÿ˜‰

solemn rivet
#

I figured so

fair rampart
#

how 2 install bonfire m0d?

solemn rivet
#

do you have the api installed?

#

@fair rampart figured it out?

fair rampart
#

noPE

#

im horrible at modding stuff xD

#

dont even know what API is

solemn rivet
#

do you have the modding API installed?

#

ok

#

in the pins you should find a gdrive folder

fair rampart
#

seen dat

#

then what

solemn rivet
#

wait

#

oh, no, nvm

#

ok

#

download the Modding API from there

fair rampart
#

modding API lets se

#

see*

#

err

#

which of these

solemn rivet
#

it's literally called Modding API

fair rampart
#

idontseeit

young walrus
#

helps to have that in list view so you can actually see shit

fair rampart
#

oh i see it

#

now

#

so i download the modding API?

solemn rivet
#

yup

#

there should be install instructions in the readme

young walrus
#

think of the modding API as the base that other mods sit on

solemn rivet
#

^

young walrus
#

you need the base for them to work

fair rampart
#

oops

#

didnt mean to post that

lilac bronze
#

@solemn rivet Blackmoth working great so far, just wish we gain soul on dashing attacking compare to the horrible weak nail ๐Ÿ˜‹
But I guess we dont really need soul in the end unless to heal, if dashing become strong as Lightbringer mod
So far more fun then Lightbringer sorry @buoyant obsidian ...
Only wish I had is that I wish more charms would change dash attacking, to more viable gameplays. Lightbringer was pretty weak in that even thou some charms improved it.

solemn rivet
#

well, some charms do change dash

#

not a lot, but some

lilac bronze
#

Yea I read the readme

buoyant obsidian
#

Ouch my self esteem

lilac bronze
#

Haha

solemn rivet
#

in earlier versions I changed the game's text to show that, but I haven't gotten around to doing that rn

#

don't badmouth Lightbringer - I only made Blackmoth as a sort of a homage to it

fair rampart
#

err

#

i read the readme

#

it doesnt really tell me anything that i can understand LOL

solemn rivet
#

okay

fair rampart
#

me: "english please"

young walrus
#

copy the contents of the ZIP folder to the .exe's location

solemn rivet
#

do you know where the game's root folder is?

fair rampart
#

yeah ill get that real quick

lilac bronze
#

Only "problem" I had with Lightbringer is that on close combat it checked the nail, thus you did weak damage. So to "bypass" it you had to get the charm that made lance on both side and having to have your back to the enemy to show the real strength

fair rampart
buoyant obsidian
#

Mmm yeah that glitch was kinda annoying, I think I can fix it though

solemn rivet
#

yup

lilac bronze
#

@buoyant obsidian is it normal for upwards lance to do less then "normal" ?

solemn rivet
#

just drag and drop everything from the zip there

fair rampart
#

okay but real quick question

buoyant obsidian
#

The upwards lance does normal lance damage, you were probably hitting them with your sword though

fair rampart
#

will this affect my normal save?

#

i want to begin a new save fil

#

file*

#

with the mod

solemn rivet
#

well, yeah

fair rampart
#

damn

solemn rivet
#

you should always start a new save with any mod

fair rampart
#

alright

solemn rivet
#

because it's always the safer alternative

fair rampart
#

imma keep a backup of my other save JIC

#

...is there any way to do that?

buoyant wasp
#

you should always backup your saves, and never use an existing save when loading a mod

solemn rivet
#

backup? Sure

fair rampart
#

where can i find the files o.o

buoyant wasp
#

mods can and often do make permanent changes to any save they load

solemn rivet
#

appdata/locallow/team cherry/hollow knight

young walrus
#

app data/local low/ team cherry

#

that

#

^^gradow

buoyant wasp
#

%appdata% i think works better?

solemn rivet
#

bonfire mod changes saver irreversibly

fair rampart
#

so %appdata%

#

right>?

solemn rivet
#

(unless you edit your save, ofc)

#

yeah

young walrus
#

there's a "users/.../" in there too i think

solemn rivet
#

should be a hidden folder on your user's main folder

fair rampart
young walrus
#

i just have a folder shortcut on my desktop

#

that's the one

fair rampart
#

this if im not mistaken right

young walrus
#

just create a folder in that one

buoyant wasp
#

yup, that's it

young walrus
#

and move "user1.dat" to it

#

that's your save file

fair rampart
#

is it good that i keep the folder inside

solemn rivet
#

complete path is <drive letter>:\users<user name>\appdata\locallow\team cherry\hollow knight\

fair rampart
#

this same folder?

lilac bronze
#

@buoyant obsidian I did enjoy Lightbringer thou, it made you pretty strong with the whole long range. Most I enjoy was that the charms gave some funny effect like the timewarp charm effect.. haha gotta go fast, but sometimes hard to platform jumping

buoyant wasp
#

there is also user2.dat, user3.dat and user4.dat

young walrus
#

yeah

#

that's fine

buoyant wasp
#

(for slots 2,3,4)

young walrus
#

^

fair rampart
#

only have user 1 though so ill just copy that

buoyant wasp
#

yeah, just means you only had the 1 save file

#

if you had just 1 save and it was 3rd on the list in game, it'd be user3.dat

fair rampart
solemn rivet
#

I just have a backup folder and drag everything important there

young walrus
#

the other user1 files there are just backup saves the game makes automatically

buoyant wasp
#

yup

#

you're good

solemn rivet
#

okay

fair rampart
#

just being cautious real quic

solemn rivet
#

after installing the API, donwload and install the bonfire mod the exact same way

fair rampart
#

its okay if i keep backup there right?

solemn rivet
#

yupyup

fair rampart
#

okay thanks

lilac bronze
#

Never tested bonefire mod yet, how viable is a "magic" build?

buoyant wasp
#

yup. the game (out of the box) only looks at user1-4.dat (and user1-4.dat.bak*) in that one folder, it doesn't look in subfolders or for files with other names

solemn rivet
#

somewhat

young walrus
#

and overwrite the .dll files it'll ask you if you want to overwrite

solemn rivet
#

I still can't get fireball to work

#

but all other spells work fine

fair rampart
#

uh oh

young walrus
#

replace

#

that's the mod

fair rampart
#

oh alright

solemn rivet
#

^ @lilac bronze

young walrus
#

you're installing that over the base file

fair rampart
solemn rivet
#

if you ever want to go back to vanilla, just ask steam to validate game's files

young walrus
#

it's in the data folder

solemn rivet
#

what's invisible?

fair rampart
#

ohhhh

#

i get it now

buoyant wasp
#

yeah, that folder you copied has the full tree in it, so it placed stuff down in lower folders

lilac bronze
#

@solemn rivet Nice, will try it after blackmoth. I do know "str build" with Unbreakable Strength, Mark of Pride, Quickslash, Longnail. Is pretty damn OP

buoyant wasp
#

so you don't have to figure out where to put stuff

solemn rivet
#

it is, tomoya, but it's a lot of fun as enemies scale with you

fair rampart
#

wait how do i return to vanilla?

young walrus
#

verify game files

#

though steam

#

through*

fair rampart
#

alright

#

i actually dont want to install any mods atm

#

not until i get 106%

#

but i think i get it

#

if i have any trouble ill be back xD

young walrus
#

if all you did was install the API mod, it doesn't change the game

solemn rivet
#

ok

young walrus
#

not really anyways

solemn rivet
#

yeah

fair rampart
#

yeah just installed the API

solemn rivet
#

nothing that matters anyway

fair rampart
#

nothing else

young walrus
#

then you're fine

#

you can play the vanilla game

#

just don't install other mods yet

fair rampart
#

ty ty ;D

#

@young walrus is it bad that up until now i thought your profile pic was salubra

lilac bronze
#

Dont use the debug mod unless you wanna "cheat"

fair rampart
#

i didnt actually look directly at it

#

i just assumed it was salubra

#

xD

young walrus
#

....how is it salubra?

fair rampart
#

i have no idea

young walrus
fair rampart
#

my mind just pasted a picture

young walrus
#

lol

fair rampart
buoyant obsidian
#

Lightbringer has been updated with several bugfixes, testing appreciated.

solemn rivet
#

sorry, am afk

buoyant obsidian
#

Things that might have broke: Non-Steam version, damage.

solemn rivet
#

quick question about the api: is there anyway to check if any other mod is running?

#

I want to make bonfire compatible with bossrush

#

so I need to add a check if boss rush is running

#

is it possible?

rain cedar
#

Yes there is a loadedMods list

solemn rivet
#

oh, nice

#

how can I access it?

buoyant wasp
#

ModHooks.Instance.LoadedMods (or something to that effect)

solemn rivet
#

hm...

#

okay

buoyant wasp
#

note that the list won't be populated until all the mods are loaded

solemn rivet
#

I'll try a few things as soon as I get home

buoyant wasp
#

so you can't do anything during the Initialize/constructor phase

solemn rivet
#

it's fine, I only need to run the check during gameplay

#

I'll just allow levelling up via the pause menu if bossrush is loaded

buoyant wasp
#

how will you handle them getting the geo to level up?

#

cause right now i think kdt is using relics (like seals) to fake shinies

timber gale
#

So I died in crystal guardian 2 and was teleported to kings pass in the boss rush?

buoyant wasp
#

yup

#

it's a bug

#

i think he's working on a way to fix it

#

apparently that room doesn't exist or something weird

#

also, that's the end of your run now

young walrus
#

solution: don't die

timber gale
#

Oh well

#

At least I beat watcher knights

lilac bronze
#

@buoyant obsidian I will test as soon I am done messing around blackmoth. Is there any specific location/event you want the most to test? As I have a 100% Lightbringer to mess around with

buoyant obsidian
#

Nope, just killing stuff

lilac bronze
#

OK, will come back after blackmoth

leaden hedge
#

the problem with crystal guardian 2 is there isn't actually a variable tracking if he is dead at all

#

you have to check a variable in the room itself, but obviously if you aren't in the room you can't check it hollowface

buoyant wasp
#

can you set an internal variable to the last selected boss and then clear the variable when the boss dies?

leaden hedge
#

the current boss is always tracked

#

and its only incremented if you teleport with the parameter true

buoyant wasp
#

so, then possibly add a check to say "if boss == CG2 and player location != CG2's room, teleport to CG2?"

ruby rampart
#

Does anyone know if Bonfire and Lightbringer are compatible?

hazy sentinel
#

don't think there's an API lightbringer so no

quiet heart
#

Will Lightbringer affect my current save?

hazy sentinel
#

u bet

#

you can probably revert to vanilla and it nothing will have changed

#

but backup your saves just in case

quiet heart
#

How do I revert, anyhow? Do I have to reinstall?

solemn rivet
#

@buoyant wasp I have a dictionary that keeps track of defeated bosses and rewards player with free levels

buoyant obsidian
#

Lightbringer will fuck up your saves

#

To revert, verify game files on Steam

quiet heart
#

Alright. I was planning on backing up anyway.

#

Also, good to know. Thanks

buoyant wasp
#

If you're using the Mod API, then you can backup/restore hollow_knight_data/Managed/Assembly-Csharp.dll. It only changes that 1 file (as far as vanilla dlls are concerned)

#

(if you don't want to use the verify feature.)

quiet heart
#

Well, I'm not sure what all that means

hazy sentinel
#

backup 1 file

solemn rivet
#

@buoyant wasp can API save <string,string> dictionaries?

#

I'm currently working on allowing bonfire and bossrush synergize

#

I can check if bossrush is running just fine

#

now I just need to set it to reward player with free levels for beating bosses

buoyant wasp
#

yes

#

there is Int, Bool, String, and Float dictionaries for both save level and global level saving

#

they follow the same nameing: IntValues, BoolValues, StringValues, and FloatValues

solemn rivet
#

got it

#

for now I'll try giving the player 4 levels per boss

#

"for now" meaning "when I have the free time to figure out how to add, fill out and save a list using the API"

buoyant wasp
#

so, need some answers to some legal grey area. I've made a ton of progress in autopatching Assembly-CSharp.dll using a tool called MonoMod which lets me basically define overrides to existing code.

great, cool. for most methods we're calling stuff at the beginning or end of the method or replacing it entirely.

for some though, we put in our hooks in the very middle of the method. The patcher really doesn't handle that kind of thing that i can find. The "best" approach would be to simply take the method we're injecting stuff into the middle of, export it as a copy in the patcher and change it. Problem is, that basically means the source for that specific method is in the repository in its entirety. the whole class isn't, but the method is.

obviously we all decided that we wouldn't host Assembly-CSharp publicly, and i think for all parties involved, that's best. but what about these spefic methods? that area is more grey...

solemn rivet
#

can't you just give a line reference, or something like that?

buoyant obsidian
solemn rivet
#

everyone except 753

#

privileges

buoyant wasp
#

well, there's a whole other world I can get into that would let me edit specific parts of a method, but that's really getting into editing the IL for the method

#

it's doable, but a great deal more complicated

#

might just leave these few functions as ones that have to be manually done

#

if I can make it so all but 3-4 have to be done by hand, that might be good enough

solemn rivet
#

I'm not sure on the legalities

#

@leaden hedge are you somehow removing relics from the inventory in boss rush? If so, I need to implement a new free levels system

solemn rivet
#

okay, hooking bonfire on to PlayerSetBool broke bossrush (bosses no longer drop the shinies, and can't skip)

#

I'll take a look at the hook tomorrow

#

I think what's going on is that the hook doesn't know how to handle multiple subscriptions

copper nacelle
#

@leaden hedge are you supposed to pick up normal drops from bosses for the boss rush?

buoyant wasp
#

not really @copper nacelle

#

basically, each boss drops 3 shinies, you can pick up 1 or 2 (if you kill it without getting hit).

#

the first boss will drop city crest, but it does nothing and doesn't count towards your shinies

#

grimm will drop his chest item, but again, it does nothing

copper nacelle
#

cool

#

thanks

buoyant obsidian
hazy sentinel
#

LITTLE HEAD MODE

buoyant obsidian
#

LITTLE KNIGHT MODE

hazy sentinel
#

is it still normal HP

buoyant obsidian
#

Yeah

#

I wanted it to be like 2x but the vid would be too long

buoyant wasp
#

did you shift the sound at all? it seems smaller

#

also, i love the choice is music

buoyant obsidian
#

I fooled around with it as much as I could

buoyant wasp
#

i have no idea how to make this mod viable, but i love it

buoyant obsidian
#

Getting there was hell since I couldn't even jump into the arena

#

I'll probably give him infinite jump

#

so he's like a little bug flying around

buoyant wasp
#

permafloat?

#

though infinite jump probably is better

solemn rivet
#

Best mod? Best mod

buoyant wasp
#

so here's the question, have i just pulled off some increadible feat in making the api easier to do, or have i broken it beyond all functionality...

#

probably the latter

buoyant obsidian
#

Here's a fun little scale mod to play around with. Hold Q to shrink and hold E to grow. Your damage changes based on your size.

hidden gull
#

Oh nice, almost like being Ant Man

buoyant obsidian
leaden hedge
#

@solemn rivet the relics are used to determine if you picked up items 1, 2, or 3 ( trinket1 / 2 / 3 )
so unless you use trinket 4 hollowface

buoyant obsidian
buoyant wasp
#

1.2.2.1-11 (Bleeding Edge Experiemental) - Looking for a few modders/players who want to test this out. This should be functionaly identical to 1.2.2.1-9 (other than the fix from gradow). The big difference is how this version was built. having only had to manually place like 4 or 5 of the hooks instead of all of them and doing it all in 1 step instead of 4. Of course anything where you majorly change how you apply stuff can cause bugs. So, feedback is welcome. Install some mods (randomzier? bossrush?) and see if they work. Thanks in advance.

late sphinx
#

what is bleeding edge

leaden hedge
#

its bleeding edge

#

are you ESL?

late sphinx
#

ooooohhhhh

#

ok

late sphinx
#

tfw you accidentally beat radiance without taking damage in boss rush

late sphinx
#

@leaden hedge hey quick question
does intelligence stat in bonfire mod affect vengeful spirit now

leaden hedge
#

I'd assume no

late sphinx
#

cool and good

#

i thought that said so

#

and not no

#

nhhhhhhhhhhhhhhhhhhnsf

#

also yeah it doesn't

#

but i noticed a weird thing

#

where

#

when i fired vengeful spirit more than once in quick succession

#

the spirit turned into the powered up one from shaman stone

#

after the first one

#

i swear this has never happened before other than with bonfire

#

and it only happened in the fight with the thing in astral mound

#

however you spell it

noble trout
#

do i have to uninstall the normal api to install the bonefire api and use it?

#

i will assume yes

#

also will the 1.2.1.4 work for 1.2.2.1?

late sphinx
#

i kinda just put the bonfire dll in the mods folder and it worked

noble trout
#

but will 1.2.1.4 work for 1.2.2.1?

#

i already uninstalled the normal modding api

#

@leaden hedge

#

sorry for the ping but i have limited internet time and want to install it before i will go offline so i could play it

#

guess not it still crashes

#

would anyone want to see the crash report?

#

nvm it might work with the normal api installed the game didnt crash on start

#

but i cant check now

leaden hedge
#

sorry, i was afk

#

you need the version correct api

noble trout
#

yeah

#

where can i find it?

leaden hedge
#

search from: wyza has: file should find it

noble trout
#

what

leaden hedge
#

do you not know how to use discord search

noble trout
#

nah

#

trying to work it out

leaden hedge
noble trout
#

downloading it

#

where to put it?

leaden hedge
#

in hollow_knight_Data/managed/

noble trout
#

k

#

it doesnt crash on start but the mod doesnt work

#

wait im trying something else

solemn rivet
#

Bonfire should be 1.2.2.1

#

Also, the (API) refers to the fact that this bonfire mod compilation is compatible with the modding Api, not that it's its own API

#

@leaden hedge lucky me, I'm using trinket4

#

Bonfire mod should go inside the /mods/ folder with the modding Api installed

leaden hedge
#

oh yeah gradow, if you give me your GUI code, ill port it to canvas for you

#

so you can make it look like a vanilla ui with normal controls

solemn rivet
#

Oh!

#

I'll take that offer, thank you very much

#

Just a second

leaden hedge
solemn rivet
#

this is way better than I was expecting!

#

it's more than fine!

leaden hedge
#

if anyone asks I'm working on fixing grimm and thk drops hollowface

solemn rivet
#

hahaha

#

damn, I really need to learn Canvas

leaden hedge
#

although you've gotta do animations / whats selected manually still

#

and you do something like

CanvasUtil.createFonts();
canvas = CanvasUtil.createCanvas(RenderMode.ScreenSpaceOverlay, new Vector2(1920, 1080));
text = CanvasUtil.createTextPanel(canvas, "Text in the center of the screen", 24, TextAnchor.MiddleCenter, new Vector2(300, 50), new Vector2(0, 0));

to use it

solemn rivet
#

thanks!!!

leaden hedge
#

theres still some complicated objects to add, like scroll rects

#

but assuming all you want is images, labels and buttons hollowface

solemn rivet
#

I trying to understand this, and holy shit, is it harder to understand than IMGui!

leaden hedge
#

whats complicated it about it, is it the fact 10% of that file is a comment explaining how rectTransform works hollowface

solemn rivet
#

that's basically the only part I understood hollowwoke

leaden hedge
#

clicking that does it

solemn rivet
#

that just goes to show that this really wasn't meant to be edited like this

buoyant wasp
#

@leaden hedge - if that util is common enough (haven't looked at it), would it make sense to add it to the API?

#

maybe as an abstract class

leaden hedge
#

its pretty generic

#

and its all static functions that return a gameobject

buoyant wasp
#

hmm, k. this evening i'll take a look and see if it's something to add. I want to try and add more GUI related stuff to the API to help simplify adding mod elements where possible

leaden hedge
buoyant wasp
#

hah, true, but perhaps that isn't entirely necessary ๐Ÿ˜‰

#

I do want to figure out if it's possible to somehow keep the intellisense stuff from the XML comments in the API now that we aren't hand editing the assembly. Just haven't figured that part out quite yet

echo fulcrum
#

hi just looking for some help, im just wondering how to use the boss rush mod. It seems really cool, and i ve downloaded it and all, but i just cant figure out how to use it. Ive put the Hollow_Knight_data file in the hollow knight folder in steam apps, and replaced all the files, but it doent come up when i open a new hollow knight save file.

leaden hedge
#

you need to download the api from the google drive

#

then boss rush goes in hollow_knight_Data/managed/mods/

echo fulcrum
#

like this?

young walrus
#

download the modding api

#

and install that

#

boss rush needs the api mod to work

echo fulcrum
#

o ok thx a lot

leaden hedge
buoyant obsidian
#

Holy shit that looks good

solemn rivet
#

all praise our lord and saviour kdt

leaden hedge
buoyant obsidian
#

I'm not a big fan of the fade-in text

leaden hedge
#

pretty sure thats how shops work in vanilla

buoyant obsidian
#

I'm at Salubra's right now and nothing fades in

leaden hedge
#

I tested it on iselda

#

I feel like I remember it fading

#

maybe im fucking high though

#

wtf they don't

buoyant obsidian
#

Nope

leaden hedge
#

why'd I waste my time programming this

buoyant obsidian
solemn rivet
#

753 would you mind if I ported this to API?

buoyant obsidian
#

Go right ahead, that's a great idea actually

#

I'll gather the code for you, these all go at the beginning of each method:
_
_

#

HeroController Update():

#
if (this.scaleMod <= 0.1f)
        {
            this.scaleMod = 1f;
        }
        else if (this.scaleMod <= 0.25f)
        {
            this.scaleMod = 0.25f;
        }
        else if (this.scaleMod >= 3f)
        {
            this.scaleMod = 3f;
        }
        this.scaleTime += Time.deltaTime;
        if (this.scaleTime >= 0.004f)
        {
            this.scaleTime -= 0.004f;
            if (Input.GetKey(KeyCode.E))
            {
                this.scaleMod *= 1.02f;
            }
            if (Input.GetKey(KeyCode.Q))
            {
                this.scaleMod *= 0.98f;
            }
            if (Input.GetKey(KeyCode.W))
            {
                this.scaleMod = 1f;
            }
            if (Input.GetKey(KeyCode.R))
            {
                this.scaleMod = .25f;
            }
            if (Input.GetKey(KeyCode.T))
            {
                this.scaleMod = 0.5f;
            }
            if (Input.GetKey(KeyCode.Y))
            {
                this.scaleMod = 2f;
            }
            if (Input.GetKey(KeyCode.U))
            {
                this.scaleMod = 3f;
            }
        }
        this.transform.SetScaleX(this.scaleMod * (float)Math.Sign(this.transform.GetScaleX()));
        this.transform.SetScaleY(Math.Abs(this.scaleMod) * (float)Math.Sign(this.transform.GetScaleY()));
#

HeroController Attack():

#
this.playerData.nailDamage = 5 + this.playerData.nailSmithUpgrades * 4;
        this.playerData.nailDamage = (int)((float)this.playerData.nailDamage * this.scaleMod);
        PlayMakerFSM.BroadcastEvent("UPDATE NAIL DAMAGE");
#

HeroController LeaveScene():

#
        this.scaleMod = 1f;
#

HeroController HazardRespawn():

#
    this.scaleMod = 1f;
#

HeroController CharmUpdate():

#
    this.scaleMod = 1f;
#

And the float scaleMod needs to be created somewhere, I made mine inside HeroController but I dunno how that would work for API

#

If something isn't working tell me I might've forgot something

#
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using GlobalEnums;
using UnityEngine;

public partial class HeroController : MonoBehaviour
{
    public void Update10()
    {
        if (this.isGameplayScene)
        {
            this.OutOfBoundsCheck();
        }
        float scaleX = this.transform.GetScaleX();
        if (scaleX < -1f)
        {
            this.transform.SetScaleX(-Math.Abs(this.transform.GetScaleX()));
        }
        if (scaleX > 1f)
        {
            this.transform.SetScaleX(Math.Abs(this.transform.GetScaleX()));
        }
        if (this.transform.position.z != 0.004f)
        {
            this.transform.SetPositionZ(0.004f);
        }
    }
}
#

That method needs to be replaced with this completely. We want the absolute value of the scale, nothing more.

leaden hedge
buoyant obsidian
#

Damn that's nice

solemn rivet
#

the only way to make it even better would be to add a "pafanada" every time you try to level up

#

and a "mobadis" when you actually level up

hazy sentinel
#

butimus geo when you level up

pure lantern
#

has there been a bossrush update for grimm troupe?

#

Sorry if it was mentioned before

buoyant wasp
#

it's pinned

#

and really it's the only working bossrush there is

#

๐Ÿ˜‰

#

it has a few minor occasional bugs, but by and large, it's in pretty good shape

#

except when gradow goes and steals kdt's time

pure lantern
#

gradow?

timber gale
#

In the future, could you add a "continue boss rush" button? Or would that require a rework

#

Like if you quit in the middle

buoyant wasp
#

honestly we were talking about disabling saves all together

#

the whole thing is only designed to take 25-35 minutes

#

but as of right now, no resume ๐Ÿ˜‰

timber gale
#

I guess I'll have to stop being awful ๐Ÿ˜› i was more thinking of it in relation to the CG2 issue

pure lantern
#

Took me 3 hours and I still quit midway through

buoyant wasp
#

eh, CG2 is a bug

pure lantern
#

I need to git gud

timber gale
#

Objectively true, although some could argue he's half crystal

#

I think I may just use debug to disable my hitbox for cg2 as a current solution.

buoyant wasp
#

whatever floats your boat

young walrus
#

water

pure lantern
#

How does one go about activating the mod?

#

I put the file from the mod into the hollow knight folder, but I'm guessing that's wrong

young walrus
#

have you installed the API mod too?

pure lantern
#

That's a good point

#

What do I need to do with the API?

buoyant wasp
#

same thing

#

basically

#

copy the folder in the zip into the root folder of your game

pure lantern
#

First API, then mod?

buoyant wasp
#

doesn't matter really

pure lantern
#

Done it but the game crashes

young walrus
#

where did you install them?

#

what version of the game do you have?

pure lantern
#

latest version of game

#

installed into C:\Program Files (x86)\Steam2\steamapps\common\Hollow Knight

young walrus
#

and you overwrote what it asked you to?

pure lantern
#

yes

young walrus
#

which version of the API did you install?

pure lantern
#

1.2.1.4

young walrus
#

if your game is 1.2.2.1, you need to install that version

#

else it won't work

#

1.2.2.1 is current patch

pure lantern
#

will the 1.2.1.4 bossrush work with the 1.2.2.1 version?

young walrus
#

yes

pure lantern
#

thanks

#

works now, much appreciated

young walrus
#

๐Ÿ‘

buoyant obsidian
#

What's the best way to display text, let's say subtitles, in-game?

buoyant wasp
#

probably should talk to @leaden hedge - he's been doing a huge amount of work in that area recently

#

the bossrush code might be able to help you there

timber gale
#

I can't fight the radiance in boss rush

rain cedar
#

You have to fight everything else first

timber gale
#

I did

#

It had a weird issue at the end of nightmare king grimm where it wouldn't stop being black screened, so I assumed the over lay was still there and walked around hitting up. Then the menu came up but I still can't click on the radiance

rain cedar
#

Weird

timber gale
#

It seems that the boss rush menu is over the save/quit menu as well

rain cedar
#

That's not that big of a deal

solemn rivet
#

That's a known bug where after dream bosses the screen goes white /black and you have to go around pressing up, hoping to find an item

slate owl
#

Is there any guide about speedrunning the randomizer?

rain cedar
#

Speedrunning a randomizer?

#

You mean like set seed?

slate owl
#

Guide for races.

#

Like quick start up.

rain cedar
#

You'll almost always want to check salubra and sly after getting fireball

#

From there it really depends on what you got

young walrus
#

Go dark room to dream nail first, always

rain cedar
#

Hey, if it pays off you'll have like a 15 minute advantage

young walrus
#

And TC was kind enough to double the number of items over there too!!

rain cedar
#

Rushing there for two items or clearing crossroads for 9 items ๐Ÿค”

slate owl
#

Its not about the quantity, its about the quality.

buoyant obsidian
#

Yeah you generally want to go for the higher quality random items

#

pisses me off whenever I see streamers go get stuff like the compass or gathering swarm first

rain cedar
#

Oh yeah compass

#

10 items in crossroads

slate owl
#

Get vengeful spirit first or after?

#

I normally do:

#

Fury. Vengeful to get geo. Salubra. Sly. Compass.

#

Then not sure if worth going to hornet.

rain cedar
#

Hornet is a risk for sure

#

There's a ton of geo in greenpath, though

slate owl
#

Pretty sure you get enough from false knight.

rain cedar
#

That's fine for buying one thing, but if you're unlucky you need more

slate owl
#

I think going for fragile dude next is better.

buoyant wasp
#

depends heavily on what items you have

slate owl
buoyant wasp
#

hornet is totally viable if you have very little in the way of movement because at the very minimum, you need 350 from legeater

#

free-est of seeds

slate owl
#

Its a hard seed.

#

"hard"

buoyant wasp
#

hehe

#

hard doesn't meant the seed will be hard

#

hard means it can be hard

solemn rivet
#

3hard5me, from plz nerf

buoyant wasp
#

that said, as sean just said in another channel, getting claw early can be your bane

#

cause now a huge amount of the game has opened up to you, so now you have a ton of choices on where to go

#

which might not be great

slate owl
#

Wtf. Can you go fungal waste with claw alone?

buoyant wasp
#

you have to go around through queens station

#

but yes

slate owl
#

...

buoyant wasp
#

on the upshot

rain cedar
#

Dirtmouth -> Howling Cliff -> Greenpath -> Fog Canyon -> Fungal Wastes

buoyant wasp
#

you can go get geo + hornet on your way

#

oh, right, HC too

slate owl
#

Ok, claw early sucks...

rain cedar
#

You might also have to do the joni's blessing room in the dark

buoyant wasp
#

oh, yeah, that's fun

slate owl
#

Could be interesting to know fastest possible seed.

buoyant wasp
#

mickely has done like a 48? or a 42? something like htat

rain cedar
#

Old version so that seeds not gonna be valid anymore

#

But it's fast

#

I just brute force checked the first 50k seeds for claw, crystal heart, dream nail and a level 2 spell in crossroads

#

This one had the least geo required

buoyant wasp
#

lol

slate owl
#

Sprintmaster + Dash?

rain cedar
#

Sprintmaster is garbage

buoyant wasp
#

in a race, if you have nothing else, no reason not to use it imo

rain cedar
#

Yeah

#

Just not if you have to buy it

slate owl
#

Why is it bad?

rain cedar
#

It's 20% move speed while grounded, not dashing or anything

buoyant wasp
#

cause you spend a huge amount of the time in the air or dashing

rain cedar
#

It does almost nothing

slate owl
#

It doest affect dash?

buoyant wasp
#

nope

slate owl
#

Thats sad.

buoyant wasp
#

sprintmaster is purely ground run speed

knotty grove
#

Sprint master is purely useless

buoyant wasp
#

no, not true. if you have it for free, have no other decent charms, then it's worth equipping, it will speed your run up in a small way. it's probably not going to be used

slate owl
#

Any chance of making dream gate more common early on?

buoyant wasp
#

i don't see a reason to do so personally

#

i already see it in a fair number of seeds

young walrus
#

Dream gate as first pick up is dream nail

#

Why give it early when there's only 3 items needed to win?

rain cedar
#

Three items, only one of which is unique

timber gale
#

So I beat the hollow knight in boss rush and no items spawned, which i believe is a known glitch. Then I started a new run, and no items spawned when I killed false knight.

buoyant wasp
#

i haven't see that happen at false knight before, but you could just try doing a full exit/start

timber gale
#

Trying that rn

slate owl
#

About the randomizer, what about unlocking stag station?

timber gale
#

Ok did it again and it workrd

buoyant wasp
#

what about it?

slate owl
#

I mean, instead of granting a random charm or upgrade, it could unlock a stag station.

solemn rivet
#

sounds... Interesting?

buoyant wasp
#

that'd be....weird and would add significant complexity to the logic I'd think...though maybe not, still, not sure if that would make it more or less fun.

solemn rivet
#

yeah

#

more of a gimmick

buoyant wasp
#

i think it would make routing much harder, IE raise the bar of who could successfully complete it

solemn rivet
#

like "oh, you can't exit crossroads... Now you can!"

#

and you could go to extremely hard places very early on

#

like fighting flukemilf with nail0 and no spells

#

wait, there's no stag there

#

but, anyway

buoyant wasp
#

inb4 claw is at beast den stag

solemn rivet
#

oh

#

thinking the other way around

#

yikes

buoyant wasp
#

yeah

#

if charms can be stags, stags would have to be charms

solemn rivet
#

stags giving items is a no-go for sure

buoyant wasp
#

it'd suck

buoyant wasp
#

staring at IL code makes my brain hurt

#

@leaden hedge just did a BR where i killed false knight with 0 hits taken, but only could pickup 1 charm

buoyant wasp
#

@rain cedar so now that kdt has cracked the whole controller UI thing, any chance of the randomizer's new game stuff usable with controller?

rain cedar
#

I hate everything about canvas but I'll look into it anyway when I can find the motivation

buoyant wasp
#

lol. k

buoyant wasp
#

well, that's...interesting

#

Leg eater only has 2 items

rain cedar
#

Look in the log to see what was supposed to be there

#

That's really odd

buoyant wasp
#

what's the 350 geo one ?

#

is that fragile heart?

rain cedar
#

Probably

buoyant wasp
#

its supposed to be defender's crest

#

looking further down, it seems like grimmchild is what fragile heart is. Wondering if it's something weird with that

rain cedar
#

Wait so is it defender's crest or grimmchild?

#

I'm confused now

#

Fragile heart is the one that's missing, right?

#

Oh I see what you mean, nevermind

buoyant wasp
#

Fragile Heart's location should have been defender's crest

#

Grimmchild would be fragile heart

rain cedar
#

Yeah, I got that

#

I don't see what would cause that

buoyant wasp
#

also, this seed is trolly beyond anything i've seen

rain cedar
#

What's your seed?

buoyant wasp
#

225888661 hard/classic

rain cedar
#

@rain cedar (So I can look at mentions later to find this)

#

I'll look into that tomorrow

buoyant wasp
#

np

rain cedar
#

Really strange bug

#

Could be game breaking

buoyant wasp
#

also, i was thinking that flukenest wouldn't ever be required without being able to get up to soul sanctum for the key

rain cedar
#

Luckily in this case you're not losing anything of value

buoyant wasp
#

but i ended up having to buy the key because fluke was the first movement item of dash :/

rain cedar
#

Yeah, but if you can get to flukemarm you can get to lemm and a couple relics

#

So it's not a huge issue to need 950

buoyant wasp
#

yeah, just didn't realize it was in the logic

#

so spent a while trying to figure out where else i could go with 0 movement and no VS/Wraiths

rain cedar
#

Well, at least now you know

buoyant wasp
#

indeed

bronze temple
#

Hey, I'm the MonoMod guy ๐Ÿ˜ƒ

@buoyant wasp Where exactly do you need to inject code? In the best case, we can avoid "injection" completely.
Regarding the legality issue: Copy-pasting a few decompiled methods to modify them never was an issue. I don't know what Team Cherry's stance is, though; it'd be best to just ask them :) Game devs are friendly people

#

(For example, Dodge Roll stopped obfuscating Enter the Gungeon just for us modders)

bronze temple
leaden hedge
#

all of the hooks have HookInfo that says in layman terms what it does and where code needs to be injected
so for instance

        [HookInfo("Called at the start of the DoAttack function", "HeroController.DoAttack")]
        public event DoAttackHandler DoAttackHook;

needs to inject code into HeroController.DoAttack()
everything else should just be in the Modding namespace

#

I'd also ask @rain cedar as he can probably answer your questions better than I can

bronze temple
#

Oh, that seems a lot more reasonable than hooking all field accesses ๐Ÿ˜…

#

I've yet to get my hands on the game

rain cedar
#

For field access it's luckily quite easy to hook because of how the game is made

#

It's almost always done through GetBool/GetInt/etc functions

#

So you can just hook those and have an easy way to tell when anything is accessed

bronze temple
#

that's good to know :) By the way, I just noticed that you're using GetField uncached. You can just create a (preferably readonly static) Dictionary<string, FieldInfo> FieldCache as GetField itself is quite slow

leaden hedge
#

thats vanilla code hollowface

rain cedar
#

Yep

#

I suppose we could try optimizing vanilla stuff

#

But the game runs pretty well already

bronze temple
#

free performance boost GWbinMmlol

#

... sorry for the late reply, network issues >.<

leaden hedge
#

don't look at the other vanilla code, like the equipped charms stuff hollowface

leaden hedge
buoyant obsidian
#

Reset tokens? awesome

hazy sentinel
#

u mean rancid eggs?

manic wing
#

nice

buoyant wasp
#

@bronze temple - Thanks for hopping in. Basically we already have the mod hooks in the game and working quite well thanks to previous modders. I've set about the task of trying to reduce the effort to mod new releases easier as up until now, it was all manually using dnspy to add everything. Alot of the hooks are called on the first or last line of a method, and thus were fairly easy to use monomod + _orig to script in. The ones where i've been doing IL manipulation (or trying to) is ones where the hooks happen somewhere inside the rest of the method.

#

There are about 6 or 7 of those left i think

rain cedar
#

I don't think you @ the right guy

buoyant wasp
#

whoops

#

fixed

leaden hedge
#

does editting text work for notifications

buoyant wasp
#

dunno, but @bronze temple just in case hollowface

bronze temple
#

Hi :D The edit didn't notify me.
Well, as I said before, I whenever I had to hook something inside the method, I got away with just copying the decompiled method.
Game devs (at least of the games I've modded) are very helpful and friendly, just ask them :)

#

I doubt that Team Cherry will pursue you legally for copying the code of 6 or 7 methods

buoyant wasp
#

yeah, probably. I always tend to err on the side of caution. OTOH, it's not uncommon for TC staff to come in here and be like "hey i heard there is a X mod, where do I get it to play it?"

bronze temple
#

Asked them on Twitter just to be safe

#

ยฏ_(ใƒ„)_/ยฏ

buoyant wasp
#

if @rain cedar is fine with it, then I'll do it that way. It'd be 10x easier than screwing with the IL code to make it work. I know for the Get/Set Int/Bool functions we basically copied those, to replace them with the GetInternal versions. though those were exceptionally basic methods so.

bronze temple
#

What exactly are you hooking? Could you please give me an example method before and after hooking in DM?

#

In the best case, we can figure something out that I can just drop into MonoMod to make our lifes easier :D

buoyant wasp
#

at work atm, so don't have access to any of the code. But for example there is something to this affect:

public void CharmUpdate() {
//Lots of Original/TC code to do stuff
ModHooks.Instance.OnCharmUpdate(); //so this needs to be called before this.playerData.UpdateBlueHealth()
this.playerData.UpdateBlueHealth(); //this is part of the normal code
}

vs alot of the other functions like this:(where i can use the orig_ approach)

public void Attack(AttackDirection direction) {
ModHooks.Instance.OnAttack(direction);
//All the rest of the function as normal
}
bronze temple
#

hmm, I wonder if you couldn't just hook UpdateBlueHealth to call OnCharmUpdate before orig_UpdateBlueHealth

#

as in, replace UpdateBlueHealth with a hook

rain cedar
#

There's other situations where it's not really possible to do something like that

buoyant wasp
#

yeah we have one in the Dash method where we are adding stuff smack in the middle to part of some if statements

#

for example

rain cedar
#

Yeah that's actually the example I'm getting right now

buoyant wasp
#

hah nice ๐Ÿ˜ƒ

#

the other ugly one is the save/load game events

bronze temple
#

Give me the ugly ones ๐Ÿ˜„

young walrus
#

#1 answer for "lines you won't hear at a bar"

buoyant wasp
#

lol

rain cedar
#
private void Dash()
{
    this.AffectedByGravity(false);
    this.ResetHardLandingTimer();
    if (this.dash_timer > this.DASH_TIME)
    {
        this.FinishedDashing();
        return;
    }
    
    //Check for velocity change with hook
    Vector2 vector = ModHooks.Instance.DashVelocityChange();
    if (vector.x != 0f || vector.y != 0f)
    {
        this.rb2d.velocity = vector;
    }
    else //Vanilla code for dash velocity
    {
        float num;
        if (this.playerData.equippedCharm_16 && this.cState.shadowDashing)
        {
            num = this.DASH_SPEED_SHARP;
        }
        else
        {
            num = this.DASH_SPEED;
        }
        if (this.dashingDown)
        {
            this.rb2d.velocity = new Vector2(0f, -num);
        }
        else if (this.cState.facingRight)
        {
            if (this.CheckForBump(CollisionSide.right))
            {
                this.rb2d.velocity = new Vector2(num, this.BUMP_VELOCITY_DASH);
            }
            else
            {
                this.rb2d.velocity = new Vector2(num, 0f);
            }
        }
        else if (this.CheckForBump(CollisionSide.left))
        {
            this.rb2d.velocity = new Vector2(-num, this.BUMP_VELOCITY_DASH);
        }
        else
        {
            this.rb2d.velocity = new Vector2(-num, 0f);
        }
    }
    this.dash_timer += Time.deltaTime;
}```
#

There's the dash one

young walrus
#

"check for bump"