#archived-modding-development

1 messages ยท Page 63 of 1

fair rampart
#

Sorry, I thought you said that you had the object checking rate just set to 100, not that it could by dynamically adjusted per scene ie large scenes it would be kept 100 or so, but for smaller scenes you would crank it up a bit higher - dynamic throttling

thorn comet
#

Remastered update should clean up a lot of things, hopefully haha

young walrus
#

When's it dropping, simo

#

wink wink

pearl sentinel
#

Oh, there's not really a point in that. Small scenes are fully randomized before load is done already

#

Also, since an update is coming, all optimizations are premature until that happens

#

Getting the core logic right is more important with the little time I have

young walrus
#

I like how Simo ducked out.

pearl sentinel
copper nacelle
pearl sentinel
#

We should poke them about getting the modding api in as a base part of the assembly imo

copper nacelle
#

that would be neat

#

but also harder to add new hooks

pearl sentinel
#

Eh, more stable though

solemn rivet
#

I honestly would love if at least some of enemy and hero logic went into code instead of fsm

#

would be so much easier to do much better mods

ornate rivet
#

does anyone happen to know how the nihilist cipher works with 2 keywords

#

looks like I am taking an L on this assignment then

copper nacelle
#

oof

#

what's the assignment?

ornate rivet
#

code a nihilist cipher decrypter and encrypter

copper nacelle
#

๐Ÿ‘€

ornate rivet
#

I think wikipedia is actually useful this time

copper nacelle
#

found this

ornate rivet
#

I dont want the code

copper nacelle
#

ik

ornate rivet
#

I just want to know how it works

solemn rivet
#

wiki for days

copper nacelle
#

this doesn't make sense at all

solemn rivet
#

wut

copper nacelle
#

with my 10 seconds of looking

#

ofc

#

it probably makes sense

ornate rivet
#

the wiki actually makes sense

#

so I think I got this now

#

I say that, but it probably wont give me an answer that makes sense when I make it decrypt

solemn rivet
#

I don't get how to make the Polybius square out of a keyword

copper nacelle
#

^

ornate rivet
#

you write the keyword

copper nacelle
#

also additive keywords

ornate rivet
#

without repeating letters

solemn rivet
#

I mean, I can see "zebras" there

#

but what about the other letters?

ornate rivet
#

then continue the alphabet

#

without repeating the letters in keyword

solemn rivet
#

o

#

got it

#

seems easy enough

copper nacelle
#

additive keywords tho

ornate rivet
#

yea, it's weird, the wiki is the only place that seems to teach it

#

usually I look at videos

solemn rivet
#

I mean, sure

#

you gotta have both the keyword and the key to decrypt it

ornate rivet
solemn rivet
#

but you have to make it with two keywords, you said?

#

also

#

fbi is onto you

ornate rivet
#

you dont actually need the keywords either, from what I remember from my teacher's lecture, you can break it by finding the pattern in the keywords

#

or something like that

#

I dont remember

solemn rivet
#

sure sure

ornate rivet
#

I should have taken notes

solemn rivet
#

but I don't mean codebreaking

#

I mean actual decrypting

ornate rivet
#

right

#

ok

#

bye now

#

thanks for the help

solemn rivet
#

well, we didn't help but ok

copper nacelle
solemn rivet
#

bye

copper nacelle
#

tfw still don't get additive keywords

#

1 keyword seems simple

#

is 2 keywords just one keyword with the words next to each other

ornate rivet
#

that's what I am going for

#

I'll see if that works

copper nacelle
#

except not

ornate rivet
#

lol

copper nacelle
#

tbh this explains it better than the page tho

ornate rivet
#

it's not loading for me

copper nacelle
#

rip

ornate rivet
#

nvm

copper nacelle
#

lol

ornate rivet
#

"This example is taken from Wikipedia. First we take our key (ZEBRAS) and create a Polybius square:"

copper nacelle
#

then they do something with russian

#

and magic

ornate rivet
#

this is great

#

thanks

solemn rivet
#

they find each coordinate for each letter of the plain text

#

then find the coordinate for the keyword's letters

copper nacelle
#

except one letter is dead

solemn rivet
#

and add them up

#

yeah

#

makes close to 0 sense

ornate rivet
#

Fun fact, the nihilists managed to encrypt and decrypt 10-15 words per minute

#

using this method

solemn rivet
#

well, it's just subtraction

ornate rivet
#

and would tap messages to each other

copper nacelle
#

what letter do you kill tho

solemn rivet
#

if you give me the output numbers and the keywords... It's pretty quick to decrypt

#

X

#

always X

ornate rivet
#

or J

copper nacelle
#

14 13 34 14 15 35 34 31 54 12 24 45 43

#

is russian

#

for dynamite winter palace

#

with just the polybius thing

solemn rivet
#

wut

#

23 55 41 15 35 32 45 12 53 32 41 45 12 14 43 15 34 15 22 12 = Dynamite Winter Palace

copper nacelle
ornate rivet
#

that doesnt automatically use 2 keywords

#

lazy design

solemn rivet
#

oh

copper nacelle
#

14 13 34 14 15 35 34 31 54 12 24 45 43

#

for zebra

solemn rivet
#

why are you making the square with RUSSIAN?

copper nacelle
#

because I don't get additive keys

#

and am guessing

solemn rivet
#

make the square with ZEBRAS

#

wait

#

wait

#

waiiiiit

#

what keys are additive?

copper nacelle
#

zebras + russian

#

or something

ornate rivet
#

the second key

solemn rivet
#

the ones to make the square, or the ones to add

#

oh

ornate rivet
#

add

#

additive

solemn rivet
#

yeah, that's what I was thinking

#

so it's something like

#

make the square with ZEBRAS

ornate rivet
#

then turn plaintext to number

solemn rivet
#

and use RUSSIANS and AMERICANS to encrypt DYNAMITE WINTER PALACE

#

I guess... Just add them all?

ornate rivet
#

then turn second key to number

#

then add

#

yep

copper nacelle
#

that's what i was trying

#

except it didn't reset output

#

so I got the same thing for zebras and russian

#

and realized I wrote zebra instead of zebras

ornate rivet
#

lol

solemn rivet
#

so max value becomes... 165

#

still a stupid cipher

copper nacelle
#

tfw the polybius square creator thingy doesn't even work

#

fml

ornate rivet
#

lol

copper nacelle
#

looked over the example

#

which makes sense

#

ah

#

i'm going to try and make a program to decode this

#

inb4 failure

solemn rivet
#

that site is shite

copper nacelle
#

what

#

it's the only one which made any sense at all

solemn rivet
#

it's converting it all wrong

#

not yours

copper nacelle
#

ahahaha

#

that's the one I was trying to use

#

it only gave me one output

#

for 3 different grids

solemn rivet
#

yeah

#

and the same to me

ornate rivet
#

ugh

solemn rivet
#

so AMERICANS becomes 15 41 12 14 32 22 15 42 21

#

sigh

copper nacelle
#

this is slightly

#

very painful

solemn rivet
#

I wouldn't want to code this

#

not hard, just... Painful

copper nacelle
#

why is it a grid

#

W H Y

#

nested arrays time

solemn rivet
#

just use a boring old array

copper nacelle
#

don't you need column and row?

solemn rivet
#

and to get coordinates just use mod 5

#

for column

#

for row...

copper nacelle
#

wtf magic

solemn rivet
#

just divide the index by 5 and floor it

#

done

copper nacelle
#

gradow confirmed magic

solemn rivet
#

or ceil it actually

copper nacelle
#

how

#

did you get that

#

like it works

#

but how

#

oh 5x5 grid

#

still magic

solemn rivet
#

so array[14] is "grid position" ceil(14/5)=2, 14%5=4, so position (2,4)

copper nacelle
#

why does that work

#

oh

#

wait

solemn rivet
#

uh

#

I mean...

copper nacelle
#

nvm

solemn rivet
#

first row goes from 1-5, second from 6-10 and so on

#

oh, oka

#

nvm then

copper nacelle
#

i think i got it

solemn rivet
#

just think base 5

copper nacelle
#

ohhh

#

ok got it

solemn rivet
#

14 converted to base 5 is 24... Which is just what we want

copper nacelle
#

tfw website excludes J

solemn rivet
#

I'm by no means expert in cryptography and such

#

but from what I've seen, people tend to exclude X

#

and sometimes J

ornate rivet
#

I just realized the reason it wasnt working for me was because I was omitting Z and not J

copper nacelle
#

oof

ornate rivet
#

My teacher never told us which letter he took out in his examples

#

actually maybe he did

copper nacelle
#

lmao

ornate rivet
#

I probably didnt pay attention

solemn rivet
#

you have like 1/26 chances of getting this right

#

good luck

copper nacelle
#

lol

#

nearly done w/ decode

#

tfw one off

#

on the y

#

w/ modulo

#

idk why

#

just going to add 1 ยฏ_(ใƒ„)_/ยฏ

solemn rivet
#

umm

copper nacelle
#

did not work

solemn rivet
#

wouldn't it be simpler to just write a simple base10 to base5 converter

copper nacelle
#

uhhh
shut

solemn rivet
#

and then ask it to parse the array indexes?

copper nacelle
#

yes

solemn rivet
#

ask it politely tho

copper nacelle
#

wait no

#

that seems like more effort

#

tbh

#
['51', '12', '13', '21', '11', '32', '12'] 
['43', '12', '42', '43']
#

current output

#

pre adding

#

idk why it starts dying

solemn rivet
#

oh

copper nacelle
#

nvm

#

badcode

solemn rivet
#

you have to repeat the lower array

copper nacelle
#

no I mean the arrays preadding are wrong

solemn rivet
#

to match the length of the upper

#

oh

copper nacelle
#

it should be

#

52 12 13 22 14 33 12

#

instead I have

#

['51', '12', '13', '21', '11', '32', '12']

#

i think ik why tho

solemn rivet
#

uh...

copper nacelle
#

found it

#

set as dedup breaks

#

do not use

#

fixed it

ornate rivet
#

data tables in c# are so useful

copper nacelle
#

yay

#

decoder done

#
#!/usr/bin/env python

# why am I doing this

from string import ascii_lowercase as alphabet
from math import ceil
from collections import OrderedDict

key = list(OrderedDict.fromkeys(input("KEY: ")))
additive = input("ADD: ")
exclude = input("EXCLUDE: ")
string = input("STIRNG: ")


def convert(key, additive, exclude, string):

    # make key
    for i in filter(lambda x: x not in key and x != exclude, alphabet):
            key.append(i)
  
    def rawConvert(key, string):
        ans = []
        for i in string:
            ans.append(str(ceil(key.index(i) / 5)) + str((key.index(i) % 5) + 1))
        return ans
    
    string = rawConvert(key, string)
    additive = rawConvert(key, additive)
    alen = len(additive)
    
    for i in range(1, len(string)+1):
        if i > alen:
            index = (i % alen) - 1 if (i % alen) != 0 else alen
            additive.append(additive[index])

    string = [int(x) for x in string]
    additive = [int(x) for x in additive]
    print([string[x] + additive[x] for x in range(len(string))])


convert(key, additive, exclude, string)
#

it's very bad

ornate rivet
#

lol

copper nacelle
#

wait a second

#

that was an encoder

#

oof

ornate rivet
copper nacelle
#

decoder seems simple enough

#

time to make

#

inb4 not simple

ornate rivet
#

inb4 it takes another 30 minutes

copper nacelle
#

plsno

hazy sentinel
#

shouldn't take more than 5 min

ornate rivet
#

_verupls

#

well I finished it 56 and I think it works (I tested it once), I am going to bed now, have a nice day/night/whatever

copper nacelle
copper nacelle
#
def decode(key, additive, exclude, string):

    # make key
    for i in filter(lambda x: x not in key and x != exclude, alphabet):
            key.append(i)

    def rawConvert(key, string):
        ans = []
        for i in string:
            ans.append(str(ceil(key.index(i) / 5)) + str((key.index(i) % 5) + 1))
        return ans

    additive = rawConvert(key, additive)
    alen = len(additive)
    for i in range(1, len(string)+1):
        if i > alen:
            index = (i % alen) - 1 if (i % alen) != 0 else alen
            additive.append(additive[index])

    ans = ""
    string = [int(x) for x in string]
    additive = [int(x) for x in additive]
    string = [string[i]-additive[i] for i in range(len(string))]
    print(string)
    for i in string:
        i = str(i)
        index = (int(i[0])-1) * 5 + int(i[1])-1
        print(index)
        ans += str(key[index])
    print(ans)
#

decoder

#

key would be like "hello"
additive would be like "test"
exclude would be like "j"
string would be like "96 24 56 66 58 45 55"

clever badge
#

@scarlet gale anyone have a link to the bonfire mod download? sorry if stupid question im new to this discord zote

vagrant leaf
#

check pins

#

there's a google drive with all the mods

clever badge
#

ahh my b

#

thanks

#

hmm any reason why it would keep crashing my game? cant even open hk with the bonfire mod installed, just tells me the game crashed

#

have steam version and downloaded mod ver 1.2.1.4

rustic stag
#

Wouldn't that be outdated? Don't you want the API version?

vagrant leaf
#

^

#

you should get the API

clever badge
#

whoops

vagrant leaf
#

and the latest version

rustic stag
#

Speaking of broken, though. I think something is wrong.
He just keeps staring at me.

clever badge
#

thank you my friends much appreciated

rustic stag
#

Quick question. I know images can be built into .dll files, but does the Modding API support replacing vanilla assets?

#

Or I guess 'overriding' would be the more accurate term.

pearl sentinel
#

figured out why mantis traitor lord and nosk weren't spawning

#

so..... play this one at your own risk

#

more updates to come tomorrow (i hope)

#

Also randomly had a mage knight jump me in crossroads

fair rampart
#

Spawns tied to some other logic? Or were they too big and clipped out?

solemn rivet
#

you can use a mod installer to install any mod for you - either mine or kerr's @clever badge

#

eh

#

guess he's not in here anymore

thorn comet
#

@clever badge

solemn rivet
#

wth

#

he doesn't even show up in auto-complete

#

and when I right-click mention him, he doesn't get tagged

#

oh well, thanks simo

thorn comet
#

Haha thats weird, no worries. Im on mobile and I just tapped on his name

rain cedar
#

Showing up in auto complete for me

solemn rivet
#

shows up for me in mobile too

#

weird

#

updating my client

#

okay, working now

clever badge
#

@solemn rivet gracias muchacho, got it all set up though thanks!

pearl sentinel
#

I should randomize in grey prince zote, and scale him down so he looks like normal zote

solemn rivet
#

do it the other way around

#

make mighty zote deal GPZ+10 damage

#

since it seems that mighty zote likes to appear EVERYWHERE

fresh furnace
#

make zote really small and not that strong, but you have to fight 10 at once

solemn rivet
#

what would you rather fight - 10 small-sized GPZ or 1 giant-size Mighty Zote

pearl sentinel
#

Maybe if I could make the tiny gpz's able to be knocked back like normal zote

vagrant leaf
#

@pearl sentinel is it possible to randomize dream warriors?

pearl sentinel
#

You mean the ghosts?

vagrant leaf
#

yeah

pearl sentinel
#

Can't see why not

vagrant leaf
#

like can they be randomized in place of normal enemies

pearl sentinel
#

Oh

#

Unlikely

#

I mean, with some work put in I could probably make that happen

#

But it would take a lot of effort, and for what gain?

vagrant leaf
#

yeah good point

#

i just thought it would be interesting to have more actual bosses in

pearl sentinel
#

Like, say it took me 2 weeks to get that working. I could spend those 2 weeks making better logic for this mod or even on a new mod

vagrant leaf
#

yeah that makes sense

pearl sentinel
#

Current version should have a few more bosses tho

vagrant leaf
#

Woah

#

Which bosses

pearl sentinel
#

Nosk and traitor lord for two

#

Can't remember if I added others

#

Also, I temporarily removed the "big" enemy category

#

So they're all just small or med

#

Meaning way more randomization combinations are possible

vagrant leaf
#

That sounds fun

#

I'll try that out once I'm home

pearl sentinel
#

Since scaling mawlek turrets worked so well, I think I may end up removing all restrictions on enemy replacements and instead scale the replaced enemy to be the size of the original

vagrant leaf
#

That would be great

#

So giant crawlids?

pearl sentinel
#

Could happen

vagrant leaf
#

Neat

pearl sentinel
#

Also tiny kingsmoulds

vagrant leaf
#

Tiny god tamer when

lusty lantern
#

now kind of wants a platforming section based around bouncing off of kingsmoulds for a long time through small areas

solemn rivet
#

I was bored and decided to make the nihilist cipher from last night

#

yay, I'm productive

copper nacelle
#

nice

solemn rivet
#

it was a good excuse to finally learn some python

copper nacelle
#

Python is pretty great imo

solemn rivet
#

I'm still getting used to it

copper nacelle
solemn rivet
#

dank

buoyant obsidian
#

and who knows C and wants to do my C homework

rain cedar
#

Know C โœ…
Want to do your homework โŒ

copper nacelle
#

lmao

#

@buoyant obsidian because modding is where all the programmers are

#

idk about the college thing tho

vagrant leaf
#

@copper nacelle is the latest hell mod on the drive

copper nacelle
#

uh

#

iirc yes

vagrant leaf
#

neat

copper nacelle
#

check the readme for zote if you want to make sure

vagrant leaf
#

re

#

can't open readme

copper nacelle
#

rip

#

you can just open it in notepad

fair rampart
#

Is there a way to selectively take damage from enemies/hazards? Ie make spikes and thorns an instant kill but only double damage from all other enemies? Seen the HazardType enumeration, but thorns seem to be included as NON_HAZARD...

rain cedar
#

You could add a hook into the hazard respawn method and kill the player

#

Then just double all damage taken

fair rampart
#

Ah, didn't consider looking for a hazard respawn hook, sounds perfect, cheers

rain cedar
#

There isn't a hook currently, but the function is GameManager.HazardRespawn

#

You can add the hook yourself and submit a pull request for it

charred parrot
#

could someone just quicly throw me the script that controls the Knights basic movement?

copper nacelle
#

script?

charred parrot
#

ya like the code behind it

#

assuming it's controlled by code and not fsm

copper nacelle
#

dnspy imo

versed anvil
#

2/1/2018 5:11 PM

copper nacelle
#

what

versed anvil
#

who was it that asked me to remember that date?

#

probably should have written that down too

copper nacelle
#

might have been me

#

I remember asking someone to remember a date

#

because I was using it to get all of Jonny's typos

#

I don't think it was that date tho

vagrant leaf
#

veru already has those

copper nacelle
#

ik

#

I was grabbing them from chat using 56 but bot for !jonnypls

#

before bot got muted

vagrant leaf
#

oh

#

petition to mute 56 but unmute bot

copper nacelle
#

:/

fair rampart
#

Is it possible to change how much damage the soul attacks do? I see references to their levels, but these don't seem to be used to calculate the damage dealt?

copper nacelle
#

iirc there's a hook for it

#

also iirc, bonfire uses it

solemn rivet
#

It's all fsm

#

Like 56 said, check BonfireMod

#

GetEventSenderHook(GameObject, Fsm)

#

It basically tells you who (go) is attacking who (fsm)

#

So you check is the fsm has an "enemy_health" var and if it does, you set the damage of the go to be whatever you want it to be

#

In the case of spells, Wyza put a switch-case to determine if the go actually is a spell

#

In blackmoth, for instance, I simply check it against the sharpShadow object I have already fetched

#

On mobile, so can't send you code

fair rampart
#

@solemn rivet
All good - checked the bonfire code and got some stuff working, trying to mess around with Nail damage atm, I know once the PlayerData.NailDamage gets modified you need to call the FsmGlobalBroadcast (or whatever that stupid thing is called) but it didn't seem to correctly update the nail damage ie stuff that should easily be dying in one hit still took a few, etc.

solemn rivet
#

how often are you updating it? Also, use the console to output the damage you're dealing

#

you can set nail damage via that same hook I said above btw

#

dunno if you need to call FsmBroadcastEvent("NAIL DAMAGE UPDATED") in that case

zinc turret
#

Would a level editor mod be possible in hollow knight

solemn rivet
#

limited, but possible

zinc turret
#

Awesome

obtuse sequoia
#

is adding scenes at all possible?

solemn rivet
#

iirc you cannot import objects from other scenes

#

I might be wrong/outdated tho

#

@obtuse sequoia I'm not entirely sure.

#

I think so - look at kcghost's cut content mod

obtuse sequoia
#

I mean how did Team Cherry make the rooms?
did they have a specific hk editor, or just used unity
(I don't actually really know what unity is)

solemn rivet
#

uhhh

#

I think they did it all in unity?

obtuse sequoia
#

so if we were to make more rooms in unity
and just.. shove them in somehow?

#

this is probably a huge oversimplification

pearl sentinel
#

You could, you would need to add any hk specific components through script manually after import is all

#

That's actually something I intended to add for part of my mod, which is why it imports stuff from a unity scene in the first place.

#

My "enable enemy randomizer" button comes from an asset bundle built in unity and imported by my mod

#

While unnecessary to do it that way, it laid the foundation for me to build.... whatever I want into the asset bundle in unity and add it to the game. So I could make whole levels if I wanted or even fully animated characters (assuming I had the graphics in the unity project)

#

So if I wanna add my own custom bosses or enemies or w/e it'll actually be super easy smallestviolin

obtuse sequoia
#

woah

#

that sounds promising

pearl sentinel
#

Probably post update, I hope to add some custom content eventually

#

Maybe I can recruit my artist friend and we can try to recreate the bone forest zone that was cut or something, since he likes to do environment art @thorn crescent happygrub

fair rampart
#

Am i the only one who is having a lot to trouble to extracting the sound effects?
When i tried to extract some sounds it keeps sending me white sound thinkgrub

solemn rivet
#

what are you using?

#

try Unity Studio

#

I extracted some sound effects some time ago for someone on this channel

fair rampart
#

i'm trying to extract all of the radiance sounds library and idk if i am doing something wrong.
And yes, im using unity studio to extract the fsb

solemn rivet
#

Can you play it using the play button on the right hand side on Unity Studio? To check if it's blank before exportation

fair rampart
#

every sound file stops itself sadgrub

solemn rivet
#

let me try it real quick

#

do you when which resource.asset file has it?

fair rampart
#

Anything than else, what unity studio do you use?

#

i downloaded this

solemn rivet
#

it's on pins

fair rampart
#

let me try it

#

Thank you, it was the version of unity studiosmallestviolin

solemn rivet
#

np!

pearl sentinel
copper nacelle
fair rampart
#

@solemn rivet
For the FSM, is there a handy dump of all the strings to objects? Trying to guess TC's naming convention is impossible.

solemn rivet
#

Ehhh I think Kerr has one

bright mist
#

can I get a link to the bonfire mod?

hazy sentinel
#

pinned drive

hollow pier
#

its almost like all the mods are pinned

bright mist
#

oof sorry

hazy sentinel
#

not all the mods

hollow pier
#

right conrad isnt

solemn rivet
#

You can use the installers too

#

They auto install mods

hollow pier
#

plugging mod installer hollowwoke

hazy sentinel
#

i don't trust installers

#

could be viruses

solemn rivet
#

Ehh

#

Not this discussion again

rain cedar
#

It's fine to be wary of unknown software

#

Being scared of the installers but not the mods is fucking stupid

solemn rivet
#

You heard what Sean said - don't trust the mods, specially Jonny

#

You can trust Dargons tho

thorn comet
#

But uh, Admins are fine yeah? hollowface

vagrant leaf
#

they have the mod role

#

ofc not

solemn rivet
#

^

terse nova
#

how do you download the boss rush mod???

royal ridge
#

The pinned messages!
The google drive has all the mods
and the youtube video shows you how to install them

terse nova
#

thanks!

pearl sentinel
#

So it looks like to fix the soft locks, I just need to tell the battle control FSMS that the waves or battles are over

solemn rivet
#

It's an event?

solemn rivet
#

I might just do that to fix FK not working on blackmoth

fair rampart
#

Is it possible to have the player respawn the same way from spikes/acid/etc from damage caused by ANY enemy? Ie all damage causes the character to respawn but not die and go back to a bench.

copper nacelle
#

yeah

#

just call hazard respawn on damage

#
        public override void Initialize()
        {
            Log("Initializing");
            ModHooks.Instance.TakeHealthHook += OnDamage;

        }

        private int OnDamage(int damage)
        {
            HeroController.instance.HazardRespawn();
            GameManager.instance.HazardRespawn();
            return damage;
        }
#

except you probably would want to do something about the knockback because rn it respawns you then knocks you back

fair rampart
#

@copper nacelle
Derp, for some reason I thought I needed to set a flag and call something obscure, didn't consider to literally call those funcs, thanks

copper nacelle
#

lol

#

yw

warped hollow
#

what does the unending dreams mod do?

hollow pier
#

makes your dreams not end

copper nacelle
#

dream bosses and warriors respawn

solemn rivet
#

@pearl sentinel what's that fsm? I might try messing with it

pearl sentinel
#

from my debug log:

#

[INFO]:[EnemyRandomizer] - --Component: PlayMakerFSM
[INFO]:[EnemyRandomizer] - --PFSM Name: Battle Control
[INFO]:[EnemyRandomizer] - --PFSM FsmDescription:
[INFO]:[EnemyRandomizer] - --PFSM StateNames
[INFO]:[EnemyRandomizer] - ----PFSM StateName: Detect
[INFO]:[EnemyRandomizer] - ----PFSM StateName: Init
[INFO]:[EnemyRandomizer] - ----PFSM StateName: Wave 1
[INFO]:[EnemyRandomizer] - ----PFSM StateName: End Wait
[INFO]:[EnemyRandomizer] - ----PFSM StateName: End
[INFO]:[EnemyRandomizer] - ----PFSM StateName: Pause
[INFO]:[EnemyRandomizer] - ----PFSM StateName: Activate
[INFO]:[EnemyRandomizer] - ----PFSM StateName: Wave Pause
[INFO]:[EnemyRandomizer] - ----PFSM StateName: Wave 2

#

looks like battle control might be in fallen knight too

solemn rivet
#

do you have the json for that fsm?

#

if not, that's fine

pearl sentinel
#

i don't

#

hence why i'm doing some debug printing like this

#

the game object with the FSM also has a PersistentBoolItem component that needs to be set

#

when it completes, i assume

solemn rivet
#

hm...

#

what does PFSM stand for? Playmaker FSM?

pearl sentinel
#

yeah

#

i have a script that prints all game objects in a scene, including their components

#

and for the PFSM component i print out additional details

copper nacelle
#

battle fsms

#

because idk which one it is

solemn rivet
#

I looked through some fsm's I have here, but couldn't find any fsms with that tag

#

oh

#

thanks 56!

pearl sentinel
#

oh nice

#

that'll save some time

#

ty

copper nacelle
#

yw

solemn rivet
#

also, found this:

#

seems like every PlayMaker action decompiled

#

which is nice, since it helps us make sense of what each state does

#

SendEventByName(0,BG OPEN,,FALSE) seems to mean 0 seconds delay, send event "BG OPEN", the empty string is probably the base game object, and to not do this every frame

#

so you can probably just look for "Battle Control" fsm in a game object and set its state to "End" manually whenever you want to

solemn rivet
#

okay, made a version of blackmoth that checks if current scene has a Battle Control fsm and, if it does, creates a list of every enemy in the scene. Then, as soon as every enemy has 0 HP the Battle Control fsm gets set to state "End"

#

sadly cannot test this rn

pearl sentinel
#

funny, i was gonna do that, but some scenes don't have every enemy in the battle area, so i'm gonna probably make a Bounds object for the specific scenes with the battle controls that's positioned around the battle room and use that

solemn rivet
#

For me, I'm only trying to fix FK

pearl sentinel
#

yea

#

well

solemn rivet
#

So it would be best to actually get its object and test its hp only

pearl sentinel
#

do the 2 maggots exist up above?

solemn rivet
#

But I might try this as a proof of concept

pearl sentinel
#

that could throw it off

solemn rivet
#

Yeah

#

It would be better if I could find FK's fsm and change it directly tbh

pearl sentinel
#

prob could

#

i think it's

#

uh

#

(hold on i grepped for this last night)

copper nacelle
#

lol

pearl sentinel
#

it's the "Head" object

copper nacelle
#

not using rgrep or ag

#

ban

pearl sentinel
#

i'm a linux novice, at least i have cygwin on my windows environment now to use its neat features

#

had to use it for work for a few years

solemn rivet
#

Falsey_Control

pearl sentinel
#

then we moved to windows

solemn rivet
#

Best fsm name

pearl sentinel
#

don't miss it

#

yo i'd never tried dnspy until yesterday

#

that shit is awsome

#

i may have spent the day digging through the source of other games

#

<_<

copper nacelle
#

how did you write enemy rando w/out dnspy wtf

pearl sentinel
#

?

#

i used the modding api

copper nacelle
#

doing anything w/out being able to check dnspy

#

is pain

pearl sentinel
#

if i had to compare writing a hollow knight mod

#

the difficulty is like a 4/10 compared to what i deal with at work

copper nacelle
#

lol

pearl sentinel
#

so

#

let me tell you about the worst decision ever made

#

that i've come across

#

in programming

solemn rivet
#

I mean, without dnspy it's a pain to know where each hook hooks onto, what are the parameters and stuff

copper nacelle
#

vs has the auto method thing

pearl sentinel
#

without dnspy? i just use peek definition and such

#

examine types

#

etc

#

just read the code

solemn rivet
#

Peek definition is useless for me

#

I never know what the hook actually hooks onto

copper nacelle
#

peek definition of hook

pearl sentinel
#

i mean, i figure the hook names were pretty self explanitory

copper nacelle
#

peek definition of stuff inside peek definition

pearl sentinel
#

but a couple times i just opened the source of the modding api on github and looked

solemn rivet
#

I know, but, BlueHealthHook, for instance, actually returns the base blue health for the hero

#

And iirc the description only states that it's called at the beginning of the BlueHeath method

pearl sentinel
#

yeah, i getcha. still less fucked by far than what i deal with on a daily basis, so idk.

solemn rivet
#

Heheh

copper nacelle
#

lmao

pearl sentinel
#

but like, lemee tell you about this

#

so, over-engineer tragedy at its finest here

#

first, all our games (all) are client/server

#

server and client are separate processes

#

server is c++

#

client is c#

#

99% of the time they run on the same machine

#

both have "state machines"

copper nacelle
#

why are they in different languages

#

tf

pearl sentinel
#

the way a state machine works, you have a class that does something like this in the state machines' Init function

#

smParams.AddState("StateName");

copper nacelle
#

FSMState irl

pearl sentinel
#

smParams.AddTransition("StateName",Event,Callback);

#

how heres where it gets super fucky

#

so say you want "OpenDoorEvent" to trigger a transition to the PauseGame event

#

you need to add a transition for that for each state

#

that should handle that

#

so we got these really code-bloated state machines on both the server and the client

#

and they send messages back and forth to eachother

#

so say you want to add some code or a state to the server side or client side

#

well, if the server side state machine sends out a message (or you do by hand), and the client isn't in a state that can handle the message, it'll just get queued up and ignored

#

if the server sends a message with the "client must respond" and you send not-the-expected message back next, assert, crash both programs

#

on average, the server part of a game has 5 - 7 state machines running

#

and a client has 10-15

#

and there is no (provided) way to send messages between parts of the game without using the state machines

copper nacelle
#

why

pearl sentinel
#

it's basically like HK's FSMS, but they're used as an event/message system

#

AND the client/server ones are setup to be mirrored/intertwined

copper nacelle
#

hk fsms have a broadcast thing too

#

iirc

pearl sentinel
#

broadcast here can cause duplicated events

#

(in ours)

#

if you're not careful

copper nacelle
#

oof

pearl sentinel
#

basically, i've been in the process of refactoring to remove these things from my games a little bit at a time

copper nacelle
#

hk has these:

HeroController.instance.proxyFSM.SendEvent("HeroCtrl-Healed");
PlayMakerFSM.BroadcastEvent("UPDATE BLUE HEALTH");
pearl sentinel
#

yep, and if the server was in a state that didn't handle that, or was expecting a different event, crash

#

oh yeah, the server crashes if the client goes down.... which totally defeats one of the major potential benifits of even having a client server architecture

#

also, because "internet is slow", the client/server communicate through a custom IPC (interprocess communication) kernel that our OS team writes

copper nacelle
#

what the fuck

pearl sentinel
#

but, data is first converted using something like ice or protobufs to the format you would normally expect for a TCP communication

#

and this is like... the tip of the iceberg

#

if you think things are bad here, they could be so much worse

#

oh, one other cool thing

#

we had a guy in the audio part of our OS team that thought it would be a great idea to turn XML into a scripting language

#

he literally wrote a full set of compilation rules and a tool to compile them and then made that the only way game devs could play sounds

#

you had to learn his "SPL" language and write scripts in it

#

he did this because he complained that playing audio through unity/windows had a lot of "latency"

copper nacelle
#

thefuck

pearl sentinel
#

since he was the only one who knew how the thing worked, i warned it was gonna be a horrible ending when he left/quit/got hit by a bus

#

he quit like a month ago

copper nacelle
#

oof

pearl sentinel
#

so, good news for battle scenes is, they come with a collider on them that's the area of the battle scene

#

was able to make a script that keeps track of rando enemies in a battle scene area and tell the FSM to move to the next state if the player is inside it with no enemies

#

bad news is, it opens the doors a bit early

#

but... i think i'll take it

#

also figured out why the micro crystal guardian is broke, he needs a target specified and it's throwing a null ref, so i think if i fill that in for him he'll happily laser you

cunning basalt
#

anyone here who knows how to mod hollow knight on mac with steam succesfully ??

copper nacelle
#

mod as in make mods

#

or mod as in install mods

cunning basalt
#

install mods

#

like the mods that were already created by awesome people

young walrus
#

partyPorg use the MOD installer partyPorg

copper nacelle
#

does the mod installer work on mac

young walrus
#

oh mayb not

copper nacelle
#

@cunning basalt do the thing mystery said in the pins

#

except w/ mac paths

#

mac paths are what wyza posted 2 pins under

cunning basalt
#

yea i tried it mutliple times

young walrus
#

there's mac API mods

#

or a mac API

cunning basalt
#

everytime i follow th steps with the API thing

#

hollow knight just

#

dies

copper nacelle
#

you got the mac api?

young walrus
#

you need the correct API

cunning basalt
#

yea

young walrus
#

or else it will crash

cunning basalt
#

im sure of it

young walrus
#

"i'm sure of it"

copper nacelle
#

hk up to date?

young walrus
#

isn't sure of it

cunning basalt
#

for sure my dude

young walrus
#

what version

#

1.2.2.2 beta perchance?

cunning basalt
#

lemme check real quick

young walrus
#

cuz that version will not work

cunning basalt
#

wait no not 1.2.2.2

#

1.2.2.1

#

are there any tutorials online that i dont know of ?

#

because i cant find any

#

for mac

young walrus
#

you need to place this in the same folder that the actual one is

#

then you need to merge them

#

select both then merge

cunning basalt
#

wait what i dont understand this "you need to place this in the same folder that the actual one is"

young walrus
#

the resources folder

#

within the .zip

copper nacelle
#

you replace the stuff

young walrus
#

or you could go all the way, in the zip folder, to the "assembly csharp" file

#

and in the same file structure, aka.... managed folder, replace the file of the same name that's there

cunning basalt
#

wait i did a big oops by replacing instead of merging one sec lemme go back

#

reacquiring or something rn

#

did it but

#

how tf do i merge them

#

help

young walrus
#

select both and right click i think

#

i dunno, macs are weird

#

lol

cunning basalt
#

tried that but it says duplicate comrpess or replace

#

and i dont want any of those

#

compress*

willow path
#

can I get a download link for the enemy randomizer mod?

cunning basalt
#

if i put in the assembly csharp do i need to keep them both or replace the new mod one with the one that was already in place ?

young walrus
#

you have to replace

#

otherwise they compete

#

you don't want that

cunning basalt
#

how do i know what mods are and arent compatible with mac

young walrus
#

all API mods are

#

anything else is likely not

golden vine
#

Please help

#

nvm i fixed it

cunning basalt
#

Yo @young walrus thanks fr man i can play some mods now

#

im loving it yehes

#

im so happy rn thanks guys

#

have a great day/night

thorn comet
solemn rivet
#

I have good and bad news

#

(for me?)

exotic venture
#

well first what's the bad news?

solemn rivet
#

I haven't managed to fix that old vanilla bug of dashing not doing damage

exotic venture
#

that's perfectly fine i guess? who knows, maybe remaster will be able to work around that

#

and the good news?

solemn rivet
#

well, since the new False Knight bug was introduced while trying to fix that vanilla bug...

#

yay, false knight is not bugged anymore!

exotic venture
#

yaaay

hazy sentinel
#

yaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaay

solemn rivet
fair rampart
#

kind of a dumb question but how do you turn the debug menu back on

solemn rivet
#

f1

fair rampart
#

thanks

fair rampart
#

i'm a few minutes into enemy randomizer but all the enemies have stayed the same as base game

#

it does say name and version in the corner though

solemn rivet
#

did you press the "enable" button on the main menu?

#

top right

fair rampart
#

oh i didn't notice that

#

๐Ÿ‘

solemn rivet
#

it'll freeze the game

#

just fyi

#

should take a few minutes in 1fps

fair rampart
#

not gonnda lie i can't find the button

#

lowkey

pearl sentinel
#

that button in the top right

fair rampart
solemn rivet
#

then you didn't install it completely

#

there should be an extensionless file with the mod

#

it should be in the Mods folder as well

fair rampart
#

mainui or the .pdb or both

solemn rivet
#

mainui

fair rampart
#

ok got it

vagrant leaf
#

sometimes king's pass doesn't rando

pearl sentinel
#

first time you load a new game into king's pass it doesn't rando for some reason

fair rampart
#

second wave of crossroads aspid arena isnt loading in

vagrant leaf
#

yeah

#

that's a softlock

#

use debug mod noclip

pearl sentinel
#

yep, known bug. fixed in the next version though!

#

which should be out... soon!

fair rampart
solemn rivet
#

hp bars

fair rampart
#

no the enemy

solemn rivet
#

crawlid?

hazy sentinel
#

looks like a belfly idk

vagrant leaf
#

^

hazy sentinel
#

5 hp seems pretty belfly-ish

vagrant leaf
#

a belfly in the ground probably

fair rampart
#

hmm they don't explode

hazy sentinel
#

oof

vagrant leaf
solemn rivet
#

now that you mention it, it's absolutely an idle belfly

fair rampart
#

husk sentry just jumped backwards out of existence

solemn rivet
#

nice

fair rampart
#

Has anyone managed to hook a debugger to HK?

exotic venture
#

debug mod through API- check pins!

fair rampart
#

@exotic venture
I've looked at the debug mod - I meant hooking a debugger up the exe to step through code and see a stack trace, etc.

exotic venture
#

uhhhh i don't think so??

solemn rivet
#

take a look at bossrush's debug in the modlog.txt file

leaden hedge
#

you can dump stack traces via reflection

#

stepping through code is a lot harder

pearl sentinel
#

Yeah. It's why I have so many elaborate print helper things

pearl sentinel
#

Next enemy rando version delayed due to life stuff. But after sleeping on it, I think I'm going to have all battle gates disabled until the dlc comes out, since I don't want to spend time developing a fix involving fsms that might not exist soon.

#

That'll mean no soft locks, but also stuff like no getting sealed in gruz mother rooms during the boss

#

Colloseum will probably just have to wait until post patch to see how it functions

willow path
#

I'm having trouble making mods work that just include .ddl files and not hollow_knight_data

#

such as hpbar and enemy randomizer

#

any reason why this might be happening?

young walrus
#

Do you have the API installed?

#

Are you putting them in the right place?

willow path
#

yes

#

I put the .dll and other files in the mod folder

#

API is installed

#

mods that only need you to replace the data folder work

#

I feel like the only thing I can be doing wrong is putting them in the wrong place

solemn rivet
#

maybe

#

try using one of the installers

#

see if that fixes it for you

willow path
#

installers?

solemn rivet
#

me and Kerr developed one installer each

#

they are in the pins

#

mine is simpler, and best for mod management

#

his is more robust and better for installing and backing up stuffs

willow path
#

for example this is what my mod folder looks like after installing debug and enemy randomizer

#

debug works, randomizer doesn't

solemn rivet
#

it should work fine

young walrus
#

have you turned it on?

#

top right of screen

willow path
#

oh

solemn rivet
#

...

willow path
#

I heard people talk about enabling it through options

#

I thought they just meant the actual ingame options in which there was an added section

#

lol

#

thanks

solemn rivet
#

heh

#

glad that's solved

young walrus
#

lol

#

best kind of issue

#

"why car no go?"
hasn't turned the car on

#

it happens

#

at least it works now

willow path
solemn rivet
#

from what I've seen in r/talesfromtechsupport, that happens more often than not

willow path
#

I can't see it

#

this is one elusive menu

solemn rivet
#

are you sure you have API installed?

young walrus
#

your API should be showing top left

#

and it's not

cunning basalt
#

guys help the bosh rush mod tells me there is a new version available i downloaded the latest one in the drive

solemn rivet
#

the installed mods should be showing top left

young walrus
#

don't listen to that skrax

willow path
#

API is installed

young walrus
#

it's broken right now

willow path
#

I cropped it out

#

because it's faster with snipping tool

solemn rivet
#

eh

cunning basalt
#

but i have a different version from the vids i see on youtube and stuff

solemn rivet
#

I would say "put mainui in the Mods folder", but I've already seen it's already there...

willow path
#

hmm

cunning basalt
#

i have one that after every boss i choose from 3 upgrades

young walrus
#

you probably saw the super old boss rush

cunning basalt
#

and then 1 of 9 bosses

young walrus
#

oh

solemn rivet
#

yours is the latest one, skrax

young walrus
#

what drive version did you get?

cunning basalt
#

1.2.2.1

young walrus
#

yeah, the one on youtube was DMCA'd

#

by owner

#

not available anymore

solemn rivet
#

the one you saw was an old one that was removed because the mod maker dmca'd

cunning basalt
#

but that one seemed more stable n stuff

solemn rivet
#

not at all

cunning basalt
#

because mine is so buggy

young walrus
#

how

#

"so buggy?"

cunning basalt
#

when i killed the collecter

young walrus
#

you're probably experiencing a lot of vanilla bugs

solemn rivet
#

that's vanilla

young walrus
#

yeah

#

that's vanilla

cunning basalt
#

i couldnt continue

#

oh

#

huh

young walrus
#

nothing to do with the mod

cunning basalt
#

my bad then

young walrus
#

don't use the summons

willow path
#

Boss Rush is buggy anyway, at least visually sometimes

young walrus
#

or dream shield

cunning basalt
#

but how i get rid of this ?

solemn rivet
#

if you kill it with any "secondary" damage, then it's a softlock

young walrus
#

^

cunning basalt
#

oh damn

#

thats what happened

#

because i killed it with dreamshield

#

damn

young walrus
#

yeah, don't use those. and you're fine

cunning basalt
#

are spells considered secondary damage ?

solemn rivet
#

that'll probably get fixed in the next patch tho

#

nope

young walrus
#

no

solemn rivet
#

just use nail and spells

#

should be fine

cunning basalt
#

also i cant really save the game ?

willow path
#

also is there any way of enabling mods when you're not ingame?

cunning basalt
#

everytime i have to start from scratch with the boss rush

solemn rivet
#

yeah, but you couldn't in the other one too, so

#

what do you mean, Rob?

willow path
#

I can't find the option to turn on the mod ingame

#

so maybe there'd be a way to do it out of game

solemn rivet
#

pause/options/mods

#

not all mods have that option tho

#

only mods that start with B do, curiously enough

#

I lie

#

enemy rando also has that option now

young walrus
#

boss rush wrecks save files

#

so that option is disabled

leaden hedge
#

boss rush should only be 30 minutes long

young walrus
#

^

#

that too

solemn rivet
#

@cunning basalt the boss rush is really quick, so there's no real need to save

#

^

leaden hedge
#

and I didn't feel like implementing savedata for it

willow path
solemn rivet
#

which version of the API do you have?

willow path
#

1.2.21

#

I think

young walrus
#

-?

solemn rivet
#

no, I mean, the API has its own versions

young walrus
#

top left

#

when you pause

#

1.2.2.1-?

#

what's the ?

solemn rivet
#

most recent is -37, but the latest one on the gdrive is -34 iirc

willow path
#

won't show up in screenshots but

solemn rivet
#

-34 should have the Mods menu

willow path
#

1.2.2.1-23

young walrus
#

holy

solemn rivet
#

old

young walrus
#

update that

solemn rivet
#

very very old

young walrus
#

that's why enemy rando isn't working

solemn rivet
#

probably why enemy rando doesn't work

#

^

willow path
#

that seems to be the latest one on google docs

#

hmm

willow path
#

can I get a link

#

thanks

solemn rivet
#

when in doubt, search for from: [LW] Wyza#1337 has:file

willow path
#

Someone should probably update the google doc though

solemn rivet
#

I thought it was up-to-date

#

weird

young walrus
#

it is

#

i have 35

#

and it's from the drive

willow path
#

unless 1.1.1.8 is the latest

young walrus
#

no

#

that's the wrong patch

#

won't even work

willow path
#

I know

#

Oh fuck, it's in the middle of the 1.2.2.1s and 0s

#

in the very middle

solemn rivet
#

?

willow path
#

I know it's just me being blind but every version before 1.2.1.4 is in chronological order

young walrus
#

why are you using that one

#

current patch is 1.2.2.1

willow path
#

I was using 1.2.2.1 before

#

at least I thought so

#

I guess I wasn't

solemn rivet
#

I dl'd it

#

lemme try brb

young walrus
#

just DL'd the drive version, and it's 37

#

so even the one i had was old

#

at 35

solemn rivet
#

yeah, couldn't find -37

#

maybe it's sean's and not wyza's

young walrus
#

So not sure what file you've been downloading, but the google drive is up to date

willow path
#

it's Sean's

#

I think

young walrus
#

the API is everyone's

willow path
#

oh yeah

young walrus
#

lots of people have worked on it

willow path
#

you right

solemn rivet
#

I mean, the one who posted it here

#

so I can search for it

young walrus
#

yeah, dunno who posted it

#

but it's on the drive

cunning basalt
#

does the glowing womb flies babies things count as secondary damage

young walrus
#

yes

leaden hedge
#

yes

solemn rivet
#

yup