#archived-modding-development
1 messages Β· Page 60 of 1
then just reset the weights after
but you have to iterate over stuff with weights anyway π€
you don't in my above code, although its destructive of the array
but it shouldn't matter because nothing will ever become unexcluded
yeah, the weighted table offers a bit more control than is probably needed here
if excludes has nothing I think you can just do "excludes":{}
but yeah should work fine
javascript isn't something I know off the top of my head
do I need to include all this in {} for each object line?
no it'd be
var goals = {
"FChamp": { "name": .......},
"FKnight": { "name:": ....},
}
var goals = {
"DungDefender": {"Name":"Defeat Dung Defender", "excludes":["GetIsmas", "GetDefendersCrest"]},
"GetIsmas": {"Name":"Get Ismas Tear", "excludes":["DungDefender", "GetDefendersCrest"]},
"GetDefendersCrest": {"Name":"Get Defenders Crest", "excludes":["DungDefender", "GetIsmas"]}
};
randomkey = randomKey(goal);
foreach key in goals[randomkey].exludes{
delete goals[key]
}
delete goals[randomkey]
I think
having tested it
basically, yup
it's just tedious π
yup.... gonna take forever
lol
why doesn't it like the Crest exclusion i have
do i need [] there instead?
but it's okay to leave the blank ones as {} still?
its because excludes are an array
not an object
var goals = {
"DungDefender": {"Name":"Defeat Dung Defender", "excludes":["GetIsmas", "GetDefendersCrest"]},
"GetIsmas": {"Name":"Get Ismas Tear", "excludes":["DungDefender", "GetDefendersCrest"]},
"GetDefendersCrest": {"Name":"Get Defenders Crest", "excludes":["DungDefender", "GetIsmas"]}
};
gotcha
should be "excludes":["a","b"]
but if it's blank, it doesn't matter
cuz it's looking for essentially nothing anyways
yeah it should just be [] then
function randomKey(jsonObj){
var obj_keys = Object.keys(jsonObj);
var ran_key = obj_keys[Math.floor(Math.random() *obj_keys.length)];
return ran_key;
}
var goals = {
"DungDefender": {"Name":"Defeat Dung Defender", "excludes":["GetIsmas", "GetDefendersCrest"]},
"GetIsmas": {"Name":"Get Ismas Tear", "excludes":["DungDefender", "GetDefendersCrest"]},
"GetDefendersCrest": {"Name":"Get Defenders Crest", "excludes":["DungDefender", "GetIsmas"]},
"FalseKnight": {"Name":"Defeat False Knight", "excludes":[]}
};
//repeat this until output array is full
randomkey = randomKey(goals);
for(var key in goals[randomkey]["excludes"]) {
var exc = goals[randomkey]["excludes"][key];
if( goals.hasOwnProperty(exc))
delete goals[exc];
}
//add your goal to the output array here
delete goals[randomkey];
I tested it and this seems to work
So what do I still need down here
nothing?
just use the bottom part of what you have there?
or do i nest that for loop of yours in there
you'll need to have a loop, but it can't really be a for loop. you don't know how many times you will have to loop through to get your 25. so you should probably do something like
var loopProtectionMax = 0;
while (output.length < 25 && loopProtectionMax < 1000) {
randomkey = randomKey(goals);
for(var key in goals[randomkey]["excludes"]) {
var exc = goals[randomkey]["excludes"][key];
if( goals.hasOwnProperty(exc))
delete goals[exc];
}
//add your goal to the output array here
delete goals[randomkey];
loopProtectionMax ++;
}
hmm
ah, yeah
what
for(var key in goals[randomkey]["excludes"]) {
}
on an empty array will do nothing
what is happening what
oh you mean to update it from the old format to the new one
dunno if that'd work good π€
finally updated the array
whew
so I can keep the printing command line from before yeah?
printing will be fine
oh
so it just needs to be {"name":"xxx"}]
yeah
Cool cool
So imma send this to him then to incorporate
should be able to run a random seed from the site itself
and if we want to update the list, we can just update this ourselves and resend to him
I'm trying to create a blue health regen. Right now it works, but the problem is I need it to regen one at a time. What is happening is it regens to max instead. Anyone know what's wrong?
private float threshold = 8.0f;
public int BlueHealth() => blueHealth;
public int blueHealth = 6;
public void RegenBlue()
{
t += Time.deltaTime;
if (t >= threshold)
{
t = 0f;
if (PlayerData.instance.healthBlue < 6)
{
PlayerData.instance.healthBlue++;
HeroController.instance.CharmUpdate();
PlayerData.instance.UpdateBlueHealth();
PlayMakerFSM.BroadcastEvent("UPDATE BLUE HEALTH");
}
}
}```
maybe try logging it?
Logging what?
Also, I should have mentioned that it's the BroadcastEvent that causes it to regen all at once. However I need it because otherwise the regenerated health doesn't display in the UI.
try
HeroController.instance.proxyFSM.SendEvent("HeroCtrl-Healed");
instead of the broadcast
nice idea 56, try adding Log($@"Current blue health: {PlayerData.instance.healthBlue}"; before the CharmUpdate()
56: doesn't that get called after focus?
yeah
worth a shot, anyways
in other news, I talked to sean and got his permission to implement his Celeste Mod into Blackmoth
dunno why I never thought of it
celeste mod?
what celeste mod
so I'm currently rewriting Blackmoth completely
i've never heard of celeste
it adds 8 directional dash
that's neat
sounds bad
just search for from seanpr has file in modding
that looks super neat
yeah
ursj
ursj
I know
fifty six?
in blackmoth, depending on the charms, you can do infinite
oh it's blackmoth rules
but that's a secret shhhh
no, that video has nothing to do with blackmoth
oh
that's sean's Celeste Mod
woah
is it available for download?
56 linked it above
"EightWayDashPogChamp"
many flags
16 directional dash imo
360 dash tbh
0 directional dash imo
when you dash you go in random direction which is none of them
it plays the dash animation but you stay in place
it plays the dash animation but then crashes and uninstalls the game
it plays the dash animation but then deletes system32
@vagrant leaf @leaden hedge
you mean like this? https://www.youtube.com/watch?v=RNiKllkUgag
button mashed at the beginning of the void heart cutscene and this happened
goodluck getting to shadow dash
incredible
@vagrant leaf https://youtu.be/KgjtrQaFnvM
what a useful mod
op
2strong
@solemn rivet I can send you source when I'm home if it's too fucked up in dnspy
It's fine
I've unscrambled it
but thanks for the offer!
I've already implemented it actually
Cool
Question for anyone who might be able to answer: how was the Rijndael algorithm determined, and Rijndael key for the Hollow Knight Save Manager found? What kind of examination by modders was done to figure this out?
okay, so I've been focusing on the data itself, but I should be focusing on the exe
so the first step was figuring out how the game saves
which is GameManager.SaveGame(int)
this contains an if statement that looks like this
if (useSaveEncryption)
{
binaryFormatter.Serialize(fileStream, graph);
}
else
{
binaryFormatter.Serialize(fileStream, text4);
}
and graph looks like
string graph = StringEncrypt.EncryptData(text4);
and if we check StringEncrypt class it looks like
static StringEncrypt()
{
// Note: this type is marked as 'beforefieldinit'.
StringEncrypt.keyArray = Encoding.UTF8.GetBytes("UKu52ePUBwetZ9wNX88o54dnfKRu0T1l");
}
public static string EncryptData(string toEncrypt)
{
byte[] bytes = Encoding.UTF8.GetBytes(toEncrypt);
ICryptoTransform cryptoTransform = new RijndaelManaged
{
Key = StringEncrypt.keyArray,
Mode = CipherMode.ECB,
Padding = PaddingMode.PKCS7
}.CreateEncryptor();
byte[] array = cryptoTransform.TransformFinalBlock(bytes, 0, bytes.Length);
return Convert.ToBase64String(array, 0, array.Length);
}
and how I found out GameManger.SaveGame(int) was the save function was just, GameManger has pretty much every general game function in there
Use of dnspy just naturally followed from the fact that HK was made in Unity, right?
Okay, so C# in general. is there an equivalent to dnspy for C and/or C++?
yes the equivalent is Db 
unfortunately disassembly only really works with csharp and java
you could try something like x64dbg or ollydbg
That makess sense
but even if you can read assembly
its going to be a massive pain
what are you trying to do
I'm trying to decompile the Octogeddon data, which is put in a .ayg file (for All Yes Good). It seems to be coded in C++, and there's pretty much no other info I've been able to find
I'm looking into detection algorithms but my starting point is basically that the developer has displayed a tendency towards jokes about the number 8 because octopus
hmm what are you trying to get out of the data files?
are they sprites
audio
logic?
Yeah. The exe is under 5MB, whereas the data is about 700MB
Guys why is Visual Studio giving me all this attitude over this?
I suppose if I know that a certain sprite is present, I could possibly use that to help with detection
don't think you can use "complex" stuff in assignments
You cannot use an instance variable to initialize another instance variable
well its going to be a massive pain unless you can figure out whats in the files so you can tell what they should extract to
Yeah, it seems like it will take a lot more than using open source stuff. I might have to implement my own algorithms. I appreciate the help though, I needed to rule out dnspy
I'd use cheat engine to try and figure out the internal game structures
and try and reverse engineer it that way
cheat engine also comes with some stuff to look at and search through assembly
so you can usually find the functions in the assembly
the one thing I'd do is I'd ask on XeNTaX
awesome, that's very helpful
I'll keep poking around. As far as I know I'm on my own with this game, there's a single post on zenhax but the only info is "it's definitely encrypted". So any leads are good
but honestly it'll probably be a week of hacking to get something that barely works
I guess if I at least learn something I'm happy
the reason it works well in c# is because compiled C# is actually IL (an intermediate language that is really close to assembly, but is still fairly easy to work with). C/C++ once compiled doesn't really hold methods or variable names anymore, it's all been minified
That makes sense. So it's all being represented as arbitrary decisions to commit or retrieve some data to some process in the most efficient way? (I know that is probably a serious bastardization of what's actually happening)
data that until examined, you don't even know what it is or does. yes
@solemn rivet in blackmoth, with using dashmaster was it intended to be able to jump insanely high with the dash?
i basically dont feel like i need the claw anymore
can jump all the way from dirtmouth to "roof" of the map with longdash and mark of pride and mothwing cloak
mothwing cloak alone makes the jump really high
its not just the shadow dashm when that one ends you get propelled even further
if you press and hold up at the same time as dashing and spacebar
I'm sure Gradow will fix that soonβ’
I mean it's only been reported since like a year ago
(( hopefully not xD
its kinda fun dashing through entire map and smacking into something you could have never seen that far away
sorta like gruz mom 
I think it's an easy fix, but... I don't even know if it is a bug or a feature myself

Also, I think I somehow broke Grubberfly
And I don't know if I can fix it in api... I'm trying, but it does not seem to work
i just closed the game ehhh ill be in the game soonish so i can test that charm for you
many people loved it... I'll do my best to fix it
1.3.0 is current version yes?
yeah
reaction of someone finding it out for the first time: https://clips.twitch.tv/ColdShakingPieCoolCat
man
ok i DID NOT KNOW IT WAS LIKE THIS XD
I need to get it working
what does fury of the fallen do
eh
gotta change that in your read mes
forgot to remove that from the readme
yup
I'll update with the next release of blackmoth
-holds forever to 1.3.0- you cant stop me
jk eheh, your mod is amazing
didn't get the time to test out the latest release of blackmoth
might get to it this weekend
and maybe tackle those two last achievs i have to get
with 1.2.0 i run into no damage bug, with 1.3.0 no bugs so far just... insane dash up thing rendering mantis claw nearly useless
try it, longnail, mothwing cloak, mark of pride and dashmaster, and press and hold up, jump and dash at the same time
youll fly right out of the game
might be because the game never accounted for dash up
dash up is supposed to be about half of what normal dash sideways should be
dash down is really short in comparison
aye
it's been a bug for as long as blackmoth is a thing
kinda makes sense with the name of the mod
after you get all of the items you need to do it you can just take off and fly away
my thinking is that updash already breaks the game... So why not just suck it up and leave it as it is?
im cool with that
also, I thought it was blackmoth's fault, but apparently it isn't
the OnDashHook is giving nre's whenever it's called
tried it with Celeste Mod to see if it's Blackmoth's fault, but it still gives the nres
https://puu.sh/zu3kQ/d805e14af5.gif BLACKMOTH LIVES
@ancient nebula if you want to give it a spin
heavy breathing
My goodness. Why is it doing that?
it's a secret feature of blackmoth
Looks like hot death
that was a bug early on in development which I decided to keep as a feature
because it's hillarious
also
with the addition of celeste mod dashmaster currently does NOTHING
I have to think of something for dashmaster to do
reduced dash time, perhaps?
could be, esi
currently, getting the mothwing cloak reduces dash cooldown and allows for 8 dir movement
I could leave it at just one of those
Depends on whether people prefer 8dir movement to be always on or not
make it a menu option
:effort:
whats celeste mod
8 way dash
give 4dir and have dashmaster give 8dir
^
so
im back in game with blackmoth
im invincible
meaning
its a game breaking feature
basically godmode
cant be hit
but it destroy everything
i got hit and im stuck in a wall
@solemn rivet
i got hit off spikes in crystal cave, of the ginat beatles
enemy hit me i got stuck in permanent knockback sprite
hit and stuck
its cool except for enemies that have a form of protection against being hit
cool if you were looking for...
under 10 mins speed run
i gues
with randomizer ofc
personally, id either keep that as separate feature, separate mod or delete the feature entirely
also shade cloak makes it so that as soon as you use it, you have full soul pool
balanced
I mean
That IS an endgame item
And you have to earn it
It's like a completion bonus
its ok
Think of it as Screw Attack in any metroid game
Great movement upgrade? Yup. OP? Sure!
heh
Deals lotsa damage? You can count on it!
but what if i wanna play balanced game and have no self control to not use it cause its just so tempting
also i rely on that charm for the troupe hunts
which...
wont work with blackmoth i just realised
Wut
You still shoot the grubberbeam
It's just... That it only deals 1 damage
Can't wait for a rando seed with grubberfly in fotf's spot
Under 5min speedrun
gonna go keep making rando saves until i get that
hahah
@solemn rivet is air dash supposed to be dead in blackmoth
i thought it would work once i got mothwing but i still can't airdash
What do you mean?
probably jumping then dashing
yeah can't dash in the air
meanwhile ive found a way to double dash in air
i can diagonal/ vertical dash from the ground
but when i try to dash in the air nothing happens
when i disable blackmoth from the menu i can dash just fine in the air
but when i put it back on i can't
lmao
Classic
rΔ
Double classic
works when i first start the game but then stops working
does it stay if you don't dash
and change rooms
like can you still dash (at least once)
did you accidentally install zero dash mod
it was not my fault ok
wait actually
yeah it gives me one dash in the air and then stops working
whenever i restart the game
i think that Lightbringerβ’ is clearly the best mod
it's gonna d i e
what is
ur fsm lol get cucked
enemy randomizer works
just need to get a configuration menu and try out an optimizaiton for loading and it'll be ready for testing so you guys can help me find bugs and softlocks

***__```css
N
I
C
E
no u
oof
:/
If I am a high school student and I want to take an independent study in computer science for my senior year (I've already taken ap computer science in java) what should I work on? Should I make it about more advanced java or should I start another language?
You could learn C# (it's basically Java) and hack Unity games
that sounds like an amazing plan
but how would I phrase that in a way so that my counselor doesnt think I will spend the entire year playing in that class
saleh mods when
are strings not char arrays in java wtf
-oooooo excited for enemy randomizer-
does anyone know the fsm for superdash?
I have the json file for FSM Viewer if that's what you mean?
for superdash?
Yes
then, can you send it to me plz?
thanks!
No problem. Have like 1000 of these files, may as well do something with them
kek
Could you make a zip of them? I'd love to look through them
And I have an idea for a use for them
Normally I would say 'just run the fsm mod'! But then you have to add "var fsm=" to the beginning of every file, and I already did that with a macro because screw that.
Also hold on while I try to shrink it down to the max 8mb size.
Okay, had to split them into two files, hope that's fine.
That's perfect!
I've been theorizing ways to generate enemies at runtime by recreating their game object components from extracted parameters, but fsms have been a bit of a sticking point in this idea. After looking at the file I'm hoping I'll be able to use that data to possibly do that
Until the new expansion/update comes out and they remove a bunch of FSM stuff.
Right. But for all we know that won't be for a while, so might as well do it.
I been architecting my mod in anticipation of game-related things changing, so whatever happens it won't take long to update
@rustic stag @pearl sentinel @solemn rivet you can just use Wyza's fsm viewer tho
it doesn't have the var fsm=
and lets you search through and open them without having to move files
yeah, having the files ready to parse like this though is really nice
oh yeah, i getcha, but that's not what i needed
o
i'm hoping to do something like this for example
Find a monster in a scene, serialize it's component properties to data, then later make a function that can go CreateMonsterFromSavedData();
but if i know that a Fly has certain FSMs, maybe i can use the pre-written FSM data files to re-create the playmaker FSM at runtime
and this allow the spawning of a Fly without needed to load a scene to copy it from
ohh
because right now the enemy randomizer has an inital load step where it processes 69 scenes to build a database of all the enemies that will be randomized
oof
it's not bad since you need to do it once per run of the game, but still annoying
takes about a minute or 2 on my machine
honestly, it might be easier to go look at what the fsm dumper does, and see if you can't just read those at runtime
hmm
cause they exist, somewhere, already in the code somehow
I'm trying to add mid-air superdashes do blackmoth
that's pretty cool
also @solemn rivet still having some trouble with blackmoth
dash doesn't reset when i cling to a wall or pogo off an enemy
got it
I had tried to override the game's own airDashed field (because it's private, and a pain in the ass to access)
but I guess I'll just use it
@vagrant leaf how's this? Does this fix dashing after pogo/wall/whatever?
np
how can I change a transition in an fsm?
It's a pain in the ass
I guess that's just deleting transitions, not really changing them
What is it you're trying to do?
https://github.com/MyEyes/RandomizerMod/blob/master/RandomizerMod/SceneHandler.cs#L90 Here's one where I change the transition instead of delete it
I want to enable mid-air superdashing
I assume I just have to edit this one transition
Can you post the full fsm?
Nah that state looks like it's for checking if you should wall charge or ground charge
yeah
but the Can Superdash? state references an empty method
HeroController.CanSuperDash()'s body is empty in dnspy
I'd try just skipping over that state anyway and see what happens
wait, wut
it's not empty anymore
wth
if it's not empty I can just add a hook and that's that
Maybe I was using a weird dll? Anyway...
thanks, sean
I'll use the link you gave me as reference on how to deal with transitions
If you want a true superdash anywhere mod you'll have to edit the fsm still
Actually I don't think editing that function will even work
I think it will cause the little stutter things like when you're near an edge
I'll try it and see what happens
umm
ok
so this is the fsm json
from what I get it's tag,object,fsm,hash
so I search for fsm named "Superdash" in the object "Knight"
and found none
I'm using a save which already has superdash...
any ideas?
debug mod idk
Wow that's convenient
Yeah, figured
now I just need to trick it into thinking I'm standing on solid ground
2x
now I just need to trick it into thinking I'm standing on solid ground
connection sux blah blah
lol
I can always claim that picture is photoshopped
I've seen a lot of photoshopping in my day, I can recognize it when I see it
ftfy
Wow too lazy to even remove the extra names smh my head
got it
I had to remove the charge
but let's just call that a feature for now
the stutter was caused because you cannot charge the dash in midair
gravity prevents it
I've ascended
even nicer is this part
idk what'll happen if I try reacting to them
the answer is the react button doesn't work at all
spelling "now I just need to trick it into thinking I'm standing on solid ground"
even better
wait a second
I can
actually do it
I just have to react to another thing then copy over the reacts
eh y no gif
rip
also nice
also holy shit that's fast
imo get rid of the ending lag and then you can use it in combat
gib gif plox
why does copying gifs not work

That is why i have only low quality shitpost memes
Same
could have done a better job rescaling it Sean
Yeah man, its so much effort using an extra tool
In about 12h I'll get started on making airsuperdash a thing
airsuperdash?
Dunno how long it'll take, tho, since I'm going to have to add a state with transitions to an fsm
will it be a charm?
cool
Make dashmaster useful again
yay
mid air superdash
i wonder how many skips there can be with tha-- oh wait i know
everything
is there a way to find the hell mod?
pinned
it's in the pins!
how would i open the debug menu from the debug mod?
it doesn't seem to work...did i miss astep installing?
when you pause the game, do you see a bunch of words in the top left corner
Do mods work on Mac OS X?
with mod info etc
no...
then your modding API is not working
try reinstalling that
and i don't know if it works on OSX
i guess it does if it's an API mod
yep it does, modding API for macOS exists
right, since i missed something, what do i need to do
oke, i was stupid. i forgot the api
pffff ok
Which version of unity studios in the pinned link should be downloaded?
Probably the latest
@leaden hedge did you add the charm thing?
on what
implementing a functional mid-air superdash
oof
I cant get the debug mod to work again, I reverted the files back so I could do a run and now I can't seem to get it running again
did you install the api
Ah, i didnt realize i had to re-install it.
I think I got it

what's the hard part?
diamond haha

I was looking through PlayerData in dnSpy. Does anyone know what the 'nailRange' value does? Changing it doesn't seem to have any effect as far as I can tell.
I think it's a leftover from before HK became an FSM fest
eh
I'm giving up for now
but, hey, air-superdash is a thing now!
yay
idontseehowthatcangowrong.jpg
I mean
this mod already has this https://puu.sh/zu3kQ/d805e14af5.gif
"breaking" is literally a non-issue
true
but considering you can get dashmaster after mantis claw
and you need cdash to finish the game.... p sure that's gonna be fast
made it cost 5 notches to balance it out... Maybe should make it so you need something else - like Shadow Dash or something?
King's Soul 
I mean
from the player's perspective
it's not like he first had to charge and then after getting some item he doesn't need to anymore
since it'll be like that from the start
no, I mean
do you want to know how to achieve that in-game, or how I coded it to behave that way?
in-game: equip grubberfly's elegy
and hold down dash
both
if (PlayerData.instance.equippedCharm_35 && GameManager.instance.inputHandler.inputActions.dash.IsPressed)
{
HeroController.instance.cState.invulnerable = true;
CheckForDash();
}```
CheckForDash() is subscribed to HeroController.HeroDash()
and it overrides normal dash functionality
so it's basically "do dash"
also this
if (PlayerData.instance.equippedCharm_35)
{
GetPrivateField("dashCooldownTimer").SetValue(HeroController.instance, 0f);
GetPrivateField("shadowDashTimer").SetValue(HeroController.instance, 0);
}```
that's part of CheckForDash
also
make equippedCharm_35 to override CanDash method
(which checks for lotsa annoying stuff)
lol
@copper nacelle
me_irl
I've decided I'm going to tie air-superdash to void heart
now
does anyone know what charm name it is?
Charm_56 imo
isn't it 37
from 0-40
it's 36th
but charms are actually from 1
aren't they?
https://pastebin.com/psUagtEr I'm using this
they are
thing is, I can't really reference charm_36c
so I've had a better idea
it's going to be a surprise requirement
nah
inb4 obfuscated code
no one would actually SPOIL THE FUN
Dashmaster - still useless
but, hey, you can air-superdash after meeting certain requirements
Sexy
oooo
Very clean
I would tone down the saturation of the colors? better match the hk aesthetic maybe
idk if that's easy to do
hey, I'm working with the graphics for this, that should be pretty easy
do you mean the greens and yellows on the buttons, or the background image?
Yeah Paquito is taking the project and making it not look a programmer put it together :D
cool, Il try a bit of desaturation on that
It's mostly using ripped assets from the game though : D
because I'm laz... I mean it will be easier to navigate
It works!
Very very nice!
make it infection orange
Do eet

It looks pretty great to me!
new blackmoth ;o
vantablackmoth
@ancient nebula https://puu.sh/zw5Ux/97706e4cca.gif I have no idea what you're talking about

hahahaha
https://youtu.be/uN3yqMr3ffY?t=334 add this to the spinning of that second gif
it's perfect
i honestly don't know what's funnier
the tilt at the beginning
the spinning
or at the end the knight falling flat on it's back
i think the crystal heart might've had some form of disease
the knight = ded
I can't get it to work

for now I guess I'll just release it as it is
with that as a future feature
I mean
the spin isn't always there
you have to press and hold UP for it to happen
Mod loader updated with new UI and a help window: https://github.com/Kerr1291/Crossroads/releases/download/v00.41/Crossroads_v.41.zip
Help window: https://puu.sh/zw8t0/8515993e3c.png
nice!!!
damn fsms
can't wait for them to go away
for now, I'll only add the ability to change direction mid-dash (if you can air-dash)
okay
should I keep spin superdash?
I've added an actual functionality for dashmaster
and a mid-air superdash
which you can change directions mid-dash
EnemyRandomize update: menu is about done (finally)
there'll be a bit more options to come, but the initial setup of all this was the hard part
big thanks to whoever put together the original UI from the in-game mod manager
that's what i used as a base
wyza iirc
nope, i just implemented it. @leaden hedge did all the hard work
i just wired it all together π
pretty sure it still randomly breaks the fullscreen button but don't tell anyone 
it also breaks resolution if you open it in the pause menu
#notmyproblem
there's a fullscreen button?
i think i know about the random breakage you're talking about, i think i had to fix that in the code i copied to get the menu working
ok, so, this is probably a bad idea because there's still a lot to do to get all the enemies working properly and no optimzaitons done on the initial loading and it will probably have softlocks everywhere but.....
if anyone wants to play around with it
can't wait to try it
instructions:
- Press the giant ENABLE button first thing on startup
- go make a sandwich while it processes 69 scenes
- Go into Options -> Enemy Randomizer -> Set whatever options you want
OPTION DESCRIPTIONS:
Chaos Mode: No logic, enemies are totally different every time you transition (if enabled then Room Mode does nothing)
Room Mode: Enemy types are switched on a room-by-room basis only. So flys will all the the same thing, but only in that room
Chaos & Room Mode disabled: Default logic, only enemy types are randomized. So if all spitters become Nosk.... well, it could happen.
If you hit a softlock, reload the game, DON'T enable the mod, progress past the softlock, then save, quit, and re-enable the mod (sorry).
Known issues: Wall-type enemies are not yet rotated. So if a worm should be sideways.... it won't be
Some enemies will spawn and fall through the world or get stuck, i would appreciate any reports of these as that's something i need to add specific cases for.
If you get softlocked, please let me know where/how so I can look into it
And sorry about the initial load time again
leave it in the folder with the .dll
the mods folder in the game files or just where it comes
\Hollow Knight\hollow_knight_Data\Managed\Mods\mainui
\Hollow Knight\hollow_knight_Data\Managed\Mods\EnemyRandomizer.dll
that's how the paths should look
i just included the modding api i was using in there in case there's a compatibility issue with the current release that i hadn't tested yet
will try it rn
oh, one other option: "RandoDisabledEnemies" suggest to NOT enable this... but if it's on it will randomize enemies that are "hidden" (like enemeis from infected crossroads even though it's not infected yet) and add them to the scene. This results ins some weird things happening
wish me luck
mostly results in extra enemies
oh fuck
hold up
i left one hardcoded debug thing on
no, i had it set to only load 5 scenes
instructions:
- Press the giant ENABLE button first thing on startup
- go make a sandwich while it processes 69 scenes
- Go into Options -> Enemy Randomizer -> Set whatever options you want
OPTION DESCRIPTIONS:
Chaos Mode: No logic, enemies are totally different every time you transition (if enabled then Room Mode does nothing)
Room Mode: Enemy types are switched on a room-by-room basis only. So flys will all the the same thing, but only in that room
Chaos & Room Mode disabled: Default logic, only enemy types are randomized. So if all spitters become Nosk.... well, it could happen.
If you hit a softlock, reload the game, DON'T enable the mod, progress past the softlock, then save, quit, and re-enable the mod
Known issues: Wall-type enemies are not yet rotated. So if a worm should be sideways.... it won't be
Some enemies will spawn and fall through the world or get stuck, i would appreciate any reports of these as that's something i need to add specific cases for.
If you get softlocked, please let me know where/how so I can look into it
And sorry about the initial load time again
oh, one other option: "RandoDisabledEnemies" suggest to NOT enable this... but if it's on it will randomize enemies that are "hidden" (like enemeis from infected crossroads even though it's not infected yet) and add them to the scene. This results ins some weird things happening
\Hollow Knight\hollow_knight_Data\Managed\Mods\mainui
\Hollow Knight\hollow_knight_Data\Managed\Mods\EnemyRandomizer.dll
that's how the paths should look
kek
anyway, double checking it works then i gotta run off to work
you were not kidding, this does take a long time to load
I'm not seeing an enable button?
up right
do you have the "Enemy Randomzier 0.0.1" text in the top left of your main menu?
might need the modding api installed
do you have API installed?
ah that's why
I do have the api
show me your /Mods/ folder
if the text isn't showing up, then you didn't do it right
Hollow Knight/hollow_knight_data/managed/Mods
Oh it installed into the wrong folder

I'll move it back
nah, it's an artifact from processing all the scenes
Okay, this is what / mods looks like now
it'll go away once you start
ok, just confirmed that the tutoral screen still isn't getting randomized, but crossroads is
default is that "types" are randomized only
so like, all flys should get shuffled to something else
like inflaters
and also confirmed that the "trap ambush" at the bottom end of crossroads still softlocks >.<
chaos mode is on!
but
trap ambush? You mean the aspid?
yea
if you have a save i'd just load that for now and play around in there
since only parts that gate you in until you kill something should cause softlocks
and after that part there isn't one for a while
oh my god why
same here
go right and check out what's guarding the grub
got a colosseum bug
:3
pain
ok, i'll be on and on in chat on mobile all day
Mine's working now
oh hey, perfect, thanks for that
Sorry I suck with this stuff
that's the kind of thing i want to know about getting stuck
there's over 100 enemies so i haven't had time to test nearly all of them
wtf actual messages in #archived-modding-development
anyway, i'll be on mobile all day if people have questions just @ me if it's urgent
afk while driving to work
incredible
time to try enemy rando
there's a room rando what
Er RoomMode
God tamer's pet thing is guarding grub
end me
i walk into the room and it starts charging at me immediately
I got randomized enemies in the tutorial part?
same here

- Try using my modding api
like if I hit Windows+Tab I can see it
Oh, it's loading
actual minutes
tfw I have 1 fps
nice
I'm at the crystal peak part of loading rn
nearly done
wtf I hear the birthplace music
or the sealed vessel music
oh shit it's done
it just has dramatic music

"Feature"
excuse me
no geo dropped
I got Zote
from what i saw geo doesn't drop from enemies that don't normally drop geo
I also got no geo from that guy
like colosseum enemies didnt drop geo for me
that must be it
rip vengefly speedrunning trick
fuck
I can't do the mosquito skip now
time to git gud at the fireball skip
eh, I don't remember mawlek looking like this
geo time



