#archived-modding-development
1 messages ยท Page 35 of 1
there's also the issue where NewPlayerDataHook was running... basically multiple times
yeah, i am gonna look at that
GUI.skin.label.alignment = TextAnchor.MiddleCenter;
that's in bonfire
wondering if that is it
Yeah, I would imagine so
so just need to change the new label you create to be textanchored to the upper left instead
i assume
k
Actually there's probably a default skin you can set it to
GUI.skin.label = GUIStyle.none; Maybe?
i'll try it
Is there any way to re-fight grimm using the debug mod after the troupe's been banished?
Respawn boss
does setting the grimmchild level work?
*Nightmare King Grimm
Tent will be gone, but load zone will be back
?
Debug mod has a "respawn enemy/boss" feature
Yes, but where do I go to respawn him if the troupe has already been banished?
The dream bosses can be respawned from anywhere
Ah, I see
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.
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.
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.
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
like putting kingsoul into the mix ๐ and grubsong (though need to make that list first)
How difficult would it be to give The Hive a separate map?
You'd have to add the map item, a cornifer position, and change the actual map screen to reflect this
That's the only separate area without one, right?
None of which I know how to do
I imagine the hardest part would be splitting it off from the map of Kingdom's Edge
All of it is gonna be hard
Would Cornifer be that difficult?
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
I don't think it's worth the effort
We really need more tools to do anything big
Have they talked about bringing it to Steamworks?
No, they don't seem to have any desire to implement mod support
honestly you're still trying to tackle huge complicated difficult stuff
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
We've got a viewer for them but not an editor
Yep, exactly
as far as moddb/steamworks/etc, that can't happen unless TC fully enables modding as part of the game
Yep
which isn't going to happen
Even if they just threw us a folder of tools with no documentation it would be better than nothing
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
yes, but you can't distrobute the DLLs
TC has kindly overlooked that we do it in this discord
I guess I don't get your point
with the understanding that the modded dlls don't get hosted on places like moddb
Assembly-Csharp.dll IS hollowknight
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
i don't think that's likely, the tools they could give us, likely require the critical piece of having the source code
It's possible
the tools that don't require the source for, we already have
See, I've come from Rain World and The End Is Nigh modding
Both have level editors that don't require the source
well, keep in mind that TC's coding folks consist of 2 people
who didn't start out as programmers
which helps explain oddities
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
You can do both of those at runtime
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?
Randomizer makes a lot of small changes:
https://github.com/MyEyes/RandomizerMod/blob/master/RandomizerMod/SceneHandler.cs
Including adding platforms to levels to prevent getting stuck
Interesting
Do people know how the format works?
Can assets be added and changed?
I have no idea if it's feasible to modify resources
Other than basic stuff like images
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?
The changes you can make are limited but that doesn't mean you have to make small mods
Work with what you're given with I guess
I'm still not 100% clear on what that is
No expansion or custom enemies, correct?
It's really just modifying existing things
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
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?
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
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?
You could probably make your own enemy starting from scratch
the world is technically rendered in 3d isn't it?
Copy a Cuphead enemy in and replace all the collider code
Yeah it's 3d
Yep
Nice
@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);
}
@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.
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 
@buoyant wasp its probably because you're in a cutscene, I assume you mean failed champion and not false knight too
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
goddamnit that not item dropping bug happened again
i was doing so well
Shrek just got 16,384 times better.
I think you're looking for #297468195026239489
and #art-discussion
truth
xD
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
i really like myself
yeah thats bugged 

woah that's weird
also i can't help but notice kingsoul doesn't work unless i die
i think
no its boss rush
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
A mod without bugs, now what fun is it in that. Giving the player a nasty suprise left and right... "wonderful"
some of the bugs require you to restart boss rush or even restart the game 
is one of the bugs a tiktik 
ofc
That is how they make sure you never get tired of it, if you complete it always ๐
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
You'd need all of those animations, which as far as I know don't exist
yeah it probably doesn't have the right animations for anything but that sequence
What you could do is probably switch shade and hk animations and fight using spells only
Would be weird tho
claw will be fixed next release of boss rush ๐
To update boss rush do I just drag it into the game folder?
nice
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
I think I should be able to handle that then
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.
interesting, i've not had it not work personally, though outside of doing testing, i rarely use it
Didnt someone said that Grimm only had 50% to drop anything or I just read the old notes to fast on boss rush
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.
but will it blend
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
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.
i think you broke permissions since now it doesn't show at all ๐
make sure the zip is set to "anyone with the link can view"
what will you pay me if i still break the mod
wth
I have no idea why it's set up like that
maybe SD changed something and it applied to all his folders?
dunno if I should just change it tho...
gradow u didn't answer my question
I'll pay you by adding you to the credits
"Lead Breaker"
"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
cool, it's viewable now, thanks
Does Blackmoth mod work or is the api just screwing with me
it should work
didn't try on newest api/game ver tho
but it should
what's wrong?
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
does the game even start, or does it crash on start?
crash at start
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
Yeah verify game files on Steam
it works here
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
infinite dash!
eh
lemme check, I only checked if the game launched properly
hahahahahaha
love this bug
okay, I'll fix it
Tiny ant gotta go fast!
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
you're joking
They switched Quickslash and Dashmaster?
Lol
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 ๐ฆ
OK, so what's going on? something about permissions?
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
how what was? the mod file?
the drive link pinned here is a view link for all of the modding folder
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
Was it because speedrun.com was linking towards it as well or what
I just tagged because I'm not comfortable changing permissions without your permission
@buoyant wasp dm me which email you want to have editing privileges
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
@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.
Want me to check it with blackmoth?
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
k, i'll do more testing this evening and then release it as v-10.
@solemn rivet OK, I will test run this API, and notify if something odd comes up
thanks!
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 ๐
I figured so
how 2 install bonfire m0d?
do you have the modding API installed?
ok
in the pins you should find a gdrive folder
it's literally called Modding API
idontseeit
helps to have that in list view so you can actually see shit
think of the modding API as the base that other mods sit on
^
you need the base for them to work
@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.
Yea I read the readme
Ouch my self esteem
Haha
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
err
i read the readme
it doesnt really tell me anything that i can understand LOL
okay
me: "english please"
copy the contents of the ZIP folder to the .exe's location
do you know where the game's root folder is?
yeah ill get that real quick
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
this folder right
Mmm yeah that glitch was kinda annoying, I think I can fix it though
yup
@buoyant obsidian is it normal for upwards lance to do less then "normal" ?
just drag and drop everything from the zip there
okay but real quick question
The upwards lance does normal lance damage, you were probably hitting them with your sword though
will this affect my normal save?
i want to begin a new save fil
file*
with the mod
well, yeah
damn
you should always start a new save with any mod
alright
because it's always the safer alternative
you should always backup your saves, and never use an existing save when loading a mod
backup? Sure
where can i find the files o.o
mods can and often do make permanent changes to any save they load
appdata/locallow/team cherry/hollow knight
%appdata% i think works better?
bonfire mod changes saver irreversibly
there's a "users/.../" in there too i think
should be a hidden folder on your user's main folder
this if im not mistaken right
just create a folder in that one
yup, that's it
is it good that i keep the folder inside
complete path is <drive letter>:\users<user name>\appdata\locallow\team cherry\hollow knight\
this same folder?
@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
there is also user2.dat, user3.dat and user4.dat
(for slots 2,3,4)
^
only have user 1 though so ill just copy that
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
this good?
I just have a backup folder and drag everything important there
the other user1 files there are just backup saves the game makes automatically
okay
after installing the API, donwload and install the bonfire mod the exact same way
its okay if i keep backup there right?
yupyup
okay thanks
Never tested bonefire mod yet, how viable is a "magic" build?
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
somewhat
and overwrite the .dll files it'll ask you if you want to overwrite
oh alright
^ @lilac bronze
you're installing that over the base file
is it normal that it's just invisible
if you ever want to go back to vanilla, just ask steam to validate game's files
it's in the data folder
what's invisible?
yeah, that folder you copied has the full tree in it, so it placed stuff down in lower folders
@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
so you don't have to figure out where to put stuff
it is, tomoya, but it's a lot of fun as enemies scale with you
wait how do i return to vanilla?
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
if all you did was install the API mod, it doesn't change the game
ok
not really anyways
yeah
yeah just installed the API
nothing that matters anyway
nothing else
ty ty ;D
@young walrus is it bad that up until now i thought your profile pic was salubra
Dont use the debug mod unless you wanna "cheat"
....how is it salubra?
i have no idea

my mind just pasted a picture
lol

Lightbringer has been updated with several bugfixes, testing appreciated.
sorry, am afk
Things that might have broke: Non-Steam version, damage.
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?
Yes there is a loadedMods list
ModHooks.Instance.LoadedMods (or something to that effect)
note that the list won't be populated until all the mods are loaded
I'll try a few things as soon as I get home
so you can't do anything during the Initialize/constructor phase
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
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
So I died in crystal guardian 2 and was teleported to kings pass in the boss rush?
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
@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
Nope, just killing stuff
OK, will come back after blackmoth
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 
can you set an internal variable to the last selected boss and then clear the variable when the boss dies?
the current boss is always tracked
and its only incremented if you teleport with the parameter true
so, then possibly add a check to say "if boss == CG2 and player location != CG2's room, teleport to CG2?"
Does anyone know if Bonfire and Lightbringer are compatible?
don't think there's an API lightbringer so no
Will Lightbringer affect my current save?
u bet
you can probably revert to vanilla and it nothing will have changed
but backup your saves just in case
How do I revert, anyhow? Do I have to reinstall?
@buoyant wasp I have a dictionary that keeps track of defeated bosses and rewards player with free levels
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.)
Well, I'm not sure what all that means
backup 1 file
@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
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
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"
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...
can't you just give a line reference, or something like that?
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
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
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
@leaden hedge are you supposed to pick up normal drops from bosses for the boss rush?
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
@hazy sentinel https://youtu.be/NkG5QqvEYBg
Just another day in the Hollow Knight modding community.
LITTLE HEAD MODE
LITTLE KNIGHT MODE
is it still normal HP
I fooled around with it as much as I could
i have no idea how to make this mod viable, but i love it
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
Best mod? Best mod
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
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.
Oh nice, almost like being Ant Man
This version has a reset button, R
@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 
Final version of ScaleMod
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.
what is bleeding edge
its bleeding edge
are you ESL?
Bleeding edge technology is a category of technologies so new that they could have a high risk of being unreliable and lead adopters to incur greater expense in order to make use of them. The term bleeding edge was formed as an allusion to the si...
tfw you accidentally beat radiance without taking damage in boss rush
@leaden hedge hey quick question
does intelligence stat in bonfire mod affect vengeful spirit now
I'd assume no
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
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?
i kinda just put the bonfire dll in the mods folder and it worked
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
search from: wyza has: file should find it
what
do you not know how to use discord search
in hollow_knight_Data/managed/
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
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 is this mockup fine
if anyone asks I'm working on fixing grimm and thk drops 
heres a thing I wrote to do most of it for you 
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
thanks!!!
theres still some complicated objects to add, like scroll rects
but assuming all you want is images, labels and buttons 
I trying to understand this, and holy shit, is it harder to understand than IMGui!
whats complicated it about it, is it the fact 10% of that file is a comment explaining how rectTransform works 
that's basically the only part I understood 
that just goes to show that this really wasn't meant to be edited like this
@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
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
if its in the api you won't get my visible from space comments
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
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.
you need to download the api from the google drive
then boss rush goes in hollow_knight_Data/managed/mods/
@solemn rivet https://gfycat.com/PossibleTotalGrunion 
Holy shit that looks good
all praise our lord and saviour kdt
https://gfycat.com/HealthySevereIzuthrush I coded a couple other nice things in
I'm not a big fan of the fade-in text
pretty sure thats how shops work in vanilla
I'm at Salubra's right now and nothing fades in
I tested it on iselda
I feel like I remember it fading
maybe im fucking high though
wtf they don't
Nope
why'd I waste my time programming this
Here's ScaleMod, where you can shrink / grow your character! It won't be updated after 1.2.2.1, so try it out while you can!
753 would you mind if I ported this to API?
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.
https://gfycat.com/CheeryDistantJerboa seems to work, all I've gotta do now is get to work in game 
Damn that's nice
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
butimus geo when you level up
has there been a bossrush update for grimm troupe?
Sorry if it was mentioned before
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
gradow?
In the future, could you add a "continue boss rush" button? Or would that require a rework
Like if you quit in the middle
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 ๐
I guess I'll have to stop being awful ๐ i was more thinking of it in relation to the CG2 issue
Took me 3 hours and I still quit midway through
eh, CG2 is a bug
I need to git gud
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.
whatever floats your boat
water
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
have you installed the API mod too?
same thing
basically
copy the folder in the zip into the root folder of your game
First API, then mod?
doesn't matter really
Done it but the game crashes
latest version of game
installed into C:\Program Files (x86)\Steam2\steamapps\common\Hollow Knight
and you overwrote what it asked you to?
yes
which version of the API did you install?
1.2.1.4
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
will the 1.2.1.4 bossrush work with the 1.2.2.1 version?
yes
๐
What's the best way to display text, let's say subtitles, in-game?
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
I can't fight the radiance in boss rush
You have to fight everything else first
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
Weird
It seems that the boss rush menu is over the save/quit menu as well
That's not that big of a deal
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
Is there any guide about speedrunning the randomizer?
You'll almost always want to check salubra and sly after getting fireball
From there it really depends on what you got
Hey, if it pays off you'll have like a 15 minute advantage
And TC was kind enough to double the number of items over there too!!
Rushing there for two items or clearing crossroads for 9 items ๐ค
Its not about the quantity, its about the quality.
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
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.
Pretty sure you get enough from false knight.
That's fine for buying one thing, but if you're unlucky you need more
I think going for fragile dude next is better.
depends heavily on what items you have
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
3hard5me, from plz nerf
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
Wtf. Can you go fungal waste with claw alone?
...
on the upshot
Dirtmouth -> Howling Cliff -> Greenpath -> Fog Canyon -> Fungal Wastes
Ok, claw early sucks...
You might also have to do the joni's blessing room in the dark
oh, yeah, that's fun
Could be interesting to know fastest possible seed.
mickely has done like a 48? or a 42? something like htat
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
lol
Sprintmaster + Dash?
Sprintmaster is garbage
in a race, if you have nothing else, no reason not to use it imo
Why is it bad?
It's 20% move speed while grounded, not dashing or anything
cause you spend a huge amount of the time in the air or dashing
It does almost nothing
It doest affect dash?
nope
Thats sad.
sprintmaster is purely ground run speed
Sprint master is purely useless
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
Any chance of making dream gate more common early on?
i don't see a reason to do so personally
i already see it in a fair number of seeds
Dream gate as first pick up is dream nail
Why give it early when there's only 3 items needed to win?
Three items, only one of which is unique
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.
i haven't see that happen at false knight before, but you could just try doing a full exit/start
Trying that rn
About the randomizer, what about unlocking stag station?
Ok did it again and it workrd
what about it?
I mean, instead of granting a random charm or upgrade, it could unlock a stag station.
sounds... Interesting?
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.
i think it would make routing much harder, IE raise the bar of who could successfully complete it
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
inb4 claw is at beast den stag
stags giving items is a no-go for sure
it'd suck
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
@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?
I hate everything about canvas but I'll look into it anyway when I can find the motivation
lol. k
Probably
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
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
Fragile Heart's location should have been defender's crest
Grimmchild would be fragile heart
also, this seed is trolly beyond anything i've seen
What's your seed?
225888661 hard/classic
@rain cedar (So I can look at mentions later to find this)
I'll look into that tomorrow
np
also, i was thinking that flukenest wouldn't ever be required without being able to get up to soul sanctum for the key
Luckily in this case you're not losing anything of value
but i ended up having to buy the key because fluke was the first movement item of dash :/
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
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
Well, at least now you know
indeed
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)
I'm taking a look at https://github.com/seanpr96/HollowKnight.Modding/blob/f9049b10e35225f5583b1326e0dbd08d7ec1fee6/Assembly-CSharp/ModHooks.cs right now... do you plan on hooking all stfld and ldfld instructions for the player? That's quite "expensive" (introduces a lot of overhead) o.o
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
Oh, that seems a lot more reasonable than hooking all field accesses ๐
I've yet to get my hands on the game
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
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
thats vanilla code 
Yep
I suppose we could try optimizing vanilla stuff
But the game runs pretty well already
don't look at the other vanilla code, like the equipped charms stuff 
https://gfycat.com/happytinyimago I think this now has all the functionality of the vanilla shop, and maybe a little extra 
Reset tokens? awesome
u mean rancid eggs?
nice
@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
I don't think you @ the right guy
does editting text work for notifications
dunno, but @bronze temple just in case 
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
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?"
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.
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
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
}
hmm, I wonder if you couldn't just hook UpdateBlueHealth to call OnCharmUpdate before orig_UpdateBlueHealth
as in, replace UpdateBlueHealth with a hook
There's other situations where it's not really possible to do something like that
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
Yeah that's actually the example I'm getting right now
Give me the ugly ones ๐
#1 answer for "lines you won't hear at a bar"
lol
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
"check for bump"

