#archived-modding-development
1 messages · Page 525 of 1
there's already a 1.5 branch right ?
i was just trying to do an equivalent of if(false) without changing the code, i may as well have commented the block lol , though looking at Mul's editor it makes me question if C# even short-circuits boolean logic how i was expecting it to at all
all i know is if i recompiled mapi on macos controller would work, and similar motivations lead to the creation of unix.zip. 56 probably knows more as they'd made the zip afaik.
if your json files are messed up
you should know
but this is configuration data
and if your file is messed up, we don't want to override the config with the default
because that could mean you'd lose all of your stuff over a simple fix
That simple fix is deleting the file which is the same as a reset. We could just create a message saying "there was something wrong with your settings file so it has been reset. Please press KEY to continue"
look
i do be blind
unless the user is explicitly editing their json files
Yeah. I get why unix.zip is there. I want to know why there is no difference between macos and unix
this stuff wont ever be invalid
and if they are editing it
most likely they forgot a comma or some shit
so which is better
resetting all of their data
haven't we had cases where it just happened? The serialisation can fail or the write to the file
or telling them theres a problem
it shouldn't
unless a mod is extremely bugged
but thats on the mod author
afaik no
do they both use Mono runtime to run unity games? if so that might be related
what does this question even mean
the assembly-csharp is the same for unix and macos iirc
ok. That was my guess but I was too lazy to verify
yeah. Something like that is fine too. But now it just breaks down
I mean an error gets printed
also, Fyremoth is encountering a similar issue right now. For some reason the code that adds custom items and journal entries also messes up the save selection screen and we have no idea why
maybe : fix the settings.json and make a backup of the player's previous settings, in case they'd like to recover them + print a message in modlog
The and gets evaluated first. So you could've done what you wanted to do if you put brackets around the or statement
Anything obvious in player.log files or other log files?
right, i was being dumb that's how that'd work , makes sense.
fine
Yeah. Something with the language function erroring out even if no language is requested. It throws a nullreference error. The weird thing is that the stack trace doesn't not contain Fyremoth but we're sure Fyremoth causes it
I'll work out something
I'll just keep the game open and log that the settings are fucked
the user can just delete the files or whatever to fix it
also uh you do realize you have to set default global settings yeah?
hold up
it literally doesn't even crash
_>
i remember seeing this for the benchwarp crash and seeing that even though there is a try catch, in some cases benchwarp screws up it's settings and then things dont work.
well as you can see in the code flow
the value doesn't get set if the deserialization fails
which means that the default value of the settings field gets used
yep that's what i'd concluded. i'm just confused about how deleting the settings file fixes the issue. 
referring to <#archived-modding-help message>
there is no issue
what issue
i was referring to how this fix works
If you are using Benchwarp Mod and no mod text shows up in the top left of your title screen....
idk if theres a bug send logs
plus thats from 1.4
I completely rewrote the save file implementation in 1.5
true
if this happens again in 1.5 i'll be sure to send the logs
like as long as you implement the interfaces correctly and w/e
there shouldn't really be any problems
because the source assembly is the same
qed
if a mod errors in their unload i think mapi breaks
So i tried it with radiance , ended up having to replace like 6 GO's tk2dsprites but it works. the halo behind radiance is a sprite though so that stays the same for now.
so i guess it should work for the rest of them too
apparently it switches back and forth between a version of the same sprite for some reason, so i made a cursed skin for it 
huh was it not wrapped in a catch
gonna check
nope its fine
ah I do need to wrap init though
This should fix it : https://github.com/HollowKnight-Modding/HollowKnight.Modding/pull/58/files
okay
Having a ref of another (non-library) mod can cause the loader to die
Then I’m happy Fyremoth uses reflections to add mod compatibility. But we mostly did that so you don’t need to have all those mods installed.
how does one make the scroll bar of the modmenu scroll the content ?
okay giving the thing a size fixed the scrolling but using keyboard does not scroll now
it scrolls using keyboard if i click the scrollbar before pressing the keys but it does not auto scroll when i press down and end up selecting an option that isn't visible
.
yo this menu cool
Code?
the addMenuOptions is basically same as that's on the repo (with a few more elements), i've fiddled with this to get it to scroll. so far this is what i have
Do you guys know which mods on this list:
Benchwarp;
Customknight;
FrogCore;
Hollow_Point_changes_Fix;
HollowknightDRPC;
HowwowKnyight;
Modcommon;
QoL;
SereCore
SFCore;
Vasi.
```Can be causing this:
```cs
[ERROR]:[UNITY] - FormatException: Input string was not in the correct format
[ERROR]:[UNITY] - System.Int32.Parse (System.String s)
[ERROR]:[UNITY] - HutongGames.PlayMaker.Actions.ConvertStringToInt.DoConvertStringToInt ()
[ERROR]:[UNITY] - HutongGames.PlayMaker.Actions.ConvertStringToInt.OnUpdate ()
[ERROR]:[UNITY] - HutongGames.PlayMaker.FsmState.OnUpdate ()
[ERROR]:[UNITY] - HutongGames.PlayMaker.Fsm.UpdateState (HutongGames.PlayMaker.FsmState state)
[ERROR]:[UNITY] - HutongGames.PlayMaker.Fsm.Update ()
[ERROR]:[UNITY] - PlayMakerFSM.Update ()
[ERROR]:[UNITY] -
Pale court?
Remove that and see
i doubt CK is it, though you were messing with geo when it happened
highly suspect HowwowKnyight
i'll try and if it is then i'll have to live with softlocks
is HowwowKnyight even on github?
no, i dont think so
i cant find it
big sad
download swapster, set your own rules to convert chunks of text into owo in replace.txt
for example if you add this:
ll=>ww
ni=>nyi
hollow knight becomes howwow knyight (and all other words matching the pattern)
same
if u want the modlinks commit you can just look at file file history / blame
just do this, you'll have fun tuning the owo to your liking
and once you're happy with it, you could just make your own owo mod that follows those rules
Just use dnspy
i am
or this >.> , this can work
I hate this mod. I looked at the code once. It is like unreadable
i hope it's not hardcoded strings and actually rule based
I mean: all variables and functions also have OwO names
Why is owo to OwO an autocorrect feature?
I hate it
i mean if any mod should have OwO variable names it's that one
xD
but this will never do the same as howwowknyight
why ? it's all string replace in the end
not yet
{
"R",
"W"
},
{
"L",
"W"
},
{
"l",
"w"
},
{
"OU",
"UW"
},
{
"Ou",
"Uw"
},
{
"ou",
"uw"
},
{
"TH",
"D"
},
{
"Th",
"D"
},
{
"th",
"d"
}
is that what i'm looking for you think?
and this then:
{
"N([AEIOU])",
"NY$1"
},
{
"N([aeiou])",
"Ny$1"
},
{
"n([aeiou])",
"ny$1"
},
{
"(?<!<b)r(?!>)",
"w"
},
{
"T[Hh]\\b",
"F"
},
{
"th\\b",
"f"
},
{
"T[Hh]([UI][^sS])",
"F$1"
},
{
"th([ui][^sS])",
"f$1"
},
{
"OVE\\b",
"UV"
},
{
"Ove\\b",
"Uv"
},
{
"ove\\b",
"uv"
}
how do i do that
no can do regex but atleast the first one is just
ni=>nyi
na=>nya
...
and this would be impossible:
bool flag7 = owig.EndsWith("?") || (!flag4 && Random.value < 0.2f);
if (flag7)
{
owig = owig.TrimEnd(HowwowKnyight.sepawatows);
switch (Random.Range(0, 10))
{
case 0:
owig += " uwu";
break;
case 1:
owig += " owo";
break;
case 2:
owig += " UwU";
break;
case 3:
owig += " OwO";
break;
case 4:
owig += " >w<";
break;
case 5:
owig += " ^w^";
break;
case 6:
case 7:
owig += " UwU";
break;
default:
owig += "~";
break;
}
}
return owig;
anyways imma try looking at it better later, but i have to go now
still no idea how it gets caused
yep not possible to do this unless you do some trickery
a shame they didn't write a utility to convert things like 'TrimEnd' to 'TwimEynd' in the main mod (oops didn't mean to ping!)
That version does exactly nothing
How dare you waste my 1540 byes of space
Oh dw about the ping
Smh, not checking a mod before installing it
Weren’t you working on that?
it's fucking awful
any one else who has implemented the mod menu / can share any insights on this ?
I have never had this before, and i just realized it has its own folder in mods, maybe deleting that/ its globalsettings fixes it?
I shall try later
sounds to me like at some point it adds some owofication to a string that is then attempted to be parsed as an Int
Oh!
That would make sense
It tried to owo-ify the numbers in the bank
How would i fix that if i had the code?
i mean you could see if the string can be parsed into an Int, if yes don't owofy it
is owo-ify a word lol
ok i'm really confused rn
that folder i talked about is completely empty
what is it for
which would i choose
Modding. or UnityEnigine.
nvm
what why does GetActiveScene() not exist
what even is scenemanager
this is a giant mess
what is Scenemanager
Unity one or hk one?
idk
i assume unity:
SceneManager.sceneLoaded -= new UnityAction<Scene, LoadSceneMode>(HowwowKnyight.ActiveSceneChangedHandwer);
Try adding
using SceneManager = UnityEngine.SceneManagment;
to the top
Screenshot?
I made a spelling error

the 2 errors get fixed
make that line
using USceneManager = UnityEngine.SceneManagement.SceneManager;
and you should be good
wait the 3 errors have changed
nope
just need to have the unity one be addressed with u at the front
line 89
Remove the
Stream stweam = null line
i shouldn't be worried about yield break; not getting reached right?
i can't believe that that mod does sprite replacement in coroutines 
See APIs code or my more saves branch (check modmenu.cs)
Both uses scroll bars
i'm just going to build and hope for the best
it does seem to have worked
Handle isn't broken for moresaves
how would i even do that
int.TryParse?
Int32.try parse
Nervously starts laughing
Fyremoth is fine
listen, i can 0 csharp what do you even mean with that
We also do it in a coroutine
int.TryParse method
Why does coroutine auto correct to corpse stone?
It’s fine, sprite replacing occurs like one frame after we start it
Yeah
I’ll move the stuff out of it if you want, don’t like hollow point compatibility called there anyways
Maybe you like corpses so that's why autocorrect likes that word
Why not use sfcore?
Yeah.
so how would i put that in an if?
if (int.Tryparse(blabla) == true)
?
i did not make this
because sfcore is there to add, not replace logos
Ah. You used dnspy.
Ok
yup
if (int.TryParse(string, out int somethingy))
Add the == true part if you want, doesn’t matter
why tryparse, just parse and let it crash
if (int.TryParse(string, out int _)) ?
well thats what happening rn and is causing a softlock
sad
You can add a try around it, but if you want to continue with TryParse, do you ever need to use the parsed value?
Well if you have a string 1
it gives a int 1
i want, that if the string i give it contains a number, then ignore it
If you have a string 2527384843
it gives a int 2527384843
If (string.Contains(0) || string.Contains(1) ect) I think
Might have the wrong method name
i don't understand shat of what i see here, so this is going to be pain
If the string contains a number(have to code each number 0-9)
So
if (contains numbers)
continue
Just use regex
make a list from 0 -9 and foreach the list
so what i actually want is If !(string.Contains(0) || string.Contains(1) ect)
cus i want it to stop if theres a number
ok wait let me explain what i'm trying to do again
Well if you do it without the ! Then you can add a line with just return after the if, but I suggest Mul’s idea
No I understand, if it has numbers, don’t do code
I’ll just rewrite it
I want, that if the string i give it contains a number, dont OwO-ify it
Cus it OwO-ify's numbers rn and its creating softlock bc of this:
[ERROR]:[UNITY] - FormatException: Input string was not in the correct format
[ERROR]:[UNITY] - System.Int32.Parse (System.String s)
[ERROR]:[UNITY] - HutongGames.PlayMaker.Actions.ConvertStringToInt.DoConvertStringToInt ()
[ERROR]:[UNITY] - HutongGames.PlayMaker.Actions.ConvertStringToInt.OnUpdate ()
[ERROR]:[UNITY] - HutongGames.PlayMaker.FsmState.OnUpdate ()
[ERROR]:[UNITY] - HutongGames.PlayMaker.Fsm.UpdateState (HutongGames.PlayMaker.FsmState state)
[ERROR]:[UNITY] - HutongGames.PlayMaker.Fsm.Update ()
[ERROR]:[UNITY] - PlayMakerFSM.Update ()
[ERROR]:[UNITY] -
int[] nums = new int [] {0,1,2,3,4,5,6,7,8,9};
foreach (int num in nums)
if (orig.Contains(num.ToString())
return orig;
Regex r = new Regex(@"\d", RegexOptions.IgnoreCase);
MatchCollection matches = r.Matches(inputString);
if (matches.Count > 0)
{
// number in string
}
else
{
// no number in string
}
Regex
ok
Nobody will understand it later
even better
Not like that code was readable to start with
time for RedFrog to be ignored again 
use whichever you want to use, both have pros and cons
i'm just going to place random if's everywhere and pray it works
wow, i have no idea what is going on here
have you tried learning c#?
its not really c#'s problem
but i get confused when LanguageGetHook is WanguageGet
ctrl+r, ctrl+r, then rename to LanguageGet
and the random comments from DNSpy dont help either
i mean, what am i supposed to do with this:
// Token: 0x06000008 RID: 8 RVA: 0x000021F8 File Offset: 0x000003F8
literally nothing, just ignore it
then why is it there 
It is the memory location relative to the file where the function was found
what is this:
Error CS0120 An object reference is required for the non-static field, method, or property
why can't i just put
Regex r = new Regex(@"\d", RegexOptions.IgnoreCase);
at the top and be done
private static string WanguageGet(HowwowKnyight.WanguageGetWef owig, ModHooks instance, string key, string tabwe)
{
string owig2 = owig(instance, key, tabwe);
Regex r = new Regex(@"\d", RegexOptions.IgnoreCase);
MatchCollection matches = r.Matches(owig2);
if (matches.Count > 0)
{
return (owig2);
}
else
{
return HowwowKnyight.UWUfyStwing(HowwowKnyight.PwepwocessDiawogeOwO(owig2));
}
}
will that work
or do i need to change owig2 to owig
owig2 should work
lets try it
it seems to work, but its random so i have no way to be sure
oh wait i can just log something if theres a number
why do i have to put base. before Log
and it doesn't even work in static classes
pain
Error CS0120 An object reference is required for the non-static field, method, or property 'Loggable.Log(string)'
you can always Modding.Logger.Log(), otherwise the mod may have an instance field, over which you can also log
bruh my vs is drunk
how would i change the reference paths
i saw someone do that once
and i have no idea how
I checked mapi code didn't find much different infact my mods menu also has the handle scrolling up magically bug
I'll check moresave once
Well, my pr was accepted but if you look at the file and file history my changes don’t show up
yeah they do
have you tried scrolling down
hey i wanted to make a custom skin for hollow knight, but i've never done any form of coding before, does anyone have like a video I can watch or
Custom knight?
Just go to the default folder, make a copy of it and edit the png's
All editable png's are there
oh awesome ty!
@light zodiac sadness 
Big sad
Yes I have
have you tried scrolling up
okay so, it's definitely a thing with the scroll setup itself
Yeah. I saw it. I just wanted to make a point
i need to change some code and that'll include a fix for the scrolling
you know
im not convinced I ever made the thing actually scroll on selection
might have been a dream
thank you !
i could not find any code that seemed to do that either
I know it was working at some point
but I think I found some weird stuff with the old navigation code
i literally just copy pasted the dll like 10 times
I'm surprised moresaves didn't have a failed to load
probably better code in there lol
This is what I did for more saves
if (Instance == null) Instance = this;
Fyremoth does the same.
the failed to load is trying to preload an object multiple times for the same "mod" in mapi i think lol
would this avoid that?
imma try adding it
kidnap 3 modders and work them to death
Can confirm am modder
No don't
hehe
for a second i wondered who you were, then i read the name
but nice dashmaster grimm
dw I dont know who I am either
i managed to get the name work by myself yay
AdditionalMaps, BlindRadiance, BossModCore, CustomBgm, CustomSaveArt, DreamKing, EnemyChanger, FireIsSmolBrain, FuryFix, GeoLog, HKHKHKHKHK, LanguageSupport, LockZoteTheme, MenuThemesInGame, MetroidVania, MoreHealing, NailsmithBackPay, TestingStuff, PlayCountLog, PvpArena, RadiantMenu, RedoBirthplace, ResetCharmNotches, SFCore & TestOfTeamwork ported to 1.5, still doing others as well and still need to upload those to github
cursed
this is the original btw im just making it a reality
https://amp.reddit.com/r/HollowKnightMemes/comments/adbogg/cursed_grimm/
i can't believe they fucking fixed it
excuse me????????????? what????????? tc????????
Did they fix the one on top of this area too?
yes
damn
huh, did they fix pop thornwalk?
bruh
Glorious, ping me with the final thing please 
<@&283547423706447872>
What happened?
how did you guess
I have been on the internet for longer then just today
judging by the fact i've seen more messages from you then only the ones you just send, you're totally right
gaming 
damn
gaming coding
Where does SOUL-from-dreamnail happen?
when you Dnail an enemy?
good luck with your hunting
that’s an incredible amount of unavailable mods, wow
nah i’m talking about the mods he have installed
like fire is smol brain
unavailable
not in loader
Is that the one with the soul totem in dirtmouth
Dream king, more healing
like all of those
save for a few
and i guess also with how debug mod is a much more updated version not in the loader
kinda weird though
some mods are getting lots of updates and commits, but never get updated in the loader
currently because it's 1432 and these updates are 1.5
i made pr but no one push 
I made a pr for 1.5 support but no one care
then i made more update and didn't even push cuz no one care
smh smashing my head
i pushed a bit
something doesnt feel right
fuck
yea that’s an example
why did you make this
made for fireb0rn
hard to guess that damn
done now
i think i can automatically make myself ready-to-release packages on windows in post build event
HKHKHKHKHK 👀
inspired by VVVVVVVVV, but some parts are very funky
csproj god 56, how can i write the output of a command to a file in postbuildevent, kinda want the output of
$(certUtil -hashfile "$(ZipFileLocation)" SHA256)[1] -replace " ",""
written to a file so i can copy paste that easier to modlinks and release description
I thought it was mocking Fyremoth
lmao
Well, with grenade pushing all his mods like 1/4 of the mod loader has been update to 1.5
you do know i have like 4 mods on the modinstaller
oh my bad
i have 5 on the modinstaller
but yea, all others weren't/aren't on the modinstaller
Ok
So, what is still in the work that would delay the release of the 1.5 mapi to the installer? The API seems stable and I don’t think any important mods are in the work to be ported to 1.5 that we are waiting for.
the modinstaller
Ah. Yeah.
What has to be done to it?
I’m in support for multi patch support, but not in the way frog did it. Would there be a way to split it up into multiple files? 1 for every version
the way frog has a pr for is one way, but i had some texts between me and 56 (i think a few things also were here, idk).
And out came ideas for a completely new modinstaller that is not SHA1 based for versioning, but has an internal database of installed mods and their versions.
That way sideloading would be difficult, but idrc.
Also changed is SHA1 -> SHA256 and also not for individual files, but the zip download itself, to verify that the download is unchanged.
Also both of us didn't want to actually deal with making mods for multiple patches.
Which is all why the new modlinks repo is the way it is
Ah. What do you mean with side loading?
Does that mean it gets harder to develop mods?
side loading in this case would be manually moving mods in the mods folder
So yes. Developing a mod would get more difficult
i hope this would not impact mapi but only the modinstaller ?
only the modinstaller
How significantly would this impact testing a build of an in development mod?
someone test the updated mod loader for me ty
What does it do?
im like 99% sure it works
it loads mods
I just rewrote it
to not be cursed af
since it doesnt impact mapi i would guess not at all ?
This is how I test my mods
How about you?
only how it's displayed in the modinstaller, but idk if 56 is working on it and if a method of manually scanning the mods folder to update the version manually maybe is considered
is that preloading in serial?
hm?
is the preloading done in serial? looks like it in dnspy
in serial what
serial, one after another
wait what
do you have a testing branch so i don't have to look at this garbage decomp?
wait a second, i need to check something
idk if it looks anything like this for you
ok, compilation just makes this ass to look at in dnspy
yeah it compiles to a state machine
now i just need to find this method that is in another method
ok, can't look at the code for it, but if the actual preloading didn't change i think it should be good
yeah I didn't change that
Just use ILspy

don't have it installed
Dnspy has been discontinued
archived*
But dnspy does look beter then ILspy
Kinda the same
can't believe ilspy doesn't have a dark mode
it does ?
It does
Click the moon icon
why isn't it in the fucking options
is a dropdown for me
not even normal ilspy layout lets me view the state machine thing
fuck this, uninstalling
its not trivial to decompile a generator
yea, can look at it in il but i don't want to look at it in il
the backslash is ruining things
what backslash
wait what

Modding.Logger.Log("Found something usefull"); this should log something in modlog right?
it is better to use the Log methods on your mod instance
because it will automatically prefix it with your mod name
Error CS0120 An object reference is required for the non-static field, method, or property 'Loggable.Log(string)'
``` ;-;
🥴
🥴
I did press backslash at the same frame I sent the message
cause typing is hard
smh, not signing commits
but it should still put atleast something in modlog right?
yeah sure
i love how that commit is titled "Rework the mod loader code" and the first thing i see is something for the mod menus
yeah I did that at the same time
making me scroll 
if (matches.Count > 0)
{
Modding.Logger.Log("Theres a number here!");
//No longer needed, it worked! OwO
return (text);
}
else
{
Modding.Logger.Log("Found something usefull");
return UWUfyStwing(PwepwocessDiawoge(text));
}
``` It has 2 options, either do this if or do the else right?
And i know that it does `return UWUfyStwing(PwepwocessDiawoge(text));`, cus the text in-game changes.
yes
i can't believe there was a whitespace
whats with it
the log
I formatted the whole file
cause it was mildly messy
idk what to say cause the logger isn't broken
i look in modlog, and the ingame console by the api, and theres nothing
idk then
look in player.log to see which thing errored out
very true
what would it look like you think?
a keyword that would be in it cus this log is huge
exception
Just search for the class name containing the method that failed or the method that failed or the method calling the method that failed or the class containing the method calling the method that failed
i see an NRE, i'll post it here
NullReferenceException: Object reference not set to an instance of an object
at ActionButtonIconBase.GetButtonIcon (HeroActionButton actionButton) [0x00000] in <filename unknown>:0
at ActionButtonIconBase.RefreshButtonIcon () [0x00000] in <filename unknown>:0
at ActionButtonIconBase.OnEnable () [0x00000] in <filename unknown>:0
UnityEngine.GameObject:SetActive(Boolean)
GameCameras:StartScene()
GameCameras:SceneInit()
GameManager:BeginScene()
GameManager:LevelActivated(Scene, Scene)
UnityEngine.SceneManagement.SceneManager:Internal_ActiveSceneChanged(Scene, Scene)
(Filename: Line: -1)
nothing by mapi
i'll try that
I do it all the time with fyremoth
nothing
Then it didn’t have an exception
neither the name of the class, or the name of the method
among us suicide
give player log
use debug.log if you don't trust the modding logger
i'll try logging to player_log instead of modlog
it's gonna give the same thing though
give player log, let me search in it
would this one be it? i just noticed it has a different name so i could be looking at the wrong file
output_log is from 1432
oh ok this is the right one then
the method is: WanguageGet
the class is: HowwowKnyight
the namespace is: HowwowKnyight
the file is: HowwowKnyight.dll/ HowwowKnyight.cs
my eyes
hehe
are you making a mod for 1432 or 1.5
Look at player_log if 1.5
1432
Yuri i have a feature request for modmenu, TBH i'm not sure if it should be handled by the api itself but, horizontalOptions don't have a way to go "back to previous option" using a mouse but using a kb / controller one can go back, would it make sense to make the < & > icons be buttons ?
idk
if you are using a mouse its implied you can use a keyboard tbh
I'll put it on my backlog
cause its a good solution
it just requires effort to make it look nice
nothing that exceptionally is in the output log
thank you !
oh bruh i'm sorry i was being dumb, and used the wrong dll 
Nice
hey. Remember that conversation that serialising settings and writing to a file can't fail? It just did
Fun
Remember that one conversation that we just had?, bringing it up because idk
Yeah. I just checked the globalsettings file and it is empty
Fun
I wasn't talking about Fyremoth
Kool
I mean what did you do
Which mod
I have never encountered this error
Null globalsettings prob
so true
I think I’ve seen it before
luckily there is fallback to defaulting the settings file

so the mod loader shouldn't crash
in fact if theres an error loading the file it wont even call OnLoadGlobalSettings
but it does
player.log
Looks pretty null reference exception not try catched to me
oh not the mod one
what the fuck happened
it does that
how did this mess up
it breaks all the save loading

Fun
it fails while loading Fyremoth with a failed to call constructor
yeah. But it isn't thrown when loading using the latest github version
idk I need to see the code
oh god
i'm nearly done setting up postbuild to have a package ready for instant upload
<Target Name="CopyMod" AfterTargets="PostBuildEvent">
<RemoveDir Directories="$(ExportDir)$(TargetName)/" />
<MakeDir Directories="$(ExportDir)$(TargetName)/" />
<MakeDir Directories="$(ExportDir)$(TargetName)/zip/" />
<Copy SourceFiles="$(TargetPath)" DestinationFolder="$(HollowKnightRefs)/Mods/" />
<Copy SourceFiles="$(TargetDir)$(TargetName).pdb" DestinationFolder="$(HollowKnightRefs)/Mods/" />
<Copy SourceFiles="ReadMe.md" DestinationFolder="$(ExportDir)$(TargetName)/zip/" />
<Copy SourceFiles="$(TargetPath)" DestinationFolder="$(ExportDir)$(TargetName)/" />
<Copy SourceFiles="$(TargetPath)" DestinationFolder="$(ExportDir)$(TargetName)/zip/" />
<Copy SourceFiles="$(TargetDir)$(TargetName).pdb" DestinationFolder="$(ExportDir)$(TargetName)/zip/" />
<ZipDirectory SourceDirectory="$(ExportDir)$(TargetName)/zip/" DestinationFile="$(ExportDir)$(TargetName)/$(TargetName).zip" />
<RemoveDir Directories="$(ExportDir)$(TargetName)/zip/" />
<GetFileHash Files="$(ExportDir)$(TargetName)/$(TargetName).zip" Algorithm="SHA256">
<Output TaskParameter="Items" ItemName="FilesWithHashes" />
</GetFileHash>
<WriteLinesToFile File="$(ExportDir)$(TargetName)/SHA.txt" Lines="@(FilesWithHashes->'%(FileHash)')" Overwrite="true" Encoding="UTF-8"/>
</Target>

fixed the settings loading bug
well I actually just rewrote the global settings
also ModHooksGlobalSettings.ModEnabledSettings was changed a lot so I basically removed it
use ModHooks.ModEnabled(string name) now
well once I can see this loading code is stable
then ig over the next 2 years the apidocs website can/will be transfered to that?
2 years 
realistic timeframe
nope
oh yea sorry, exactly until silksong releases, so 4 years
wdym that's never happening
but the other part?
||then ig over the next 2 years|| the apidocs website can/will be transfered to that?
the contents ofc
idk presumably
i need a single more contribution today
what
i updated a bit
smh, low number
🥴
the last one i won't show until it's done 😤
lmao
yea, you have this text that shows how things can be altered
note
PLEASE DO THINGS THIS WAY TO MAKE YOUR MOD COMPATIBLE TO OTHER MODS
finally
========== Alles neu erstellen: 32 erfolgreich, 0 fehlerhaft, 0 übersprungen ==========


And Dream King
a thing in WIP that (will at some point in the future) be a thing to have a hall of gods but for boss mod bosses, so all boss mods can be installed simultaneously
1.5 documentation?
the thing that got me into hk modding, not telling anything else
So a kind of mod manager for boss mods specifically?
looks poggers
yes, you can find the project in my github under BossModCore
Cool, I'll definitely look at it sometime . _.
is that not the case in 1.5
oh wait

it's playerdata, not modhooks
||~~Is it a half cringe NKG mod
~~||
not telling anything 😤
lol
(please keep a moderate volume when watching)
how do i tune the sound on Beeg knight's walk?
i want it to feel impactful but my current tuning makes it feel like too much impact?
i want it to feel impactful
add screenshake
imo it feels like someone is playing a guitar rather than walking
hence i just took a monster stepping sound and didn't mess with it much
should i just remove the mosterwalk and play the original sound ?
lower pitch on the current one or the default one ?
Original, I think they mean
this is how that sounds, maybe i've messed up the reverb params ? i have this rn.
r.reverbLevel = 200f;
r.decayTime = 3f;
r.decayHFRatio = 2f;
i'll try an AudioEchoFilter once
and definitely lower the pitch to be like 70% of the original
maybe even lower depending on how it sounds
yeah i'm lowering/raising the pitch of all knight sounds, just want to get the walk right for beeg
yeah
Even if you don't add screenshake to walking (which, I wouldn't personally, because that sounds nauseating lol), you could possibly add it it to landing from a jump.
going to try adjusting the pitch a bit more
are these unused?
spikes
hes off screen for those though
then ig
Oh yeah
I guess they just recolored the Grimm ones
You can see similar things with pure vessel
though with pure vessel there do be a lot of sprites just not being there
same with thk not having some sprites pv has
I can guess. Not saying my guess though
i think i'll go with this for now, it's not much of an impact but feels better than the previous one
The ArmorCtrl Code doesn't seem to work for me
I think I'm missing a reference or something
Add a reference to UnityEngine.AnimatonModule.dll
Also it appears to assume your class inheriting mod is called Tutorial, so either change your mod class’s name to Tutorial or change anything referencing Tutorial to the name of your mod class
Thanks!
It also seems like your project file is broken
where can i find the latest api
the latest release is for 1.5.68 tho and not 1.5.75
and in steam i have no way to go to .68
if that's the latest master artifact, likely
the artifact from this action should definetly work: https://github.com/hk-modding/api/actions/runs/998921662
I remember someone posting a link when visiting was first implemented that always linked to the latest run
you mean that pinned one by yuri?
they're the same
damn HowwowKnyight updated to 1.5 and .net 4.7.2, and 0 errors, prob did something wrong
how do i add multiple links to modlinks
do i just do:
<Link>https://link1.com</Link>
<Link>https://link2.com</Link>
```?
which modlinks
art mods are hosted on radiance.host, so if i want to add a mod to them i need the have a seperate link
- download arts mods zip
- add mod to zip
- ask somebody to upload new zip to radiance.host
- update shas in modinstaller
but who has access to radiance.host
idk
They do
i can't find the zip there
No I meant to say that they can update radiance host
thats only for the api doc i think
oh like that
Is there an updated QoL (plus dependencies) for 1.5.75?
Also, if I'm updating mods to 1.5, is it .NET Framework 4.7.2? (Plus changes to the MAPI, plus possible changes to FSMs)
i believe 4.7.2 yeah
Error CS1069 The type name 'Regex' could not be found in the namespace 'System.Text.RegularExpressions'. This type has been forwarded to assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' Consider adding a reference to that assembly.
```I have searched for that to reference it, but i cannot find it anywhere, anyone know where it is?
@cedar hemlock add a refference to the system assembly
Just system?
Yes
Ah. Look through all the references and remove the reference to system and add a reference to the dll in the managed dir of HK
edit your csproj to have that reference
vs doesn't let you do that, but if you edit the file directly vs will accept it
Ah ok
hollow knight skin creators- does ANYONE know why the full soul orb texture is seperate from the rest of the HUD textures, while there's a perfectly fine full orb texture in the HUD textures?
Nope 
nope

like this?
<Reference Include="System">
<HintPath>C:\Program Files (x86)\Steam\steamapps\common\Hollow Knight\hollow_knight_Data\Managed\System.dll</HintPath>
</Reference>
ayy it worked
[ERROR]:[API] - Error: System.InvalidOperationException: Return type of hook for doesn't match, must be System.Void
wanguageGetHook = new Hook(typeof(ModHooks).GetMethod("LanguageGet", BindingFlags.NonPublic | BindingFlags.Instance), typeof(HowwowKnyight).GetMethod("WanguageGet", BindingFlags.NonPublic | BindingFlags.Static));
```Any ideas?
what is the latest debug mod bui;d?
Yes
Well, the hook changed
BTW I think with how the hook changed you could probably just go through the hook rather than detouring it for howwowknyight (that seems like it's probably safer IG)
i should learn more c# i have almost no idea what that means
just use modhook.blabla += WanguageGet?
You'd need to change the signature of WanguageGet though to match the LanguageGetProxy
So it would need to be something like
private string WanguageGet(string key, string sheetTitle, string orig)
{
// code goes here
}
(And then ModHooks.LanguageGetHook += WanguageGet)
at one point or another it may be easier to just make a completely new project and reimplement the functionality of that mod into the fresh project so you don't have to deal with decomp
dw i got the source
then you wouldn't have to deal with whatever
wanguageGetHook = new Hook(typeof(ModHooks).GetMethod("LanguageGet", BindingFlags.NonPublic | BindingFlags.Instance), typeof(HowwowKnyight).GetMethod("WanguageGet", BindingFlags.NonPublic | BindingFlags.Static));
is
yes i do?
its in the source
private string WanguageGet((string key, string sheetTitle, string owig))
{
string text = owig(instance, key, tabwe);
```what do i do with `string text`
why
dunno
Is there a way to ensure that your function gets applied last, other than just giving a load priority of 1000 or something?
(Or would it be -1000?)
just the load priority thing
an actual source would have it something like https://github.com/SFGrenade/TestOfTeamwork/blob/master/TestOfTeamwork.cs#L177
yes, that single line
wth is my game doing
i have the saves not loading error, but the procedure to fix it doesn't fix it
damn got it working
but how did i fix the saves not loading error without deleting the globalsettings
i'm ultimate confusion
Hello there!
Currently, I've been stuck finding Nightmare Grimm's attacks in FSMView. I have looked through everything, but I still can't find the attacks. I'm using Gods and Glory Nightmare Grimm, but that doesn't make a difference. Please help me locate the fsm.
Thanks in advance!
what scene did you check
Should be viewable in gg_nightmare_grimm
^
I have no idea if i spelled it correctly
I have checked GG_Grimm_Nightmare and am checking. I just cant find it. Sorry for the late response. Still looking through 😦
show
what?
where are you checking
Like you can't find it in the list?
it's like something - control
yeah
one sec
wait thats it?
i saw many more
well umm, how can i spawn a grimm fireball?
get gameobject, instantiate gameobject
SF how can one get a GO as if you preloaded it but without preloading it ? like in any scene
you have to get it in any way, preloading is one way to get a GO, another way is to just GameObject.Find it in initialize (requires the go to be loaded in the main menu)
or you do this fun stuff
https://github.com/SFGrenade/BossModCore/blob/master/MonoBehaviours/CustomBossCopy.cs
no so i don't want to preload it but rather load it on demand in a random scene
if you want to do that at any point then the async level load also isn't an option, then ig you could dump the GO and bundle it in your mod to then load on demand
if i'd do it at scene transition instead would that make it better ?
then the async loading is way less noticable (and i also do it on scene transition)
don't ask me why all those logs are still there
i don't fully understand what you do, but is it basically
start scene transition => load scene with GO => get GO => go back to scene you originally wanted to go to but now you have the GO you wanted
in bossmodcore i do it in a slightly odd way (which you probably won't do, because you don't have a custom scene)
but basically yea
- wait for scene transition to the scene you want to have your stuff in
- Load scene (with your wanted content) additively
- copy/move the content you want to the scene you want (
UnityEngine.SceneManagement.SceneManager.MoveGameObjectToScene(go, scene)to move gos) - unload the additively loaded scene
- do stuff with your go
would GameObject.Find work with inactive GOs ?
afaik no
but
sfcore's gameObject.Find(name) and scene.Find(name) methods can find inactive GOs
time to look at sfcore's code then!
it might not work but basically i want to load the GOs defined in /Swapster on skin change but i would not know which GOs i need preloaded. if i can load them async then i can ensure all GOs are updated regardless of which scene they're in / if they're active or inactive, not even sure if that's a great idea tbh.
idk
i'm gonna try it once, atleast going to use the gameObject.Find to make it apply textures without having to poll GameObject.Find , though i guess that would fail if some object tries to spawn a GO right ?
i needed to read this like 5 times to somewhat understand it, but if you check with either scene.Find or GameObject.Find it would not work with GOs that are spawned later in
sorry i can be like that sometimes! thanks for the help tho, i have ideas now 
Does anyone know where is the file (For soul orb halfway not full and not mini ones) is?
And dont tell me it is impossible to reskin that file
I know killer whale and sapphire did this
do you mean the eyes that appear when the meter is half full?
or the color of the liquid that fills?
The eyes
Although I am not sure if the color is reskinable
the eyes are here on the right side of the HUD sheet
Oh ty
Wait it is not there??
I am confused
Nvm, sorry
Another question, how do I find the file without other critters like hearts?
I tried to find it inside the sprite packer's dumped sprites
the liquid is skin-able in the pre-release 1.5 CK
you can find the other newly added sprites in the zip here, incase you want to add some of them in your skin
https://github.com/PrashantMohta/HollowKnight.CustomKnight/releases/tag/1.5-candidate
Oh nice
oh pog you can change the feathers!!
The eyes by itself only without other critters
So the hitbox don't ended up being wrong
Like atlas dumped into individual files
ohh right
the eyes are not dumped
you just draw straight onto the atlas
i recommend doing it at the end
after the other sprites
the bounding box is defined in game so you only have the space to cover the area that existing eyes themselves use
oh yeah you just have to guess i think
although I may be wrong about the label
though there was a version of the knight atlas with the boundaries on so maybe there a version of the hud one?
yeah its real tight
you can overlay that image with yours to work out where the boundary is
i was gonna say : alternate black and white stripes to count and figure out lol
a checker board pattern might be better to get horizontal scale too.
oh man why did i not look into 1.5 ck earlier i couldve done beans defender and nk sans way easier
I always use checker board with grey color
Less strain for me
Although I sometimes turn off checker
Shouldn't be too much problem
And beside my custom eyes aren't too different
to be fair i was working on swapster while you were working on BD , that's what had inspired me to make it easier to do
ohh cool!
this way you learn the stuff yourself though
yeah true
plus more people can use them sooner
Exactly
did a basic grid thing
this help ?
Oh wait I get it now
nah wanted to figure out the size
Btw this is the eyes I going to use
If it is not fitting
I can resize and make it smaller
is there a skin that turns the weaverlings into little hornets ?
Sadly, not that I know of
oh thatd be cute
you're making a gaara skin ?
ok new version of the loader rework
if you find any crashes, send the logs and please find any of the problematic code from the error stack trace and send it to me
because I cannot fix a bug if I do not know whats causing it
🙂
infinite menu load
let me get logs
@fickle sparrow seems like after initializing all mods it just decides to say that the preload is done again, resulting in all mods initializing, resulting in ...
Can you make a Hank J Wimbleton for Hollow Knight?
hmmm
NullReferenceException: Object reference not set to an instance of an object
at GameManager.SetupHeroRefs () [0x00016] in <ec95cbe21af7448ea086a0245ca33b78>:0
at GameManager.orig_SetupSceneRefs (System.Boolean refreshTilemapInfo) [0x0006c] in <ec95cbe21af7448ea086a0245ca33b78>:0
at GameManager.SetupSceneRefs (System.Boolean refreshTilemapInfo) [0x00001] in <ec95cbe21af7448ea086a0245ca33b78>:0
at GameManager.LevelActivated (UnityEngine.SceneManagement.Scene sceneFrom, UnityEngine.SceneManagement.Scene sceneTo) [0x0003c] in <ec95cbe21af7448ea086a0245ca33b78>:0
at (wrapper delegate-invoke) UnityEngine.Events.UnityAction`2[UnityEngine.SceneManagement.Scene,UnityEngine.SceneManagement.Scene].invoke_void_T0_T1(UnityEngine.SceneManagement.Scene,UnityEngine.SceneManagement.Scene)
at UnityEngine.SceneManagement.SceneManager.Internal_ActiveSceneChanged (UnityEngine.SceneManagement.Scene previousActiveScene, UnityEngine.SceneManagement.Scene newActiveScene) [0x0000e] in <047294ce45cf4b9a9441e48d2b8435e4>:0
that's normal
Debug do be doing that
wtf
Or is it not debug?
why does this keep looping
i could disable some of these to see if it helps
uhhh i think i know
PauseChamp
no more infinite load
xdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxd
what was it
seems to work
that's why starting mod loading in StartManager update (last i tested start didn't work) is better 😤

it do be loaded only once
won't work
yeah makes sense
... it also clogs modlog / player log because gamemanager/herocontroller/basically everything doesn't exist
i swear i had a branch where i had that barely working
hmm i have random errors like doublejump anim playing but it not working and multiple dreamgates and getting stuck in walk animation ( not sure if related to the current dll)
lemme confirm by reverting
it's the this
any erorr logs
sending last modlog and player prev
nvm, it's the commits from cfc33db275611be1bf7f5d99831a9760ff78f9ec to 28270e8956a98dd44240abc1dcb9cdb6a1b30bc5 that had the earlier mod loading
looks like it's caused by hkmp?
i mean i used it on 2 assembly-csharps and only the new one borked stuff
I did change stuff
but this is probably not a bug with the new codde
I'll need to see the relevant code in HKMP
want me to disable all mods and try ?
NullReferenceException: Object reference not set to an instance of an object
at DesktopPlatform.GetVibrationMixer () [0x00000] in <ec95cbe21af7448ea086a0245ca33b78>:0
at VibrationManager.GetMixer () [0x00019] in <ec95cbe21af7448ea086a0245ca33b78>:0
at VibrationManager.PlayVibrationClipOneShot (VibrationData vibrationData, System.Nullable`1[T] vibrationTarget, System.Boolean isLooping, System.String tag) [0x00009] in <ec95cbe21af7448ea086a0245ca33b78>:0
at HeroController.BackOnGround () [0x0004e] in <ec95cbe21af7448ea086a0245ca33b78>:0
at HeroController.FailSafeChecks () [0x0015a] in <ec95cbe21af7448ea086a0245ca33b78>:0
at HeroController.orig_Update () [0x00027] in <ec95cbe21af7448ea086a0245ca33b78>:0
at (wrapper dynamic-method) HeroController.DMD<HeroController::Update>(HeroController)
at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Trampoline<HeroController::Update>?-1653690368(HeroController)
at HKMP.Game.Client.MapManager.HeroControllerOnUpdate (On.HeroController+orig_Update orig, HeroController self) [0x00001] in <fc613eecd7b64064a8b5e4e51bd8948c>:0
at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Hook<HeroController::Update>?648599168(HeroController)
at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Trampoline<HeroController::Update>?-1967164416(HeroController)
at HKMP.Game.Client.ClientManager.OnPlayerUpdate (On.HeroController+orig_Update orig, HeroController self) [0x00001] in <fc613eecd7b64064a8b5e4e51bd8948c>:0
at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Hook<HeroController::Update>?642833408(HeroController)
no pdb moment
tbh


