#archived-modding-development
1 messages Β· Page 90 of 1
if hollow knight supports steam controller at all you can make any controller work
it doesnt?
through steams controller configs
jhoy2key works
the only functiuon i dont have is presing right joystick down to look down
because that cant be bound to a keyboard button in game
Alright I have the first version I think probably works. It worked for me in testing. I just uploaded it to github if anyone with more skill wants to test it. Please make a backup of your saves first because I don't trust my own coding abilities at all. https://github.com/natis1/infinitegrimm
lmao
One of the first lines I added and still haven't removed it
also the way I do the balloon attack is really hacky
wait what's the difference between killed and defeated grimm
ahh the usual "//Dont know if this fucking works but im keeping it incase something might need it later""
comments
defeated triggers on any grimm ending
but killed only triggers when you kill the NKG
and don't cast out the troupe
because it'd be weird to fight grimm after casting out the troupe
because I'm not sure if there's anything that happens after you kill nkg but before the defeated condition gets triggered
and I just wanted to be safe
I'll clean this stuff up later tbh
it's very messy but I wanted to upload it because I got it to work
cool
Ooh, graig is doing a 107%+PoP run
whats pop
path of pain
it's a fizzy drink
dunno what that is
@compact sedge did you just compile w/ mono?
yeah ok I can explain
did you reboot every time you tested it
I made a VM just to write this mod. The vm had access to my hollow knight folder through samba. I did this because there's a lot of unity tools that are windows only
lmao
my windows machine CAN run hollow knight but there's no GPU drivers so the way it runs it is through wine dx9 to translate to openGL and then through mesa software rendering
and I get about 9 fps
doesn't kvm have passthrough for folders
that way
lul
yes but samba works better and is easier to setup
tbh would've thought it would be annoyingly slow
I have the hollow knight folder mods folder mounted and visual studio has a symlink to compile right to there
also I already found a bug so uh yay me I guess
lol
uhh she disappears after taking 500 damage :p
Just got my controller so I was able to find that
grimm girl mod confirmed
Well it*'s supposed to use the Balloon attack every 500 damage but I think I put it in an invalid state.
I just give everything a random gender sometimes because English is really bad about neutral pronouns
what about they π€
Berserk mod is so cool
but there appears to be a damage buff
and at the same time Debug mod shows that I'm dealing 21 damage per hit
what?
also
because of the berserk I died psot-beating Grimm
I can't leave
help
maybe fix that
if you "die" - your HP is set to 0 because of the Berserk you can't leave boss rooms
Kek
It's a multiplier to all damage dealt, so debug prolly won't see that
Also, I don't get what you mean by "can't leave boss rooms"
Is the timer too short?
I can make the berserk toggable on demand instead of using a charm
Or I can make it more similar to A2's in that the timer stops draining if you have only 1 health
ok, back
took long enough, sorry
so, doors unlock after you beat the boss
but also don't unlock at all if you're dead - your health = 0
so, tested it on Grimm
Double Grimm actually
And beat both without much problem
but I was left with like 1 health at the last hit
so, during the talking with the Grimm NPC
my health fell an extra 1 - it's now 0 but because of the Mod I'm not dead
so you're stuck - the boss is dead and you can't leave by dying
and the room is fully locked down and you can't leave normally
quit out
I have debug mod, I just NoClipped away
but
it's still a problem if you wanna use the mod around
the same will happen with every area that locks itself
you either need to beat it and have enough remaining health to continue (which shouldn't be a problem most of the time, but then again - Grimm and Hornet #2 require talking with them to unlock the room ) or quit and come back
now that I mention Hornet
there was a buffed Hornet mod, wasn't there?
is it finished?
can I find it somewhere?
no
it's not finished?
that's reasonable
but the rest, regarding the dead state not allowing you to escape
wait - why does the mod make you not die if you have 0 hp?
anyway, that seems easy enough to fix
did you like it being a charm - or would you rather it was always on?
they get 0 hp in a convo and get softlocked
you can't die from the charm alone
you stay on a -1 healh thing with a single health on top of the Soul bar
I somehwat like it being a charm
but can you apply the code to FoTF
it seems more fitting
that's all for now
but it's hiveblood because hiveblood
I really like the mod
@copper nacelle it uses Lifeblood's health changing thing as a main mechanic
wow it's almost like that's why it uses hiveblood
I can make fotf have the effect, sure
but hiveblood won't work anyway
I can make hiveblood work
but there's no point to it
because the two don't really work well together
yup
ez free damage
make Hiveblood... hmmm
you need to equip them both tho
well, equpiing them both negates the effect
and if people insist on me keeping berserk and hiveblood
I'm gonna make berserk cost 7 notches
just to be mean
lmao
For sucha strong buff it doesn't seem unreasonable for it to cost like 5
you melt enemies' health
I'm still working on balancing tho
how much should the multiplier be and how fast should the health drain
yeah, I'll make it stop at 1 health
so fotf but better?
I'll also add a check if the player can control the knight
once again, I can make it also drain your soul once your health is depleted
just to be meanΒ²
so you can't heal once you're at 1 HP
spells seem to be VERY buffed too
yeah, multiplier is applied to everything
does it use hitinstance?
yup
2 Abyss Shrieks got me down through 1/4-1/3 of Grimm's Health
eh
So, maybe do something about Soul
hitinstances happen multiple times per frame, but the multiplier doesn't stack, so it should be fine
do you just apply the multiplier and it doesn't stack?
because that's how charms affect damage tbf
or do you apply 1/4th of the multiplier or whatever
fotf, for instance, has hit.damageDealt = naildamage and hit.multiplier = 1.75f
same goes for fStrength
and shaman
shaman?
oopsie
Maybe make BerserkCharm use thrice the soul for healing/spells
(mentioning Spell Twister)
or something
well, the original idea was to mimic A2's berserk mode
because spells that are OP anyways become stupidly powerful with the charm
I'll make the health drain faster then
Ok
10
.5
make it every 3
every 3 or 5 seconds sounds good
her health drains in 5 seconds
Ok
that's what the knight gets
every 5 seconds
jk
I mean, her full health drains in 5 seconds
I'll surely add that if I can make the mod tied to a button press
so you can activate it only when you need it
imo do full health in 5 sec
regardless of whether or not it becomes a button press
then the game becomes impossible, 56
make a charm that kills you every time you equip it/ do a mandatory for gameplay action - press left
yeah
you have a point
but, then
how is that different from a mod that simply gives you 1hp?
it turns into Glass Soul
yeah
so
I'm trying to check for the controlRelinquished bool - which I know exisits because I've used it before
but vs won't auto-complete
and I'm like wtf
private?
tf
lmao
their damageReceived method is also called damageRecieved, so there's that
yup
because tc good spell
why?
I'd love to know why
help
u ded
Black squared left and right
omae wa mou shindeiru
ok... How do I get it to trigger on button press?
uhhh
I'm still trying to figure out how to make my own bindings
public void LoadKeyboardSettings()
{
this.LoadEnum<Key>("KeyJump", ref this.jumpKey, Key.Z);
this.LoadEnum<Key>("KeyAttack", ref this.attackKey, Key.X);
this.LoadEnum<Key>("KeyDash", ref this.dashKey, Key.C);
this.LoadEnum<Key>("KeyCast", ref this.castKey, Key.A);
this.LoadEnum<Key>("KeySupDash", ref this.superDashKey, Key.S);
this.LoadEnum<Key>("KeyDreamnail", ref this.dreamNailKey, Key.D);
this.LoadEnum<Key>("KeyQuickMap", ref this.quickMapKey, Key.Tab);
this.LoadEnum<Key>("KeyQuickCast", ref this.quickCastKey, Key.F);
this.LoadEnum<Key>("KeyInventory", ref this.inventoryKey, Key.I);
this.LoadEnum<Key>("KeyUp", ref this.upKey, Key.UpArrow);
this.LoadEnum<Key>("KeyDown", ref this.downKey, Key.DownArrow);
this.LoadEnum<Key>("KeyLeft", ref this.leftKey, Key.LeftArrow);
this.LoadEnum<Key>("KeyRight", ref this.rightKey, Key.RightArrow);
}```seems pretty straightforward for kb
but for gamepads...
public bool LoadGamepadSettings(GamepadType gamepadType)
{
if (gamepadType != GamepadType.NONE)
{
string key = "Controller" + gamepadType.ToString();
string empty = string.Empty;
if (this.LoadString(key, ref empty, string.Empty))
{
this.controllerMapping = JsonUtility.FromJson<ControllerMapping>(empty);
return true;
}
}
return false;
}```
uh that reminds me, my gamepad doesn't work in hollow knight when I use the mod api.
I have to have the gamepad send out keyboard keys for it to work
instead of emulating an xbox controller
might just be an OS thing
but I wonder what about gamepad functionality was changed by the mod api to break it for me
I'll test it in my vm to see if so
well, I've gotta leave in a few
if anyone has any suggestions of how to implement key bindings, please send me a DM
does the modding api work on the beta
ok, just before I go, here's a tentative compilation that should prevent health from draining below 1HP and while talking/stuff
everything else was kept the same
@copper nacelle I've just pushed a change to HookGen that could break future mods. Please pass --private before the input assembly path
this allows you to keep hooking private methods and methods in private classes
they're now hidden by default to prevent clutter
ok
If anything breaks down, please ping me immediately
alright
You sound like you're from the fbi
Sorry π It's just that I'm worried about existing mods breaking
trying to install enemey randomizer but failing to load 
oh wait no lol
installer pls
Oh, 56. I think I figured out those out of memory crashes.
Next one we get, see if they're using a laptop or have an nvidia (if I'm not around)
Bc someone had a problem and output log said they were using integrated graphics
Looked into it, and there's some issue with unity games where the game will not use their dedicated card
Unless you set it to in the nvidia control panel
um where do u download modcommon xd
So with the integrated card you hit a graphics memory issue
you download the installer and press the install button right next to the word modcommon
p l e a s e
Also the person likely is playing with shit settings and has no idea why
Should be
it is Im just stupid
Mod Idea for enemy randomizer, charm randomizer and lock. You could have a chaos mode where charm setup changes every transition, a mode where it changes once (like room mode) and a mode where its set when you start the game.
but it's an enemy randomizer
Well i was thinling the code that does the randomizing could easily be tied into charms
thinking
Just make it configurable
a lot of people use wasd
S is superdash for me
hold alt then press f4 
alt + sysrq + b . b is for berserk
sysrq more like i still need to enable that
I have no idea how to do that
I mean, I probably can work out how to make a rebindable action
but how do I give that option to the player?
menu
menu actual pain
i looked at the api code
and then at kerr's code
then gave up
for now I'll bind it to L3+R3 on controller
for now I'll bind it to "End" on kb
just to kek
so, umm
anyone got experience with unity controls?
berserkToggle.berserkL.AddDefaultBinding(InputControlType.LeftStickButton);
berserkToggle.berserkR.AddDefaultBinding(InputControlType.RightStickButton);
berserkToggle.berserkKb.AddDefaultBinding(Key.End);```
these basically work
but sometimes, the game just randomly doesn't get the input
I thought that maybe I wasn't pressing L3+R3 quickly enough
but even when I bound it to End, it sometimes skips the trigger completely
maybe it's because I'm checking for button presses on Fixed Update?
probably
Yup that was it
fixed update gets called a lot
but like inbetween and during frames
pretty much whenever the engine can
and that probably messes with input polling
Having trouble setting up an input field
Seems like all it does is break mouse events for whichever menu I put it in
No errors in the setup, though
Not really something I care enough to look into
I want to take screenshots of places without the blur
that's why I'm asking
if anyone knows tell me
I bet the blur is hiding low res textures
so it's an engine thing?
I don't really care all that much I wanna see crystal clear Backgrounds
is there an ng+ mod :u
basically it's a mod that buffs enemies and nerfs (You)
oh
that's not what i was looking for
i just wanted to play the game from the beginning but with all the stuff
there's lots of fun
Use a save editor
watch a shovel knight ng+ run it's super fun
a save editor that can say "yo you collected everything" but not modify too many other things?
oh okay
uh
the only save editor i know how to use is shitty
and/or json conversion which i tried, but kingsoul bugs out
π
i don't see a save editor in pins
Look harder, then
i looked it over three times.
Well you'll just have to make do, then
_>
inb4 "doesn't look as good as Crossroads"
i don't get paid enough to write fancy looking guis
It's no wonder you don't get paid much with that attitude
its a self fulfilling prophecy, i don't get paid enough to make good guis, and I don't have good enough guis to get paid enough FeelsBadMan
a vicious cycle indeed, and when you do make something nice for free people will still complain
just because they do
ugh I can't believe your save manager wasn't written in Unity 0/10
worst save manager ever
I want a full refund
question, having 2 classes in a single namespace is ok right? ie:
public class Class1 : MonoBehavior{
}
public class Class2 : Mod{
}
right?
just making sure
yes
All my classes were in the same namespace and nothing broke so I'm gonna say yes
weird, my monobehavior class cant seem to register or see my void Update/Start/etc, probably should look into more of this, thanks anyway
Did you do: GameManager.instance.gameObject.AddComponent<Class1>()
This needs to be somewhere in your class that extends Mod
well my main mod is working, but i made a 2nd class because i need it to get hooked to MonoBehaviour instead so i can use Update()
well whatever im gonna try it anyway
alright there we go, i added it to my main mods initialization method
thanks again
you don't need to do that btw
theres a hook for update iirc
so you can just call stuff everyframe without attaching a monobehaviour script to a gameobject
well im using your text stuff that you showed me last time to test the canvas stuff, unless theres another update hook other than HeroUpdateHook then using it seems to dissappear mid game, i should check the modding hooks again
HeroUpdateHook should be sufficient
aight ill test with that one again, see if it doesnt dissapear for some reason this time
DontDestroyOnLoad(canvas)
HeroUpdate should be called only when you have in control of the knight yes?
as in youre actually in game
Ahh ok ok thats what im looking for ty
yeah it won't disable if you lose control i.e. from a cutscene
but it won't run in the main menu
im guessing the controller object is only created once in game hence it works like that?
pretty much
alright it worked, thanks again
is the co-op dream sheild mod a virus?
no its just complicated to install
the creator of that mod is even on this server if i am correct
so, now that berserk mode is tied to keypress, I can keep it as a charm, or make it simply "always available"
any ideas?
does it provide damage boosts while its active?
yup
now it works exactly like A2's
you can trigger it on command
and it'll quickly drain your health
but double your damage
like, very quickly
1 mask/second
well shit the mod im doing is kinda similar, oh well
i guess 1 mask for a huge damage output is a fair trade off
do you tend to one hit stuff at that point?
once you hit 1 health the berserk mode is disabled
the idea is to toggle it only when you need a high damage output (like, a boss is staggered)
and disable it after
you didnt fiddle with the soul stuff?
no
I thought adding the option to toggle it on/off whenever you want would fix most issues
like dying after bosses and stuff
nail damages per upgrade stays the same?
did you change if the player says, use jonis, tho tbh its their lost to begin with cuz they wont be healing the lost health
other than that i think the double damage per 1 mask is a good enough punishment imo
I might make you also take double damage while it's active
high risk high reward eh?
so it becomes a real risk
yeah
because otherwise it's just straight up trading "you now have 1HP in exchange for dealing 2x damage for a while"
shit man i hope it doesnt look like as if im stealing your idea or anything, i was pondering of doing something similar for a while now lmao
but yeah i think the balance counter measures is good enough
oh wait nvm i thought berserk fotf 1 mask runs would be a thing, you did say it gets disabled afterwards you reach 1 mask
yeah
well, I did this mod for a friend that makes you always have 1 HP, so you can equip FOTF and go wild, but that's basically glass soul tbh
what's your mod about?
and don't worry
I just recently got this idea after discussing it here with some other people
about adding A2 as a playable character
oh no i was just scared itll be similar to plagarism, nothing much tbh, you start out with half damage and have a rage meter that fills in every time you successfully hit, but it drains slowly after every second, once you do reach 100%, you have 5 secs of doing full damage and your attack speed is all set to 0.01, the fastest possible i think, which what i was also thinking of "what if i receive double damage during rage phase"
so basically kinda similar to the entire "high risk high reward" bs etc etc
nah, they are intrinsically different, as far as I'm concerned
good to know, dont want to look like im copying or anything
mine is more like a "fury of the gods/titans/sparta" from GOW
might I suggest that if you keep up the combo, the bar keeps on filling?
yeah, I had screwed up and it was actually 3.5x instead of 2
I killed some of the tanliest enemies in like 2 minites
Yeah
And FoTF's damage boost is?
1.5 or 1.75?
I might actually do that, thanks for the suggestion, yeah just didnt want to look like its unoriginal lmao
I'd set it to multiply damage by 2 in one place and by 1.75 in another
fotf is 1.75
Mhm
you can do that - at least as it is rn
to prevent that, I'm gonna add a "charge up"
that takes like 1, maybe 2 seconds
and
if you let your health drain all the way down to 1, I'll make it so you have to do the slow walk
The same as in Dirtmouth?
Becayse that one has a different animation
What changes sword reach?
Like Long Nail and Mark of Pride
Is there a certain thing noting how long your nail is?
if (this.mantis && this.longnail)
{
base.transform.localScale = new Vector3(this.scale.x * 1.4f, this.scale.y * 1.4f, this.scale.z);
this.anim.Play(this.animName + " M");
}
else if (this.mantis)
{
base.transform.localScale = new Vector3(this.scale.x * 1.25f, this.scale.y * 1.25f, this.scale.z);
this.anim.Play(this.animName + " M");
}
else if (this.longnail)
{
base.transform.localScale = new Vector3(this.scale.x * 1.15f, this.scale.y * 1.15f, this.scale.z);
this.anim.Play(this.animName);
}
else
{
base.transform.localScale = this.scale;
this.anim.Play(this.animName);
}```
This.mantis is Mark of Pride?
yup
Can a mod be made that sets this.longnail's length (should be the x, right?) to this.scale.x * 5.00f
I'll be on my phone for quite a bit and most things won't work through it
I'll check it out when I get home
(Wait, the link is?)
oh, no
I meant that if you want to do that mod yourself, it wouldn't be too hard because there are conveniently placed tools
And that Hook is for?
(By the way, thanks for the explanation, you're being really nice)
for setting the nail's properties, including its size
The Berserk one I mean
np!
Folding papers, were you the other one with the enemy randomizer memory crash?
Yeah
Because
The 32 bit windows
(Probably)
@solemn rivet can you please send where I can find the Hook, I decided that I'll try and save it on my phone first and computer after that
@pearl sentinel And? Can it be fixed?
Or do I just change the windows to 64 bit?
Hmmm
And are you on a laptop?
I can't check right now, I'm on mu phone
But based on memory
When right clicking on the wallpaper screen
And what resolution were you playing at?
There was an "NVidia" thing
I'm on an typical computer, not a laptop
Resilution is set to 1280x720
Ok, but of nvidia there might still be hope
I'm all earsπ
Next time you can try and crash it, post the output_log.txt file here and what kind of video card you have
I mean - is there hope if he's running win 86x?
yeah, 32-bit does that
I gotta get ready for work, but the short of it is that it's likely an issue with unity games and nvidia cards
I'll try
But I need to see the output_log.txt to know for sure
I do know tho
The fix is to change a setting in nvidia control panel
That game crashes because of memory issies when I try enter the Final Boss room
I'll make sure when I get home
Yeah this would also effect the normal game
@solemn rivet so, where can I find the Hook, I'll try making a copy on my Google Drive
From my phone
that's... Not how it works
you'll need to create a new solution in VS which references the modding api
and then you can use the hook
I meant this
Is there anything here?
(sorry for not understanding)
np!
Ok
go File >> New Project >> Class Library
ok!
so, turns out that each health amount is its own separate game object
_GameCameras\HudCamera\Hud Canvas\Health\Health 11
no, it simply destroys the previous object and instantiates the new one
installing is taking quite long for some reason
sorry for the wait
Meanwhile, does Quickslash function the same way?
if (this.Quickslash)
AttackSpeedSomthing * 0.8
not quite
no, it just reduces the cooldown between attacks and ups the animation speed
I have an empty solution open
sorry for taking so long
something happened and I don't know what
np
so, first, you need to add the modding api as a reference
go to project>>add reference
and select the modding api
I can't find Class Library for some reason
the Folder is empty
lemme check if it's the right folder
the Installed Folder is completely empty
yup
Ok, done
ok
so now you need to take a look at some of the existing mods on github to figure out the basic structure
There's a massive list of things here
Achievement
Achievement Handles
...
AttackTypes
...
umm
I don't touch any of it
where exactly are you seeing that?
To the left, when I opened to see what's inside the Assembly-CSharp thing
the main things you need to worry about now is to make sure you're using Modding; and that you have a functional Initialize
(I found an ExampleMod thing)
great!
yup
so, to do what you wanted, you're going to have to hook to NailSlash
like I said, that hook already exists
should be something like ModHooks.instance.NailSlashHook or something
Wait, I'm still going through the example mod
and just to be sure I search for the ModHooks.instance.NailSlashHook where?
inside the initialize method
ModHooks.Instance.SlashHitHook this is the correct hook name
Boopmod uses it iirc
Ok
but I'm sure people in here will be able to help you
how you holding up Folding?
god, I hate these fsms
I keep trying to play some charge up animations for the berserk effect
but the fsm for the charms which I'm grabbing the animations from have a check that instantly disable the animations
ffs
f

Just get rid of the fsm tbh
but then I'd have to rewrite the whole charm into code
which I actually plan on doing at some point
but I don't really have the time rn
no, I'm tring to grab the thorn animation
Embed the sprites and play the animation yourself
I'm doing that, literally that
but the charm's fsm checks every frame
"is the charm equipped? No, then don't play that animation"
The fsm shouldn't matter if you're handling the animation yourself
here's me trying to play the charge up animation for the SD:
knightAnimator.Play("SD Charge Ground");
knightAnimator.PlayFromFrame(0);```
where knightAnimator is the tk2dSpriteAnimator component for the Knight gameobject
and I've checked, it does have that clip in its library
Clip name: SD Charge Ground
one of the lines of csharp foreach (var clip in knightAnimator.Library.clips) { Log($"Clip name: {clip.name}"); }
same thing for the thorn: Clip name: Thorn Attack
I'll try killing the respective fsms and see what happens
Probably will break other things
just to check if that's really it tho
because if it is... I'm gonna have to cache the animation and instantiate it in my own gameobject
which is feasible, but
irk
well, shit, it's not working
weird thing is, it starts playing if I press it while sitting on a bench
but does nothing if I'm walking/standing still
There is probably something forcing it back to idle/walk anim
You can use monomod hooks to add logs into the animator
So you know better what is happening
oh, that's good to know
it makes sense too, because while you're sat, relinquishedControl is true
Worth a try
ok, last try before I give up for now
listening to Stop and Play using the monomod detours
working on adding an entirely new enemy into the game 
https://gfycat.com/FemaleFormalBellsnake
π
https://gfycat.com/DeadFrightenedAxolotl the ai actually works
kdt's waifu
https://gfycat.com/DependentEdibleDavidstiger although i should fix physics
LOL
Is that fennel?
yes
Just a short refresher because I was tired
I put ModHooks.Instance.SlashHitHook in the VS I had opened (just kept it there on a separate line so I won't lose it)
and I use it to edit this...
base.transform.localScale = new Vector3(this.scale.x * 1.4f, this.scale.y * 1.4f, this.scale.z)
How?
he wants a big nail
ik but for what charm
i think just as is
o
Gradow was really nice and sent me this bit about the Nail's resizing
if (this.mantis && this.longnail)
{
base.transform.localScale = new Vector3(this.scale.x * 1.4f, this.scale.y * 1.4f, this.scale.z);
this.anim.Play(this.animName + " M");
}
else if (this.mantis)
{
base.transform.localScale = new Vector3(this.scale.x * 1.25f, this.scale.y * 1.25f, this.scale.z);
this.anim.Play(this.animName + " M");
}
else if (this.longnail)
{
base.transform.localScale = new Vector3(this.scale.x * 1.15f, this.scale.y * 1.15f, this.scale.z);
this.anim.Play(this.animName);
}
else
{
base.transform.localScale = this.scale;
this.anim.Play(this.animName);
}
I'm still trying to figure out what each element of the example mods does
so first you need to get the nail objects
ModHooks.Instance.SlashHitHook += ree;
}
private void ree(Collider2D otherCollider, GameObject gameObject)
{
gameObject.transform.localScale = new Vector3(gameObject.transform.GetScaleX() * 5f, gameObject.transform.GetScaleY() * 5f, gameObject.transform.GetScaleZ());
}
this half works
sometimes it's just normal nail tho
idk why
oh, the hook already gives you the gameobject
idk why this isn't working
weird
maybe log the go, the collider and when it gets called?
?
it's only big when it hits stuff i think
yeah
which i usually am
BoopMod uses
you could detour the whole NailSlash thing tho
SlashHItHook
that's what lightbringer does
yeah, but it makes sense tho, because you only need to play the boop sfx when you hit something, Papers
if you want the nail to always be big, you're going to have to do something else
you could try hooking onto that
you don't have a reference to the gameObject tho
so you'll have to find it
HeroController has some NailSlash references which I imagine are on the nail object
You would want to hook afterattack and change it there
Oh there's just a scale field on NailSlash
So yeah HeroController.slashComponent.scale
oh, there you have it
Using reflection to get the slashComponent
now I gotta go
also got damage to work https://gfycat.com/BrokenPalatableHoki
nice
That's pretty cool
There's an invisible wall after hornet
In addition to the gate
Why would they do this?
stop cheaters
I guess I'm a cheater for wanting rando to not trap you in here
its probably just some generic boss thing they did
to spawn invis walls as soon as gates start to close so you can't lock yourself out
Probably, yeah
Uh does "DeactivateIfPlayerdataFalse" component ignore "GetPlayerBoolHook"?
No
I don't even know where the dreamer cutscene comes from
There's nothing with dreamer in the name and the shiny fsm is identical to other ones
Huh well I'm confused then because I have this in my GetPlayerBoolHook, and it causes grimmchild to spawn and everything (object and all), but I can't dreamnail sleeping grimm (the teleporter game object doesn't exist and I get the message saying I need the child).
But if I equip grimmchild for real I can dreamnail him (and his gameobject exists). And the check he uses is "equippedCharm_40"
Must be something else getting checked
Well there's nothing in any of the scene's FSMs, could it be in the assembly?
Doubt it
ok I fixed it I'm silly
Yeah?
well I know the fix intuitively because I wrote a unit test but give me 30 seconds to do some debugging to find the reason
Alright
I added my mod components in the wrong order so the one that was needed to fake the values should have been loaded first and not second.
what I don't get is why the child still appeared
I see
actually that didn't work. What did was probably the stupidest hack ever.
So I created this component to destroy objects that get created some arbitrary amount of time after the scene is created https://pastebin.com/C70CVukU and after a short bit it just spams the second log
Which tells me two things:
The coroutine is looping forever somehow
Destroy doesn't actually destroy things
Neither of those make any sense
hmm
because if there's a segfault it silently ignores it
That's been my experience working with modding
use try I guess
No need, the problem is I was passing a string into Destroy
Why that overload even exists if it just breaks things is beyond me
new graphics/enemies in hollow knight? much excite, very want
Hey for all you peeps that don't have access to #races-discussion I just put a mostly feature complete randomizer for 1.3.1.5 in the drive folder
I had people over there play it to test it and I fixed any bugs they found, as well as ones I found, so it should in theory be good to use
So I know an entire TAS for the game is not possible, but would a frame by frame input mapper be possible if you lock the game at 60 fps?
Thanks for the help Seanpr, I fixed the issue thanks to you.
(ignore that there's two baby grimms I fixed that as well I just thought it was a funny screenshot)
But I didn't do anything
@high moat Yeah, in theory. But we would have to remove all asynchronous actions and seed the RNG somehow
It would likely require heavily modding the Unity dll
You know you can talk to yourself without a rubber duck, right?
Hmm I only have one specific use case rn, so the answer "Too much work, cba" is totally acceptable.
Sean, the dreamer scene for hornet and some other stuff is located in the hornet boss scene
Yeah, I figured that out a bit ago
That's why I needed the delayed object destroyer
No idea when that stuff actually loads
T believe on scene transition there's a check to additively load any scenes with _boss if they exist
I*
And yeah, if you remove the player data bool checks from hornet before the fight starts, ie on scene load, you can just walk through
Though it would skip the item and dreamer scene parts
I'm just destroying the dreamer objects and the hornet saver one and it works fine
Item is still there and the gate closes/opens
Just no cutscene
Nice
Does your thing check for nulls in the cases for our mods together?
Since I remove the hornet saver
Object.Destroy(null) doesn't actually throw an error, so it's fine
Cool
Oh wait that would be fine even if it did
Since I'm destroying it through a coroutine that waits for it to exist then destroys it
There's also Destroy(object,time)
That's good to know
I always forget about it
I think I like the coroutine better since it's more of a sure thing
Same
Although it does mean I'm running GameObject.Find every frame until it finds it, which can't be good for performance
Like if your mod destroys it first that would just be running for the entire scene
Is there a way to just check if a scene is loaded?
Then iterate over those using get all components in children with true to check disabled game objects
Yeah
This just sounds like what your modcommon extension FindGameObject does
Scene type returned from scene manager is a structure with a few flags like isvalid, isloaded
Yeah, it is
Ok I see
I can call GetSceneByName and check isLoaded
Probably much cheaper than GameObject.Find
Yep
You might need to wait a frame for things to initialize, I had some weird null refs with unity when just checking is loaded
And acting at the first moment it was true
But maybe it was my code
Heh, a phrase I wish I heard from people more often
Well, back to sleep for me. Good luck

Night
question, is PlayerData.instance.charmCost_x = y is only applied on new game saves?
just like how older saves arent affected by any charm notch nerfs after an update?
Yeah, those ints are the entire reason the nerfs don't take effect
But you can easily change them at runtime
ahh thanks
okay, I'll give one last try to making the animations work for berserk mod
after that, I'm sorry, but unless someone forks it on git, it won't see much development for a while
I have a pretty important exam for my phd tomorrow, and I fly out of town this Friday for a convention... So I won't have much time
I'm trying to make it play a short animation to indicate it's being triggered, but I give up
alright time to try building the modding api on the beta branch
Do I need to rebuild the other mods as well for it or just the api?
just the api
cool
wait why is there separate instructions for mac, are the two not compatible?
different folder structure output
makes it easier for other people to install
doesn't actually matter
assemblies are the same
cool the newest github version of the modding api fixes controllers on Linux
is there a function like PlayerData.instance.AddGeo that actually shows the geo being added like when you pick stuff up?
thanks
Well I just released a new version of my mod, which fixes lots of bugs and I think makes it good enough for other people to play. I'm really happy with how it came out.

Besides fixing every bug I found it also adds the following features: being able to fight with grimmchild. Being able to fight without grimmchild equipped. Gain geo after death based on your damage.
It also probably adds its own bugs but we will see.
I personally think it's good enough to go on the drive but I would like someone else to test it before I ping Sean about it, at least to confirm it launches on Windows.
You don't usually have to ping me to get me to look here
I check discord pretty frequently
ok
Well, guess I'll try it out
thanks
also trying it out
Got a 106% save?
yeah I can post the save I tested it on
I deleted my casual save a bit ago on accident
As long as it has the stuff that matters
Cool
It's open for me on the 107% save

