#archived-modding-development

1 messages ยท Page 27 of 1

young walrus
#

whatever it is?

rain cedar
#

Nah it wouldn't

#

Need to update the api again

#

That's literally just tedious copy/paste, though

#

So someone else could do it if they wanted

buoyant wasp
#

If you want i could help rework the XML, just lay out the requirements for how you want it to work and i could set out to get it ironed out. Would leave you to be able to work on the more complicated stuff. (unless you were looking forward to the XML work ๐Ÿ˜‰ )

young walrus
#

I want it to work flawlessly as we've talked about before, and also do my laundry and make me some breakfast.

buoyant wasp
#

next you're gonna ask for it to mix your drinks

leaden hedge
broken fable
#

@rain cedar what do you mean a single blacklist? like grubsong, grubberyfly, dream gate, awakened?

#

a simple idea i had about making the xml more friendly is adding intermediate things like "can defeat baldurs", which could be defined in one place, then not duplicated for everything in green path.

young walrus
#

Nah. I like mixing my drinks myself. ๐Ÿ˜›

broken fable
#

another simplification to the xml is to move the easy/hard/permadeath variables to requirements like requiring "difficult tricks" which you start with in hard mode, and requiring "shade skip", which you start with except in permadeath mode. that way those variables can be used in arbitrary and/or logic.

#

i plan to spend time tonight working on hk modding.

broken fable
#

in the link to the past randomizer, one of the changes they made to speed up racing was removing text. has there been any discussion to do that kind of thing for hollow knight? like maybe talking to lemm immediately sells all relics with no text or something?

young walrus
#

i dunno. not really a huge fan of that. there's not much text in the game anyways. plus the text that's there leads to decisions about what's worthwhile to go do. shrugs i don't think it's enough to worry about

buoyant wasp
#

we aren't talking to seer, so that's like 1/2 the text in the game cut out

#

you'll visit lemm maybe once or twice

young walrus
#

if at all

buoyant wasp
#

in general, if you cut out all the text (that we're likely to see in an average rando), it might reduce the runtime by 1 minute

young walrus
#

yeah. seems like adding complexity for complexity's sake. that change makes way more sense in ALTTP which has a lot more text all over the game

broken fable
#

what about in general making the run faster by eliminating boring stuff like text? maybe speed up soul master's entrance or something? is that a direction the rando community is interested in?

buoyant wasp
#

I don't know if they are or not, but I don't think we're at that point yet

#

that's the kind of thing you do once the randomizer is done from a logic perspective and is feature complete

#

there is also points at which you go, you leave this in because it's a gameplay choice

#

for example, in super metroid, there is Shaktool. He's way out of the way, AND takes a good 60s to just get through his room because it's an auto scroller

#

they could have easily made it so that you could go right through with something like screw attack or powerbombs, but intentionally left him as is even though he's a massive time waster

#

and my guess is that it was part of playing the game. you have to make the choice to say "yes i know this takes time, but it might be what i need to do to win"

broken fable
#

does super metroid randomizer do the intro station?

buoyant wasp
#

no, but there is literally nothing in there to route, those first 2 minutes are identical for everyone every time

#

changing how long soul master takes to spawn or how much lemm talks does matter if you're looking at a cost/reward choice

broken fable
#

ok. so how about speeding up something about the dreamers or the temple of the black egg? like deleting some cutscenes or speeding up the "focus" part of it. that's stuff that everyone has to do, so there's no cost/benefit decision to it.

#

just thinking out loud here.

rain cedar
#

It's not really that big of a deal to have like 30 seconds of cutscene in a run

buoyant wasp
#

if you removed black egg, dreamers, text, and everything you might reduce a 2 hour run by 3-4 minutes. It's just not worth it right now to go into all that imo.

#

maybe someday it would be

#

but i don't see how those things currently make it "un-fun". none of the other rando runners seem to be complaining about them right now either

#

they aren't bad ideas, but they also aren't really necessary to make it fun either

broken fable
#

i'm trying to address the issue that randomizer races are kinda long, and we don't want to make them longer.

#

seems like they're long because the game is just really big, not because it's needlessly tedious then.

buoyant wasp
#

they are most definitely long because of the size of the game

#

it all just depends on the seed

#

mickely had a nearly demi-god seed last night

#

finished in 1:07 or something

broken fable
#

so adding key randomization might actually make the race faster, but probably on average will make it slower. is that what people are thinking?

buoyant wasp
#

no, key randomization will be dramatically slower

broken fable
#

i feel like vanilla keys are already in really hostile spots. especially king's brand

buoyant wasp
#

right now there are exactly 3 keys we care about, 1 simple key below city storehouse. tram pass and kings brand. tram pass is only necessary if you really need hiveblood or don't have a way to get through dung. and kings brand is a little out of the way, but again, isn't always necessary either.

rain cedar
#

The city crest is sometimes useful

buoyant wasp
#

i don't count that as a key

#

cause you're gonna get it 100% of the time

#

no one ever skips him because the 200 geo is too good early game

broken fable
#

city crest could be randomized though.

buoyant wasp
#

could be, and that might not be terrible

broken fable
#

also, you care about shopkeeper key, right?

buoyant wasp
#

ah, forgot about shopkeeper, yeah, sometimes we care about that

rain cedar
#

It's gonna be way more likely to be relevant now with Sprintmaster

buoyant wasp
#

yeah, but still, not sure randomizing keys would be fun, or frustrating

#

from a routing perspective

broken fable
#

in alttp, mushroom and shovel are keys that are randomized. they aren't very fun. so yeah, maybe a bad idea.

buoyant wasp
#

cause shopkeeper, for example, locks 3 different things now

#

2 charms you can buy + elegant key (which is really just saying it locks Vengful spirit 2)

young walrus
#

i like the keys being in known spots

#

have to include that in routing decisions

#

and really, the length of runs is pretty solid right now

#

i would expect a god seed to last about 45 minutes. and the worst seed possible would be like 2.5 hours

buoyant wasp
#

yeah, none of the stuff we're talking about adding should shift the run too much in either direction

young walrus
#

speeding up certain parts of the run will really not affect that time window in any meaningful way

buoyant wasp
#

it adds a few more spots, most of which aren't too far off from where other stuff

high moat
#

Will do lewd services for an updated debug mod โค love u

buoyant wasp
#

the nail masters and queensoul mean that the left side of the map is more valuable

young walrus
#

nail arts would definitely add interesting routing

#

and the queensoul too

buoyant wasp
#

right now greenpath is good for money, but not a ton more compared to fungal/shops

broken fable
#

does "interesting routing" mean a longer run? hollowlenny

young walrus
#

plus, like i've said before, adding in the kingsoul parts makes true ending a viable category

#

interesting routing means more meaningful choices for diverting routes

buoyant wasp
#

queens garden is a graveyard right now. you go there for abyss shreek and.....the dreamer.

young walrus
#

plus it would give shade cloak some more use

#

instead of only sharp shadow

#

aka.... a diverting route

void tree
#

just qga

#

ez

young walrus
#

it would be more of a gamble option honestly

broken fable
#

why is there no s in qga? thinkgrub

young walrus
#

b/c NMG runners are silly.

void tree
#

^

#

its true

buoyant wasp
#

one thing we do need to add is some sort of "tournament seed" mode where the logging of the item locations is disabled. (of course to do that, we also need to get rid of rnd.js and also change the overlay because all 3 of those things can "leak" the locations of the items). The latter 2 items will require the new save file changes we talked about. Nothing stopping folks from decrypting the save file, but if you're willing to go to that length....

young walrus
#

if someone's going to go to that length to cheat, they're going to do it anyways

buoyant wasp
#

yeah, but i still want to remove most of the "easy" approaches

young walrus
#

and i don't think anyone that would partake in a tournament would go that far. i think removing the data logging would be good though

buoyant wasp
#

cause right now, it's just "put in seed #" press "log"

#

and we want to get rid of rnd.js anyway and change the way the randomization is stored to remove some of the load time,

rain cedar
#

Yeah, not really worried about that

#

Nobody in this discord is gonna cheat in a randomizer tournament

buoyant wasp
#

i agree

rain cedar
#

I mean what do you even gain from cheating?

young walrus
#

1st place?

buoyant wasp
#

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

young walrus
#

in a tournament that means nothing?

buoyant wasp
#

people cheat because they suck

young walrus
#

^^

buoyant wasp
#

but if we got to a point where the thing was popular enough to get a larger number of players, it'd be nice to have that accountability that, yes, we did our due diligence to make it more difficult to cheat.

broken fable
#

people cheat to demonstrate how easy cheating is

buoyant wasp
#

and the effort required is mostly stuff that was going to happen anyway

rain cedar
#

Yeah, I suppose so

pine condor
#

help ๐Ÿ˜ฅ

#

steam wont open so i uninstalled it then tried to onstall it again

#

but it keeps telling me to close steam?????

#

and wont let me install

#

:sob:

broken fable
#

are you or were you trying to play with mods?

pine condor
#

nope

#

not at all

#

just updated it

broken fable
#

i've seen the team cherry devs help people in #off-topic . you might get better help if you ask there.

rain cedar
#

Verify game files

pine condor
#

okok

#

okok

buoyant wasp
#

@rain cedar - was thinking i could work on the mod save data storage bit this evening after work. Did you have thoughts on how you were going to approach that? Just going to modify the save data structure to have a property for mod data and then a few methods in ModHooks to interact with it?

leaden hedge
#

probably best to pass a type to a function

#

and then have the save function append class.instance to the save

rain cedar
#

Yeah, that sounds like a good idea

#

Could also just have a function in the Mod class to override that returns the type of the save data

buoyant wasp
#

when you say "append class.instance" to the save, I don't quite follow. to the save file? (if so how do you tell it where the vanilla save class ends and the newly appended class begins) Or are you saying that there still is a custom property on the save's class, but that property is just a List<T> that you are appending to

rain cedar
#

The save is just encrypted json from the classes

#

Just add your json to it

leaden hedge
#

you probably do

class SaveGame{
public PlayerData pd
public SceneData sd
public List<T> md
}
#

then serialize that

buoyant wasp
#

hmm

broken fable
#

encrypted? thinkgrub

leaden hedge
#

yes

#

its rijndael

rain cedar
#

Dictionary<string, T> is probably better

buoyant wasp
#

perhaps public Dictionary<string, T> would be better. where string = modname. cause otherwise to fetch it back out, you'd have to iterate

rain cedar
#

Where the string is the mod name

buoyant wasp
#

lol

leaden hedge
#

I guess

#

either way I'm very certain unities built in json serializer sucks dick

#

and doesn't work for lists or dictionaries

rain cedar
#

I see

#

Does it work for arrays?

leaden hedge
#

I don't believe so

broken fable
#

does it work at all?

buoyant wasp
#

not really

broken fable
#

what does it do then?

leaden hedge
#

single element items

buoyant wasp
#

for some reason they decided they could do it better than the well established libraries like JSON.net

rain cedar
#

Hang on, it definitely works for arrays

#

PlayerData has arrays in it

leaden hedge
#

equippedCharms has an array

#

or is even

buoyant wasp
#

it won't do top level arrays

#

so

#

Serialize(new string[] { "hi", "wont", "work"})

rain cedar
#

But if we just add the array onto the existing SaveGameData class it's not top level

buoyant wasp
#

yeah, then it might work

#

we have to test it

rain cedar
#

this.equippedCharms = new List<int>();

#

It's a list, not an array

#

So we can use lists for sure

#

Have to test dictionaries

buoyant wasp
#

though even if dictionaries doesn't work, could always create an internal dictionary to reference the location of the data in the list if performance ended up being an issue. Realistically there will be, what....5 or 6 items in the List? one per mod. Iterating through it won't exactly take much

leaden hedge
#

@broken fable
it works like this

public void MoveChoice(){
    if( health <= Rage1 && Ballooned1 = false ){
        SetState(Balloon1)
    }
    if( health <= Rage2 && Ballooned2 = false ){
        SetState(Balloon2)
    }
    if( health <= Rage3 && Ballooned3 = false ){
        SetState(Balloon3)
    }
}
broken fable
#

do each of those SetState branches also exit the function?

leaden hedge
#

yes

broken fable
#

oh. this is actually fsm, right? you're representing it in C#

leaden hedge
#

yeah

broken fable
#

cool

leaden hedge
#

the FSMs have c# actions

#

but I'm too lazy to actually copy them,

#

and then if it gets past that it generates a random int, and goes to his other moves

broken fable
#

is claw always required in rando?

young walrus
#

yes

broken fable
#

are dream nail and claw the only two that are always required?

young walrus
#

dream nail, claw and either isma's OR crystal heart

broken fable
#

wait. is that the whole list?

young walrus
#

ya

broken fable
#

huh. that's pretty simple.

young walrus
#

granted, there's items that are locked behind other items

broken fable
#

right.

young walrus
#

aka.... VS, wings, dash, etc

#

dive

buoyant wasp
#

i gave them a seed a couple weeks ago where CH was behind dive which was behind wings which was behind hiveblood ;P

young walrus
#

which was behind claw

broken fable
#

but if you got dream nail, claw, and crystal heart early, the "rando" would be done. it'd just be a low% run from there.

buoyant wasp
#

fireborn broke the logic and got tear from the womb skip, but...

young walrus
#

well that's the point of a randomizer

#

it's random

buoyant wasp
#

yup

young walrus
#

could be super easy, could be super hard

#

a lot of it also depends on routing

buoyant wasp
#

we've seen alot of seeds that start out with 2/3 of the items, but then 1.5 hours of hunting for the 3rd

young walrus
#

taking risks

#

etc

buoyant wasp
#

but that's not unlike ALTTP

young walrus
#

usually, the seed gives you 2 items, then the remaining ones unlock. and you make choices

buoyant wasp
#

sometimes you start out getting all but 1 thing, but then spend an hour hunting for that 1 thing

#

sometimes the seed hates you

broken fable
#

alttp requires like 11 items to finish though. more than 3.

buoyant wasp
#

yes, but you also get items at a much higher rate

young walrus
#

lol. it's also a different game

#

and that

#

you get 5-6 items in one room sometimes

#

HK will take you 15 minutes to get that many items

buoyant wasp
#

there's easily > 100 item locations, vs HK which has about 45, (like 13 of which are in shops)

solemn rivet
buoyant wasp
#

@rain cedar - looking at the Modding namespace, should the ability to load the Mod's the save file data be in the ModHooks class or in the Mod Class? ModHooks sounds like it's designed to really be more for events based on all the various things in it, but then there is ModLog() which really isn't an event.

rain cedar
#

The Mod class makes more sense to me for this

buoyant wasp
#

k, it's your baby, so ๐Ÿ˜ƒ

#

what is the 1.2.1.0 ID for steam to downpatch?

#

since we don't have a 1.2.1.4 mod api yet

rain cedar
#

Not sure, I'll look into that and update the guide tonight

#

If you want to find it yourself look on steamdb

buoyant wasp
#

k, there are 3, checking to see which it is, will let oyu know (guessing it's the most recent from 5 days ago, but they did the one, then rolled back, so)

#

1.2.1.4 is 7785897634333714879 though

rain cedar
#

Alright

buoyant wasp
#

is it possible to keep both versions of the game working at the same time or do you just have to rename swap them around

broken fable
#

use a chroot hollowlenny

buoyant wasp
#

hm, nope, it just works

broken fable
#

or a second computer corny

buoyant wasp
#

i suppose the only real risk is save game corruption

#

1.2.1.0 is 8751284666946274773

buoyant wasp
#

is there an equivalent to PlayerData.Instance for SaveData?

tribal nexus
#

1.2.1.0

#

Nice IP, I found someone with the IP 127.0.0.1 once. What a dick. Tried hacking them but they must have had a counter hack machine because all it did was give myself a virus

buoyant wasp
#

huh?

broken fable
buoyant wasp
#

so if we went with original idea of a 3rd element in the save data, we'll need to change how it is saved

#

currently this is in GameManger.SaveGame(int i)

#
string text4 = JsonUtility.ToJson(new SaveGameData(this.playerData, this.sceneData), !this.gameConfig.useSaveEncryption);
#

which gives us no time to edit the savegame class before it's persisted to disk, so we'd have to change it so that some sort of post-gen/pre-serialization occured.

#

thinking it'd have to be something like:

SaveGameData data = new SaveGameData(this.playerData, this.sceneData);
ModHooks.Instance.OnBeforeSavegameSave(data);
string text4 = JsonUtility.ToJson(data, !this.gameConfig.useSaveEncryption);
buoyant wasp
buoyant obsidian
#

dnSpy fucking with you too?

buoyant wasp
#

yeah, I can't compile the GameManager class (though most others that i've tried have worked)

broken fable
#

@rain cedar i'm getting started on xml changes.

buoyant wasp
#

how do you get dnSpy to recognize changes. For example if I add a new delegate, and hit compile, it looks fine, if i go into another class and try and reference it, says it doesn't exist until i go to file->save module. Is there some fairly obvious "refresh" i'm missing as an interim step or is the only way to save module?

solemn rivet
#

Wyza, that's a bug with dnspy

#

if you only changed a few methods, try editing them directly instead of editing the whole class

#

OnDisable and SetupGameRefs return ambiguities, for some reason

buoyant wasp
#

hmm

#

Where is the Language Namespace?

solemn rivet
#

usually what I do if I need to edit those methods/the whole class, I edit it via IL instructions

buoyant wasp
#

it's suppose to be in assembly-csharp, but for some reason Language.GetLanguage is broken

solemn rivet
#

since the ambiguities are actually a bug with the c# decompiler

#

I think I fixed that once, wyza

#

just a sec

#

Language.Language.Get try this

#
    {
        return Language.Language.Get(mapZone.ToString(), "Map Zones");
    }```works
buoyant wasp
#

weird

#

guessing that's a dnspy thing? since i didn't make a change in that code

solemn rivet
#

yup

#

the decompiler sometimes behaves weirdly

buoyant wasp
#

hmm, looks like there is a beta3, might try that

solemn rivet
#

I'm on the latest version I know of, and there are still issues

buoyant wasp
#

so there is, oh well

solemn rivet
#

on my case, simply removing the ambiguities and the re-adding them via IL instructions has worked so far

#

haven't found a case that didn't work

buoyant obsidian
#

Sometimes I just restart my computer and dnSpy works again

#

also Steam sometimes gives my PC slightly bugged builds for whatever reason

solemn rivet
#

oh

#

sometimes dnspy bugs in a major level

#

once I had to completely remove every trace of it and re-install for it to work

#

I used to edit methods using ctrl+shift+e

#

somehow that does not work anymore, and instead it breaks dnspy for the whole session

buoyant wasp
#

how do you edit the IL after make the change ? it won't let me save/compile due to the ambiguity

#

or do i have to do the entire thing in IL?

solemn rivet
#

here's what I do:

#

I open two assembly-csharp.dll using dnspy

#

in one, I edit the method and remove the ambiguous line

#

on the other, I copy the IL instructions reffering to the ambiguous line

#

then, back on the one I removed the ambiguous line from, I edit its IL instructions and paste them where they were supposed to be

solemn rivet
#

anyways

#

I played up til CoT and nothing seems too op or too hard so far

#

quite like that the enemies have more hp actually

#

but now, alas, I must go

buoyant wasp
#

@rain cedar is the code on github the current randomizer?

broken fable
#

so dream nail + claw + (crystal heart OR isma's tear) is the most basic requirements for "hard mode" rando. what about "easy mode"? i think it's: dream nail + claw + monarch wings + (isma's tear OR (crystal heart + mothwing cloak + shade cloak))

buoyant wasp
#

nope

#

requirements don't change

#

hard/easy is just which skips are in play

broken fable
#

easy is not expected to do acid skips, right?

buoyant wasp
#

so, like the skip to get into fungal through queens garden stag with only spells

#

the logic has all those in there already i think

broken fable
#

i thought easy has no way into monomon's lab without isma or shade cloak.

#

and no way to watcher knights without monarch wings

#

so, this goes back to how "winning" is not in the rando logic. neither is monomon or lorien. but if we were to describe the requirements for winning in terms of randomizer abilities, that's what i'm talking about.

hazy sentinel
#
The One Wiki to Rule Them All

Lothlรณrien was both a forest and elven realm located next to the lower Misty Mountains. It was first settled by Nandorin elves, but later enriched by ร‘oldor and Sindar, under Celeborn of Doriath...

rain cedar
#

@buoyant wasp Yes it's up to date

broken fable
#

*Lurien, not Lorien.

buoyant wasp
#

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

#

I trust Sean's judgement on what skips and are not required

#

cool, gonna try building a version with the updated Mod framework that support this new save functionality, it'll probably break, but hey....

deep pilot
#

I honestly think Isma's Tear or Shade Cloak should be considered as requirements to get into the right side of Fog Canyon

#

For easy mode, at least

broken fable
#

@deep pilot there's nothing there that's randomized, so the current rando just doesn't say. but i agree, fwiw

deep pilot
#

The only way into that side of Fog Canyon without either is by doing a super dash off the side of a small ledge in Crossroads

#

And I don't really think the regular player can pull that off

#

I'd actually argue crystal heart should be just considered as required in easy mode

#

cause both monarch wings and isma's tear are usually locked behind it

broken fable
#

i don't follow your logic. if crystal heart were indirectly required, that's its own thing.

deep pilot
#

After typing that out, I realized we're talking about randomizer where you get those things out of order

#

Forgive me, my mind is still back in Randomizer 1.0, when those things weren't in the pool

#

But yes, Isma's Tear or Shade Cloak should be considered as required for Teacher's Archive access in easy mode

rain cedar
#

Good point, not sure why that would be excluded from hard

broken fable
#

@rain cedar ok. that makes more sense.

#

does grimmchild kill baldurs?

buoyant wasp
#

probably

#

but you'd need rank 2

#

rank 1 does nothing iirc

#

it just floats around

rain cedar
#

Weaversong can but it takes like a year

broken fable
#

how long does spore shroom take?

rain cedar
#

Only like 2-3 heals

#

The damage is pretty decent

broken fable
#

can defender's crest kill them?

rain cedar
#

Doubt it

young walrus
#

It might, but it'd be awful to do

#

See example: longnail

broken fable
#

have people discussed instead of hacking the baldur in ancestral mound, just removing the gate that locks you in?

#

so the baldur still guards soul catcher, but not your escape

scenic wren
#

I like that idea

rain cedar
#

Yeah, could work

heady tangle
#

is someone else, besides the original creator, working on updating the bossrushmod? From what I've read on reddit, the original creator wanted it removed or something right?

buoyant wasp
#

no one is working on it

#

the original creator pulled all content from all sites and issued DMCA notices

heady tangle
#

oooh

#

icic

#

so if anyone wants to play it, they technically can't

buoyant wasp
#

someone who has it, might be willing to PM it to you, but keep in mind it last worked on 1.1.1.8, it most definitely doesn't work on TGT

#

There is a note in the pins about it

heady tangle
#

ic

#

ty

#

Just curious abt it. Won't be trying it.

buoyant wasp
#

unfortunately, the whole thing was rather poorly handled, we honestly have no idea why it even happened

#

but it is what it is ๐Ÿ˜ƒ

#

just out of curiosity, what reddit post sent you here?

dapper folio
#

Boss Rush? yeah, that was surprising, checking my email and seeing DMCA emails requesting his mods be removed.
Because the mod requires a new save in order to work, downgrading is an option.
I think GoG lets you download different versions of the game
And there's a patcher program on some site that lets you downgrade on Steam

thorn comet
#

I used Debug Mod to give myself Void Heart, and it still takes 5 notches. Anyway to 'update it' so it becomes like normal and requires none?

dapper folio
#

I actually mentioned that to Sean

#

doesn't go back to 5 notches when reverting from void heart either

heady tangle
#

oh sry for the late reply @@

#

umm

#

lemme check

#

This post inclined me to come over here to ask about the mod. But thanks for the info @buoyant wasp

warped sinew
#

It might happen!

buoyant wasp
#

built in boss-rush would be epic

warped sinew
#

Devs know ppl want a boss rush

buoyant wasp
#

@warped sinew did you do NGG on your stream today?

warped sinew
#

No plans yet for one but they know

#

I didn't stream yet I got work all week :(

#

What's NGG?

#

Is that hard Grimm?

dapper folio
#

Nightmare God Grimm

#

it's a mod

warped sinew
#

What makes him hard?

dapper folio
#

idk

warped sinew
#

OK lol

dapper folio
#

lemme check mod's readme

buoyant wasp
#

alot

broken fable
#

ground spears attack is firing constantly, for one. not sure what else

buoyant wasp
#

final phase spawns a 2nd grimm

dapper folio
#

only thing in it is this:
if you actually complete this DM me with proof and i'll make it harder

warped sinew
#

Lol sounds great

buoyant wasp
#

damage from spikes increases over time

#

after his dive, he immediately uppercuts

#

i think his health was trippled too

#

meh, well made progress, but not quite there on saving yet.

trim totem
#

does that make the spikes inconsistent too??

#

is it possible to add a mantis lord like that mod adds a grimm

buoyant wasp
#

where?

#

in that room?

trim totem
#

to the mantis lords fight

buoyant wasp
#

maybe, dunno, would have ot ask @leaden hedge

trim totem
#

kk

warped sinew
#

Make a 100 mantis challenge

#

Each 5 they get faster

#

Actually someone make a harder boss mod that would be cool. Just normal game but bosses are fucked

royal ridge
#

This ^ ๐Ÿ‘€

golden salmon
#

Radiance, but instead of spears, she summons more Radiances.

leaden hedge
#

maybe I'll go through and make all bosses full grimm hollowface

#

and yes you could add another mantis lord to that fight

golden salmon
#

Just kinda slap Traitor Lord into the Mantis Lord fight

#

Have a family reunion

leaden hedge
#

also @warped sinew
his health is doubled
spikes constantly spawn
pillar attack and spikes is removed
final phase has 2 grimms at once (but disables the spikes, and adds old moves back in)
spikes deal 2,2,4,2 damage at each phase
most of his recovery time is improved
after dive dash he always uppercuts
and he always shoots the extra 2 firebats

amber plank
#

do most mods work on current version of hollow knight?

leaden hedge
#

no

#

you need to downpatch to 1.2.1.0

amber plank
#

alright thanks

leaden hedge
#

or 1.1.1.8 depending what you want

#

in the gdrive, every mod has what version it works on

amber plank
#

i dont know what most of the mods do so not sure where to start looking

dapper folio
#

Readme files are included in the zips

#

Or ask in modding

#

I know most of them, but I'm going to sleep now

amber plank
#

alright thanks

#

also ive heard of randomizers for hollow knight? what does that randomiz?

leaden hedge
#

skills, spells, charms

amber plank
#

is that all?

#

even if that is the case neet

leaden hedge
#

thats generally all randomizers, randomize

#

are pickups

amber plank
#

i might try ngg later myself to my own brain telling me no

#

lol

#

i think its impossibl

leaden hedge
#

nah its doable

amber plank
#

i aint got the all the time in the world to fight 1 boss

#

though i do wana see someone beating him lol

modern hound
#

Is a x10 still possible

amber plank
#

i can see someone beating that but i dont seemyslef beating that

#

though ill try for sure

warped sinew
#

I watched that vid. Lol that boss is great

leaden hedge
#

@rain cedar why does SetPlayerBool not accept a return type to override the target bool?

#

does it just ignore variables beginning with _ and I have to set the correct bool myself

solemn rivet
#

has anyone come across whatever it is that controls minions' damage?

leaden hedge
#

your ones?

#

same as everything else "damages_enemy"

solemn rivet
#

sigh

#

so it is FSM

#

I was thinking of maybe make their power scale with Str

#

since rn all stats except Str have (at least) two effects

buoyant wasp
#

I made decent progress on the custom save data stuff for the mod API last night. btw, dictionaries, do not work. the serializer just ignores their existence flat out

solemn rivet
#

can it handle simple fields, such as ints and bools?

buoyant wasp
#

the serializer?

#

or the save stuff

solemn rivet
#

the custom save for the modding api

buoyant wasp
#

yeah it will

solemn rivet
#

cool

buoyant wasp
#

basically if your mod needs to save stuff in the save file

#

instead of this:

#
public class RandomizerMod : Mod { }
#

it'd be

leaden hedge
#

can't you just serialize it to a string manually

#

for dicts

buoyant wasp
#
public class RandomizerSettings : IModSettings {
    public string MyFirstSetting;
    public bool MySecondSetting;
    public int MyThirdSetting;
}

public class RandomizerMod : Mod<RandomizerSettings> {
    public void DoSomething() {
        Settings.MyFirstSetting = "hi!";
    }
}
#

and then the API will take care of making sure that the Settings object is populated when saves are loaded and persisted when saves are saved

#

@leaden hedge - if we extend the serializer, maybe, or we can just not use dictionaries

#

if you serialize it to string manually, then you have to also be responsible for deserializing it back

#

which, meh

leaden hedge
#

also I don't think SetBool has the same "_" stuff GetBool does

#

which means it crashes the game

buoyant wasp
#

normally functions that start with "_" are private functions in c#

#

(naming convention wise)

leaden hedge
#

yeah but for GetBool() any variable starting with _ is purely for hooks

#

afaik

#

so that doing _fireballLevel doesn't crash when it tries to get _fireballLevel via reflection

buoyant wasp
#

ah

leaden hedge
#

either that or something else in my code is crashing

#

I dunno

#

might just be this shiny charm code being shit

golden salmon
#

Is there a video of Nightmare God, and if so, can I get a link to it?

leaden hedge
#

trinomi is playing it rn

broken fable
#

gdrive says modding api is only at 1.2.1.0. is that accurate? that doesn't mean like 1.2.1.x, right?

leaden hedge
#

not necessarily

buoyant wasp
#

afaik, the modding API for 1.2.1.4 isn't out yet

broken fable
#

i'm guessing we just haven't gotten around to it yet. or are we waiting for more updates from teamcherry first?

buoyant wasp
#

i'd ask @rain cedar - I think he's the one who handles the updates

leaden hedge
#

firzen is here hollowface

broken fable
#

i guess i'm just wondering if we already knew that teamcherry was going to release an update like tomorrow or something. then i'd be silly to waste effort just for today. do we know about anything like that?

leaden hedge
#

does anyone know of the top of their head what the charm functions are, to do stuff like enable jonis / lifeblood

buoyant obsidian
#

isn't that in CharmUpdate()?

leaden hedge
#

CharmUpdate in what

#

PlayerData?

buoyant obsidian
#

HeroController probably

solemn rivet
#

some charms are checked for on HeroController.CharmUpdate(), but some are checked while dashing, or while attacking etc.

#

Shaman's is checked at SoulGain() iirc

leaden hedge
#

basically just wanted the charms that are only checked at bench

solemn rivet
#

oh, ok then

leaden hedge
#

@rain cedar do you remember what troupe leader grimm required to be fought?

rain cedar
#

@leaden hedge Here's what I'm doing to respawn him in debug:

PlayerData.instance.SetIntInternal("flamesCollected", 3);
PlayerData.instance.SetBoolInternal("grimmChildAwoken", false);
PlayerData.instance.SetBoolInternal("foughtGrimm", false);
PlayerData.instance.SetBoolInternal("killedGrimm", false);```
#

Also not sure what you mean with SetBool

#

It's void, there's nothing to do with returning

leaden hedge
#

I know its not returning, but say I wanted to look for a specific bool being set

#

but its not one in playerdata

#

it crashes afaik

rain cedar
#

I'm doing stuff like _true and _fireballLevel in randomizer

#

Works fine

#

If that's what you mean

leaden hedge
#
PlayMakerFSM shiny1FSM = FSMUtility.LocateFSM(s1, "Shiny Control");
shiny1FSM.FsmVariables.GetFsmString("PD Bool Name").Value = "gotCharm_1";
shiny1FSM.FsmVariables.GetFsmBool("Charm").Value = true;
shiny1FSM.FsmVariables.GetFsmInt("Charm ID").Value = 1;
#

works

#
PlayMakerFSM shiny1FSM = FSMUtility.LocateFSM(s1, "Shiny Control");
shiny1FSM.FsmVariables.GetFsmString("PD Bool Name").Value = "_pickup1";
shiny1FSM.FsmVariables.GetFsmBool("Charm").Value = true;
shiny1FSM.FsmVariables.GetFsmInt("Charm ID").Value = 1;
#

crashes

#

and the only thing PD Bool Name is used for is SetPlayerDataBool

rain cedar
#

Where is it crashing?

leaden hedge
#

not sure somewhere in FSM code

rain cedar
#

Weird

leaden hedge
#

I mean whatever, I'm just using charm1,2,3 as proxies instead

#

not like anyone would like compass, gathering swarm or grubsong

rain cedar
#

Grubsong is an ok charm

leaden hedge
#

I could probably use trinkets instead

rain cedar
#

Maybe

leaden hedge
#

also fluke with nothing is garbage lol

rain cedar
#

Yeah

#

Not really humanly possible

high moat
#

Debug mod works with 1.2.1.4 now?

rain cedar
#

Not yet

buoyant wasp
#

@rain cedar - how are you keeping track of the changes to Assembly-Csharp to apply stuff to new releases? IE how do you want me to communicate my changes to deal with the new save functionality when i have it working?

leaden hedge
#

the hooks have documentation

#
        [HookInfo("Called whenever a new gameobject is created with a collider and playmaker2d", "PlayMakerUnity2DProxy.Start")]
        public event ColliderCreateHandler ColliderCreateHook;
buoyant wasp
#

right

#

that i know

#

but like, There is a change to SaveGameData to add a new ModData property

#

and there are changes to the SaveGame/LoadGame methods of GameManager

rain cedar
#

There isn't any source control as of right now

#

So yeah, just tell me the changes

buoyant wasp
#

k

rain cedar
#

And when you're done I'll port it to 1.2.1.4 and add it back to 1.1.1.8

buoyant wasp
#

k

#

the vast majority of the changes are in the Modding namespace, and i'm 95% sure will not break existing mods.

rain cedar
#

Alright

buoyant wasp
#

I noticed that dnspy has a "merge assembly" button. I wonder, would that mean you could possibly put the Modding namespace into a separate DLL that you could put under source control and then only need to edit the stuff in the TC code and then merge the assembly to bring in the Modding namespace dll?

#

(dunno how it works, or if that's what the button does)

rain cedar
#

No idea

#

I tried just having it as a separate dll before but couldn't get that working

leaden hedge
#

should work fine

buoyant wasp
#

just seems like maintaining this would suck for you

#

that you have to go through it all every release

rain cedar
#

It does

broken fable
#

did anything happen with talking to TC about hosting the modded dlls somewhere?

rain cedar
#

Yeah, they're fine with us using the drive folder

broken fable
#

how public can the links to it be?

rain cedar
#

It's probably best to just keep it linked in the discord

buoyant wasp
#

hmm, well, i'll play with the merge assembly idea after i get the save stuff working

#

cause it'd be nice to at least have everything in Modding separated out

dapper folio
#

Separated out?

broken fable
#

what do people think about making a github repo called ModdingAPI, but it doesn't actually have the modding api in it. it just has documentation for how to get it (like what's in the rando readme now), and it contains documentation about the modding api itself? might be a good place to write down notes like "how to port the modding api to a new version of hollow knight. edit x and insert y. edit z and insert w." etc.

buoyant wasp
#

well, right now the Namespace "Modding" has to be manually put into Assembly-Csharp.dll, wanting to see if we can put it in a separate dll that only has to be merged into Assembly-Csharp.dll

#

to help simplify the process of putting the API into each release

#

it would still end up with us having to modify the dll

#

but hopefully make it a little less painful to maintain

#

baring TC ever actually adding the hooks in, there will always be some manual effort required, just want to try and reduce that effort

broken fable
#

I'm generally in favor of reducing the pressure on Sean to do all the maintenance work.

buoyant wasp
#

less time maintaining stupid stuff = more time spent making awesome stuff

broken fable
#

is it copyright violation to livestream looking at the .dll in dnspy? thinkgrub

buoyant wasp
#

technically, it's copyright violation to be editing it at all i'm pretty sure

broken fable
#

@rain cedar if you stream your workflow for updating the Modding API, i could write down what i see as instructions for someone else.

buoyant wasp
#

broadcasting it probably isn't wise ๐Ÿ˜‰

rain cedar
#

You can just look at what's in the ModHooks class and use the analyze feature to see where the hooks are in the game code

broken fable
#

i don't think editing it at all is copyright violation. i'm not a lawyer, but modifying a binary for personal use shouldn't be illegal

rain cedar
#

I don't have to broadcast it

broken fable
#

ok, i might try that.

buoyant wasp
#

yes, but none of us are editing it strictly for "personal use", i mean, we are, but we aren't. TC probably wouldn't care, but at the same time, we don't want them to have to deal with anything in this realm. If they had to deal with some legal crap because of us not thinking something through, we'd all feel bad. (or at least, i would)

#

i don't think anyone would be able to take even a 5 hours stream session of modding that dll and do something with it

broken fable
#

what do people think about randomizer removing the hard saves after dreamers?

#

seems like that would speed things up a lot

rain cedar
#

I don't get why you're so hellbent on changing how the game works

#

There's no reason to change things randomly

#

You can skip the walking back if you have dream gate

#

If not, tough shit

#

That's how randomness works

broken fable
#

well, to better understand people's thinking about randomizer, why do people think notch mod is a good idea?

rain cedar
#

Because it makes charms useful

#

Most notches are too far out of the way for anyone to get in a randomizer

#

So you only use 2 charms

#

3 if you overcharm

broken fable
#

but why give you salubra's notches for free when you could add notches to the pool? the latter seems more like what a randomizer would do.

#

because that would make the game bigger and slower?

rain cedar
#

That would be why I made it as a separate mod

#

Doesn't make sense to be part of a randomizer

broken fable
#

is notch mod used in rando races?

rain cedar
#

Depends on who is racing and what they agree on

broken fable
#

so my goal is for randomizer to be interesting and fun. people seem concerned with the game getting too long. so i'm also thinking of places to trim out slow boring stuff that adds very little to the game to make room for randomizer requiring more running around.

#

just to answer your question of why i'm hellbent on changing how the game works

rain cedar
#

A lot of the boring stuff you can trim is already achieved by dream gate

#

So then you've got a dead item

#

Because it's no longer useful to trim the boring stuff

#

Besides, the length is pretty good right now anyway

broken fable
#

i don't understand why you're saying that an item that you may or may not have solves a problem that you'll always run into.

#

are you saying give everyone dreamgate at the start of every rando?

rain cedar
#

I'm saying that if we make changes like this dream gate loses value

broken fable
#

ah

rain cedar
#

It's no longer an item that saves several minutes

broken fable
#

in case it wasn't clear, i'm interested in randomizer being appealing to non-racers. i think a lot of the conflict between my dreams and everyone else's comes from that difference.

#

i'm interested in randomizer appealing to everyone who likes hollow knight and has gotten 100% in the vanilla game.

#

like i'd like to add a help system somewhere to get you unstuck in case you don't know where to go. that wouldn't be appealing to racers at all, but it'd make a huge difference for players who don't know all the routes through the game.

rain cedar
#

Casual players take hours to do what can be done in minutes

#

A hard save wasting a minute or two is not gonna be a big deal

#

But yeah, a help system is a good idea

#

Just something that tells you which items are possible to get currently

broken fable
#

i was thinking of making jiji tell you when you pay a rancid egg to retrieve your shade. that makes it super slow and impractical for a race while pretty doable for casual players.

#

my idea is that jiji would give you the name one an item that you can get to that will allow you to get to more items.

rain cedar
#

That incentivizes going to Jiji, which we've already established can get you stuck out of waterways

#

So I'm not sure how good of an idea that is

broken fable
#

yeah. that seems like a minor wrinkle in the idea.

#

something subtle like forbidding opening CoT hotspring until waterways is open would solve that.

rain cedar
#

Not necessarily

#

Could be that the only accessible key before waterways is the one from sly

broken fable
#

you can get to waterways hatch without being able to reach the CoT key?

rain cedar
#

Superdash or Isma's Tear get you there pretty easily, yeah

broken fable
#

oh. through the city crest entrance.

leaden hedge
#

through crystal peaks

#

you can get there with nothing

rain cedar
#

Nah

#

You would need dive

broken fable
#

so climbing up to get the simple key requires vertical movement?

rain cedar
#

Yes

broken fable
#

can you do it with pogos?

rain cedar
#

If you have double jump, yeah

hazy sentinel
#

you can do it with float intenseface

broken fable
#

ok, so we're a long way from randomizer being foolproof for casual players.

leaden hedge
#

nah

#

theres EASY

broken fable
#

even in easy mode, you can hard lock a save file.

#

in portal, there's special code for if you lock yourself in a room, then you get a custom voice message making fun of you, and the door opens to let you out. it's possible to do that kind of thing with hk randomizer, but i'm not sure it's a good idea.

#

for example, if you skip fury, and fury is claw, then the game could make save warping always spawn you at king's pass until you have claw.

#

that's probably too much weird shit that you can poke at to learn things though.

rain cedar
#

Easier to just say you need claw to get fury

young walrus
#

also to chime in about the notches. the notch mod is fun b/c you get to use more charm combos that you usually wouldn't during speedruns. plus it also rewards you for picking up more items. aka.... maybe you buy one more charm from sly that you normally wouldn't b/c it gives you another notch.

Plus, adding notches into the randomization pool doesn't add much meaningful value. It would give way more power to salubra, add more power to fungal wastes, which is OP as it is, and make you go to CoF, which nobody would want to do.

#

The notch mod makes longer runs less of a chore too. Sure, you're looking for the last item for 1.5 hours, but gaining more notches along the way makes it feel like it's not just a chore. adds a bit more fun to it

buoyant wasp
#

Honestly easy mode is good enough for casual players IMO

#

it places enough good items up front that it's not punishing, the skips required are minor

#

the logic doesn't really need a big overhaul

young walrus
#

what skips are even in that logic?

#

MAYBE the acid skip into fog?

#

that's it isn't it?

broken fable
#

i think your criticisms of notch randomization can be resolved pretty trivially: make salubra's notches, CoF notch, and probably grimm's notch "annoying" locations like grubberyfly so you never need them. or would salubra still be OP?

#

i don't think the easy mode logic has any acid skips.

buoyant wasp
#

i want to say there were a couple of trivial skips in the logic in easy, but sean knows better

rain cedar
#

I honestly don't remember what's in easy

buoyant wasp
#

but honestly Easy is for Casuals already, Hard is for speedrunners and/or folks looking for a challenge

#

the logic in hard is pretty good already. There's a few items to add in, but pretty much all the racers have said that shuffling the secondary stuff (notches/masks/vessels) there is no value to them

#

there's the key problem, but honestly no one has even tried to use the simple key on anything but sewers. there isn't anything else of value to use it on really. no one is clamoring to have jiji be viable for anything

#

at this point the focus should be on just cleaning up edge cases, adding the remaining skills/items, and a few other bits and bobs, not fundamentally rewriting how the whole thing works

#

imo

broken fable
#

i think it's fine for randomizer to be primarily a racing mod. i think i'm the only one enthusiastic about making randomizer also a casual mod.

buoyant wasp
#

what does your version do that easy mode doesn't?

broken fable
#

my version meaning my dream?

buoyant wasp
#

in the end how will you make easy even more casual than it already is?

broken fable
#

randomizing more stuff, like mask shards.

buoyant wasp
#

that actually increases difficulty

#

not decreases it

#

it means you have even more places to look in more out of the way locations

broken fable
#

it increases the size of the game, yes. idk if i'd call that difficulty, but it makes the game take longer.

leaden hedge
buoyant wasp
#

it means that instead of needing to know the location of 40 charms, you now also need to know the location of an additional 16 mask fragments, 6 notches, and 9 vessels

#

so you've nearly doubled the total number of things you have to know, for a casual, that's alot more

#

also @leaden hedge nice!

buoyant obsidian
#

How do I install it?

leaden hedge
#

its an api mod,

#

install the api and put it in Hollow Knight\hollow_knight_Data\Managed\Mods

broken fable
#

a lot of the arguments against randomizing mask shards is that "there's no point" or "it adds no value" or "it makes the game longer", but those arguments don't really work in a casual context. for casual players, you want as much whacky randomization as possible. vanilla things are boring, and casual players want mask shards. so making mask shards randomized is more fun and interesting.

vale zenith
#

oh my fucking god

leaden hedge
#

theres a few issues atm, but you can mess around will balance

#

shinies can fall out of the map, and dying in a dream softlocks you

#

so don't die in a dream hollowface

vale zenith
#

This discussion is pointless and unsurprisingly @broken fable fucking started it

buoyant obsidian
#

No pressure

vale zenith
#

it's all open source, change it yourself

rain cedar
#

@leaden hedge It doesn't look like you're blocking gates at all

#
{
    foreach (GameObject obj in GameObject.FindObjectsOfType<GameObject>())
    {
        TransitionPoint gate = obj.GetComponent<TransitionPoint>();

        if (gate != null)
        {
            GameObject.Destroy(gate);

            GateSnap snap = obj.GetComponent<GateSnap>();
            BoxCollider2D box = obj.GetComponent<BoxCollider2D>();

            if (snap != null)
            {
                GameObject.Destroy(snap);
            }

            if (box != null)
            {
                box.isTrigger = false;
            }

            obj.layer = 8;
            
            if (obj.name.Contains("door"))
            {
                obj.SetActive(false);
            }
        }
    }
}```
#

There's a helper function for that

leaden hedge
#

oh

#

I should do that

#

you can have the src if you want

#

do I just call remove on load?

buoyant wasp
#

shinies can fall out of the map?

rain cedar
#

No, you need to call it when the hero is done walking in

#

Or you get stuck oob

leaden hedge
#

shinies can get stuck,
on uumuu in acid,
mantis lords in the spikes
gruz mother under the left side of the wall
grimm, under the chest

#

basically try to kill the boss in as open an area

wispy root
#

Was debug mod already updated for 1.2.1.4?

buoyant wasp
#

@wispy root not yet

timber gale
#

Hey, sorry to hijack the current convo (or if this is the wrong box), but is there any advice on installing the debug mod? I've unzipped the file from the drive folder and copied it into the folder you access from steam/properties, and it just doesn't seem to have done anything. I'm on windows 7, and also don't have the mod api thing if that matters.

wispy root
#

Ookie

leaden hedge
#

you need the api

#

the api isn't updated for 1.2.1.4

buoyant wasp
#

so you have to either be on 1.2.1.0 or 1.1.1.8, and you need the Mod API

#

๐Ÿ˜ƒ

leaden hedge
#

also @rain cedar the hero never walks in anywhere

timber gale
#

cool, thanks!

broken fable
#

@vale zenith it's open source, but there's value in keeping changes upstream instead of maintaining a fork. the way that happens is by discussing ideas. the discussion is not pointless.

rain cedar
#

Oh, I see

leaden hedge
#

the teleport function just sets the hero position and loads the scene around them

rain cedar
#

Then yeah on scene load should be fine

vale zenith
#

@broken fable I have literally never seen you start a discussion here and anything remotely meaningful coming off of it, but I have seen you start discussions that lead nowhere a lot even without checking this discord often

#

Make the changes, submit a pull request

#

And also that's not how it works, the maintainer gets the last say and sean has been pretty fucking clear

#

if you think it's dumb, fork it and make something better and if it is people will accept your fork and either you'll become the upstream or we will have no choice but to merge it back

#

but you've been all talk from what I've seen

broken fable
#

alright. i know what's it like dealing with someone who's all talk and no code. i'll make a contribution before trying to convince people of anything else here.

vale zenith
#

That's all I wanted, there we go

leaden hedge
#

oh @buoyant obsidian or anyone else messing with the boss rush don't use the CG1 bench either hollowface

young walrus
#

hang on. imma sit at that bench real quick just cuz you said not to

buoyant obsidian
#

I'm too lazy to downgrade to 1.2.whatever

leaden hedge
#

well if you die you'll respawn there instead of in the arena

young walrus
#

pfft. dying to bosses

leaden hedge
#

well the upgrades atm are pretty wonky

rain cedar
#

You can probably just remove the bench pretty easily

amber plank
#

do you need to fight normal nkg to get to fight ngg

leaden hedge
#

you need to be able to fight it yes

buoyant obsidian
#

Do we know if 1.2.1.4 is stable or is there gonna be another update in a few days?

young walrus
#

does it have the map markers?

leaden hedge
#

if you need a save @amber plank I have one

buoyant obsidian
#

Good point Mickely

young walrus
#

who knows how long that'll take though

buoyant obsidian
#

One day I'll update Lightbringer

rain cedar
#

At the very least I'm waiting on the save functionality to update the api to 1.2.1.4

#

If they put out another beta I'll probably wait on that to hit release as well

#

There's already a working api on grimm troupe so it's not super urgent in my mind

young walrus
#

yeah. i'm leaving my modded game at 2.1.0 for now

leaden hedge
#

I just made a copy of my 1.2.1.0 install

buoyant wasp
#

probably could ask simo if he knows if one is on the horizon

leaden hedge
#

why not ask graig lol

young walrus
#

graig knows things?

leaden hedge
#

no hollowface

#

but we just take the opposite of what he says

#

99% chance to be correct

buoyant wasp
#

lol

frozen cedar
#

Hello hello

#

Heard about a mod to toggle the HUD off

ornate rivet
#

NoUI mod

#

Verulean just said it and I am dumb

leaden hedge
#

pretty sure NoUI doesn't exist anymore

frozen cedar
#

๐Ÿ˜ฑ

ornate rivet
#

oh

leaden hedge
#

and is part of debug mod now

frozen cedar
#

What do I have to do then

#

๐Ÿ˜ญ

ornate rivet
#

get debug mod

#

but it has a lot of other features in it too

frozen cedar
#

I would duppose

#

suppose*

ornate rivet
#

they are in the pinned messages, in case you didnt know

frozen cedar
#

Oh thanks

#

I was looking for it

frozen cedar
#

๐Ÿ˜ฑ

#

So many links

leaden hedge
#

you want modding API and Debug Mod

frozen cedar
#

I'm far from being a modder

#

I don't know what to do with those

ornate rivet
#

I believe there is a read me that explains it

frozen cedar
#

Why is it not native to the game ๐Ÿ˜‚

#

Doesn't sound too hard

#

Guess you can't have everything

hazy sentinel
#

why is a button to add 500 nail damage native to the game hollowomg

#

doesn't sound too hard

#

guess you can't have everything

frozen cedar
#

Yeah it's the same thing acutally

#

Except one isnt game breaking

leaden hedge
#

how do you know that the ui isn't intrinsic to the game code

frozen cedar
#

I mean as a conceptual idea

#

Not how it's intertwined in the code

hazy sentinel
#

doesn't sound too hard conceptually ๐Ÿค”

broken fable
#

sorry. i cannot find the instructions to downpatch to 1.2.1.0 . everyone keeps talking about it, and i feel like an idiot. i've checked the pinned messages like 3 times.

#

can i just throw the 1.2.1.0 modding api in my 1.2.1.4 installation? probably not, right?

#

i want to run my changes to randomizer before submitting a pull request.

buoyant wasp
broken fable
#

ah thanks!

frozen cedar
#

So after installing Modding API and Debug Mode my game crashes when I load a game ๐Ÿ˜ฆ

#

Am I missing something

rain cedar
#

Hasn't been updated to the current patch of the game yet

#

For if you really want to use the mod

frozen cedar
#

Even though it's named 1.2.1.0 and that's the game version? ๐Ÿ˜ฎ

rain cedar
#

The current game version is 1.2.1.4

frozen cedar
#

Feels like they forgot to increment the version number

rain cedar
#

If you're still on 1.2.1.0 then yes it should work

frozen cedar
#

According to my menu well

#

It is

rain cedar
#

What did you do to install the mod?

frozen cedar
#

Copy paste folder from API in the root

#

and then DebugMode

#

I see DebugMode top left

rain cedar
#

Alright, I think what's happening is it only says 1.2.1.0 for you because you installed the mod

frozen cedar
#

I see

rain cedar
#

You sure it said that before installing it too?

frozen cedar
#

I didn't check

#

But I'd find it odd to still be on an old version

#

So that's prolly it

rain cedar
#

I'm surprised your game even runs at all with the old assembly

frozen cedar
#

Haha

#

I tried the other version and my game would crash after the "Play with controller" screen

rain cedar
#

The 1.1.1.8 one?

frozen cedar
#

ya

rain cedar
#

I see

#

Well, it'll be up to date soonโ„ข

#

Actually probably tomorrow

frozen cedar
#

Think I'm gonna wait then

#

I'm trying to make animated wallpapers

rain cedar
#

I've been studying but my exams are tomorrow so I'll have more time to do mod stuff

frozen cedar
#

Wanna toggle to HUD for that

rain cedar
#

Oh, I see

#

If that's all you need from the debug mod I could just make a mod for that real quick

frozen cedar
#

That'd be awesome ๐Ÿ˜‚

#

Also I suppose it's not possible to remove the DebugMode top left in the DebugMode right?

rain cedar
#

That only shows up in the main menu

frozen cedar
#

Oh ok

#

Good thinking

rain cedar
#

Gets rid of the hud in game completely

#

Just put that in hollow_knight_Data/Managed in your game folder

frozen cedar
#

That's so cool

#

Thanks ๐Ÿ˜

rain cedar
#

Yeah, no problem

#

Small stuff like that takes basically no time to do

frozen cedar
#

fps is shit but that's the recording not the animation x)

rain cedar
#

Nice

timber gale
#

dang, what's required for those to work?

frozen cedar
#

It's an app I found yesterday

timber gale
#

sooooooo pretty

frozen cedar
#

Uses Chromium to display gifs or videos (or standard images) in HTML5

#

There are performances issues that I'm trying to figure out right now

#

but I think there's not much I can do about it

#

Seems to be on their end

timber gale
#

So it'll run as a background in the typical windows sense, or does it like overlay your background?

frozen cedar
#

Both I think

#

Whats really happening is that there is a Chrome tab being displayed on your desktop

#

Or more like

#

AS your desktop

#

And they play the video in there

timber gale
#

I feel like this may be a bit much considering it would be my pc's 6th bday gift

frozen cedar
#

๐Ÿ˜‚

#

Probably

#

It's so sad for the performance issues though

#

1080p runs poorly on one monitor

#

720p runs ok

#

720p on 2 monitors is no no

timber gale
#

Does it actually perform the minimizing it advertises?

frozen cedar
#

Unless it's 20-30fps

#

What do you mean

timber gale
#

On the page it claims to basically turn off when you're fullscreen in something else

frozen cedar
#

Yeah it does

#

But it's not really nice

#

because it takes a while when you come back to your desktop for it to start again

buoyant wasp
#

or, you could just use browser source in OBS

#

which is what the Randomizer Tracker Overlay does

#

so far I haven't heard of any performance issues with that

frozen cedar
#

Never heard of that

#

Is that native in OBS?

buoyant wasp
#

yup

#

Just sources->browser source

frozen cedar
#

What would that achieve

#

OBS is for streaming and recording isnt it

buoyant wasp
#

yeah, you're recording stuff with an overlay right?

frozen cedar
#

๐Ÿค”

buoyant wasp
#

that's what the video was?

frozen cedar
#

Nay

#

That's my desktop brah

buoyant wasp
#

ah

#

nvm then

frozen cedar
#

๐Ÿ˜„

#

Got me hella confused for a sec

buoyant wasp
#

going to go back to hating Unity's crap implementation of json

frozen cedar
#

Haha go ahead

timber gale
frozen cedar
#

What other place is gorgeous in HK

timber gale
#

Greenpath?

frozen cedar
#

Yeah but I mean

#

With usefull animations

#

Cuz that's the point

#

I'm thinking the banch in Queen's Garden with the glass

#

Forgot what that looks like

#

OMW there

#

Yeah that's so nice

timber gale
#

local mauraderer viciously murders doot doot horn

#

Maybe the bench before hornet 2?

frozen cedar
#

Yeah with the ashes?

timber gale
#

ye

frozen cedar
#

I was going there

timber gale
#

Also maybe an area in crystal peak on a conveyor where default walking keeps you in one place, just an idea tho

frozen cedar
#

Haha that sounds cool ๐Ÿ˜‚

#

Never noticed that place

timber gale
#

I'm pretty sure one of the conveyors does it

frozen cedar
#

There's gotta be a nice place in City of Tears with the rain

timber gale
#

how could i forget

#

also maybe the cup you sit in for shade cloak?

frozen cedar
#

I dont even remember that

timber gale
frozen cedar
#

oh right

#

thats what you meant

#

Could be worth the trip

#

What a beautiful game

#

I could just record myself play and put that as background

heavy geyser
#

I'm surprised I'm not sick of dirtmouth theme from alt-tabbing there so much

#

Nice game

frozen cedar
#

Haha

#

Truly

broken fable
#

been debugging a weird error i'm getting in randomizer initialization. the .dll from the gdrive zip works fine, but when i build master branch from github, then typeof(PlayerData).GetField(var.name, BindingFlags.Public | BindingFlags.NonPublic) == null is failing in AddEntry, and I have no idea why. results in entries.Count == 0 and nothing being randomized.

#

So this means that PlayerData.gotCharm_1 doesn't exist, i guess. either that or there's some weird reflection thing blocking me. or maybe something's gone wrong with dll dependencies...

amber plank
#

so what mods are combatible with each other?

#

excuse the terrible spelling

buoyant wasp
#

depends

#

Bonfire and Lightbringer are non mod-api mods, so they aren't compatible with anything

#

Debug Mod works with all other API based mods that i know of

#

Notch mod should too

#

Randomizer can definitely work with debug and notch, and likely others (though since it's designed to move around vanilla items, mods that would mess with those addremove would not work)

amber plank
#

how does one downgrade the version of the game wana try out some mods that arent updated

civic hatch
#

Does Bonfire and randomizer work together? D:

solemn rivet
#

Not rn

#

But it seems wyza has been making progress with the custom save for the api, so maybe in the future

#

But bonfire is up to date with the current game version

buoyant wasp
#

yeah, i sent a beta version of the API to sean to start working with early this morning that let's you have custom values in save files for ints/bools/strings/floats. There is some work that would need to happen for other data types, but it's fairly trivial. Right now though the focus will be making sure those 4 work since they appear to be the vast majority of things being stored.

solemn rivet
#

bonfire has one dictionary, but it's not entirely needed

buoyant wasp
#

The whole thing is rather bleh because the serializer that Unity provides is just garbage. Unless you're serializing the most basic data structures, it just flat out ignores it, so I had to jump through a bunch of hoops just to make it work.

#

dictionaries are easy to convert to this new method

#

since the underlying storage is based on a dictionary

solemn rivet
#

oh

#

okay then

buoyant wasp
#

basically in the base class that you inherit from in your Mod's class, there are 4 Fields. StringValues, IntValues, FloatValues, BoolValues. These are all dictionaries but with some special properties that allow them to be serialized behind the scenes. You can approach those from a couple different ways. You could access them directly or wrap them like so:

public int Seed {
            get => IntValues.ContainsKey(nameof(Seed)) ? (IntValues[nameof(Seed)] ?? 0) : 0;
            set
            {
                if (IntValues.ContainsKey(nameof(Seed)))
                    IntValues[nameof(Seed)] = value;
                else
                    IntValues.Add(nameof(Seed), value);
            }
        }
#

I wanted to just flat out do

#
public int Seed;
#

but yeah. that failed spectacularly

#

but then in the mod itself you could do

#
Mod.ModSettings.Seed = seed;
#

the API will take care of populating the settings when they load a game and take care of persisting the settings when they save

#

It's not ideal, but the way to make it Ideal would be to replace the JSON engine used to save/load games. Which honestly would not have been hard, but I really didn't want to do that since I have no idea what side-effects that would have on the vanilla objects that are saved.

small plover
#

so... i tried installing the blackmoth mod and... it isn't working
when i try to start the game, it doesn't show any text on the "controller is reccomended" message
and after that its gets stuck on loading

solemn rivet
#

which version?

small plover
#

1.1.1.8

solemn rivet
#

which version you using?

small plover
#

of the game or of the mod?
the number i gave is the mods, and the game is the most recent version
1.1.1.8 seemed to be the only version avaliable on the google drive downloads

solemn rivet
#

yeah, blackmoth is not up-to-date with the game

hazy sentinel
#

use API version

solemn rivet
#

now that I think about it, even api version should not be 100% compatible tho

hazy sentinel
#

yeah

solemn rivet
#

because blackmoth changes assets

small plover
#

oh rip

solemn rivet
#

I can make a barebones version

hazy sentinel
#

also is there a 1.2.1.4 API yet

solemn rivet
#

which simply imports the mod's functionality to 1.2.1.4

#

but keeps all of the vanilla text and graphics

#

would you like that, Gin?

small plover
#

would it be too much trouble?

solemn rivet
#

hm

#

not much I think

#

it's a pretty simple mod compared to bonfire

hazy sentinel
#

paid mods when hollowface

solemn rivet
#

^

#

gib moni plox

small plover
#

rip

solemn rivet
#

jk

buoyant wasp
#

not gonna lie, your new nickname is obnoxiously orange

#

perhaps we'll hold 1.2.1.4 api hostage until you revert to something less blargy

#

but really, I got the beta changes to Sean last night and he has exams today, so probably earliest we'll see the API is tonight, maybe tomorrow

leaden hedge
#

if anyone wants to add anything to boss rush

buoyant wasp
#

interesting, so bosses always drop 3 "shinies"?

leaden hedge
#

yes

#

and you get to pick 1 of the 3 to permanently upgrade your character

buoyant wasp
#

is the order of the bosses fixed? Quick overview seems to be "yes"

leaden hedge
#

yes

#

although randomizing them would simply be putting them into a list instead

#

and then randomly sorting the list

buoyant wasp
#

yeah

#

i mean, the simple rush is definitely going to be fun

#

but randomized means you could have something absurd like nail0 radiance/NKG

#

which we know is possible

#

but terrible

leaden hedge
#

its already pretty hard currently

buoyant wasp
#

yeah

#

will have to try it out tonight, unless sean finds bugs i have to fix in the api changes

leaden hedge
#

it'll be easier once, mawlek, soulmaster, nosk and flukemarm get added

#

and cg2

#

cause thats another 15 items before dream fights

buoyant obsidian
#

If you need reward balancing ideas I'll write something up

leaden hedge
#

the rewards are entirely random atm

#

so sometimes you get no damage, and no spells

#

just charms until dream fights

#

and it sucks pretty bad lol

rain cedar
#

Dying refreshes your charm state and makes you overcharmed too

#

So basically don't die

leaden hedge
#

I've not noticed that

#

I guess I could give 999 notches though

rain cedar
#

Or just set all the charmCost_x vars to 0

buoyant wasp
#

what if the number of items you get to keep is based on fight performance?

#

so, low hit/short fights = 3 charms, medium hit/medium length fight = 2 charms, lots of hits/long fight = 1 charm

leaden hedge
#

you mean like,
1 for free
1 if you don't get hit
1 for killing it under x seconds

buoyant wasp
#

yeah

#

something in that vein

#

makes it more rewarding to be aggressive or good and not just cheesing the fight and taking forever

leaden hedge
#

should be easy enough to do,
just need to change

                        if (BossRush.getCurrentItemValue(0) || BossRush.getCurrentItemValue(1) || BossRush.getCurrentItemValue(2))
                        {
                            BossRush.currentBoss++;
                            spawnedItems = false;
                            BossRush.Teleport(BossRush.getScene(), BossRush.getPos());
                        }
#

To be more like

itemPickups = getPickupAmount();
if (BossRush.getCurrentItemValue(0) ? 1 : 0 + BossRush.getCurrentItemValue(1) ? 1 : 0 + BossRush.getCurrentItemValue(2) ? 1 : 0 > itemPickups)
{
    BossRush.currentBoss++;
    spawnedItems = false;
    BossRush.Teleport(BossRush.getScene(), BossRush.getPos());
}
buoyant wasp
#

how do you choose which item you get? or is it just, i walk up and pick up something and when that happens and i exceed the amount, i teleport?

leaden hedge
#

it spawns a shiny like mantis cloak, or mothwing

#

you pick it up

#

and you teleport

buoyant wasp
#

(haven't loaded it, so haven't seen it in action) - but say there are 3 shiny's on the ground, how do you know what each one is before picking it up?

leaden hedge
#
        public void OnGUI()
        {
            if (BossRush.gm.gameState == GameState.PLAYING && spawnedItems)
                GUI.Label(itemRect, String.Format("L : {0}\nC : {1}\nR : {2}", getItemName(1), getItemName(0), getItemName(2)) );
        }
buoyant wasp
#

Ah

leaden hedge
#

preferably I'd put the names above the shinies in the world space

#

but thats considerably more complicated

buoyant wasp
#

in that case, your code above i think is slightly wrong

#

if (BossRush.getCurrentItemValue(0) ? 1 : 0 + BossRush.getCurrentItemValue(1) ? 1 : 0 + BossRush.getCurrentItemValue(2) ? 1 : 0 >= itemPickups)

#

cause i'm assuming item pickups would be 1, 2 or 3