#archived-modding-development
1 messages · Page 488 of 1
Where can i find Language Resource Keys?
Wdym
Idk how to find the default ones
you just log them in a mod
Oh
I thought we could do it that way, but I thought there was probably a way more efficient method for it
Is there anywhere these are already dumped that i can just look up?
@fair rampart
I think this does?
https://www.xiang.dev/hollow-knight-translator/?search=hola
Searches for hollow knight text assets
@ornate rivet that'll do, thanks!
yepp
we should probably pin that or something tbh
it's very useful but I always forget it exists
So far so good
Think i'm done with this mod, it allows changing all Charm Notch cost from a config file.
yeah, you just remove the entry from the xml file and it'll return to normal once you unequip the charm
There's a list of variables variables useful for getting and setting values, dunno if others here know of it
https://github.com/ShootMe/LiveSplit.HollowKnight/blob/4687711e6e1ef4b4706704a5edd094124faa5854/PlayerData/V1424.txt
@fair rampart Playerdata is used a lot of mods
Where is Divine's prices stored for upgrading items?
You can probably find out by looking at her fsm
Best case is it’s a pre set value in the fsm variable
how do i get her fsm?
Do you have fsm veiwer
no?
#archived-modding-development message in the pins. 2nd link
Once you get it, click the top left button, then open scene, then find the name of the scene divine is in by searching something like grimm, then click select, then find the fsm(might take a couple tries. If you don’t get it, click the option next to the top left option to re open the scene) once you get it, click around until you find stuff about it
Okay i've found something with "Upgrade Cost" but no numbers
Screenshot?
This is probably asked a lot, but how can I make a custom skin, for self use/customknight?
Simply take the sprite sheets and reskin them?
yup
Alright, thanks
Also can you hop into #archived-modding-help and help me with setting up the mod
Ah never mind
@unborn flicker I'm trying to use your ItemChanger mod to add items to shops but using ChangeItems always overrides the existing items, is there anyway to just add items instead of replacing all existing ones?
One of the arguments for ChangeItems is an enum specifying which items to leave in shops
@unborn flicker Further testing shows that it works but not for Sly's alt shop, with that one it overrides everything :oc
is there a way to make the game harder but without changing like your own damage
im using the bonfire mod right i tried chaos mod and hell mod and they both downgrade your stuff
There is that harder new game+ difficulty :oc
sanic mod
speeds up game
otherwise, there's really no other knobs to turn besides changing enemy/boss attacks
which some boss mods do
but not for the entire game
You could make charms that affect how much damage you take but grant you some bonuses, that would affect all incoming attacks
taking more dmg is effectively the same as lower your own hp
the knobs for difficulty aren't that complex. you have choices like:
-self hp, self dmg
-enemy hp, enemy dmg
but these correlate with each other anyways.
so then all that's left is speed and attack set
you could make the knight's attack range super tiny maybe?
hmm, change enemy speed but keep yours the same?
which is speed
like i said
sanic mod can do that
I think it keeps the knight's speed the same anyway
ah no. it is everything
but still.
@unborn flicker oi :O
"harder" can only be done by a few things
hello?
@unborn flicker oh hei :D
i tried to add items to Sly's alt shop but even with something like this :
ItemChanger.ItemChanger.ChangeItems(Change, null, ItemChanger.Default.Shops.All);
it still removed all the default items :o
it's only happening on his shop, the others work :o
also is there a way to add new items to the bottom of the shop list instead of the top? :oc
Thanks for bringing that to my attention. I will include a fix for that in the next major update for ItemChanger, which should occur around the end of next week.
Thanks :D!
@vocal spire oh yeah, he's a screen cap of it
Click on the variable tab and look for an variable in the int section with that name
@vocal spire says 0, tho it should say something like 12000?
you mean the nodes before?
States
each node represents a state and its transitions
Oh I didn’t know we referred to them as nodes
I mean you can refer to them as whatever
is my point
haven't heard anyone else call them nodes though
been through all of them, no actual number for cost
@unborn flicker Thanks! :D
where did you find this list? :oc
and how do i change that value? is it with setint?
The pins include a program for viewing assets. To change them, you need a language hook.
cool
Is there any way to find the region a given scene is in?
I'm trying to make it so the region map unlocks when you enter a new region but i don't want to sort the scenes into regions manually.
@fair rampart scenemanager probably
or have a list of all the scene names and what region they are in and check what the scene name's matching region is
Anyone know where the FSM for the Radiance light orbs is?
for summoning them?
No, for controlling their behaviour.
Where do I find the orb?
Pretty sure it's pooled
Can probably get a ref off a radiance fsm
And where do I find the pool?
look at what 56 said and my screenshot
3, 70?
no
get the reference from the fsm
preload radiance
get the fsm
get the state
get the action
get the gameobject
done
You mean get the reference from attack commands?
yes
Something like this: attackCommands.GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1).gameObject;?
Do .gameObject again?
if GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1).gameObject returns a fsmownerdefault(or whatever the name is) then fsmownerdefault.gameObject should return the gameobject.
Is something like this correct then Log(radiantOrb);?
Like this: radiantOrb.PrintSceneHierarchyTree("FSM");?
Can you not print FSMGameObjects?
So do I need to convert it to a game object?
wait it's not already a game object?
No.
Seems to have worked. So now I can just use the file generated to see everything I need to?
yes
Thanks.
np
Hello. I kind of want to get into making mod, but even after checking pins I'm still a bit clueless. I've used Unity in the past for baby sized games and know a little C#. Where should I get started?
Okay, thanks!
How does 56 in radiance.host present the logs in the game screen?
https://www.youtube.com/watch?v=Ul0iSlGRg1U video I'm referring to
Look at the apidocs at the logging part
Thank you pal
Maybe I'm blind but where would ModdingApi.GlobalSettings.json be located?
@vocal spire Ye i saw MapZone but couldn't find anything about Scenes being linked to maps in the code.
Guess i'll have to sort them manually :S
Ask grenade about the maps. They were able to add a white palace one
can confirm, am grenade
lol
Might not bother, there's like 500 different screens to sort through :s
on second thought i'll just do the few main entrances and that'll be enough.. i think
But to answer your question: yes, long answer when i'm on pc
who's question? :sc
Yours
of the finding a scene's region? :oc
Is there any way to find the region a given scene is in?
I'm trying to make it so the region map unlocks when you enter a new region but i don't want to sort the scenes into regions manually.
:D
Would it just be finding a child with the name of the scene in each child of the map?
Then getting the name of the parent?
Mod will unlock the map for the region the scene you're in
Tho i can use :
UnityEngine.SceneManagement.SceneManager.sceneLoaded += OnSceneLoaded;
to get the scene, finding what region of the map it's in is where i'm at
The ModHooks for scene change don't work.
Yeah
Where would you find child of the map? there's MapZone but that is an enum :oc
Just make a switch for the mapzone
I think the map stuff are children of the inventory go
i know but how would you get what region the scene is in :o
You could do it with the mapzone
how :O
Just have a switch to set the playerdata book for having the map for that zone to true
Gonna write code on my phone now
i know but you need to know what region the scene is in :O
and you only get the name of the scene from the event :o
Switch(mapzone)
Case (this area)
Playerdata.setboolinternal(map bool name for this area, true);
Break;
i know but you only get the scene name from the event, how would you get the scenedata with only the name? :oc
No
You
Get
MapZone
With scenemanager
GameObject.Find(“_SceneManager”).getcomponent<scenemanager>().mapzone
and that's the current mapzone? :oc
Yes
If you look in this screenshot I sent yesterday, it says GODS_GLORY and this room is in there. I did not change it
If you wanted to do it with child’s of the inventory, then(I think) you would get the map child of the inventory then for each child(these would be the maps), find each child of that child. If the scene name matches a child, take the parent(this should be a map again) and get the name of that parent
e
Guess it doesn’t always have the correct mapzone
1 sec and i have the thing you want @fair rampart
private IEnumerator MapCompleteRegion()
{
yield return new WaitWhile(() => !GameObject.FindObjectOfType<GameMap>());
string scene_name = "scene_name"; // Whichever scene the player just entered
var gameMap = GameObject.FindObjectOfType<GameMap>();
GameObject ret = null;
ret = gameMap.areaAncientBasin.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaCity.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaCliffs.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaCrossroads.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaCrystalPeak.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaDeepnest.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaDirtmouth.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaFogCanyon.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaFungalWastes.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaGreenpath.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaKingdomsEdge.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaQueensGardens.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaRestingGrounds.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaWaterways.FindGameObjectInChildren(scene_name) ?? ret;
if (ret)
{
for (int i = 0; i < ret.transform.childCount; i++)
{
var go = ret.transform.GetChild(i);
if (!PlayerData.instance.GetVariable<List<string>>(nameof(PlayerData.instance.scenesMapped)).Contains(go.name))
{
PlayerData.instance.GetVariable<List<string>>(nameof(PlayerData.instance.scenesMapped)).Add(go.name);
}
}
}
}
any ??=
nah, at least i don't see them, don't know if you do tho

What assembly is FindGameObjectInChildren in? because it can't find it :s
idk if vasi has it included, but modcommon has it definetly
How do you use an IEnumerator function? :s
idk if it's possible, didn't test it, but you should be able to call this function from the sceneloaded/activescenechanged hook (with the scene name as a parameter):
private void MapCompleteRegion(string scene_name)
{
var gameMap = GameObject.FindObjectOfType<GameMap>();
GameObject ret = null;
ret = gameMap.areaAncientBasin.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaCity.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaCliffs.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaCrossroads.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaCrystalPeak.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaDeepnest.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaDirtmouth.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaFogCanyon.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaFungalWastes.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaGreenpath.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaKingdomsEdge.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaQueensGardens.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaRestingGrounds.FindGameObjectInChildren(scene_name) ?? ret;
ret = gameMap.areaWaterways.FindGameObjectInChildren(scene_name) ?? ret;
if (ret)
{
for (int i = 0; i < ret.transform.childCount; i++)
{
var go = ret.transform.GetChild(i);
if (!PlayerData.instance.GetVariable<List<string>>(nameof(PlayerData.instance.scenesMapped)).Contains(go.name))
{
PlayerData.instance.GetVariable<List<string>>(nameof(PlayerData.instance.scenesMapped)).Add(go.name);
}
}
}
}
but if you need to use the IEnumator (maybe the gamemap is null or something), you can do that with
GameManager.instance.StartCoroutine(IEnumerator_Function());
cuz i tried :
GameObject obj = new GameObject();
obj.AddComponent<NonBouncer>().StartCoroutine(MapCompleteRegion(sceneName));
like here : https://github.com/seanpr96/HollowKnight.Modding/blob/069d7359f624a7ddf99b5c1cd0f7761b4149665c/Assembly-CSharp/Patches/OnScreenDebugInfo.cs
but it never gets past the first line
other way
private void MapCompleteRegion(string scene_name)
{
var gameMapGo = GameManager.instance.gameMap;
var mapRegionGo = gameMapGo.FindGameObjectInChildren(scene_name).transform.parent.gameObject;
for (int i = 0; i < mapRegionGo.transform.childCount; i++)
{
var go = mapRegionGo.transform.GetChild(i);
if (!PlayerData.instance.GetVariable<List<string>>(nameof(PlayerData.instance.scenesMapped)).Contains(go.name))
{
PlayerData.instance.GetVariable<List<string>>(nameof(PlayerData.instance.scenesMapped)).Add(go.name);
}
}
}
PlayerData.instance.mapZone seems to also return the current mapzone, tho it's not always correct, like
City of Tears --- OUTSKIRTS --- Ruins2_10b
turns into COLOSSEUM
GameManager.instance.GetCurrentMapZone() does the same as the mapzone in playerdata, strange
Is there anyway to Update the Map like you would when you sit on a bench? Like draw in mapped scenes?
adding to PlayerData.instance.scenesMapped doesn't update the map ui and PlayerData.instance.UpdateGameMap() doesn't do anything :s
Does the Playerdata have the map for the area you are trying to update?
no, but the activescenechanged hook has
Oh I meant does this have the map bought from conifer?
there's the scene name and activescenechanged give 2 scene objects, guessing they are the screen before and the current screen, tho they don't seem to have any map object attached to them
oh yeah they do that
PlayerData.instance.mapDeepnest
Can you set that to true?
yeah tho that'll unlock the map, it won't fill it in with new areas until you sit at a bench, i want to make it fill automatically without needing a bench
Oh
Look at what happens in HeroController when you sit at a bench
It’s probably there
Just call it yourself
there's a method for that, but i'm playing games rn, can't look which
I need to be doing band practice rn so I can’t either
what kind of band? :3c
heavy metal? :Dc
Middle school elective band
ah, electronic heavy metal! :D
Nah
I have no idea what genera we play
All we have is our region music rn. Haven’t played anything as a band this year yet
play beat it by Michael jackson :D
with the method i gave, replace scenesMapped with scenesVisited and afterwards call GameManager.UpdateGameMap()
What's the best way to get access to the vannila dll? I only currently have the modded dll and don't know a good way to get the original.
Before that I should make backups of the modded stuff, correct?
what modded stuff
The dll and the mod folder. Although I guess ModInstaller might make it so I don't have to do that.
you just open the installer again if you want them back
Yeah I thought so, just had to make sure. Thanks!
@jolly oriole ye that doesn't work
damn
GameMap.SetupMap(); Seems to work :>
oh yeah, perfect would be:
private void MapCompleteRegion(string scene_name)
{
var gameMapGo = GameManager.instance.gameMap;
var mapRegionGo = gameMapGo.FindGameObjectInChildren(scene_name).transform.parent.gameObject;
for (int i = 0; i < mapRegionGo.transform.childCount; i++)
{
var go = mapRegionGo.transform.GetChild(i);
if (!PlayerData.instance.GetVariable<List<string>>(nameof(PlayerData.instance.scenesVisited)).Contains(go.name))
{
PlayerData.instance.GetVariable<List<string>>(nameof(PlayerData.instance.scenesVisited)).Add(go.name);
}
}
GameManager.instance.UpdateGameMap();
GameManager.instance.gameMap.GetComponent<GameMap>().SetupMap();
}
UpdateGameMap still doesn't seem to do anything tho :oc
it copies entries from scenesVisited to scenesMapped
is there anyway to find the source of the GetPlayerBoolHook calls?
like what called them?
you could create a stack frame
sounds expensive, need to know when
's menu checks if you have bought a map from him, currently have a timestamp that is checked when the menu opens but it's not ideal
in the fsm maybe
dunno how i'd check in those programmatically :s
oh it might be a ifplayerdatafalse component
what's a scene with conifer?
nevermind he has an fsm for destroying himself instead of ifplayerdatafalse
dunno the scene names :s
found one
Crossroads_33
only a tiny bit more complicated than I expected
here is where it checks if you have bought the map
Isn't gonna help tho, i need to know when it's calling stuff like "PlayerData.instance.mapCrossroads" :oc
I'm pretty sure it uses playerdatabooltest to get that
the name is just not there in fsmveiwer for some reason
right here is what it should be using in playerdata
something like ConiferGo.LocateMyFSM("Conversation Control").InsertMethod("Convo Choice", 1, () => Modding.Logger.Log("Conifer in crossroads map bool called");
Oh no I forgot the semicolon
there
GameObject.Find("Cornifer").LocateMyFSM("Conversation Control").InsertMethod("Convo Choice", 1, () => Modding.Logger.Log("Conifer in crossroads map bool called");
this will log every time it is about to check for you having the map
Thanks for the help! :D
i think i'm almost done, just need a bit more testing :>
some day I'll learn to use that
Edit fsms?
lemme refrase, some day I'll learn to do more than just sprites
I mean, learn a lot more, enough to be able to make mods on my own, or to attempt at making a game
but for a start, I could try and make an enemy to be modded in the game using that
To make a completely new enemy/boss, you just need to make an enemy in unity with a monobehavior
is there a guide on that? also, do I need more than just unity?
in the api docs there is one
@sage holly https://radiance.host/apidocs/Assets.html# look here for how to do that
Is the .mod and .vanilla just the two different versions (modded and vanilla)?
yes
Okay thanks for confirming.
ok thanks
just an idea for anyone interested: Maybe you could make a mod that makes Weaversong stronger or adds more charm combos, like Grimmchild Upgrades but for weaversong?
i'll check
Does the Geo counter not get updated with UpdateGeo()?
are you running that on playerdata?
No.
HeroController.instance.UpdateGeo();
use what I sent
It does nothing.
it does?
Yes, I am.
The problem is, I can add Geo and see that number, but it doesn't update the Geo counter itself.
are you using HeroController.instance.AddGeo()?
Yes.
idk usually herocontroller updates counters
Is there an FSM for Geo UI?
Can the first Radiance platform you spawn on top of be removed through code?
yes, you can destroy the gameobject
So, the one you spawn on top of is a Game Object as well?
yes, platforms are gameobjects
Is it best to always use PrintSceneHierarchyTree to find what you're looking for?
And how would I find the name of the initial platform?
Would PrintSceneHierarchyTree work on a scene?
I used UnityEngine.SceneManagement.SceneManager.GetActiveScene().PrintHierarchy();
Seems to work.
You can also use the ones in the pins
the one below
Yeah
Gg scenes is all the scenes in godhome
The one below is every other scene
If a scene isn’t in either of them, you should probably upload it after making one
I wanted the Absolute Radiance one for now.
If I have custom scenes, then UnityEngine.SceneManagement.SceneManager.GetActiveScene().PrintHierarchy(); would be best, right?
If you have custom scenes, then you already have the stuff that would print, right?
I guess.
Is there any easier way of figuring out the platform game object by the way? There are a lot of objects in the file.
Open the scene in hk edit or utiny ripper
I used to use slashhithook to just hit it with nail and log the name
Good idea
it's not great but it works well
Does HK Edit require Unity?
I think I'm going to try slashithook first then.
How are you making custom scenes without unity?
I'm not yet.
Oh
I just don't want to download Unity right now.
Ok
Do I just log the gameobject I hit in the hook?
Log the name of it I think
Should I use something like this platforms = GameObject.Find("TileMap Render Data"); and then DestroyAll?
GameObject.Destroy(the GameObject);
It works now, thanks.
Something like that.
If it turns out the way I expect it to, I'll let you know.
I do have a slight problem though. While the platform is gone, there seem to be some decoration objects that have no collision checks.
Then you need to add some form of collider to them
I would like to destroy them, but I don't know which ones they are.
Any check for position instead I could use to get their names?
No
check them for a transform component and either log their position or filter based on that
Well, I tried deleting all arena prefabs and it works, but that also destroys the background.
I know the general position of the object.
So find out what the ones you shouldn’t delete are
There are quite a few.
Then only delete ones that are in a certain area
How do I do that?
Check if the x position is greater than a certain amount and less than a certain amount before destroying it
Something like this?
if (gameObject.transform.GetPositionX() < 60 && gameObject.transform.GetPositionX() > 50)
{
GameObject.Destroy(gameObject);
}
That would still destroy every gameObject as far as I'm aware.
yes
you could log their name and find out that way which ones you want to destroy
that would be the easiest way, log every game object in the location where the thing is you want to get rid of
if (platforms.transform.GetPositionX() < 60 && platforms.transform.GetPositionX() > 50)
{
Log(platforms);
}
Like this?
platforms is a gameobject?
probably Log(platforms.name); or Log(platforms.toString()); then
Is it possible to search for just any game object without a name?
So, any object within this position.
Cannot convert method group.
I fixed it, I'll try now.
Is this correct GameObject[] platforms = Object.FindObjectsOfType<GameObject>();?
I found some of the objects, but there are still a few more I need to delete.
I found most of the objects, thanks for the help. Just one more question, how can I set an existing object to appear in the background instead of the foreground?
you can probably change the z position of whatever thing you have
I'll try that.
you can display platform's name in the game
would it be possible to make a mod that replaces hk ost with Dead Cells soundtrack?
and if so, could someone please make it?
i think sid mickely was working on a general mod to replace music
(I would totally help out with design work for modders on the occasion, but my current workload is already heavy)
I gonna to write some toturial for apidocs, but i dont konw how to use Sphinx lol, hope Saleh doesn't mind
@ornate rivet
Like modding, copy parts from other pages how you would like things to look and change the contents
so, how to edit .rst files? using notepad++?
any text editor should be enough
How would you change the hitbox for the Knight?
change on of the BoxCollider2Ds that are on the knight
Oh, it's BoxCollider2D, not Collider2D?
yes
Should I just do this _knight.GetComponent<BoxCollider2D>?
if it works, go for it, although i'm not sure which of the BoxCollider2Ds (yes, there are multiple) is for damage hitbox
It works, but it's not the damage hitbox.
you could always
foreach (var box in _knight.GetComponentsInChildren<BoxCollider2D>())
{
box.offset; // whatever
box.size; // whatever
}
Good idea.
It looks like it works, thanks.
Do you know if all objects use BoxCollider2Ds, or do some use regular Collider2Ds?
some use boxcolliders, some edgecolliders, some circlecolliders, some those polycolliders (don't know the name tho)
Is there a way to see all the hitboxes in the game by the way?
hitboxdraw, dont know how its named on the installer tho
Hitboxdraw is the name of a mod?
possibly, might also be "show hitboxes"
That mod doesn't show all the hitboxes however.
Question!
I am messing around, trying to make mods, probing ground.
How to create custom items? Custom charms iirc replace original ones, but how to deal with items? Singletone? Add onload into inventory? Or edit scene to add object that gives item?
depending on what kind of item you want, it can be rather easy
Just a key for now
then you can use the ItemHelper class contained in the SFCore core mod, can give details later after school
Does changing the scale of an object also change the hitbox?
it does
Oh so that’s why modifying the hotbox while trying to make CustomKnight+ was so buggy. I was only modifying one
Local scale should work
@eternal crown you can also add new charms
I've been trying to transform the scale of the Radiant Orbs I've been instantiating, but it has no effect.
Can you show your code?
radiantBullet.transform.localScale = new Vector3(0.5f, 0.5f);
Is the original scale of the object 1, 1, 1?
Original scale as shown in the logs is: Transform LocalScale: (1.4, 1.4, 1.0)
And this is to the object you are instantiating or the object that has been cloned?
The one that has been cloned.
Have you tried using transform.SetScale() ?
Hmm
weird, localScale shouldve worked
Perhaps there's something else changing their scale?
Log the scale before and after
I was right, something else was changing it.
I got around it by doing a foreach for all of the Radiant Orbs and updating the scale after they had already spawned.
And I wanted to ask, is there any way of showing the hitboxes? The show hitbox mod doesn't show all of them.
.AddComponent<ModCommon.DebugColliders>()
That shows the hitbox?
yes
Thanks.
There's something weird going on with the hitboxes.
Sometimes the Knight gets hit from above or below by a bullet despite the fact that the hitboxes never collided. It doesn't seem to happen to the left or right.
Any ideas what could be causing this?
Maybe something in fsms?
Is there another non-BoxCollider2D hitbox I'm missing for the player?
FSMs might be it as well.
Is there any other collider in the PrintHiearchyTree?
I'll print it out now.
I see a lot of PolygonColliders as well, mostly for the attacks.
Is it possible to transform one type of collider into another?
Alright, so, I've confirmed that the Knight always gets hit from below, and not from any other direction (unless the hitboxes are actually colliding).
I finished it lol
Is it possible to only debug BoxCollider2Ds?
They seem to be the problem, not the other ones.
pls somebody update this on the modinstaller, thanks
- Add static method for adding items
- Add FadeGroup integration for items
yes
That’s cool
and those items are the already implemented "normal" items, like keys
Are you working on adding counted items?
uh, i could start with those
Oh, I didn’t mean to make you do them if you don’t want
nah, it's just that i didn't need them, but i'll implement those, as it should be a general ItemHelper, not just for uncounted, normal items
@eternal crown once SFCore on the installer is updated, you can do
public override void Initialize()
{
/* Other Code Here */
SFCore.ItemHelper.AddNormalItem("Just_Put_Some_Unique_Name_Here", (Sprite) null, "A_Custom_PlayerData_Bool_Goes_Here", "CONVO_NAME_HERE", "CONVO_DESCRIPTION_HERE");
/* Other Code Here */
}
(obv you would need to add a reference to SFCore in your project)
That's it??
Have you already made something for adding more space to the inventory? If you haven’t, could I try?
Yes
no, i haven't made something for more spaces
yes
Yay
I expected... idk... more stuff? But you managed to fit in a almost single method
Will start after school
Bravo
np
Used to be just new ItemHelper(all the parameters in the method)
But I like the method better
yeah, i kept that just in case a mod used that
i can already tell which FSMs need edits to work with more space @vocal spire:
- "FSM"
FSMon each equipment GO ("Dash Cloak", "Rancid Egg", etc.) - "Equipment" GO - "Build Equipment List"
FSM(possibly "only" more shifts) - "Inv" Go - "UI Inventory"
FSM("Equip Item XX" states needed, alongside of additional "Choice YY" states)
Oh I was thinking of adding a new panel since there isn’t much visual space left on that
I already sort of did it
But it still doesn’t work
Maybe I’ll go all out and do both
Just an Easter egg for people who install a bunch of item adding mods
Gonna work on it now!
How do I hide the original sprite of the Knight?
Something with getcomponent tk2dsprite or tk2dspriteanimation or something
Or
Look at how custom knight does spritesheets and use a blank one
Ooo
I didn’t know environmentparticalhelper existed
me neither
I wish this pc wasn’t slow
Also should I make it like charm helper where it gets more smushed for the more things you add or should I just go with a new panel
Why not do both. Smush it for 1 row then go into the extended inventory panel
Smushing it for 2 or more rows seems too compact
I just installed linux again today and I was able to open up fsmview fine
I thought you guys said it didn't work
The difference between Linux and windows looks scary
that's only wine without any additional styling, all the non .net stuff looks different
How would I make all the background objects darker? I need to so it's not the same color as the projectiles.
multiply the SpriteRenderer's color with something like 0.75f
Does every object have a sprite renderer?
I couldn't see it in the components so I thought they didn't have it.
if it's visible in game, it either has a spriterenderer or meshrenderer
Why does the log not show a renderer component then?
It definitely does not have a spriterenderer or meshrenderer.
Would it work if I add that as a component?
The objects I'm talking about are GG_Arena_Prefab by the way.
you could always
foreach (var sr in ggArenaPrefab.GetComponentsInChildren<SpriteRenderer>())
{
// Code
}
the children of GG_Arena_Prefab have spriterenderers (at least in GG_Ghost_Gorb_V)
In GG_Radiance, I don't see them, but I guess I can still try it.
Okay, it worked, thanks.
but if it isn't neccessary to see the background, you could also use the mod BilndRadiance that i had uploaded here a while ago (sadly i nuked my messages in this server, so you can't find it), makes everything behind the blurplane black
Couldn't I also just destroy Arena Prefab?
I tried that and there was nothing left of the background.
But I think I'd rather just darken it.
Also, does changing the color have any effect on an object that is already completely black?
Any idea how I would change the color of one then?
Best way to remove particles from a projectile? Seems like they lag the game too much.
theres a particle controller component
you can probably just call it and like, call the Stop() method
I think it's actually the PlaymakerFSM itself that's lagging the game.
Is it possible to make a clone of an object that does not use any FSMs?
Clone it and remove the fsms afterwards
I think I should make my own object to avoid all these problems. How do I do that?
I think I've made a new one, but how do you set the sprites?
Just set the sprite of the new spriterenderer to the sprite of the original
What about a tk2dsprite?
Meshrenderer as well?
The original had these: --Component: MeshFilter
--Component: MeshRenderer
--Component: tk2dSprite
--Component: tk2dSpriteAnimator
--Component: CircleCollider2D
So just copy all of them?
I think it would be easier for you to instantiate the original then remove the PlaymakerFSM component/s
I can't figure out why the original is lagging.
Making a new one seems like a lot less trouble.
Modlog?
The ModLog doesn't really tell me anything.
So far this is the code I'm using for a new object: radiantBullet = new GameObject("radiantOrb"); CircleCollider2D radiantBulletCollider = radiantBullet.AddComponent<CircleCollider2D>(); radiantBulletCollider.radius = 0.2f; SpriteRenderer radiantBulletSprite = radiantBullet.AddComponent<SpriteRenderer>(); radiantBulletSprite.sprite =
If they are the cause
I'm not sure if they are.
Wait, can’t we just look at how the child of light mod instantiates those?
Same way, but I have way more objects than that mod.
Can't do it like that without lagging.
Then try removing the fsms
I did, and I'm not sure what I'm missing.
Hmm
Is this fine : radiantBullet = new GameObject("radiantOrb"); CircleCollider2D radiantBulletCollider = radiantBullet.AddComponent<CircleCollider2D>(); radiantBulletCollider.radius = 0.2f; tk2dSprite radiantBulletSprite = radiantBullet.AddComponent<tk2dSprite>(); radiantBulletSprite = _attackCommands.GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1).gameObject.Value.GetComponent<tk2dSprite>(); tk2dSpriteAnimator radiantBulletAnimation = radiantBullet.AddComponent<tk2dSpriteAnimator>(); radiantBulletAnimation = _attackCommands.GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1).gameObject.Value.GetComponent<tk2dSpriteAnimator>(); MeshRenderer radiantBulletMeshRender = radiantBullet.AddComponent<MeshRenderer>(); radiantBulletMeshRender = _attackCommands.GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1).gameObject.Value.GetComponent<MeshRenderer>(); MeshFilter radiantBulletMeshFilter = radiantBullet.AddComponent<MeshFilter>(); radiantBulletMeshFilter = _attackCommands.GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1).gameObject.Value.GetComponent<MeshFilter>();
Because I can't see the sprite.
Is there something I'm missing?
Why are you setting the local variables?
Ah, perhaps that's the problem?
Yes
You aren’t doing anything with the added components
You set an new local variable to them, then set the variable to something else immediately afterwards
Yes, I was trying to rush it a bit and overlooked that, I'll try it now thanks.
And how do I set a tk2dsprite now?
I can't just do .sprite.
.collection I think
radiantBullet.GetComponent<tk2dSprite>().Collection = _attackCommands.GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1).gameObject.Value.GetComponent<tk2dSprite>().Collection;
Like this?
Uh, it works, "kind of".
And by that I mean instead of firing the orbs, it fires Radiance herself.
You need to play the proper animation
I suggest doing a foreach in the tk2dspriteanimator.Library.clips then log the clip’s name(I don’t remember it exactly. I know I was able to do it with HeroController a while ago)
I can't just make it equal the original tk2dspriteanimator?
radiantBullet.GetComponent<tk2dSpriteAnimator>().Library.clips = _attackCommands.GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1).gameObject.Value.GetComponent<tk2dSpriteAnimator>().Library.clips;
This is wrong, right?
I get a null reference.
I added a component.
Before you use getcomponent?
radiantBullet.AddComponent<tk2dSpriteAnimator>();
radiantBullet.GetComponent<tk2dSpriteAnimator>().Library.clips = _attackCommands.GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1).gameObject.Value.GetComponent<tk2dSpriteAnimator>().Library.clips;
What do you mean by setting the library?
Don’t do the clips
Hm, if I used sprite renderer instead, could I use a custom image (png etc...)?
You would have to make the animations your self
Also you didn’t do what I said
You need to play the proper animation
@vocal spire
Okay, so after I log this, how do I set the specific clip?
You look through the log until you find something that looks like it would be the name of the orb animation
No, I mean, how do I then set it to that clip.
Okay, I'll try.
Might be tk2dsprite
Oh wait let me check something so I can confirm it
Yes it is tk2dSpriteAnimator that you use Play on
Trying it now.
It works.
But, it might also be the reason why it lagged before. Seems like the animation could be the cause of it.
In any case, thanks for the help.
Actually, no, I set KinematicBody to false and now it doesn't lag anymore. It's fixed.
Creating my own object was the solution after all.
i like function headers
public static void AddOneTwoBothItem(string uniqueName, Sprite sprite1, Sprite sprite2, Sprite spriteBoth, string playerdataBool1, string playerdataBool2, string nameConvo1, string nameConvo2, string nameConvoBoth, string descConvo1, string descConvo2, string descConvoBoth)
{}
How fun
structs would probably clean that up
on my end, it would clean that up, on the end of the developer using that, it would be worse
ohhh i thought that was yours
well, kinda
part of SFCore, to be used by others (including myself)
btw @vocal spire counted items should work, haven't tested them, but they should work
Awesome
For what?
For more inventory space
just tested it (dragged ToT out), and i have a nullreference somewhere
Oof
well, of course i don't get the correct things when i don't copy the correct state
if you mean me, everything was still usable, just that the item didn't show up
For me it was just changing what fsm I was editing in one line of code
ok.. so it was visual for one and a f**kup for another..
Yay
Anyone, the mod you created is utilizing the core and the charms while the added menu/inventory boosts the main game, right?
Anyone, the mod you created is utilizing the core and the charms while the added menu/inventory boosts the main game, right?
the thing i linked is a library mod (or core mod) that other mods can use for custom content (like items, charms & achievements), implemented in a way that allows multiple mods to do that simultaneously
ok so it's more to help the multiplayer then a solo player right??
?
no, it's for developers
If the developer uses it thought, the mod requires whatever mods the developer used to be installed
Gonna go play among us now while I wait for my next class to start
If I am needed ping me
just remember: red sus
But red is in my name
Agreed though
Oh no it won’t let me join games now
Bad network connection :(
Life has no meaning without good network connection
laughs in no internet at home
no, literally no internet at home
I'm taking advantage of my university's free internet
Oh
Has Uuwuu been updated on the installer yet?
was last changed on 04.07.2020
Ok so how should I update it?
ask someone who can do it
or dm
K
So. How would one go about modding a boss?
https://radiance.host/apidocs/PlayMakerFSM.html this is a start
Oh ok thanks
Out of curiosity is your nickname related to red's or is that just a coincidence
i had mine first, then came @flat forum and redfrog joined after that
Anyone why do you ping everyone??
lol
how do I get rid of this animation?
it seems like it should stop by setting the fsmbool in the dreamer cutscene but it doesn't
looks like a bit of the healing particles
yeah, it just has the healing animation forever
should have probably said that or made a gif, I thought it would be easier to recognize on the image
might be possible by stopping a tk2d animation on a Lines Anim gameobject (it is the child name) and set the meshrenderer of the same gameobject to inactive
oh now i get it the animation stays but the character isn't focusing (small crouch animation)
Jo does anybody have the pale King or pure Vissel skin i saw them on yt but cant find a download link anywhere
@fair rampart it’s a removed challenge skin. Can no longer get it
Oh you asked in all modding channels....
😂 didnt know that some skins are that hard to obtain goddam i just want a cool skin
Hello everyone, I want to make my first hollowknight mod. I have 6 months of experiiance with C# programing language, but I have no idea on how to start making mods and where there is nothing on yt so can you guys help me gwt staryed
would it be possible for the Wayward Compass to be made toggleable in the RandoMapMod?
program it yourself
anyone else hate when you make code for a boss but then things you didn't even program in happen and everything is dying a couple months later when you try to make the mod better?
Anyone knows how to get the dialogue keys for each line in the game? because im not planning on manually talking to everyone and logging it one by one just so i can change them
EN_xxx textassets in resources.assets?
extremely late to say this but thanks, will check that
even later, but i think somebody actually put all the different dialogue stuff in one file, but i have to search that again
can't find it
let me quickly create a zip for you with (what i think) important text assets
thnx again
just seeing this, where in the game is a giraffe corpse?
<entry name="GIRAFFE_CORPSE">...Please... Not food...</entry>
What
going through the text assets
Willohs meal?
oh
lol
EN_Dreamers has an interesting structure
<entry name="DREAMERS_EC1_4">Let us sleep little shadow.<br>Return to your darkness.<br>Allow us our peace.</entry>
<entry name="To live forever in an unchanging world... Death, I would fear less."></entry>
don't know how i should interpret that
yeah definitely willoh
that's the corpse at the side of willoh's fungi
the one holding a wanderer's journal or something
yeah, already realised that
Hey I wanted to start nodding hollow knight, by chance can any of you give me pointers on how to do that?
Thanks, man
do you guys have any idea about how to get the pre lifeblood dive invuln again? can't find anything related to that so I'm kinda lost
so basically for chaining dives again
I saw that earlier and thought it was something else because it was called parry invuln
but that works
thank you
wow the docapi seems bigger than last time i've checked
when was the last time?
@ornate rivet https://github.com/SalehAce1/HK-Modding-API-Docs/pull/7
when was the last time?
i don't know
completely unbiased, but https://radiance.host/apidocs/SFCore.html is the best page in the apidocs.
requiring non-free software
oh damn, where?
bro, adding a license is too much work tho

lol
Sans Knight Custom Skin
is this a suggest or a threat?
if you take suggestions, make the masks (top left) have one glowing eyehole
Oh god.
y e s
Update:
cool
Nice
This is probably too much work for a meme, and don't take this as a request unless you wanna, but I think little pink slippers would be adorable
are you going to do spells?
are you going to do spells?
@marble hollow probably, although they'll be simple changes like adding blue eyes to the faces in abyss shriek and maybe I'll turn shade soul into a giant bone
ah aight
beta for the sans knight custom skin: https://drive.google.com/drive/folders/15IJp9oVQyWiAhPzw_sqAtVIevm_KWwQF?usp=sharing
Anyone from the Pale Court team here?
I saw someone comment this on the teaser trailer and given the last charm shown I figured there might be some merit to it.
Is the black wyrm a part of this somehow?
nope
I would tease a bit and play around, but I better confirm it now
no, there's not gona be a blackwyrm boss fight
Understandable, I guess the last charm is basically like, Ghost's own thing?
Is that the black charm?
If so, the ability was shown a while ago if you wish to look back far enough
I would suggest no
Yeah
Yeah, at one point in the trailer it shows a bunch of charms, and since all the Knights are mostly white it doesn't match up
it will be displayed in the release trailer
when you get to try them, you'll go "oooh"
Cool
Alright. Well last question and no, you don't have to give me a serious answer. Memes are acceptable
Do you think this mod will come out before Silksong?
Probably
very likely yeah
Because I've been in a few modding communities and in some cases when the next game comes out development will either slow down or stop completely.
I haven’t seen anything about Silksong in a while. May have missed something tho
I can confirm that in the offshoot chance of silksong comming out tomorrow, I'll focus completely in finishing it first
the game, not the mod
lol
but then again, most of the work left to do is not in my departament
What's your department?
art
programming intensifies
more specifically, all animations
Mebi’s art is awesome
and some other extra sprites and helping with making the scenes/arenas
Wait this mod is adding new areas?
nope
not in the soul sanctum or city of tears sense at least
Thought it said”you can add areas in mods?”
yes, you can
I’m tired
Wait so are the knights replacing bosses?
it does not necesarily means we'll do that
I know but if you're not replacing bosses, but not adding new areas how would you fight them?
think of the hidden dreams update
I think mebi means they are expanding pre existing areas
Ooh...So like, you dream nail their corpses and then fight them?
Also yes I think
well, yes
dunno if this counts as spoiler, but most new bosses have always being in dreams
White defender?
a dream yeah
Yeah isn't he already a dream boss?
ah that
it's already a boss yes
you shall wait 'til release to see if we do anything to him
Dun dun dun
That sounds like 'we're already doing something with him, but I can't say'
yeah sure totally not just building up hype
lol
Idk why I’m so tired and having so much trouble typing
I mean, this is hours before I normally sleep. Maybe it was just being in in person school
you're just tired, can happen
K
sseadv has been updated and now supports all 3 unity versions from hk beta to current release hk
Cool
cool
i have a question about how to get Hornet sprites by sseadv? i open GG_Hornet_2.unity[447],but the list of sprite collections showes nothing
unity only puts the sprites in the first scene that uses it
check [105]
I could make it search for all sprites in the scene but that would make it take a bit longer to load
has anyone made a mod that acts like a dlc?
Depends on how you define dlc
well, since the game was made in unity, what if we made a qoute on qoute "OFFICIAL DLC"
like the grimm troupe, adding more content than changing the content thats already there
oh, then there are a few mods in the works
my question is, can you MAKE dlc for hollow knight in unity
definetly, pretty much everything is possible with modding
ok, good to know
the days to zotenest are coming closer and closer
Hey guys, how can you mod Hollow Knight?
?i
Reminder: The mod installer (https://radiance.host/mods/ModInstaller.exe) and other modding resources can be found from the pinned messages.
hey guys this is probably an odd question for yall, but how would I get into modding for hollow knight?
Im completely new to modding any games and I was thinking that since it was made in Unity and is a 2D game, it would be a great learning experience ...
Does anyone have any videos, guides, etc. on how to get into modding in general and all that? sorry for such a loaded question, but any post I found online pointed me towards the hollow knight discord
okay ty! :)
ooooh my bad
Why does the player's hitbox not stay centered on the Knight if they are in the air?
I've been trying to have it stay in the same position and it just keeps getting offset.
Maybe an fsm thing or something in the HeroController class
I'll look into it, but this might be another case where it's just better to write my own collision code.
Okay, so, I couldn't figure it out. Instead of using Collider2Ds I did this: float distance = Vector3.Distance(transform.position, knight.transform.position); if (distance <= 0.2f) { knight.GetComponent<HeroController>().TakeDamage(null, GlobalEnums.CollisionSide.right, 1, 0); }
By the way, is this code more performant than using Collider2Ds?
It seems to work very well.
What does hazard type do by the way?
public enum HazardType
{
NON_HAZARD,
SPIKES,
ACID,
LAVA,
PIT
}
0 is non hazard then?
yes
What kind of an effect does it have.
just knockback + invul frames
Best one to use for projectiles then?
yes
Does the collision side matter much for projectiles?
idk
I think that normally the Collider2Ds detect the collision side for you?
I guess I can experiment with it if necessary.

no
public enum HazardType
{
NON_HAZARD,
SPIKES,
ACID,
LAVA,
PIT
}
LAVA?
yeah
I think the property was given to acid
yeah it is
spikes are ACID
enemies are SPIKES
not sure what pit refers to, tho
and NON_HAZARD is obvious
lava is probably left over when forest of bones was still in the game was it not
I could make it search for all sprites in the scene but that would make it take a bit longer to load
@dark wigeon should make it. and also make a search InputField on top of scenes list (just like FSMViewer)
lava was probably intended to do double damage to you or something, or at least allow it to seperate once you get isma's
how are you, ttacco
pretty h
why so
means ok
from my testing, spikes are spikes, acid is acid, lava and pit are both unused (when i tested pit, i also fell right through the collider)
Talking about the Chrystal aspid. Think we can get something like this running?
this crystal aspid? #hk-discussion message
Why not
How do I add particles from one game object to another? Do I need ParticleSystem, ParticleSystemRenderer or both?
You need both but adding the former gives the latter anyways
But how do I add them from another object?
GetComponent<ParticleSystem>(). and then what?
wait....are guys going to actually make this now?
Make what?
projectile =/= particle
No, I mean how do I copy one particle system to another.
ohhh lol my bad
try instantiating the other particle system?
Can you also make your own particles without any sprites?
without any sprites
i mean, something has to be the particle
Well, I don't know how it is in Unity, but I've used Godot in the past, and there the particles have a default square sprite if you don't provide one.
just get the texture of any gameobject you want the sprite as particles
Um, sorry for interrupting, but, how to mod the Hollow Knight? I just wanted to create a little Charms mod, for my friends.
Well, it's based on HollowTale charms. Here. https://www.deviantart.com/thejessofmess/art/Hollowtale-QA-Part-3-845450225
Thanks!
oh, additional ones, then it's rather simple: https://radiance.host/apidocs/SFCore.html#add-custom-charms
If I do radiantBullet.AddComponent<ParticleSystem>();, do the particles have some default properties or do I need to set everything myself?
default ones, but idk what they are, possible the same ones when adding a particlesystem to a gameobject in the unity editor
Yeah, seems so.
And they do have a default sprite, a purple box.
Obviously I want to change that however.
So where do you set the texture?
On their material
ParticleSystemRenderer material?
Okay, I've figured out how to copy the exact same values from an already existing Particle System to my new one. Just one question, do I need to edit all the values one by one or is there another way?
hey, on making new rooms
how would one go about with adding particles?
I managed to take and edit an already existing set from an in-game room into what I wanted
but no clue on an entirely new room
which particles?
bg/fg ones? the ones produced when walking? ...
well, i'm back in like an hour or so
I'm tinkering with CustomKnight rn
And I just wanted to know
Does the mod/game recognise only png files?
as in, can I have multiple files with the same name but different file types, and the game will ignore anything not png type?
Anyone have any ideas how I can find only the non default values for the original particles system? I've tried PrintSceneHierarchyTree but it only shows me --Component: ParticleSystem
--Component: ParticleSystemRenderer

