#archived-modding-development
1 messages · Page 46 of 1
watch the boss rush mod install guide, same applies for the randomizer
except instead of downloading bossrush, you download randomizer 😃
alright thanks
here's hoping switch port removes FSM completely
just imagine if all game logic was in the assembly...!
i dont know where to find that
i found the problem though
bonfire mod is crashing me
kek
only a few mods work together
ive got randomizer and the charm notch thingy
and then i added bonfire and it all fell apart
i had lightbringer as well but i assumed that was causing my problem and removed it
lol
in general mods do not coexist
player data tracker should work with most, charm notch might work with a few,
light bringer definitely won't work with anything
im the kind of person who likes to go overboard with mods
so uh
this is disappointing
lol
what does player data tracker even do
tracks player data 
:/
for the laymen?
it is required to show the randomizer overlay for streamers
required?
for the technical, it provides a websocket that web pages or applications to be notified of changes in the state of the game for consumption
yes, the randomizer has an overlay you can use for streaming to show what items you have
alright then
there's a pin about it
it's not required to play the randomizer
and technically not even randomizer specific
how do i tell if the data tracker/randomizer work? i picked up fury of the fallen and it was just fury of the fallen :(
pretty simple when you started a game, did it have a difficulty selector and a 9 digit number ?
and did it say randomizer in the upper left hand corner on the pause menu?
given that you said you installed lightbringer, then uninstalled it, good chance you didn't reinstall the API
lightbringer is a non-api mod
which means that it modifies the same assembly that lightbringer does
so they are mutually exclusive
alright goin again
now it works
i guess ill keep that fury charm and continue onward
i wouldn't
randomizer saves are not the same as vanilla saves
additional data is stored in the save file
you have to start a save in randomizer mode
alright
even after making a new save, it seems that nothing has changed
same vengeful spirit
same charms
when you started the new game, there is a big giant button that says "Randomizer: Off", did you click it to turn it on?
also, unless you're pretty comfortable with speedrunning tricks, play randomizer on "easy"
bonfire should work with everything else... Unless the newer versions of the API broke some of its dependencies
*play randomizer on "hard" because it's fun
it's fun for us watching, anyway
✅
I'm playing a game that creates a new class called ApiAvatar. I want to take an instance of this ApiAvatar and save it locally to my computer. How would I do that?
My current system saves it in a public static variable, but that variable dies whenever I restart the game.
that sounds promising
Any examples you could link me?
I'd also need to load it back in as a variable, of course
this is the msdn thing on it https://msdn.microsoft.com/en-us/library/ms973893.aspx and this is a stackoverflow thing https://stackoverflow.com/questions/6115721/how-to-save-restore-serializable-object-to-from-file
the stackoverflow one is using the built in XMLSerializer
I've heard the 3rd party JSON ones can be better tho
So uh what's serialization exactly
translating stuff into a format that can be put into a file
like c# classes to XML
or JSON
Am I going to have to add a serializer class? I've never done anything like this.
I think so
this is a good example w/ JavaScriptSerializer
I'm totally missing a critical step
I'm not sure what I have to download to make any of that compile
or how to implement it in a mod if I do download it
then what libraries do I need to reference?
- Add reference in Visual Studio to System.Web.Extensions
using System.Web.Script.Serialization- (example with PlayerData and ModApi Logging)
var json = new JavaScriptSerializer().Serialize(obj);
Log(json);
if I've got this right
no
you need an assembly reference
idk how to do it in dnSpy
but in VS
Project --> Add Reference
Not sure where to go from here, then
ahh
even if this works though, where would I even find the assembly I need to link?
here
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Web.Extensions.dll
I think
We're definitely getting somewhere!
yea
It'll compile at the very least
I tried to put it in my onHealthtaken thing and now I'm invincible
Alright, I have the json variable, how do I save it to disk?
oh ok
anything I should know about where I can put the path?
I remember having trouble with that in the past where the path couldn't be found
I'm not sure about that because I was just adding it to VS
when I compiled hellmod with the reference
it came out like
looks normal to me
yeah
I think I'm not doing the serialization part right
because it compiles but any function it's in breaks
var json = new JavaScriptSerializer().Serialize(avatar); does yours look like that?
yeah
oh wait
oh no
don't use the JavaScriptSerializer
it can't deserialize apparently
oh
microsoft now recommends json.net
Json.NET is a popular high-performance JSON framework for .NET
I'm trying that out now
Guess I gotta download that?
yea
but
kinda
I recommend just opening Powershell (admin)
and typing in
Install-Package Newtonsoft.Json
that's what's on their site, but they also have a direct download
7
This what I'm after?
think so
I sure hope this'll work considering it'll be running with different framwork versions
yeah
I think it's like this:
string output = Newtonsoft.Json.JsonConvert.SerializeObject(PlayerData.instance);
Log(output);
I'll assume that Log() isn't important
What would be the easiest, preferrably something that would keep my files in the Managed folder or somewhere close by?
perhaps a Mods folder like the API does
that'd probably be good
FileNotFoundException: Could not load file or assembly 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies.
oh no
maybe I can put it in the mods folder
¯_(ツ)_/¯
My game doesn't crash, so I guess I just gotta figure out how to log it and where
nice
hk doesn't crash
but it also complains about the assembly
Non platform assembly: D:\Steam\steamapps\common\Hollow Knight\hollow_knight_Data\Managed\Mods\Newtonsoft.Json.dll (this message is harmless)
TypeLoadException: Could not load type 'Newtonsoft.Json.JsonConvert' from assembly 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'.
I'm not using HK
so... Wouldn't it be simpler to just mimic whatever it does in its code?
wait it does?
yup
also 753 needs to deserialize tho
it also uses json deserializer
wait what
look for GameManager.SaveGame() and .LoadGame()
it should be at the end of the code for each of those methods
string fileName = @"C:\Users\SomeUser\My Documents\Foo\Bar\Baz\text1.txt";
if (this.gameConfig.useSaveEncryption)
{
json = StringEncrypt.DecryptData(toDecrypt);
}
SaveGameData saveGameData = JsonUtility.FromJson<SaveGameData>(json);
where am I supposed to save a file to if everyone has different paths
use env variables
$HOME is good for linux/mac
I think windows has it too
for windows:
%USERPROFILE%
iirc
for the home directory
HK is dotnet 3.5, right?
yea
// Architecture: AnyCPU (64-bit preferred)
// Runtime: .NET Framework 3.5
// Timestamp: 5A06546F (11/11/2017 1:37:51 AM)
found it
FileNotFoundException: Could not load file or assembly 'System.Runtime.Serialization, Version=3.0.0.0,
sadness
I switched over to dotnet 3.5 for the mod and i got a bit farther
I'm just going to start throwing the assembly references inside the mods folder
idk filestreams ¯_(ツ)_/¯
final step, how do I save the output string
Could it be?
string output = JsonConvert.SerializeObject(avatar);
string fileName = @"%USERNAME%\test.txt";
FileStream fileStream = new FileStream(fileName, FileMode.Create);
fileStream.Write(output, 0, output.length);
final code
maybe
found this:
// Set a variable to the My Documents path.
string mydocpath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
// Append text to an existing file named "WriteLines.txt".
using (StreamWriter outputFile = new StreamWriter(mydocpath + @"\WriteLines.txt", true)) {
outputFile.WriteLine("Appended Line");
}
that's for appending
// Create a string array with the lines of text
string[] lines = { "First line", "Second line", "Third line" };
// Set a variable to the My Documents path.
string mydocpath =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
// Write the string array to a new file named "WriteLines.txt".
using (StreamWriter outputFile = new StreamWriter(mydocpath + @"\WriteLines.txt")) {
foreach (string line in lines)
outputFile.WriteLine(line);
}
new file but with lists
The modding API has helpers for serializing data structures (to a certain extent)
it uses the Unity Serializer, which is crap, but which doesn't require distributing a seperate library to make it work
753 is doing a diff game iirc
ah
FileNotFoundException: Could not load file or assembly 'System.Runtime.Serialization, Version=3.0.0.0,
wot
why is it trying to get 3.0 when HK is 3.5
and my mod is also 3.5
It looks like FileStream wants me to write the file byte by byte
can I really not just save the string outright?
don't use filestream
use streamwriter
string mydocpath =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
// Write the string array to a new file named "WriteLines.txt".
using (StreamWriter outputFile = new StreamWriter(mydocpath + @"\WriteLines.txt")) {
outputFile.WriteLine(json);
}
@buoyant obsidian
/// <summary>
/// Save GlobalSettings to disk. (backs up the current global settings if it exists)
/// </summary>
internal void SaveGlobalSettings()
{
Logger.Log("Saving Global Settings");
if (File.Exists(SettingsPath + ".bak"))
File.Delete(SettingsPath + ".bak");
if (File.Exists(SettingsPath))
File.Move(SettingsPath, SettingsPath + ".bak");
using (FileStream fileStream = File.Create(SettingsPath))
{
using (StreamWriter writer = new StreamWriter(fileStream))
{
string text4 = JsonUtility.ToJson(GlobalSettings, true);
writer.Write(text4);
}
}
}
/// <summary>
/// Loads global settings from disk (if they exist)
/// </summary>
internal void LoadGlobalSettings()
{
if (!File.Exists(SettingsPath))
{
_globalSettings = new ModHooksGlobalSettings { LoggingLevel = LogLevel.Info };
return;
}
//Logger.Log("[API] - Loading Global Settings");
using (FileStream fileStream = File.OpenRead(SettingsPath))
{
using (StreamReader reader = new StreamReader(fileStream))
{
string json = reader.ReadToEnd();
_globalSettings = JsonUtility.FromJson<ModHooksGlobalSettings>(json);
}
}
}
}
just swap out your various things
Use... both?
to use whatever serializer you're using insterad of the JsonUtility
A StreamWriter wants something to write to, so you give it a FileStream, then write to the StreamWriter
i mean, you can do stuff like
so if I'm trying to serialize the variable named Avatar
File.WriteAllText("filename.txt", myData);
assuming your serializer is in JsonUtility, yes
isn't it WriteLine?
no
you never want to add something to the serialized data
WriteLine would add a \r\n
you just want to write out whatever the serializer produces
anyway, my example is using the Unity JsonUtility. But the concepts transfer.
FileNotFoundException: Could not load file or assembly 'System.Runtime.Serialization, Version=3.0.0.0,
why
¯_(ツ)_/¯
good chance that System.Runtime.Serialization isn't in the unity version
or the default one
there's several oddities like that we've run into
where the unity version of 3.5 isn't exactly like the normal 3.5
ayy
throwing stuff in the mods folder works
now i've got FileNotFoundException: Could not load file or assembly 'System.Data,
so I'm going to throw all the files
yeah... you shouldn't
why
cause 1: it means that to distribute your mod, you'll have to throw all those files into the zip
which means 2: folks will have to move those all around when they want to disable your mod
can I have my mod load all the dlls from a folder?
because 3: putting other assemblies that are for .net into the folder means they will get loaded by the mod loader
sure, but are you certain that loading a different version of .net than what HK ships with won't break HK? (cause it will probably cause HK to reference your version instead of it's own)
lol
and the wind noises are blowing forever
just target 3.5 and pick another method to serialize. what exactly do you need to serialize anyway?
I'm just trying it for fun
ah
i'd just use jsonutility.tojson and use either one of the 4 Serializable[Type]Dictionary (like SerializableIntDictionary) or create one that inherites from SerializableDictionary<T,T2>
this isn't saving the file anywhere, do you see anything wrong with it?
yeah
or
better
%APPDATA%\..\LocalLow\Company\Game\Filename.txt
kind of like HK
%APPDATA%\..\LocalLow\Team Cherry\Hollow Knight\
%USERPROFILE% didn't save it there either
brb
broke shades
it says behind me now
and turns around
with me
JsonSerializationException: Self referencing loop detected for property 'normalized' with type 'UnityEngine.Vector3'. Path 'shadeMapPos'.

mmhmm
serializing complex data structures with unity is difficult at best
even with a 1st class engine like Json.net, you'd have to put in extra effort to make it work
Yeah it looks like writer.Write() just doesn't do anything
hold up I may have found it
It looks like the file path is not what I thought it was
It was just naming the file %USERPROFILE%
and putting it in some random folder
lol
try
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
or something similar
I'm just gonna roll with the random location
The file that gets saved is only a single line, hmmm
is it possible that it's only writing the first line of the file?
it should be only one line @buoyant obsidian
a big json line
put it in this:
https://jsonlint.com/
JSONLint is the free online validator and reformatter tool for JSON, a lightweight data-interchange format.
{"thumbnailImageUrl":"https://files.vrchat.cloud/thumbnails/4284792274.thumbnail-500.png"}
Seems like only part of it
that's the whole thing?
that's all that's being saved
I'm pretty sure it's supposed to be everything needed to load the avatar
¯_(ツ)_/¯
could be wrong though
maybe try a different object and see if it works with that?
Good idea, I'll try that
actually hold on I'm 100% sure that's not everything
since avatar.id is something I can call
hm
maybe that property isn't added to it till after the part of the code you're in?
not the case
¯_(ツ)_/¯
I'd try a different object and see if it's also cut off
maybe you need an instance? idk
lol
@buoyant obsidian maybe all the other attributes are empty when it goes through them?
like avatar.id
not sure what you mean
like when you do
private bool soulGain
it creates a bool called soulGain but it doesn't have a value
so it might not show those
and maybe it has trouble recreating the file from the json since it expects those empty slots?
yeah
or maybe all the oither attributes are empty
and so it doesn't show them
I'll test it
is it possible to save an instance variable without serializing it?
Yep
then I don't think so
because the app is going to close
so it has to be saved in a file
@buoyant obsidian my theory was wrong
I did:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Test
{
class Program
{
class Test
{
public bool show = true;
public bool noshow;
public int showint = 10;
public int noshowint;
public string showstring = "showing up";
public string noshowstirng;
}
static void Main(string[] args)
{
var i = new Test();
Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(i));
}
}
but I got
PS D:\home\Documents\GitHub\Test\Test\Test\bin\DEbug> ./Test.exe
{"show":true,"noshow":false,"showint":10,"noshowint":0,"showstring":"showing up","noshowstirng":null}
so your avatar.id is weird
¯_(ツ)_/¯
well, got enemies spawning finally. now need to play around with how i want the randomization to work and optimize building the database a bit.
What is it you're doing to save all the enemies so you can spawn them?
nothing special, basically going through a subset of scenes on game start and grabbing all the enemies types out of them
Yeah that's what I figured
i went through each scene in the game with enemies and hand picked a minimal set of scenes that would contain all the types
It was always theorized you could do that but it's gotta hurt that initial load time sooooo badly
well, i'm gonna add a ui option to the game's menu, like the normal rando has
so a player can select, before starting any game, if they want to do it
on my pc it takes about a minute to go through lal the scenes
all*
though, that's what i mean by optimizing
i'm wondering if i can serialize out the prefabs
on my own
and just use store them in a file
just store*
i checked, they aren't in resources
all the enemies, pretty much, are just game objects in scenes
i looked through every resource prefab in the game
Sounds fun
😛
hopefully, bc if that works then i should be able to just include that data with the mod
or have players generate it one time
whichever
No reason not to just include it
also, spawning zotes is funny
I can imagine
thanks for the FSM tip to locate enemies, that helped a lot
I don't remember giving you any tip like that but ok you're welcome
You wanted to do something like a room transition randomizer too, right?
yeah, i think that will be next
It would be a huge undertaking to make one of those that was always beatable
maybe, i noticed how the randomizer checks your abilites and adds platforms
so it'd just be a lot of that for rooms, i imagine
I don't think it's realistic to expect to prevent all locks for every configuration of the rooms by adding platforms
The best you can really do is figure out what sets of items get you from entrance A to exit B for every set of entrance and exit in every room
Which is the "huge undertaking" part
You could also add a button to teleport to the initial room for people who get stuck
The item randomizer doesn't have that since it would be pretty abusable, but it's probably necessary for a transition randomizer to not be frustrating
yeah. i think, in the ideal case, i'd like to make the mod be something like a roguelike / rogue legacy / binding of issac type experience
start from hub town, proceed as far as possible through a set of rooms
checkpoints every X rooms
That could be fun
Iirc serializing the sprites and animations was unfun when I was trying to get it to work, but everything else should just serialize easily
anyone beat NGG yet?
nobody's trying anymore @solemn rivet
Did you beat it?
im new to the modding stuff
how can i attempt nightmare god grimm C:
i mean i have a golden zote statue ffs
it cant be that hard :)))
and everytime someone does, KDT just makes it harder
There's a pinned video for installing boss rush you can use that but install ngg instead
Instructions are the same
oh, yeah
forgot someone actually made the video everyone was too lazy to do (including me)
I almost feel like grinding out an actual NGG kill..
not worth it at all
did he just give him 10000000 health or something?
basically only us and the speedrunning subchannel would know what a feat it is
if only it was just that
that would be easy, vikri
but would take days
and constant spikes spawning
and first phase constant spikes
and i think he does more dmg too?
i can't remember what else was changed
his attacks were altered a bit
never does the fire pillar attack anymore
and always teleports and does the second part of bats attack too
i think
would be better if all he did was balloon

just picture it
all he does is balloon
with only enough time for 1 hit in between
and every flame requires i-frames to avoid
just a full screen flame
Nightmare Zeus Grimm is born
well, we can look at making it harder if anyone actually ever beats it
Nightmare Titan Grimm
in the meantime, no need to make it harder
since no one has done it in a single attempt
Nightmare Fucking Grimm
lol
but a man can dream, god dammit!
not even just make it harder, just make it impossible
KDT made a mistake by making NGG beatable

would be nice to make an endless balloon phase that you had to resist for, like, 10 minutes to beat
glass soul NGG?
just for the heck of it
glass soul steel soul NGG
and if you die, the game is erased from your library
lol
if you die, your SSD/HDD is formatted, your CPU & GPU melts down, and your system goes up in a puft of smoke
if you die in the game, you die in real life
well, that accelerated quickly
You still alive?
you'd need a save where he's still alive, or you'd need to install debug mod and reset the state of it i think
if you go looking in the speedruns.com resources for the game, there should be a save zip for 106% practice saves, could just grab the last save from it which would probably be just before NGG/HK
NGG no upgrades, when?
You can heal once per stagger
gmd
NGG has double HP, and is way harder to hit 🤔
good luck with that
can i have a mod that removes salubra, zote and nymm from the game
this is truly the Dark Souls of Hollow Knight
can ngg do the spikes attack with his spikes
He has spikes going all the time
i know
He can't do 2x spikes
can he cover the entire ground with them thanks
also, why would you want them removed, Vikri?
They noisy
baklava boopitis
they hurt my ear holes
remove flukes > npcs
time to do normal grimm as a warmup
When is hell mod glass soul ngg
normal grimm as warm up. kek
No upgrades
if he makes it to the first baloon phase i'll be impressed
the mod affects normal grimm too?????
of course
hey I got to the final phase on my third try after not fighting him since november. This shouldn't take more than 6-8 weeks 
The mod's entire point is to make Nightmare King Grimm into NGG, if you don't want him, just move the Mod dll into another folder
who doesnt want 
no, I mean, I think he's trying to fight Troupe Master Grimm
or was it Troupe Leader?
if not, then yeah, that's what the mod does
definitely Troupe Bitch
pretty sure it only works on NKG->NGG, I can't see it changing TMG since they'd have different FSMs
Troupe Heater 
that bat spam
they are completely different enemies
little do we know vikri is actually just bad at the game and thinks regular grimm is ngg
lol
that's what we said
it's not called nightmare joke grimm
and we had already said no one has beat it in a single segment
it's supposed to be brutal hard
im not talking about his dream boss here :(
interesting, i guess they shared the FSMs between the non-dream boss and the dream boss
¯_(ツ)_/¯
@leaden hedge is that supposed to happen?
No

eh i staggered him
and once he does his bat attack he is locked into doing it for the rest of the fight
yeah, NGG is really only designed to work on NKG
doing, really, anything else means it probably isn't going to do what the mod intended
what is the bonfire mod?
"not my concern"
on a small side note, I really wish I could go to gdq only to watch your run 
me too

(the modder is gradow, and he's been MIA for weeks, for all we know, he's dead)
last we heard of him, he was in the savanna, wrestling monkeys and fencing with snakes
hint: if you beat a boss without taking damage you get 2 pickups
it didnt appear
you don't need dash for soul master
welp i learned that you dont need it
and leave the bosses you know you'll need items for last
just gotta jump
soul tyrant is hard without it, but master is a gimme
the only boss you NEED upgrades for is radiance
oh, I thought it was tyrant
my bad
radiance you need double jump or claws and shade dash iirc
to get to tyrant you need claw, dash, or wings. to beat radiance you need double jump or claw
radiance also has that wall attack you need to shadow dash through
you can beat radiance without shadow dash, using spikes for iframes or dive frames
okay sure
oh yeah, dive as well
if you do that
haha i have pure nail
mmmhmm
broken vessel time
just get fury+quickslash+elegy
you become OP very quick in boss rush
also, shade soul+fluke+shamans
only took 2 dmg :)
1 because he did that annoying attack
and another because im stupid
Broken Vessel/Lost Kin is, for me, the boss that shows most clearly how far I've progressed in this game in terms of reflexes and general skill
and hornet 2
I took so long to kill them on my first playthough... But now they're one of the easiest bosses
my usual BR route is Mantis Lords, Hornet, Gruz Mother
nail 0 false knight dream fight is still annoying, but doable with relative success
after that, it depends on which items I got
ideally i hold off on fluke until i get dive or until last, whichever is first
yeah, annoying and painful, but doable
just cause quick kill
also, still hoping for the fateful day someone will manage to beat flukemilf with nail 0 and no charms or spells
basically, no upgrades (maybe movement, but no sharp shadow)
flukemilf confirmed hardest boss - even NKG is beatable no upgrades
lol i even have the grimmchild to go with fighting grimm now
except you don't
oh, you DID uninstall NGG... I hope
it's like you don't have dive if you go into soul master with dive
you can't have dive in that fight because the game breaks
if you have dive, then you can smash the floor
same with grimmchild
wait i did check integrity of game files
how do you uninstall mods... properly 
most people create a Disable folder inside the Mod folder
verify steam game files
i did that
and move whatever they don't want installed there
well, verifying the files only removes the API
and if you want to completely revert to vanilla, then you verify
it won't remove the mods folder
which is why most folks keep a folder inside Mods called Disabled, like Gradow says
yeah, verifying doesn't delete stuff that shouldnt exist, it just adds what should exist but doesn't
well the mods won't run w/o the API yeah?
But it has the same effect: the mods wont run
not exactly
if you move SOME mods into the Disable folder, only those mods won't run
if you verify, on the other hand, EVERY mod will stop working
yeah, so verifying files will effectively remove mods
(and moving is way faster than verifying, for what it's worth)
even though they're still there
unless you reinstall the API, then all the mods you "removed", return
true
I think the best way to describe it would be to say that verifying "disables" mods, instead of removing them
i was thinking about something where when you started the game, before you got to the main menu, it would list the mods and ask which ones to load
yeah true, I assumed remove all mods (and didn't read all your reactions correctly), my bad 😃
and it would just default to load the same ones it loaded last time
oh, yeah, Wyza, there was talk about adding that to the API a long time ago iirc?
yeah, KDT did some work on a mock ui for it
i just haven't had the gumption to go work on it
make it somewhat modular, in the sense that you could just check/uncheck boxes for whichever mods you wanted on
yeah, that was the idea
basically it would read the dlls in the folder, get some static info like Name (maybe description?) from the dll, then list those. checked ones would run their constructors/initializers, unchecked ones would not.
oh so thats where that darn mod went
lets go
without a god to stop me
wait can you kill gruz mother without waking her up using defenders crest?
ÖMG YOU CAN
slow as shit tho
just takes 30 seconds
max 1 min
could probably do that with anything that doesn't cause hit stun
aka..... flukenest
try with weaversong
also healthbar gets kinda bugged with jonis blessing
KDT just described 99% of this game's code
lmao
I wish I was kidding
Isn't Joni's Blessing in the C# assembly file?
I remember coming across it at some point
it is
but the code to show the HP bar isn't
JB is in HeroController.UpdateBlueHealth() iirc
haha now i can finally try dive on dung defender
he wont know what hit him
ok beat grimm who is not a god anymore
uumu becomes very hard without mantis claw
i've done uumuu with no claw/dash/wings/spells, it's tedious, but it's not "hard"
it's more boring than anything else
Im not used to the strat, seeya tomorrow
@buoyant wasp mac build is slightly weird
the zip looks good and the file structure is good
but on mac the .app folder turns into an actual app
because that's how .apps work and stuff
what needs to change exactly?
like, should i reduce the nesting by 1 level?
so that they have to go into the app paste it there?
I think that'd be good
because I think replacing the app with the app given replaces the whole folder
because it treats them as bundles
why can't things be simple, it's a folder, it's unix, it's not a dang bundle
stupid mac
they're simple if you use the command line
Hello, I was wondering if there was a mod that simply removes the HUD? I was told it might be in the pins here but I do not see it.
debug mod does that
Sick, thanks :)
ok so i beat the boss rush
still think nightmare king grimm is harder than the radiance
took me a solid 2 or 3 tries
in theory, if you nohit every boss cant you get every charm in the game at the same time?
theres probably another mod for that :P
You get 52 items and you need djump and 40 charms so you get 11 items left over
Although you can get every good charm on in vanilla
Having every charm is only marginally better
what does charm notch mod do
ok i tried randomizer
tried getting vengeful spirit and instead got dashmaster and now im stuck
Remember shop inventories are changed, and all charm drops
beat hornet "taken the monarch wings
"monarch wings"
"monarch wings"
nice description
great now the game is constantly telling me to dash
i bought wayward compass and nothing got added to my inventory?
does anyone know why my gog version tries to start HK over steam and how to fix it
vikri: playing on easy or hard?
if you tried to downpatch the GOG version through steam manifests, it gets a different exe, that's the only reasonable explanation I have as to what's happening
still makes no sense... The folders and folder structure are completely different
test
Are there any particular options or features people want from an enemy randomizer? It's still in very early stages, but mostly working.
i had steam starting up my GOG version at first too
i can't remember what i did to fix it
maybe it fixed it when i added the .exe to steam as a non-steam game?
@pearl sentinel do you have the option to choose a seed?
It will. I'll be using my own implementation on a an rng sequence generator wrapped around the mersenne twister for the final final version.
Of an*
Mostly trying to decide how the enemy rando logic should work.
Even the unstructured, half broken state it's in now is pretty fun to play with though
ya
didn't fireborn do a glass steel soul run a while back?
ya
Kerr, how's the randomizer in terms of enemy progression?
@pearl sentinel are you randomizing the static mawleks in the Basin before Broken Vessel?
Currently, yes they are one of the things. Also those worms. I've only spent about 30 minutes play testing things so I don't have many details of rando results yet
why are you using a different RNG system than the one provided by unity?
Quick question, is it intended to have all the boss on the last page of boss rush, when fighting them, you don't see your health
not really, no
if you fight Hollow Knight first, it can lead to that
it's a bug, in any case. but I don't think KDT has been modding much the past few weeks. holidays or burnout i'm guessing 
I work on slot machines and there's a few potential advantages to using a good sequence generator. The MT happens to be the algorithm used by most slot machines out there, so it's particularly good
seems reasonable. I just like to use what's in the framework for consistency's sake, even if it isn't all that good. Mostly so that if someone else comes in down the line and has to maintain my code, it is familliar
not saying don't do it your way, just my personal approach
mostly just curious if you had some specific flaw you found in the unity one that made it unviable 😃
seems reasonable. Can't wait to bug hunt this rando!
also, as I've said before, verulean is your go-to man when it comes to finding ways to break whatever it is you made
True, generally I agree with using standard things. The MT is an open source rng generator and my wrapper is written mostly for convenience in doing things like weighted ranges and such
also, if you aren't, I'd suggest doing this in the API vs via dnspy
Doing what in dnspy?
the mod
what about cryptographic hashes like md5 for PRNG? do you know if there's a disadvantage to that compared to MT?
if you are editing assembly-csharp directly instead of using the modding API, i suggest the API.
Oh. I'm branching off of the charm rando and creating a dll that mostly hooks into the mod api, as it does
cool 😃
you can also check out https://github.com/seanpr96/HollowKnight.Modding/tree/master/ExampleMods for some other samples of simple stuff for things like saving settings and whatnot
@madewokherd i do not know of any disadvantages in that respect
Yeah, I figured I'd poke around other mods and search in here as needed. I'm very experienced with unity and working in messy legacy systems, so progress has been fairly easy so far
there are also links to most of the repositories that use the API here https://seanpr96.github.io/HollowKnight.Modding/ (note that the documentation is still very much WIP)
I appreciate the links and support :)
Your api has been extremely helpful, thanks for your work there
most of the credit goes to @rain cedar for the original back breaking work of getting the API to work at all. I just streamlined stuff a little 😃
Gotcha
if you run into something that the API doesn't do that you need it to, let us know, most of the time it's fairly trivial to add new hooks in
Cool, so far I haven't needed much since it's just a prototype, but we'll see as I get more time to poke at it
An on-screen debug log would probably be at the top of my current list though
I know I can just run tail of the text log, but sometimes it's nice to see in game
:p
it's too risky, Kerr, since this game is too prone to breaking
having an on-screen debug would be awful, unless you limited what it shows
well, we could do something where it streamed what went to ModLog.txt
i had thought about that myself a while back
That's basically all I mean
Dunno if I'll have time tonight, might, but i'll look at it. should be doable
That would be very cool, and much appreciated
doesn't debug do something like that already?
👍
and then I'll just repurpose it to be written to when the Logger is called and add a global setting that controls whether or not it's displayed
I wonder if you could have something that periodically checks unity's output log and prints in the mod apis log a notice when a null reference, or other, error happens
it'd probably be too finicky. if output.log wasn't constantly flowing with so much useless garbage, maybe
Hah. True
Random question, has anyone tried creating an asset bundle and then loading it into the game?
@rain cedar I think was doing something with that related to fonts
and was having a rough time of it, dunno if he ever solved it
@leaden hedge might also be able to help
both are somewhere in EU timezones, i think though, so they won't be on for a few hours
I've been considering how I want to make some UI stuff for the game and it just occurred to me that that may work.
I know that kdt was working a completely new UI
I'll probably try it tonight or tomorrow
like he was rewriting the inventory screen UI from scratch
so that you could add your own panels
Nice
i think boss rush's current version is using one of the early prototypes for it
I considered doing something like that with the enemies in scenes (actually putting them under the _Enemies root object that's in every scene, for example)
Do you remember which version of unity hollow knight is using? If not I can google, I remember it being in a patch note
Fonts don't work iirc, something to so with tmp requiring stuff that doesn't get put into a bundle
A regular font file would probably work but it'd only be usable for new text
should I try doing a lightbringer playthrough?
i just 100%ed the base game and i can't get enough of it
Lightbringer, Randomizer, Boss Rush, you have several good choices
i would have
if it was in a working state
cause it is a good choice
blackmoth works though right?
shitmodst is also a valid option
I recommend Hellmod for your 14th playthrough
wait what is hellmod
bad
thank you for the descriptive answer
@vagrant leaf makes the game harder
how
makes you want to die
gimme a sec, I've got it in a file
i already want to die
best trailer imo https://www.youtube.com/watch?v=lrQmlscjoLg
pfft
best trailer: https://www.youtube.com/watch?v=bWvgzAGpDPM
hahahahahahahahaHAHAHAHAHA 2 Nail damage, Quick Focus, Soul Catcher, Spore Shroom
that's pre heal nerf tho
sadly
heal nerf would make that much less viable
@vagrant leaf
## Effects
- 1/2 Nail Damage
- 2x incoming damage
- 1/3 max SOUL
- 1/2 SOUL collection
- no SOUL collection while your shade is alive
- Heal focus is nerfed to Deep Focus speed
- Deep focus multiplier increased by 1.3725
- Dream shield only costs 1 notch (bugged, shows up as 1 but still uses 3)
that sounds fantastic
not really it looks terrifying
but also fantastic
maybe once i beat the entire game with glass soul
7 times
on steel sou l
glass soul seems harder
not really
Glass Steel maybe
I should change it from 1/2 nail to 2x enemy health
like KDT said
then spells will die
glass steel soul makes it so you have to do the entire game hitless
except dream bosses
though the radiance still kills you
and the white palace still kills you
@buoyant obsidian you can't kill yourself in the birthplace cutscene even with glass soul pls fix
never
even my readme is evil apparently
well i just started lightbringer
nice
did someone buff the shit out of gruz mother
Beware Gruz Mother
gruz mother empress muzznik
memes
empress muzznik
m e m e
do i have to get sly from the other side
More or less yes
oh
Empress Muzznik is a tough customer
https://youtu.be/kOv-tj78t20 shitty example of murder
from 753's Lightbringer mod: www.moddb.com/mods/hollow-knight-lightbringertuH
"you might just stand a chance"
no
Not at all
what
I didn't even use spells
Usually by "You might just stand a chance" you can beat her
i guess i'll approach from the other side


