#archived-modding-development
1 messages · Page 505 of 1

I think the first version didn't have the Windows descriptor
I think it was added later
was it angle
echgod
idk y it migrated to github
fucker
who
makes sense
he did make a bunch of changes to the code of the installer to add linux/mac support
how much do i have to pay you to give me a built version without the word windows
building is so much effort
can it be the version with the search functionality?
including the pepega if == installed
it is a knife with legs
uh huh
𓌬𓌬𓌬𓌬𓌬
i despise windows
i just want to be able to create a build without having to copy it over to an environment with actual filesystem flags
kek
bitch i will remove your kidneys
yooooo
I'll give you all my kidneys
idr when it swapped to UnixLink
there used to be Modding API Linux/Mac or something
did you change the modlinks?
me?
ye
when/what/why
i have changed many things
I don't think UnixLink is my fault though
might be though
it do be
interesting
debug version, so won't update
yes
bruh
otherwise i can't change modlinks
I need to ask angle to host it for me
yo just downloaded modinstaller2 for windows ONLY
:echprime:
listen if you have a good way to create .app on windows i'm all ears
The structure itself is fine, but you can't set it executable properly afaik
and angle is gonna kill me if I ask him to reset it
is he
that's true
I'm just lazy
.done
🥴
5yusuf6
So wait, is it possible that making the ModdingAPI change today has got people's bloatware antivirus scanners going crazy?
Would it only not have been acting up before, because essentially enough people had used MO1/MO2 with that software on, that it was essentially considered trusted?
Like, the impression I'm almost getting from the last few problems in #archived-modding-help is that the installers are getting pseudo-quarantined by their software.
https://paste.mod.gg/fepogozele.cpp anyone have any idea why this isnt working? It seems to make QoL mod throw a NullReferenceException, and it doesnt spawn anything or throw any errors itself
autoupdater if anything
au.exe permission gets denied
[ERROR]:[UNITY] - NullReferenceException: Object reference not set to an instance of an object
[ERROR]:[UNITY] - QoL.Modules.FastMenus+<FadeOutCanvasGroup>d__10.MoveNext ()
[ERROR]:[UNITY] - UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress)
[ERROR]:[UNITY] - UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator)
[ERROR]:[UNITY] - <HideSaveProfileMenu>c__Iterator1F:DMD<UIManager+<HideSaveProfileMenu>c__Iterator1F::MoveNext>(<HideSaveProfileMenu>c__Iterator1F)
[ERROR]:[UNITY] - UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
[ERROR]:[UNITY] -
oop sorry ping
is this 1.5
wha
did you build qol from source
no
are you on 1.4.3.2
yes
and it's only with that code you linked?
lemme check
oop nvm it still threw the exception
it still throws it even with my mod disabled
although with my mod enabled it just removes some of the enemies
https://paste.mod.gg/vipebegori.cpp this is the only other code in my mod
i mean does it happen w/out your mod as a whole
yeah
lol
where even does it happen
when i load in
ok but if its unrelated i still dont know why my thingy isnt working
the gruzzer spawning thing?
does it log
im testing it without qol to see if that does anything
it logs the "Spawned Gruzzer!"
but nothing spawns
lmao
https://github.com/Ayugradow/ModInstaller/blob/bdcc2f301515dea8e915f2f3e44c33d3c62a7d8c/ModInstaller/ModManager.cs#L451 apparently _apiLink can be null?
i just started it
is the updater being run in form1_load?
and then exiting using application.exit()?
afaik application.exit should wait for load() to end before actually terminating, so all the checks that happen in load still occur while AU is starting, and THEN modinstaller closes
application.exit is polite, ie will wait for the process to finish everything it wants to do first
including the load routine
i politely decine your offer
she hates us
you know what the pro move is
one that I should have done ages ago
screw that autoupdater
every time I update the modinstaller I should change something in the modlinks so only the most up-to-date version works
then everyone will be forced to manually update
thanks for coming to my TED talk
https://github.com/thegodfriend/buzzbo
This is the project right now, please forgive the mess
ngl there is no release here
you can put a zip or dll there
if you put a dll installer1 has a seizure
So a zip
if you're doing zip you just want like a readme + the dll at the base directory
yeah
Alright
@copper nacelle this good? https://github.com/thegodfriend/buzzbo/releases/tag/v0.4.2.0
That's true
Amazing
@dark wigeon sorry to be a bother but if you're not busy at some point is there any chance you could push the scenes menu
yes I can
tyty
yeet
what
search
did you like dnspy it
wow
there's a wpf version of fsmview avalonia somewhere that runs on .net framework
I have like two tests today so maybe sometime at the end of the day
I still want to fix variable bug
else if (fsm.FsmName == "Hatcher")
{
fsm.InsertMethod("Fire", 11, () =>
{
for(int i = 0; i < 5; i++)
{
var act = fsm.GetAction<SetFsmGameObject>("Fire", 10);
GameObject child = Object.Instantiate(act.gameObject.GameObject.Value);
child.SetActive(true);
child.transform.position = fsm.gameObject.transform.position;
}
});
}
when i use this it spawns the but they just stay still and dont do anything, how would i fix it?
that's what I've been saying
gimme short list of differences: crossroads <-> modinstaller 1
might have to enable the fsm or send it some event
crossroads is like an ancient installer that was beat by modinstaller
it was made in unity
how would i enable its fsm?
Scary
MonoBehaviour.enabled
that's the point
we make it in unity
then we build it for every platform
way better than avalonia
what
thefsm.enable = true
the real problem is probably that it's waiting for an event though
Yeah
Good idea
🐸🍾
🐸
poorman's frogchamp
if the fsm isn't on the fsmviewer, print out the object's hierarchy using yourgameobject.printhierarchytree()
or whatever the method is called
It will generate a file in the mods folder
is that method base or modcommon
Modcommon I think
I meant to reply to this but whatever
think I would rather shoot myself than do ui in unity
cant wait for kerr to be summonsed here after 50 years
courtesy of 56
that's enough unity ui for the rest of the year
did it look that bad
I mean
I thought it had a background at least
prob
wouldnt rule out the possibility of 56 sabotage
ok i got the hierarchy for the game object, what should i be looking for
the fsm
it seems like its fsm is called "Control" but im probably wrong
what gameobject?
the hatcher child
Anyone know where I can find the damage from 'super dashing' into an enemy? Trying to set it so the damage is amplified when wearing a certain charm/gives invincibility when super dashing into an enemy with this charm.
Which fsms did you look in?
that sounds right
just send the hierarchy tree here
I'm not entirely sure what gameobject is being spawned
all of the gameobject refs are null in fsm view
I don't know if the hatcher baby spawners are actually just the babies
gradow what
this could be a potential reason why modinstaller1 could be breaking fantastically atm
this is why _apiLink is being null 
are the 1.3.x mapi versions for past steam betas?
1315 was a patch bro
according to GoG:
R: 1.0.2.8
R: 1.1.1.8
R: 1.2.2.1
B: 1.3.2.8
B: 1.3.3.3
B: 1.3.3.7
R: 1.4.2.4
B: 1.4.2.7
B: 1.4.2.8
R: 1.4.3.2
obv R for release, B for beta
well it's wrong
or did it just got on gog with 1.4.x
they are racist against blue things
so fucking racist
could've been a private beta (only password protected), idk why that would be the case though
it was a dlc patch
yeah
1.0 no dlc
1.1 hd
1.2 gt
1.3 lb
1.4 gg
It had a beta before releasing but it did release
sadge though
maybe its not there because its not a major content release
and they are like "who would ever want to play lifeblood again" 
why
inventory venting
they are sprites from a jp game
its jewel and event
theres also "chage" for charge
suffering
all the versions available on gog are specifically useful for speedrunners
so that's probably why 
bro what about the hot 107 runs
wow a pr
because avalonia
that's true
awful
🥴
what
i should really get back into modding this game
current plan: you've heard of uumuu, you've heard of uuwuu, now get ready for uuuuu
sigh
one question before getting to that though for a different possible mod:
has anyone ever managed to mod in extra mask shards into the world to give the player more masks
it's fixed in the current ver
the thing is, the autoupdater was supposed to prevent that issue from ever happening
but it clearly doesn't
linux not supported because no one uses linux
basically all ui frameworks suck
the solution is clearly to use all of them: http://haxeui.org/
for windows and mac
linux is "community supported"
which just means they won't do it
also isn't maui just renamed xamarin
yeah there was a big github issue on it
yeah haxeui can do wxwidgets and qt but it's haxe
wait a second
haxe compiles to c#
gg
wtf sploopo from fargaming
I don’t think there’s an example, but it should be as easy as preloading the mask shard, instantiating it in the correct scene, and setting some Playerdata stuff in a fsm on it to different stuff. I think you might need to edit the mask ui since it caps or something? I think somebody mentioned that a while ago or something
The more difficult psrt id that the game only displays up to 11 normal masks (all 9 base game ones + heart charm)
Thanks
Curious about something, how hard would it be to change frames and/or animations on a mod?
I think they mean texture, yeah
that's not particularly hard
pixel knight is a shader right?
or was it glitch knight
idk what its called
the thing you made years ago 56
yeah
glitch knight is a shader
the invert one applied a texture transformation in just normal code
icic
Cool
oh that, I was talking about Hollow Point
I don't know why but the way the gun doesn't really interact well with the Knights other actions at times is kinda bothering me so I was wondering if it was possible to make changes to it
hollow point's source code is publically available
it's not a texture change
ahh right, github
there's just a gameobject parented to the knight
Well I'll get it and see what if me or people I know can do something...hopefully
Well I found the github anyway, thank you though
imagine parenting when you can set the position every frame and be part of the pale champion gang
please my eyes
Gas attacks dont affect mosskin enemies, doesnt work either on vanilla, im not sure if this is a vanilla bug or a feature due to lore reasons.
What does this even mean
stuff like the spore gas charm thing don't affect mosskin enemies
might be because of lore (spore doesnt harm them because they are related) or might be a glitch
just realized, he means the DD-crest gas, not the sporeshroom gas
So, err, how does one get their mod added to the community folder?
pr modlinks
pr modlinks?
Ohhhh. Thanks!
Okay, made a modlink. Who do I send it to? I assume there's an admin who has access to the shared folder to add to it?
you make a pull request on github
or you can just give me the modlink if that's easier
How do I use sprite packer in krita
I noticed that the latest code in the modding API would break grassbag, because grassbag accesses ModSettings.BoolValues which seems to be removed now. There's a new version of GrassBag (with a new name) that doesn't do that anymore, so it's fine, but figured I'd mention since it might not be obvious that change breaks backcompat.
the 1432 mapi or updates of 1.5 one?
I'm not sure, lemme just find the commit so I can be precise.
Compatibility already ded
Yep! Just found it too
yeah, that's already for the 1.5 beta patch
newest 1432 one would be https://github.com/seresharp/HollowKnight.Modding/commit/13d6a87c0f272ba10101b6201a0a8d6a8cc01820
cool 👍
I'm a bit confused by those versioning numbers, but sounds like there's at least two major versions of the modding API in the works that aren't compatible with eachother. So sounds like all is well.
1432 is current hk release and 1.5 are the beta patches put out the last days (1.4.3.2 and 1.5.numbers)
Aha! They're HK releases. Thank you, I think I'm understandin gbetter now.
I hope they didn't add more grass in 1.5 🤔
yeah 1.5 breaks every mod anyways due to net 4 so I took it as an opportunity to remove lots of stuff
ah makes sense, hard to pass up opportunities like that
currently none 
?
amazing
the code is such a mess atm
I honestly think it'd be easier to just rewrite it
i initially wanted to steal code from modinstaller to hkmanager but i decided to just move on without
ahead of you on that one
If you won’t do it I’ll do it
that's how installer2 came about
me and 56 had this plan to rehash the installer
but I was lazy
and mac deprecating 32-bit so you can't use the other one
56 maybe add a special case for modding api now that it is un-windowsed to put it at the top of the list, and disable all other options until you install it?
why
idk i want to stop telling people to install modding api when they complain mods aren't working 
does modinstaller2 also force enable dependencies when a mod is enabled?
might be a good idea if not
no
plus if you verify game files then it just says modding api is out of date, which unfortunately i see no way around 
echgod
you know what you should do
you should integrate installer2 to gog galaxy
so you can launch and install mods for multiple versions of hk from it
i have been kinda interested in hacking on the mod installer, figured i might try looking at it after i've got grassy knight (grassbag's successor) to the point that I feel good spreading the good word of the grass % speedrunning category.
dmca%
idk if gog would like that
I mean, the solution to that problem is right there in your name
it did take me a second to leave out 2 letters tbh
what the fuck
srry
ok
uh huh
what
ignore me
go to #archived-modding-help
🐌
good
i dont see it in the pinned
i did
what
then why are you still speaking
the point was that you should ask those kinds of questions in #archived-modding-help
People be dumb again
i am thoroughly confused. the hud elements' local scale to world scale machinery is all weird (specifically the geo counter's sprite but i suspect all those objects are guilty). despite me putting a lot of non-1 local scales in the transform heirarchy, and the renderer correctly respecting these local scales and scaling the sprite correctly, geoSpriteObject.transform.lossyScale gives a 1 vector.
been smashing against this for awhile to try and feel like i understand what's happening. no success yet.
is there some special "hud canvas specific" transform machinery i'm totally missing?
ah wait, that's not an accurate description of what's happening. i messed up my testing and was logging lossyScale before all of my localScale muckery. i still don't know what's going on and now i'm back to not even knowing what i'm missing.
So... my sprite packer broke must’ve done something wrong when I put the sprite folder in the folder thing
Hi, a couple of friends and I have some great ideas for new charms, new, areas, and new dialogue to add to the game but none of us know the first thing about making mods. Do you think you could point us in the right direction?
Can you show your code?
Look at the getting started page, video tutorials page, mod class page, hooks page, adding charms ect page, and modifying scenes with utiny ripper page
For adding dialogue, do you mean adding a new conversation to a npc or adding a new npc or something else?
Or changing dialogue?
i'll form up a small test case if i'm still stuck after trying a few things here... i'm not sure what i'm even getting stuck on right now honestly, been smashing against this a bit too long is suspect
@native pelican I think it's because many HUD elements in the game seem to not the normal way of displaying UI elements in Unity, which is to have a canvas object and all the UI elements inside of it. I also dealt with this when developing my "WeaverMod Settings" screen, and I just ended up adding a canvas myself and using that to display it. The method that the game uses could be using 2dToolkit, as shown here:
https://www.2dtoolkit.com/docs/latest/ui/basic_layout.html
2D Toolkit
hmm that looks like a good read. there's these definitely have the 2k2d (or whatever that combination of letters and numbers is) components
thank you!
Is the code for Customknight publicly available?
Thanks 
You can also see how I handled it in enemyhpbar
I basically used a canvas, like nickc1 said
how do i start developing mod?
Thank you for helping! We aim to add a new conversation to both Tiso and Cloth along with new charms. We also aim to give Tiso a dream battle. I’ve been looking into it and I was wondering two things, is it possible to put custom music in Hollow Knight, and can you please point us in the direction of a way to make a custom sprite sheet for a new boss? We do not aim to change any existing content in the game, just add to it. And also any help with adding dialogue conversations would be greatly appreciated.
Although, now that I think of it, we do need help on making a new scene transition in Sly’s old house to take the player to a new area we are planning out. Honestly odds, ends, tips, guides, anything you can do to help us would be great!
We’re planning to call this mod The Chosen Vessel based on the cliche of
||The Pale King choosing the Hollow Knight||
But in our mod, it speaking of you, the little knight being chosen by fate
Cool
Adding custom music is easy, I think you can look on the charms page again(the page contains a bunch of stuff in SFCore) adding dialogue will require editing an fsm I think
custom music is easy, the most difficult part of it was to figure out what audiomixersnapshots exist and then the construction of musiccues
I may have something that could help. I compiled a document with all the music related groups and snapshots, as well as their volume settings. Did this a while back when I worked getting music to work in WeaverCore.
the most cursed about that table is that the action, extra, ... columns aren't sorted the same way as in the enum
thx
how to edit charm stats?
idk if you mean that
I used if (PlayerData.instance.GetBool("geo") > 100) {} and it says "Error CS0019 Operator '>' cannot be applied to operands of type 'bool' and 'int' "
can anyone help?
Well the geo is an int so you should try using PlayerData.instance.GetInt("geo") instead I guess
@copper nacelle you pasted a google drive ID again https://github.com/Ayugradow/ModInstaller/blob/master/modlinks.xml#L94
idk, the repo just hosts the dll
is there a special substring for the entry gate when I want the player to be in the lying down position when they return?
rn I just use "door_dreamReturn"
but the player can move around while they are in the lying down animation so I was wondering if maybe that was wrong
afaik the transition and maybe a fsm on the dreamreturn thing should prohibit moving
weird
it works fine when the player dies and leaves the dream but when the player wins and I do a BeginSceneTransition to leave, the player can move after the transition
the game does a bit more than just beginscenetransition
the fsm i have this from is GG_Nosk_V/Boss Scene Controller - Dream Enter Next Scene
What is "SHA1"?
a checksum
What do i fill in there
the ckecksum of your mod (the .dll file most likely)
where do i find the 'checksum'
7-zip adds a CRC SHA option to the right click menu, in which you can select sha1 and view the checksum, but there are also alternatives
like fciv (afaik a microsoft tool)
or possibly also online tools
ok
I think it was HeroController.instance.EnterWithoutInput(true);
Thanks. I was using an FSM to do it but the fsm didn't have that in it.
How do I change the key white defender uses to get the text at the end of the fight
// index 3 is to get the amount of defeats of wd
// to use when normal wd, is the repeat convo
whiteDefenderGo.GetComponent<EnemyDeathEffectsUninfected>().corpsePrefab.LocateMyFsm("Control").GetAction<BuildString>("Set Outro Msg", 4).stringParts = new FsmString[] { "yourConvoNameHere" };
// or these two
whiteDefenderGo.GetComponent<EnemyDeathEffectsUninfected>().corpsePrefab.LocateMyFsm("Control").GetAction<CallMethodProper>("Outro Msg Repeat", 1).parameters[0] = "yourConvoNameHere";
whiteDefenderGo.GetComponent<EnemyDeathEffectsUninfected>().corpsePrefab.LocateMyFsm("Control").GetAction<CallMethodProper>("Outro Msg 1a", 1).parameters[0] = "yourConvoNameHere 1";
whiteDefenderGo.GetComponent<EnemyDeathEffectsUninfected>().corpsePrefab.LocateMyFsm("Control").GetAction<CallMethodProper>("Outro Msg 1b", 1).parameters[0] = "yourConvoNameHere 2";
thanks
?
he is responding to that
does anyone know what path i should use to DllImport for a mod
Im trying to give the dash(mothwing cloak ) to the player and before they have encountered hornet using PlayerData.instance.hasDash = true; The mothwing cloak shows in player inventory but is not able to be used also when after fighting hornet the dreamrs cutsence dose not play and the gates in do not open softlocking the player.
this works for all other ablilitys like double jump
canDash
were is that in documentation
I gotta say the internal classes are not exactly documented
As far as the cutscenes go you prob just need to modify an fsm
not necessarily but a lot of the logic in this game is
btw that worked
nice
how would i know if cutsences are controlled by a fsm
use the fsm viewer and look at the scene
I got fsm viewr and I dont know what level# is the hornet boss room
do you have debug mod
there's a scene name
hornet 2 boss room? you mean Edge_Hornet_Sentinel_Arena? 
h1
Sounds right
I just use grep to find scenes so I don't have to open the game
why
<@&283547423706447872> channel spammer 667488264818655250
Are you 56?
hello my fellow Arabian friend
unfortunately I'm iranian not arabian, but hi anyways friend 
Amazing
Maybe I'm being dumb but are there some FSMs missing from the FSM viewer? e.g. the scene dump for Crossroads_04 includes an FSM for the object Corpse Big Fly 1(clone) FSM name corpse but I can't find it in the FSM viewer list for Crossroads_04. (It's the same for other corpse FSMs, it seems)
Oh thanks! 
saleh did you find out?
I just did it differently
btw, it may have been DialogueBox.SendConvEndEvent()
what tells it to do that when the player presses space
shoot sorry didnt mean to ping
i have no clue and it isn't even the right event though
Does anybody have a mod where it does nothing but remove the shade?
Are you talking to me?
I'm so pleased with how this counter turned out. Thanks for all your help ya'll. Got a ton of help from this channel.
doesn't it clash with high geo counter?
Can anyone remind me what is going to change when the new updates come out of the beta?
playmaker fsm
some event names changed
no, i built a simple layout system. they'll all move out of the way of eachother if needed.
ah ok
How easy would it be to make a mod that just gets rid of the shade?
are you actually counting how many times the player has slain a poor unsuspecting piece of grass? Amazing
I don't think it'd be hard at all
but idk
never messed with it
the grass is guilty
they're all guilty
yo does anyone know when silksong is coming out
yeah
yeah
i've compiled a short list of things all around silksong https://hk.sfgrena.de/
die
fungus3_39 should be fungus3_49 in the google drive with all the maps
pls fix
@ mola

i've also been tripped up by that
i never had that poggers
it happens once every ten times I open the game
players will just have to live with it like I did
is it because pale court?
yea
smh
was I supposed to use an older version of SFCore for the special title screen? Because I accidentally updated it and now there's a bunch of SFCore errors at every scene
ok will do
So you don't think it would be that hard. Unfortunately, a: I have no coding skill, and b: I have a mac. @solemn rivet
b is irrelevant
And a is fixable
yeah i do all my mod dev on mac. don't even use vs
So I'm going over traitor god to see how the texture is changed, and I see different objects reskinned into sprites found in TraitorGod.Sprites[]
Now, those sprites are, if I understood correctly, the bunch found in the Assets folder
Thing I can't find is where and how is TraitorGod.Sprites[] defined
Wait I'm an idiot 
TraitorGod is just the other file
Well how would I make a mod that just makes a shade not spawn then?
getting started progrmaming if you never have before is tough. you'll spend a lot of time just smashing against walls. but if you're down for a long frustrating experience, you'll want to install visual studio for mac and then try and install the modding api: https://radiance.host/apidocs/Getting-Started.html
there's some example mods that ship with it that you can just try building and running in-game to get the hang of what building entails
Updated to net 4
aight, thanks
modding api crashes the latest beta when creating a new godseeker save
apparently also entering those
ik im late but silk song is coming out in 205228525
crashes on normal saves as well
did they change?
idk how to check that
hmmmmm
just dnspy it
Oh my game was dying at startup
Not even on save load
Forgot about that
Sick
seems to still be netstandard
afaict it crashed here
0x000001EAEB9B4C79 (Mono JIT Code) (wrapper managed-to-native) UnityEngine.GameObject:GetComponent (UnityEngine.GameObject,System.Type)
oh that's an easy fix then
poggers
I'm honestly not sure if it's worth going through all the trouble just to make a mod that removes the shade.
you could probably get easymod's code and remove everything that doesn't involve the shade mechanic
hmm... maybe
I'm trying to figure out how to access its code
I know very little about any of this
I only want no-shade though. That's the problem. It's too easy for me with everything else in there.
that's the code
How exactly does the cameralockarea use the boxcollider's values to set the camera's min/max fields?
I've tried making a boxcollider that that covers the spot where I want the camera to freeze but instead of locking there, the camera moves to the (0,0) coordinate instead for some reason
I have it set like that
because it's fairly trivial, i've done it for you here 
shade spawn only
GameObject parentlock = GameObject.Find("CameraLockArea (1)");
BoxCollider2D lockCol = parentlock.GetComponent<BoxCollider2D>();
CameraLockArea cla = parentlock.GetComponent<CameraLockArea>();
lockCol.size = new Vector2(32.7f, 24.57f);
lockCol.offset = new Vector2(-32.123f, 0f);
cla.cameraXMin = 167f;
cla.cameraXMax = 231f;
cla.cameraYMin = cla.cameraYMax = 102f;
I tried this
wdym -1?
I printed the mins and maxes and they're just zero
you can set the camera min max values to -1
any log statements from the game?
the one above
from the game not you
nope
well there's
but idk if this has to do with the lock
it doesnt happen when I set the lock so...
I usually just do it in a hacky way where I hook to cameralockarea's trigger2d and the min/maxes there but I wanted to do it the right way this time
when/where is this being printed and are you printing cameraXMin/max or something else
I'm printing them in the trigger2d
Trigger2d where?
in the CameraLockArea
so at the beginning of OnTriggerEnter2D you print cameramin/max?
nothing can set those values to 0 unless that trigger happens before you set the values and it's still default 0
Yo @deep wave . I appreciate the whole thing, but for some reason my shade still spawned when I died. Did I do something wrong?
screenshot the title screen?
oh you already did in #archived-modding-help
looks like you still have it disabled/not installed
check if it's disabled in the in game mods menu
Naw I checked. It says it is enabled. I'll try turning it off then on again.
Still spawning one (1) whole shade
The mod manager should have a refresh option so you dont have to close and open when you want to detect new mod that you manully put in the mod folder.
doesn't it have the Manually install mods button?
but maybe https://docs.microsoft.com/en-us/dotnet/api/system.io.filesystemwatcher is something one could consider
In regards to the CameraLock problem from yesterday, I deleted the CL and made a new one with code with the exact same settings, and now it works
So maybe some of the settings were breaking in the transition from unity to bundle?
idk why it would, but maybe
btw, idk if you edited the cameralockareas by hand, but for visualizing i also have an editor script for those (https://github.com/SFGrenade/ModdingHelper/blob/master/Unity Scripts/Editor/CameraLockAreaEditor.cs)
ooo
I had a question about this FSM. Why does it set Time per MP Drain to Time per MP Drain UnCH instead of just using Time per MP Drain?
I can see that there are three different values, though I'm confused why there are three in the first place instead of just two
Maybe different charms?
they could've hardcoded it, but the fsm doesn't get unloaded or reloaded ever, so they use that to reset the time to normal when focusing without quick focus
So the 0.0325 value just doesn't actually get used?
afaik yes
you either need 3
if(quickFocus)
chargeTime = chargeTimeCH;
else
chargeTime = chargeTimeUCH;
or hardcode it
if(quickFocus)
chargeTime = 0.018f;
else
chargeTime = 0.027f;
or some complicated stuff
if( (quickfocus && !wasQuickFocus) || (!quickfocus && wasQuickFocus)){
float temp = chargeTime;
chargeTime = chargeTime2;
chargeTime2 = temp;
wasQuickFocus = quickfocus;
}
the 0.0325 was probably just old code before they added charms
hmmmmmmm for some reason the player doesnt take dmg any more in my custom scene
the invincibility is set to false
nice
Cool
@deep wave Sorry about bothering you, but as I said earlier, the shade still spawns, and the game definitely detects the mod as being active. It says EaseMode 1.0.0 in the corner.
Could it be because of this?
[ERROR]:[UNITY] - NullReferenceException: Object reference not set to an instance of an object
[ERROR]:[UNITY] - PlayerData.SetHazardRespawn (HazardRespawnMarker) <0x00012>
[ERROR]:[UNITY] - HeroController.FinishedEnteringScene (bool,bool) <0x00161>
[ERROR]:[UNITY] - (wrapper dynamic-method) HeroController/<EnterScene>c__Iterator0.DMD<HeroController+<EnterScene>c__Iterator0..MoveNext> (HeroController/<EnterScene>c__Iterator0) <0x0170d>
[ERROR]:[UNITY] - UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator,intptr) <0x00046>
[ERROR]:[UNITY] -
how did you make PlayerData.SetHazardRespawn throw an nre?
do you also have Serecore enabled?
ig i'll @full peak i've tested this and it works on my end, make sure you also have serecore enabled as it is required by the mod (doesn't stop it from loading though, there should probably be a check for that
)
just use a serecore method that does nothing in initialize, crashes if serecore's not present lol
Oh thats probs it
yes but i didn't make the mod
i just unhooked everything except shade spawning
hi there, i dont want to interrup or anything, but someone here knows where or how to find the original pale king skin mod? The one that changes the spells and stuff
when the mod is made in a nice modular fashion then just doesn't have a globalsettings 
i search and search, but i only found the public one
#modding-discussion or #archived-modding-help , but iirc the pale king is a private(?) skin for customknight
Mmmmm, well thanks any way, i will keep searching
@tough wyvern It was a challenge skin and you won't be able to obtain it unless the challenge comes up again
If you find somebody distributing it, please inform people here, as they shouldn't really be doing that.
there's no point in searching for it and distributing challenge skins is scummy and against the intention of the skin makers
Yo I did it! It works! Thanks so much @deep wave and @light zodiac for helping me with all this! I appreciate it very much!
Curious, thanks for the tip
there's a chance
but I wouldn't advise keeping your hopes up
people have been pirating skins and giving them to people who didn't earn them by doing the challenges required
I hope that challenge comes up again some day
so the skin makers feel discouraged
well thats some bad shit
with reasons
how tf does
foreach (var callback in AddCustomRunEffectsHook.GetInvocationList()) {}
throw an NRE?
the type of it is
public delegate (int enviromentType, GameObject runEffects) CustomRunEffectsHook(GameObject runEffectsGo);
public static CustomRunEffectsHook AddCustomRunEffectsHook;
If no methods have been added to the event itself then it returns null. Events should generally be checked for null before usage.
no registration == nre
registered lambda == no nre
best (depending on taste) route is simple
if (AddCustomRunEffectsHook != null) {}
Is there anywhere an organised list of links to the code of all the different mods?
Or do we just need to remember who made what and look for it
yeah, just did it, but good to know the mechanics behind it
in most cases the code is on github
somewhere on github
You might be able to look in 'modlinks.xml' as some people are using a github link for their mod but other than that it's up to a simple search
https://github.com/RechercheJewel/HK-Job-Change i love this repo
appears to be
They've taken the liberty of precompiling the source code for us...
binaries in repos 
Welp I can't find transtrans 
that is indeed not on github
You can use dnSpy or similar, yeah
You just have to open up the .dll with it and you'll see the decompiled C# code
it's not as good as actual source code but the logic is all there and mostly clear
Hm
Do I extract the sprite folder before I put it in
When I put the sprite folder in my sprite packer won’t open but when I take the sprite folder out it starts working again
i'm trying to know exactly which enemy gameobject spawned a particular enemy (ex: the particular aspid mother that spawned a particular hatchling). anyone know of a function that the game calls when its about to spawn these mini-enemies that i can hook into?
Isn't it in the fsm somewhere?
Gimme a sec I'll find a scene with one, unless you have an example alrady
Huh
Hmmmmmmmmmmmmmm
How have you been modding?
You need dnspy to look at the code of hk
Or ilspy
i also mod without looking at the games code bc i cant find how to search in dnspy
Search for an assembly or search in the assembly?
i don't even know what an FSM is still 😅, haven't needed to figure it out yet... though it sure sounds state machiney.
just search everywhere
i have used all the shortcuts but couldn't find it
Edit > Search Assemblies once you have some open
Right Click on something > Analyze to see where it's used
in the assembly
Smh not gonna grab my pc to get the steps
i've been a bit worried i'll have to uniquely hook into each enemy that can spawn others... i've been hoping the game always calls some "spawn my babies" function regardless of whos doing the spawning.
@native pelican I want to say there's a spawn state in the FSM you can hook, I'll have to look again
how are you looking? dnspy?
wdym
Fsm viewer
You kinda need the code of the game to do pretty much anything in my opinion
i made a perfectly good grassy mod without ever looking at the game code 🤷♀️
Ok
How long did it take?
We’re there times where you didn’t understand what was going on?
lol this is way too leading. if you're trying to show that i would've had a faster time of it looking at the code, you may be right. i really don't know.
You saw what I did though, it wasn't much
Good point
oof... this sounds like it'll be a rough time. a lot of one-offs.
so what exactly are you trying to do?
aha! i remember that page. thank you! i'll read this now that i have much more understanding of modding things generally.
tryna help the folks over on fireborn discord server who wanna do silly %. their rules say that if you kill and enemy you've gotta kill all of its spawn too.
most of them don't drop geo though
are you talking about me? my pronouns are they
if not all
yeah, i think that'll be my saving grace. i gotta think about what spawns i can ignore because of that.
if there's only a few, i can probably do some one-off shenanigans
was hoping there was some nice "spawnMyChildren" function that'd take care of it across the board though so i didn't have to worry about it
but whatcha gonna do 🤷♀️
The hatcher has a state that sends a SPAWN event to a game object which you might be able to 'hook', but I've never tried something like that
afaik (haven't looked at it though), it's handled with a sorta generic Spawn method
uh i kinda came here for the hollow knight mod installler
I also want to say that the 'Spawned' enemies are actually already spawned in the scene, just inactive
can anyone provide im new to this game even tho i bought it three years ago just started playing it
Noe
ah that's good, i put nametags on all the enemies once they're created because i use their spawn positions to uniquely identify them. that will probably make this a little easier.
thank you both for those leads. i've got some new tools to play with (fsm viewer and dnspay)
i'll see what i can find
is grassbag/grassy knight quality of life or functional changes? (or misc?)
massive qol improvement. you didn't know what grass you had cut before. you do now. i don't know how i can sell this any harder
alright
I think quality of life. Grassy Knight does not make any changes to how the game behaves, and only adds the counter (and if enabled via the settings, a compass).
no dependencies anymore i guess? (for grassy knight that is, as grassbag seems to be the older version)
Oh yes, that's correct. I might've actually forgot to remove the ModCommon dependency in that PR i made... imma go check that.
Was using ModCommon to get access to the coroutine scheduler but figured out how to do it without
nah you didn't forget anything, no dependencies are in here https://github.com/itsjohncs/GrassyKnight/blob/main/GrassyKnight.csproj
then it's on the mod summaries now pog
pog! thank you!!
do object pools get initialized in the menu scene?
certainly possible
i was modifying some prefab objects and noticed that some were already instantiated
guess i'll just look there first
is it alright to take code from other people's mods for things like swapping out textures of things where they probably have the simplest way of doing it?
let's just say that you got inspired by those mods
i haven't seen very many licenses in mod repos... so i guess technically no. but it also feels like folks don't really mind 🤷♀️.
oh wild, why? is that a requirement for inclusion in the mod installer?
i put grassy knight into the public domain (essentially)
I mainly use MPL 2.0 or MIT personally
pretty sure it's because they all use the modding api
but I don't think anyone cares unless you try to monetize your mod or something dumb like that
the modding api uses mit which freely allows folks to make stuff using it. so things built off of it can be licensed however.
i should put gplv3 on my modding helper stuff 
from a straight license perspective yes, but TC wouldn't allow it
and it's their IP after all
monetize your mod
the gpl thing is fine, as the mapi was licensed with gplv3 until some time ago
ah i see, that'd be interesting if someone tried to do that. i feel like i've heard of related court cases... it's been a long time since i was super into licensing though.
(court cases where someone monetized some mod-like-thing and the company behind the original thing tried to stop them)
I'd like to see tc try and stop me from charging 100$ for pale court
ez by just not allowing you to use the name Pale Court, as that is the name of a song from hollow knight
that's ok the mod is called Five Knights anyways :)
is there a download link for the custom skin moder
i made a new license a long time ago for something i built... not the best use of time. but was fun
Huh. For those who have posted mods up: My mod is now in the mod installer, but the readme file didn't seem to be up with it. It's in the zip folder on github, not sure why it wouldn't be a part of it. Any idea why?
Hey, I was trying to build the Hollow Knight Modding API for the latest beta Hollow Knight, was there supposed to be a ModdingAPI.zip file that contains the patched assembly?
build in release
debug doesn't zip and stuff because I hate build time
if you want it to work rn exclude the hascomponent patch
Haven't fixed it yet
yep, that worked. Thanks
Goddamnit this feels like jojo localization

@jolly oriole fixed it
for anyone too lazy to build for beta
I replaced the handlers with Func/Action for a bunch of stuff so rebuild might be needed on mods
Still have some I could remove tbqh
poggers, though idk what handlers were changed, so ig i'll just rebuild regardless
i don't find that in the commits though, did you push that?
god fucking dammit discord edit
ah ok, i thought you meant more recent
nah i just noticed when i actually updated my api and all my mods exploded again
lol
btw @vocal spire might be interesting for you, i think i'll integrate either the item page system you sent me or something comparable in sfcore finally for "infinite" items
Ok
also just now realized that the custom items would completely break once people save+quit lol
damn, to think that i have exactly 1 field unused when saving all aspects of the delicate flower
first of 3 parts done
What are you trying to do?
Allow infinite items in the inventory
Grenade made sfcore SFCore allows adding items
for dnspy do I just go to releases and get the zip?
They bug out if you add more than the original space in the inventory
Aren’t there a bunch of files in the releases?
five of them
I forgot which one to get
Just anything that’s not source probably works
Alright thanks
You can do a GetComponentsInChildren(true) and then filter through that but yeah, unfortunate that Find doesn't have a similar overload
i simply made a recursive extension method lol
Which of these do I need?
dnspy
And only that?
i mean, the bin folder is probably required to run dnspy
And the third one?
if you want to dnspy using the console, then yes
Does this mean that anything killable with Climber in the name will be turned into a transtrans?
Even if I make a new thing of my own which for whatever reason has climber in the name?
yes
but you can make it crash if you don't have the tk2dsprite monobehaviour on the go
So, uhhh... if it's okay for me to ask again? How can I get my readme to work in the mod loader? I have both the mod and the readme file inside the zip file on both github and the google link, but for some reason the mod can be downloaded just fine, but the readme isn't.
i really don't know much, but i was poking around the mod-installer's code a bit ago and saw a comment talking about limited extension support: I think your readme has to end with either .md or .txt and it might be case sensistive.
wait what's jewel's readme?
It does end with .txt. The job change mod.
welp, now you know ig
Gonna go fix that. Thanks!
There, hopefully works now.
... Huh. Still says no readme exists.
Ahhhh.
So it needs to be README, not readme.
that's because the installer uses https://github.com/RechercheJewel/HK-Job-Change/files/6126538/Job.change.by.Jewel.zip for the zip, you'd have to pr the modinstaller repo https://github.com/Ayugradow/ModInstaller to make the change to the modlinks to use the new link




