#archived-modding-development
1 messages · Page 521 of 1
This time only one of them froze
Nope, what am I supposed to look for?
Oh ok
I'm not sure how exceptions are meant to look
But there's no mention of the word exception there
Nothing there really seems exceptional, no pun intended
Though not sure how much of a pun it is, they're the same word and mean the same general thing
yep
Is there something wrong with that?
show me all the actions imo
I tried removing the transition NAIL but couldn't figure it all
wdym?
the fsm state you're fucking with
why would you remove the third one
Third one is nail attack no?
mrw 4
I mean, otehr than freezing it does what I want
index is 3 if that's what you're talking about
the attack isn't deflectable
yea
I just want to make it so the blade can't be hit back
would it not be nicer to just remove the velocity change so you still get the impact tink
This worked, but for some reason all the sturdy fools freeze at one point or another
I guess?
I'll need to remove the damage too I guess
won't be a problem tho
Aight I'll just do it like that I suppose
I just need to remove this action, right?
Not mess with it in any way
only remove it
yeah
Aight thanks
Welp the fool still freezes
it might be unrelated
but I dunno what else it couldve been
comment out everything else
Yep, the fool froze
So it's this
Somehow
Welp I gtg
I'll have to continue this some other time
Where do I get UnityEngine.AddressableAssets from? I can't find it in the hk managed folder.
Wouldn’t that be part of a separate Unity Package called the “Addressable Asset System”? I don’t think HK is using that package
is there somewhere else I can get that package?
yep you gotta get it from the unity package manager
yea I got it but where does the dll go?
somewhere
its in managed when you build at least
I think
never tried to add it into a game without yet
ok thanks
should I replace the assetbundles I use in my mod with addressables?
or am I misunderstanding what addessables are for/there's no reason to do it?
ok thanks
can you send me these bundles
Yep, should be here https://drive.google.com/drive/folders/15xY_1JeOwofDrGfBQLvt8BGtmCntRjb6
what about library/scriptassemblies
That I don’t have available right now. I can send you that too when I get home from work within the next hour or so when I have access to my computer
nvm you have typetrees
you don't need dlls
with your code I get this
where I set the mod name to tomato
So I didn’t need to use MonoDeserializer? I can try that out later and see if it works
<@&283547423706447872> spammer
uhuh
snail emoji
Re-did the Get/Set<T> and LanguageGet hooks fwiw, should be a much nicer api now
also broke every mod while I'm at it so you should get the new one
Poggers
Was able to test it out, and it works great! One small issue I'm running into is that one specific MonoBehaviour seems to be throwing an Out Of Memory Exception when making the call to GetTypeInstance(). Not sure what it is, but I am able to just skip over it and it still works. Might be one of the large animation Object I also have bundled, and it could be too large for it to handle?
size shouldn't matter unless the asset is like over 100mb
but I tested on your bundle and there were no errors
so maybe your library version is too old or something? not sure why you would be getting different results
Wait, just noticed the error is with the WeaverCore bundle
ok
Might be any one of these
Uploaded WeaverCore, you can find it in the StandaloneWindows folder
https://drive.google.com/drive/folders/15xY_1JeOwofDrGfBQLvt8BGtmCntRjb6?usp=sharing
I can't seem to find it in UABE
Found it. Not sure why this one is the culprit
huh?
yours looks different 🤔
should be the same thing I sent you
mine is saying it's a monoscript but yours says it's a monobehaviour
I'll redownload the bundle I sent you to double check
I meant your screenshot, probably an older version of uabea
I'll try it out with the nightly build of UABE
Same bundle viewed in nightly UABE, now looks like yours
is weavercore settings a scriptable object?
I found the source of the problem. It's a scriptable object with a missing monoscript
yep that will do it
this whole time I've been assuming that unity would never let the script be null
I find that happens whenever a script file gets renamed or deleted
The build now went from two OutOfMemory errors to one, so I have another one somewhere.
How do you get the path ID of a Monobehaviour in AssetTools? I'm still getting an OutOfMemory Exception for an asset and was going to try and search it up in UABE
I was wondering how you found the path id of one of the sus assets, like this one
let assetstools crash on a command line program, walk up stacktrace, mouse over the info of the asset it was reading
or you could try catch and log which asset it was reading at that time
well that's not good
it will break on any scriptableobject
I found the other sus file, but this one doesn't even give a name of the asset this time
use this instead
somehow I made a stupid bug where scriptable objects will read from monobehaviour data instead
it's been there for like years
Seems to be fixed! I'm not getting any exceptions in the logs 
@jolly oriole @vocal spire @jolly jungle @primal latch going to start stream in 30 minutes unless now is a bad time
Epic

Ahahaaa
ha
I knew you'll do that grenade
that's what you get for saying "i'd watch"
I thought of adding
for you but decided not to cuz I myself don't mind
i have more of those emotes, thanks to free nitro from epic
only new subs 😢
That sounds like a promo for epic
my free year ran out a while ago
I'm reading it in a salesman voice in an ad from 20 years ago
Free year?
When the hell'd they give that much away
discord hackathon
Can’t watch. Sad. Good luck
I'll record it so y'all can see my stupidity later
Good luck
wait, where you gonna stream? twitch, yt or one of the VCs?
I have it set up for twitch
👍
I’m here now
Sorry I'm late
Oooh nes any chance you can also add arrowheads to the lines between states? I know it always starts at an event and ends in a state's name but it'll be easier to read that way
still working on appdomains?
yes
good luck
[ERROR]:[API] - Error: System.Runtime.Serialization.SerializationException: Type 'EnemyChanger.EnemyChanger' in Assembly 'EnemyChanger, Version=1.0.0.0, Culture=neutral, PublicKeyToken=723094b6adc0e8b9' is not marked as serializable.
oh my god
i thought it was intentional lol, plus i was on mobile web so i could not chat 😦
I figured that's why
at the beginning I was doing a lot of mouse circling
I turned on vods
i just thought you were doing micless
I was explaining why not to code at 3am
nah windows totally ignored the mic plugged in, the mic was enabled in obs so I thought it was fine

nice
I'm trying to fix the pink shaders but when I manually set the shaders in the editor myself to Unity's default shaders (and it looks fine in the editor), it looks even worse in-game.
I dont understand
afaik that's because the path_ids of the used materials are different for your assetbundles compared to HKs assetbundles
yes, though with 1.5 it should be possible (even for you) to attach scripts to gameobjects that automatically put the correct materials & shaders on the gameobjects you want (even with a bit optimization if the same material/shader is used instead of one for each go)
like how i do it with SFCores SpritePatcher
but that only reliably works with simple shaders, like sprites-default and -lit
Having trouble with inserting the method into mawlek when it lands from a jump, does anything look wrong?
I put a log after a lot of it, and all the logs before the insert worked
and i cant see whats wrong with the insert
it was just not enough for me to have one
a smolknight update that works across hkmp (required on all clients to function properly)
i just need to fix my code a bit
?mods
Mods
Google Drive with Mods - https://drive.google.com/drive/u/0/folders/1lnjtSYMfRe1LyA_qSq2CoXKI6NRm_I-e
Installer - https://radiance.host/mods/ModInstaller.exe
Mod Summaries - https://docs.google.com/document/d/1cz5tcggpGofrBcM90XyTkMWjMelDHzugvQM6HpB13Ew
@edgy plover
thanks
Last night I was wondering: why do we help everyone with the same few problems if we can also fix them?
What do you mean
Like the issue with the mod installer or saves saying loading
You'd have to find a way to implement a fix. Like, with the Benchwarp settings issue (saves saying "loading"), it seems that somehow the settings file has an issue being read, and resetting it fixes it. But the only alternative would be to somehow ensure that the settings file didn't have whatever the unknown issue is?
the issue
Or MI could have a button to reset it as a starter, and once we figure out what breaks mapi/ the mod could fix the file itself
Also just wondering, how do updates to MI get delivered to users?
In case the new modlinks update does not account for this, might I suggest a "tools" section that allows for MI / MI2 or any such tools to also update themselves ?
When the modinstaller 1 got a update that broke updates, one of the symptoms was that a AU.exe popped up.
So, i assume tha AU.exe (likely AutoUpdater) updates the installer
Hello mo mod install does not work how I can do for it to work it tells me that it has not updated because of the shift hollow knight that took place recament
there's a help channel
thx
This is modding development
Hi
I can replace your mom with gorb
anyone who have try this?
1 s t a r. S e e m s. G o o D.
I found it just now
reload them
Hm
call unload load assembly again hotkey
so you make a change to your mod then reload it
What's the difference?
bruh, you dont have to close and open the game every single time
I guess if you didn't load the mod when you opened the game
i mean, it's a start to get reloading of all mods and their content to work
currently that only does toggleable mods though
i think it should try to pull preload objects again if changed
i think you're trying to say that the game should just start with the preloading process again, but:
- some objects from the game (e.g. GameCameras & GameManager are marked as
DontDestroyOnLoad, so you'd have to manually find all of them and destroy them) this brings us to the fact that you can't execute code without gameobjectsedit midway through writing: you can just have one not marked- but then what still remains are static changes (the static variables of some classes, be it modding classes or base game classes)
Alright so thanks to the power of commenting it seems almost definite that this piece of code is also what leads to the sturdy fools to freeze
_control.InsertMethod("Spawn Bullet L", 3, () => {
_control.FsmVariables.GetFsmGameObject("Pickaxe").Value.LocateMyFSM("collide_with_wall").RemoveAction("Nail Hit", 1);
_control.FsmVariables.GetFsmGameObject("Pickaxe").Value.LocateMyFSM("collide_with_wall").GetAction<SetFsmInt>("Nail Hit", 2).setValue = 0;
});
_control.InsertMethod("Spawn Bullet R", 2, () => {
_control.FsmVariables.GetFsmGameObject("Pickaxe").Value.LocateMyFSM("collide_with_wall").RemoveAction("Nail Hit", 1);
_control.FsmVariables.GetFsmGameObject("Pickaxe").Value.LocateMyFSM("collide_with_wall").GetAction<SetFsmInt>("Nail Hit", 2).setValue = 0;
});
If anyone has any idea how to accomplish this in a way that doesn't freeze them randomly please tell
(What I'm trying is to make their projectiles not deflectable)
Which works, but they also freeze randomly
where can i look at the fsm
which file to open to see the fsm of the sturdy fool
assets 32
nop, I mean to figure out the changed of a certain mod's objects preload requirements. and load them manually if API dosen't contain , and then add to API's preloaded GameObject dictionary. as for the usless preload gameobjcts, just keep them, dont destroy.
(the picture show is DJ's code, he havent concern a mod with preload objects)
lol, just remove the action at index 3 of the In Air state, easier
then just do
_control.GetAction<SpawnObjectFromGlobalPool>("Spawn Bullet L", 1).gameObject.LocateMyFSM("collide_with_wall").RemoveAction("In Air", 3);
after spawning it
though you may want to put it in a try... catch if you spawn multiple
or you do it once after preloading the enemy and then no more
Hm
Thanks, I'll try
Welp
Now it doesn't work at all
:/
_control.GetAction<SpawnObjectFromGlobalPool>("Spawn Bullet L", 1).gameObject.Value.LocateMyFSM("collide_with_wall").RemoveAction("In Air", 3);
_control.GetAction<SpawnObjectFromGlobalPool>("Spawn Bullet R", 0).gameObject.Value.LocateMyFSM("collide_with_wall").RemoveAction("In Air",3);
Did I mistype anything?
does it crash?
Nope
I meant, it doesn't do what I wanted
I'm assuming I just missed something
And changed the wrong thing somewhere
But no, it all seems fine in the code
hm :/
it's pretty rough, just verifying that hot reloading works
hope ModdingAPI can have a similar feature, it doesn't need to be perfect as long as it can reduce the number of restarts of the game
or add a hotkey to restart the game and then restore the scene is enough
Impressive DJ
Good evening fellow peeps. I'm making a custom knight skin and I was wondering if anyone knew which of sprites get cycled through for the "run" (the normal explore around the world walk) animation? I'm using the sprite packer and what I drew looks smooth but once in game it looks entirely different. Does the game pull a sprite from a different animation for a between frame or something?
Does anyone know how I could make a new spell for the game?
It pulls from the 6th frame of the slash animation iirc
Is weird
oh my haha that would explain it
yeah after looking at that frame, i totally see it now. That is very strange.
I'll test the 6th frame to confirm that's it
yup confirmed 6th frame of the slash is used for the run cycle
Thank you Basil
How would you cast it? Would it require a charm to be on, or just replace spells by default?
If it requires a charm to be on, you’d have to make a good amount of edits the spell fsm. If it’s by default you just need to replace the GameObject the fsm creates
still looking for life steal mods
watch 56’s bad modding tutorial, he explains how to do it there
what is vasi ? like what does it do / why do some mods depend on it?
okay thanks!
hey, uh, very stupid dum person here, i need some help with maybe possibly 12% chance of making a mod sometime
what if i want to open and see the code of a certain mod, but its a dll and what if i want to change some stuff in it, dnspy doesnt do that right?
so uh yea how do i like open a dll in visual studio code cause it doesnt work when i open a folder and select a dll from there can i like convert it or what
i have literally no experience with modding and very little with coding but i wanna look around some mods to get the hang of how mods work
a lot of the mods have their source available on github , that would probably the best first place to start
You can also open the dll in Dnspy
that and this https://radiance.host/apidocs/Getting-Started.html
Suggest doing that with the Assembly-CSharp.dll file
alright but i got the github zip for the hell mod cause the apidocs told me to do that and i dont know where exactly the thing i need is, i found a .csproj file but i watched 56's tutorial and it doesnt look anything like that, its just refernces and stuff. what am i missing? did i do it wrong?
What did you open it in
visual studio code
Ah, iirc 56 uses rider
I use visual studio community
Can’t really open them that way in vs code (at least I’ve found)
Iirc vscode just opens csproj and sln files in a text editor
the csproj just gives info on references and included files. the files you want to open will probably be in a folder called "source" or similar, there will also be Include tags for each file
If you want to open the mod using visual studio you should open the .sln or the .csproj not the .cs files
... they said vscode, which is not the same 
can you compile mods using vscode?
so im using the wrong thing?
you can build in vscode
i'd certainly recommend full vs though, much easier to work with imo
there are reasons for both, and vscode is totally fine, just a little less intuitive and a bit more work to set up if you've never used it before 
one thing i will mention because it caught me out the first time, make sure you make a project targeting .net framework 3.5 for mods 1.4 and prior, or 4.7.2 if for 1.5 iirc
i guess imma figure out how to do that when i get there
oh also
when i add references and everything i saw 56 do in his tutorial is it just hooks and stuff or is there more things i need to do
like can i change how a boss works with just hooks or whatever
recommend to use vs2019, vscode is shit
vscode is amazing, just not for c# projects
alright 
i try use vscode to coding with Vue.js , the exprience is terrible. espically the label aligenment
also try to remote coding c/c++,and the auto-completion dont work
vs 2019 can open dll right? or did i do the stupid again
Oops, fine, i find some requirement just now. maybe i know why code completion dont work.
nop, but you can open it with dnSpy
i did the stupid
to github i go
also you can export dll to vs project with dnSpy
you can? how?
now uh...
i forgot what file i needed to open which actually has all the code and stuff cause the dlls dont seem to have much
you can and i do sometimes
so i went in vs 2019 and selected class library now its asking me to select .net standard 2.0 or 2.1, .net core 2.1 or 3.1, or .net 5.0
which one do i have to select
class library (.net framework) as a project template
ah, found it, thanks
then .net framework 3.5 if you're making mods for patch 1.4.3.2
or .net framework 4.7.2 if you're doing it for patch 1.5.numbers
so im trying to add UnityEngine.dll as a reference and there literally isnt one
im following apidocs
Check in hollow_knight_Data/Managed
there is a ton of UnityEngine and then something else but no simple UnityEngine.dll
i assume i dont need it then?
take a copy of all of Managed directory and put somewhere else
use those files as references
You probs do need it lol
you may need to reference more than just the engine while modding
Type it in the bottom of the explorer that opens
confused nodding
To whoever is currently working on Mod Installer:
#archived-modding-help message
The current build has been having an issue for people where dependencies don't download / unzip correctly.
This was first noticed a lot with Vasi, but as time goes on, it's becoming apparent that it affects lots of stuff. I'm not sure if maybe there's a way to verify that each step happens correctly before moving on?
i put every unityengine thing as reference is that fine
If there isn’t a UnityEngine.dll the game can’t run
found it!
ok i did what 56 did with the log thing but how do i turn that into a dll
is it already a dll?
What is already a dll?

Or you click the build tab at the top then select one of the options
but does it work on the newest beta patch?
how is it not working 
What did you expect to happen
are you mocking me or asking me what i tried to do i genuinely have no idea
Why would I mock you
i dont know
anyway i tried doing what 56 did in the tutorial and did the Log("initializing."); so that log pops up but it didnt
is this what makes the log pop up? im really not sure
but i probably did it wrong
You have to enable the log by going to save files and opening modding API.globalsettings
Log probably needs to be enabled in settings
alright
after i do that time for more copying
why do i always feel like everyone is acting chill but wants to call me an idiot any second 
anyway where is "save files"?
is it in
?saves
Saves
Windows File Paths: (Assumes Default Steam Install Path, Adjust accordingly for DRM Free or Non-Standard Steam Path)
Game Files: C:\Program Files (x86)\Steam\steamapps\common\Hollow Knight\``` ** ** Mac File Paths: ```Save Files: ~/Library/Application Support/unity.Team Cherry.Hollow Knight/ Game Files: ~/Library/Application Support/Steam/steamapps/common/Hollow Knight/hollow_knight.app/``` ** ** Linux File Paths: ```Save Files: ~/.config/unity3d/Team Cherry/Hollow Knight/ Game Files: ~/.local/share/Steam/steamapps/common/Hollow Knight/```
i mean you dont have an interesting nickname, actually you dont even have a nickname
thats cuz i tend to find someone with an interesting nickname then i change my nickname to that but make it different so its mine, so i now made my nick Mr Steal Your Nickname 
the first part is stolen yes
can i change a boss attack using a hook or is that just for the knight? how hard is it to change a boss?
for bosses you might need to modify the FSM
where do i download fsm viewer
pins
how does it work and what am i supposed to open in fsmviewer

so this happens when using smolknight & touching a wall/floor and jumping/dashing some times
any idea what could be the cause
nvm found it, now to figure out how to fix
x scale gets reset at certain points i guess
is there a way to replace a method on a mono behaviour?
On.Class.Method += hook;
this would replace the method or run it after the method ?
though completely replacing a method likely makes your mod not compatible with other mods
you can replace it, run code before or after, whichever you want
after should be best for compatibility with mods in my case, i can set the scale back without messing up other mods i guess
Example:
On.HeroController.FixedUpdate += Hook;
private void Hook(On.HeroController.orig_FixedUpdate orig, HeroController self)
{
// here you can change stuff before the original method is being executed, like changing variables
orig(self); // the original method, with self and the rest of its arguments
// here you can change stuff after the original method is being executed, like changing unwanted stuff on the object
}
yes
okay ! that did the trick ! no more squished-disco-boi !
How can I make a gameObject hittable by the hero's nail like buzzsaws for example?
I have to add some component to the object?
For example the needle of hornet when she throws to you is hittable but not when I Instantiate it again
have you tried putting it on layer 9 ?
it shouldn't even have a non bouncer in the first place should it
thanks changing layer worked.
with the new get hooks do we still need to return PlayerData.instance.Get(type)Internal?
oh didn't see
heya
hello
a mod that makes enemy attacks hurt each other and lets you run sims of them fighting 
yes
but why?
to find who is the strongest
And then, we can start tweaking their ais to be smarter, constantly trying to beat each other up
We come out of this with a bunch of enemies with enhanced ais
it sounds like a fun thing to do , also if it'd be a youtube series i'd watch it
kind of like that old TV programme Animal Face-Off
Seriously though I totally wanna see a fight between, like, Husk Guard and Moss Knight
making enemies damage other enemies is easy, though it may result in enemies damagin themselves
that is okay i think self damage can just be a trait of the enemy , but can we make them target the other enemies on the screen easily though ?
without looking into it too much, I think it would be as simple as setting the Hero variable in the enemy's fsm to another enemy instead of the player go
it would require more work if you want to change the fsm to attack all enemies, not just a particular one
what if i set it to a new go, that i move around to track whichever enemy i want the particular enemy to track?
so each enemy would have its own "lockon" object that we can just move to track whichever object we want it to, this would allow for switching target lockons etc?
ooooo that's a great idea
I would test to see if just setting the enemy's hero fsm to another enemy even works first though
yes, good idea
so if I wanted to learn to make my first mod ever using HK modding API with zero experience in unity or C#..... What resources can I use to do that?
if you already know some programming then a few unity tutorials can be a good starting point and then https://radiance.host/apidocs/Getting-Started.html
my last programming experience was sometime in 2000 with visual basic - so I'd more or less be starting fresh
then it might be good to learn basic programming with c#
https://docs.microsoft.com/en-us/dotnet/csharp/tour-of-csharp/tutorials/
this might be good
any idea why hm.IsInvincible = true; isn't making my go invincible?
oh hmm I think I get why nvm
is it another of those unused variables that youd think would solve all your problems but then end up not doing it?
nah, the problem was that the fsm changed it too
the fsm set hm.IsInvincible too
remake hk iwthout the fsms when tbh tbh 😤
Would be beter. I hate them.
fsms are great, makes mods easier compatible
rip
anyone know an alternative to utiny ripper?
hkworldedit has an update?
it does run on latest unity but the only thing is that sprites aren't rendering
due to a bug in the editor again
I think if you rebundle it it might fix or something
hmm
my guess is the editor only supports m_RD but the latest version moves it over to a spriteatlas asset that the editor can't read
as you can see it's working with absolutely 0 bugs
i do see a few tbh
sad
in what way 'completely wrong'? (maybe hopefully only left/right or top/bottom mirrored)
the sprite it selects in the spritesheet overlaps multiple sprites
almost as if it's for a different texture
the texture is correct though
and no not mirrored
Is it flipped or whatever that sprite.json thingy is
.
No no it's not just mirrored like the sprite is rotated 90degrees and the coordinates are as if the image is not rotated 90degrees
That's what knight.png has some sprites are just that way godump generates a flag called flipped for those
that's tk2d
those are the only sprites loading in the screenshot
the issue is about unity sprites
Ah okay
there is the possibility that it do be 90/270° rotated for no reason, would align some silhouettes with 'wood' textures somewhat close
here, top image is the bottom right part of 1432 fung spriteatlas, bottom image is bottom part of 1432 fung spriteatlas rotate 90° counter clockwise
same sprite from 1.4 and 1.5
sad, the uabe i have doesn't work with 1.5 ;_;
yea
because i found it through https://github.com/DerPopo/UABE
well shoot I think I can guess why it's not even close
there's a lot and I picked the wrong one
i can manually compare the textures once the texture export is done
nah, those are gameobjects, not sprites
different sprites in those gameobjects with the same name
there are two sprites with that name
how
because team cherry
yeah in the sprite names to index, they have two sprites of the same name with different sprites
idk how you do that but it just is
oh but sadly they seem to have the same data
so I guess that wasn't it
found the spritesheet, silhouette is in bottom right corner, and i don't think any wooden looking sprite and overlap it with any kind of mirroring/rotation in the UVs, idk
... it did change btw, was 2048x4096 before
let me try randomly changing values brb

found the part with the 'bugs' i highlighted before
polygons
tight packing
if it's tight packing
is that in settingsRaw or smth? I don't see a field for it
good question, let me search
if you look at the new spriteatlasdata there are only rectangles
m_IsPolygon is false with that sprite
they all say false even when they aren't I just checked
yea
m_RD/m_VertexData/m_VertexCount says 9 for mush_010000 sprite
but idk where to find the data for those vertices
Hello peeps. I'm making a custom knight mod and currently working on the double jump. Does anyone know where the sprites for the "feathers" that fall from the knight after the double jump are? I can find every part of double jump but those dang feathers
Have you tried using Dandy's sprite remixer to find animations?
never heard of that, what does that do? I'm using sprite packer currently
with the knight folder pinned in modding-discussion the animation is "100. Double Jump Wings 2"
would appear to be on the wraiths sheet
https://prashantmohta.github.io/HollowKnight.SkinRemixer/
Edit: I just realized that the wings may not be in knight.png, which is what that link looks for
that is not the sprite I'm talking about
the feathers that fall down from the knight after that animation you posted plats
if you mean the feather particles then i don't believe those are skinnable using CK just yet
plays*
oh the feathers that fall from the knight? believe those are particles and not animations
@floral blade ah I was afraid that was probably the answer 😦
sorry it was hard to explain haha
yeah the remixer only supports Knight.png as of now
another reason for 1.5 to introduce customknight 2 
yessss
i'm going to keep using customknight
Dandy is making CK support more basic stuff, and RedFrom/Someone can make the CK+ extension
but probably add a space in between
customknight ultra 
are you patch 1.5.68.11808 for critically acclaimed spaghetti mess Hollow Knight? omg hi 😳
I'll add particle replacements to customknight +
CK already does replace some particles
That's what you always say 
particularly the shade's black orbs
fine I'll stop working on pale court right now and work on ck+ instead
on my todo list are the cdash and djump particles
Ck+ clearly > pale court
but before that smolknight!
tbh I should do it though, been putting it off for a LONG time now
please
Planned features:```
create tk2dspritecollectiondata instances for a inputted texture
edit/add/remove frames from tk2dspriteanimation instances and edit fps (possibly mess with triggers)
change any particle's sprite to a slice of a inputted texture
change any spriterenderer's sprite to a slice of a inputted texture```
did I miss anything
excluding the editor
ahhhhhhh the names and pointers are in order but the data is in random order
nice
I just try not to understand anything anymore
why would you
you sure mean 1.5.71.numbers, right?
this is probably it
where did you get .71 from?
beta branch
in game version for me says .68
ah nvm
I'm not on beta branch
thought I was
I am on None
ayyyyy
nice
🤔
too few edits
does this mean hope for utiny ripper update?
lolllll no
utinyripper extracts assets
hkworldedit just directs unity to the assets
what are the chances I know both of these people
:)
yeah utiny looks pretty dead tho
sad
wish I was smart enough to update it
it's not about smarts it's just about a lot of work
time to become smart enough to update it
oh no effort
every programmers worst nightmare
will hkworldedit allow assetbundling?
I would like to attempt trying to update utiny tho
it's not if hkworldedit allows it, it's if unity editor allows it with it's wack new changes
I've assetbundled in 2020.2.2
that's not what he means
utiny doesn't run on assetstools so you'd have to update each asset type manually with binary reader
I meant the editor changed how sprites are handled now
in assets files
it may break during bundle now
I get it now
only way to know is to try
https://github.com/nesrak1/HKWorldEdit2 it's committed have fun
it wouldn't let me assetbundle before either iirc
wdym wouldn't let you
time to start taking notes
it will always let you but it won't always look good
I remember there being errors but it's been like a year now so I dont remember
well let me know what they are if you try again
poggers
well imma go do customknight+ stuff now
oh no
well good news and bad news on customknight+
good news: I found where I left the code
bad news: it's a old version
I was going to rewrite a bunch of stuff tho so it's probably fine
probably
has hk been using tk2d the entirety of development?
probably not when they weren't using unity
and were instead using stencil or whatever
It was Stencil yup
ping me when nes updates
well as long as it's been used for every unity ver imma port it to all hk versions
nes?
nesquack
like 10 messages above
meanwhile FSMAvalonia finally loads scene list on mac!
kool
bad news is i still need to run it via VS / compile it because some paths be hardcoded
cool!
no like it tries to get "hollow_knight_Data" but there's only "Data"
like this
oh and if you do update it may i request to add an option to reset the game path selected ? i found the txt file by following the code but might be a nice QOL thing to be able to change it
yes I know
I just haven't
about the data thing, we can just check for mac and then look for a different folder
you don't have to change it yourself every time a new commit is made
ping
yeah that might be nice but this is still great to finally be able to see FSMs in all scenes
there are now four errors because I'm no longer giving an absolute path
but who cares it works anyway
thanks dude
bundle doesn't work because unity doesn't recognize anything as assets
if you wanted you could just write something similar to hkwe to copy sprites to prefabs and skip the editor freaking out over glitched scene files
I dont understand how unity works past using its basic features and I also don't know how to learn the stuff that makes hkwe work either
@ornate rivet do you need to bundle or put gameobjects into a prefab or what
I can copy any selection of objects directly from the scene to a bundle but that's about it
being able to copy objects into a bundle would be really nice
I remember the last time we tried that, it wouldn't copy the dependencies into it so it only ever worked if you used the bundle in the scene it came from which made it useless
can you be more specific
like why you are using it
are you just trying to basically preload objects, or are you trying to edit the whole scene or what
once you copy into a bundle, it's irreversible
trying to make new scenes from stuff in hk's old scenes plus new stuff I add myself
so you probably want prefabs then
I haven't really played with prefabs so idk what would happen if packed into one
well, it works now. LMK if u want me to share the dev dll / the png for the feathers.
does using monomod hooks on unity dlls work?
no
will the new modding api have the option to enable / disable in game modlog while the game is running ?
you can detour unity stuff if you construct the hooks yourself
And there's been a bind to hide the console for forever
F10
could you give more information on this?
new Hook (MethodInfo, MethodInfo)
MonoMod.RuntimeDetour
Thanks!
does the thing need to be true in settings or does it get toggled anyway ?
i mean the modlog in bottom left
F10 does nothing for me
i usually use new Detour(MethodInfo,MethodInfo),~~ what's the differences?~~nvm i found it
has to be true
and yeah Hook takes a trampoline and has better cross mod support
Detour is a level lower basically
okay thanks!
would it be possible to get the instance the original method is run on
yeah that is a required parameter for non static hooks
Oh ok
am I not supposed to be using them on constructors? Tried opening the game and this time a bunch of not responding errors appeared and it crashed on the main menu
nvm I think the not responding things were a one time thing
Would anyone know how I can find the FSMs related to the Grimm Child? I've been unable to find it with FSMViewAvalonia
Yeah i'm dumb. That's the one place i didn't look
it seems that hooking a constructor for SpriteRenderer doesn't work
looking over source code of MonoMod.RuntimeDetour and finally understand how to use Hook
// Demo for Hook
class Test
{
public string id;
public Test(string _id) { id = _id; }
public void func1(int arg1) //origin method
{
Console.WriteLine($"id:{id},number:{arg1}");
}
}
class Program
{
public delegate void func1_delegate(Test self,int n); //delegate for use trampoline
private static void new_func1(func1_delegate orig,Test self,int number) //orig is optional
{
Console.WriteLine($"hook {self.id},number:{number*2}");
orig(self, number);
}
static void Main(string[] args)
{
var from = typeof(Test).GetMethod("func1", BindingFlags.Instance|BindingFlags.Public);
var to = typeof(Program).GetMethod("new_func1", BindingFlags.Static | BindingFlags.NonPublic);
var instance = new Test("hk");
instance.func1(2);
new Hook(from, to);
instance.func1(2);
Console.ReadKey();
}
}
if use Detour or not use delegate, can also use new Hook(from, to).GenerateTrampoline().Invoke() instead
I have been looking
show your code
well I messed it up testing something else
....am I not supposed to be?
ok
well it doesn't since it's not logging and I have a log in there
(in a mod class)
private static void new_func1(Action<Test> orig, Test self) //orig is optional
{
Instance.Log($"hook");
orig(self);
}
public void AddHooks()
{
var from = typeof(Test).GetConstructors()[0];
foreach (var aaa in ((MethodBase)from).GetParameters())
Log(aaa.ParameterType);
var to = typeof(CK2).GetMethod("new_func1", BindingFlags.Static | BindingFlags.NonPublic);
var instance = new Test("hk");
new Hook(from, to);
var instance2 = new Test("hk");
}
public class Test
{
public string id;
public Test() { }
}```
I got a constructor hook working before
wait I didn't revert some stuff
timeline
- I got a constructor with a argument working
- tested without argument didn't work
- tried going back to one argument but it didn't work
- was making it use no arguments again to show code
internal class Yeah
{
public Yeah(int h = 37)
{
Console.WriteLine("Yeah::.ctor");
Console.WriteLine($"Got h = {h}");
}
}
internal static class Program
{
private static void Main()
{
var ci = typeof(Yeah).GetConstructor(new[] { typeof(int) });
var hook = new Hook(ci, typeof(Program).GetMethod("ctor_override"));
var yeah = new Yeah();
Console.ReadLine();
}
public static void ctor_override(Action<Yeah, int> orig, Yeah self, int h)
{
Console.WriteLine("Program::ctor_override");
Console.WriteLine($"h = {h}, overriding to 20");
orig(self, 20);
}
}
e.g.
do a native detour then or something
what's that
NativeDetour
ok
well it worked but it didn't
got the log in so it was called
but it crashed
I think I broke something
prob because I don't call orig but orig crashes?
(trying out hooking GameObject.SetActive)
I'll just hook something else
IT WORKS
yay
cooool
why did TC change the path for GOG, makes modinstaller more complicated
What is the new path?
hollow_knight_Data => Hollow Knight_Data
https://github.com/ricardosouzag/ModInstaller/pull/103 definetly serious pull request
Only API is updated to 1.5 
at least then the people asking for mods in #modding-help will then have their modinstaller working normally
Also I just wanna confirm. With the new GetPlayerStringHook, if I return false, it will set the string to what it originally wanted to be?
I want to start modding hollow knight,
where do i start?
Fwiw I have debug and benchwarp updated to the newest api
thanks
Yes, assuming you're the only mod that has hooked it
(I guess one could say that if you return false, it's like you didn't even add the hook)
I should've read the example lol. In that it returns null if it didn't want to change anything
Nvm that's for set not get
The get doesn't have the bool? return value, it has bool return value
So I can't return null
I think you return false if you don't want to change the string, and return true if you do want to change the string
(If you're returning false, then you can set res to null or orig or whatever you like I guess)
Ok thanks
It seems that it works differently for strings, where you change the value of the param and return a bool, whereas for bools and ints you return the new value or null
I'm lazy so i'll post a link https://docs.unity3d.com/2020.2/Documentation/Manual/upm-ui.html
See if this helps
The version is 2020.2 right
[INFO]:[CK2] - Looking at Sprite Renderer GO: Elderbug (UnityEngine.GameObject)why does elderbug have a spriterenderer
no?
elderbug is tk2d
oh nvm it's a box collider
I copied the log and didn't change the text
nvm I did change the text?
I broke steam 
nvm I copied the code calling the look at sprite renderer method and forgot to change it to box collider
question, how do you find the path needed for preloading an obj ?
for example "Deepnest_Spider_Town", "RestBench Spider/Webbed Knight"
i see only "RestBench Spider" in fsm viewer
there's a gameobject dump for each scene in the pins
the scenes.rar ?
yee
is that still accurate for 1.5?

thanks! things make so much more sense now
he will never dump every scene
when do you think you'll finish that?
¯_(ツ)_/¯
getting a lot of work done
I also need to finish/rewrite the editor as well
just wanna check, there still no mod installer that works with newest patch?
nope
ok thanks 🙂
or just look in assetsview if you can
are these pink dots an issue or just TC being TC ?
they're always there dwai
okay
customknight + might actually have a kind of working beta now
core features working, editor very incomplete
needs more features though
How can you change a sprite of an item in the inventory?
does customknight support replacing grubberfly beam/projectile? 
I’ll give you some code in a couple hours for this.
Thanks
unless its in the base images , not atm
ping me for this please
Thank you
gonna tell something
thought i would play with modding api 1.5
and it broke during an elevator transition 
the game broke
thk's spritesheet changed
but why tho
¯_(ツ)_/¯
Team cherry 😡
If fsm changed then the ai did too
That's what i'm assuming
https://github.com/SFGrenade/HollowKnight.ModLinks so, now support for modlinks and apilinks, automatically verified and support for multiple game patches
Apilinks is just modlinks for the api ?
yes
And what does "automatically verified" mean ?
github action to validate the xml according to xml schemas that also are in the repo
set to do its work each push / pull request
Oh so that broken XML isn't introduced ?
That's awesome
well, that it's visible
Yeah I meant it wouldn't be merged into master if it's visible right
Sounds great!
I'm not super sure on the rationale behind making apilinks separate from modlinks tbh
IMO mapi doesn't belong in modlinks because it isn't a mod
That's true
I'm still not sure which is better
Mod entries for specific patches only, or mod entries with multiple patch entries in them
i think the prior makes more sense when looking at mods for older versions (ie debug) where they literally have different functionality
I mean 1.5 modding api is unplayable for me, considering it can hardlock me or something
Sometimes
do they have literally different functionality
IMO the simplest solution would've been keep a modlinks.xml for each patch version in its own directory in the repo.
But this way there's less files to edit and manage I guess.
Also, what happens when / if there is a minor patch bump of the game ?
new patch numbers 
I hope we wouldn't need to update the entire modlinks for the new patch if it's not breaking
Isn't there an option to make your mod be installable from modlinks in pre-1.5 and post-1.5?
Oh nevermind I realized 1.2.2.1 was a thing
@proven plover I think SFCore is what you need to make custom charms
Oh
Also custom charms api documentation https://radiance.host/apidocs/SFCore.html#add-custom-charms
All of the solutions in the file are erroring. Its the same thing that happens. When I try to follow the tutorials on the docs.
I think I don't have a reference or something
customknight + leak
Whats going on there?
replacing sprites through a json file
oh
customknight + json leak
ok
BB 2 
charm backboards
Thanks for helping!
Bloodborne 2
Hell 2
6 KB json 
are you manually coding all game objects ? or are you planning on using the preload paths ?
perhaps json could contain "Ruins2_03_boss", "Battle Control/Black Knight 2/Corpse Black Knight 1(Clone)"
and then the file to replace this GOs sprite with
I have code that checks every spriterenderer on scene load and checks when a component is added to a go if it's a spriterenderer. if the json file has an entry with a name that matches the go(no path) it adds a component that will set the sprite on enable
Which file in sfcore do I reference?
nice, works for what i was thinking
basically allows to reskin the entire game
just the DLL
that's only for spriterenderers
That's where I linked them to.
tk2d stuff is similar
some GOs might spawn later though, not on scene load right ?
(i ask because i do not know)
hmmm
is that why you were trying to hook awake
yes
but spriterenderer has no awake
so I went to constructor
but that didn't work
then I went to setactive
that died
then I went to AddComponent
isn't there some kind of fsm call that you could patch
?
i assume preloading is out of question so that you can support a large number of objects ?
preloading 
How do you load data into a Sprite class anyways
Sprite.Create?
I can't find a dll in the sfcore file anywhere
Texture2D.LoadImage?
did you download the source code
have you tried the one from modinstaller, alternatively from the releases?
From github?
I'm stupid 
I have not tried other versions yet
?
I'll try to download the source code
no
yea, you need to reference SFCore.dll, which you can get from either the github releases (idk which version though), or the one modinstaller downloads
ok
I get an error every time I try to download sfcore
It says there was an unhandled exception that occured.
I'll just download the files
if you're targeting 1.4.3.2 for mods, use https://github.com/SFGrenade/SFCore/releases/download/v1.4.3.4/SFCore.zip
what places does a gameobject with a sprite get created other than scene load
what I'm trying to say is, instead of patching the unity gameobject create event, can
you not just patch the few methods that exist to spawn enemies and such?
spawnfromglobalpool
there's also the matter of wanting to batch modify objects
in case , for example someone wanted to modify all of these BB thingies
is customknight+ gonna be 1.5?
Ex: new GameObject() from a mod
is 1432 support needed? single patch support seems easier i heard
also gives us more people that ask in #modding-help because their pirated copies can't get the new mods
It does work
What about 32 bit support
its 2021
i think keeping older mods that may or may not be updated usable by down patching is enough
new mods shouldn't really need to support both patches
mod installer having a dropdown to pick the right patch would be a bonus, not a core necessity
i don't want to support 4 zip file paths
either way someone gets annoyed at how i extract it
give a field in modlinks to choose where to extract the zip and respect directorie structure inside the zip beyond that ?
we had that
why github
it had the same value for everything despite people using different paths
tbh, people probably didn't know that even existed
even better, now just have everyone have their dll files at the zip root
Why didn’t people do that before
works if they only want to put them in /mods
is there a reason to replace any of the other game files ?
not really afaik
Discord rpc needs to be in the plugins folder
only the cursed assets replacing TWP customknight skins would
yeah thats what i'd seen doing this before
but those also aren't installed with the modinstaller afaik
it makes sense then to just extract whatever the zip has inside mods directory. it should not be MI's job to install a mod that's packaged incorrectly
having an install script might be nice though
for people who need to do custom stuff to install their mods
maybe the first time a mod is loaded after an update, a particular method could be called before initialise ? this would allow the mod to setup whatever weird stuff it needs to to work properly.

