#archived-modding-development

1 messages · Page 46 of 1

ornate rivet
#

put the folder it gives you into the hollowknight data folder

#

and let it replace files

buoyant wasp
#

watch the boss rush mod install guide, same applies for the randomizer

#

except instead of downloading bossrush, you download randomizer 😃

fair rampart
#

alright thanks

solemn rivet
#

here's hoping switch port removes FSM completely

#

just imagine if all game logic was in the assembly...!

fair rampart
#

it crashed

#

i mustve done something wrong

buoyant wasp
#

what version of the game were you on?

#

before installing the API?

fair rampart
#

i dont know where to find that

#

i found the problem though

#

bonfire mod is crashing me

#

kek

buoyant wasp
#

only a few mods work together

fair rampart
#

ive got randomizer and the charm notch thingy

#

and then i added bonfire and it all fell apart

buoyant wasp
#

yerah

#

yeah

fair rampart
#

i had lightbringer as well but i assumed that was causing my problem and removed it

buoyant wasp
#

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

fair rampart
#

im the kind of person who likes to go overboard with mods

#

so uh

#

this is disappointing

buoyant wasp
#

lol

fair rampart
#

what does player data tracker even do

hazy sentinel
#

tracks player data hollowface

fair rampart
#

:/

buoyant wasp
#

for the laymen?

fair rampart
#

what can i do with that

#

can i edit the data?

buoyant wasp
#

it is required to show the randomizer overlay for streamers

fair rampart
#

required?

buoyant wasp
#

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

fair rampart
#

alright then

buoyant wasp
#

there's a pin about it

#

it's not required to play the randomizer

#

and technically not even randomizer specific

fair rampart
#

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 :(

buoyant wasp
#

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?

fair rampart
#

no it kinda just started

#

it doesnt say randomizer on the pause menu

buoyant wasp
#

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

fair rampart
#

maybe

#

ill check

buoyant wasp
#

so they are mutually exclusive

fair rampart
#

alright goin again

#

now it works

#

i guess ill keep that fury charm and continue onward

buoyant wasp
#

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

fair rampart
#

alright

#

even after making a new save, it seems that nothing has changed

#

same vengeful spirit

#

same charms

buoyant wasp
#

when you started the new game, there is a big giant button that says "Randomizer: Off", did you click it to turn it on?

solemn rivet
#

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

copper nacelle
#

*play randomizer on "hard" because it's fun

solemn rivet
#

it's fun for us watching, anyway

copper nacelle
#

buoyant obsidian
#

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.

copper nacelle
#

c#?

#

you could use a serializer of some sort to save it to a file

buoyant obsidian
#

that sounds promising

#

Any examples you could link me?

#

I'd also need to load it back in as a variable, of course

copper nacelle
#

the stackoverflow one is using the built in XMLSerializer

#

I've heard the 3rd party JSON ones can be better tho

buoyant obsidian
#

So uh what's serialization exactly

copper nacelle
#

translating stuff into a format that can be put into a file

#

like c# classes to XML

#

or JSON

buoyant obsidian
#

Am I going to have to add a serializer class? I've never done anything like this.

copper nacelle
#

I think so

#

this is a good example w/ JavaScriptSerializer

buoyant obsidian
#

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

copper nacelle
#

gimme a sec

#

you don't need to download anything

buoyant obsidian
#

then what libraries do I need to reference?

copper nacelle
#
  1. Add reference in Visual Studio to System.Web.Extensions
  2. using System.Web.Script.Serialization
  3. (example with PlayerData and ModApi Logging)
var json = new JavaScriptSerializer().Serialize(obj);
Log(json);
#

if I've got this right

buoyant obsidian
#

this is dnSpy so it might not work so well

copper nacelle
#

no

#

you need an assembly reference

#

idk how to do it in dnSpy

#

but in VS

#

Project --> Add Reference

buoyant obsidian
#

Not sure where to go from here, then

copper nacelle
buoyant obsidian
#

Oh this looks promising

#

thanks

copper nacelle
#

yw

#

I'm testing it rn for PlayerData to make sure I've got it down correctly

buoyant obsidian
copper nacelle
#

ahh

buoyant obsidian
#

even if this works though, where would I even find the assembly I need to link?

copper nacelle
#

here

#

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Web.Extensions.dll

#

I think

buoyant obsidian
#

We're definitely getting somewhere!

copper nacelle
#

yea

buoyant obsidian
#

It'll compile at the very least

copper nacelle
#

I tried to put it in my onHealthtaken thing and now I'm invincible

buoyant obsidian
#

Alright, I have the json variable, how do I save it to disk?

copper nacelle
#

just log it to a file

#

it's a string

buoyant obsidian
#

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

copper nacelle
#

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

buoyant obsidian
#

looks normal to me

copper nacelle
#

yeah

#

I think I'm not doing the serialization part right

#

because it compiles but any function it's in breaks

buoyant obsidian
#

var json = new JavaScriptSerializer().Serialize(avatar); does yours look like that?

copper nacelle
#

yeah

#

oh wait

#

oh no

#

don't use the JavaScriptSerializer

#

it can't deserialize apparently

buoyant obsidian
#

oh

copper nacelle
#

I'm trying that out now

buoyant obsidian
#

Guess I gotta download that?

copper nacelle
#

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

buoyant obsidian
copper nacelle
#

wait

#

are you using win10?

buoyant obsidian
#

7

copper nacelle
#

then use the download

#

win10 added a package manager

buoyant obsidian
copper nacelle
#

think so

buoyant obsidian
#

I sure hope this'll work considering it'll be running with different framwork versions

copper nacelle
#

yeah

#

I think it's like this:

#
            string output = Newtonsoft.Json.JsonConvert.SerializeObject(PlayerData.instance);
            Log(output);
buoyant obsidian
#

I'll assume that Log() isn't important

copper nacelle
#

Log is just a function that logs to a file

#

you can use any equivalent type thing

buoyant obsidian
#

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

copper nacelle
#

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

#

¯_(ツ)_/¯

buoyant obsidian
#

My game doesn't crash, so I guess I just gotta figure out how to log it and where

copper nacelle
#

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'.

solemn rivet
#

umm

#

doesn't HK use the json serializer?

buoyant obsidian
#

I'm not using HK

solemn rivet
#

so... Wouldn't it be simpler to just mimic whatever it does in its code?

copper nacelle
#

wait it does?

solemn rivet
#

yup

copper nacelle
#

also 753 needs to deserialize tho

solemn rivet
#

it also uses json deserializer

copper nacelle
#

wait what

solemn rivet
#

look for GameManager.SaveGame() and .LoadGame()

#

it should be at the end of the code for each of those methods

buoyant obsidian
#

string fileName = @"C:\Users\SomeUser\My Documents\Foo\Bar\Baz\text1.txt";

copper nacelle
#

if (this.gameConfig.useSaveEncryption)
{
json = StringEncrypt.DecryptData(toDecrypt);
}
SaveGameData saveGameData = JsonUtility.FromJson<SaveGameData>(json);

buoyant obsidian
#

where am I supposed to save a file to if everyone has different paths

copper nacelle
#

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?

buoyant obsidian
#

I'm gonna try %USERNAME%

#

I'm using dotnet 3.5 so I hope so

solemn rivet
#

it is

#

using dnspy you can check that

copper nacelle
#

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

buoyant obsidian
#

red text, help

#

solved

copper nacelle
#

dang it

#

too fast for me

buoyant obsidian
copper nacelle
#

idk filestreams ¯_(ツ)_/¯

buoyant obsidian
#

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

copper nacelle
#

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

buoyant wasp
#

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

copper nacelle
#

753 is doing a diff game iirc

buoyant wasp
#

ah

copper nacelle
#

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

buoyant wasp
#

technically, HK is 2.0.5.0 😉

#

which is .net 3.5 unity

buoyant obsidian
#

It looks like FileStream wants me to write the file byte by byte

#

can I really not just save the string outright?

copper nacelle
#

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 wasp
#

@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

buoyant obsidian
#

Use... both?

buoyant wasp
#

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

buoyant obsidian
#

so if I'm trying to serialize the variable named Avatar

buoyant wasp
#

File.WriteAllText("filename.txt", myData);

buoyant obsidian
buoyant wasp
#

assuming your serializer is in JsonUtility, yes

copper nacelle
#

isn't it WriteLine?

buoyant wasp
#

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

copper nacelle
#

ah

#

ok

buoyant wasp
#

anyway, my example is using the Unity JsonUtility. But the concepts transfer.

copper nacelle
#

FileNotFoundException: Could not load file or assembly 'System.Runtime.Serialization, Version=3.0.0.0,
grimm why

buoyant wasp
#

¯_(ツ)_/¯

copper nacelle
#

aha

#

found a dll in Unity Full v3.5

#

time to put in the Mods folder

buoyant wasp
#

good chance that System.Runtime.Serialization isn't in the unity version

#

or the default one

copper nacelle
#

ohh

#

ok

buoyant wasp
#

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

copper nacelle
#

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

buoyant wasp
#

yeah... you shouldn't

copper nacelle
#

why

buoyant wasp
#

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

copper nacelle
#

can I have my mod load all the dlls from a folder?

buoyant wasp
#

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)

copper nacelle
#

should I make my mod .NET 2.0 then?

#

I regret trying that

#

HK is now at 1fps

buoyant wasp
#

lol

copper nacelle
#

and the wind noises are blowing forever

buoyant wasp
#

just target 3.5 and pick another method to serialize. what exactly do you need to serialize anyway?

copper nacelle
#

I'm just trying it for fun

buoyant wasp
#

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>

buoyant obsidian
#

this isn't saving the file anywhere, do you see anything wrong with it?

buoyant wasp
#

%USERNAME% is just your username

#

so

copper nacelle
#

use

#

%USERPROFILE%

#

it's an actual directory

buoyant wasp
#

yeah

#

or

#

better

#

%APPDATA%\..\LocalLow\Company\Game\Filename.txt

#

kind of like HK

#

%APPDATA%\..\LocalLow\Team Cherry\Hollow Knight\

buoyant obsidian
#

%USERPROFILE% didn't save it there either

buoyant wasp
#

brb

copper nacelle
#

it says behind me now

#

and turns around

#

with me

#

JsonSerializationException: Self referencing loop detected for property 'normalized' with type 'UnityEngine.Vector3'. Path 'shadeMapPos'.

buoyant wasp
#

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

buoyant obsidian
#

Yeah it looks like writer.Write() just doesn't do anything

buoyant wasp
#

any thing in the logs for the game?

#

exceptions or the like

copper nacelle
#

^

#

mine wasn't doing anything because I didn't have the assemblies

buoyant obsidian
#

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

copper nacelle
#

lol

#

try

#

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

#

or something similar

buoyant obsidian
#

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?

copper nacelle
#

it should be only one line @buoyant obsidian

#

a big json line

buoyant obsidian
#

{"thumbnailImageUrl":"https://files.vrchat.cloud/thumbnails/4284792274.thumbnail-500.png"}

#

Seems like only part of it

copper nacelle
#

that's the whole thing?

buoyant obsidian
#

that's all that's being saved

copper nacelle
#

rip

#

that's an entire json object tho

buoyant obsidian
#

maybe it is the entire thing and the loader isn't working

copper nacelle
#

is the avatar just the avatar image?

#

or all player data?

buoyant obsidian
#

I'm pretty sure it's supposed to be everything needed to load the avatar

copper nacelle
#

¯_(ツ)_/¯

buoyant obsidian
#

could be wrong though

copper nacelle
#

maybe try a different object and see if it works with that?

buoyant obsidian
#

Good idea, I'll try that

#

actually hold on I'm 100% sure that's not everything

copper nacelle
#

hm

#

maybe that property isn't added to it till after the part of the code you're in?

buoyant obsidian
#

not the case

copper nacelle
#

¯_(ツ)_/¯

#

I'd try a different object and see if it's also cut off

#

maybe you need an instance? idk

buoyant obsidian
#

Tried another object, it's not cut off

#

No idea what's going on :)

copper nacelle
#

lol

buoyant obsidian
#

{}

copper nacelle
#

lol

#

@buoyant obsidian maybe all the other attributes are empty when it goes through them?

buoyant obsidian
#

not sure what you mean

copper nacelle
#

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

buoyant obsidian
#

and maybe it has trouble recreating the file from the json since it expects those empty slots?

copper nacelle
#

yeah

#

or maybe all the oither attributes are empty

#

and so it doesn't show them

#

I'll test it

buoyant obsidian
#

is it possible to save an instance variable without serializing it?

copper nacelle
#

I'm not sure

#

are you saving across application sessions?

buoyant obsidian
#

Yep

copper nacelle
#

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}
#

¯_(ツ)_/¯

buoyant wasp
#

not all things are serializable out of the box 😃 - what data type is Avatar.id?

buoyant obsidian
#

string

#

doesn't really matter

pearl sentinel
#

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.

rain cedar
#

What is it you're doing to save all the enemies so you can spawn them?

pearl sentinel
#

nothing special, basically going through a subset of scenes on game start and grabbing all the enemies types out of them

rain cedar
#

Yeah that's what I figured

pearl sentinel
#

i went through each scene in the game with enemies and hand picked a minimal set of scenes that would contain all the types

rain cedar
#

It was always theorized you could do that but it's gotta hurt that initial load time sooooo badly

pearl sentinel
#

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*

rain cedar
#

You might just be able to grab them from resources if you have the names

#

Hard to say

pearl sentinel
#

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

rain cedar
#

Sounds fun

pearl sentinel
#

😛

rain cedar
#

But yeah it's probably possible to serialize them

#

I know you can serialize the fsm

pearl sentinel
#

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

rain cedar
#

No reason not to just include it

pearl sentinel
#

also, spawning zotes is funny

rain cedar
#

I can imagine

pearl sentinel
#

thanks for the FSM tip to locate enemies, that helped a lot

rain cedar
#

I don't remember giving you any tip like that but ok you're welcome

pearl sentinel
#

oh, maybe it was someone else

#

anyway, progress continues. hooray for rando mods

rain cedar
#

You wanted to do something like a room transition randomizer too, right?

pearl sentinel
#

yeah, i think that will be next

rain cedar
#

It would be a huge undertaking to make one of those that was always beatable

pearl sentinel
#

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

rain cedar
#

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

pearl sentinel
#

yeah, i can see that

#

guess i'll see how i feel when i get to it

rain cedar
#

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

pearl sentinel
#

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

rain cedar
#

That could be fun

leaden hedge
#

Iirc serializing the sprites and animations was unfun when I was trying to get it to work, but everything else should just serialize easily

solemn rivet
#

anyone beat NGG yet?

hazy sentinel
#

nobody's trying anymore @solemn rivet

solemn rivet
#

my turn has finally come

fiery sparrow
#

Did you beat it?

ripe plover
#

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 :)))

solemn rivet
#

ummm

#

famous last words?

#

iirc just install the API, the mod and go fight NKG

young walrus
#

hahaha. "it can't be that hard"

#

literally nobody has beat it in a single segment

solemn rivet
#

and everytime someone does, KDT just makes it harder

leaden hedge
#

There's a pinned video for installing boss rush you can use that but install ngg instead

#

Instructions are the same

solemn rivet
#

oh, yeah

#

forgot someone actually made the video everyone was too lazy to do (including me)

void tree
#

I almost feel like grinding out an actual NGG kill..

solemn rivet
#

not worth it at all

ripe plover
#

did he just give him 10000000 health or something?

solemn rivet
#

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

ripe plover
#

but would take days

young walrus
#

there's two of them

#

final phase

solemn rivet
#

and constant spikes spawning

young walrus
#

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

solemn rivet
#

yeah

#

he always does a full dash after dropkick

young walrus
#

never does the fire pillar attack anymore

#

and always teleports and does the second part of bats attack too

#

i think

solemn rivet
#

would be better if all he did was balloon

young walrus
#

lol

#

unbeatable

solemn rivet
#

just picture it

#

all he does is balloon

#

with only enough time for 1 hit in between

young walrus
#

just a gauntlet of how long you can survive

#

can't even kill

solemn rivet
#

and every flame requires i-frames to avoid

young walrus
#

just a full screen flame

solemn rivet
#

Nightmare Zeus Grimm is born

buoyant wasp
#

well, we can look at making it harder if anyone actually ever beats it

#

Nightmare Titan Grimm

solemn rivet
#

Nightmare Cthulhu Grimm

#

makes sense, kinda

buoyant wasp
#

in the meantime, no need to make it harder

#

since no one has done it in a single attempt

buoyant obsidian
#

Nightmare Fucking Grimm

young walrus
#

lol

solemn rivet
#

but a man can dream, god dammit!

young walrus
#

not even just make it harder, just make it impossible

#

KDT made a mistake by making NGG beatable

solemn rivet
#

would be nice to make an endless balloon phase that you had to resist for, like, 10 minutes to beat

buoyant wasp
#

glass soul NGG?

solemn rivet
#

just for the heck of it

#

glass soul steel soul NGG

#

and if you die, the game is erased from your library

buoyant wasp
#

lol

#

if you die, your SSD/HDD is formatted, your CPU & GPU melts down, and your system goes up in a puft of smoke

young walrus
#

if you die in the game, you die in real life

buoyant wasp
#

well, that accelerated quickly

ripe plover
#

ok lets see if this works

#

do i need to do the whole quest over again to fight him

compact cove
#

You still alive?

buoyant wasp
#

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

solemn rivet
#

yup, he needs to be fightable

#

with debug, you can just noclip there

buoyant wasp
#

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

young walrus
#

NGG no upgrades, when?

leaden hedge
#

You need dashmaster and shade cloak

#

And lv2 dive

young walrus
#

"need"

#

get some cheeky heals

#

tank some dmg

leaden hedge
#

You can heal once per stagger

solemn rivet
#

gmd

young walrus
#

NKG only takes 17 minutes with no upgrades

#

should be easy to do on NGG

leaden hedge
#

NGG has double HP, and is way harder to hit 🤔

young walrus
#

hour long fight

#

EZ

buoyant wasp
#

good luck with that

ripe plover
#

can i have a mod that removes salubra, zote and nymm from the game

solemn rivet
#

this is truly the Dark Souls of Hollow Knight

hollow pier
#

can ngg do the spikes attack with his spikes

leaden hedge
#

He has spikes going all the time

hollow pier
#

i know

leaden hedge
#

He can't do 2x spikes

hollow pier
#

can he cover the entire ground with them thanks

solemn rivet
#

also, why would you want them removed, Vikri?

leaden hedge
#

They noisy

solemn rivet
#

baklava boopitis

ripe plover
#

they hurt my ear holes

hollow pier
#

remove flukes > npcs

young walrus
#

so mute your ear holes

#

problem solved

buoyant wasp
#

just don't be where they are

#

problem solved

ripe plover
#

time to do normal grimm as a warmup

leaden hedge
#

When is hell mod glass soul ngg

young walrus
#

normal grimm as warm up. kek

leaden hedge
#

No upgrades

buoyant wasp
#

if he makes it to the first baloon phase i'll be impressed

ripe plover
#

WTF

#

HELP ME

solemn rivet
#

?

#

he ded irl

ripe plover
#

the mod affects normal grimm too?????

hollow pier
#

of course

void tree
#

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 hollowface

solemn rivet
#

didn't know about that

#

always fought NKG

buoyant wasp
#

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

hollow pier
#

who doesnt want grimm

solemn rivet
#

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

young walrus
#

definitely Troupe Bitch

buoyant wasp
#

pretty sure it only works on NKG->NGG, I can't see it changing TMG since they'd have different FSMs

hollow pier
#

Troupe Heater grimm

ripe plover
#

that bat spam

solemn rivet
#

they are completely different enemies

hollow pier
#

little do we know vikri is actually just bad at the game and thinks regular grimm is ngg

young walrus
#

lol

ripe plover
#

:PPPP

#

constant spikes and down b into upsmash???

solemn rivet
#

that's what we said

buoyant wasp
#

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

ripe plover
#

im not talking about his dream boss here :(

solemn rivet
#

that's... Not supposed to happen

#

I think(?)

buoyant wasp
#

interesting, i guess they shared the FSMs between the non-dream boss and the dream boss

#

¯_(ツ)_/¯

solemn rivet
#

@leaden hedge is that supposed to happen?

leaden hedge
#

No

ripe plover
solemn rivet
#

well, there you go

#

from the man himself

ripe plover
#

eh i staggered him

#

and once he does his bat attack he is locked into doing it for the rest of the fight

hollow pier
#

interesting

#

but his bat attack is his worst attack

ripe plover
#

i blame lag

#

maybe i should try another mod thinkgrub

leaden hedge
#

Maybe you should fight ngg

#

Instead of something unintended

buoyant wasp
#

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

ripe plover
#

what is the bonfire mod?

young walrus
#

gives you a "dark souls" kind of experience

#

level up at benches

solemn rivet
#

it's very unfinished

#

don't bother the modder tho

#

he can't be bothered

young walrus
#

"not my concern"

solemn rivet
#

on a small side note, I really wish I could go to gdq only to watch your run cornywoke

young walrus
#

me too

solemn rivet
buoyant wasp
#

(the modder is gradow, and he's been MIA for weeks, for all we know, he's dead)

solemn rivet
#

last we heard of him, he was in the savanna, wrestling monkeys and fencing with snakes

ripe plover
#

i'll try boss rush for now

#

i can choose my own adventure :D

solemn rivet
#

hint: if you beat a boss without taking damage you get 2 pickups

ripe plover
#

ok

#

but how will i beat soul master without dash thinkgrub

young walrus
#

with skills

#

cmon, you beat zote 10 times

#

you're a god now

#

😛

solemn rivet
#

also

#

shoulda picked it earlier

#

use the early bosses to get 2 ez pickups

ripe plover
#

it didnt appear

buoyant wasp
#

you don't need dash for soul master

ripe plover
#

welp i learned that you dont need it

solemn rivet
#

and leave the bosses you know you'll need items for last

ripe plover
#

just gotta jump

buoyant wasp
#

soul tyrant is hard without it, but master is a gimme

young walrus
#

the only boss you NEED upgrades for is radiance

solemn rivet
#

oh, I thought it was tyrant

#

my bad

#

radiance you need double jump or claws and shade dash iirc

buoyant wasp
#

to get to tyrant you need claw, dash, or wings. to beat radiance you need double jump or claw

young walrus
#

radiance also has that wall attack you need to shadow dash through

buoyant wasp
#

you can beat radiance without shadow dash, using spikes for iframes or dive frames

young walrus
#

okay sure

solemn rivet
#

oh yeah, dive as well

young walrus
#

if you do that

ripe plover
#

haha i have pure nail

buoyant wasp
#

mmmhmm

ripe plover
#

broken vessel time

buoyant wasp
#

just get fury+quickslash+elegy

young walrus
#

you become OP very quick in boss rush

buoyant wasp
#

and you'll be broken

#

since fury works until you get hit

#

oh, and fstrength

solemn rivet
#

also, shade soul+fluke+shamans

ripe plover
#

only took 2 dmg :)

#

1 because he did that annoying attack

#

and another because im stupid

solemn rivet
#

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

young walrus
#

and hornet 2

solemn rivet
#

I took so long to kill them on my first playthough... But now they're one of the easiest bosses

ripe plover
#

but theres more!

#

yeah broken vessel isnt that hard now

#

hornet 2 time

solemn rivet
#

my usual BR route is Mantis Lords, Hornet, Gruz Mother

buoyant wasp
#

nail 0 false knight dream fight is still annoying, but doable with relative success

solemn rivet
#

after that, it depends on which items I got

buoyant wasp
#

ideally i hold off on fluke until i get dive or until last, whichever is first

solemn rivet
#

yeah, annoying and painful, but doable

buoyant wasp
#

just cause quick kill

solemn rivet
#

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

ripe plover
#

lol i even have the grimmchild to go with fighting grimm now

buoyant wasp
#

except you don't

solemn rivet
#

oh, you DID uninstall NGG... I hope

ripe plover
#

Aaaand it got thrown out the window

#

i did uninstall :l

solemn rivet
#

oh good

#

otherwise, this would be a Sans moment

buoyant wasp
#

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

ripe plover
#

wait i did check integrity of game files

buoyant wasp
#

it's easy

#

just pause

#

upper left hand corner lists mods installed

ripe plover
#

how do you uninstall mods... properly hollowwoke

solemn rivet
#

most people create a Disable folder inside the Mod folder

young walrus
#

verify steam game files

ripe plover
#

i did that

solemn rivet
#

and move whatever they don't want installed there

buoyant wasp
#

well, verifying the files only removes the API

solemn rivet
#

and if you want to completely revert to vanilla, then you verify

buoyant wasp
#

it won't remove the mods folder

#

which is why most folks keep a folder inside Mods called Disabled, like Gradow says

solemn rivet
#

yeah, verifying doesn't delete stuff that shouldnt exist, it just adds what should exist but doesn't

young walrus
#

well the mods won't run w/o the API yeah?

compact cove
#

But it has the same effect: the mods wont run

solemn rivet
#

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

young walrus
#

yeah, so verifying files will effectively remove mods

solemn rivet
#

(and moving is way faster than verifying, for what it's worth)

young walrus
#

even though they're still there

buoyant wasp
#

unless you reinstall the API, then all the mods you "removed", return

young walrus
#

well yeah

#

but you need API removed to do "official" runs anyways

buoyant wasp
#

true

solemn rivet
#

I think the best way to describe it would be to say that verifying "disables" mods, instead of removing them

buoyant wasp
#

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

compact cove
#

yeah true, I assumed remove all mods (and didn't read all your reactions correctly), my bad 😃

buoyant wasp
#

and it would just default to load the same ones it loaded last time

solemn rivet
#

oh, yeah, Wyza, there was talk about adding that to the API a long time ago iirc?

buoyant wasp
#

yeah, KDT did some work on a mock ui for it

#

i just haven't had the gumption to go work on it

solemn rivet
#

make it somewhat modular, in the sense that you could just check/uncheck boxes for whichever mods you wanted on

buoyant wasp
#

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.

ripe plover
#

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

solemn rivet
#

slow as shit tho

ripe plover
#

just takes 30 seconds

solemn rivet
#

oh

#

not that bad

ripe plover
#

max 1 min

young walrus
#

could probably do that with anything that doesn't cause hit stun

#

aka..... flukenest

solemn rivet
#

try with weaversong

leaden hedge
#

Grimmchild works

#

Similar stuff works on flukemarm

ripe plover
#

also healthbar gets kinda bugged with jonis blessing

leaden hedge
#

The code for that is somewhere

#

Where that is

#

No one knows, so it doesn't work

solemn rivet
#

KDT just described 99% of this game's code

ripe plover
#

lmao

solemn rivet
#

I wish I was kidding

deep pilot
#

Isn't Joni's Blessing in the C# assembly file?

#

I remember coming across it at some point

solemn rivet
#

it is

#

but the code to show the HP bar isn't

#

JB is in HeroController.UpdateBlueHealth() iirc

ripe plover
#

haha now i can finally try dive on dung defender

#

dunq he wont know what hit him

#

ok beat grimm who is not a god anymore

#

uumu becomes very hard without mantis claw

leaden hedge
#

You can pogo him

#

Not too hard tbh

buoyant wasp
#

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

ripe plover
#

Im not used to the strat, seeya tomorrow

copper nacelle
#

@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

buoyant wasp
#

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?

copper nacelle
#

I think that'd be good

#

because I think replacing the app with the app given replaces the whole folder

copper nacelle
#

because it treats them as bundles

buoyant wasp
#

why can't things be simple, it's a folder, it's unix, it's not a dang bundle

#

stupid mac

half laurel
#

they're simple if you use the command line

hollow terrace
#

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.

young walrus
#

debug mod does that

hollow terrace
#

Thank

#

Is there a way to change which slot my save file is in?

young walrus
#

Rename it to userX

#

Where the x is what slot you want it in

#

Between 1 and 4

hollow terrace
#

Sick, thanks :)

ripe plover
#

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

leaden hedge
#

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

ripe plover
#

what does charm notch mod do

leaden hedge
#

Charms give you salubra notches

#

Its for randomizer

ripe plover
#

ok i tried randomizer

#

tried getting vengeful spirit and instead got dashmaster and now im stuck

royal ridge
#

Remember shop inventories are changed, and all charm drops

ripe plover
#

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?

oblique tundra
#

does anyone know why my gog version tries to start HK over steam and how to fix it

solemn rivet
#

vikri: playing on easy or hard?

knotty grove
#

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

solemn rivet
#

still makes no sense... The folders and folder structure are completely different

real cypress
#

test

pearl sentinel
#

Are there any particular options or features people want from an enemy randomizer? It's still in very early stages, but mostly working.

young walrus
#

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?

solemn rivet
#

@pearl sentinel do you have the option to choose a seed?

pearl sentinel
#

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

left dew
#

I just read the mod list and let me guess

#

Glass soul makes you die in one hit?

young walrus
#

ya

buoyant wasp
#

didn't fireborn do a glass steel soul run a while back?

young walrus
#

ya

solemn rivet
#

Kerr, how's the randomizer in terms of enemy progression?

#

@pearl sentinel are you randomizing the static mawleks in the Basin before Broken Vessel?

pearl sentinel
#

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

buoyant wasp
#

why are you using a different RNG system than the one provided by unity?

rose barn
#

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

buoyant wasp
#

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 hollowface

pearl sentinel
#

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

buoyant wasp
#

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 😃

solemn rivet
#

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

pearl sentinel
#

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

buoyant wasp
#

also, if you aren't, I'd suggest doing this in the API vs via dnspy

pearl sentinel
#

Doing what in dnspy?

buoyant wasp
#

the mod

half laurel
#

what about cryptographic hashes like md5 for PRNG? do you know if there's a disadvantage to that compared to MT?

buoyant wasp
#

if you are editing assembly-csharp directly instead of using the modding API, i suggest the API.

pearl sentinel
#

Oh. I'm branching off of the charm rando and creating a dll that mostly hooks into the mod api, as it does

buoyant wasp
#

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

pearl sentinel
#

@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

buoyant wasp
pearl sentinel
#

I appreciate the links and support :)

#

Your api has been extremely helpful, thanks for your work there

buoyant wasp
#

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 😃

pearl sentinel
#

Gotcha

buoyant wasp
#

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

pearl sentinel
#

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

solemn rivet
#

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

buoyant wasp
#

well, we could do something where it streamed what went to ModLog.txt

#

i had thought about that myself a while back

pearl sentinel
#

That's basically all I mean

buoyant wasp
#

Dunno if I'll have time tonight, might, but i'll look at it. should be doable

pearl sentinel
#

That would be very cool, and much appreciated

solemn rivet
#

doesn't debug do something like that already?

buoyant wasp
#

yeah

#

i'm gonna just go find that code

#

😃

pearl sentinel
#

👍

buoyant wasp
#

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

pearl sentinel
#

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

buoyant wasp
#

it'd probably be too finicky. if output.log wasn't constantly flowing with so much useless garbage, maybe

pearl sentinel
#

Hah. True

#

Random question, has anyone tried creating an asset bundle and then loading it into the game?

buoyant wasp
#

@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

pearl sentinel
#

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.

buoyant wasp
#

I know that kdt was working a completely new UI

pearl sentinel
#

I'll probably try it tonight or tomorrow

buoyant wasp
#

like he was rewriting the inventory screen UI from scratch

#

so that you could add your own panels

pearl sentinel
#

Nice

buoyant wasp
#

i think boss rush's current version is using one of the early prototypes for it

pearl sentinel
#

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

buoyant wasp
#

it's pinned i think

#

753 posted a link

#

i know it compiles to unity .net 3.5

leaden hedge
#

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

vagrant leaf
#

should I try doing a lightbringer playthrough?

#

i just 100%ed the base game and i can't get enough of it

buoyant wasp
#

Lightbringer, Randomizer, Boss Rush, you have several good choices

solemn rivet
#

I like how you didn't mention Bonfire

#

because it is not a good choice

buoyant wasp
#

i would have

#

if it was in a working state

#

cause it is a good choice

#

blackmoth works though right?

buoyant obsidian
hazy sentinel
#

shitmodst is also a valid option

copper nacelle
#

H E L L M O D

buoyant obsidian
#

I recommend Hellmod for your 14th playthrough

copper nacelle
#

it's not that bad

#

spells aren't badly nerfed at all

vagrant leaf
#

wait what is hellmod

hazy sentinel
#

bad

vagrant leaf
#

thank you for the descriptive answer

copper nacelle
#

@vagrant leaf makes the game harder

vagrant leaf
#

how

hazy sentinel
#

makes you want to die

copper nacelle
#

gimme a sec, I've got it in a file

vagrant leaf
#

i already want to die

buoyant obsidian
#

Just play whatever mod you think has the best trailer

hazy sentinel
copper nacelle
#

pfft

#

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)
vagrant leaf
#

that sounds fantastic

copper nacelle
#

yay

#

my modding career is now successful

vagrant leaf
#

not really it looks terrifying

#

but also fantastic

#

maybe once i beat the entire game with glass soul

#

7 times

#

on steel sou l

copper nacelle
#

glass soul seems harder

hazy sentinel
#

not really

buoyant obsidian
#

Glass Steel maybe

copper nacelle
#

I should change it from 1/2 nail to 2x enemy health

#

like KDT said
then spells will die

vagrant leaf
#

what if i did that + glass soul + steel soul

#

would that be fun

copper nacelle
#

¯_(ツ)_/¯

#

maybe if you're fireb0rn

hazy sentinel
#

only one person has actually finished the game on regular glass steel

#

so

vagrant leaf
#

oh

#

taht

#

that

#

sounds

#

incredible

hazy sentinel
#

glass steel soul makes it so you have to do the entire game hitless

#

except dream bosses

#

though the radiance still kills you

copper nacelle
#

and the white palace still kills you

hazy sentinel
#

@buoyant obsidian you can't kill yourself in the birthplace cutscene even with glass soul pls fix

buoyant obsidian
#

never

copper nacelle
vagrant leaf
#

well i just started lightbringer

copper nacelle
#

nice

vagrant leaf
#

did someone buff the shit out of gruz mother

copper nacelle
#

lightbringer is fun

#

equip the glass soul charm

#

forever

#

quick tip

buoyant obsidian
#

Beware Gruz Mother

copper nacelle
#

gruz mother empress muzznik

vagrant leaf
#

what

#

why gruz mother

#

i mean

copper nacelle
#

memes

vagrant leaf
#

empress muzznik

copper nacelle
#

m e m e

vagrant leaf
#

do i have to get sly from the other side

copper nacelle
#

no

#

you can beat empress muzznik

buoyant obsidian
#

More or less yes

vagrant leaf
#

oh

buoyant obsidian
#

Empress Muzznik is a tough customer

copper nacelle
vagrant leaf
#

is that like half the charms in the game

#

or more

copper nacelle
#

all the charms

#

iirc

#

except glass soul

vagrant leaf
#

"you might just stand a chance"

copper nacelle
#

tbf I nearly died

#

but also no nail upgrades

vagrant leaf
#

wow ok

#

so near impossible

copper nacelle
#

no

buoyant obsidian
#

Not at all

vagrant leaf
#

what

copper nacelle
#

I didn't even use spells

buoyant obsidian
#

Usually by "You might just stand a chance" you can beat her

vagrant leaf
#

huh

#

okay

copper nacelle
#

it's called

#

spam descending dark

vagrant leaf
#

i guess i'll approach from the other side