#archived-modding-development
1 messages ยท Page 95 of 1
i noticed
but I didn't get the chevo for flower so I'm gonna edit my save to redo it
some day
Literally just get off the bench though
takes 50 years to activate imo
and then you have to wait through the noise
i mean it's not bad
but it's annoying
@compact sedge
geeze that's a giant save file what the heck
what is this
ur save but you have the flower in your inventory and grey mourner thinks you haven't done the quest
oh thanks I appreciate it but I already beat you to making it
ree

just add 99999 geo using HKSM imo
^
oh shit, I need to learn coroutines
because I was just trying to check if the game was paused to dim the bars
but with the game paused, it doesn't Update

Oh that makes sense but it's annnoying
I guess coroutines run according to timescale
They shouldn't
ok, good news
I got it to render under everything else
yay
but that broke the mod
^ bad news
Nice
lmfao
How did you even manage to change its size?
I didn't
canvas = CanvasUtil.CreateCanvas(RenderMode.WorldSpace, new Vector2(Screen.width, Screen.height));
just changed this boi
it was canvas = CanvasUtil.CreateCanvas(RenderMode.ScreenSpaceOverlay, new Vector2(Screen.width, Screen.height)); before
Nice
but now the whole world is screen-sized
so the bars get huge
but, at least, if I make the canvas in worldspace, it respects layering
while ScreenSpaceOverlay, well, overlays
I was gonna download gnu bash to prove you wrong about license naming conventions...
but they use a file called COPYING
@copper nacelle
nice
https://puu.sh/Ampm0/9cc1a1a76b.mp4 progress
wew
lmao
Probably was inteded to be 1.5 but computer was like "that is 1.482669"
that's too big of an error to be a computer rounding mistake
probably them dragging the slider in the editor as close to 1.5 as they could
That sounds more plausible
I don't wanna report it as a bug because if I do they'll probably nerf it so it's actually 1.5
don't report anything to TC ever
I reported pogoing off sleeping grimm because it's dumb
and doesn't affect gameplay
yeah. just like many other "bugs"
like moving the VS pickup until after you're behind the gate
huge "bug"
oh well
It's not really a mod per se, but i made a save file with the following conditions
@quick ravine was working on a glowing womb buff mod a loooooooooong time ago
Maybe they can help
At the very beginning of the game after the opening cutscenes
All charms are equipped mandatorily (Carefree Melody, Void Soul, Unbreakables) and Salubra's Blessing is obtained.
The Knight is permanently Overcharmed.
All notches have been obtained (just in case, i suppose.)
The game is in Steel Soul mode.
Do note that you will see the Grimmchild at level 1, and attack as if it were level 2. This is purely (or almost purely) aesthetic, as the attack itself does little to no damage.
Good luck ๐
so it's just glass soul, but you're OP
so a base HP of 2?
but you're permanently overcharmed
so you always take double damage anyway
and you can't unequip charms... i think.
yes
yeah. that's OP as fuck
if you've never seen what having all charms equipped does, sure
I hope it's not a silly question
ok but here's the problem, I need one mod to load before another
like, it can't physically load all mods at the exact same time. one has to go first
(so I can do a cutesy thing in the logs that I saw some minecraft mods doing.)
but seriously
I need one to load first because the other optionally depends on the first one
so I guess my question is how do mods like modcommon take priority over other mods and how can I set my own priorities?
nvm found it
public override int LoadPriority()
{
return x;
}
Hey seanpr, is there any way to determine order of running the Initialize() function other than namespace name?
I have mod X at a load priority of 1 and mod Y at a load priority of 2 but the order of Initialize() seems unaffected by this and only affected by namespace name.
IE the mod with LoadPriority 2 loads second only if its namespace comes after the mod with LoadPriority 1
That shouldn't be how it works
foreach (IMod mod in LoadedMods.OrderBy(x => x.LoadPriority()))
{
try
{
LoadMod(mod, false);
}
catch (Exception ex)
{
Errors.Add(string.Concat(mod.GetName(), ": FAILED TO LOAD! Check ModLog.txt."));
Logger.LogError("[API] - Error: " + ex);
}
}```
I'll make a test case real quick
Alright
ok nvm uh what I cleaned my solution and rebuilt and it fixed itself
Nice
I'm so confused the timestamps on the dlls indicate I didn't forget to do a build
and yet cleaning and rebuilding somehow fixes it?
Yeah idk
nvm sry
is non-global settings supposed to be per save?
IModSettings but the non global one
Yeah
huh it's not getting reset when I quit out of one save and load another
and I know I'm definitely doing something wrong
I know I'm late to respond to my ping, but I am still intending to make that glowing womb mod at some point. I just want to wait for all the content packs so I can figure out what I'm dealing with before diving in. I know basically what I want for the mod in terms of how it'll progress but other new charms may affect how I go about it.
Like Grim Child changed how I want to approach the mod pretty significantly.
Alright is this second save you're loading one that hasn't been loaded with the mod before?
I think I see the oversight here
If that is the case, that is
I load it with the mod and the default is whatever save 1 was not 0
It needs to always reset them on load, then try loading
savedata storage
is there a check if the setting exists?
in the save file I mean
string name = GetType().Name;
Log("Loading Mod Settings from Save.");
if (data?.modData != null && data.modData.ContainsKey(name))
{
Settings = new TSaveSettings();
Settings.SetSettings(data.modData[name]);
}```
So if there's no existing save data old data will carry over
is there a quit to main menu hook?
There's something similar to that but you shouldn't fix this in your mod
It's a problem with the API
I'm thinking an easy fix in my mod is:
on quit to main menu hook:
Settings.value = 0;
The best option for a quit to menu hook is just activeSceneChanged
Then check if it's "Menu_Title"
...Well I guess I'm glad I found a real bug in the API after finding a fake bug in the API.
Really the entire mod class needs to be reworked
It shouldn't be a generic, that makes no sense
[INFO]:[Infinite Grimm] Current damage record for this file is: 76
[INFO]:[Infinite Grimm] Please welcome Grimm to your world!
[INFO]:[Infinite Grimm] killed NKG? True killed grimm? True
[INFO]:[ModCommon] - Adding Settings to Save file
[INFO]:[InfiniteGrimmMod] - Adding Settings to Save file
[INFO]:[Infinite Grimm] Logging your damage record of 76!
[INFO]:[Infinite Grimm] Unloaded Dirtmouth
[INFO]:[Infinite Grimm] Unloaded Tent!
[INFO]:[Infinite Grimm] Unloaded Grimm!
[INFO]:GameLoading
[INFO]:[Infinite Grimm] Current damage record for this file is: 0
[INFO]:[Infinite Grimm] Please welcome Grimm to your world!
[INFO]:[Infinite Grimm] killed NKG? False killed grimm? False
Well using activeSceneChange fixed it.
this is after making a new save
unless it's only triggered by loading existing saves in which case I'm out of existing saves to test
Nah, new save would probably still cause the problem
Only time it's ever being reset is in LoadSettings
Which is hooked to the game loading
well thanks for the help, I managed to get a working test case for mod synergy.
Also while I'm here can I request a feature? Can we get an override for GetName() ?
Since you're tearing up Mod.cs anyway
Well not necessarily
Even if something should be done, it might not be worth breaking every existing mod
Yeah you can easily, I was referring to you saying "tearing up mod.cs"
Which I thought was in reference to me saying mod should be remade as not a generic
I was being mildly sardonic
But uh yeah would you kindly consider adding an override for GetName()?
I kinda wanna have spaces in my mod name
Yeah, I'll try to find all the spots that just do GetType().Name and change those in a bit
I can just make the default so it won't break anything
thank you so much
But yeah in c# only abstract methods are mandatory to override
Actually it looks like how it's set up now every mod already has a Name field
It's just readonly
Should be able to fix that by just encapsulating the field in a property
To allow only the mod to change it
Actually nevermind on that, allowing any time name changes is a terrible idea
But an override would allow the same so idk
Wow this is implemented incredibly poorly too
Almost nothing actually uses the name field, just GetType() everywhere
There's really only two reasons I want to change the name of my mod.
- so the [Mod Name] in modlog matches
- so the mod name in the top left matches
Yeah fair point, I'm thinking too much into this
The mods can all still have consistent internal names the same as before
Just change the logging
But now the question is what the cleanest way to transfer data into a base class is
Since Loggable is what controls the logging and that class has nothing to do with Mod
Other than that Mod inherits from it, at least
Actually that's pretty simple, this kind of situation is exactly what the protected keyword exists for
yeah internally the mod can be called whatever so long as it appears to people using it the way I want it to.
Oh I figured out why grimmchild has such an arbitrary attack speed value:
\----PFSM ---- RandomFloat (min) = 1.5
\----PFSM ---- RandomFloat (max) = 1.5
\----PFSM ---- RandomFloat (storeResult) = 1.482669
thanks playmakerFSM random number generator
Oh, that explains a bug I had in randomizer as well
I was giving object flings a "random" angle between 270 and 270
And it wasn't always straight down
The only Random I trust is the C# random
I don't even trust the Unity Engine one tbh
Yeah, no reason to use it ever
It just gets in the way because it's the same class name
Something I learned fairly recently though is C# lets you set up aliases to override ambiguous type errors
using Random = System.Random;
Ambiguous typing wouldn't be a problem if C# didn't encourage you to import so many namespaces
but that is smart if you're calling Random more than once
and want to distinguish between the two
I always end up doing the same for UnityEngine.Object in basically every file
unity actually tells you not to use their random number generator
and use system instead
Just use the random number gen in modcommon
It's backed by the mersenne twister algorithm
Plus you can make multiple sequence generators to keep global rng calls from polluting the rng on your important sequences.
If you're wondering about the quality of the MT RNG, it's good enough for our slot machines and their regulators around the world
The Mersenne Twister is a pseudorandom number generator (PRNG). It is by far the most widely used general-purpose PRNG. Its name derives from the fact that its period length is chosen to be a Mersenne prime.
The Mersenne Twister was developed in ...
.
out of curiosity, are custom levels possible with mods?
like totally custom architechture
not yet iirc
because that means shipping out the game with playmaker.dll which is like, the entirety of the game
or so i recall
KDT when's that level editor coming out?
there wont be one for hk 
tbh it'd be pretty easy to make levels
just load scenes into an asset bundle and load them
why has nobody made any 
I wonder why.......
I fixed the EnemyHPBar mod
it now includes the special hpbars for bosses
and doesn't overlay the bars over the screen, anymore, so you can pause etc.
what special bars for bosses?
artsy fartsy ones
I'll just download it and go fight some boss
I know I can't get any info out of Mickely
you've seen the enemy ones yeah?
they're that
more artsy
the KDT ones are a single gradient
the bosses bar is just KDT's
There's the usual enemy ones that are yellow and with those things from the Main Menu choice to each side of the HP Bar
I just merged the two mods, basically
with his permission, ofc
k. well your sentence made it sound like you updated the Ui of the boss ones too
shrugs
well, yeah, I did, because as it was before, the bosses had the same hpbars as the enemies
heh


i guess "special" to me were the enemy ones that y'all added
well at least I'm on the board
at least Ptkyr is right
was posted by someone in #speedrunning a few days ago
glad to be here
was by Vysuals
I agree on Mickely being in "Chaotic Good"
what
i woulda said chaotic neutral.
maybe
chaotic any% attempts
is it possible to mod/mess with a FsmGameObject in the same way you can a regular GameObject?
can't you FsmGameObject.value and do what you want?
probably let me try, thanks
sweet it's null.
/s
ok thanks for the help that sorta worked but it's gonna present a very annoying problem about how I need to go about modifying an object that's just loaded from the global object pool every time it's needed
I'll probably figure something out
well if you want to load a null gameobject you can just iterate through the transforms and then check the gameobject of that transform
that's what I do in berserkmod
because I need to get some references to some objects that don't always exist
if (furyParticle == null)
{
foreach (Transform transform in Object.FindObjectsOfType<Transform>())
{
if (!transform.gameObject.name.Contains("Fury Particle")) continue;
furyParticle = transform.gameObject;
Log($"Got fury particle effect {furyParticle}");
break;
}
}```
.
my theory is this. The game is calling SpawnObjectFromGlobalPool so my current plan is, on the very first time this is run (ideally forcing it early), capture the object it spawns. And then replace it with a different kind of spawn object function that lets me use the object I have captured as an input.
but that wouldn't be pooled 
tbf it will only need to be instigated the first time it occurs ever so it only needs to be reloaded on game reset and also I might just make a simple FSM that just runs SpawnObjectFromGlobalPool so I don't have to wait for the object to spawn naturally.
you'd probably need a reference to the prefab its spawning to do that
I was just gonna copy the SpawnObjectFromGlobalPool from another FSM so I can run it without changing that other FSM's state
and presumably that has all the references it needs
and if not then it's gonna be one headache to debug
well that shouldn't matter
the fsm you're trying to update should have a var thats being passed to spawnobjectfromglobalpool
so you should just be able to take that
ok
but tbh messing with the globalpool was a pain
when trying to get spells to be modified
wait hold up are you implying you can mess with the globalpool directly?
I was just gonna bypass it but if I can then that would make my life somewhat easier
yeah its just a class on gamemanger iirc
monomod runtime detour imo
does nightmare god grimm work on the current build?
I can't get it to work for some reason
no
no
you did.... by playing lifeblood 
lifeblood is best blood
huh modcommon has a function called... and I kid you not: "GetGameObjectFromSpawnObjectFromGlobalPoolInFSM"
Kerr made a lot of FSM helpers when he was working on the hornet thing
it's not really want I want but I just find it interesting that exists.
There's a function somewhere in there that you pass a struct and an fsm action to and it uses reflection to fill the struct with values of the same name/type from the fsmaction
um thanks I guess for letting me know that there exists somewhere in the world a function that does somewhat what I need to.
I just think it's cool
How do y'all find functions that do what you're trying to do? Besides just scrolling through the list of possible functions that VS presents you or copying other people's code.
tfw you google a playmaker function and get 0 results because it's playmaker
Pretty much yeah
for playmakerfsm functions, I inspect their definitions using VS and then dissect it using my own code
so for code like \----PFSM ---- PlayParticleEmitter(FsmGameObject, Fury Object) = Fury :: IsNone? = False \----PFSM ---- PlayParticleEmitter(GameObject, GameObject value) = Fury (UnityEngine.GameObject) \----PFSM ---- PlayParticleEmitter(String, GameObject value name) = Fury \----PFSM ---- PlayParticleEmitter(String, GameObject name) = Fury Object \----PFSM ---- PlayParticleEmitter(FsmInt, ) = 0 :: IsNone? = False
I get the object like I showed above and then furyParticle.GetComponent<ParticleSystem>().Play();
huh I just saw that vs can do that
yeah
you just need to unravel wtf the fsmactions are actually doing
after that, it's a matter of getting the resources to do it yourself
I see
Dnspy tbh
actually this isn't helpful at all but I see
dnspy
It shows the full class
oh
ok
I'll figure this stuff out later. It's all giving me a headache right now.
quick question just downloaded the HPbar mod, is it just for bosses or every enemy
which hpbar mod
one from the api mod installer in the pins
nvm got it working ,was clicking wrong button on the installer
Oh, @compact sedge if you want to extract data from an fsm action you can use the generic GetValueFromAction or GetDataFromAction (the struct one Sean was talking about).
From modcommon
nono I can get the data from the action just fine with my current code I'm just wondering if there's a better way to edit a game object in the global pool
other than copying it from the action and changing the action so it uses my object and not the object from the global pool
Nope. That's the best way
guess that's what I'll be doing then
Unless you want to make the object spawnable from other serialized data, like xml or json or binary or w/e, and load it at runtime
But that's a whole nother can of worms
Actually one I was making great progress on before I got my puppy
quick question which one do i use, the KDT-HPbar or Gradow,Hollow Nike +KDT HPbar?
latter
all of them
especially the assembly ones
that conflict with each other
especially the assembly ones that conflict with each other and are built for pre-grimm troupe versions of the game
imo find the lightbringer github link 753 posted, convert it to monomod hooks, then use it
and dnspy dreamshield co-op
new art mod but no new modder what is this imbalance
is there supposed to be one modder for every art mod ๐ค
yes
what
make things right
uhh lol read that as no more modders
I'm dungo
I wonder how many people have made HK mods total
i don't think there are any hk mods outside of this discord
at least
any well known ones
IDK how I'd find a HK mod outside this discord
google hk mods
that's what i did
found lightbringer
played that
then eventually saw a video w/ blackmoth
and then google prints out every single mod that is in this discord
which linked the discord
maybe I should put something on moddb since google lists that first
maybe lightbringer needs a lifeblood version
ree
does this even count as an hk mod http://helixmod.blogspot.com/2017/06/hollow-knight.html
it was on the first page of google
tbh i can't see any differences in the images
hold on let me get my microscope
because I can't either
oh if you look closely the butterflies have very slightly moved in the left image
amazing
so excluding that, I guess 13 people then.
13?
maybe 12 idk how to count
sean, kein, firezen, wyza, me, 753, kerr, gradow, kdt, kcghost, maxtcc
You, the other number person, kdt, kerr, whoever made unending dreams, gradow, hollow niko, seanpr, firzen, and wyza
well if some of these people made art then idk
niko made the art for enemy hp bars
like if we're counting modders imo don't count niko
if you're just counting contributors then count niko
ok so then 10, maybe 11 people
actually 10 since I think 0x0ade just made monomod which isn't HK specific
oh sorry what did kein do?
ahh ok makes sense
dmca
i wasn't active on the server when he was around
did TC really send y'all a DMCA
no
Kein DMCA'd his mods
weird
yeah
Yeah kein made Boss Rush and the original Debug mod
wait why would you send yourself a copyright infringement notice and not just... take it down
if it's your own mod
He sent it for us hosting it on the google drive
is this why most mods are open source now?
Because I think almost nobody here could actually send a DMCA notice if they wanted to
except, and I might be wrong, seanpr (but not on the modding API itself), maxtcc and maybe kcg, if idk they decided to for some silly reason.
seanpr's stuff is not open source, the source code is available on github and they're a nice person who lets other people use it but they still reserve all copyright to their mods and included source code and could send a legally valid DMCA if they wanted.
open source != free software
Really it is I just can't be bothered to put an open source license on it to be official about it
ok lol, thanks for the input on this I guess. I'm just saying you could technically decide to send a dmca if for whatever reason you wanted to.
I guess
But I won't
Also kein said shit in the iconoclasts server today
So he's alive at least
Well I'm glad he found a game he likes then I guess.
We'll see
if anyone wants the Lightbringer code I'll provide it but beware, it's pure garbage
shitmodst code when
I would never reveal the secrets behind my magnum opus
the code we've actually been waiting for
imo you already posted it
srsly everyone would prefer shitmodst source or shitmodst 2 over gng
they just cant admit it
If GNG comes out this month I might just be able to make Shitmodst 2
imo nothing you wrote in Lightbringer is worse than any of my code.
but that's super dependent on when I end up moving this summer
having 5 nested if statements /s
I've hidden 5 nested if statements using functions
iirc
well i did the hooks WITHOUT using other functions, so everything looks horrible
e.g
Also in my roguelike I have a 4x nested for loop
most of it is fine tho
like
i installed resharper
and it told me to wrap all of the lines
and make them ternary
The prefab stuff is super gay yeah
eww I don't wanna touch ? : ever
better than if else for all 50 of those imo
maybe
I don't even want to post my code it makes me sad
open source ez
it is but I know nobody reads source code anyway
experiencing other peoples shit code is what makes you a better modder
as long as you dont name each variable into
var1,var2,var3,var4 etc etc
why do you have 50 readonly variables tho
if you name variables like that just quit now :^)
or bool ifItsFalse; with those naming conventions
what's with that whitespace
idk
ain't nothing wrong with readonly variables
that's the one part I think is good code
that's just the stuff i got off the linked gdrive
remove whitespace they lower performance /s
Oh that's not whitespace issues
that's just the fact that the final line is so fucking long
lmao
Fine I'll post it since y'all have been so nice. Here's some code to scan for adjacent tiles of the same type and merge them into a vector of points https://github.com/natis1/oaksouls/blob/6879e9590f7b85f2b2153b16d2d1433237bbd3b8/src/level_gen_tools/stage2.cpp#L182 . Complete with useless variable names
big O notation is just a suggestion
so basically in essence if you know what these math words mean I have an R2 -> R1 graph (2d input space, 1d output space), and I'm trying to combine all points that have the same output value and are also adjacent to each other into a vector.
wouldn't 1d be a line
o
the input is 2d coordinates
wait so is this a top down tile base roguelikes
that's what I am trying to eventually build when I have the spare time
the big O is awful but it's ok because it's only building a 20x80 map
or that's what I tell myself
lol
Also two of the nested if statements are optimizing it so it runs faster, but in exchange the code looks worse
I need good code to look at to cleanse my brain
imo this looks nice
it's super readable
thank you
i bet rando 2's code is even nicer
wait theres a 2nd randomizer?
or is just that the enemy randomizer?
OHHH
did they rewrite shittons just for the sake of getting it working for lifeblood
i think so
(also considering GnG wont be too much about changing the internal stuff like lifeblood, hopefully it doesnt break even more mods)
meh I hope GnG gets delayed because they do change a lot of the internal stuff to make it easier to mod
i mean
less fsms and stuff would be great
but rewriting stuff is also annoying
worth it tho
GnG comes out and all objects in the game even unloaded ones from different scenes can be accessed and set active at any time.
And it's as simple as running GameObject.SetActive("Name")
and all the names for every object are available in a big text file with detailed comments about where they come from and what they do
then what
you gonna be sad then?
To make that happen all the enemy prefabs would have to be in an asset bundle and loaded at runtime
Which I don't see them doing
playmaker gets an update to make that happen without any work or reduced performance
what then
huh?
Too much work i guess
next playmaker update - it's gone! Yay
^
the only update that could actually be good imo
"We've switched entirely to using C# scripting directly for everything" - TC announcement
Basically no enemies would be placed in scenes, placeholders would be instead that loaded from the asset bundle (streamed in) I think is how it would have to change
So yeah, to much work
I mean
if
their usage of FSMs was minimal/sensible, there would be no issue
we can make do with a few fsms here and there
Which is why writing a system to create enemy game objects from serialization is the only realistic solution that removes the weird copy loading behavior
HealthManager was an fsm back then correct?
GnG comes out and you can add custom objects by just dropping them in a folder a la Kerbal Space Program, and they release a tool for easilly making them, which includes the ability to copy existing ones and modify them in any way.
yeah it was, ttacco
No fsms make altering stuff easier
But if you want loading of random resources that's the best you could get
I have a feeling Leth is listening on this convo
just looking through assembly-csharp, dont suppose anyone know where damage for stuff is kept? i wanna turn flukenest back into a 120 damage
you get hit instance and jsut modify it if the player has flukenest equipped right? or would that affect each fluke
new flukenest isn't fsm
oh?
Leth I will wait 3 years for GnG if by the end we get some real modding tools.
is it actually in the assembly?
so it is
The way it is right now, scenes are basically asset bundles, so if you load a scene then you can save a reference to the resource in it. The main difference with an asset bundle is that you can open them without loading everything in it
Kerr - can't you pool the inactive gameObjects using their transforms?
instead of loading each scene
I rewrote the randomizer because it was made like shit, not to get it to work on lifeblood
Could have updated the old one pretty easily, I imagine
wait what is burst in the spellfluke.cs supposed to be? the crest+fluke bomb?
no
is this the real reason why you use the fluke spell so much 56 because it's programmed in assembly?
seems to be the sequence for the flukes to explode
private void Burst()
{
if (!this.hasBursted)
{
base.StartCoroutine(this.BurstSequence());
}
this.hasBursted = true;
}
private IEnumerator BurstSequence()
{
if (this.meshRenderer)
{
this.meshRenderer.enabled = false;
}
if (this.body)
{
this.body.velocity = Vector2.zero;
this.body.angularVelocity = 0f;
this.body.isKinematic = true;
}
if (this.splatEffect)
{
this.splatEffect.SetActive(true);
}
this.splatSounds.SpawnAndPlayOneShot(this.audioPlayerPrefab, base.transform.position);
yield return new WaitForSeconds(1f);
base.gameObject.Recycle();
yield break;
}
so the expiration if they dont hit something?
well, it's set to true by default
Burst() is called twice
once after dealing damage
private void DoDamage(GameObject obj, int upwardRecursionAmount, bool burst = true)
{
//stuff
if (burst)
{
this.Burst();
}
}```
once after it's expired
private void Update()
{
if (this.hasBursted)
{
return;
}
if (!this.hasBounced)
{
Vector2 velocity = this.body.velocity;
float z = Mathf.Atan2(velocity.y, velocity.x) * 57.2957764f;
base.transform.localEulerAngles = new Vector3(0f, 0f, z);
}
if (Time.time >= this.lifeEndTime)
{
this.Burst();
}
}```
ahh i see i see
.
Coding conventions for everyone!)
And... Can I download update for HPbars now through crossroads or it's not avialable?
So Say I had a new computer and I wanted to transfer my current hk save to my new one, could someone PM me instructions on how to do so?
my apologies if this isnt the suitable chat to ask
save paths are in pinned, just copy them over
@steep sail it's not on the drive yet. I'll post it here in a few hours
Does anyone know of there's a version of Glass Soul for the current patch? The most recent version I can find is for 1.2.2.1.
yeah, i found out, the readme-file was in the hollow_knight_data folder not next to it like most other mods, mb
Current patch glass soul MOD is called "self discipline"
See? Lawful evil
tbh you can probably make that an api mod in 20 seconds lol
iirc it did have an api port at some point
it should just be
OnTakeDamageHook(){
return PlayerData.instance.maxhp;
}
assuming glass soul is still just die in one hit,
but it increases damage too based on extra hearts iirc ๐ค
but thats also only a line
does anybody have trouble with the charming mod?
because i just got a bluescreen when i hit an enemy

charming mod?
Dunno mate, might not even be the mod
true
Anyway, send modlog and outputlog
probably lack of resources. CPU or RAM
i probably overburdened it 
Send logs 
that i find where? im sorry, im not well versed in that
7/10 at best mick
don't you hate on my logs
One of them is in hollow_knight_data and the other one is in your saves folder
.
doot
I'm gonna ship you a giant escape key
no
this.playerData.nailDamage += this.playerData.health + this.playerData.healthBlue - 4;
public void TakeHealth(int amount)
{
this.health = 0;
}
There it is, glass soul.
so does hell mod make nail damage one and soul gain higher?
nail dmg reduced, take more dmg, soul gain greatly reduced
basically it's a hard mode
spell dmg reduced
thanks much
dream shield necessary buff
Thanks all for the help, although I can't seem to find the Self-Discipline mod. I would update the code, but I have no idea how to make an APK or access that stuff so if someone could link me to the current version that would be great. Otherwise I'll just do a normal run quitting out when taking damage.
That.... Is what the self discipline MOD is
You get hit, you quit
Aka... Self discipline
Ah. The joke was unclear in text format and flew over my head. I was under the impression the Glass Soul Mod had been rebranded since the last update. Thanks!
you get hit, delete save file
you get hit, wipe disk
Ah, thank you! Just for clarity, is this a pure '1 hit' file or does it include the damage amplification of the older version?
latter
Very cool, and much appreciated!
I have a question regarding the assets for the Gorb fight in Howling Cliffs. I've found the icons for his entry in the journal and his related battle and journal text, as well as the battle sound effects, but I don't know where to get the sprites that appear during battle. Does anyone know where I can find that?
unity studio
Yeah, I'm using that.
That's how I got the sound effects and journal stuff. He's named Aladar in there, for some reason.
Also, strange notes there.
so search aladar
and look for type: sprite
i can't remember if the sprite sheets had a different label. they might, but it should be pretty obvious
hmmmmm
gorb also seems to be named "brain-slug" when you look at the sprites in your left menu
.
Busy now, will look later. Thanks though.
Does anyone encountered problem with using Flukes on 1.3.1.5 with enabled Modding API and EnemyHPbars mod?
They doesn`t deal damage
against what
there's some enemies that fluke is bugged against
plus they super nerfed it
cg2
cg1
there might be others too b/c lifeblood
What does the hook mod do
I`ve encountered this versus Hollow Knight
how does the game check for how much health is lost?
wdym
well
does the game check for empty masks
because
someone mentioned that based on health lost there's a way to make you gain attack
wdym check for empty masks
there's a PlayerData health variable
and a maxHealth variable
I'm confused
sorry
so
amount of masks lost can be calculated as "maxHealth - PlayerHealth = Lost masks"
like that?
how does the game find out how many masks you have lost
I'm trying to understand how a buff based on amount of health lost works
oh
yeah
you just do
PlayerData.instance.maxHealth - PlayerData.instance.health
there's also PlayerData.instance.healthBlue
and a thing that buffs you based on lost health would be
Attack = Attack*(maxHealth - health)
or?
Ok
Attack = Attack + Attack*((maxHealth-health)/3)?
so this way
at max health your attack is the usual
That would stack
^
Anything is going to stack if it's based on current attack
isn't base attack stored somewhere?
so, nail damage alone isn't stored anywhere?
how does Fragile Strength function then?
Nail damage is controlled by an FSM on the player's nail slash
Your base damage is just the nailDamage int in PlayerData
Or something like that now I'm doubting that's what it's called
But anyway the FSM can be gotten with
HeroController.instance.gameObject.transform.Find("Attacks/Slash").GetComponent<PlayMakerFSM>()```
it's weird because the code that's easy for you to edit is hard for TC to edit and the code that's hard for you to edit is easy for TC to.
Oh, the duality of TC
newer version of the EnemyHPBars mod. Fixes layering issue, employs KDT's bars for bosses
Uuuuhh
@solemn rivet for some reason I can't extract it
says "Unknown Format or Damaged"
why does everything I want to mod need to be stored? I can't do that 
need to be stored?
Well
you said the attack needs to be kept as a different thing so it won't stack
Nil length as well
Anyone else having that issue?
I'll try redownloading it
why can't you store it tho
here
@copper nacelle I haven't worked with C#... or anything outside some small HTML stuff for that matter. Shortly - I understand not how to do it...
reeeeeee
sorry
just use the after save load hook or any other hook that'd work
make a class variable called attack or whatever
and set it in the hook
try this
newtonsoft?
wut
where?
in the folder along the mod
it may have been from somewhere else, as I stored a few (2-3) other mods there as well
but I hadn't noticed it before downloading this one
I just installed randomizer, can someone explain all this to me?
what don't you understand
that seems pretty self explanatory
you have to beat all bosses
shade skip = skips with your shade i.e. shade skip
acid skips are skips that involve crystal dashing over acid
spike tunnels are stuff like getting into ismas from the giant elevator
misc skip is other stuff
fireball skips is skips involving pushback from fireballs
mag skips are dumb practically tas only strats
QoL
salubra notches = you auto get charms notches when you have the required charms to buy them
lemm sell all = you sell all relics if you talk to lemm from right side iirc
restrictions are new afaik
probably just doesn't let you into black egg until you fulfil the criteria listed
sure buddy, whatever you say
any examples of a mag skip?
Getting to isma's tear with only dash+fireball+dash master, is one of them https://www.youtube.com/watch?v=NagPZS01w1E&index=42&list=UUxGk4EHg09dlIp1QlQjS_GQ
oh I thought that was considered a fireball skip
nah, but i'd imagine it would count as a tunnel skip + fireball skip if the final part with the puffers weren't as bad.
what actually activates those puffers?
which puffers?
I know that the Royal Waterways ones
get activated
by
ummm...
everything
any form of interaction with another entity activates them
the fireball iirc
it kills one and that causes the other ones to puff?
itemless thorns is a mag skip
I'm glad randomizer lets you play without having to do all these skips now.
and the shape of unn skip too
I'm pretty sure mag skips weren't part of the old rando, even in Hard
is shape of unn skip really a mag skip?
might just be an acid skip
damn this seems pretty hard, don't recall ever having to do that
itemless thorns is by far the hardest one
don't think anyone has done it real time
mag took several attempts to get it at 0.1x speed lol
considering there's only 1 item there, and also considering the requirements to get there the only real reason to go there is if it's cdash
and even then there's the possibility of just getting ismas
same goes with that shade skip to ancient basin
the only reason to go there is because of the lack of cdash
since you can't finish the game any% nmg without it
and as dash and doublejump are interchangeable in use, uhhhh
there's a way to skip cdash, if you have fireball + shade cloak + dashmaster + spell twister
and sharp shadow and double jump
i was like "wait what really"
but yeah with dash and doublejump i can see it being doable...
but even then, you can get either use cdash or ismas
whens the update that lets us pogo off acid
because the only real need for cdash is in the teacher's archives, yeah?
so cdash and ismas can be used interchangeably in any% nmg
theres very few uses besides acid skips for cdash either way
theres like ddark and a djump
yeah... but i'm trying to figure out reasoning for doing specific skips to get somewhere
doing tough-as-nails combos when lacking two or more essential items for one (probably) essential item doesn't add up to me
It's all about sequence breaking the logic, unless you're on mag difficulty
since you can probably do the skip required much easier with the other missing essential items
Gaining the upper hand if you're doing a race
even if it's a race, there's very few items that require you to jump through such loopholes with such a specific set of items
like, as if there's absolutely no other option to get there
and even then i doubt that
let's say, for example, that you need to get to ismas tear for dreamnail
worst case scenario
because that thing is 100% needed to finish the game
true, but there can be situations where you have claw and dreamnail after the first 20 minutes, the logic intends you to get shade cloak to get djump to get cdash, and isma's happens to be at glowing womb
you have the option to do the skip you just described
or get fireball + cdash, or even ismas tear itself
So you could be good to go after 30 minutes, or follow the logic and be able to complete the game after 1:10
which basically nullifies the challenge required
and even if one of those essential items is also locked behind a mag skip, you still have the other option left
it's not very likely, but doing that one hard skip doesn't take that long if you can do it
this can be reasoned all the way back to the essentials where it definitely requires you to jump through such hoops
but if it's not either mantis claw or dreamnail i doubt there would be use for such skips
only, and only if both of those are locked behind mag skips, and the ways to "cheese" them are locked behind insane ways to get them, are they relevant
but i'd like to hear your opinion on that, really
wow i can't believe mys murdered #archived-modding-development
so djump is required for cdash
hm
also if you have claw and dreamnail, isn't getting dash and fireball enough to get to ismas
mag skips would never be 100% necessary, unless you're playing with mag skips on, of course there would be a way around it but I think we're looking at it from two different perspectives, I'm interested in knowing that you could theoretically finish a seed much faster than otherwise by doing a mag skip, not that you have to do them to progress
you'd need double jump as well for isma's
The logic will always ensure that you never have to do a mag skip if you didn't enable them, but that doesn't mean that you can't do them if you're tenacious enough, and you might get rewarded for it.
yeah, but there's a chance
could also get another damn charm
idk if the chance will pay out considering you just need 4 items to finish the game
5 if nmg
most likely doesn't, but you never know ๐คท
plus the skips themselves are fun to execute imo, so i don't mind doing them when i get the chance
i mean don't let my boring ass logic ruin your fun then!
Logic is meant to be broken 
that's the main creed of speedrunning all right
I have a question about the SpriteDump mod. When I press F10, the game doesn't dump any sprites anywhere. It just starts stuttering. I don't think I have any read/write permissions disabled, so I don't know what's going on.
have you checked the place where it should be dumping sprites
It doesnโt generate the folder.
where is the folder supposed to be?
that should be accessable by non-admin
I thought so too, but maybe the stuttering is the game trying to do something and failing.
Iโll be away from my computer for about 30 minutes, so Iโll try again then.
the lag is it rendering a 2048x2048 texture to a render texture, copying every byte back to a sprite, converting that to a png, hashing that so it doesn't dump sprites multiple times and then saving it ๐ค
Whatever it was, verifying the game files and reinstalling things worked.
So... I beat the path of pain and want to do it again (Im one of the few people who actully ENJOYED the PoP)
But it appears as if it is locked away after you beat it
Is there a way to get it back?
you can noclip through the wall
How do you get a noclip cheat?
there is, in the pins, the modding api
if you install that with a mod called Debug Mod
you can select in the nicely created menu "noclip"
and clip right through the wall
if you need instructions on how to install it, there is a step by step guide in the pins too
be sure to get the right version!
Thank you! ๐
Im %100 going to go for a PoP hitless run now XD
AFTERRR ALOT OF PRACTICE XD
good luck!
TY ๐
My friend wants to play MC for a bit but I will do the PoP hitless practice soon xD
Bye ๐
And TY! ๐
๐
make a hollow knight minecraft mod
_pleaseban @scenic slate
and that suggestion wasn't one of them
@rain cedar Lemm still bugged in Randomizer?
I'm not putting items in his shop
So kinda no
Haven't fixed the underlying issue, just working around it
okay just cause Sharp Shadow was in there in the most recent version
so i wasn't sure if that happening was intentional
wait did i forget to update
i downloaded it
now i gotta make sure i actually put it in the folder
oh FUCK scratch that i just forgot to put the dll in the folder
lmao
Is there an FSM State Action to spawn an arbitrary object that I can add to an FSM state?
wait, can I just add any function under the sun to an FSM state? (needs to be an FSM State Action)
I'm trying to take a state containing a SpawnObjectFromGlobalPool and have it instead spawn an object I have stored.
Can't you just take the game object reference in that action and set it to your own game object
things that didn't work:
given GameObject obj and SpawnObjectFromGlobalPool[] spawnObjs
spawnObjs[0].storeObject = obj
spawnObjs[0].gameObject = obj
neither worked
Sometimes another fsm action will set the variable on other actions
What other actions are on the state
GameObjectIsNull, FaceObject, Tk2dPlayAnimationWithEvents, and DecelerateV2 are all run before that action on that state.
Yeah those won't set anything
Did you check the action to see which variable has the prefab it spawns
hold up let me look at the other dump I have
wow ok that dump doesn't seem that helpful nvm
or at least idk what I'm supposed to be looking for
The name of a prefab that it spawns
is that of type GameObject?
A prefab is a game object that typically exists in Resources and not in the scene
ahh yeah
I know the name and it's not set in a variable just set there as part of the action.
I think
Try doing a Resources.FindObjectsOfTypeAll
With UnityEngine.Object for the generic type
ok
do I need to run this after the object is spawned?



