#archived-modding-development
1 messages Β· Page 29 of 1
ah
yup
gotta reset the seed on the generator
Random.seed = System.DateTime.Now.Millisecond;
meh, no worries
cause I literally just finished recoding 80% of it
haha
and it doesn't compile 
it's not a huge thing, having to restart the game is only annoying, not breaking.
oh, one thing while you're rewriting stuff, can you make those 3 guys in false knight not exist when you teleport in?
@buoyant wasp I'm fine with MIT
sucks to get teleported and hit immediately
I assume Sean is too but ask him as well
honestly you could probably steal the seed generation button from the randomizer
π
wow this actually worked
bonus there is that folks could share boss rush seeds
"wow this actually worked" is basically how i felt last night when i finally solved the API thing. honestly didn't expect it to work π
lol, found a way to soft lock, don't go left at false night
if you fall down, you're just screwed
yeah
@buoyant wasp Yeah I don't have any problems with that
bleh, got stuck in the floor of the soul master fight
also, if you quit out and reload the game, you're served with the loading screen forever
license added
because I don't save your progress in the save
so It has no idea where its supposed to be
hehe, well you can now π
yeah, in my case i wanted to try and unstuck myself
Yeah, KDT is working on a boss rush mod now
So i wonder, now that we can compile the API and merge it, rather than having to hand add it......would it be worth looking at using something like log4net when looking at updating the logging system? Instead of re-inventing the wheel, leave it to a library actually designed to deal with logging and concurrent writes and levels and all that.
heres the new bossrush code https://github.com/KayDeeTee/hk-bossrush/tree/dev/src it pretty buggy atm so no real release
its playable, but certain stuff doesnt work how I want
although it fixes mobs spawning inside you
and the random seed issue
interesting, so now that you are storing boss order seperately i assume you're opening the door for shuffling the order down the road?
should be very easy to randomize order now
guessing each of the commented bosses present some technical challenge ?
soul master is buggy,
thk is buggy after kill
WD / GPZ have no issuses, but I haven't bothered to go get the positions
but I'm not sure on the difficultly to set WD / GPZ
and theres 1 more main issue
theres 22 bosses and 66 items atm
3 items per boss = 66 items used
more bosses = crash
I would put WD in the same category as Tyrant, LK, and FK
hmm
what if you made it so that once you've gone through the available pool, any items not picked up would get reshuffled back into the pool
also, perhaps putting in the unbreakable versions of the 3 fragile charms would give you 1 more bosses' worth
but basically, lets say someone perfect kills the first 22 bosses and gets 2 items per boss. there are now 22 items left that haven't been picked up. those 22 could then become the new pool for the remaining bosses
I guess I could recode assignItems() and only call it before spawning the items
but yeah the only bug atm is ItemData.activate()
if (!ItemInfo.upgrades.ContainsKey(varName))
ItemInfo.upgrades[varName] = 0;
ItemInfo.upgrades[varName]++;
this doesn't seem to work, which breaks shadow cloak
hmm, how does the randomizer do it?
it uses if hasDash ? "hasShadowDash" : "hasDash"
which I could also do
but
private string getName()
{
if (!ItemInfo.upgrades.ContainsKey(varName))
ItemInfo.upgrades[varName] = 0;
if (lanSheet != "RAW")
return Language.Language.Get(lanKeys[0], lanSheet);
return lanKeys[ItemInfo.upgrades[iternName]%lanKeys.Length];
}
allows me to have multiple names for items as they get more levels
itemInfo.Add(new ItemInfo("nailLevel", "UI", "nailDamage", 4, "INV_NAME_NAIL2", "INV_NAME_NAIL3", "INV_NAME_NAIL4", "INV_NAME_NAIL5"));
as you can see here
fk
I'm retarded
lol, I have insufficient data to either agree or disagree on your mental status
private string getName()
{
if (!ItemInfo.upgrades.ContainsKey(varName))
ItemInfo.upgrades[varName] = 0;
if (lanSheet != "RAW")
return Language.Language.Get(lanKeys[ItemInfo.upgrades[iternName]%lanKeys.Length], lanSheet);
return lanKeys[0];
}
well whatever it works better than I expected
considering I completely recoded the entire thing
lol
better than what we had before, which was nothing
oh, interesting, you made the fragile charms unbreakable?
yeah
nice
@rain cedar - is there ever a situation in which 2 things could call ModLog from separate threads/concurrently?
Unless the mod maker goes out of their way to thread something, I don't think so
MonoBehaviour.StartCoroutine might thread things
I'm not 100% sure on that
k
waffling on the logging thing. I know right now fast concurrent logs can end up causing it to break (we did it with the overlay mod). Thinking it might be best to use something like ConcurrentQueue<string> to handle it.
Hi, I'm new in all this and I was messing around with dnSpy trying to find and change some values. However, I couldn't find where some charm effects are coded (I know most of them are on HeroController) nor where some constants are defined. Is that me or Assembly-CSharp.dll is sort of cut down?
There's a lot you won't be able to find unless you start looking through FSMs.
dnSpy will only get you so far
I remember someone said that glass soul kills you after getting hit, not necessarily taking damage, so does that mean that Life Ender/Zote could kill you?
I would assume no
Also to save people the trouble of looking it up like I did: He means Zote
I fixed it
Glass Soul kills you when you take damage, not when you get hit.
Although I guess that could also mean it kills you when you take 0 damage? But I don't think Zote kills you.
interdsting
I dunno if I actually fixed it or what 
so it just magically started working?
no
public void updateText()
{
SetTextMeshProGameText[] textMeshPro = shiny.GetComponentsInChildren<SetTextMeshProGameText>();
foreach (SetTextMeshProGameText tmp in textMeshPro)
{
tmp.name = "FSM NO LOOKY HERE";//this is new
if (tmp.convName == "INSPECT")
{
tmp.convName = "INSPECT" + id.ToString();
tmp.sheetName = "item" + id.ToString();//this is new
//Modding.ModHooks.ModLog(tmp.convName);
tmp.UpdateText();
}
}
}
lol
public string PromptOverride(string key, string sheet)
{
if (key == "INSPECT")
{
BossInfo.updateText();
return BossInfo.itemName(1);
}
if (sheet == "item0")
return BossInfo.itemName(0);
if (sheet == "item1")
return BossInfo.itemName(1);
if (sheet == "item2")
return BossInfo.itemName(2);
return Language.Language.GetInternal(key, sheet);
}
and I changed it from looking at the convName to sheetName
well, whatever works
is this version ready for playing yet?
also, not sure if this will apply to your new code, but i just had an instance where i kill gruz without taking any damage, but could only pick up 1 charm. does your "damage taken" thing check for mask loss or could it count damage that would have been taken while invincible (such as with dive)?
Why do I feel like I'm looking at java code.
It's c#
Or that.
@buoyant wasp
take a guess
Ascend!
that's a new super secret buff that elevates you to god level of power right? π /s
Think they were doing some boss rush.
yeah, i was being sarcastic about the buff. if you want the god buff, install debug mod π in this case, he's working on buss rush, yes
Hollow knight does not like 2 radiance existing
Only seems to have issues when switching phases though
It was doubling the attacks just fine as far as I could tell, but when one if them got to the spike rain the game crashed
@leaden hedge - found another bug with the old version to check for in the new. If you kill the boss and die in the same time frame, you'll respawn, but the shinies are gone, so softlock π
Is the boss rush mode functional? I'd love to try it but I'm completely new to HK mods and I've got no idea how to install it. Readme doesn't help.
install the api, then put the dll in Hollow Knight\hollow_knight_Data\Managed\Mods
Text should work now, and you shouldn't be able to softlock by dying as you kill the boss, although dying AFTER will
oh and items should be pooled, so when you run out, it'll put old ones back into the pool
OwO what's this ?
It's been a while since I came here
Are mod actually doing great changes now ?
just make a backup of assembly-csharp.dll
%appdata%/../locallow/team cherry
boss rush just teleports you to each boss
you kill it, and it drops 3 upgrades and you get to pick one of them, (unless you kill it without getting hit, then you get 2)
then you go to the next boss
Alright made a backup
you need to play with an empty save anyway
you need to install the api
oh i thought i got to get 2 upgrades as a glitch
the api makes the folder for you
didn't know it happened if you defeated a boss without taking a hit
Where is the API ? Sorry if those question sounds dumb but I never did HK modding before.
its in the gdrive pinned in this channel
Latest version is 1.2.1.4 ?
yes
Hmm... What do I do once I've merged the old files with the new ?
Do I run the game ?
Alright it's working. Thanks for the help. I've always wanted a boss rush mode.
Hmm
Not sure if bug but when you start a new save it takes you back to the same boss.
Also Grimmchild doesn't seem to be working.
So it's useless as a reward.
Oh ok...
the only items that are actually broken are joni's and hiveblood
so, found a softlock
if you die to grimm1, then go over to get your shade (which is outside of grimms room), he'll still start the fight, but then you're locked out of his room.
get it after the fight 
well, yes, but there's no way for a new player to know that
and since you can't save/quit/load, you're just screwed π
also, i don't htink you've quite figured out the labeling stuff
legible
more that somehow flukenest was listed twice
double flukenest ez
wth...flukenest again
which was dreamwielder...
yay, i'm playing randomizer bossrush apparently π
3 flukenst = cast once and the entire screen should be nothing but flukes π
and got no items at all from mantis lords
Anyone got tip for the Watchers Knight ?
I feel like it's way too hard that early on unless you highroll upgrades.
eh, honestly, focus on getting double drops from the first 4 bosses,
also, i think the new code for shuffling items back into the pool is broken, i've had shape of unn show up like 4 times in the same run
and sometimes shape of unn is something else, like dreamshield
hmm
I wonder if theres a desync between what its showing
and what it is
I'll revert that and see if it fixes anything
also, i need to test it, or oyu can, but kill false knight, then quit, start a new game and kill him again, city crest now drops (1st time it doesn't)
ah it only destroys it first time, because it uses the fact I don't have a shiny yet to determine if the shiny is city crest
so second load I already have a reference and it doesn't detect it
yeah, but i'm wondering if that messes up your labeling
like since there are now 4 shinies
it can't rewrite the labels for them correctly
public void Spawn()
{
shiny = Instantiate(BossRush.shiny);
if (position.x < -900)
shiny.transform.position = new Vector2((BossRush.hc.transform.position.x + (id == 1 ? -2.75f : 0) + (id == 2 ? 2.75f : 0)), BossRush.hc.transform.position.y);
else
shiny.transform.position = position;
PlayMakerFSM shinyFSM = FSMUtility.LocateFSM(shiny, "Shiny Control");
shinyFSM.FsmVariables.GetFsmInt("Trinket Num").Value = id+1;
FsmUtil.ChangeTransition(shinyFSM, "PD Bool?", "COLLECTED", "Fling?");
updateText();
}
public void updateText()
{
SetTextMeshProGameText[] textMeshPro = shiny.GetComponentsInChildren<SetTextMeshProGameText>();
foreach (SetTextMeshProGameText tmp in textMeshPro)
{
tmp.gameObject.AddComponent<SetInspectText>().id = id;
Destroy(tmp);
}
SetInspectText[] sits = shiny.GetComponentsInChildren<SetInspectText>();
foreach (SetInspectText sit in sits)
{
sit.id = id;
}
}
the only issue I could imagine it being
is if for somereason unity is pushing my changes back to BossRush.shiny
Double drops ?
@leaden hedge yup, having city crest definitely screws it up. it got labeled as howling wraiths, the left was howling wraiths, then killing gruz howling wraiths was labeled on the right, which when picked up granted nothing, then the next boss dropped nothing at all
@copper rover - if you take no damage in a fight, you can pickup 2 of the 3 items instead of 1
Ooooh
also, using dive still counts as taking damage through the invincibility frames
Are you saying I should get gud
uhm......i'm not usually in that camp, but...purple? 
this one should hopefully work
also you really shouldn't lose flawless from dive
public int tookDamage(ref int type, int d)
{
if (d > 0 && (hc.damageMode != DamageMode.NO_DAMAGE && !hc.cState.invulnerable && !hc.cState.recoiling && !PlayerData.instance.isInvincible && !hc.cState.dead && !hc.cState.hazardDeath))
{
flawless = false;
if (PlayerData.instance.health - d > 1)
{
BossRush.hc.normalSlash.SetFury(false);
BossRush.hc.alternateSlash.SetFury(false);
BossRush.hc.upSlash.SetFury(false);
BossRush.hc.downSlash.SetFury(false);
BossRush.hc.wallSlash.SetFury(false);
}
}
return d;
}
this is without the city crest, bug
i'll test the new one here in a bit, have to go put a bed together apparently
also, in that image there, i picked up the left one, which should have been fireball, but was nothing
@rain cedar About the debug mod. The mouse cursor is not visible so it's very hard to see what you're clicking. Any chance to add a hovering effect on the buttons?
press escape
Ah.
I didn't even know you could click them without pausing
with the new input beta you can press buttons with the controller
for some reason
attacking toggles my invincibility
Sounds fun
Btw, mods that are open-source should have a link to the github repo in their README.
Makes sense
Wait, you created the buttons of the top menu from scratch?
Yes
Why not use GUI.Button?
Mainly for it to be easily distinguishable from Kein's debug mod
Don't want him trying to claim this is his or anything
Yeah, I was finding that sometimes controller would click stuff and sometimes it wouldn't
Is there a mod that adds a custom made Hornet ?
Lightbringer is the closest thing to that, but it's not updated for Content Pack 2 yet
What does it do ?
Instead of slashing with a sword, you shoot out little projectiles
and there's a bunch of new charms to go with them
It's probably nothing like Hornet is going to be at all but I've seen a few people compare the two
@rain cedar - Want to add a version# to mod API (so that it shows up with the other mod's versions), you want it in ModHooks or ModLoader?
ModHooks already has a version attribute which is of type GameVersionData
Probably best to add it there
k
do you want to just append the GameVersionData? Like 1.2.1.4.something?
just thinking it'd be less confusing to say "Mod API v1.0.0 for game version 1.2.1.4"
GameVersionData has a field gameVersion
I'm thinking you could have a similar field like modVersion
yeah
interesting, looks like you must have added that with the 1.2.1.4 release, cause when i exported these out of the 1.2.1.0 API, it didn't have this field :/
wonder what else i might have missed then
I think I put it in the 1.2.1.0 one on the drive
But I guess it wouldn't be in the github project
also I found the problem
Object Pool attached to GlobalPool has run out of Arrow Prompt prefabs, Instantiating an additional one.
so instead of actually using the Arrow Prompt attached to the gameobject im copying
it just picks a random one
lol
so does that happen when you have 4 arrows on the screen?
or does it just happen randomly?
it overflows randomly
everytime an arrow prompt is required but the pool is empty it creates a new one
but otherwise it just picks a random one
Beta version of the Mod API (1.2.1.4-2). Includes completely rewritten logging system (look at ModHooks.Logger) which allows for different levels of logging. FINE > DEBUG > INFO > WARN > ERROR. Also now adds Modding API version # to the list of versions on the main menu. Right now logging level is hard coded to be DEBUG or higher, need to put in something to make that adjustable...
You gain your health-2 damage to your Nail in exchange for not being able to use Fury.ο»Ώ (Glass Soul) - fireb0rn
So if you have 5HP then your nail damage is boosted +3?
@buoyant obsidian
I think so yeah
Isn't the mod made by you π€
I was double checking
Wait! - How do you have health in Glass Soul?
The health is still there, you just die in one hit.
And nail damage is equal to base+health-4
So that means +1 damage at the beginning, but fireb0rn gets the lifeblood at the beginning of his run so it ends up being +3
Useless charms like Thorns of Agony give you movement speed in 1.1.1.8, but I'm probably taking that out for the next version
I'll update Glass Soul right now since it's relatively simple
Yep
So it should be Base+HP-4?
Yeah
Great
@leaden hedge most recent dll seems to introduce a fair amount of lag when you kill a boss
so saying you have all masks and jonis blessing is a +10
if someone would be mad enough to do that
Yeah you can get some serious bonus damage
Like +25 if you really wanna gather every lifeblood cocoon
That would really be a long journey
@leaden hedge - Whatever is causing this (might be what you found about the arrow), is murdering FPS. I have thousands of these in the output_log.txt
NullReferenceException: Object reference not set to an instance of an object
at BossRush.ItemData.updateText () [0x00000] in <filename unknown>:0
at BossRush.ItemHandler.updateText () [0x00000] in <filename unknown>:0
at BossRush.BossInfo.updateText () [0x00000] in <filename unknown>:0
at BossRush.SetInspectText.UpdateText () [0x00000] in <filename unknown>:0
at BossRush.SetInspectText.Update () [0x00000] in <filename unknown>:0
its complaining that SetInspectText doesn't exist
because instead of using the actual children of the prefab I copied
its just remaking them
anyway to prevent NRE there? exceptions are slow (i think catching an exception takes like 50-70ms)
i thought it was already in c#?
I mean the shiny object
quality design btw
every single arrow prompt has every single possible label hard coded into it
lol
rather than just setting the string
that's alot of overhead
did you change fury to work at full HP (since it was counterintuitive to have when you're trying to kill bosses without getting it?)
or is it a bug that my blade is red?
so its red, but it does nothing? π
yeah
lol
I guess it tells you if you lost your flawless bonus
well, there is that i suppose, but doesn't really make it worth picking up either π
Anyone here remember that easy way to remove the overcharm backboard?
not sure if this is part of the normal game logs, but i also see a ton of this in the logs while in boss rush:
FSM not Preprocessed: Particle Rock Large Pool(Clone) : rubble_push
Browse Hollow Knight: Glass Soul mod for Hollow Knight files to download full releases, installer, sdk, patches, mods, demos, and media.
Glass Soul should be updated for 1.2.1.4 if anyone wants to test it out for me
is sporeshroom in the rando logic for getting into greenpath?
should be
Is there a way to add/subtract charm notches in the debug mod?
What can be done so far in modding? I have yet to take a look at the files
I technically haven't finished the game yet
Or maybe it would be easier to ask is there anything major that can't be done at the moment?
Add content :P
what kind of content?
Like, I'd be curious about doing map editing or adding charms
Ah, that's understandable
I imagine it's sort of similar to Rain World modding
Because they're both mostly dnSpy
yeah
the thing is, though, that most of the code is not on the assembly
if it was, we could change it, even with dnspy
most of the code is on finite state machines
which are a mess
and not directly editable
could be worse, wyza
most things are reasonably named
and are somewhat reasonably placed
let me refer you to the gist that KDT posted earlier about the label/arrow things π
but yes
Weren't the devs talking about a full rework at one point?
they could have compiled it with code obfuscators and digital signing that would make it a great deal harder
wait, wasn't the arrow thingies mosttly fsm?
idk
it was just a long list of nested stuff in what i'm assuming is some sort of psuedo code
this
or a call stack or something
its a dump of a game object tree
-'s are game objects length is depth
_'s are components on each branch
so, Shiny Item, is made up of a transform, sprite render, animator, fsm, rigidbodt2d, boxcollider2d, some fsm stuff, and audio source
and has an inspect region as a child
and thats made up of a transform, boxcollider, fsm stuff
and has prompt marker, and arrow prompt as children
interesting
I already made a object dump.
Used it to hide certain game object to create the Hollow Knight map.
Btw, one useful thing to add to the Mod API would be subscribing to key press.
you don't need to do that
How to call a function when a certain key is pressed?
I want unused keys.
Input.GetKey(KeyCode.A) will be true if A is pressed
That means I need my own loop.
ok
you mean keyboard keys, not controller buttons?
make a class
public class button : MonoBehaivour{
public void Update(){
if(Input.GetKey(KeyCode.A){
//dostuff
}
}
}
public override void Initialize(){
GameObject go = new GameObject();
GameObject.DontDestroyOnLoad(go);
go.addComponent<button>();
}
tada
you have a loop
Ya, but thatd be nice to have it directly from the API.
Also simplify unloading as well.
seems odd to make an api for specifically this when you can do it via creating a script and attaching it
do you want a delegate for every single key combo?
including presses, releases, holds and modifiers
I think everythings that is very common should be there.
So people dont resort to hacks to make it work.
what I did isn't a hack
thats literally what you'd do if you main a game in unity
and wanted to get the A press
Adding a fake invisible button to check for input is kinda a hack.
Ya, I guess.
it does literally nothing but listen for a keypress
@rain cedar It looks like you're going to beat me to the xml changes. i've made changes already to my xml and i'm partway through the C# code to interpret it.
I changed the xml but I don't have code for parsing it
Not at home to do that right now
@rain cedar I'm not sure you're going to like one of my changes. It's to switch from using easy, hard, and hardpermadeath mode filters to using "Shade Skip" and "Hard Mode" as pseudo items that you start with in certain modes. I think it makes the logic way easier to understand, and much less verbose.
for example, here's the requirements to get to salubra:
<or>
<requirement>Mantis Claw</requirement>
<requirement>Mothwing Cloak</requirement>
<requirement>Shade Cloak</requirement>
<requirement>Monarch Wings</requirement>
<requirement>Crystal Heart</requirement>
<and>
<requirement>Hard Mode</requirement>
<requirement>Vengeful Spirit</requirement>
</and>
<and>
<requirement>Hard Mode</requirement>
<requirement>Shade Soul</requirement>
</and>
<requirement>Shade Skip</requirement>
</or>
That's pretty similar to how I ended up doing it
Except I was planning to just have a logic string instead of tags
oh, and then parse with parentheses matching and stuff?
Yeah
can you give me an example of the syntax? I think I can implement that faster than the xml thing I've got going.
well, actually the xml stuff isn't that hard. i've already gotten past the hardest parts. but strings sound cool too.
Btw, whats the goal?
For every key location and key items, write the list of requirements?
this is for randomizer. so the requirements to get to each location are important so that the randomization doesn't make the game unbeatable.
the xml already exists, they are rewriting it to be less overly verbose and easier to manage and maintain
you can see the current database here: https://github.com/MyEyes/RandomizerMod/blob/f793b917a07da7ebd8a45ea6f8747c159306224e/Randomizer/randomizer.xml
@rain cedar like this kind of syntax? (Mantis Claw || (Vengeful Spirit && Shade Skip))
that's not too bad to parse.
Whats the problem with the current syntax?
@slate owl yes, there is easy/hard. easy means far fewer difficult skips could be required like several shade skips, CP without claw, etc.
the current syntax means the XML is 1700 lines long π
How often will it get updated?
@slate owl look at the requirements for baldur shell. the requirements should be written as simple as ((Claw || Cloak || Crystal Heart || Monarch Wings) && (Fireball || Quake || Glowing Womb || Sporeshroom || Mark of Pride)). Instead we have this mess: https://github.com/MyEyes/RandomizerMod/blob/f793b917a07da7ebd8a45ea6f8747c159306224e/Randomizer/randomizer.xml#L620-L785
and if there's a new way that's found to defeat baldurs (like grimmchild or something), then it would need to be added in about 11 places.
the logic will be updated as often as someone finds some new way to get to something or as often as TC releases some small patch that breaks half the game π
here's the history of updates to the xml file alone: https://github.com/MyEyes/RandomizerMod/commits/a7fa150c488856b34e3f894b227b6d8a0f9ac8a1/randomizer.xml
(and then it got renamed, so the history doesn't follow as cleanly)
I could start working on a bingo for Hollow Knight. Thatd be neat.
In short, its a 5x5 grids with random goals. And the first player to complete a row/column of goals win.
Wouldn't that just be RNG though?
What do you mean?
Like depending on who gets the easiest set of goals to make 5x5
All players have the same grid.
Ah ok, that makes sense
Bingo sounds neat
Really?
has that bingo been raced?
no its awful to play
far right column is hell
literally no direction here is an enjoyable run
Why would stag station be banned?
The center row might be... ok?
col1: free all grubs
col2: fill 75 journals
col3: no benches and ToF
col4: 35 grubs
col5: palace and flower
Short card: Clear White Palace lol
also a lot of them are really annoying to track
like free 35 grubs
as if theres an ingame tracker for that
Isnt there a player tracker?
Imo, a bingo should last at most 1 hour.
random bingo with randomizer mod 
This is like 30 min for 4 objectives then find all white palace radiance spirit trees
bingo with debug mod 
the center space should be "crash the game" with debug mod
is that bingo project open source?
Ill go ask in the speedrun channel.
no its some random one
I feel like boss rush could work pretty well for bingo for fun if you got good rng
so && isn't a good choice for xml. it would need to be &&. I'm going with AND and OR now.
I was just using + and |
I'm home now if you want me to just send you the xml I have
Instead of you having to make all the changes yourself
i've got a script that converts the layout.
- and | make sense.
yeah, send me your xml.
I'm using HARD, CLASSIC, and KEYITEMS as keywords for stuff
HARD meaning hard mode obviously, CLASSIC meaning not steel soul, KEYITEMS being the keyitems tag at the top
cool.
is CLASSIC better than SHADESKIP or something? is shade skip the only difference between steel soul and classic?
Yeah, that's the only difference
How I would probably go about this is do a first pass loading all the logic strings but not parsing them at all
Then a second pass where you parse the logic out
So that you can check if items exist in the entries dictionary while parsing out the logic
Due to version differences
is there a ModdingAPI function to get the game version?
cool
So whats exactly left to do for the randomizer?
Not much
The logic for the XML parsing needs to be redone so that the XML isn't parsed on game load every single time. (right now the XML is deserialized every time the game starts and it's time consuming, needs to be deserialized once, and then stored in some sort of binary format for future loads.) The randomization itself needs to be redone to only happen once and then store the result in the save file rather than on each save load. rnd.js needs to go away. the overlay needs to handle those new changes.
but all those things are fairly small
the core functionality works quite well π
From a gameplay perspective it's pretty much done, yeah
unless someone can solve the icons and make it so that when you get a spells/skill/item it shows the right icon
Tbh, I dont think its a big deal to parse it everytime.
I already solved that for everything except djump and spells
the randomization on load is expensive
Yeah, modifying the fsms is too big of a change for what you get from it though @leaden hedge
In my opinion
Does it happen once in the entire playthrough?
the xml part is once, the randomize on load is every save and quit
lol
causes a 2s lag on every S&Q
Honestly just moving that into a load screen instead of main menu is probably good enough
Still there, just nobody would notice it anymore
Dont know why itd b e so long to parse it though.
The randomization is only like .5s for me
Β―_(γ)_/Β―
running on a core i7-6770k, so not a potato dunno why its slower for me
but if we ever decide to do an actual tournament, getting rid of all the stuff that lets you easily dump the randomization values would need to happen imo
Yeah
If you're fine with decompressing the save for the overlay that's an easy change
well, should be able to just add a hook to the OnAfterSaveLoad event, and get it from there.
So what exactly got swapped?
Currently playing the mod.
so the game says "You got Fury"
but the overlay needs to know that "you got mantis claw"
Could swap grub too.
Why? Too complex?
the current system makes runs about 1-2.5 hours
if you swapped grubs
you could easily make it much, much longer
the average run time is about 1.5-1.75 hours depending on the seed and the skill of the runner
which most runners seem happy with
Does it consider glitches?
glitches would be insanely boring
Once you get vengeful spirit, youre good for everything lol
i just had a run where i never got VS
i had only 1 spell, wraiths π
just lvl1 wraiths, to boot
I guess it depends on its meant to be played.
the goal of the randomizer is to beat the game without glitches. sometimes you get god seeds and finish in 45-50 minutes, but usually its about double that
sometimes that ends up meaning you have low%
the fastest i've seen is 46 minutes, that made for a terrible WK
hehe, climb, the troll item
seen several seeds where it was 2 hours of searching and getting almost every charm/spell before finding climb
Does randomizer have specific points the item can't be after? Like you can't have say dash, mantis claw, etc. at points where in order to get to them, you need said item to get to?
Like, monarch wings requires you to be able to double jump to get to it.
it has softlock protection yes
though wings does not require double jump to get it
only double jump to get out, but you can save and quit instead
I think a mode where mask, vessel, items etc.. are shuffled too would be nice.
Maybe not for racing but as a puzzle.
heh
I could make a reverse algorithm.
You enter what you found so far and it displays everything accessible in a map.
Anyway, maybe later..
uhm....
well
it's something
guessing that's the first prototype of your own version of the arrow?
yeah
nice
at least you have it writing the thing out to the screen
you going to give it the same flourish/graphical look/feel as the standard one?
should hopefully look the exact same
@vale zenith were you thinking of using something like ildasm+ilasm or trying to leverage the classes in dnspy to do the IL injection programmatically?
The latter
cool. seemed like the easiest option since alot of the "work" for that was already done for us
Yeah that's the plan. Also dnspy already defines extension points
yeah, i saw that it had them, just there didn't seem to be much documentation on how to use them. I only used ILMerge because I got it to work, not because of really any other reason π
so if we can sort out using dnspy programmatically for all of it, no reason not to dump ILMerge too
I don't have much tine during the work week so it'll probably have to wait until the weekend
hah, i understand that π
training all week this week, so my evenings will be spent doing what i should have been doing during the day 
sience i am now done with my challenge runs and can finally get back to playing modded what mod is new?
and you recommend the most
how do i read the README in the bossrush mod?
its a .md file
Guess that's all that's in it, then
did you get that from github
no i got that from the pinned message google drive
the install isn't complicated anyway, just put BossRush.dll into /Mods/ after you install the api
how do i install the api?
read the api instructions
API has a similarly shitty readme
wut
I'm lazy
oh
Just paste it into your game directory
wait just drag the api into here?
sorry for the mess (even tho its not all my fault)
i keep meaning to do a short YT video on doing mod installs....maybe tonight
but yes, just drag and drop
and replace when prompted
A video on installing mods would be like 10 seconds long
but backup Hollow_Knight_data/managed/Assembly-CSharp.dll first π
i took the hiveblood am i not meant to be sent out
also i didnt like the fact you instantly get damage when you first open the run
thats already fixed on a newer version
lol
it wasnt updated on the drive then
boss rush is < 1 week old
probably been like 8 releases in the last 7 days (perhaps an exaggeration)
public void Update()
{
if (fsm.ActiveStateName == "In Range" || fsm.ActiveStateName == "Can Inspect?" || fsm.ActiveStateName == "Cancel Frame")
{
opacity += Time.deltaTime;
}
else
{
opacity -= Time.deltaTime;
}
opacity = Mathf.Clamp01(opacity);
tmp.faceColor = new Color32(tmp.faceColor.r, tmp.faceColor.g, tmp.faceColor.b, (byte)(opacity*255));
}
when this actually does what its suppose to
there will be a release
but apparently (byte)(1.0f * 255) = 0 and 255
255 when I print it
and 0 when I set color 
yeah
no idea why a color is a byte
instead of a float
but I guess having to convert a float, into a byte, just so it can convert it back to float
is what it wants
float math is the exact same as integer math
i should amend that, I hate floats in perl, I haven't done alot with floats in c#
but floats in perl mean that 1.5+1.5 is not always 3
just in general for computers
it might be 2.99999999 or it might be 3.000000001
when the boss started he just slided there while he screamed
grimmchild can't fully level until you kill grimm1
cause grimm1 is where he transforms
1.5 should be 1.1 and 1.1, which should sum to 11.0
not sure how perl fucks that up
so what not getting to him is too risky
also did the hornet spawn location also get fixed?
nah it works before grimm1 now
oh nice
sometimes it's the best of 3 terrible choices
i dunno i like him more after my summon challenge run
hive is quite good
and hive doesn't work
yeah hive doesnt work
you might get compass, MP, and GC, if you pickup 2 items, GC is gonna be one of them
the worst bug i encounter is losing your shade
but did the hornet spawn place get fixed
fixed how?
you just have to walk to the right then to the left
also when i took hive it said i took grub song is that just a place holder
yes i know
but i want it to be fixed
walk the dog, clearly
i suppose you could teleport the player further right so that you just have to walk left
but that's a fairly minor thing
it's not game breaking like the other stuff you have on your plate right now
well fuck me
i have no dash and already at WATCHERS KNIGHT WHY ARE THEY AFTER BROODING MAWLEK
THIS DOESNT SEEM RIGHT
yeah im pretty sure they are impossible without a dash
its easy with literally nothing
You don't need dash to dodge anything they have
"FalseKnight","GruzMother","Hornet","MantisLords","CG1","BroodingMawlek","WatcherKnights","DungDefender","Grimm","Nosk",
"Uumuu","Flukemarm","Collector","CG2","TraitorLord","Hornet2","BrokenVessel","LostKin","SoulTyrant","FailedKnight",
"NightmareKingGrimm","Radiance"
where would you put WK
crystal guardian1
WatcherKnights
after flukemarm
Watcher Knights is definitely not harder than Grimm
after CG2 even
Nosk is actually cancer without dash, UUmuu is super cancer without dash
flukemarm is basically impossible without upgrades
dd is pretty annoying without dive
and grimm is harder than wk
Broken Vessel is pretty balanced without abilities
yeah
You can put it earlier than COllector imo
broken vessel could be put earlier I guess
For real I can't progress because of WK right now.
It's so hard without proper dash
yeah i cant progress too
WK is not a hard fight lol
jump over the roll, walk under the jump, jump over the swing
the slash move is unavoid able without a dash or double jump
it is
just walk away
Unless you play the game 100% of the time
and he can't hit you
eh
eayh soul master is easy
soul master isn't even in there
lol
I won't disagree that Soul Master is easier
rip soul master
Then put it in
but WK isn't even that hard tho
Senpai
You can probably just change whatever fsm looks for dive
WK gave me the most trouble in my first run because it's just anoying
And I had dash at that point
well, also the item pool is exactly the same size
And wings
as the boss pool
It's way too hard without proper upgrades and dash
so adding another boss crashes the game 
If you think Watchers are too hard without dash you just have shitty reaction time
how about making Soul Master third boss (After False Knight and Hornet1) and making it so that dive doesn't drop til after him?
Even if you're getting hit all the time you can easily heal when they roll away
@rain cedar that is called a hard boss
What is?
a boss when you need hard reaction times
"not easy" does not equal "hard"
also if you are cornered by them you are just dead
nah, like unless you're in the physically disabled part of reaction times
you should have no problem
just don't walk into a corner
you can
or, you know, don't get cornered
there are to of them blocking the way
2 is too many
Worst case scenario when you get into a corner: Take one hit, walk through them
Bam, not in the corner
KDT: where can I get the most up-to-date ver of boss rush?
when I fix this stupid ass bug
ok
yeah its called a reward for being good
So don't get cornered, then
if you're not good you don't deserve it 
Watcher Knights is a very fair fight
also what do you want me to do when one is bouncing and other is rolling at you? dash between them?
oh right
i cant
control them better
enemy management is part of learning boss fights
Yeah, just don't get into a situation that bad
then you don't deserve the double drop
know how to position youself and how to position the boss
Keep them grouped, and make them bounce up if possible
would you prefer itemless uumuu
no
where you have to bounce off him to go up platforms
but i would prefer broken vessel
Every time I've done this mod I ignore every movement drop except wall jump or double jump
Just so I can beat radiance
And it's fine
It would be cool if like
You could choose the boss you want to go to next
In some way
or dung def
yeah
and broken vessel, although easier, at least for me it's also easier to get hit on accident
so for me it should be left for later when you have more movement upgrades to ease maneuvering
but WK is impossible with no dash
no boss is impossible no dash
^
the only item you need for any boss is claw for radiance
Wa
you can use dive 
Shadow dash for Radiance, no?
Flukemarm with no upgrades is technically possible
Oh
nope
claw or dash or double jump for failed champion
technically
you cant get to him without those
you can do radiance without shade cloak
but not feasibly
or you know crystal heat
well you don't need them for the fight
you cant do radiance without shade cloack
dive maybe
how will you dodge the beam
and even without dash you can do dive
Theoretically
and i i dont have dive?
I'd consider dive an item that you need
then you're going to get hit
You're guaranteed to see every item in the pool
that is not ok
If you don't have dive or shade cloak it's your own fault
but radiance is last
oh ok i didnt know
unless claw and both dives show up in the same pool
There's 3 items after every boss and you need 2 from a pool of 6
oh, 6
2xdash, 2xdive, claw, wings
Although for dash to be useful you need both
Not worth giving up two damage upgrades for
yeah
I'd only get both if there was crap alongside them in the drops
anyway, with WK as the fifth boss, you have at least 4 upgrades before fighting them
also what if shadow dash and normal dash are in pool?
and it's not hard to no-hit all of them
WK is 7th
Because people are being babies
because i dont have dash
which isn't even true
what did you pick up?
dash didnt even show up it doesnt matter
well you don't need it
ofc it does
if your problem is not getting hit, dive, double jump and claw would certainly help you
just fucking move WK
to where
WK is the easiest of the bosses to do itemless
and consistently not get hit
I meant after WK
"DungDefender","Grimm","Nosk", "Uumuu","Flukemarm","Collector","CG2","TraitorLord","Hornet2","BrokenVessel"
out of these bosses which one is easier to do itemless 100% of the time
broken vessel and dung def DUH
not easier than WK
dashless WK is not bad.
yeah right much easier
you should have between 6 and 12 upgrades by the time you get to them. unless you are supremely unlucky, 12 upgrades is vastly more than any% runners kill them with
^
12?
you should have at least one of the following: nail upgrades, spells, double jump, claw, range upgrades
isnt he 7?
6*2 = 12 last i checked
did anyone know you can clip into this wall and stand on the door
is that FK?
looks like it
yes
i have double jump nail upgrade and vengful spirit
wut
holy crap, that's plenty
you have double jump?
why are we even talking about this with double jump?
Wow you're just really trash
man, you need to practice for a while
then how do i find dung defender and broken vessek easier?
playstyle differences
go grab the debug mod and grind WK for a few hours
i dont need to practice i just wanna play the damn bosses
and, i'm done.
i beat this game countless time i dont see why i shouldnt be able to beat those
neither do I
"this boss is too hard"
"I don't need to practice"
i guess its just because its unfair
apparently friend you do
you can do NKG itemless
any boss you get hit by, in bossrush
is your fault
not the boss orders
but but but Flukemama
you mean Flukemilf
flukemilf is right at the end
Ah, good choice
so you're pretty much guaranteed to have got dive or nail3 by then
Where's the Collector? I really enjoyed his fight with nail 2
at least, it should be WAAAAY more feasible than nail0
"FalseKnight","GruzMother","Hornet","MantisLords","CG1","BroodingMawlek","WatcherKnights","DungDefender","Grimm","Nosk", "Uumuu","Flukemarm","Collector","CG2","TraitorLord","Hornet2","BrokenVessel","LostKin","SoulTyrant","FailedKnight","NightmareKingGrimm","Radiance"
this is the order @buoyant obsidian
can someone record me them doing a hitless dashless WK?
glad you didn't put NGG there, KDT
if you no hit every boss you gotta do NGG or it encrypts your harddrive 
would you like itemless, hitless, nail0 WK?
Itemless and hitless
no spells?
No spells
let me hopefully finally fix this
fsm things
