#archived-modding-development
1 messages · Page 495 of 1
They would appear behind the skin names
But they were crashing the game
You don’t select skins yet
Oh?
Plus I can’t think of a fix, because no matter what, all the images would need to be loaded at once
Then what does it do?
Oh, ok
Like the old CustomKnight
So you need to swap them in the folders?
Yeah
That means it'll load only one skin at a time, though, right?
Yes
Is there at least going to be enable/disable?
?
Switching between the chosen skin and Default
No
I mean, I might be able to do that, but I might not want to do that
Speaking of CK2, I should work on finishing the editor
I’ll do it later
modding on a slow pc where unity constantly crashes isn’t fun
Editing large json files isn’t fun so I’ve been making a program to do it instead
I also probably need to display images of every frame and possibly animations when I’m finished with the functionality
now i also got obj exporter working, so now i can create the meshes dynamically and also export those to refine them in blender
Oh, so it won't be a part of CK2 then
Unless?
It will be a separate app that generates globalsettings for the mod
Awesome! You gonna let other people use that for making levels?
maybe
have fun
?
Wait @jolly oriole you made a level editor tool?
no, i use unity to create scenes, which then just need to be loaded to be accessed, what i do is just to make some things easier
Oh, alright
I've made the benchwarp hotkeys configurable now - anyone want to try it? Also, I figure it can't be included in the mainline version at least until the rando tourney ends, can it?
fiftysix is dying to try it out, don't believe their indifference
source at https://github.com/dpinela/HollowKnight.BenchwarpMod , under branch "hotkeys"
I will definitely be checking this out next time I play. Thank you for this. 😊
unity crashes after compiling/importing my mod (after i added some monobehaviours) and i don't know how to fix that
Can someone explain this piece: ("SceneName1","Go/Path/Name/1") ?
That’s part of preloading
In GetPreloadNames()
SceneName1 is the name of the scene you are preloading from
The 2nd string is the path to the object
How do I find it?
So, for example: parent/child/child of child/child of child of child/target go
wh?
To find it, I suggest using the scene dumps in the pins.
V = ascended?
Yes
The file looks like it was printed with some script
With all the END and START and formatting
Though it would be madness to do all this by hand
So for example, you want a preload a object with a fsm(a boss for example), you take the scene name, then in the GameObject dump(or some other means) you find the object and it’s path(like what it’s a child of) ex: _SceneManager/Effects/BossName would give you: the child called BossName on the Effects object which is a child of SceneManager
It would return null tho because I’m pretty sure there would never be a child of SceneManager in the first place
Depends
The FSM? The enemy as a whole? Something else?
What are you adding, is it just in one instance of the enemy
Are you adding the enemy to other rooms then editing it
What do you want to edit too
How are, for example, bosses usually modded?
But only this one instance of them?
Wait what did your question mean
Do you want to edit every enemy like this enemy, or just this enemy
Well
A godhome boss
Is only one instance
No?
?
where is the link to the mod installer pls help
So you only want to edit it’s occurrence in godhome?
Well, the boss is different in and outside, no?
?
Usually bosses are exactly the same in and out of godhome except for a couple states
Probably
So yes, I'll happily try to do all changes
Probably will, or won't? 
With bosses, it’s different because they are in a set bit of rooms
Well only one way to know, test it
You never tried?
Eh, fair point
It was my design choice to only occur in godhome
Plus I prefer adding boss levers in godhome so I don’t outright replace the boss
Oh, yeah, how would one do that
Also, suppose I turn off the mod while playing the game, will it just revert the boss/remove lever/whatever else you choose to do?
Depends on the coding
So take a object from the scene dump that you want as a example for preloading
Tell me the scene and screenshot the name of the object
Just choose any of them
Just a example
It’s a example
I don't even know how to read this file
So yes and no depending on what you choose, but remember that it’s just a example
I'm not sure what here is an object
and what is just... stuff, about it
Screenshot something and I’ll explain
I see multiple STARTs and ENDs
All of these are game objects and some have paths
Oh come on
Editing images on mobile not fun
So the 2nd line under start is the object and it’s path
first line is just the script telling us stuff?
Well they have a path, but their name is the only thing in the path as they have no parent
So if you go down to where they start having \ in the path/name I’ll explain more
Also there isn't a difference between Pantheon and Hall, right?
When fighting a boss
just making sure
No difference except a variable in game manager or Playerdata I think
is this what you mean?
Yeah
Copy that name
Or copy the entire path
The object door_dreamEnter is a child of Boss Scene Controller
Now to use it in preloading, replace \ with /
Yes but do the replace thing I said
and swap the \ with / of course
Yeah
scene name is just the file name, right?
Yeah
Problem is, how do I know what I want?
Well, the dump shows you the components and some of the values of the components
You can use that
Also it completely prints all the fsm states and what actions are at what index
may I point out this is a 13k line file and I never used this before
"fsm" appears on, well, a lot of lines
You can find both the object and Fsm’s names
lemme open it up real quick
Gtg, gl
finite state machines everywhere
playmaker finite state machine vs non playmaker finite state machine who wins
It is
is there a way to get a list of all the mods that have been loaded?
What does it help to receive copies if I want to change the gameobjects themselves
afaik last time something like this was asked, the solution was something with reflection, like getting all namespaces or something
hmm
In that case, you could just wait till you get to the scene with the GO you want to change, and get and edit it there
what is this
something like modcommon or seanprcore wont be listed in that tho
because they don't have a class that derives from Mod or IMod
Wdym?
I see
find the gameobject yourself and edit it
or wait a sec, checking something
okie
ok, confirmed that only mods with an actualy derived Mod class get added to that list
I don't understand
This is all so confusing
How did you all get started with this?
we didn't start with this, there was no guide before
GameObject.Find(string)
the preloader the guide is talking about is for if you want to get a copy of a gameobject (GO). It does the work of going to the room the GO is in and getting it for you
but if you want to edit a specific GO from a specific room, then you have to wait till the player goes to that room, use GameObject.Find as RedFrog said, and edit the GO
i use the UnityEngine.SceneManagement.SceneManager.activeSceneChanged hook
yes
yes
alright can you specify this
What do I pass in, and what does it give
Generally
....you put in a string
Like, I obviously pass in a string, but what is it
it returns a gameobject
The name of it?
alright, alright
my hands are frozen and ive had a really hard time typing
so, I put in the name of the gameobject, and it gives me back the actual gameobject?
oho?
this is where you should use a coroutine
to wait until it's not null
I suggest attaching a monobehavior to the game manager and using (monobehavior instance).StartCoroutine(coroutine)
Haven't touched one of those in a long time
attaching a monobehavior?
Lemme think 
Hm
GameManager.Instance.AddComponent<MonoBehaviorThingIdkWhatYouWouldNameIt>();
why did I press enter early
example
private void OnSceneChange(Scene arg0, Scene arg1)
{
var thingy = GameManager.Instance.AddComponent<MonoBehaviorThingIdkWhatYouWouldNameIt>();
thingy.StartCoroutine(ThingThatDoesStuff);
}
private IEnumerator ThingThatDoesStuff()
{
yield return new WaitWhile(() => !GameObject.Find(ThingythatIwanttoget));
var thingyIwanttoget = GameObject.Find(ThingythatIwanttoget);
}
I think
GameManager is a thing
that does things
its a component on the _GameManager object
My spelling is probably all over the place sorry
I suggest not adding the component on room change tho
nevermind, keep explaining 
I'm talking about adding the component to the gamemanager
here, let me change it up a bit
I'm lost, again
private void OnSceneChange(Scene arg0, Scene arg1)
{
var thingy = GameManager.Instance.GetComponent<MonoBehaviorThingIdkWhatYouWouldNameIt>();
if (!thingy)
thingy = GameManager.Instance.AddComponent<MonoBehaviorThingIdkWhatYouWouldNameIt>();
if (arg1.Name == "TheSceneWhere Stuff Happens")
thingy.StartCoroutine(ThingThatDoesStuff);
}
private IEnumerator ThingThatDoesStuff()
{
yield return new WaitWhile(() => !GameObject.Find(ThingythatIwanttoget));
var thingyIwanttoget = GameObject.Find(ThingythatIwanttoget);
}
Where does GameManager come from?
it is a component attached to the GameObject _GameManager
you could also just do something like
var mygo = new GameObject("Name of the thing that makes stuff happen")
// var mygo = new GameObject() also works
GameObject.DontDestroyOnLoad(mygo);
mygo.AddComponent<COMPONENTTTTTTTTTTTTTTTTTTTTTTTTTTTT>();
k ima go do something else now
Aaaaand I'm back
I still don't get it 
My point is, do I need to do anything special to use it or does it exist simply thanks to whatever other things I use
it exists because it's part of hk
you don't specifically need gamemanager because of the 2nd method I showed you where you create a new gameobject and attach your monobehavior to that instead
Ah, alright
I still don't get your actual code
// var mygo = new GameObject() also works```
what's the difference?
one makes a object with the string as it's name
the other uses New GameObject as the name I think
So mygo stores inside it a GameObject called "whatever we put in here"?
yes
Oh hell yeah
I understand something
And then what component do you add to it here?
mygo.AddComponent<COMPONENTTTTTTTTTTTTTTTTTTTTTTTTTTTT>();
a monobehavior that you make
Unity Problem: when i update the DLL, unity compiles the scripts, after compilation the editor just closes and i don't know why.
What i do know is that the changed code is actually compiled, because after reopening the project everything works as it should.
Editor.log: https://hastebin.com/lokapikudo.makefile
fixed the editor crashing
made a second project with the same assembly name as the first, but it only has just the monobehaviours, even without function bodies
<#archived-modding-development message> how the fuck did i manage to do this again
?
nvm, figured it out
what bro
uhuh
ig this was another helpfull development message?
Who do I have to bribe to get the HowwowKnyight mod into the mods drive ?
If someone is putting that in, put frogcore in too plz https://drive.google.com/file/d/19A1-vBe25g9ETqS-XkQnEMj7YVleCBp_/view?usp=sharing
both of you gimme your emails
bro why are you monocling me
adding stuff to the drive myself is so much effort
this is future proof
really though the drive isn't super necessary at this point
Because of modlinks.xml
yeah
yeah pr modlinks.xml
K
there are some instructions at the top
since I'm adding frogcore, I might as well do the uuwuu update too
k did a pr for uuwuu and frogcore
how do I fix FrogCore constantly needing to update?
that means you put in the wrong shasum
yes
how do I get the right one
I searched up a sha1 generator and generated one from the name FrogCore.dll
well ill remember this
ill use the excuse of I am tired
ok I think I have it now
created another pr
this time it should have the right hashes for uuwuu and frogcore
hey so im interested in learning to make mods but I have no clue where to even begin can anyone point me in the right direction 😅
tyvm
Welcome to my world
If you figure out a way to understand things faster tell me please
And good luck
lol ty
Do you already happen to have background in anything like this?
I have experience writing code and I've made small mods for other games before so I have a bit of a head start in that department but 
I've never published anything I've made, just small QoL changes or funny things for myself
What kind of mods are you planning to make here?
No idea. something fun. My one meme idea is to spite a certain someone who made a photoshopped multi-grimmchild by replacing 4 charms with more grimmchilds

someone sent a photoshopped image where they had like five grimmchilds
so I want to do that
And then, the more you have, the more heads?
Wait
OH
Just multiple grimmchildren
I thought for a sec you want to have one grimmchild
With multiple heads
nah
I mean my image editing skills are sorta okay but that just sounds like it'd be a pain in the ass to make look good, if it was even possible which IDK
Oh, it probably is
You'd only need to separate the head, and get each head to float around the main head or something, and for all heads to function independently
What charms will you sacrifice for these grimmchildren?
Change all charms except for heavy blow
nah then I'd have to give up unbreakable strength
ooh possibly make something that gives buffs to the 4-notch-bois while still retaining their original ideas I.E. Deep Focus no longer slows your heals down, Hiveblood delay is halved and regenerates back up to full no matter your damage, Soul Eater is removed from the game, stuff like that
something that makes them worth using 4 notches on
regenerates back up to full no matter your damage
Not at once, of course
Like, one after another
Soul Eater is removed from the game
We should find a replacement to it, then
Soul Eater regenerates soul whenever you get a spell hit
Make it give like 17 Soul so that if you double with a VS you get a full refund.
Maybe it would need to change port spell because that would also let you just press Abyss Shriek over and over
Why replace charms when you can add them
sorry
Cuz we don't need heavy blow, quickslash, shaman stone, MoP, or unbreakable strength
They're all useless
uh huh
Alright, I might use heavy blow now and then
but the others are trash
does it make me trash if I use all of the above
Nah, it makes you a pro player
K
They're such bad charms that using them is detrimental
this is an alternative to the entire code chunk right above it?
Not the entire thing
You need to start a coroutine to wait until the object you are looking for isn’t null
It seems like I need to find the boss component upon entering and attach a monobehaviour
You don’t have to do that. I suggest it tho
but I might be missing something cuz what you wrote seems longer in there
Alright so what's the coroutine for?
Oh I see
So when I enter, start a coroutine that waits for the object to be acquired, then attach a monobehaviour that alters it as I wish
yes?
Yes
omg I actually figured something out
But, you need a monobehavior to do that coroutine
Wait what
Look at lost lord again
It has the LostLord class which is the mod class
It has the KinFinder class which is a monobehavior
Then it also has the Kin class which is also a monobehavior
this one?
Yes
Look at where it adds the Kin and KinFinder components
the first one?
The second appears to be a verification of sorts, what is it for?
lemme just
On Unload it will destroy the component
this?
It is also called in the after save game load hook
Wait what does Unload do?
it's a part of the toggling thing, so is it when you disable a mod?
Yes
this?
Alright
So see how AddComponent is called on making a new save and loading a save
Yep
And how it’s adding it to the game manager?
You could replace adding that to the game manager with the new GameObject code I gave you
So here you were referring to something like KinFinder?
And instead of destroying the component in unload, you’d destroy the GameObject
Yes
Look in KinFinder
Ah, I see
Yeah, I saw, just didn't want to copy the code in here
but
{
private void Start()
{
USceneManager.activeSceneChanged += SceneChanged;
}
private void SceneChanged(Scene arg0, Scene arg1)
{
if (arg1.name != "GG_Lost_Kin") return;
StartCoroutine(AddComponent());
}
private static IEnumerator AddComponent()
{
yield return null;
GameObject.Find("Lost Kin").AddComponent<Kin>();
}
private void OnDestroy()
{
USceneManager.activeSceneChanged -= SceneChanged;
}
}```
screw it
Hm
Is internal like private?
See how it starts a coroutine that adds the component
Internal is public but only things in this assembly can access tmk
To my knowledge
On start (loading a game/new save file, because of the code in LostLord) adds a hook for scene change, when it's called checks for the scene - in this case, Godhome's Lost Kin - and starts the AddComponent() coroutine. AddComponent does yield return null which I'll be honest I don't remember how yield works but I remember it waits for something or another
GameObject.Find() only searches within the current scene, right? It can't find outside of it
Yeah I think
Would be weird otherwise
Anyways, what's the Kin component that's added?
Oh found it
Look inside and find out
It's the cs file there
I wasn't sure if it's the mod's file or something else
nevermind
So that's the fsm's code?
It’s what edits the fsm
I...
Edits or replaces?
Edit
Alright, alright, nice
I mean, you could remake every attack
Do I need to do anything special to open a monobehaviour?
?
Or is this enough
thought so hoped so
Alright
So with this conversation, I think I'm ready to take my mod one step further in complexity while still doing nothing other than taking up space in the top left corner of the menu
Thanks
Does the FSM-editing component need to have some specific name?
no
if you want to have it be properly toggleable yeah
👌
What does Lost Lord's SetupSettings() do? Defined on line 85, called in AddComponent()
creates the global settings file if it doesn't exist
Pretty sure you can also call it in initialize
You don’t need to care about it if you aren’t using globalsettings
oh I wasn't aware that was possible - I havent seen any other mods do it and some very strange things appear to be hardcoded in the game itself so I was working from the idea that it wasn't possible
Meet SFCore by SFGrenade. Cool thing. Lets you add all sorts of stuff
arg0 is where you came from and arg1 is where you entered?
Yes
Thanks
Time to open one of the many things that can give me the scene name
I can already guess it, knowing the format, but
we need to make sure
can confirm
private HealthManager _hm;
HealthManageris HK-specific, right? It's just something defined for whatever reason for this game
More importantly, when is Awake() called? Upon starting? Sometime around it? Some other time entirely?
Unity’s definition: when the script instance is loaded
Healthmanager is how health is stored in hk
Thought so, thanks
It can be set to invincible, you can set a certain angle invincible, and more
private InfectedEnemyEffects _enemyEffects;
Same idea for this, too, right?
Yes
Wait what 
A certain angle? As in, direction of incoming attack?
Yes
I have a extension method in frog core’s journal helper that uses reflection to set the journal entries on these
Should I make a page for the ApiDocs about adding journal entries?
Sure
How does that have to do with infection particle effects?
Unless I misunderstood what that is
The class EnemyDeathEffects contains the code for granting journal entries
I misunderstood what you said
I thought you said InfectedEnemyDeathEffects
Ah, I see
Anyhow
I just need to log some stuff and then I think I have the basic structure of the thing done
Then comes the hard part
Of addin actual content
What are you planning
K
You?
stealing lifeblood master
?
Uploading source code to a private repo
What's that
Hive knight mod I made
lol
wait it's called lifeblood master
oh no
I don't like that
you're too close to my idea right now
At the time I couldn’t think of anything better
Does it actually involve lifeblood though? 
Nah

Was too dumb at the time
I was planning to remake it in a large expansion I was making
What?
why not?
not friended
I guess I'll never join back 🥺
yo 56 we got a pleading emoji here
yoooo guess who's making mods
Me
well yes but also me
What happened here?
If I've done this right and I probably havent but if I have, baldur shell should have a 25% chance of restoring one hit of durability per kill
survey says I have not
but the other thing worked correctly
so I guess that wins

Is anyone here? Out of curiosity, how are mods created? Can we modify legacy code? What language do we work in?
Is this C#? Looks like Java and Golang combined
C# yeah
basically you create a dll and the modding API loads it into the game when you start it
heres a good place to start if youre interested in making mods
Thanks. If I were specifically interested in the multiplayer mod, do I have to do something easier first or can I jump right in
And is the code for mods public on Github?
most of the mods are open source
id suggest you do something easier just get your bearings
but if you already know your shit then you can probably quickly transition into the multiplayer mod if you think you can handle it
i dont have the link to the multiplayer atm
I haven't made a mod in a game before nor have I worked in C# before so it'll be a learning experience. But yeah, I have a fair bit of experience programming.
I'll try something easier first, I guess.
if you know Java already most likely youre gonna have a very smooth transition to C#
syntactically theyre super similar
BUT you will need to understand Unity concepts such as implementing MonoBehaviours
HellMod is probably your best option of understanding how to make a simple mod and its on github
yeah, the video tutorial in the 2nd section of the apidocs should guide you relatively straightforward, 56's provides the basic modding tutorial whereas saleh handles stuff like adding scenes and what not
Oh no, no autofill 😦
Nvm there is autofill. Sweet! I'll probably get to work on this tomorrow. Thanks @floral furnace
Eyyyy nice
Can I join your surveys?
That just means playtest right?
"survey says" is a jokey way of saying "I tried it and"
what makes white defender laugh? I kill his AudioSource but he still keeps making noise.
do you happen to know when he laughs?
You can never kill the laughter of the jolly Wit Depender
when he is stunned
ok found the Voice Player event
thanks not sure why I didn't look there
FSM Dung Defender
State Stun In Air has an AudioPlayerOneShot (idk if those contain laughs, but they appear to be)
yea
I'll copy paste the fade audio event into an earilier state so it happens earlier
yay it worked thank you
np
What do you need to stop the laughter for?
So I can't playtest? 
for pale court
As if that's ever going to be finished lmao
lol

I literally just started my mods are tiny
Same
I have roughly a week more than you in this
And it seems like you already did more than I did
So just
o7
Alright I have no idea what I'm doing wrong
There's some problem in the coroutine to add the altering code/the altering code itself
Wait I might have found it
The coroutine is meant to wait one frame, run once, and end, correct?
Aight I have no idea what's wrong
It seems to still... not not-work, yet
But there's definitely an error message at the top left corner and in the logs
... FAILED TO LOAD! Check ModLog.txt.
Alright
So far, the mod doesn't not-work
All it's supposed to do it change the boss's hp
but for some reason
There's still the error message and error logs
Which I have a bad feeling aren't good
shit time zone
[ERROR]:[API] - at (wrapper managed-to-native) System.MonoCustomAttrs:GetCustomAttributesInternal (System.Reflection.ICustomAttributeProvider,System.Type,bool) [ERROR]:[API] - at System.MonoCustomAttrs.GetCustomAttributesBase (ICustomAttributeProvider obj, System.Type attributeType) [0x00000] in <filename unknown>:0 [ERROR]:[API] - at System.MonoCustomAttrs.GetCustomAttributes (ICustomAttributeProvider obj, System.Type attributeType, Boolean inherit) [0x00000] in <filename unknown>:0 [ERROR]:[API] - at System.Reflection.MonoMethod.GetCustomAttributes (System.Type attributeType, Boolean inherit) [0x00000] in <filename unknown>:0 [ERROR]:[API] - at Modding.ModLoader+<LoadMods>d__9.MoveNext () [0x00000] in <filename unknown>:0 ```
The mod works perfectly
but there's still error logs and the "cant load" message in the topleft
Ah
Glad you asked
I have no idea
This happens only when I have the coroutine defined
you disable this piece of code, and while the mod - obviously - doesn't function, no errors of any kinds
what framework are you compiling for
You need to do 3.5
you need to compile against .net framework 3.5
Not Christmas for me yet
aight, I'll take a look at this later
in the meantime, I wanted to know
How does something like Stunning a boss work?
The time-out part of it
Stunning is a fsm
Yeah, I know that part
There is a method on game manager called FrezeMoment I think
Hm
Also what framework are you doing?
Lemme pull up the fsms quick
Not sure, maybe 4.0?
As we said earlier, you need to do 3.5
As I said earlier, I'll take a look at it later
As I said now ok
Pretty sure
Yep heavy blow is 15
So what I want is some timed event where the countdown to it resets upon being hit
Hm
?
Oh god this is gonna be complicated
Should I draw the way I want this to work before I try to code it?
Seems like a good idea
?
K
Suppose I want to summon the honey spike projectiles
It’s just a simple send event if I remember correctly
Hi guys, Is there a way to mod Hollow Knight? I checked the video made by Relyea on how to mod it, but I can't find the bot that sends it
yeah
first one
#archived-modding-help, read pins
ok, thanks
no problem
I find the send for FIRE but I can't find where the globs are created in the first place
Battle Scene\Globs\Hive Knight Glob\Stingers
These are the spikes?
Ah, no, that's all eight of them
So its children are the spikes
Now, how do I
plagiarise them

Aight, I don't have much to base my code off
So I believe this is not the best way to do it, if even possible
But
Is it possible to do it similarly to Lost Kin/Lord's infection projectiles?
Still trying to figure out how to find them
Well anyways I gtg
im currently trying to make a mod that adds five more copies of grimmchild into the game that each spawn their own grimmchild and I am quickly discovering exactly how not-simple that is
Why am I doing this? to dunk on someone. Will it be worth it? No. Am I gonna do it anyway to see what I can learn from it? Yes.
why not just have the 1 charm make 5 grimmchildren
grimmdergarten
The screenshot I'm mimicking shows 6 grimmchild charms
it's a photoshopped meme but i want to make it a real thing
that's my backup plan tho
@grave basin you might want to look at the dreamshield coop mod in Dnspy(I based the grimmchild part off CustomKnight. It was my first mod, the coding is terrible) and jngo’s CustomKnight code on GitHub. The thing with the way I did it makes only one grimmchild appear though. I think you need to change the tag on it after instantiating so it doesn’t bug
Gtg
neat ty
Guys do you know the more save mod is conflict with debug mod
yes
Why
Because More Saves is a bit broken.
"A bit"
Wait, isn't it possible to just replace the code of five other charms with Grimmchild's or does the charm work in a way that, well, doesn't allow it?
@jolly jungle you need to replace every instance of the original charm being used. It’s better to add completely new charms
may be easier than that, as charms are loaded exactly once (after startup, on the menu screen)
I meant replacing every instance of the charm’s effects(ex: removing nail length from long nail)
Actually I found a better solution that's more in line with the original meme
It actually came from an error in the code from the custom charms version
whenever something tries to mark grimmchild as equipped undo that
you put the grimmchild on by selecting it in the inventory and take it off by selecting it in the equipped bar
If that ends up breaking something it doesnt matter because this mod is literally just a meme that I'm going to use once and then throw away 
and then spawn in a bunch of grimmchilds
Alright and that's not how the game handles charms and that gets it stuck in an infinite loop and crashes the game.
See this is why I do these dumb projects - I'm learning a lot through experience
OOP NEVERMIND
the right answer was to override the check with a "return false"
Now all that's left is to find a way to spawn in that many grimmchildren without relying on equippedCharm_40
side note if you close and re-open the menu, the fact that the game doesnt think these are equipped leads to a very strange thing where unequipping them essentially adds two temporary invisible charm notches that last until you close and re-open the menu again
after looking at it, for the grimmdergarten to work, you could add a bunch of custom charms, set a string value to that new boolname (Charm Effects - Spawn Grimmchild FSM -> Check State -> PlayerDataBoolTest action -> boolName string)
and you can add custom stuff to the custom grimmchild in the Idle state of the same FSM
ye
that was the plan but then I got a better idea 
I still have the other idea saved tho so if I go for that...
in any case I appreciate it
pretty sure grenade's idea doesn't risk "killing" saves, but whatever your intention for the mod is
Then again equipping custom charms, not taking them off, then disabling the mod can be bad for saves too
i forgot to mention that you'd have to copy the Spawn Grimmchild FSM onto a Charm Effects GO as many times as you want grimmchildren
actually from having accidentally done that it's not too bad it just turns into a no-effect grayed out version of dashmaster and you unequip it
And yes that's true
that was the plan
But in any case im not too concerned about the save killing thing bc this is a throwaway gag on a fresh save file
More to learn about the edge cases that are hard to study in a document
"what will I learn if I break as much as I can in this specific way"
true
Gravity Knight and Random Knight mods
anyway, trying to get the playmaker editor working with the utiny ripper dumped hk isn't going too well
also it's on my new pc
rip
I'm resorting to commenting out code that doesn't work and hoping it isn't used anywhere
been there
the only stuff I had to do it to so far was obsolete tho
"look if this breaks something I can undo the comment"
https://gyazo.com/dcc7410ba5f773d4bcff7df761a1e48d programming.png
lol
modding is fun because I like programming but the thought of slaving away churning out code for some corporation makes me want to commit quirrel
F
new idea: throw away 50% of my first idea, use new idea that will probably take another at least 1/2 hour of my life
programming
new ideas are great, that's how TestOfTeamwork was created lol
... and easy custom charms, achievements, items (sorta) and some other stuff
good point
easy custom charms
you're speaking in relative terms, right?
valid I'm just having trouble making the charm show up
it has no sprite?
well it had no sprite and then I realized I gave it the wrong path and now its sprite is the default tiny-question-mark box
still really easy to add them
ye
can you show the code you use to load the image?
just @ me when you do
btw who likes the idea of making a mod from a json file except you can edit the json file with a program to make it 100x less confusing
that takes all the fun out
customknight+?
it's meant for people who don't actually make mods
same idea
not the same thing tho
I should really finish that tho
https://gyazo.com/bc4515d291608a0ebe5557974f002c91 excuse the disgusting library name I typed the name in the wrong field
copy-pasted from the tutorial thing cos I lack originality 
just saying for multiple charms
ye
you could also probably get the grimmchild charm sprite from the charm icon list
that should work, idk why it would show up as a default thing
wait no
as it happens, the way that the game handles the grimmchild charm in particular makes that painful and asinine to do to the point where I just fucking gave up
is fammchild the sprite of the charm or grimmchild
gtg
charm sprite
then idk why it doesn't work
what's the code for replacing or adding charms
wait
maybe something related in Modlog.txt or output_log.txt
I just had an idea
land of null reference exceptions
TRU
I actually gtg now
bb
have fun and thx for the help
for reference
also the idea I had didnt work out
I think this might be indicative of a problem
uh, let me test that
it may be an issue of the png having problems with checksums and stuff, but idk
can you DM me the image that you use for the sprite?
sent
... just to be sure, you have gone into the properties of the image withing visual studio and set the build thing to "embedded resource"?
yes. I tried other things but they just went back to blank image so I figured that wasnt the issue
ok
trying in a bit
there definetly is something wrong with your image, yours is the tiny question mark, the other grimmchild i loaded your image in paint.net and just saved it again.
kk I'll do the same
no need
pog

Now time for the easy part
making the charm actually do something
wait did I say easy
i pity your head, from the desk slamming that must come forth.
isn't too difficult
i wouldnt know, i can barely program basic flags in python
I know it's not too difficult now I just need to learn how to bridge the gap between flowchart and code
i'm actually kinda stuck, cause idk how to put an existing fsm onto a gameobject in code easily
so i'll let you figure that out :) have fun

My solution might genuinely be to make an identical copy of the fsm and stick each one on a separate gameobject
weeb
?
wat
@jolly oriole would cloning the Fsm on the PlayMakerFSM component then setting it on the new one with reflection work?
i tried to look for a something that doesn't involve reflection, but it's probably the only way to do that
reflection
reflection is definitely simple enough for a first mod
Should actually be really simple tho
the first thing I do dives deep headfirst into something I have barely dipped my toe into
That also works
oh shit thats neat
But wouldn’t editing the fsm edit both at that point(not sure if it’s required) since both components reference the same Fsm?
The FSM has a check for if the child has already been spawned in and cancels if it has so I assume so
that's to test
unless I modify it so it's like weaversong in that it only goes for a certain number
and then set the target number based on the number of grimmchild charms equipped
On Charm update hook change the number to the amount of grimmchild charms equipped
Well nvm
isNotNull -> CANCEL
If grimmchild is already there, then the GameObject isn’t null
what im gonna have to do is cannibalize weaversong and Mad Science it into one
Yeah
Yeah I know what it means
The first time I opened this in the viewer my heart sank a little
It would probably be easiest to do insert method to calculate the grimmchild s
and then I was like "wait weaversong exists"
wait a minute no
weaversong just spawns 3 weavers and doesnt check count???
WAIT A MINUTE WHAT IF I JUST
nah I have to clone the fsm
cos weaversong is a single charm to spawn 3 weaverlings
ok dumb question but how do I find the GameObject to copy from 😅
GameObject.Find("Charm Effects")
tyty
also I changed the charm descriptions
wait wouldn't I be copying both to and from the same gameobject? I would need to find and change the fsm's overall name in that case, right?
Ok so because I'm an idiot tell me how badly I fucked up before I continue
@jolly oriole
Wtf is this supposed to do
it's supposed to be half-written code to duplicate grimmchild's effects five times onto different charms
WAIT I realized a serious mistake
why are you copying onto one object 5 times
because trust me
no I don't think I will
in my defense I have literally never done this before and I have already spotted several serious flaws in my current approach that you haven't mentioned yet.
This is overkill
https://gyazo.com/2ba539cdab1fb9c1e4c22c68691eabde unless I'm reading this wrong charm effects is the game object here right
no that's right
So I'm copying it because I'm fucking stupid and I've been led astray.
and just realized there is a much simpler and better approach to take
With a caveat
deleting that because uh
Better question how do I create a new game object for use within the context of an FSM
as in
I need to spawn a thing and first I need a gameobject for that thing to exist I guess is what I'm trying to get at?
var go = new GameObject();
go.SetActive(false);
i mean, i would have done this with copying the charm effect FSM as many times as i want additional grimmchildren, seems possibly simpler to me
bruh
literally just dupe the SpawnObjectFromGlobalPool action a few times
so fucking overkill
Yeah, just change the tag on the clones and manage the spawning yourself
Alrightyyyy
Who pinged
It feels good to know someone pinged me here when I was offline, means I have some minimal presence at the very least
@grave basin Sorry for the ping but I absolutely must know
How far did you get, what stuff happened along the way, etc.
Cuz I'm too lazy to read all of chat
Bruh
bruh
this but adding some other checks for the other charms
bruh
I got it to the point where it'll give me a blowjob but not to the point where it spawns the extras yet cos i got tired and went to sleep
I suggest cloning grimmchild itself instead of in the fsm on the charm update modhook
what tool do you guys use to extract game files from hollow knight?
It's in the pins, I think it's the AssetBundles thing. Haven't used it myself. There's already a few dumps of gameobjects and image assets around.
UABE
or nes's HKWE2
sometimes i also need nes's unity assets view (forgot the name lol)
how do you determine what scene the player respawns into after they die?
cant remember
pog
Does the SSEAdv extract sprites, too? I'd guess it does, cuz of the name and all, but you never know
Anyways
Now that I have my boss
I just do LocateMyFSM
and find the control one
and then I don't need to do anything from scratch, right?
I can just change things, too
Actually, I think I'll start by changing the stun fsm and lower the hits per stun, see if I can change it correctly
Where should I, uh, acquire, the fsm?
Lost Lord did it in Start()
So I suppose, why the hell not
better than most other options I could've chosen
Ah, wait, that's in Awake()
Whatever, we'll just see what happens
_stunControl.FsmVariables.FindFsmInt("Stun Combo") = 3;
Alright anyone knows why this isn't working?
