#archived-modding-development
1 messages ยท Page 27 of 1
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
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 ๐ )
I want it to work flawlessly as we've talked about before, and also do my laundry and make me some breakfast.

next you're gonna ask for it to mix your drinks
minor patch to NGG
@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.
Nah. I like mixing my drinks myself. ๐
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.
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?
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
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
if at all
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
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
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?
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"
does super metroid randomizer do the intro station?
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
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.
It's not really that big of a deal to have like 30 seconds of cutscene in a run
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
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.
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
so adding key randomization might actually make the race faster, but probably on average will make it slower. is that what people are thinking?
no, key randomization will be dramatically slower
i feel like vanilla keys are already in really hostile spots. especially king's brand
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.
The city crest is sometimes useful
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
city crest could be randomized though.
could be, and that might not be terrible
also, you care about shopkeeper key, right?
ah, forgot about shopkeeper, yeah, sometimes we care about that
It's gonna be way more likely to be relevant now with Sprintmaster
yeah, but still, not sure randomizing keys would be fun, or frustrating
from a routing perspective
in alttp, mushroom and shovel are keys that are randomized. they aren't very fun. so yeah, maybe a bad idea.
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)
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
yeah, none of the stuff we're talking about adding should shift the run too much in either direction
speeding up certain parts of the run will really not affect that time window in any meaningful way
it adds a few more spots, most of which aren't too far off from where other stuff
Will do lewd services for an updated debug mod โค love u
the nail masters and queensoul mean that the left side of the map is more valuable
right now greenpath is good for money, but not a ton more compared to fungal/shops
does "interesting routing" mean a longer run? 
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
queens garden is a graveyard right now. you go there for abyss shreek and.....the dreamer.
plus it would give shade cloak some more use
instead of only sharp shadow
aka.... a diverting route
it would be more of a gamble option honestly
why is there no s in qga? 
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....
if someone's going to go to that length to cheat, they're going to do it anyways
yeah, but i still want to remove most of the "easy" approaches
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
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,
Yeah, not really worried about that
Nobody in this discord is gonna cheat in a randomizer tournament
i agree
I mean what do you even gain from cheating?
1st place?
ยฏ_(ใ)_/ยฏ
in a tournament that means nothing?
people cheat because they suck
^^
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.
people cheat to demonstrate how easy cheating is
and the effort required is mostly stuff that was going to happen anyway
Yeah, I suppose so
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:
are you or were you trying to play with mods?
i've seen the team cherry devs help people in #off-topic . you might get better help if you ask there.
Verify game files
@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?
probably best to pass a type to a function
and then have the save function append class.instance to the save
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
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
you probably do
class SaveGame{
public PlayerData pd
public SceneData sd
public List<T> md
}
then serialize that
hmm
encrypted? 
Dictionary<string, T> is probably better
perhaps public Dictionary<string, T> would be better. where string = modname. cause otherwise to fetch it back out, you'd have to iterate
Where the string is the mod name
lol
I guess
either way I'm very certain unities built in json serializer sucks dick
and doesn't work for lists or dictionaries
I don't believe so
does it work at all?
not really
what does it do then?
single element items
for some reason they decided they could do it better than the well established libraries like JSON.net
But if we just add the array onto the existing SaveGameData class it's not top level
this.equippedCharms = new List<int>();
It's a list, not an array
So we can use lists for sure
Have to test dictionaries
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
@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)
}
}
do each of those SetState branches also exit the function?
yes
oh. this is actually fsm, right? you're representing it in C#
yeah
cool
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
is claw always required in rando?
yes
are dream nail and claw the only two that are always required?
dream nail, claw and either isma's OR crystal heart
wait. is that the whole list?
ya
huh. that's pretty simple.
granted, there's items that are locked behind other items
right.
i gave them a seed a couple weeks ago where CH was behind dive which was behind wings which was behind hiveblood ;P
which was behind claw
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.
fireborn broke the logic and got tear from the womb skip, but...
yup
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
but that's not unlike ALTTP
usually, the seed gives you 2 items, then the remaining ones unlock. and you make choices
sometimes you start out getting all but 1 thing, but then spend an hour hunting for that 1 thing
sometimes the seed hates you
alttp requires like 11 items to finish though. more than 3.
yes, but you also get items at a much higher rate
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
there's easily > 100 item locations, vs HK which has about 45, (like 13 of which are in shops)
https://drive.google.com/open?id=0B-qUydUUcSkUakROM1UyZzZyYjg Bonfire Mod v 1.2.1.4
@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.
The Mod class makes more sense to me for this
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
Not sure, I'll look into that and update the guide tonight
If you want to find it yourself look on steamdb
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
Alright
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
use a chroot 
hm, nope, it just works
or a second computer 
i suppose the only real risk is save game corruption
1.2.1.0 is 8751284666946274773
is there an equivalent to PlayerData.Instance for SaveData?
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
huh?
looks like the #297468195026239489 channel is leaking
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);
weird,
dnSpy fucking with you too?
yeah, I can't compile the GameManager class (though most others that i've tried have worked)
@rain cedar i'm getting started on xml changes.
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?
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
usually what I do if I need to edit those methods/the whole class, I edit it via IL instructions
it's suppose to be in assembly-csharp, but for some reason Language.GetLanguage is broken
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
hmm, looks like there is a beta3, might try that
I'm on the latest version I know of, and there are still issues
so there is, oh well
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
Sometimes I just restart my computer and dnSpy works again
also Steam sometimes gives my PC slightly bugged builds for whatever reason
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
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?
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
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
@rain cedar is the code on github the current randomizer?
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))
easy is not expected to do acid skips, right?
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
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.
@buoyant wasp Yes it's up to date
*Lurien, not Lorien.
ยฏ_(ใ)_/ยฏ
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....
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
https://github.com/MyEyes/RandomizerMod/blob/a7fa150c488856b34e3f894b227b6d8a0f9ac8a1/randomizer.xml#L1028 why is this hard="false"?
@deep pilot there's nothing there that's randomized, so the current rando just doesn't say. but i agree, fwiw
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
i don't follow your logic. if crystal heart were indirectly required, that's its own thing.
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
Good point, not sure why that would be excluded from hard
Weaversong can but it takes like a year
how long does spore shroom take?
can defender's crest kill them?
Doubt it
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
I like that idea
Yeah, could work
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?
no one is working on it
the original creator pulled all content from all sites and issued DMCA notices
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
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?
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
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?
I actually mentioned that to Sean
doesn't go back to 5 notches when reverting from void heart either
oh sry for the late reply @@
umm
lemme check
I'm sure many members of this sub would've heard of the game Cuphead by now. I've been having a blast...
This post inclined me to come over here to ask about the mod. But thanks for the info @buoyant wasp
It might happen!
built in boss-rush would be epic
Devs know ppl want a boss rush
@warped sinew did you do NGG on your stream today?
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?
What makes him hard?
idk
OK lol
lemme check mod's readme
alot
ground spears attack is firing constantly, for one. not sure what else
final phase spawns a 2nd grimm
only thing in it is this:
if you actually complete this DM me with proof and i'll make it harder
Lol sounds great
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.
does that make the spikes inconsistent too??
is it possible to add a mantis lord like that mod adds a grimm
to the mantis lords fight
maybe, dunno, would have ot ask @leaden hedge
kk
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
This ^ ๐
Radiance, but instead of spears, she summons more Radiances.
maybe I'll go through and make all bosses full grimm 
and yes you could add another mantis lord to that fight
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
do most mods work on current version of hollow knight?
alright thanks
or 1.1.1.8 depending what you want
in the gdrive, every mod has what version it works on
i dont know what most of the mods do so not sure where to start looking
Readme files are included in the zips
Or ask in modding
I know most of them, but I'm going to sleep now
alright thanks
also ive heard of randomizers for hollow knight? what does that randomiz?
skills, spells, charms
i might try ngg later myself to my own brain telling me no
lol
i think its impossibl
nah its doable
i aint got the all the time in the world to fight 1 boss
though i do wana see someone beating him lol
Is a x10 still possible
i can see someone beating that but i dont seemyslef beating that
though ill try for sure
I watched that vid. Lol that boss is great
@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
has anyone come across whatever it is that controls minions' damage?
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
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
can it handle simple fields, such as ints and bools?
the custom save for the modding api
yeah it will
cool
basically if your mod needs to save stuff in the save file
instead of this:
public class RandomizerMod : Mod { }
it'd be
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
also I don't think SetBool has the same "_" stuff GetBool does
which means it crashes the game
normally functions that start with "_" are private functions in c#
(naming convention wise)
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
ah
either that or something else in my code is crashing
I dunno
might just be this shiny charm code being shit
Is there a video of Nightmare God, and if so, can I get a link to it?
gdrive says modding api is only at 1.2.1.0. is that accurate? that doesn't mean like 1.2.1.x, right?
not necessarily
afaik, the modding API for 1.2.1.4 isn't out yet
i'm guessing we just haven't gotten around to it yet. or are we waiting for more updates from
first?
i'd ask @rain cedar - I think he's the one who handles the updates
firzen is here 
i guess i'm just wondering if we already knew that
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?
does anyone know of the top of their head what the charm functions are, to do stuff like enable jonis / lifeblood
isn't that in CharmUpdate()?
HeroController probably
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
basically just wanted the charms that are only checked at bench
oh, ok then
@rain cedar do you remember what troupe leader grimm required to be fought?
@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
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
I'm doing stuff like _true and _fireballLevel in randomizer
Works fine
If that's what you mean
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
Where is it crashing?
not sure somewhere in FSM code
Weird
I mean whatever, I'm just using charm1,2,3 as proxies instead
not like anyone would like compass, gathering swarm or grubsong
Grubsong is an ok charm
I could probably use trinkets instead
Maybe
also fluke with nothing is garbage lol
Debug mod works with 1.2.1.4 now?
Not yet
@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?
the hooks have documentation
[HookInfo("Called whenever a new gameobject is created with a collider and playmaker2d", "PlayMakerUnity2DProxy.Start")]
public event ColliderCreateHandler ColliderCreateHook;
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
k
And when you're done I'll port it to 1.2.1.4 and add it back to 1.1.1.8
k
the vast majority of the changes are in the Modding namespace, and i'm 95% sure will not break existing mods.
Alright
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)
No idea
I tried just having it as a separate dll before but couldn't get that working
should work fine
just seems like maintaining this would suck for you
that you have to go through it all every release
It does
did anything happen with talking to TC about hosting the modded dlls somewhere?
Yeah, they're fine with us using the drive folder
how public can the links to it be?
It's probably best to just keep it linked in the discord
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
Separated out?
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.
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
I'm generally in favor of reducing the pressure on Sean to do all the maintenance work.
less time maintaining stupid stuff = more time spent making awesome stuff
is it copyright violation to livestream looking at the .dll in dnspy? 
technically, it's copyright violation to be editing it at all i'm pretty sure
@rain cedar if you stream your workflow for updating the Modding API, i could write down what i see as instructions for someone else.
broadcasting it probably isn't wise ๐
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
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
I don't have to broadcast it
ok, i might try that.
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
what do people think about randomizer removing the hard saves after dreamers?
seems like that would speed things up a lot
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
well, to better understand people's thinking about randomizer, why do people think notch mod is a good idea?
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
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?
That would be why I made it as a separate mod
Doesn't make sense to be part of a randomizer
is notch mod used in rando races?
Depends on who is racing and what they agree on
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
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
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?
I'm saying that if we make changes like this dream gate loses value
ah
It's no longer an item that saves several minutes
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.
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
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.
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
yeah. that seems like a minor wrinkle in the idea.
something subtle like forbidding opening CoT hotspring until waterways is open would solve that.
Not necessarily
Could be that the only accessible key before waterways is the one from sly
you can get to waterways hatch without being able to reach the CoT key?
Superdash or Isma's Tear get you there pretty easily, yeah
oh. through the city crest entrance.
so climbing up to get the simple key requires vertical movement?
Yes
can you do it with pogos?
If you have double jump, yeah
you can do it with float 
ok, so we're a long way from randomizer being foolproof for casual players.
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.
Easier to just say you need claw to get fury
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
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
what skips are even in that logic?
MAYBE the acid skip into fog?
that's it isn't it?
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.
i want to say there were a couple of trivial skips in the logic in easy, but sean knows better
I honestly don't remember what's in easy
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
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.
what does your version do that easy mode doesn't?
my version meaning my dream?
in the end how will you make easy even more casual than it already is?
randomizing more stuff, like mask shards.
that actually increases difficulty
not decreases it
it means you have even more places to look in more out of the way locations
it increases the size of the game, yes. idk if i'd call that difficulty, but it makes the game take longer.
unrelated to whatever you guys are on about heres a super beta version of boss rush
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!
How do I install it?
its an api mod,
install the api and put it in Hollow Knight\hollow_knight_Data\Managed\Mods
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.
oh my fucking god
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 
This discussion is pointless and unsurprisingly @broken fable fucking started it
No pressure
it's all open source, change it yourself
@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
oh
I should do that
you can have the src if you want
do I just call remove on load?
shinies can fall out of the map?
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
Was debug mod already updated for 1.2.1.4?
@wispy root not yet
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.
Ookie
also @rain cedar the hero never walks in anywhere
cool, thanks!
@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.
Oh, I see
the teleport function just sets the hero position and loads the scene around them
Then yeah on scene load should be fine
@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
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.
That's all I wanted, there we go
oh @buoyant obsidian or anyone else messing with the boss rush don't use the CG1 bench either 
hang on. imma sit at that bench real quick just cuz you said not to
I'm too lazy to downgrade to 1.2.whatever
well if you die you'll respawn there instead of in the arena
pfft. dying to bosses
well the upgrades atm are pretty wonky
You can probably just remove the bench pretty easily
do you need to fight normal nkg to get to fight ngg
you need to be able to fight it yes
Do we know if 1.2.1.4 is stable or is there gonna be another update in a few days?
does it have the map markers?
if you need a save @amber plank I have one
Good point Mickely
who knows how long that'll take though
One day I'll update Lightbringer
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
yeah. i'm leaving my modded game at 2.1.0 for now
I just made a copy of my 1.2.1.0 install
probably could ask simo if he knows if one is on the horizon
why not ask graig lol
lol
pretty sure NoUI doesn't exist anymore
๐ฑ
oh
and is part of debug mod now
they are in the pinned messages, in case you didnt know
you want modding API and Debug Mod
I believe there is a read me that explains it
Why is it not native to the game ๐
Doesn't sound too hard
Guess you can't have everything
why is a button to add 500 nail damage native to the game 
doesn't sound too hard
guess you can't have everything
how do you know that the ui isn't intrinsic to the game code
doesn't sound too hard conceptually ๐ค
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.
it's on the speedruns.com guide
ah thanks!
So after installing Modding API and Debug Mode my game crashes when I load a game ๐ฆ
Am I missing something
Hasn't been updated to the current patch of the game yet
For if you really want to use the mod
Even though it's named 1.2.1.0 and that's the game version? ๐ฎ
The current game version is 1.2.1.4
Feels like they forgot to increment the version number
If you're still on 1.2.1.0 then yes it should work
What did you do to install the mod?
Copy paste folder from API in the root
and then DebugMode
I see DebugMode top left
Alright, I think what's happening is it only says 1.2.1.0 for you because you installed the mod
I see
You sure it said that before installing it too?
I didn't check
But I'd find it odd to still be on an old version
So that's prolly it
I'm surprised your game even runs at all with the old assembly
Haha
I tried the other version and my game would crash after the "Play with controller" screen
The 1.1.1.8 one?
ya
I've been studying but my exams are tomorrow so I'll have more time to do mod stuff
Wanna toggle to HUD for that
Oh, I see
If that's all you need from the debug mod I could just make a mod for that real quick
That'd be awesome ๐
Also I suppose it's not possible to remove the DebugMode top left in the DebugMode right?
That only shows up in the main menu
Ok, just tested this and it seems to be working
Gets rid of the hud in game completely
Just put that in hollow_knight_Data/Managed in your game folder
Nice
dang, what's required for those to work?
It's an app I found yesterday
sooooooo pretty
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
So it'll run as a background in the typical windows sense, or does it like overlay your background?
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
I feel like this may be a bit much considering it would be my pc's 6th bday gift
๐
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
Does it actually perform the minimizing it advertises?
On the page it claims to basically turn off when you're fullscreen in something else
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
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
yeah, you're recording stuff with an overlay right?
๐ค
that's what the video was?
going to go back to hating Unity's crap implementation of json
Haha go ahead

What other place is gorgeous in HK
Greenpath?
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
Yeah with the ashes?
ye
I was going there
Also maybe an area in crystal peak on a conveyor where default walking keeps you in one place, just an idea tho
I'm pretty sure one of the conveyors does it
There's gotta be a nice place in City of Tears with the rain
I dont even remember that
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
I'm surprised I'm not sick of dirtmouth theme from alt-tabbing there so much
Nice game
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...
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)
how does one downgrade the version of the game wana try out some mods that arent updated
Does Bonfire and randomizer work together? D:
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
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.
bonfire has one dictionary, but it's not entirely needed
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
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.
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
which version?
1.1.1.8
which version you using?
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
yeah, blackmoth is not up-to-date with the game
use API version
now that I think about it, even api version should not be 100% compatible tho
yeah
because blackmoth changes assets
oh rip
I can make a barebones version
also is there a 1.2.1.4 API yet
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?
would it be too much trouble?
paid mods when 
rip
jk
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
interesting, so bosses always drop 3 "shinies"?
is the order of the bosses fixed? Quick overview seems to be "yes"
yes
although randomizing them would simply be putting them into a list instead
and then randomly sorting the list
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
its already pretty hard currently
yeah
will have to try it out tonight, unless sean finds bugs i have to fix in the api changes
it'll be easier once, mawlek, soulmaster, nosk and flukemarm get added
and cg2
cause thats another 15 items before dream fights
If you need reward balancing ideas I'll write something up
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
Dying refreshes your charm state and makes you overcharmed too
So basically don't die
Or just set all the charmCost_x vars to 0
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
you mean like,
1 for free
1 if you don't get hit
1 for killing it under x seconds
yeah
something in that vein
makes it more rewarding to be aggressive or good and not just cheesing the fight and taking forever
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());
}
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?
(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?
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)) );
}
Ah
