#archived-modding-development

1 messages Β· Page 60 of 1

leaden hedge
#

oh its delete

pearl sentinel
#

then just reset the weights after

leaden hedge
#

but you have to iterate over stuff with weights anyway πŸ€”

pearl sentinel
#

sure, but you don't call "GetRandomValue" more than once

#

(our requirement)

leaden hedge
#

you don't in my above code, although its destructive of the array

#

but it shouldn't matter because nothing will ever become unexcluded

pearl sentinel
#

yeah, the weighted table offers a bit more control than is probably needed here

young walrus
#

so build it out like this?

#

besides all the syntax mistakes

leaden hedge
#

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

young walrus
#

do I need to include all this in {} for each object line?

buoyant wasp
#

I would change the outer brackets [] to {}

#

var goals = {

young walrus
#

then have each array value inside []?

#

or does it not matter

buoyant wasp
#

no it'd be

#
var goals = {
    "FChamp": { "name": .......},
    "FKnight": { "name:": ....},
}
leaden hedge
#
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

buoyant wasp
#

basically, yup

young walrus
#

kk

#

that's not too terrible then

#

besides taking forever to fix all this now. lol

buoyant wasp
#

it's just tedious πŸ˜ƒ

young walrus
#

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?

leaden hedge
#

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"]}
};
young walrus
#

gotcha

leaden hedge
#

should be "excludes":["a","b"]

young walrus
#

but if it's blank, it doesn't matter

#

cuz it's looking for essentially nothing anyways

leaden hedge
#

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

young walrus
#

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

buoyant wasp
#

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

leaden hedge
#

25 will work

#

it removes all invalid entries

#

so randomKey will never return one

buoyant wasp
#

ah, yeah

young walrus
#

still typing away

#

this takes forever

#

updating 100+ goals

solemn rivet
#

do it for the community

#

#forthepeople

copper nacelle
#

wait are you just adding the blank excludes

#

regex replace imo

leaden hedge
#

what

#

for(var key in goals[randomkey]["excludes"]) {
}
on an empty array will do nothing

young walrus
#

well i aint fuckin changing it now

#

i'm almost done

copper nacelle
#

what is happening what

leaden hedge
#

oh you mean to update it from the old format to the new one

#

dunno if that'd work good πŸ€”

young walrus
#

finally updated the array

#

whew

#

so I can keep the printing command line from before yeah?

leaden hedge
#

printing will be fine

young walrus
#

okay, nothing printed

#

doesn't like the excludes and the randomkey at the bottom

leaden hedge
#

oops

#

that seems to work @young walrus

young walrus
#

the list needs to have "Name": "goal" syntax

#

a straight list won't work

leaden hedge
#

oh

young walrus
leaden hedge
#

so it just needs to be {"name":"xxx"}]

young walrus
#

yeah

leaden hedge
young walrus
#

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

rustic stag
#

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");
                }
            }
        }```
copper nacelle
#

maybe try logging it?

rustic stag
#

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.

copper nacelle
#

try

#

HeroController.instance.proxyFSM.SendEvent("HeroCtrl-Healed");

#

instead of the broadcast

solemn rivet
#

nice idea 56, try adding Log($@"Current blue health: {PlayerData.instance.healthBlue}"; before the CharmUpdate()

#

56: doesn't that get called after focus?

copper nacelle
#

it gets called w/ add health

#

so probably

#

but it also probably updates ui

solemn rivet
#

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

copper nacelle
#

celeste mod?

hazy sentinel
#

what celeste mod

solemn rivet
#

so I'm currently rewriting Blackmoth completely

hazy sentinel
#

i've never heard of celeste

solemn rivet
#

it adds 8 directional dash

copper nacelle
#

that's neat

hazy sentinel
#

sounds bad

solemn rivet
#

just search for from seanpr has file in modding

hazy sentinel
solemn rivet
#

kek

vagrant leaf
#

that looks super neat

copper nacelle
#

yeah

solemn rivet
#

ursj

vagrant leaf
#

ursj

copper nacelle
#

shh

#

tbf that's yeah but one key to the right

solemn rivet
#

I know

vagrant leaf
#

how many dashes can you do in the air

#

i saw 2 max in the vid

copper nacelle
#

fifty

#

billion

vagrant leaf
#

fifty six?

solemn rivet
#

in blackmoth, depending on the charms, you can do infinite

vagrant leaf
#

oh it's blackmoth rules

solemn rivet
#

but that's a secret shhhh

vagrant leaf
#

neat

#

quickslash imo

solemn rivet
#

no, that video has nothing to do with blackmoth

vagrant leaf
#

oh

solemn rivet
#

that's sean's Celeste Mod

vagrant leaf
#

woah

solemn rivet
#

thing is, I'm going to add it to Blackmoth

#

with his consent

copper nacelle
vagrant leaf
#

is it available for download?

copper nacelle
#

yes

#

i even gave the link re

solemn rivet
#

56 linked it above

vagrant leaf
#

oh ok

#

rip

copper nacelle
#

"EightWayDashPogChamp"

solemn rivet
#

also, yeah I saw that 56

#

best name

#

also

#

dsnpy really butchered this one for me

copper nacelle
#

many flags

hazy sentinel
#

16 directional dash imo

trim grove
#

360 dash tbh

leaden hedge
#

0 directional dash imo

#

when you dash you go in random direction which is none of them

vagrant leaf
#

it plays the dash animation but you stay in place

leaden hedge
#

it plays the dash animation but then crashes and uninstalls the game

vagrant leaf
#

it plays the dash animation but then deletes system32

copper nacelle
vagrant leaf
#

oh ok

#

does it uninstall the game

copper nacelle
#

no

#

dash animation + you stay in place

vagrant leaf
#

great

#

that means shadow dash is basically iframes

#

thank will use

hazy sentinel
leaden hedge
#

goodluck getting to shadow dash

vagrant leaf
#

incredible

copper nacelle
vagrant leaf
#

what a useful mod

leaden hedge
#

op

trim grove
#

2strong

rain cedar
#

@solemn rivet I can send you source when I'm home if it's too fucked up in dnspy

solemn rivet
#

It's fine

#

I've unscrambled it

#

but thanks for the offer!

#

I've already implemented it actually

rain cedar
#

Cool

hidden gull
#

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?

leaden hedge
#

reverse engineering

#

if my dnspy would open I'll tell you the exact class its in

hidden gull
#

okay, so I've been focusing on the data itself, but I should be focusing on the exe

leaden hedge
#

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

hidden gull
#

Use of dnspy just naturally followed from the fact that HK was made in Unity, right?

leaden hedge
#

well its in csharp

#

i use dnspy for celeste too

#

and thats monogame

hidden gull
#

Okay, so C# in general. is there an equivalent to dnspy for C and/or C++?

hollow pier
#

yes the equivalent is Db hollowomg

leaden hedge
#

unfortunately disassembly only really works with csharp and java

#

you could try something like x64dbg or ollydbg

hidden gull
#

That makess sense

leaden hedge
#

but even if you can read assembly

#

its going to be a massive pain

#

what are you trying to do

hidden gull
#

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

leaden hedge
#

hmm what are you trying to get out of the data files?

#

are they sprites

#

audio

#

logic?

hidden gull
#

Yeah. The exe is under 5MB, whereas the data is about 700MB

rustic stag
hidden gull
#

I suppose if I know that a certain sprite is present, I could possibly use that to help with detection

leaden hedge
#

don't think you can use "complex" stuff in assignments

hidden gull
leaden hedge
#

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

hidden gull
#

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

leaden hedge
#

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

hidden gull
#

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

leaden hedge
#

but honestly it'll probably be a week of hacking to get something that barely works

hidden gull
#

I guess if I at least learn something I'm happy

buoyant wasp
#

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

hidden gull
#

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)

buoyant wasp
#

data that until examined, you don't even know what it is or does. yes

ancient nebula
#

@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

rain cedar
#

I'm sure Gradow will fix that soonβ„’

#

I mean it's only been reported since like a year ago

ancient nebula
#

(( 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 thinkgrub

solemn rivet
#

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

ancient nebula
#

i just closed the game ehhh ill be in the game soonish so i can test that charm for you

solemn rivet
#

many people loved it... I'll do my best to fix it

ancient nebula
#

1.3.0 is current version yes?

solemn rivet
#

yeah

ancient nebula
#

WHAT EVEN IS HAPPENING

#

-runs off to white palace with this-

#

xD

solemn rivet
#

man

ancient nebula
#

ok i DID NOT KNOW IT WAS LIKE THIS XD

solemn rivet
#

I need to get it working

ancient nebula
#

what does fury of the fallen do

solemn rivet
#

it used to do something

#

now it does nothing

ancient nebula
#

it says "reverse overcharming effects" but

#

oh

solemn rivet
#

eh

ancient nebula
#

gotta change that in your read mes

solemn rivet
#

forgot to remove that from the readme

ancient nebula
#

yup

solemn rivet
#

I'll update with the next release of blackmoth

ancient nebula
#

-holds forever to 1.3.0- you cant stop me

solemn rivet
#

ok

#

but you'll miss on grubberfly

#

kek

ancient nebula
#

jk eheh, your mod is amazing

solemn rivet
#

thanks for that!

exotic venture
#

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

ancient nebula
#

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

exotic venture
#

might be because the game never accounted for dash up

ancient nebula
#

dash up is supposed to be about half of what normal dash sideways should be

#

dash down is really short in comparison

exotic venture
#

aye

solemn rivet
#

it's been a bug for as long as blackmoth is a thing

exotic venture
#

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

solemn rivet
#

my thinking is that updash already breaks the game... So why not just suck it up and leave it as it is?

ancient nebula
#

im cool with that

solemn rivet
#

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

solemn rivet
#

man, using my installer really makes it quicker to load mods for debugging

solemn rivet
ancient nebula
#

heavy breathing

rustic stag
#

My goodness. Why is it doing that?

solemn rivet
#

it's a secret feature of blackmoth

rustic stag
#

Looks like hot death

solemn rivet
#

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

rustic stag
#

reduced dash time, perhaps?

young walrus
#

have it triple your hitbox

solemn rivet
#

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

hazy sentinel
#

make it a menu option

solemn rivet
#

:effort:

ancient nebula
#

whats celeste mod

vagrant leaf
#

8 way dash

hollow pier
#

give 4dir and have dashmaster give 8dir

vagrant leaf
#

^

ancient nebula
#

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

vagrant leaf
#

balanced

solemn rivet
#

I mean

#

That IS an endgame item

#

And you have to earn it

#

It's like a completion bonus

ancient nebula
#

and stuck again

solemn rivet
#

Kek

#

I'll try fixing that

#

But I'm not at home now, so...

ancient nebula
#

its ok

solemn rivet
#

Think of it as Screw Attack in any metroid game

#

Great movement upgrade? Yup. OP? Sure!

ancient nebula
#

heh

solemn rivet
#

Deals lotsa damage? You can count on it!

ancient nebula
#

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

solemn rivet
#

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

vagrant leaf
#

gonna go keep making rando saves until i get that

ancient nebula
#

hahah

vagrant leaf
#

@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

solemn rivet
#

What do you mean?

copper nacelle
#

probably jumping then dashing

vagrant leaf
#

yeah can't dash in the air

solemn rivet
#

Wut

#

That's not supposed to happen

#

Can you diagonal dash after cloak?

ancient nebula
#

meanwhile ive found a way to double dash in air

vagrant leaf
#

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

vagrant leaf
#

@solemn rivet fixed it

#

turns out i just had the wrong version of the api

copper nacelle
#

lmao

young walrus
#

Classic

vagrant leaf
#

oh wait nevermind

#

still not working

#

rip

copper nacelle
#

rΔ“

young walrus
#

Double classic

vagrant leaf
#

works when i first start the game but then stops working

copper nacelle
#

when

#

on scene change?

#

or on hit?

#

or

vagrant leaf
#

just like

#

after a second

#

i dash once and then no more

copper nacelle
#

does it stay if you don't dash

#

and change rooms

#

like can you still dash (at least once)

vagrant leaf
#

idk let me check

#

nope

#

no dash

hazy sentinel
#

did you accidentally install zero dash mod

vagrant leaf
#

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

copper nacelle
#

weird

#

also zero dash mod is clearly the best mod

vagrant leaf
#

i think that Lightbringerβ„’ is clearly the best mod

exotic venture
#

it's gonna d i e

copper nacelle
#

what is

exotic venture
#

ur fsm lol get cucked

pearl sentinel
#

enemy randomizer works bretta 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

copper nacelle
hazy sentinel
#

n

#

i

#

c

#

e

copper nacelle
#

***__```css
N
I
C
E

hazy sentinel
#

ftfy

#

code block gay

copper nacelle
#

no u

hazy sentinel
#

oof

ornate rivet
#

ahh

#

guess what

#

oh wait

#

wrong channel

copper nacelle
#

:/

ornate rivet
#

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?

buoyant obsidian
#

You could learn C# (it's basically Java) and hack Unity games

ornate rivet
#

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

vagrant leaf
#

saleh mods when

rain cedar
#

You forgot a pretty important detail, 753

#

It's basically Java, except it runs well

ornate rivet
#

also strings are char arrays

#

which is really nice

copper nacelle
#

are strings not char arrays in java wtf

ornate rivet
#

nope sadgrub

#

you have to use commands like str.substring() or str.charAt()

solemn rivet
#

airdash works

vagrant leaf
#

oh wow

#

thanks a lot

#

yeah that was really annoying

ancient nebula
#

-oooooo excited for enemy randomizer-

solemn rivet
#

does anyone know the fsm for superdash?

rustic stag
#

I have the json file for FSM Viewer if that's what you mean?

solemn rivet
#

for superdash?

rustic stag
#

Yes

solemn rivet
#

then, can you send it to me plz?

rustic stag
solemn rivet
#

thanks!

rustic stag
#

No problem. Have like 1000 of these files, may as well do something with them

solemn rivet
#

kek

pearl sentinel
#

Could you make a zip of them? I'd love to look through them

#

And I have an idea for a use for them

rustic stag
#

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.

pearl sentinel
#

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

rustic stag
#

Until the new expansion/update comes out and they remove a bunch of FSM stuff.

pearl sentinel
#

Yeah

#

I hope the enemy fsms go away

#

But we'll see I guess

rustic stag
#

Right. But for all we know that won't be for a while, so might as well do it.

pearl sentinel
#

I been architecting my mod in anticipation of game-related things changing, so whatever happens it won't take long to update

copper nacelle
#

@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

pearl sentinel
#

yeah, having the files ready to parse like this though is really nice

copper nacelle
#

no i mean

pearl sentinel
#

oh yeah, i getcha, but that's not what i needed

copper nacelle
#

o

pearl sentinel
#

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

copper nacelle
#

ohh

pearl sentinel
#

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

copper nacelle
#

oof

pearl sentinel
#

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

buoyant wasp
#

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

pearl sentinel
#

hmm

buoyant wasp
#

cause they exist, somewhere, already in the code somehow

solemn rivet
#

I'm trying to add mid-air superdashes do blackmoth

copper nacelle
#

that's pretty cool

vagrant leaf
#

also @solemn rivet still having some trouble with blackmoth

#

dash doesn't reset when i cling to a wall or pogo off an enemy

solemn rivet
#

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

solemn rivet
vagrant leaf
#

let me see

#

yep that fixes it

#

thanks

solemn rivet
#

np

solemn rivet
#

how can I change a transition in an fsm?

rain cedar
#

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?

solemn rivet
#

I want to enable mid-air superdashing

#

I assume I just have to edit this one transition

rain cedar
#

Can you post the full fsm?

solemn rivet
#

sure

rain cedar
#

Nah that state looks like it's for checking if you should wall charge or ground charge

solemn rivet
#

yeah

#

but the Can Superdash? state references an empty method

#

HeroController.CanSuperDash()'s body is empty in dnspy

rain cedar
#

I'd try just skipping over that state anyway and see what happens

solemn rivet
#

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

rain cedar
#

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

solemn rivet
#

I'll try it and see what happens

solemn rivet
#

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?

hazy sentinel
#

debug mod idk

copper nacelle
#

isn't there a superdash fsm in HeroController?

rain cedar
#

Wow that's convenient

solemn rivet
#

you were right sean

#

it literally just stutters

rain cedar
#

Yeah, figured

solemn rivet
#

now I just need to trick it into thinking I'm standing on solid ground

copper nacelle
#

2x

hazy sentinel
#

now I just need to trick it into thinking I'm standing on solid ground

copper nacelle
solemn rivet
#

connection sux blah blah

copper nacelle
#

lol

solemn rivet
#

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

rain cedar
hazy sentinel
rain cedar
#

Wow too lazy to even remove the extra names smh my head

solemn rivet
#

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

copper nacelle
#

fixed

solemn rivet
#

I've ascended

copper nacelle
#

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

solemn rivet
#

you should have reacted to each one differently

#

spelling

#

ASCENDED

hazy sentinel
#

spelling "now I just need to trick it into thinking I'm standing on solid ground"

solemn rivet
#

even better

copper nacelle
#

I would if reacting worked

#

and I could actually react that entire sentence

solemn rivet
#

just use photoshop

copper nacelle
#

wait a second

#

I can

#

actually do it

#

I just have to react to another thing then copy over the reacts

solemn rivet
#

eh y no gif

copper nacelle
#

rip

#

also nice

#

also holy shit that's fast

#

imo get rid of the ending lag and then you can use it in combat

solemn rivet
#

gib gif plox

copper nacelle
#

why does copying gifs not work

solemn rivet
#

I can try uploading it

#

just a sec

copper nacelle
#

it's over discords upload size

#

yeah same happened to me

#

rip

solemn rivet
#

okay, NOW I can sleep peacefully

#

later everyone!

copper nacelle
scarlet sierra
#

That is why i have only low quality shitpost memes

limpid sand
rain cedar
#

Same

limpid sand
#

wheres my thicc hornet mod

rain cedar
#

There you go

wary drift
#

could have done a better job rescaling it Sean

rain cedar
#

You want to put effort into something like that, go ahead

#

I'm not gonna

fair rampart
#

Yeah man, its so much effort using an extra tool

solemn rivet
#

In about 12h I'll get started on making airsuperdash a thing

ornate rivet
#

airsuperdash?

solemn rivet
#

Dunno how long it'll take, tho, since I'm going to have to add a state with transitions to an fsm

ornate rivet
#

will it be a charm?

solemn rivet
#

Sure

ornate rivet
#

cool

solemn rivet
#

Make dashmaster useful again

ornate rivet
#

yay

exotic venture
#

mid air superdash

#

i wonder how many skips there can be with tha-- oh wait i know

#

everything

peak bear
#

is there a way to find the hell mod?

hazy sentinel
#

pinned

exotic venture
#

it's in the pins!

peak bear
#

oke

#

for the installer, where is the assembly?

#

or is there an easier way?

copper nacelle
#

?

#

which installer

peak bear
#

how would i open the debug menu from the debug mod?

exotic venture
#

press escape

#

and then press f1

#

in game ofc

peak bear
#

it doesn't seem to work...did i miss astep installing?

exotic venture
#

when you pause the game, do you see a bunch of words in the top left corner

sturdy jetty
#

Do mods work on Mac OS X?

exotic venture
#

with mod info etc

peak bear
#

no...

exotic venture
#

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

peak bear
#

right, since i missed something, what do i need to do

exotic venture
#

in the pins i made a step-by-step guide

#

try doing that

peak bear
#

oke, i was stupid. i forgot the api

exotic venture
#

pffff ok

copper nacelle
#

@sturdy jetty mods work on macOS

#

except for lightbringer and glass soul

fair rampart
#

Which version of unity studios in the pinned link should be downloaded?

rain cedar
#

Probably the latest

austere torrent
#

@leaden hedge did you add the charm thing?

leaden hedge
#

oh yeah i forgot lol

#

1sec

solemn rivet
#

ok

#

wish me luck

copper nacelle
#

on what

solemn rivet
#

implementing a functional mid-air superdash

copper nacelle
#

oof

cursive dirge
#

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

copper nacelle
#

did you install the api

cursive dirge
#

Ah, i didnt realize i had to re-install it.

solemn rivet
#

I think I got it

copper nacelle
solemn rivet
#

yup, got it

#

now for the hard part

vagrant leaf
#

what's the hard part?

hazy sentinel
#

diamond haha

solemn rivet
rustic stag
#

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.

solemn rivet
#

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

exotic venture
#

idontseehowthatcangowrong.jpg

solemn rivet
#

I mean

#

"breaking" is literally a non-issue

exotic venture
#

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

solemn rivet
#

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 hollowwoke

exotic venture
#

or actual cdash

solemn rivet
#

but

#

then it wouldn't be an upgrade

#

to the actual cdash, I mean

exotic venture
#

no charge up for cdash and using it mid air is not an upgrade

#

ok

#

til

solemn rivet
#

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

copper nacelle
#

how the fuck do you do the

solemn rivet
#

grubberfly

#

or do you mean

#

code-y stuffs?

copper nacelle
#

the grubberfly thing

#

but codey stuff would also be neat

solemn rivet
#

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

copper nacelle
#

both

solemn rivet
#
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)

copper nacelle
#

lol

hazy sentinel
copper nacelle
#

me_irl

solemn rivet
#

I've decided I'm going to tie air-superdash to void heart

#

now

#

does anyone know what charm name it is?

hazy sentinel
#

Charm_56 imo

solemn rivet
#

close

#

36

copper nacelle
#

isn't it 37

#

from 0-40

#

it's 36th

#

but charms are actually from 1

#

aren't they?

solemn rivet
#

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

copper nacelle
#

πŸ€”

#

can't be a surprise if you use dnSpy

solemn rivet
#

nah

copper nacelle
#

inb4 obfuscated code

solemn rivet
#

no one would actually SPOIL THE FUN

#

but, hey, you can air-superdash after meeting certain requirements

copper nacelle
#

certain

#

now I'

#

ve

#

got to play blackmoth

pearl sentinel
#

Upcoming UI for the mod loader, art by artist friend thoughts?

young walrus
#

Sexy

rose crown
#

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

thorn crescent
#

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?

rose crown
#

Oh cool!

#

The buttons

pearl sentinel
#

Yeah Paquito is taking the project and making it not look a programmer put it together :D

thorn crescent
#

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

rose crown
#

It works!

solemn rivet
#

Very very nice!

copper nacelle
#

make it infection orange

solemn rivet
#

Do eet

thorn crescent
#

that's a good idea

#

infection orange and green-path green : D

pearl sentinel
woeful plaza
#

It looks pretty great to me!

ancient nebula
#

new blackmoth ;o

hazy sentinel
#

vantablackmoth

solemn rivet
ancient nebula
#

OW

#

OW

#

WHATS THIS

solemn rivet
solemn rivet
exotic venture
#

WH

#

WAHHA

#

oh my god that's great

young walrus
#

hahahaha

exotic venture
#

it's perfect

rose crown
#

This is absolutely my favorite part of modding

#

right here

solemn rivet
#

the worst part is

#

it was supposed to rotate on 90 degrees per turn

exotic venture
#

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

solemn rivet
#

the knight = ded

solemn rivet
#

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

exotic venture
#

with the spinning?

#

oh man

solemn rivet
#

no spinning

#

I mean, I can leave it on

#

if that's what you want

exotic venture
#

nahh it's fine

#

better to leave as is

solemn rivet
#

I mean

#

the spin isn't always there

#

you have to press and hold UP for it to happen

exotic venture
#

oh my

#

yes

solemn rivet
#

nice!!!

pearl sentinel
#

ty πŸ˜ƒ

#

also your flipping superdash looks hilarious

solemn rivet
#

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

pearl sentinel
#

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

solemn rivet
#

wait

#

you're actually using canvas ui

#

niceΒ²

pearl sentinel
#

big thanks to whoever put together the original UI from the in-game mod manager

#

that's what i used as a base

solemn rivet
#

wyza iirc

buoyant wasp
#

nope, i just implemented it. @leaden hedge did all the hard work

#

i just wired it all together πŸ˜‰

leaden hedge
#

pretty sure it still randomly breaks the fullscreen button but don't tell anyone hollowface

solemn rivet
#

it also breaks resolution if you open it in the pause menu

leaden hedge
#

#notmyproblem

buoyant wasp
#

there's a fullscreen button?

pearl sentinel
#

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

solemn rivet
#

can't wait to try it

vagrant leaf
#

woah

#

neat

pearl sentinel
#

instructions:

  1. Press the giant ENABLE button first thing on startup
  2. go make a sandwich while it processes 69 scenes
  3. 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

vagrant leaf
#

what do i do with the "mainui" file

#

seems important

pearl sentinel
#

leave it in the folder with the .dll

vagrant leaf
#

the mods folder in the game files or just where it comes

pearl sentinel
#

\Hollow Knight\hollow_knight_Data\Managed\Mods\mainui

#

\Hollow Knight\hollow_knight_Data\Managed\Mods\EnemyRandomizer.dll

#

that's how the paths should look

vagrant leaf
#

that makes more sense

#

thanks

pearl sentinel
#

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

solemn rivet
#

will try it rn

pearl sentinel
#

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

solemn rivet
#

wish me luck

pearl sentinel
#

mostly results in extra enemies

#

oh fuck

#

hold up

#

i left one hardcoded debug thing on

solemn rivet
#

kek

#

is it a console thing?

#

if it is, I don't mind

pearl sentinel
#

no, i had it set to only load 5 scenes

#

instructions:

  1. Press the giant ENABLE button first thing on startup
  2. go make a sandwich while it processes 69 scenes
  3. 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
solemn rivet
#

kek

pearl sentinel
#

anyway, double checking it works then i gotta run off to work

solemn rivet
#

you were not kidding, this does take a long time to load

rose crown
#

I'm not seeing an enable button?

solemn rivet
#

up right

pearl sentinel
#

do you have the "Enemy Randomzier 0.0.1" text in the top left of your main menu?

#

might need the modding api installed

solemn rivet
#

do you have API installed?

rose crown
#

No, that's now showing up either

#

*not

pearl sentinel
#

ah that's why

rose crown
#

I do have the api

solemn rivet
#

show me your /Mods/ folder

young walrus
#

if the text isn't showing up, then you didn't do it right

solemn rivet
#

Hollow Knight/hollow_knight_data/managed/Mods

rose crown
#

Oh it installed into the wrong folder

young walrus
rose crown
#

I'll move it back

solemn rivet
#

um

#

are those pink particles always there?

pearl sentinel
#

nah, it's an artifact from processing all the scenes

rose crown
pearl sentinel
#

it'll go away once you start

solemn rivet
#

oh, gotcha

#

nice, Skeletal

#

I would suggest disabling the RandomizerMod

pearl sentinel
#

ok, just confirmed that the tutoral screen still isn't getting randomized, but crossroads is

solemn rivet
#

it's fine

#

eh

#

what are the default settings? Cause I didn't set anything

#

oops

pearl sentinel
#

default is that "types" are randomized only

#

so like, all flys should get shuffled to something else

#

like inflaters

solemn rivet
#

oh

#

found it in the pause menu

pearl sentinel
#

and also confirmed that the "trap ambush" at the bottom end of crossroads still softlocks >.<

solemn rivet
#

chaos mode is on!

pearl sentinel
#

but

solemn rivet
#

trap ambush? You mean the aspid?

pearl sentinel
#

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

vagrant leaf
solemn rivet
#

same here

pearl sentinel
#

go right and check out what's guarding the grub

solemn rivet
#

got a colosseum bug

pearl sentinel
#

:3

vagrant leaf
pearl sentinel
#

ok, i'll be on and on in chat on mobile all day

rose crown
#

Mine's working now

pearl sentinel
#

oh hey, perfect, thanks for that

rose crown
#

Sorry I suck with this stuff

pearl sentinel
#

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

copper nacelle
pearl sentinel
#

anyway, i'll be on mobile all day if people have questions just @ me if it's urgent

#

afk while driving to work

vagrant leaf
copper nacelle
#

time to try enemy rando

pearl sentinel
#

I personally like room randomizer the best :3

#

Also nice

copper nacelle
#

there's a room rando what

pearl sentinel
#

Er RoomMode

vagrant leaf
#

God tamer's pet thing is guarding grub

#

end me

#

i walk into the room and it starts charging at me immediately

copper nacelle
#

wtf my game changed colors when I hit enable

#

and then it crashed

vagrant leaf
#

yeah it's the area shaders

#

oh what

rose crown
solemn rivet
#

same here

vagrant leaf
copper nacelle
#

wait nvm it just minimized

#

and won't open again

pearl sentinel
#
  1. Try using my modding api
copper nacelle
#

like if I hit Windows+Tab I can see it

solemn rivet
#

it's loading

#

takes a few minutes

pearl sentinel
#

Oh, it's loading

solemn rivet
#

actual minutes

copper nacelle
#

tfw I have 1 fps

vagrant leaf
solemn rivet
#

yup

copper nacelle
#

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

pearl sentinel
#

"Feature"

vagrant leaf
solemn rivet
#

no geo dropped

copper nacelle
rose crown
vagrant leaf
#

from what i saw geo doesn't drop from enemies that don't normally drop geo

copper nacelle
#

I also got no geo from that guy

solemn rivet
#

killed two enemies in crossroads, but no geo

#

oh

vagrant leaf
#

like colosseum enemies didnt drop geo for me

solemn rivet
#

that must be it

copper nacelle
#

fuck

#

I can't do the mosquito skip now

#

time to git gud at the fireball skip

solemn rivet
copper nacelle
#

ohshit

#

does that mean mawlek is somewhere

#

also what will gruz mother spawn

pearl sentinel
#

All good questions

#

No idea

copper nacelle
vagrant leaf
#

wait is there any way to skip the aspid fight

#

i want to avoid softlock