#archived-modding-development
1 messages · Page 512 of 1
Well lets juat say i wanna make a mod. Do you know where a can make one or is it even possible?
Juat from that link?
What is the difference?
GetBool goes through the modhook
Oh I see
Another question - suppose there are multiple mods that hook GetPlayerBoolHook (orwhatever it's called) with functions like
if (boolName == ...) return ...
else if (boolName == ...) return ...
else return pd.GetBoolInternal(boolName);
how does this work? Surely if one returns GetBoolInternal(boolName) then the other one has no chance to override the output value?
if the hook returns the same value as an internally called GetBoolInternal it continues to go over the rest of the hooks
yeah
i think that's a bit scuffed honestly tbh
could have like trygetvalue kinda beat
more changes for the 1.5 mapi 
So that means there's no way to say "I want this to return false, even if the playerdata says false but another mod wants it to be true"?
correct
that's why i think it's a bit scuffed
i mean there is
you override the override with a monomod hook

That sounds spooky
i mean, nothing new
wait nvm
read that wrong
make it more if it improves the overall quality
ig
i mean updating is relatively simple rn
it's just rebuild, don't have been using deprecated stuff
as far as the modding api changes go
Side question is there a list of what the deprecated stuff is?
if your ide yells at you it is deprecated
wait a sec
The visual studio error list
what determines which hook to use if multiple ones change the same bool
Oh i see, there's nothing that's secretly deprecated or something?
I guess BoolValues/StringValues/IntValues on settings aren't explicitly deprecated rn
I assume this is a joke question but I guess it matters for ints
and i yeeted some unused hooks
doubt you'll use them anyways
I mean yeah if you change it for a bool you can't exactly be different in a two-state system
But for ints I think it's load-order
idr if it's first is best or last is best
Unrelated: I'm really new tot he FSM stuff, I get the gist of it I just haven't messed with it yet, and I'm hoping someone knows this before I have to really dig-in and debug. This is pertaining to rando mod, so maybe Flib you can help me out. I've hit a point where, in my tinkering, I broke shinies. Ex: The knight hits the chest and shiny pops out. You go to pick it up and the knight crouches down and just never gets back up. (And input is blocked and you get soft-locked.)
What did you do to the FSM?
Actually nothing. That's the stupid part. I edited no FSMs or RandomizerActions.
I'm at work, but maybe tonight I could petition you to help me debug it?
I can't guarantee I'll be awake but I'm happy to try to help at least
i swear that exact thing has happened before
Basically I was trying to get the RandomizerActions to apply but not actually randomize anything. So I've been doing a lot of jury-rigging to trick the mod into thinking everything is rando when the items are actually in vanilla.
it was something with a canvas nre
Actually rando has code to do that in the VanillaManager.cs
Does it spit out a RandoResult that's 'vanilla'?
IIRC the unrandoitems contains items it's supposed to do all the fsm actions on but treat it as an item that's been randomized to its own location
(With the caveat that it's excluded from the spoiler log)
Eh, spoiler log schmoiler log
It's for if, say, you don't randomize dreamers, then it'll put a shiny at the top of Watcher's Spire that gives you Lurien when you pick it up (with the YN dream nail cost)
Oh, okay, I'll try using that instead of the awful terribad jury rigging I've been doing.
Could be the same reason as areanames not working when a (i think) playmaker unity 2d gameobject is missing in the scene
I'd expect an NRE to pop up in a log somewhere but I didn't see any.
I don't see output_log.txt anywhere from Unity... It's supposed to be in the save games location right? Or was it a mod that put it there?
Yes, it should be in the saves
i mean for me its there
unless you're on 1.5 yeah
I am
I found a file called Player.log with the same contents
Player.log, same folder
Thanks
Yeah
IDK how much of this is 'expected' output garbage, but yeah:
yup, exactly this
the way i solved it: preload one of those and instantiate it in the scene you want to use it in
if you want it more precisely: https://github.com/SFGrenade/TestOfTeamwork/blob/master/MonoBehaviours/Patcher/PatchPlayMakerManager.cs
Thanks! Although I'm confused as to why it wouldn't have been in the scene to begin with. It's not like the scene should normally lack that component, right? I'm talking about Tutorial_01 (King's Pass).
That's the item I'm talking about
It's what I've been testing with haha
does rando not replace the shiny
It does. It doesn't seem to be executing the actions it should be upon pickup, though.
I'll dive into it deeper this afternoon since it's probably something I messed up anyway. My messing around is definitely outside the norms of what the rando expects.
Yeah, there are a lot of different places where the shiny fsm can crash silently with an nre. That's almost always the culprit.
Any chance that there is a way to diagnose this? For future reference
Well, you can certainly add logs to null-check each object. Depending on which one, they may need to go within the methods called from the fsm, or as separate fsm actions.
It can depend a lot on which item you are making as well. On randomizer, the BigItemPopup is especially fragile.
If I knew which objects to null check, haha. I'm in over my head, I can tell. The RandomizerAction I'm looking at is ChangeShinyIntoItem so in this case I don't think BigItemPopup is relevant, which sounds like a good thing. The RandomizerAction runs through just fine but the expected FsmStateAction (RandomizerExecuteLambda in this case) doesn't run.
Well, a first step might be to add logs at the start of each state visited in the shiny fsm, to pinpoint where the crash occurs. Keep in mind that the RandomizerAction will almost never crash, since it is just editing the fsm when the scene loads; the code doesn't run until the fsm moves after interacting with the shiny.
Yes, I figured that the RandomizerAction itself isn't problematic.
a first step might be to add logs at the start of each state visited in the shiny fsm
This part is the part that's over my head. I don't want to sit here and ask for hand-holding but if there's a mod or reference I can look at, that'd be a great pointer. I know the modding api docs have a section on this and I plan to go through it, so just give me areaction if that's all I should check out.
I just meant something simple like this (changes are at the bottom)
I'm not sure that the api docs will be especially helpful, but maybe they can help clear some things up?
There's a chance it might help to look at how SereCore does things https://github.com/seresharp/HollowKnight.SereCore/blob/master/PlaymakerExtensions.cs - at least I found looking at that a bit helpful
Thanks, both of you. Very helpful!
some others: https://radiance.host/apidocs/SFCore.html#fsmutil
Why I have these red line? Someone can help me.
This is the second time that I have made a skin and it is the first time that this has happened to me.
Did you repackage the sprites with Sprite Packer?
Looks like you were set to the wrong settings at the bottom.
There's a "choose version" and I think the options are 1.3 and 1.4
You can see that you have way more problems here than just the red outlines.
How I do that? (Sorry for my English, I’m French)
You can explain me in private message please? This is will be easer for me.
I've not used the Sprite Packer in a while and no longer have it downloaded so I'm not going to be able to be much help, but just try using the other setting in the drop menu at the bottom.
Problem resolved.😉
Do i need to have Hollow Knight installed for using the API?
yes?
How else would you use it?
I only want to make mods not use them 
I mean you're not going to be able to test anything but you should just need the references
Coding mods and having them work first try
magic
Needing to test sucks, i am without a Video Card and don't want to risk my game
Make backups then.
You also don't need a video card to record or test for that matter.
nah, you write the code and assume it works
you just never test it to find out if it actually works 
How? I literally never tried making a mod before
wtf do you mean risk your game
I assume he means save files.
what does a video card have to do with it though?
they call me copy paste
Too laggy.
You don't even need to record though.
How do i backup? 
is there even a 1.5 modding api?
yeah
Uh...i am gonna see if i know how to do that.
is it compatible with all 1.4 mods?
lmao no
Just copy and paste the user(a number 1-4).dat that you can find in your saves file.
?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/```
but in most cases only a change of references is needed
I found some files, 4 of each number, i think
i mean, playmaker itself didn't change much, only transitions
but tc simultaneously also changed some event names
convo_finish for example
The transition stuff is relatively large depending on how much you do
idk what before/after is
transition stuff is only necessary to move adding/changing transitions to after making states
like you could create transitions to non existent states and then add them
yeah
bit of a pain
yeah
Okay so the file i want to keep is my second file
oh yeah and hooking any coroutine type beat
like ilhooking
nested type names changed
Expectedly
just copy paste the whole folder bro
Don't judge me if i'm doing it wrong.
that is all you have backed up your saves
Okay, now i just install the API?
yeah
Wait the installer allows modding?

I will act like i am smart enough to know what that means
Okay so i can use the installer to make mods
Now lemme see where is the installer
probably
The Zote one?
Are both the same thing?
basically
How do i put the installation path?
is it the zote one
Yes
ok then you are done
What does that mean?
it means that the api is installed
can i post a screenshot of a wip of a custom knight skin im making?
im kinda doing it in a weird way but i want some feedback
sure
ok one sec
ive just been trying to get the outlines for the bodys done
sry for low quality screenshot
any advice?
spritepacker is an application that makes it easier
my creation is alive!
@vocal spire this is where that right stick control went !
right stick to emote 

Supercute
currently we bind them to G,H,J,K,L for emotes on KB
conflicts with PressGToDab smhmyheads
Is it changeable?
not in current version, but can make it configurable down the line
Also might conflict with people that use blue.exe to use mouse
blue.exe goes to m1 h, m2 k i believe
Wasn't it h and t
so definite conflicts. recommend adding globalsettings for it like immediately
h and t also sounds right 🥴
yeah h and t
makes sense to make it configurable, or atleast toggleable
Hi every god developers
I am not a programmer but I want to be one
So can anyone give me some advice?
VS?
yes
Hmmm
Is it possible to make a mod that adds a new mode when starting a new game?
(almost) anything is possible
afaik not
So I am doing it from scratch... It may take me a lot of time but thank you for helping
maybe SFG or Someone wants to help you
idk how difficult adding a new play mode is, but in theory it should be nothing more than a new selectable thing when creating a new game and a bool setting in save settings to save if that new mode was selected
If you want you can use the steel soul mode to play your game mode
To make it easier
Sorry but I never use VS before and how should I download .NET 3.5?
get a .net class library
the option should be there
and watch the "Bad modding tutorial"
Okay
https://www.google.com/amp/s/windowsreport.com/net-framework-3-5-missing-windows-10/%3Famp doing this worked for me
make a funny class library in .net framework 3.5, then add CSharp-Assembly.dll or whatever it was called from the hollow_knight_Data\Managed folder
lol
I will wait a long time for my 50KB/s network to download the .NET framework lol
are you using VisualStudio2019 as an IDE?
Not the casual one but yes for now
I can't see it
I cannot see any option for installing .NET 3.5
in VS?
Yes I am using VS Installer
in workloads click on .NET desktop dev
It is already downloading
and after doing you should be able to see a .NET framework development tool for 3.5 in indivisual components
SFG is that a magnet?
according to wikipedia, it's a broad collar
amazing
Can I use JetBrain Rider to be VS alternative?
Why is this FSM state orange?
So TC just randomly decided to colour that state?
Np
tc being funny
Yeah, it goes "big get flash" then "GODFINDER" then "hero up", clearly
Get that emphasis in
||GODFINDER||
@rough raft https://radiance.host/apidocs
right, i've seen that one. is there anything else? is there a top level google drive folder maybe?
thats all
so far i've found the drive folder with all of the mods and some "random" ones with skins
further you can look at other mods on github
hm i guess so
My CoDe Is ThE bEsT cOdE
is the modinstaller that's hosted on radiance the same as the one that's in the pins?
its the same link
Unless you mean mod installer 2
modinstaller 2 is mainly for mac
i don't mean the link in the pins, but the file that's been uploaded to discord
Yeah
but i use it bc dark mode
Mod installer 2
mhm
i'm on linux, so that's why i'm asking. the radiance link is an exe from what i've seen
use the one in pins for linux
right, ok. just wanted to make sure it's not out of date or something
in help
it just got updated a few days ago 
OoF
so there are 2 versions of modinstaller? the one hosted on radiance and all of the ones uploaded to discord are all v2?
v2 is different from 1
i see that the exe on discord is called ModInstaller2.exe, but the versions for linux and mac don't have the 2
It’s fine
because?
56
LOL
it's just better for win
yeah, but i'm wondering why? do the two just have very different interfaces or what?
i would assume that v2 would be an upgrade, and not just a linux/mac version
the naming is a little confusing
2 is a rewrite in avalonia
1 is specificly made for win 2 is for multiple
Agreed
aha, i see
so if they get the same attention then 1 will be better then 2
it's confusing that the filenames are "ModInstaller2.exe" and "ModInstaller.zip", even though both are v2 :^)
i mean there isn't a 1 for mac/linux so the modinstaller 2 takes the place as modinstaller 1
right, you could
it just looks like windows 95 with screen tearing like that solitaire animation
name 1 person that has done that
idr people names but people did
that's very confusing, because it's still the "same" piece of software, just running on a different architecture
exactly, so it would make sense for the filenames to be consistent and say ModInstaller2
but that's effort
LOL
hmm also, one thing that i couldn't find anywhere by googling
where the heck are archievements stored?
stop arguing with 56, it’s bound to fail
they seem to be independent of the save files
which os
~/.config/unity3d/Team Cherry/Hollow Knight probably
I think it was under PlayerPrefs so that should be right at least
let me double check, because i'm pretty sure i already inspected all of the files in there
i don't have PlayerPrefs, but i do have "prefs", but that seems to only store the game settings, keybinds, etc., no?
it's all base64 encoded though so i can't tell, but i dismissed it when i looked at it a while back
56, while you're here, last time i used 2 it didn't want to actually update mods, idk what was up with that, used 1 at that point then
i don't think it's in the saves because even after removing the save files the achievements persist
hmm yeah
this is what i wonder as well, but i wasn't able to find it so far. i was hoping someone here might have some clues
Guys are there anyone of you are using Linux?
tun is
i am, but i haven't done any modding (neither creation nor usage) yet
I am unable to find .NET 3.5 on ArchLinux
And I wonder is there anyway to install it
is there a distribution of .net on non-windows oses even?
when is last time
i'm not sure, but aren't you supposed to use mono?
no
yeah
🤔 mono bad!?!?
For making my own mod
obviously, but that doesn't make my point above any less valid
i don't keep up with c# or .net though so i might be wrong, but that's my guess
rider should work fine
@copper nacelle pls check :^)
Does something's layer have any direct correlation to z value?
No

thanks
:0 :O
🤔

qed to what? that the achievements are in there?
yes
hmm, but the file does seem sort of tiny to be able to hold them all
idk show
do you know if it's just base64 or something more spicy?
i saw that there was a tool (or a mod?) to decrypt your save files and be able to load unencrypted saves. what tools or mods do i look into for this?
Qol mod
Rijndael encryption
are they really using aes?
just get QoL and open the save once
ok, that was the first thing i wanted to try anyway
it's some getbytes thing
only saves afaik
yeah
it might not, but if the encryption scheme it the same then i guess it can just be repurposed
How do I make a sprite centered on an enemy?
no
Like Radiance's aura
my man is really gonna decrypt aes to get his achievements
:^))))))))))))
why
i mean, didn't you have to go through the same process in order to decrypt the save files?
no
what is the difference in the encryption scheme?
Haven’t looked at the qol code, but I think it just saves/loads from a file that’s just not sent through decryption
do the saves even use aes?
no
what do they use?
nvm it's aes
:^)
it's just generic Encryption.Encrypt
so the work has already been done then
the key is different
not familiar with c#'s stdlib too much, but ok, doesn't seem too bad
is the key for the save files static or?
they're both static
nice, ez
UKu52ePUBwetZ9wNX88o54dnfKRu0T1l?
the achievements thing is easy to print all playerprefs, but not easy to distinguish between achievement and other encrypted settings
was using <#archived-modding-help message>
you just hook before savegame and write the pd
Evil stuff
this encryption.encrypt thing might be hk's custom thingy, right?
or is it actually part of c#'s stdlib or something?
just a wrapper over rijandelmanaged
right
if vs would start i could show the code i use to print the playerprefs stored in windows registry
give it a couple of hours to warm up :^)
alright i'll look
finding outdated versions i sleep
it's pinned
copy pasting debugmod and renaming it SFCore.dll i awaken
???
you
copy pasting sfcore and renaming it modcommon 
was sfcore last updated on the 2nd by any chance
Copy pasting FrogCore and renaming it Assembly-Csharp
big sadface :^( [1] 234203 segmentation fault (core dumped) ./Modinstaller2
how do you segfault a .net app
raw skill
you ever have one parameter in a method you wrote called incorrectly
so it updates mods into being disabled
even if they're enabled
fucked up
lol
no clue. i got to the hk installation dir selection but the dialog just sat there frozen for a couple of seconds and then the whole thing crashed
nope, that's the worst part :^(
How do I make a sprite centered on an enemy?
Like Radiance's aura
Anyone?
I tried creating a gameobject, giving it a renderer, and setting it asa child of the enemy at 0,0,0
i don't know if i'm maybe missing any dependencies that this binary might rely on?
transform.LocalPosition = Vector3.zero;
But I can't see the thing
Either offset it by 1/2 the width and height of the sprite or change the pivot to 0.5 0.5
GameObject.SetActive?
then check where it went
Show your code for creating and positioning
if it has a nice vacation
the binary is compiled in single-file mode lmao
I'll try
Is it definitely needed?
Like, mandatory?
should def have no deps
For something to work?
Idk, show code?
Try changing the z value
right, but does it produce a native executable or do i still need runtime libraries that i'm maybe missing (well, some part of them)?
Higher or lower?
Lower
it's native
Well you’re setting it to the same z as the enemy
single-file framework-independent meme
lel
So why wouldn't it appear in the same place?
You’re parenting it then setting the local z to the same value
does the renderer have some offset?
Just try making the value lower or higher, maybe a bug with using the same z
Sure
@copper nacelle is this the repo for both v1 and v2? https://github.com/HollowKnight-Modding/HollowKnight.Modding
No
that is in fact the repo for neither
OoF
That is the ModdingApi
aha aha
As it says in the description of the repo
i did read it, but i thought the tool might have been included somewhere
thats for 1
mhm
ok nice
the windows exclusive code i used to print playerprefs
foreach (var keyname in Registry.CurrentUser.OpenSubKey("SOFTWARE").OpenSubKey("Team Cherry").OpenSubKey("Hollow Knight").GetValueNames())
{
if (keyname.Contains("_"))
{
string paddedName = keyname.Substring(0, keyname.LastIndexOf('_'));
try
{
string decryptedName = Encryption.Decrypt(paddedName);
string ret = (string) typeof(PlayerPrefsSharedData).GetMethod("ReadEncrypted", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(Platform.Current.EncryptedSharedData, new object[] { decryptedName });
Log($"Raw Key: '{decryptedName}': '{ret}'");
}
catch (Exception e)
{
string retString = PlayerPrefs.GetString(paddedName, "DOESN'T EXIST");
if (retString.Equals("DOESN'T EXIST"))
{
float retfloat = PlayerPrefs.GetFloat(paddedName, -123.456f);
if (retfloat.Equals(-123.456f))
{
Log($"Other Key: '{paddedName}': '{PlayerPrefs.GetInt(paddedName, 0)}'");
}
else
{
Log($"Float Key: '{paddedName}': '{retfloat}'");
}
}
else
{
Log($"String Key: '{paddedName}': '{retString}'");
}
}
}
}
so on windows they store the achievements in the registry?
use <> against embeds smh
no
ah nice, thanks
are you one of the authors of radiance.host? or is it a community driven thing ?
one day
cry for help
yeah
ah okay
i'm just some dude vibin
and i suspect this is the case but just wanted to confirm , is ModSettings same across a mod or could one have 2 ModSettings?
i thought you maybe did the SFCore page
there's savesettings and globalsettings
i did
besides that just it's just 1 per
you can check https://github.com/SalehAce1/HK-Modding-API-Docs for the docs
anyone have any other complaints before i put 3 100mb files into modding-help again
can it be pink?
no
no
Sadge
you did a lot
the mac problem people are facing
and if i want to expose a function from my mod to another mod, do i just keep it as a public function in the class & access it by using the namespace from the dll ?
basically yeah
you just ref the other mod
provided it's a non-optional dependency
it keeps crashing and it only opens if you right click to show package contents
the fuck
when you look inside a folder and it starts working
i am going to commit (geno|sui)cide
e.g. of the mac problem #archived-modding-help message
Hm, maybe the rotation is 90 to the camera
and if it is optional ? then ?
you check if it's loaded via reflection
and if it is
then you invoke a separate method
and then you just use it normally
maybe reflection works on that? or you could make a mess with playerdata abuse
assembly loads are scoped per method
so as long as you don't call the method with it it vibes
oh lmao
the executable is in the wrong spot
suicide
thanks
so if it's non optional your mod just dies because it can't find it, i see
Alrighty, it was a matter of broken rotation
amazing
cool
if you (for whatever reason) ever want to do playerdata abuse, here is one side of it: https://github.com/SFGrenade/TestOfTeamwork/blob/master/TestOfTeamwork.cs#L374 (btw this decimates frames the first 3 seconds after starting the game)
I like abusing Playerdata 😄
Hell
how difficult would it be to make a flamethrower as extension for hollow point
or has this already been done
idk
i wonder if you can make the player manually dash using the Cstate
You can probably just manually make them dash by copying the dash code
i could make a tutorial on how i make custom scenes
is there really no way to add a debugger on your mod while it runs in HK ?
if your mod uses no on hooks and no mod you use uses on hooks then there's a tutorial on dnSpy's page
otherwise correct there is not
i see, thanks for the info
so if i use a coroutine , will it be like a separate thread or a slice of time every update ?
basically yes
oh, a slice of time
i see, good for doing compute without tanking frames bad for downloading files
Rando just spins up a new thread for parsing its XML logic. You could just do the same for downloads, probably.
Or listen to SF, I don't know Unity much anyway
the data should be the file (as binary)
downloading files can be done if you use unity's stuff
i was using WebClient till now , would this fare better than that ?
yeah prob
i mean, you can use it inside coroutines
Does anyone know where the repo for the version of CustomKnight on the modinstaller is?
Np
and a coroutine would require a monobehaviour attached to a go?
yeah
i'm trying an implementation with 'DownloadFileAsync' if that doesnt work out then i'm going to look into coroutines, the documentation says it wont block the calling thread
tutorial should be halfway done
https://github.com/AvaloniaUI/Avalonia/issues/2817 looks like i can fix that whenever btw
Hello, I installed the AdditionnalMaps mod and I wanted to put the texts in French by modifying the text file.
After registering, I start the game and all mods deactivate as if I had installed no mods.
If I remove all the texts in French, it works again.
I guess I shouldn't do that.
that's... weird, especially the
deactivate as if I had none installed
part
no not the english
when you tested this, can you send me the ModLog.txt and output_log.txt from the save file folder? (if you played without this afterwards, please test with it again and send me those files)
the error
Oh ok.
Ok.
I need to remember where it is.
xenophobe zal smhmyheads
til grenade is an alien
maybe cycling player opacity slowly as a loader is a bad idea , or maybe its the best idea 
is FSMViewer Windows only ? no Mac ?
Let me introduce you to avalonia fsmviewer
googling this literally has 3 results
I’d get a GitHub link but #archived-modding-help happened and now I’m distracted
oh releases are win / linux only , but i guess it can compile for mac?
seems like avalonia is cross platform
i'll try building this tonight
yeah should work fine on mac
where can i find area names?
Room names?
no, like royal_gardens
Pins, GameObject/Scene dumps
areas
Probably in Resources.assets(or whatever the thing is in fsmviewer, been a while since I used it)
oh, i tried the sprites drive under area save art and they're all there
56 come to #archived-modding-help
or just send it here?
Thank you @jolly oriole for helping me.
nice
how do i make it so the camera doesn't show the out of bounds of my custom scene?
the way tot does it: https://github.com/SFGrenade/TestOfTeamwork/blob/master/SceneChanger.cs#L103 (but can possibly be made using another monobehaviour with the hook added on awake and removed on ondestroy)
{
float width = 32;
float height = 864;
self.tilemap.width = (int)width;
self.tilemap.height = (int)height;
self.sceneWidth = width;
self.sceneHeight = height;
FindObjectOfType<GameMap>().SetManualTilemap(0, 0, width, height);
}```
is this it? itd be my guess but im not 100% sure
i mean, that is for one scene, with width and height being the width and height of the custom scene
For some reason my mod is recognised as a library. I have added “[AssemblyType(AssemblyTypeAttribute.MOD)]” right above the main class
@vocal spire can confirm this issue and couldn’t find the cause.
i had this issue once when i was building HKMP , check the .csproj file , some of my *.cs files were listed as <content> and not <compile>
This is nit the case.
The output type is library but that should be correct
yeah, not sure then
Ok
How would you do FixedUpdate in a mod?
You would attach a monobehavior to an object and include a method with the name of FixedUpdate with no perameters in the monobehavior
Okay sounds good.
Wait is it possible to just delete a whole FSM? That would make my life way easier.
Yes, Object.Destroy(target fsm)
SFGrenade did the thing and added a text tutorial for making new scenes using Unity onto the apidocs!
https://radiance.host/apidocs/NewScene.html
Oof
Sorry folks, it's fixed now, be sure to reset the cache for the page
can't
ok, then whats a work around?
well first you must have a game object with the name of go
what do i make the gameobject of?
the api doc has an example, it just doesn't apply to sharp shadow for what i can see
Ah yea, but sharp shadow and whatever fsm it uses will use the same process 99%<
So first you should set the go/gameobject, which I can't remember specifically what you set it up from, but that's where existing mods to steal from comes in
I am trying to set the corpse sprite of the soul master to another sprite. I have a preload to the object. I get the component and I set the sprite. I get no errors. When loading the corpse it has it’s original sprite
OK, i tried, and I'm at a complete loss as to what my "GameObject go" should be set as, in the api doc, it sets it to a preloaded object, but to my knowledge, there is no preloadable object for a dash
i tried digging through some preexisting mods, and i couldnt find any examples, either
what you probably want, is to hook into HeroController.Awake or HeroController.Start (i prefer Start), since the sharp shadow effect is somewhere in the children of the knight go, then do the effect change in that hook (after orig(self))
that way it also works when people save+exit
not sure if any one has told you this yet but your fsm name is also wrong
Have you read the guide on https://radiance.host/apidocs/PlayMakerFSM.html ? There's lots of helpful stuff in there, I think.
The FSM Viewer formats the FSMs like so: “Gameobject_Name-FSM_Name”.
the fsm name is probably right
Well, the FSM name isn't Attacks-Set Sharp Shadow Damage which is what they have in the screenshot
but it is
Uhhh
Is it not just Set Sharp Shadow Damage
oh yeah, missed that part somehow
Woah what is that?
Ooh, thanks!
thank you!
Actually side question, what is the difference between Awake, Start and OnEnable?
(In general, not necessarily for HeroController)
awake is called when the component is constructed (so only the constructor is earlier), start is called when the whole scene was awaked (afaik, could be wrong), and onenable is called each time the go goes from inactive to active
can we somehow make our own mods?
Is there any Costom Knight skin related to mantis tribe?
This is the beginning of the main class of my mod. Why is this recognised as a library?
idk if you even need the assemblytype thing
That's not where that goes ngl
it's an assembly attribute you don't put it on a class
Wait.. you are right
i mean, tot works fine and gets recognized as a normal mod, so idk what you guys did to fyremoth to make it seem like a library
Yeah. What are things that make it get recognised as a library?
It contains lots of static functions but that can’t be it right?
Qed?
The generic?
What should it be then
nah, tot works with it
Otherwise we get a obsolete warning
I can check though
Oml
Please it literally says the answer on the warning
I cry everytime
I read the warning. I couldn’t get it working
Wtf my line number
bitchhub
L700
you just override the properties and add a backing field
oh wait yea, tot is also a library, sad
still works though
sfcore is recognized as a mod lol
does it make a difference if it's recognized as a library instead of a mod?
the only thing i see rn is that it's at the front of typePaths
Oh right assembly load order
but since i didn't make a type attribute of it, it doesn't appear to be an actual issue, as only explicitly defined mods are in front
I'll try to fix it tomorrow. Thanks guys.
i think i'll add a bit for the detection of mod vs library to the mapi, so things like sfcore are correctly identified as a library and mods that use sfcore's generic mod inheritance are correctly classified as mods
wait, AssemblyContainsMod should already identify the generic mod inheritance as a mod
so apparently the loading of mods to determine the types is already flawed:
[INFO]:[API] - Attempting to determine type of mod assemblies (library/mod/addon)
[INFO]:[API] - Type Fullname: '<Module>'
[INFO]:[API] - Type Fullname: 'AdditionalMaps.AmSaveSettings'
[INFO]:[API] - Fullname: 'Modding.ModSettings'
[INFO]:[API] - Fullname: 'System.Object'
[INFO]:[API] - Type Fullname: 'AdditionalMaps.AmGlobalSettings'
[INFO]:[API] - Fullname: 'Modding.ModSettings'
[INFO]:[API] - Fullname: 'System.Object'
[INFO]:[API] - Type Fullname: 'AdditionalMaps.AdditionalMaps'
[INFO]:[API] - Type Fullname: 'AdditionalMaps.MonoBehaviours.s_CustomArea'
[INFO]:[API] - Fullname: 'System.ValueType'
[INFO]:[API] - Fullname: 'System.Object'
[INFO]:[API] - Type Fullname: 'AdditionalMaps.MonoBehaviours.GameMapHooks'
[INFO]:[API] - Fullname: 'System.Object'
[INFO]:[API] - Type Fullname: 'AdditionalMaps.MonoBehaviours.MappedCustomRoom'
[INFO]:[API] - Fullname: 'UnityEngine.Component'
[INFO]:[API] - Fullname: 'UnityEngine.Object'
[INFO]:[API] - Fullname: 'System.Object'
[INFO]:[API] - Type Fullname: 'AdditionalMaps.Consts.TextureStrings'
[INFO]:[API] - Fullname: 'System.Object'
[INFO]:[API] - Type Fullname: 'AdditionalMaps.Consts.LanguageStrings'
[INFO]:[API] - Fullname: 'System.Object'
[INFO]:[API] - AdditionalMaps - LIBRARY
AdditionalMaps.AdditionalMaps apparently doesn't inherit anything, not even System.Object, no wonder it's classified as a library
https://github.com/HollowKnight-Modding/HollowKnight.Modding/pull/42 one step forward

this is closer but it still won't detect your subclasses
basetype is only direct basetype
yea, the subclass thing is only because the other dll isn't loaded, so i doesn't even know that type
btw, the basetype thing would detect it, if the class exists while checking
possibly, idk exactly how mono cecil works
load libraries first
so just load all of them, check for the subclasses, unload them then reload them in order? because otherwise there still is the problem of non-existing mod subclasses being classified as libraries

i have actually no idea what you want me to do tbh
is the basetype just straight up null if the assembly isn't loaded
appears like it, as it doesn't enter the while (parent != null)
Just for confirming my understanding :
when an FSM has a "target" or "owner" GO in the variables, changing those would make the FSM logic run on other GOs ?
for example like could this be used to make weaverlings display on zote and follow him by changing their owner?
I'm looking for someone to commission to code a mod (a branch of randomizer, probably) to imitate battle royale loot drops and spawns. Please ping me if capable/interested.
is it possible to preload a grimmchild?
is it not just on charm effects
good question let me go test on my laptop
winforms sort of does but it messes with the designer sometimes
I could probably make that. I'm a little strapped for time lately though, so if anyone else is interested, you should go with them.
@fair rampart is this for fsm view?
I'm testing with latest avalonia and it looks great on high dpi
assetsview uses winforms not avalonia
uabea uses avalonia and is what I'm testing on
what kind of search
oh man the latest assetsview on high dpi looks like garbage
the listview is half cut off by the file list
blame visual studio for that and is really hard to fix
I just have to keep switching back and forth between high dpi and non high dpi until it fixes
I didn't test it for this release though
if you set windows scaling to system for AssetsView it will fix but it looks blurry
oh search in uabea not assetsview?
assetsview has local file searching and global file searching
uabea is sort of broken right now because of assetstools which is what I'm working on right now
yeah it's currently set to do nothing on the repo rn
I have already made a local commit to add it, but due to other bugs I haven't pushed it yet
just give me a few days
alrighty. thanks! I'll get back to you if I can't find anyone else.
i downloaded the modinstaller and it has a mod called randomizer 3 but doesnt work how can i fix it
could also prob do that
been a bit inactive here, im not gone, just need to finish my other projects first, don't like letting stuff unfinished :>
Leaving things unfinished is the best way to have others completely ruin it
Hello
i'm making an evil% customknight, is it possible to add it to the official mods drive afterwards
what's evil%
Been working on this one sprite for way to long bc like i can’t figure out if the eyes ok
I swear the tiny little eye shouldn’t be this much of a issue
is it possible to "mod" hollow knight onto Mobile With the Dev Permissions?
I don't think the problem will be the Devs permission
No. You would have to compile from the original source, add a control scheme and most importantly you would have to add compatibility with all kinds of resolutions. It would also be a too small screen for hollow knight to be really playable
you have to make a new game
poop
has anyone yet discovered to make new pins for the map?
should be ez
no :)
Why is the way it’s looking at me want me to join
Looking at the sprites wondering if I should start over and actually make it look like a tiny lurien
Ah not really a discussion more just “this is my current progress , but , I’m thinking of restarting”
lurien kight looks so cute
where hollow point
?i and #archived-modding-help
Reminder: The mod installer (https://radiance.host/mods/ModInstaller.exe) and other modding resources can be found from the pinned messages. 
poggers
Anyone capable of viewing FSMs for 1.5? I figure I need an updated cldb.dat for Unity 2020 but I don't know how to get one.
use fsm view avalonia
Do you have a link or pointer? I checked pins but could be blind
I checked your repos on github and also missed it

Thanks deeply, though. I appreciate the time
Welp, I'm back on my Eternal Ordeal nonsense: Is there any evidence within the code for EO that suggests any sort of "class" of Zoteling? By this I mean:
- Zotelings the Mighty, Lankies, and Heavies are one class
- Hoppers and Fliers are another
- Turrets and Heads are another (possibly Flukes in here too)
- Volatiles
- Curses
I ask because I am seeing a lot of patterns in their spawns. If a Turret leaves, there will be another Turret or Head to fill its place (or possibly a Fluke...more examples needed). If a Hopper or Flyer dies, I'll see a Hopper or Flyer replace it. The ZoM class seems to be the most volatile class with a chance to spawn another ZoM, a Lanky, or a Heavy when one dies. Volatiles seem to be completely on their own schedule regardless.
Am I seeing patterns that don't exist or is there truth to it buried in the code?
Is about 300 lines in a single file okay for a simple mod? It runs just fine, but I want to help insure I follow best practices the best I can
Generally, you want to have one class per file and each method should be relatively short (think ~30-60 lines). In practice, if you're the only dev and you can maintain it then it's really up to you
Ah, I see! It is one class, so I guess that part is good haha. My methods are around 60 lines or so, but I guess since I use so many modhooks it makes my program a little thicker
Thanks for the info ^^
can anyone point me to the latest customKnight repo ?
seems like it is this one ?
https://github.com/jngo102/HollowKnight.CustomKnight
yes
ty i will raise a pr soon 🙂
How do i get the players current position?
HeroController.instance.transform.position
can i use that to move the player?
Yes
yes
Any ideas why a FSM would freeze in a certain state? This is till referring to my issue (from a week or two ago) with the knight bending down to pick up an item and never getting back up. I can tell which state in the FSM it's stuck in but no idea why or how to diagnose. Thanks in advance. 😅
exception, invalid transition, etc.
There was a problem like this in the AddYNDialogueToShiny function in rando - the issue was that when the hero was damaged, it froze because it couldn't play the animation (this has been fixed in the branch in my repo). It could be something similar - it's trying to play an animation that it's not allowed to?
You said you were on 1.5 yeah?
Yeah, I'm on 1.5
If you ever create a new state or fuck with transitions those don't work anymore lmao
Wait what
Yeah, that's my reaction too
Does that mean you can't modify FSMs as much as you used to be able to?
You have to have an update famutil if any fotm
they changed the backing field yeah
Not completely
and you have to have added any states you're going to transition to before adding the transition as it's a ref to the state
i have a commit example if you want it tbh
Yes please (though I'm still on 1432 for now)
Yes, please. I'm still processing here, very slowly
I'm on 1.5 with randomizer mod as a base, so flib will go through my pain soon 😢
I'm not sure what you mean here, pls elaborate?
Fuck mobile, gimme like 10 mins ro get to my pc
you
So if I’m understanding this right, fsmutil needs to be updated to use state refs instead of state names?
good ol massive diff
i changed more than necessary tbf because i changed the backing util a bunch
ig this is more accurate
not a huge deal just the transitions
and some ordering stuff in your actual code
I jury-rigged a vasi update for 1.5 since I was too stupid to find your repo
This will probably help fix the issues
Thanks dearly, though, this will be fun to dive into. Hopefully I'll make progress finally. 
yea, what 56 said, basically only order on your end and a new field to worry about on the libraries end
I'm guessing SereCore will need to be updated too?
I jury-rigged serecore update for 1.5 too, so yes I guess
i mean, all mods have to be updated for 1.5
I don't know if it was update properly for 1.5, I'm just a stupid
since it's a new .net framework version
(What I meant was, updated with code changes for the FSM extensions rather than, like, rebuilding it or something)
(Probably if it messes with fsms)
idk then, i have absolutely no idea if serecore has fsm helping stuff
nice
. o O ( breaking changes )
make that 6 when I include one in frogcore! I’m too lazy to make my own fsmutil
tbh the best time from 1432 to 1.5
yeah
btw, is the mapi going to be bundled for distribution when it's released?
or in pieces like rn
you're going to love pale court's dll then

Is ThAt CoNsIdErEd LaRgE?
Bundled mapi killed progress on my work so pieces makes me happy
oh wait no, it's not 23 mb, maybe with an additional 0 at the end though
Did you bundle another game with it? 
just like 8 asset bundles
20
I'd suggest something like tree shaking but that won't fix it
i made tot go from 3 MB to ~10 MB by just increasing audio quality :)


