#archived-modding-development
1 messages ยท Page 33 of 1
What about swapping pale ore, rancid egg and items together?
Swapping those with upgrade makes thing too hard/long, but swapping them together could be neat.
Would be cool getting early pale ore.
Could also fix the simple key issue.
Just shuffle them.
Sure, just get me a list of every relic and egg and I'll do it
I'm not gonna be the one doing that tedium
1 array of spawn points. 1 array of items. Shuffle item arrays.
Yes I'm aware how to do it mechanically
I can send you the screenshots with names.
Sure if you actually want to put in the work, I'd be fine with adding it
The internal scene name
It's shown on the debug menu info panel
Also you're missing a line here
Thanks, gonna add it.
I got each scene with their id and screenshot: https://puu.sh/yjl56.png
Oh, cool
So the map internal id is all you need to swap them?
Yeah
Seems too simple to me lol
There's nowhere with two of one type in a single scene that I'm aware of
Ok good.
sorry, got distracted, back to working on the api ๐
no
its just a nice meme we're about to update api and the game updates 
I guess its technically good timing
I thought he was adding gradows hooks
I only just got home
Maybe that too
@rain cedar question
Language.Get(string,string)
in the new dll its this
public static string Get(string key, string sheetTitle)
{
if (Language.currentEntrySheets == null || !Language.currentEntrySheets.ContainsKey(sheetTitle))
{
Debug.LogError("The sheet with title \"" + sheetTitle + "\" does not exist!");
return string.Empty;
}
if (Language.currentEntrySheets[sheetTitle].ContainsKey(key))
{
return Language.currentEntrySheets[sheetTitle][key];
}
return "#!#" + key + "#!#";
}
but the mod version was this
return ModHooks.Instance.LanguageGet(key, sheetTitle);
do you just gut the method for the mod version?
k
ModHooks.LanguageGet calls that if there's nothing hooked
Hm
Does the hook check for null?
I don't remember
You could return null or an empty string or something for no changes
public string LanguageGet(string key, string sheet)
{
string @internal = Language.Language.GetInternal(key, sheet);
string result = @internal;
bool flag = false;
if (LanguageGetHook == null) return result;
Delegate[] invocationList = LanguageGetHook.GetInvocationList();
foreach (Delegate toInvoke in invocationList)
{
string text = (string)toInvoke.DynamicInvoke(key, sheet);
if (text == @internal || flag) continue;
result = text;
flag = true;
}
return result;
}
yeah, it checks
Ah ok
Return the internal string for no changes
That makes sense
That syntax is really odd
I guess the compiler fucked with it
yeah
that's one of the methods i didn't rewrite, in part because I didn't understand it's purpose well enough yet to do so
do the level files have image assets and stuff
or is that only the sharedasset stuff
good enough
i'll review and put them into this version i'm doing now
or in resources
do you need specific placements?
It's probably pretty easy to guess, but it can't hurt
just a sec
ty @leaden hedge
with references
yeah yeah, we're working on it ๐
thanks @solemn rivet - just finished putting the source into to the solution, going to stick it into the dll now
so, good timing on the location of the hooks
hope the instructions are clear enough
i'll let you know if i get lost
ok
@solemn rivet for NailSlash.OnTriggerEnter2D, where do you get the GameObject to pass to the OnSlashHit method?
got it
ok, so, FYI - the game changed how the cursor works
which will impact your code
@solemn rivet
1.2.1.4
if (!this.isMenuScene)
{
if (!this.gm.isPaused)
{
Cursor.visible = false;
}
else
{
Cursor.visible = true;
}
1.2.2.1
if (!this.isMenuScene)
{
if (!this.gm.isPaused)
{
Cursor.lockState = CursorLockMode.Locked;
}
else
{
Cursor.lockState = CursorLockMode.None;
}
oh
why not implement ingame controls instead 
so here's the question
do we update the hook to follow 1.2.2.1 or restore the old functionality?
[HookInfo("Called whenever game tries to show cursor", "InputHandler.OnGUI")]
public event CursorHandler CursorHook;
public void OnCursor()
{
if (CursorHook != null)
{
CursorHook();
return;
}
if (!GameManager.instance.isPaused)
{
Cursor.visible = false;
return;
}
Cursor.visible = true;
}
if Locked is the same as invisible... There's no reason to not change
locked means you can't move the cursor i think
I remember VS saying Cursor.visible was deprecated...
but i guess we'll see
i'll go ahead and make the hook follow the new code
oh, yeah, here's the intellisense for that
"Lock cursor to the center of the ingame window"
ehh
how is the game hiding the cursor on pause now then?
the other way around, I mean
pretty sure thats an auxiliary function of locking
must be this
if (this.controlMouseCursor)
{
Cursor.lockState = (PlayMakerGUI.LockCursor ? CursorLockMode.Locked : CursorLockMode.None);
Cursor.visible = !PlayMakerGUI.HideCursor;
}
weird
When Locked, the cursor is placed in the center of the view and cannot be moved. The cursor is invisible in this state, regardless of the value of Cursor.visible.
so, it's strictly stronger than cursor.visible?
well yeah
its supposed to be for when you don't have a cursor
like say an fps game
where the mouse moves the viewport, instead of moving in the viewport
so, i guess the question is, what were you using this hook for?
to show the cursor
show cursor for levelling up
is that a problem for bonfire though?
not really
especially because blackmoth has no leveling 
visible can probably always be true
locked overrides it
well, the issue with that was
yeah, but who knows what might cause visible to get switched
the game is constantly checking for pause
and if it's not paused, it hides the cursor
Is dash required to beat the game?
no
I got dream nail + wings + mantis claw
k, so you'll have to update your method to change the lockstate in your mod, but i think otherwise we'll be ok
you need dreamnail & (isma|superdash) & claw
Ya, uumuu is pain.
why not just implement it with ingame controls instead
because I don't know how to do that KDT
you'd only need like
int menuPos = 0
static int menuSize = 5; // one for each stat + 2 for reset / confirm
int[] stats = new int[3]; //one for each stat
if( downPressed )
menuPos++
if( upPressed )
menuPos--
menuPos = (menuPos + menuSize) % menuSize;
if( menuPos < menuSize-2) {//first 3
if ( rightPress )
stats[menuPos]++;
if ( leftPress )
stats[menuPos]--;
}
if( menuPos == menuSize-1 && confirmedPressed )
confirmStats();
if( menuPos == menuSize-2 && confirmedPressed )
resetStats();
if( cancelPressed )
cancelStats();
ok, the cursor change is annoying
and the buttons are all in
GameManager.instance.inputHandler.inputActions
so you can do
GameManager.instance.inputHandler.inputActions.down.wasPressed
to check if down was pressed
like, holy crap annoying
Are you supposed to be able to kill the baldur dudes with only mark of pride?
yes
though often you'll get something else that works too
How?
you hit them
dive, sporeshroom, glowing womb, spiders, grimmchild, defenders crest, what else...hmmm
i'm really tempted to change this stupid cursor thing....ugh
Uve got a clip of that?
You get close to it so it locks up
Then walk out of that range and immediately turn around and attack
Longnail only is enough range, but that's not in the logic
Mark of pride is tough but much more reasonable
but it shouldn't be too complicated @solemn rivet
i'd recommend working on it in a few steps at a time
get going up and down working
then get it overflowing correctly, so going over the top puts you at the bottom
then just implement actions for each menu position one at a time
then get it displaying nicely
Does that include the new logger? I noticed you never merged that on the github
yes, i'll be merging and pushing that
Alright
it also includes the hooks needed for bonfire
Yeah!! Got it and got amazing charm! Wayward Compass!
I guess we'll see if this works tomorrow during the race
lol, bleeding edge
This seems like a problem
lol
"it's fine"
though, really, i'm guessing you have a better idea as to why she didn't show up than i do ๐
Best guess is the shaman is stuck waiting for me to take fireball
fireball?
But they'd have to have changed the fsm for it
is that part of a mod or something
No, vengeful spirit
huh
It's a fireball
not really made of fire
soulball
re: fsm changes, them randomly changing stuff wouldn't surprise me
you're not going to change what we call it wranobble. lol
we've called it fireball for months
it's called fireball in the game's code. fireball, scream, and quake are the spells
this is like dbfz, acthually its not a fireball its a ki blast
weird
PlayerData.fireballLevel < literally what the developers called it
people don't go around calling akuma's shakunetsu hadouken that
they just call it fireball
@rain cedar - in the randomizer code you have this
UnityEngine.SceneManagement.SceneManager.activeSceneChanged += SceneHandler.CheckForChanges;
Yeah
Yeah, Unity has events built in
wonder if they changed it to include some check to make sure you pick up the soul charm or fireball
for...reasons
it used to have that
I don't think it'd even check baldur state unless you got firebal
I think it's more likely that changing how the spells are stored is breaking this
Can you learn Shade Soul before Vengeful spirit in randomizer?
No
you just get vengeful either way
if you were to pickup what would be shade soul in the logic, but didn't pickup vengful, you get vengful and the other vengful becomes shade
works like ALTTP randomizers for swords, shields, and armor
So basically, it does +1.
mmhmm
ah
no
i think i know what might be the issue
maybe
looks like you modified intadd and i didn't realize it
Oh, yeah, I modified all the int functions
yeah, lemme fix that
tomorrow i'm going to go through and make a document of every single place these hooks are done
Alright, probably a good idea
did a "Used By" on Modhooks.Instance in the old and new
Alright, I'll give this a try and see if it's got the same issue
to make sure i didn't miss any this time
turns out there was a 2nd place where the BeforeSceneLoad hook was called in LoadSceneAdditive that i had missed. so added that in too. now not missing anything from the list
which also could have easily broken the shamman thing if you use that hook
which it does, so that's probably it
Nah I don't really use that hook
Really loving not being able to click off the game during downtime with this new patch
And having to pull my mouse all the way from the center of the game to my other monitor is pretty A+
honestly, i'm really tempted to fix it
i have to edit that method anyway
for a hook
screw it, i'm gonna change it and see what breaks, cause...no
Yeah, go ahead
In general I'd be against changing how the game functions in the API
But this change is just so random and awful
it makes dual monitor setups so freaking annoying
@leaden hedge - so, interesting thing about the more saves mod
2 pages, except no, because i only have these 2 saves
if i go to page to, it unloads, loads, then reloads page 1
did it work fine on the old api
does the page counter go from 1 -> 2?
what input device are you using
does it happen with keyboard
sec
yes
though i can break it by hitting the rotate button during the transition
and then it will end up on page 2
also, the page 1/2 thing needs to be unloaded at different timings, right now it doesn't unload until after a new menu has fully loaded
thats not my fault 
it should only be drawn whilst the game is in the profile selector
anyway
go to regedit
and set
MaxPages_h396801905
to
DWORD 0x00000050 or something
so your pages will be way bigger
Shaman is working with the int stuff fixed
and I can actually see what its doing
assuming i'm looking at HKEYCURRENT_USER and then something for teamcherry?
ah, yup, got it
so, it seems like what's happening is that sometimes the keypress is registered twice
try this
well, that's...different
now it's just counting down
oh, there we go, got it to count up
except it does it forever
moved once, 2 pages in 1 button press, now can't move anymore in either direction
also only worked on controller, didn't work on kb anymore
@rain cedar Here's the list of items with their location. https://puu.sh/yjs3p.txt
There are a few TODO left. Ill work on them tomorrow.
It doesnt include items from NPCs.
Alright, thanks
I don't think I'll shuffle notches/keys, but I can add the other stuff here to the relic pool
What about shuffling maps too?
...why?
Right now, getting maps from the dude is useless.
@buoyant wasp
that would make vendors even more powerful
they are already the single most powerful 3 places in the game due to the number of items they have
You do need to reach the map area first.
By shuffling maps, what I mean is shuffling maps and other non-key items.
Like geo items,mask,,vessel etc.
Charm + upgrade only swap between eachother.
so...buy a map to get geo? gambling!
@leaden hedge - well it doesn't move forever in a given direction, still have the issue of a single press causing it to move 2 pages unless just barely touch the key
if i hold it for more than maybe 100-150ms, it moves twice
if you hold it, it should go constantly
yes, it does, but the gap between "pressed the key normally" and "holding the key" is so small that it's nearly impossible to release the key before it goes into continuous mode
What are you using to detect key input?
the same thing the game does
GetKeyUp?
Maybe timescale is not 1 on main menu? I see you're using Time.time instead of Time.realTimeSinceStartup
Actually, I dont even know what youre trying to do lol
well if it was slower, that'd make it even less likely to fire
because it'd take longer to reach 0.4f
heres the current function
.05f?
and inputWindow = .4f?
yes
i know why it's broken
well, at least, i'm getting there
if (MoreSavesComponent.queueRight == 0 && MoreSavesComponent.holdingRight && Time.time - MoreSavesComponent.firstInput > MoreSavesComponent.inputWindow)
{
ModHooks.Logger.LogDebug("holdingRight for " + (Time.time - MoreSavesComponent.firstInput));
MoreSavesComponent.queueRight = 1;
}
so, i added this log line
and
ModHooks.Logger.LogDebug((Time.time - MoreSavesComponent.lastInput).ToString());
if (MoreSavesComponent.queueRight > 0 && Time.time - MoreSavesComponent.lastInput > MoreSavesComponent.inputWindow / 2f)
this is the output
[DEBUG]:holdingRight for 32.68
[DEBUG]:32.68
[DEBUG]:holdingRight for 32.7
[DEBUG]:0.02000046
so, i pressed the key for .02 seconds
however, it appears that .firstInput is based something else, looking now
firstInput is just set by the first few lines of FixedUpdate
ah, yes, but that's never getting called
i put this in
if (MoreSavesComponent.gm.inputHandler.inputActions.paneRight.WasPressed)
{
ModHooks.Logger.LogDebug("paneRight pressed");
MoreSavesComponent.firstInput = Time.time;
MoreSavesComponent.queueRight++;
}
paneRight is never logged
at least, not with kb
testing with controller
it should, considering if you press paneRight really fast
you should be able to get it to jump 4 or 5 times in one page turn
[DEBUG]:paneRight pressed
[DEBUG]:paneRight pressed
[DEBUG]:paneRight pressed
[DEBUG]:paneRight pressed
[DEBUG]:paneRight pressed
[DEBUG]:paneRight pressed
[DEBUG]:paneRight pressed
works fine for me
are you running on 1.2.1.4 still?
k
@leaden hedge Nothing dropped after False Knight
on current api?
Yeah
This is my second run of this on current
It worked fine the first time
Looks like you're printing a ton of fsm stuff there
yeah I do
I don't know if any of it is helpful
nah its just a dump of the inspect region fsm
with the names of objects all its states point to
I see
Yeah, that's how I've got fps
it's definitely FPS
this is what the forums say about FixedUpdate:
Update runs once per frame. FixedUpdate can run once, zero, or several times per frame, depending on how many physics frames per second are set in the time settings, and how fast/slow the framerate is.
if i turn vsync on
the stuff works
if i turn it off, it displays this issue
fixed update runs at most whatever physics frames are a second
so if its set to 60, aslong as you have 60fps or more, you'll get 60 fixed updates a second
so
in the menu
my framerate is 500-1000 FPS
(this is based on the ingame FPS counter, not the steam one)
well it isn't fixedupdate anyway
I moved it into fixedupdate to try and fix the problem
question, was the old code using "Update" instead?
yes
....wth, so i used dnspy, switched it back to Update, and now it works exactly like you'd expect it to
well, except Page 1/4919 still shows when i load a game
k
ok, that works. should i regedit it back down to 2 and see if the Page 1/4919 goes away after game load?
go for it
also, if i fail at communicating, this is what i mean about it showing.
yeah didn't that get fixed?
nope
I have a fix in a second anyway
interestingly, if you pause/unpause, then it hides
Mod API 1.2.2.1-4 (BETA) - The cursor behavior has been reverted to how it was in 1.2.1.4 and below. (no longer locked to the center of the screen). Also, ModLoader now only tries to load *.dll files instead of all files in the Mods\ folder.
(and deleted the other 2 alphas from the channel history to make sure no confusion)
changed the registry back to 2, page count is fine, keypresses are fine, i can't begin to explain why it works now
the original version didn't have the && t - lastInput > 0.05f
ah
alright heres some extra nice thingeronis
so, good news and bad news. good news, page goes away.
bad news. Loading a save, then quitting, then going back to the save area reverts the save area to the vanilla way ( no page indicator, no moving pages with inventory keys)
@rain cedar - Thoughts on this change? (mod version info shows when you pause the game)
IE , do you like it
I don't think it matters too much either way
Doesn't really hurt anything to have that there
mostly just thinking, sometimes folks will get on here and say, "I just had XYZ happen", but then if you say the way to find out is save and quit, that might not be feasible (like in boss rush where s&q basically ends the run)
Makes sense
cool
@leaden hedge Any chance for an option to progress without grabbing upgrades in boss rush?
Right now I'm stuck with a choice between dashmaster and deep focus
Both will have only negative impact
yeah, I want that but not sure how I want to implement it
Could be a button
Could be a fourth pickup
Could leave transition gates open but just progress to the next boss when you go through them
Or close them but reopen them after the boss is dead
There's options
I could do it if you want, just not sure which option you'd prefer
well transition gates won't work
not with the ui
could probably just make it, if you hold down crystal dash for 0.5seconds
well no one is ever gonna need that key, and every controller should have it bound
@buoyant wasp test this 
k, when i finish this boss rush run, gimme a few
I don't wanna just bind it straight to button because you might accidently do it, and i'm not a fan of the 4th item
but I guess double tapping quick map could work instead of holding dash
if we're asking for new features. the ability to specify the seed for items would be great so you could do a boss rush race with someone
don't think I'll be implementing anything more today its 8am
https://github.com/KayDeeTee/hk-bossrush
https://github.com/KayDeeTee/hk-moresaves
but I updated the github for both bossrush and moresaves
lol, shouldn't you sleep or something?
also ran into the same issue as sean on a diff boss, grimm1 dropped no charms
what's the current bossrush version#?
0.7.0.0?
cool, got the same then, just wanted to make sure i wasn't finding bugs in an older version
cause that's semi-useless
oh, nice, the page stuff fades out on menu change now, slick
if you want to try and debug and reproduce, its
BossInfo.SpawnAll();
k, well, the save->load->quit->save page (mod appears to have gone on a vacation) bug still exists, but otherwise, seems to work fine
weird, I tested that and it worked for me
and i might tomorrow, at this point, just am going to game a little and vegg and then pass out
just reinstalled it, testing again
nope still broken, oh well, we can tackle it again tomorrow
if i have just monarch wings in steel soul rando, how do i get to ancient basin?
going through crystal peak to resting grounds doesn't help without quake. can't do shade skip to blue lake at salubra in steel soul mode. the fungal wastes CoT entrance isn't possible with just monarch wings. i can't navigate deepnest to get tram pass with just monarch wings.
what am i missing?
how do i get to City of Tears though?
it's entirely possible that either the weaversong or trampass om deepnest is required
have you done the baulders yet?
i can't kill baldurs
what do you have charm wise?
this is theoretical. i'm studying the requirements in the rando. it says i can get to monarch wings with just monarch wings: https://github.com/MyEyes/RandomizerMod/blob/f793b917a07da7ebd8a45ea6f8747c159306224e/Randomizer/randomizer.xml#L186-L188
i wonder if you could do the "vanilla" way into COT with just wings
i'll go try, but it looks way impossible from looking at screenshots.
Mod API 1.2.2.1-5 (BETA) - Unless bugs are found, this is it for now. Added the version info when pausing.
anyhow, about to pass out at the chair
later
bonefire doesnt work for shit
it crashes no matter what i do?
is anyone intrested in the crash report?
Probably just installed the wrong api
Half the problems people have seem to be that
Too hard to match two numbers, I guess
on start up
What version of the game do you have? Have you updated the api since 12 hours ago?
the mod is 1.2.1.4and im using 1.2.2.1 but you said before that should be an issue
and yes i did update the api
The mod of bonfire shouldn't be an issue, but the api has to be updated. There's also a chance that the fsm things gradow is using was somehow broken with the update
Oh, I see
Either Gradow hasn't finished his port yet or it's not up on the google drive
There's no API version of bonfire here
do any mods currently work with 1.2.2.1
if not i will throw toilet paper at you
nvm it seems more saves works
most api mods should work
how do i un-hide the debug menu
f1
yes
does just toggling enemy health bars work
yes
oh
weird
didn't seem to work with zote
oh i have to have the debug menu open
i just need enemies menu open
cool
it
doesn't work with zote
Don't use bonfire api yet
I haven't updated it since the update, so maybe it's broken
Also, saving is not yet implemented in the api ver
Does the assembly ver work?
so debug mod is a cool mod
really great
i wonder what happens if i clone radiance a bunch
umm... It's working
oh cool
the only thing that's broken is that hit resistence procs, but doesn't resist shit

click the plus sign on the enemy list
ok
can anyone test bonfire on the latest api for me?
specifically, the hit resistance
it still does not save btw
I still haven't had to time to experiment with that
oh, I think I got it
@buoyant wasp , can I make a small change in one of the hooks?
@hazy sentinel
So when I am installing debug mod, there is a folder named Debug Mod, where do I put that
specifically, I want a void method to not be void anymore
๐
juust put everything on the game's root folder
so in hollow_knight_data?
no, before that
ok
in the zip there's a hollow_knight_data
But wont that erase everything else
C:\Program Files (x86)\Steam\steamapps\common\Hollow Knight
thats in hollow_knight_data
no, it'll only replace what needs to be replaced
ok then
that's actually the point of putting the mod inside hollow_knight_data
so you can just drag and drop
wait is debug mod not updated for the 1.2.2.1 version
every mod should work on 1.2.2.1
when I select a new save it gives me a black screen
do you have mod versions on top left?
ye
i keep accidentally killing thk too fast to get to the radiance
xD
don't know why i didn't use tr instead of the radiance
oh well
i have to hit it 5 times
then dead
welp I think I give up
oh fuck i forgot to equip the void heart
the one mod most likely to not work is Debug
just revert back to 1.2.1.4
i'm using debug with 1.2.2.1
then it's something wrong with your installation @ornate rivet
can you send me your modlogs and output_log?
https://www.youtube.com/watch?v=y5175sdGNjE&feature=youtu.be this is the last one i swear
oh
i did do mantis lords
just didn't record it
can respawn them but don't feel like it

I figured it out
maybe later
I renamed the new assembly c sharp
xD
instead of replacing it
I am dumb
thanks for the help @solemn rivet
you're really smart
sorry for wasting your time
me too
here's the API with the changes I mentioned
the only thing it does is change AfterTakeDamageHandler from a void to an int
well, THAT and everything that depends on it, obvsly
ok, so was this one based on the last one i posted this morning?
k
i'll look through it real quick. if it looks good, then I think we'll say that it's stable
though i am going to change the hook itself a little. since we're modifying the amounts, it's going to behave like TakeDamageHook and loop through the invokations in case multiple mods subscribe to it
np
Modding API - 1.2.2.1-6 - (GOLD). Ok. At this point, seems like the api is stable for 1.2.2.1. @rain cedar @dapper folio .
Looks like the gdrive for this is out of date. PlayerDataDump - 28/10/17.a
is it just me, or did the amount of geo from the first baulder get nerfed?
i want to say that they used to drop more, but when i did it an hour ago, it was like 5
what is canBackDash
is it for dashmaster? or is it just an ability that wasn't added or something
About the API.
Wouldnt be better to have folders inside Mods rather on Hollow Knight directly?
Atm, Randomizer and DebugMod put them under /Hollow Knight directly.
But imo, everything should go in /Mods
Rather than root.
API could offer read/write services that read/writes in /Mods/<ModName>
Gathering swarm as reward in boss rush ๐ฆ
yeah, i was thinking similar last night when i was changing the loader
well, as far as resources go
saving stuff the accepted standard is to save to the save folder
save folder?
the folder, where saves go
You want to put resource files in the save folder?
@rain cedar - been said before, but if there is a way to remove the hard save at shade cloak, that'd be great ๐
actually, you might not be
i think the spiders might eventually kill him
but yeah, collector is so buggy in vanilla
there's a ton of ways to get him into that state
@leaden hedge was talking about maybe finding a way to fix him
What charm drains your soul?
Glowing Womb
Its such a bad charm.
Ya.
huh, neat
Alright, I'm finally getting around to looking into the shade cloak fsm
Looks super easy to remove the hard save
I just gotta cut out the set respawn state and go straight to PlayerData
that'd be slick
Another way to remove charm is to use the bench after killing crystal guardian.
yeah, but that's a 1 time thing
while you're in there editing things, remove that bench over at the nailmaster that xero soft locked at? ๐ (for whenever we get the nail arts in)
Yeah, I'll get rid of that if you make it there without crystal heart
cool
Is that for the randomizer?
Yes
Btw, any chance to tweak the random to give sprintmaster early?
It's already more likely to be early than late because it's a useless item
It's nowhere near a guarantee though
But such is randomness
yeah, most seeds i see it in the first 20-25 minutes, i never get it, but i see it
Guess I should also do something about this
So for logging at the info level, the LogLevel enum has it but there's no LogInfo function
Log is LogInfo,
Alright, thanks
np
the biggest thing right now, is there is no way to set the level to anything else in terms of what is actually written to the file, it's currently hard coded to always be Debug and above. But to do that i need to write something to do non-save-specific settings
which i was going to do last night
then they dropped the patch on us ๐
Yeah, some kind of global config would be cool if you want to take it that far
I know debug mod would have uses for that at least
oh, definitely going to
if we ever do something where you can do enable/disable of mods, we'd need that, i want it for logging control, and i'm sure there's something else it could be useful for.
and honestly after solving the serialization crap for the save files, it won't be nearly as hard to do
It would also be cool for the logger to automatically put something like [RandomizerMod] at the beginning of the output, but I'm not sure it's possible to do that cleanly
No
ahh
it might be, i did something like that at work once using the calling assembly or something. would have to play with it
Alright
The only thing I can think of is looking at the stack trace
Oh god I left a log here
No way that would negatively impact the load time there massively
where is ruins01?
should I do bonfire or randomizer mod?
lol, there might be a few objects in there
randomizer is currently working on this patch
bonfire would require downpatching
there isn't a 1.2.2.1 version of it that works with the api and saving
yet
Has boss rush been updated
it didn't need to be
just grab the newest API from me earlier in this channel
and the last bossrush should work just fine
@buoyant obsidian any chance of having an API version of lightbringer?
Is the source public?
what u mean
The source code.
idk
I'm really not up for the amount of work it would take for the API implementation, especially with university going on
k
anyone know if there's a glass soul mod for the current version of the game?
I could get it updated within 12 hours if you're patient
oh, sweet~
Where is the new updated API?
pins
Do I have to do any "uninstall" process for the old API, or do I just """"install"""" the new one
Some Dargons
search for :From Wyza :has file
I put it in the drive a few hours ago
@bright prawn http://www.moddb.com/mods/hollow-knight-glass-soul/
Updated for 1.2.2.1
damn, that was quick, awesome : O
Small glitch, your game percentage completion might be off by 7%
I'll fix that in an hour
@buoyant wasp can you help me with save implementation?
You need to change your class declaration to something like
public class RandomizerMod<T> : Mod<T> where T : IModSettings, new()
Then you can access the Settings object
Which is the save data
Faulty Wallet was changed into a mana charm :)
Which charm does that replace?
The one that makes you gain lots of soul on-hit
Soul eater?
I think so
Alright
so apparently they changed the spritesheet layouts again
from one sheet to 100 different images
That sounds much less annoying to edit
Not at all
when it comes to replacing them at least
like 5 clicks per replaced asset
and they all have dumb names that don't match what they do :D
Could someone else use Unity Studio / UABE to confirm there are only 2 Texture2D files named SpriteAtlas in resources.assets?
It could be a decompiling error on my side
@solemn rivet - sorry, wasn't paying attention, what's up
And those are the only 2 now? Damn
which sprites are you even replacing
oh nice glass soul is up to date
Lightbringer is 30 minutes away too
I'm sure it's only fireb0rn
wait someone actuallly beat it
any% WR yeah
on steel soul
RULES: Any% No Major Glitches (speedrunning ruleset), Glass Soul Mod (any damage = death), Steel Soul (file deleted on death). ~~ shoutouts to Ushebti ~~ W...
but that doesn't say WR, only world first 
does fury of the fallen do anything
Nope
o
Charms that increase health / lifeblood increase your damage
Updated.
And Glass Soul has just been updated to fix the completion percentage bug.
someone test ๐
Glass Soul and Lightbringer have been updated? woo! anything else I need to update on the drive?
@rain cedar - so i was looking at the logging stuff. and there are really 2 options. We can use the stacktrace approach or something cleaner, but would require modders to make a small adjustment ot the way they log. basically I'd add some static wrappers to the base Mod<T> class which would look like this:
private static string ModName = this.GetType().Name;
public static LogDebug(string message) {
ModHooks.Logger.LogDebug(string.Format("[{0}] - {1}", ModName, message);
}
then instead of using
ModHooks.Logger.LogDebug("[RandomizerMod] - HI I'm a debug message");
you'd do
RandomizerMod.LogDebug("Hi I'm a debug Message");
but then everything that comes out of RandomizerMod would always have the [] in it, the developer wouldn't have to remember that
you could still use ModHooks.Logger.LogDebug if you really wanted, but the "better" way would be there too
That way sounds good to me
It doesn't break any logging that's already there
Or add redundant mod names to unupdated mods
Is Desolative Dive guarateed from its original location?
Because it sets a hard respawn point and only way to get out is with dive.
yes
yeah
the floor is broken
no, it's not guaranteed
if you don't get dive
the second one is descending dark
really?
@leaden hedge - seems to work, page text goes away now, saveing and quiting and coming back shows the UI again, the page icons are a ballin change that works fine switching between KB and Controller
Modding API 1.2.2.1-7 (SUPER ALPHA/Experiemental) . @rain cedar here's the API with 2 big changes. There is the change to logging where you will be able to do (for example) RandomizerMod.Instance.LogDebug("Something"). There is also now support for saving settings that are "global" (non-save-specific). For that, instead of Mod<T> you'd use Mod<T,TG> where TG is also IModSettings. The settings are initially loaded (if they exist) during the Initialize() call. GlobalSettings are not saved automatically, a call to RandomizerMod.Instance.SaveGlobalSettings() has to be called when you want to persist. Files are saved in the Save Folder and are called ModName.GlobalSettings.json.
With this i went ahead and got the ModHooks class to have a clone of those methods so that the ModdingAPI itself can store settings. In this case it has 1 setting for LogLevel now. That defaults to "INFO".
the structure of the files is still bleh, because i'm using the crap Unity serializer. We could switch to something else, like JSON.net since we're not intermingling with the save files anymore. It would make the json look significantly better, but then we add this other library as a dependency. Not sold on it's need at this point. As long as we can save/load, the exact format of the file isn't massively important.
Awesome. I'll try getting rebindable keys in debug with this
cool
i honestly didn't have a mod i could test with on the mod global settings, so while it does almost the exact same thing as the Modhooks settings, well, you know how it goes ๐
hence the "super alpha" tag
Yeah, makes sense
also why i really want someone to work on doing mod-save settings . cause i tested it a little in my local copy of randomizer, but i don't think anyone else has fully tackled it
so, "seems to work" and "actuall using it" are 2 different things
Yeah, I was planning to add proper save functionality to randomizer today but I got distracted by golf and quiplash
haha, yeah
i went a head and pushed all these changes into a new branch. https://github.com/seanpr96/HollowKnight.Modding/tree/global-mod-settings
Alright
why not just use playerprefs for global values
cause then we're gonna be screwing with even more of the game's internal structure, was trying to avoid that. Also lets us be lazy about a few things. Like if you want to change the logging level. now all you have to do is open the moddingapi config and change 1 value. if we use playerprefs, then the only way to manage them is with a UI
which, might make folks less likely to make options available in any form
how do i backup my save files
i did it once but dont remember where it is located any more
%appdata%/../locallow/team cherry
thanks
jesus christ i beat soul master first try on glass soul
i'm having less trouble with the bosses than everything else 
glass soul steel soul? 
no
not gonna do that
goddamnit i lost 1900+ geo
before that i had lost around 1000
life is fun
is this what you wanted 753
go suck a brick
spikes
and then one of those lance s h i t s
i can't buy anything useful with 12 geo
maybe a lollipop
though
FACGK YPOU
i w a s g o n n a b u y s o m u c h s h i t
no i farmed geo and payed the fee
i'd be less pissed if i hadn't wasted 3 hallownest seals 
actually erase this mod from existence
I totally agree with having less trouble with bosses... I keep getting randomly hit by every random little thing
lol
get ready to want to murder someone
yeah... maybe should do a no health upgrades, melee only, overcharmed run first
t h a t 's w h a t i ' m d o i n g
v0.8.x.y
Added skip button + skip button prompts
if you dont have either dive or shadow dash you cant dodge the radiance tracking light beam
is that dll all you need for boss rush?
you need modding api
oh, I see
you can beat the boss, unless you're running glass soul boss rush (lul)
I don't know if you can combine those two mods mind you
in time, I'm sure.. well you can still beat the boss if you have either doublejump or shadow dash
ยฏ_(ใ)_/ยฏ
no you need both
oh yeah its easy with either
@copper nacelle here is a fun fact for you
graphical corruption of unity textures is a known bug when the texture assets total more than four gigabytes
but it is not, to date, reproducable
reproducable
in theory, using a worse graphics card would make it more likely
hmm
cat /dev/urandom > sharedassets333.assets
till it gets to 5 GB
@stray mirage
All it did was slow down the loading for me
@slate owl - That list of secondary items (relics/masks/etc) you generated, can a list in a similar format be generated for the grubs?
@buoyant wasp Ya. But I did the list by hand so it can take a while to do lol.
What do you need it for?
the 4gb thing didn't work
the assets within the actual thing I changed weren't even affected at all
ah, darn. well, we were talking about making grubsong viable as a progression item in the rando, but to do that, we have to go through and make the rules for all the grub locations as to what is required to get the grub (since grubsong is 10 grubs, this seemed small enough to be ok out of the 40 something)
Thatd be cool.
so i was hoping the method you used wasn't manual
What about the 500 essences?
no, that's already been ruled out
How so?
it was decided that nothing required to win would sit behind the dream essence rewards
@rain cedar or @leaden hedge - any thoughts on how difficult it would be to edit the content of the credits scroll?
That really depends on how it's implemented
It's likely that you can just edit parts of it in the language hook
was thinking if/when we get rid of the spoiler log for randomizer, to put the results in the credits (similar to what Super Metroid did)
The "Thanks for playing!" screen at the end is localized so that for sure can be changed with the language hook
Names are less likely
yeah, was hoping we could leave the names intact
Or we could just add our own screen before the credits
and just append
Like Kein used to in the boss rush
Yeah, that makes sense
Nobody pays attention to credits anyway but it would still be pretty rude
exactly
so either Prepending or Appending a screen would work too
or if they did it where the scroll is easy to append to, appending the list at the end of the scroll
or the beginning, w/e
It's probably easiest to do something like:
If credits are loaded, unload everything
Display custom stuff with OnGUI
Go back to credits scene when a button is clicked
if we go that route, should probably do as much of the common pieces as possible in the api so that all mods could use it. (since, who knows, boss rush might want it, or bonfire to display final stats, or w/e)
Makes sense
@leaden hedge - did a PR on github to fix a couple bugs in bossrush. Though the one i originally set out to figure out, which is why grimm1 doesn't drop items, was the one i didn't figure out :/
How do I update the API?
You just download the new one and install it the same way
You can either use the very untested one posted above by Wyza or the stable one in the mods folder
Ay, I'm gonna start modding
Does anyone know where enemy code is located?
I'm surprised it's so hard to find given how easy it seems to be to locate anything related to the player itself
Is it maybe an external script?
That would actually make sense
probably fsms
yup, all the enemy logic are in the FSMs
i think there's some stuff in the pins about a FSM dumper thing
and a viewer
Oh, nice, that would be helpful
Hmm, there's something called FSM mod
There's an assets extractor
