#archived-modding-development
1 messages · Page 489 of 1
Can someone answer my question please, or at least direct me to a place/person that can answer
Try it n find out
simple search, looks like paths are hardcoded to pngs https://github.com/seanpr96/HollowKnight.CustomKnight/blob/master/CustomKnight/CustomKnight.cs#L10
also loading something like jpgs is kinda a bad idea
Ah, great! Thanks
also loading something like jpgs is kinda a bad idea
My point was to keep WIPs as jpgs
And the game won't recognise them
For reflection, do you use ReflectionHelper?
you can
for the purpose of just debug logging shit you'd just want to iterate over the fieldinfos on the types
it looks really neat and clean, gotta try it out now
is there a good way to compile everyones custom skins?
like the mod installer but just for skins
yeah, they're on the google drives
For reflection, do you use ReflectionHelper?
@fair rampart https://radiance.host/apidocs/Reflection.html
If I have a file name not in the original skin's folder, the game won't recognise it, right?
(CustomKnight)
Well, seems like the answer is no, it won't
Although, truth be told, wouldn't matter if it did
do we have much resources on how to create mods?
thanks
yo
how exactly was the badly translated mod created
did they use some sort of script for it to auto translate stuff
all of the lines were sent through google translate like 8 times
pls add a better guide for new players
what
what
what
what
what
fix some bugs, can someone help me update it to the Installer?
@tawny onyx No I can’t, sorry
this is peak comedy right here
@tawny onyx if you dm me your email I can just add you to the drive
thanks, i have sent it
Hey guys, Kinda new here but I wanted to install the mods on the macOS is that even possible?
(Haven’t checked) are there any on hooks for entering a state and leaving it?
Gonna go check for myself then
Update: Pc is dead
Update: just realized I forgot to say fsm state. Not editing the message because sending this is more amusing to me
Why would you need a hook for it?
Idk
Just thought it would be interesting and a funny way to fill up the modlog
Also thought it might help with adding enemy sync to multiplayer since a state name could be sent and on entering a state would send that and on exiting a state it would go to the synced one instead I’m not making any sense but you probably get the point
oh, but a workaround would be to just add a custom action to every state, which does the sync
Alright so
If I want my customknight to include a reskin of something other than the knight
is it possible, or will I need to use/make a different mod?
@ me when you answer
Make a new mod
Ah ok thanks
So the CustomKnight covers only the images found in the Default folder?
Yes
Look at how other mods replace textures
I’m currently dealing with someone on my server who is reporting a bug with my attempt at adding enemy sync to multiplayer where the mod fails to load, but they have 2 of each multiplayer mod in the mods folder.
can someone sent the hollow_point(2) thing plz
@fair rampart what
im trying to get the ak-47 mod
Y did you say it like that
Where
in a video i watched
It’s just hollow point
i have the modinstaller but theres somthing else
yeah
yes i see the hollow point mod but how do i get it in the game
Did you try clicking install
you also have to enable it
It’s enabled by default after installing
Ok
so if i load in the game will i have it?
ok
Unless you got it on windows store or game pass
i got it on steam
ok
ok
Now
Look in the top left
If it says modding api, modcommon, hollow point, and other mods you installed(if you did) then you’re good
To switch to the gun, tap focus
To use spells, use quick cast instead
Attack to use the gun
its working thank you
(Haven’t checked) are there any on hooks for entering a state and leaving it?
@vocal spire of course you can use On.PlayerMaker to hook fsmstate methods
K think we figured it out
for my opinion,you can remove all clients ' ememies fsm transition, and just set state base with server's activestate
HollowPoint, check #archived-modding-help pins on how to install it
Yeah, the only information that I know of that tells me how to get the AK-47 mod is just that its pinned in this area but im blind af and cant find it
h
Is there any way to get TextMesh Pro for unity 2017? can't find it in Asset Store
just do it in code
don't know how to package TMP_SpriteAsset or TMP_FontAsset in code
i mean, you could just instantiate an already existing tmpro object
lmao
What knowledge prerequisites are there for using the HK Modding API?
Those found here
https://radiance.host/apidocs/index.html
c#
also unity
I mean, how much though
Cuz I've dabbled in c#, but I do know other languages, and syntax can just be looked up
but both can be borrowed from other mods
I think angle had tmp, I can check if I have it
how can I get access to the knight's fsm?
https://github.com/nesrak1/HollowKnightFSMView/releases on resources.assets
actually I'm trying to modify it, I tried to follow https://radiance.host/apidocs/PlayMakerFSM.html#modifying-fsm but it doesn't seem to work with the knight
the knight's fsms are in the data/knight_pickup [4] scene
I'll try that
They're in both but I couldn't remember which was the right one
nes I have a question about sseadv
Actually both seem to the same, at least the file sizes are
@young walrus
var audio = null;
using (Stream s = _asm.GetManifestResourceStream("ModName.Resources.AssetBundleName"))
{
if (s != null)
{
AssetBundle ab = AssetBundle.LoadFromStream(s);
audio = ab.LoadAsset<AudioClip>("AudioNameHowItsDisplayedInUnity");
UnityEngine.Object.DontDestroyOnLoad(audio);
}
}
if you need more help, my DMs are open
and if you don't mind quality, in unity you can also select Vorbis compression with a quality of 1 and get from 8.1 MB to 125.5 KB in size
I'm trying to modify the fsm "Knight-Nail Arts"
I attempt to do it via fsm = HeroController.instance.gameObject.LocateMyFSM("Knight-Nail Arts") and fsm.InsertAction("Has G Slash?", new myFsmStateAction(), 2)
it throw a error of "System.NullReferenceException: Object reference not set to an instance of an object"
so how can I change the nail arts?
@torpid epoch 56 is saying remove Knight-
Past the - is the name of the fsm
Knight is added to tell you it’s a fsm on the knight, - is added to separate knight and nail arts
understood, thanks
Np
Is playerdata.hasUpwardSlash the great slash? There is cyclone and dash slashes but no great slash
There is also hasNailArt which I just saw which is probably it
weirdly enough, the english text stuff lists Upper as dash slash and Dash as the great slash, but thats probably it
huh
Tc I question you a lot
this is from the Language.json SFG gave me, best case scenario the inventory part is just an oversight and hasUpwardSlash should be great slash
K
very small update. nothing changed except the in game version
github pages
https://github.com/RedFrog6002/NailLengthPlus
https://github.com/RedFrog6002/NailLengthPlus/releases/tag/1.0.0.0
k it's past midnight now and i'm gonna finally do my homework
Did my homework 
I hope you didn't have to stay up all night...
Nah stayed up til 6 hours ago
Then slept
I’m not going to feel good today am I
At least it’s a cool charm
this is very cool, big mcthankies
I want to start modding this game, but I don't know where to start. How do I begin modding?
hey guys dumb question but how would I look at the source code of the game/pre-existing mods? do I need a decompiler to see whats in the dll;s?
most of the mods are open source
for the game, youll need a decompiler like ILSpy then decompile the Assembly-CSharp in the game folder
yeah I was just looking at the mods I already had installed through the mod window
I figured as much, installed a decompiler and Im gonna look through everything now lol
thank you
sure this is for modding development?
uuuhh, well i guess not, it was a mod i was working on so
@small heart
https://radiance.host/apidocs
Thanks
How to summon Grim Spikes or Radiances balls?
preload them
Im trying to modify the values of the Hollow Point mod,
is there a way to do that without going to the source code?
no
if you have balance issues or something i can modify it depending if its not too much effort
why do i have a feeling this is related to the Carbine modification
i mean, you could also change the mod so that the desired values can be changed from the globalsettings ttacco
good point
I wanna see if i have more than 100 geo and if i do i wanna do something. Here is my current code: if (HeroController.instance.geoCounter > 100)
{
PlayerData.instance.geo -= 100;
...
}
Try HeroController.instance.RemoveGeo(100)
Or RemoveGeo might be on Playerdata
Try HeroController first
Let me try
Thanks!
How to call a function when you do desolate dive because as far as I'm aware there is no hook
And in the Hero controller there also nothin
Current code: On.HeroController.
https://radiance.host/apidocs/PlayMakerFSM.html it's in the "Spell Control" FSM on the knight
you could also look at how hollow point does the special things with the spells
Do i have to use FSM??
if you want to change desolate dive / descending dark, yes
I dont wanna change it i wanna spawn Grim spikes when you do it like the light child mod
in that case you also need to change the FSM to include whatever you need to spawn the spikes
Ok
modcommon has a hook i added if you don't want to bother
ModCommon.OnSpellHook
takes an enum describing spell type
if you return false it won't cast the original spell, if you return true it will
Its saying there is no ModCommon.OnSpellHook
do ModCommon.ModCommon.OnSpellHook
Object.Instantiate
Object.Instantiate<T>(new FireGrimmBall<T>()); Error: Cant resolve symbol 'T'
T is the type, in this case it should be a GameObject
Layer Collision Matrix,I think this shoud be pinned
how do you open the game files straight in unity? I understand how to decompile the code, but for example is it possible to see a specific room in unity?
of course
there's a world editor thing
i should get that at some point
so much effort
i just use it for search some object's path for preload
how would I get around to using the world editor you mentioned? is it described in the API docs
maybe you can check github readme
yeah HK is the first game Im modding so Im new to everything, thanks so much for the help :))
same
Object.Instantiate<GameObject>(new FireGrimmBall<GameObject>()); I get an error idk why
try
GameObject.Instantiate(new FireGrimmBall());
Nope
Maybe "Object.Instantiate<GameObject>(new GameObject FireGrimmBall());"??
or maybe just "(FireGrimmBall())" in the argument idk
Why can’t you do
New FireGrimmBall()?
Also won’t that not return a GameObject, so it won’t work?
Im trying to modify the values of the Hollow Point mod,
is there a way to do that without going to the source code?
@fair rampart you can use detour to hook any method includes other mods
So I was looking through the code for Randomizer, and I saw that it caches prefabs for geo like so:
_mediumGeo = Object.Instantiate(ReflectionHelper.GetAttr<HealthManager, GameObject>(health, "mediumGeoPrefab"));
I was wondering if there was something similar you could do for the soul particles that a soul totem releases when hit (I have no idea where to find what these would be called).
@chrome abyss those might be stored in a fsm Idk, you gotta put in the effort to find them
You can start by getting the scene dump in the pins and using control + f to find totem or something
Then seeing if it has a specific soul totem component or fsm
Huh, I searched the scene dump files for "mediumGeoPrefab", and didn't find anything there that matched. Would looking through the FSMs with the pinned FSMViewer help? And if so, is there a good way to get that to work on Ubuntu?
I'm trying to figure out how to spawn the soul particles that appear when you hit a soul totem, and was looking at the code in Randomizer that spawns geo to try to figure this out
Well
I don’t think that searching for geo is gonna get you the soul totem particles...
I meant searching “totem” or “soul”
Yeah, but I was trying to see if I could do something similar for soul totem particles. Basically trying to do by example
Like I see in the scene dump that there's a "Soul Totem 5\Soul Particles" object that is probably what I want?
Yes
But I don't know how to use this information to actually spawn them
Okay, I think I figured it out, but I'm still curious where the "mediumGeoPrefab" is being loaded from.
It’s just the reference to the object
It’s a private variable on health manager
You are using a different object completely
I probably messed up my explanation somewhere but you get the point
Is there a place I can see the details of HealthManager?
ty!
Object.Instantiate<GameObject>(new FireGrimmBall<GameObject>()); I get an error idk why
can someone help
@small heart I’m here
Is the error in the ide or in game?
new error actually
what does this error mean : Module 'PlayMaker, Version=1.6.0.0, Culture=neutral, PublicKeyToken=null' should be referenced
Add playmaker to the reference list
what am i supposed to add a reference to : Module 'PlayMaker, Version=1.6.0.0, Culture=neutral, PublicKeyToken=null' should be referenced
dlll pls
It’s in the same folder as assemblyCsharp
PlayMaker.dll
Yep
I cant refer to ridgidbodies or coliders but i have imported unity?
Unity physics 2d or whatever the dll is called
Can I not contain a list of other structs inside a struct in globalsettings?
ive never worked with structs only classes and interfaces
Ok
newest api version should allow you to do that
lol
I can’t English or Spanish now :(
Even mor Lol
lol
is this correct?: preloadedObjects["GG_Grimm"]["Boss Control/Nightmare King Grimm"]
why
reinstall it
I manually installed the update
??
still isn't working
meant globalsettings with lists of structs are still not working
oh
I know how to install modinstaller
bruh
or go on stack overflow
how to preload Grim spikes i dont know the names of the strings
are they in grimm's fsm?
i think yes
then get them from there
whats the name
wdym
@vocal spire <#archived-modding-development message> this is something that you want to do, right?
and this doesn't work?
public class GlobalSettings : ModSettings
{
public List<Test1> items = new List<Test1>();
}
[Serializable]
public class Test1
{
public List<Test2> items = new List<Test2>();
}
[Serializable]
public class Test2
{
}
no
hold on
getting my code and globalsettings
how do you do that thing in discord with the code again?
lol
```csharp
code here
```
k
public class GlobalSettings : ModSettings
{
public void Reset()
{
this.BoolValues.Clear();
this.StringValues.Clear();
this.IntValues.Clear();
this.FloatValues.Clear();
SpriteData = new TextureData();
}
public TextureData SpriteData = new TextureData();
}
[Serializable]
public struct SpriteDefinition
{
public string SpriteName;
public Rect Position;
}
[Serializable]
public struct FrameData
{
public int Id;
public bool HasEvent;
public string EventInfo;
public int EventInt;
public float EventFloat;
}
[Serializable]
public struct ClipData
{
public string clipname;
public float fps;
public List<FrameData> frames;
}
[Serializable]
public struct TextureData
{
public tk2dBaseSprite.Anchor Anchor;
public Vector2 HeroSize;
public Vector2 offset;
public List<SpriteDefinition> Definitions;
public List<ClipData> Clips;
}
gives me
{
"SpriteData": {
"Anchor": 4,
"HeroSize": {},
"offset": {},
"Definitions": [],
"Clips": []
},
"BoolValues": {},
"FloatValues": {},
"IntValues": {},
"StringValues": {}
}
what happens if you add default values for the definitions and clips? (just to test)
as it appears that they're saved without any content
GlobalSettings.SpriteData.Clips = clips;
GlobalSettings.SpriteData.Definitions = definitions;
GlobalSettings.SpriteData.HeroSize = new Vector2(0.5f, 1.3f);
GlobalSettings.SpriteData.offset = new Vector2(0f, -0.8f);
GlobalSettings.SpriteData.Anchor = tk2dBaseSprite.Anchor.MiddleCenter;
base.SaveGlobalSettings();
I have made sure to set every value
even the ones inside the clips
and definitions
and frames
hold on got a really good idea for a new mod that uses my current code but in a different way but without structs
I did get a little farther using arrays
but everything in the array would be null
just a question, what usings do you have for the serializable? want to test it myself
system, thanks
k
I've found the attack i wanna do ("GG_Grimm_Nightmare", "Boss Control/Spike Control") but know how do i use it
idk
there's probably a fsm on spike control
instantiate spike control and set the fsm whenever you want to use it
ok there is not a fsm
actually there is a fsm with the name of spike control
("GG_Grimm_Nightmare","Boss Control/Spike Control/Far L/Grimm Spikes") maybe this will work?
im building and having a look
looks like nightmarespikes are what you want
yup
k
i think its Grimm_Nightmare Spike
I meant the ones I showed in fsm viewer
the fsms they have are the perfect description of the grimm spikes
ill see
i converted your structs to classes and assigned default values (for testing), output:
{
"SpriteData": {
"Anchor": 4,
"HeroSize": {},
"offset": {},
"Definitions": [
{
"SpriteName": "Test",
"Position": {}
}
],
"Clips": [
{
"clipname": "9",
"fps": 10.3,
"frames": [
{
"Id": 5,
"HasEvent": false,
"EventInfo": "6",
"EventInt": 7,
"EventFloat": 8.1
}
]
}
]
},
"BoolValues": {},
"FloatValues": {},
"IntValues": {},
"StringValues": {}
}
what
[Serializable]
public class SpriteDefinition
{
public string SpriteName = "Unnamed/Null Sprite";
public Rect Position = new Rect(0, 0, 1, 1);
}
[Serializable]
public class FrameData
{
public int Id = 0;
public bool HasEvent = false;
public string EventInfo = "";
public int EventInt = 0;
public float EventFloat = 0f;
}
[Serializable]
public class ClipData
{
public string clipname = "Unnamed/Null Clip";
public float fps = 1;
public List<FrameData> frames = new List<FrameData> { new FrameData() { } };
}
[Serializable]
public class TextureData
{
public tk2dBaseSprite.Anchor Anchor = tk2dBaseSprite.Anchor.MiddleCenter;
public Vector2 HeroSize = new Vector2(0.5f, 1.3f);
public Vector2 offset = new Vector2(0f, -0.8f);
public List<SpriteDefinition> Definitions = new List<SpriteDefinition> { new SpriteDefinition { } };
public List<ClipData> Clips = new List<ClipData> { new ClipData { } };
}
tried this but it didn't work
I still can't find that mark for c# on my keyboard....
this one `
under esc
OOO JACKPOT
worked?
yup
cool
my mod is almost done
@jolly oriole what have I done differently in my code than what you did?
show me your code
look a bit up
public class GlobalSettings : ModSettings { public void Reset() { this.BoolValues.Clear(); this.StringValues.Clear(); this.IntValues.Clear(); this.FloatValues.Clear(); SpriteData = new TextureData(); } public TextureData SpriteData = new TextureData(); } [Serializable] public struct SpriteDefinition { public string SpriteName; public Rect Position; } [Serializable] public struct FrameData { public int Id; public bool HasEvent; public string EventInfo; public int EventInt; public float EventFloat; } [Serializable] public struct ClipData { public string clipname; public float fps; public List<FrameData> frames; } [Serializable] public struct TextureData { public tk2dBaseSprite.Anchor Anchor; public Vector2 HeroSize; public Vector2 offset; public List<SpriteDefinition> Definitions; public List<ClipData> Clips; }gives me
{
"SpriteData": {
"Anchor": 4,
"HeroSize": {},
"offset": {},
"Definitions": [],
"Clips": []
},
"BoolValues": {},
"FloatValues": {},
"IntValues": {},
"StringValues": {}
}
@vocal spire what are u trying to do with this code
maybe i can find a second solution
grenade said they got https://discordapp.com/channels/283467363729408000/327461802311155714/764474025313304576 in globalsettings from what their description says they used something like https://discordapp.com/channels/283467363729408000/327461802311155714/764474106804043796
but my code still gives me the same thing
I guess
maybe u need to update visual studio / rider
I don't think so
maybe it hasent seen your updated api
but that shouldn't mean anything because I don't reference anything from any updated parts of the api
okie dokie
I'm gonna stop now and go work on a smaller mod that uses the same code I have but no globalsettings and it is much more simple
I think I'm gonna call it rando knight
depends on specs
nah just now started lagging after closing vs
fan is also working really hard so idk
github and here
i need to push to git hub
@vocal spire helping parents in garden rn, can dm you my code later
i just had breakfast
i live in asia
k
What does it do?
you just gotta see it to see what it does
:)
it does everything
yes it does
i have a suggestion make it so it actualy does the thing instead of just playin the animation
lol
randomizes every frame of every clip/animation's sprite
how to get this ("GG_Radiance","Boss Control/Spike Control/Far L/Radiant Spike")
to work with nkg
My solution doesnt work '''("GG_Grimm_Nightmare","Nightmare Spike/Far L/Grimm_Nightmare Spike")'''
did you try the spikes I suggested?
also rediance clearly workes differently than nkg
are you actually looking at the nkg hiearchy?
i ve made thess functions via the help of child of light ``` private void SpawnSpike(int n = 10, float spacing = 0.8f)
{
AddSpikeToPool(n, spacing);
foreach (var s in _spikes)
{
s.LocateMyFSM("Control").SendEvent("HEROSPIKEUP");
}
}
private bool AddSpikeToPool(int n = 10, float spacing = 0.8f)
{
/foreach (var s in _spikes)
UnityEngine.Object.Destroy(s);/
_spikes.Clear();
float x = -1 * ((n * spacing) / 2);
for (int i = 0; i < n; i++)
{
GameObject s = UnityEngine.Object.Instantiate(SpikePre);
s.transform.SetParent(SpikeCenter.transform);
s.transform.localPosition = new Vector3(x, -0.4f, 0);
x += spacing;
_spikes.Add(s);
s.SetActive(true);
}
return true;
}```
Yes
ok
i just dont know what to put as input
if you were actually looking at the scene hiearchy, you would know there is no Far L child of Nightmare Spike
i know
then why are you preloading something you know doesn't exist?
i just dont know what to enter so i took it from radience
k
just use Nightmare Spike and see where that takes you
you might also have to set the fsm correctly when you set it to active
Grimm Spike Holder\Nightmare Spike
which one
Grimm Spike Holder\Nightmare Spike
any?
("GG_Grimm_Nightmare","Grimm Spike Holder")
("GG_Grimm_Nightmare","Grimm Spike Holder/Nightmare Spike")
yes
Loading...
wait
Just a bunch o mod logs errors
??
s.LocateMyFSM("Control").SendEvent("HEROSPIKEUP"); change this to
s.LocateMyFSM("Control").SendEvent("SPIKES READY");
and you need some more fsm edits
Specifically to the GG Y Shift state
{
AddSpikeToPool(n, spacing);
foreach (var s in _spikes)
{
s.LocateMyFSM("Control").SendEvent("SPIKES READY");
}
} ```
yes
Lets see
I think you might just be able to skip that state
or do s.LocateMyFSM("Control").SetState("Ready") instead of send event to basically do the same thing but skip the Y shift
The error is saying [ERROR]:[API] - Error: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. [ERROR]:[API] - at System.Collections.Generic.Dictionary`2[System.String,UnityEngine.GameObject].get_Item (System.String key) [0x00000] in <filename unknown>:0 [ERROR]:[API] - at ChildOfNightmares.ChildOfNightmares.Initialize (System.Collections.Generic.Dictionary`2 preloadedObjects) [0x00000] in <filename unknown>:0 [ERROR]:[API] - at Modding.ModLoader.LoadMod (IMod mod, Boolean updateModText, Boolean changeSettings, System.Collections.Generic.Dictionary`2 preloadedObjects) [0x00000] in <filename unknown>:0 [ERROR]:[API] - at Modding.ModLoader+<LoadMods>d__9.MoveNext () [0x00000] in <filename unknown>:0
oh
then show me your initialize code
you are probably referencing something you didn't preload
I think the initialize code is in the Method called Initialize. Might be wrong but I think that's what we call it
{
#region GetPrefab
var nkg = preloadedObjects["GG_Grimm_Nightmare"]["Boss Control/Nightmare King Grimm"];
var fsm = nkg.LocateMyFSM("Attack Commands");
var spawnAction = fsm.GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1);
orbPre = UnityEngine.Object.Instantiate(spawnAction.gameObject.Value, null);
UnityEngine.Object.DontDestroyOnLoad(orbPre);
orbPre.SetActive(false);
ShotCharge = nkg.transform.Find("Shot Charge").gameObject;
ShotCharge2 = nkg.transform.Find("Shot Charge 2").gameObject;
var finalcontrol = orbPre.LocateMyFSM("Final Control");
UnityEngine.Object.DestroyImmediate(finalcontrol);
var herohurter = orbPre.transform.Find("Hero Hurter").GetComponent<DamageHero>();
UnityEngine.Object.DestroyImmediate(herohurter);
BeamSweeper = preloadedObjects["GG_Grimm_Nightmare"]["Boss Control/Beam Sweeper"];
BeamSweeper.transform.SetParent(null);
HKBlast = preloadedObjects["GG_Hollow_Knight"]["Battle Scene/Focus Blasts/HK Prime Blast"];
SpikePre = preloadedObjects["GG_Grimm_Nightmare"]["Boss Control/Spike Control/Far L/Radiant Spike"];
#endregion
#region Setup
GameManager.instance.StartCoroutine(WaitHero(() => {
SetupOrb();
SetupBeam();
SetupBlast();
SetupSpike();
}));
#endregion
#region Hooks
ModHooks.Instance.AfterSavegameLoadHook += ApplyTrigger;
GameManager.instance.StartCoroutine(WaitSetup(()=> ModHooks.Instance.CharmUpdateHook += Instance_CharmUpdateHook));
#endregion
}```
ok
i g=et it
- you are loading nkg
i use rasidece
- you are treating nkg as rad
show me your preload code
look
that is not the error you got in modlog tho
found the error
show me your preloading code
SpikePre = preloadedObjects["GG_Grimm_Nightmare"]["Boss Control/Spike Control/Far L/Radiant Spike"];
im using nkg as rad
var nkg = preloadedObjects["GG_Grimm_Nightmare"]["Boss Control/Nightmare King Grimm"];
here is your first line of code
var fsm = nkg.LocateMyFSM("Attack Commands"); this will fail
but it did not fail in modlog
so you are trying to access grimm when you didn't preload them
show me your preloading code
all i know ist that fsm sucks
show me it and I will guide you to victory
var nkg = preloadedObjects["GG_Grimm_Nightmare"]["Boss Control/Nightmare King Grimm"];
{
return new List<(string, string)>
{
("GG_Grimm_Nightmare","Grimm Control"),
("GG_Radiance","Boss Control/Beam Sweeper"),
("GG_Grimm_Nightmare","Grimm Spike Holder/Nightmare Spike"),
("GG_Hollow_Knight","Battle Scene/Focus Blasts/HK Prime Blast"),
};
}```
so??
none of the get preload names contain the preload referenced in var nkg = preloadedObjects["GG_Grimm_Nightmare"]["Boss Control/Nightmare King Grimm"];
so remove all code referencing that and your good
ok
lets see
https://github.com/RedFrog6002/RandomKnight/tree/master
https://github.com/RedFrog6002/RandomKnight/releases/tag/1.0.0.0
it is beautiful
i know
and nope
look at the mod log
[ERROR]:[API] - at System.Collections.Generic.Dictionary`2[System.String,UnityEngine.GameObject].get_Item (System.String key) [0x00000] in <filename unknown>:0
[ERROR]:[API] - at ChildOfNightmares.ChildOfNightmares.Initialize (System.Collections.Generic.Dictionary`2 preloadedObjects) [0x00000] in <filename unknown>:0
[ERROR]:[API] - at Modding.ModLoader.LoadMod (IMod mod, Boolean updateModText, Boolean changeSettings, System.Collections.Generic.Dictionary`2 preloadedObjects) [0x00000] in <filename unknown>:0
[ERROR]:[API] - at Modding.ModLoader+<LoadMods>d__9.MoveNext () [0x00000] in <filename unknown>:0 ```
bruh
are you still doing var nkg = preloadedObjects["GG_Grimm_Nightmare"]["Boss Control/Nightmare King Grimm"];
yup
b r u h
lol
let me explain it
you are trying to access something you haven't told it you want to access
im heading to fsm
?
"Boss Control/Nightmare King Grimm" isnt a thing
add this to GetPreloadNames and you are good
("GG_Grimm_Nightmare","Boss Control/Nightmare King Grimm"),
ok
then why are you referencing it
ok done
i added it but still get same error ERROR]:[API] - Error: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. [ERROR]:[API] - at System.Collections.Generic.Dictionary`2[System.String,UnityEngine.GameObject].get_Item (System.String key) [0x00000] in <filename unknown>:0 [ERROR]:[API] - at ChildOfNightmares.ChildOfNightmares.Initialize (System.Collections.Generic.Dictionary`2 preloadedObjects) [0x00000] in <filename unknown>:0 [ERROR]:[API] - at Modding.ModLoader.LoadMod (IMod mod, Boolean updateModText, Boolean changeSettings, System.Collections.Generic.Dictionary`2 preloadedObjects) [0x00000] in <filename unknown>:0 [ERROR]:[API] - at Modding.ModLoader+<LoadMods>d__9.MoveNext () [0x00000] in <filename unknown>:0
{
return new List<(string, string)>
{
("GG_Grimm_Nightmare","Boss Control/Nightmare King Grimm"),
("GG_Radiance","Boss Control/Beam Sweeper"),
("GG_Grimm_Nightmare","Grimm Spike Holder/Nightmare Spike"),
("GG_Hollow_Knight","Battle Scene/Focus Blasts/HK Prime Blast"),
};
}```
show me your initialize code again
bruh
did you not add it?
you just said you did
{
#region GetPrefab
var nkg = preloadedObjects["GG_Grimm_Nightmare"]["Boss Control/Nightmare King Grimm"];
var fsm = nkg.LocateMyFSM("Attack Commands");
var spawnAction = fsm.GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1);
orbPre = UnityEngine.Object.Instantiate(spawnAction.gameObject.Value, null);
UnityEngine.Object.DontDestroyOnLoad(orbPre);
orbPre.SetActive(false);
ShotCharge = nkg.transform.Find("Shot Charge").gameObject;
ShotCharge2 = nkg.transform.Find("Shot Charge 2").gameObject;
var finalcontrol = orbPre.LocateMyFSM("Final Control");
UnityEngine.Object.DestroyImmediate(finalcontrol);
var herohurter = orbPre.transform.Find("Hero Hurter").GetComponent<DamageHero>();
UnityEngine.Object.DestroyImmediate(herohurter);
BeamSweeper = preloadedObjects["GG_Grimm_Nightmare"]["Boss Control/Beam Sweeper"];
BeamSweeper.transform.SetParent(null);
HKBlast = preloadedObjects["GG_Hollow_Knight"]["Battle Scene/Focus Blasts/HK Prime Blast"];
SpikePre = preloadedObjects["GG_Grimm_Nightmare"]["Grimm Spike Holder/Nightmare Spike"];
#endregion
#region Setup
GameManager.instance.StartCoroutine(WaitHero(() => {
SetupOrb();
SetupBeam();
SetupBlast();
SetupSpike();
}));
#endregion
#region Hooks
ModHooks.Instance.AfterSavegameLoadHook += ApplyTrigger;
GameManager.instance.StartCoroutine(WaitSetup(()=> ModHooks.Instance.CharmUpdateHook += Instance_CharmUpdateHook));
#endregion
}```
ok
so
I'm gonna repeat what I have said a bunch of times already
- you are referencing grimm, who you haven't told the game to preload. I gave you code for this, you said you put it in, but you clearly didn't.
- you are still treating nkg as radiance
- why do you need to preload the hollow knight? aren't these grimm attacks?
ok
im just trying to get grim workin rn
ok
delete all of this
var fsm = nkg.LocateMyFSM("Attack Commands");
var spawnAction = fsm.GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1);
orbPre = UnityEngine.Object.Instantiate(spawnAction.gameObject.Value, null);
UnityEngine.Object.DontDestroyOnLoad(orbPre);
orbPre.SetActive(false);
ShotCharge = nkg.transform.Find("Shot Charge").gameObject;
ShotCharge2 = nkg.transform.Find("Shot Charge 2").gameObject;
var finalcontrol = orbPre.LocateMyFSM("Final Control");
UnityEngine.Object.DestroyImmediate(finalcontrol);
var herohurter = orbPre.transform.Find("Hero Hurter").GetComponent<DamageHero>();
UnityEngine.Object.DestroyImmediate(herohurter);
BeamSweeper = preloadedObjects["GG_Grimm_Nightmare"]["Boss Control/Beam Sweeper"];
BeamSweeper.transform.SetParent(null);
next
Its already there
look
{
return new List<(string, string)>
{
("GG_Grimm_Nightmare","Boss Control/Nightmare King Grimm"),
("GG_Radiance","Boss Control/Beam Sweeper"),
("GG_Grimm_Nightmare","Grimm Spike Holder/Nightmare Spike"),
("GG_Hollow_Knight","Battle Scene/Focus Blasts/HK Prime Blast"),
};
}```
oh I see now
("GG_Grimm_Nightmare","Boss Control/Nightmare King Grimm"),
ok
next
try running it now
[ERROR]:[API] - at System.Collections.Generic.Dictionary`2[System.String,UnityEngine.GameObject].get_Item (System.String key) [0x00000] in <filename unknown>:0
[ERROR]:[API] - at ChildOfNightmares.ChildOfNightmares.Initialize (System.Collections.Generic.Dictionary`2 preloadedObjects) [0x00000] in <filename unknown>:0
[ERROR]:[API] - at Modding.ModLoader.LoadMod (IMod mod, Boolean updateModText, Boolean changeSettings, System.Collections.Generic.Dictionary`2 preloadedObjects) [0x00000] in <filename unknown>:0
[ERROR]:[API] - at Modding.ModLoader+<LoadMods>d__9.MoveNext () [0x00000] in <filename unknown>:0 ```
{
#region GetPrefab
var nkg = preloadedObjects["GG_Grimm_Nightmare"]["Boss Control/Nightmare King Grimm"];
HKBlast = preloadedObjects["GG_Hollow_Knight"]["Battle Scene/Focus Blasts/HK Prime Blast"];
SpikePre = preloadedObjects["GG_Grimm_Nightmare"]["Grimm Spike Holder/Nightmare Spike"];
#endregion
#region Setup
GameManager.instance.StartCoroutine(WaitHero(() => {
SetupOrb();
SetupBeam();
SetupBlast();
SetupSpike();
}));
#endregion
#region Hooks
ModHooks.Instance.AfterSavegameLoadHook += ApplyTrigger;
GameManager.instance.StartCoroutine(WaitSetup(()=> ModHooks.Instance.CharmUpdateHook += Instance_CharmUpdateHook));
#endregion
}
ok, boss control does not exist
replace
Boss Control/Nightmare King Grimm
with
Grimm Control\Nightmare Grimm Boss
then you should be good
thats what ive been saying
ok
now there no errors but when i do desolate dive its stuck on desolate dive
and no spikes
then you did something bad to the fsm
i didnt modify the fsm
then what do you do for spells?
show me your code for this
Wait oh right i changed it from this ModCommon.ModCommon.OnSpellHook += onSpell; private void onSpell(Spell s) { //spawn spikes return false; }
to child of light code
{
//spawn spikes
return false;
}```
but i changed it to child of lights code
bruh
lol
show me the SetupSpike method
{
UnityEngine.Object.DestroyImmediate(SpikePre.LocateMyFSM("Hero Saver"));
UnityEngine.Object.DestroyImmediate(SpikePre.GetComponent<DamageHero>());
AddDamageEnemy(SpikePre).damageDealt = 5;
var spikectrl = SpikePre.LocateMyFSM("Control");
spikectrl.RemoveTransition("Up", "DOWN");
spikectrl.RemoveTransition("Up", "SPIKES DOWN");
spikectrl.InsertAction("Up", new Wait { time = 0.4f, finishEvent = FsmEvent.Finished }, 0);
var downed = spikectrl.GetState("Downed");
var floor_antic = spikectrl.GetState("Floor Antic");
var spike_up = spikectrl.GetState("Spike Up");
var up = spikectrl.GetState("Up");
downed.Transitions = new FsmTransition[] { };
floor_antic.Transitions = new FsmTransition[] { new FsmTransition { FsmEvent = FsmEvent.Finished, ToState = "Spike Up" } };
spike_up.Transitions = new FsmTransition[] { new FsmTransition { FsmEvent = FsmEvent.Finished, ToState = "Up" } };
up.Transitions = new FsmTransition[] { new FsmTransition { FsmEvent = FsmEvent.Finished, ToState = "Down" } };
spikectrl.AddTransition("Downed", "HEROSPIKEUP", "Floor Antic");
spikectrl.Fsm.SaveActions();
SpikeCenter = new GameObject { name = "HeroSpikeCenter", layer = 23, active = true };
UnityEngine.Object.DontDestroyOnLoad(SpikeCenter);
SpikeCenter.transform.position = HeroController.instance.transform.position;
setupDone++;
}```
i think this is the problem var spikectrl = SpikePre.LocateMyFSM("Control");
nope
get it
should i refer to it
What does QoL and vasi do
vasi is a dependancy qol does a lot but we need it for extra logging
yeah
I never told you they would fix
vasi is a dependancy qol does a lot but we need it for extra logging
@vocal spire
now check the modlog for errors
that do not include Errors coming from qol
I'm gonna rewrite a lot of code brb
sure
ok there is a problem with SetupOrb
every thing nonrelated to rbs went red
wait did you actually comment out everything?
yup
I meant only SetupOrb SetupBeam and SetupBlast
lol
I probably could have explained that better
lol
also there a billion places where there is other spells
and they turn into errors
var dmg = go.AddComponent<DamageEnemies>(); this line is giving me an error
how?
and i just spent all that time commenting
under AddComponent it says Expensive method invocation
what
i undid all commenting and every thing is fine
and i think this line just mean i have to cast to object but thats just a warning i think ChildOfNightmares.ChildOfNightmares.SetupOrb ()
ok
Its a FSMPlayMaker problem I think [ERROR]:[UNITY] - HutongGames.PlayMaker.FsmState.ActivateActions (Int32 startIndex)x
[ERROR]:[UNITY] - HutongGames.PlayMaker.FsmState.OnEnter ()
[ERROR]:[UNITY] - HutongGames.PlayMaker.Fsm.EnterState (HutongGames.PlayMaker.FsmState state)
[ERROR]:[UNITY] - HutongGames.PlayMaker.Fsm.SwitchState (HutongGames.PlayMaker.FsmState toState)
[ERROR]:[UNITY] - HutongGames.PlayMaker.Fsm.UpdateStateChanges ()
[ERROR]:[UNITY] - HutongGames.PlayMaker.Fsm.DoTransition (HutongGames.PlayMaker.FsmTransition transition, Boolean isGlobal)
[ERROR]:[UNITY] - HutongGames.PlayMaker.Fsm.ProcessEvent (HutongGames.PlayMaker.FsmEvent fsmEvent, HutongGames.PlayMaker.FsmEventData eventData)
[ERROR]:[UNITY] - HutongGames.PlayMaker.Fsm.Event (HutongGames.PlayMaker.FsmEventTarget eventTarget, HutongGames.PlayMaker.FsmEvent fsmEvent)
[ERROR]:[UNITY] - HutongGames.PlayMaker.Fsm.Event (HutongGames.PlayMaker.FsmEvent fsmEvent)
[ERROR]:[UNITY] - FSMUtility.SendEventToGameObject (UnityEngine.GameObject go, HutongGames.PlayMaker.FsmEvent ev, Boolean isRecursive)
[ERROR]:[UNITY] - FSMUtility.SendEventToGameObject (UnityEngine.GameObject go, System.String eventName, Boolean isRecursive)
[ERROR]:[UNITY] - HutongGames.PlayMaker.Actions.SendEventToGameObjectOptimized.OnEnter ()
[ERROR]:[UNITY] - HutongGames.PlayMaker.FsmState.ActivateActions (Int32 startIndex)
[ERROR]:[UNITY] - HutongGames.PlayMaker.FsmState.OnEnter ()
[ERROR]:[UNITY] - HutongGames.PlayMaker.Fsm.EnterState (HutongGames.PlayMaker.FsmState state)
[ERROR]:[UNITY] - HutongGames.PlayMaker.Fsm.SwitchState (HutongGames.PlayMaker.FsmState toState)
[ERROR]:[UNITY] - HutongGames.PlayMaker.Fsm.UpdateStateChanges ()
ok
[ERROR]:[UNITY] - HutongGames.PlayMaker.Fsm.DoTransition (HutongGames.PlayMaker.FsmTransition transition, Boolean isGlobal)
[ERROR]:[UNITY] - HutongGames.PlayMaker.Fsm.ProcessEvent (HutongGames.PlayMaker.FsmEvent fsmEvent, HutongGames.PlayMaker.FsmEventData eventData)
[ERROR]:[UNITY] - HutongGames.PlayMaker.Fsm.Event (HutongGames.PlayMaker.FsmEventTarget eventTarget, HutongGames.PlayMaker.FsmEvent fsmEvent)
[ERROR]:[UNITY] - HutongGames.PlayMaker.Fsm.Event (HutongGames.PlayMaker.FsmEvent fsmEvent)
[ERROR]:[UNITY] - HutongGames.PlayMaker.Fsm.Event (System.String fsmEventName)
[ERROR]:[UNITY] - PlayMakerFSM.SendEvent (System.String eventName)
k
code done?
private void SetupSpike()
{
UnityEngine.Object.DestroyImmediate(SpikePre.GetComponent<DamageHero>());
AddDamageEnemy(SpikePre).damageDealt = 5;
var spikectrl = SpikePre.LocateMyFSM("Control");
spikectrl.RemoveTransition("Up", "SPIKES DOWN");
spikectrl.InsertAction("Up", new Wait { time = 0.4f, finishEvent = FsmEvent.Finished }, 0);
var downed = spikectrl.GetState("Dormant");
var up = spikectrl.GetState("Up");
up.Transitions = new FsmTransition[] { new FsmTransition { FsmEvent = FsmEvent.Finished, ToState = "Down" } };
spikectrl.ChangeTransition("Dormant", "SPIKES READY", "Ready");
spikectrl.Fsm.SaveActions();
SpikeCenter = new GameObject { name = "HeroSpikeCenter", layer = 23, active = true };
UnityEngine.Object.DontDestroyOnLoad(SpikeCenter);
SpikeCenter.transform.position = HeroController.instance.transform.position;
setupDone++;
}
I'm gonna go work on my mod now
oh no, my custom reflection based JsonConverter works
lol
lol
and the output is quite good
{
"SpriteData": {
"Anchor": "MiddleCenter",
"HeroSize": {
"x": 0.0,
"y": -1.0
},
"offset": {
"x": -1.0,
"y": 0.0
},
"Definitions": [
{
"SpriteName": "Test",
"Position": {
"m_XMin": 1.0,
"m_YMin": 2.0,
"m_Width": 3.0,
"m_Height": 4.0
}
}
],
"Clips": [
{
"clipname": "9",
"fps": 10.3,
"frames": [
{
"Id": 5,
"HasEvent": false,
"EventInfo": "6",
"EventInt": 7,
"EventFloat": 8.1
}
]
}
]
},
"BoolValues": {},
"FloatValues": {},
"IntValues": {},
"StringValues": {}
}
oooooooooooo
And i got the spike to work btw
cool
gonna put that into SFCore lol
@jolly oriole You made SFcore?
yeah
yes
they did
oh
i mean, their name is SFGrenade
I'm starting to think there is something wrong with the touchpad on this pc
I think I can now say, customknight+ is about 40% done!
i didn't know youre making customknight+!!
WTF IS THIS
idk
funniest shit i've ever seen
will be decided after ver 1
but
oh
wait
I thought you said something different
pets already get skins
customknight+ lets you use your own spritesheets
that isnt that useful
bruh
oh
have you ever been confined to the limits of the normal sprites
the background
?
and foreground
?
so u can use your own sprite sheets so u can change the background and foreground right
so the knights sprite sheet
have you been confined to the small square of the knight when you want to make something bigger and better
i dont understand
have you been confined to the small square of the knight when you want to make something bigger and better
No, but thanks for the question
when making skins you are confined to the original size of the knight to draw in
skins would be better if you could draw outside that
so u can make a more detailed or bigger knight
like 512 x 512
as much as you want
but it would require a good pc if its like 2048 x 2048+
all the player with bad pcs would basicly still have to use customknight
well
it can't really be used to make it higher definition
but it will still let you go way outside the normal bounds
so only bigger?
yeah
i have an idea for a mod now
ok
you know grimms puff up attack
yeah
ima make a mod that does that but to the knight
ok
when will it release btw
today, tomorrow, next week, idk
ok
yeah thats fine, Im just saying when it does get finished Ill def be using it
gives a lot more flexibility
also I can tell you know what youre doing when it comes to the code and all, so I know I can ask you for help when I need it lol
lol
@vocal spire whats the nkg alt to this var absFSM = abs.LocateMyFSM("Attack Commands");
oh
It’s all in the same fsm
Not everything has an equivalent alt
You gotta search on your own
are there mods that have changed scenes/rooms noticeably that I can take a look at?
yeah I'm looking there right now, was just wondering if any existing mods have changed scenes and such
okay got it, ty
Adds 3 new rooms that are part of a new pop located across from the original pop
does HKEdit2 ONLY work on Unity 2017.4.10f1?
Im assuming thats the version the game was made on?
Any 2017 I think but yes
but not anything after, like 2019, right?
Nothing other than 2017
got it
Might run on other years but assetbundling will always fail when loading the assetbundle in hk
for both the FSM viewer and HKEdit, do I have to export the files to specific places?
so like I would download the zip, but then what
ah okay got it, ty :)
how would I open HKEdit with unity specifically?
Go into unity and click open project or whatever, then select the hkedit folder
oh its just as simple as selecting the folder?
okay I was overthinking it then, thanks for the help as always :)
I think I got it to work, its giving me the option of choosing a scene
Hkedit basically makes the editor think the game files are project files, so if it's not the right version it will probably die, considering even a minor update makes the editor popup the upgrade project version dialog
Is there a good way to run FSMViewR2 in Ubuntu? I'm having trouble getting it to work with Wine.
@chrome abyss do this https://www.reddit.com/r/linux4noobs/comments/firqs9/getting_windows_wpf_applications_to_run_with_wine/
and stop at adding the reg key (do the reg key command but don't do anything after it)
3 votes and 1 comment so far on Reddit
So, I tried to follow that, but winetricks told me "Unknown arg dotnet48"
I'm probably just going to try running this in a windows VM instead
Did you do the -q part?
Yeah, I did
I remember copy pasting those two commands and it worked fine for me after that
Possible your wine tricks might be out of date but other than that idk
I tried updating it and then rerunning the commands, and that didn't work either 
What about dotnet47
That also doesn't work
Weird
Should I try everything between 40 and 46 lol
Just a sec
ye this is what it shows for me
potato@pop-os:~/Desktop$ wine --version
wine-5.0.2
potato@pop-os:~/Desktop$ winetricks --version
20200412 - sha256sum: 7651c93e39fcb080483c38836513bf912273a87ea97d137f6b958ed3d9628c3d
Hm I didn't actually check the version, and it seems like I didn't actually successfully update winetricks to the latest version
So I'll try that again
Okay now it's installing properly
Or not... rip
tons of errors?
Yep
I mean mine had tons of errors too but I let it finish and it installed
unless it already installed and still isn't working
I killed it after it looked like it was just looping through the same errors
Probably should've taken a screenshot
yeah just keep letting it run
and eventually it should stop
but yeah sorry to make you guys go through all this but avalonia did not support some of the same stuff that wpf had that I needed to make it work
So, now I'm getting the error:
0009:err:module:LdrInitializeThunk Importing dlls for L"Z:\\home\\$USER\\Downloads\\FSMViewR2\\PMFSMView.exe" failed, status c0000135```
Hm, seems like I messed up my prefix somehow; I'll try again
Okay, the application seems to work now, but when I try to load anything I'm told:
Is there a Steam path variable I need to set?
It might be messed up because it's being run through Wine
it reads the registry
for windows steam path
Got dis error [ERROR]:[API] - Error: System.NullReferenceException: Object reference not set to an instance of an object [ERROR]:[API] - at ModCommon.Util.FsmUtil.GetAction (.PlayMakerFSM fsm, System.String stateName, Int32 index) [0x00000] in <filename unknown>:0 [ERROR]:[API] - at ModCommon.Util.FsmUtil.GetAction[SpawnObjectFromGlobalPool] (.PlayMakerFSM fsm, System.String stateName, Int32 index) [0x00000] in <filename unknown>:0 [ERROR]:[API] - at ModCommon.Util.FsmutilExt.GetAction[SpawnObjectFromGlobalPool] (.PlayMakerFSM fsm, System.String stateName, Int32 index) [0x00000] in <filename unknown>:0 [ERROR]:[API] - at ChildOfNightmares.ChildOfNightmares.Initialize (System.Collections.Generic.Dictionary`2 preloadedObjects) [0x00000] in <filename unknown>:0 [ERROR]:[API] - at Modding.ModLoader.LoadMod (IMod mod, Boolean updateModText, Boolean changeSettings, System.Collections.Generic.Dictionary`2 preloadedObjects) [0x00000] in <filename unknown>:0 [ERROR]:[API] - at Modding.ModLoader+<LoadMods>d__9.MoveNext () [0x00000] in <filename unknown>:0
why do I have a ping here
probably discord being discord
yeah lol
Can some one help me?
?
you are referencing part of a fsm that doesn't exist
"Grimm Spike Holder/Nightmare Spike" is a thing
and?
i just added that and error
?
have you looked at the error?
Yup
where are you using GetAction<SpawnObjectFromGlobalPool> ?
Fixed it
@chrome abyss I don't think fsmviewr2 has xplat steam finder so you'll just have to use regular file open instead of open scene list/open resources.assets
I know I have it so I'll just commit it when I get to my comp
I think I got it to work using wine regedit
So I was trying to follow the examples outlined in https://radiance.host/apidocs/PlayMakerFSM.html, but I got the following compile error:
ObjectCache.cs(71, 44): [CS1061] 'PlayMakerFSM' does not contain a definition for 'GetAction' and no accessible extension method 'GetAction' accepting a first argument of type 'PlayMakerFSM' could be found (are you missing a using directive or an assembly reference?)
The relevant code here is:
_soul =
Object.Instantiate(fsm.GetAction<SpawnObjectFromGlobalPool>("Hit", 8).gameObject.Value);```
get action is an extension
there's an implementation in modcommon if you want to use that but from what I understand rando has its own set of extensions if you're working on that
Ah, I see. Thanks!
Similarly to the SaveGlobalsettings method, is there a LoadGlobalsettings that lets you reload them after a certain point?
Or is it automatically reloaded when you get the global settings
Or am I dumb
Because the api says that the globalsettings fail to load in the modlog because I used a json converter in SFCore and despite having SFCore in the mods folder, it failed to load seemingly causing the failure to load the global settings
Probably a private skin
in twitter
Is there somewhere I can find documentation for PlayerData and HeroController?
https://radiance.host/apidocs/PlayerData.html most of playerdata at least
So, does that mean soul is not tracked by playerdata?
I saw that under "Classes" it says "PlayerData has methods specifically for adding and removing health, soul, and geo. I will go over the health ones which should give you a good idea of how the rest work."
But I have no idea what the methods for adding and removing soul are called
"AddSoul" and "AddMP" both didn't work
they do
they just don't update ui
the herocontroller ones update ui
you can use like AddMPChargeSpa, TakeMP, SetMPCharge, etc
It just sends an fsm event to the soul orb
That worked; thanks!
what
I think you’re in the wrong channel
I think u mean Hollow Point
Hey everyone, and programmers here?
*any
If so, then please @ me, I got a few question regarding a project i have been working on
or you could just.... ask the question(s)
Yeah of course, that... well that would also work
So basically... I have joined a team that wants to make a HK mod that adds content... like a new area. While a fair share of the artwork has been done already, we are still missing programmers. I myself would be responsible for the lore of said project, so I have no idea what the limitations are when it actually comes to programming
Is adding an area even remotely possible? I figure that before the project really gets going we need to know what is possible... and what isn't
adding an area is not even possible, but even stuff like dynamically extended rooms are possible https://www.youtube.com/watch?v=CL5nNLNtXzo
Things are going along nicely
A scene, which dynamically enlarges the further you go.
very interesting, thank you!
so new rooms could be implemented in a way. Is it only possible to add one room as a dynamic extension, or is more possible?
Or does the room only kind of spawn in, without the ability of adding art assets or level design elements to the room?
new rooms can be added as one wants, you can also add assets/elements, i just didn't do it for that video
ohhh interesting!
I see that you are a coder, currently working on a platforming mod of sorts?
https://youtu.be/VSyT9u6Qy8g?t=8 here are a few pictures of a mod i'm working on
near
https://discord.gg/hollowknight#rel
#sfgrenade #hollowknight #testofteamwork
yes
I can send you some artwork from what we have been working on if you want (just you know, to take a look at the art and as a thank you for answering my questions)
no probs
Ok, now I'mma make an announcement: I am searching for a programmer/programmers, if you are interested dm me!
Do any of you guys know any good guides to get started?
Ive worked with c# and unity and modded for some other games
Ok....
Just gonna tell you something before you start, almost nothing has equal stuff. Take nkg and radiance for example. Try to find the fire beams and light beams on each, and you get a null reference. Look hard into the object and scene hierarchy and fsms you are trying to access and you’ll find what you are looking for eventually
a while back i think i saw something here where someone was editing the map within unity. how do you get the game files back into a project?
ive tried using that but every mono behavior script was detached on export and maybe im lazy but i dont want to reattach 5000 mono behavior scripts
ill try agin i was probably doing it wrong
K
You have to preload objects and replace the new ones in your scene to do a lot of preserving of original things
right
gonna go see if I can remove customknight+'s dependancy on sfcore so I can finally properly load the globalsettings
wait wut
it always tells me that it can't load sfcore in modlog
oof
and the globalsettings fail to load
I had it in there the entire time
would have been better if I had tested it with another mod that used sfcore I guess
to make sure I ACTUALLY had it in there
wait
by I had it in there I mean I had it in the mods folder lol
might have been assumed that I meant that, might not but you never know
Me not like slow pc
hope it works this time
@vocal spire what do mean nothing has equal stuff? like its super inconsistant?
also what is unity ripper
have you looked at the guide
does it let you play around with it as a unity project?
in the apidocs
ok thanks
that would be cool but sounds like hell if it has bugs
if only unity allowed a decompile
what is it
something with an animator component
or something
if you look through the guide in the apidocs, you can solve everything but that
gonna go test customknight+ now
ping if you need me
alright
also what I meant with inconsistancies in fsms is like if you look for the light beam radiance has, it will be extremely different to find grimm's fire beam. you can't always just copy fsm code from something and expect it to work on something else
uh huh
k