#archived-modding-development
1 messages · Page 498 of 1
.. Omfg I'm in bed, just realised: I changed the "name" of a thing. The name being just a string so the compiler didn't actually check that. Yltsi
Hello guys. You have probably heard this question MAAANY times but I would like to know how I can create my own mods. I also want to know if it uses C# since I heard this game is made with Unity. I have lots of experience with Unity and I'd love to be able to code my own mods. Thank you
Thank you bro
Im probably blind but I checked the pinned messages for the hollow point mod and i couldn't find it, could someone send it here?
modinstaller -> hollow point
Idea for item randomizer
Make walking an item
You can only jump until you find it
No
(Cursed mode exclusive)
Damn ok
Idea for Elijah
don't shitpost in modding-development 
as you can see at the top of the screen this channel is for the development of mods
ok so you're just shitposting
lol imagine trying to roast the orange men
Orange man good
Alright, I'm kind'a slow.
I'm using FSMViewers, and I'm trying to find out what sounds are available (let's say, for example, sly's voice). There's a few mods that make references to the PlayMaker location [https://github.com/Kerr1291/BoopSoundMod/blob/master/BoopSoundMod/BoopSoundMod.cs#L212, eg.] but I'm not sure how to find a list of these (or even where one would be) in FSMViewer. Can anyone point me in a direction?
(I did read the radiance api article; it uses a number of state names like "Distance Fly" or "Fire Dribble" or whatever, but I'm not where where these are coming from.)
you click on the state and it lists the actions
In the link you send, the action was AudioPlayerOneShotSingle which plays a sound once
In the picture I sent, the state selected is "In Range" and the actions it has are "ShowPromptMarker", "Trigger2dEvent", etc
"Distance Fly" and "Fire Dribble" are state names
Ahh, okay, that makes sense! For audio, is there an indication of what audio is used where in this?
not quite sure what you mean but I believe the FSM Viewer doesn't show the audio clip names unfortunately
I believe clips is a property of it(?) AudioClip array
it might in the latest version
Sorry, sorry: for example, like, if I wanted to find what "Sly_Talking" was called, or whatever, or even the sound of the nail, I'm not sure where to find those audio file names.
I don't think it lists them in FSM, unless I've been really unlucky with all the things I clicked around on, you're right.
foreach (var i in FindObjectsOfType<AudioClip>().Where(x => x.name == "Sly_Talking")
{
// do stuff with your audio clip
}
that could work
if the scene you are in has the audioclip you want loaded
Okay, is there a way to list of the AudioClips? I don't actually know what things would be called, Sly_Talking was just an example that prob doesn't exist, haha.
or you could do trial and error and figure out what audioclip the fsm is playing by printing its name into the log
I usually just figure out the names by logging
Or you could use utiny ripper and find the references to them
Asset Studio would be faster than utiny ripper I think
Oh, interesting. I have not used the unity ripper yet. It might be easier for me to figure out how to log them first since I know exactly what I want and exactly where in the game to find it, haha.
Okay, I'm gonna try out assetstudio since there's a bunch of hits for that in the discord. Thanks y'all!
ah sorry the new fsm viewer shows the audio clip names and stuff
it's currently in a private repo at the moment
Oh, that's neat! Is there a build for it, or is it still in dev?
No rush, I was able to mess around with a few other things and figure out what I needed, but I'm sure this'll be useful in the future. :']
(mobile, sry) You also could use Resources.loadobjectoftypeall to be scene independent
Anybody got the hollow point download file?
yes
I'm sorry to hear that
Bruh
Just curious, but is there any kind of guide to making your own custom skins (like which sprites are what/which are important)?
if you look in the pins there is a link to how to dump sprites and repack them
you end up with a folder of folders, each containing a bunch of sprites relating to an animation, named accordingly
eg
Is there a way to mod dialogue or even create an NPC? I've checked the api but the only reference to it was that it would bloat the document. Is there a way to do this?
LanguageGetHook
also linux builds for everyone yay
Changing lore tablets, how easy will it be?
I'm assuming relatively easy
But I'd like to know how one would go about doing it
as easy as to listen to their language string, then returning your own message
yea
I have a monobehavior to attach to a zote preload that allows for really easily changing the npc dialogue. The animations of zote need to be changed though. Did it before though to make a rusty npc that was shown around the end of Rusty’s birthday live stream
Wait you used Zote as a basis for that?
Thats cool
once I learn more about modding (I already know unity) I may ask about that again
Yes
Aight, thanks
Should I take normal Physics too?
Wait where do I find them
I found this
Is this what I need?
yea
Thanks
Anyways I think I'll take a short break from this, do a few minor mod stuff instead in the meantime
Just some fun text here and there
How do I find Hive Knight's direction during TeleIn 2?
keep it from Aim L/R I guess
Just save it?
?
Just like, save it in some var
yeah
Well
I got super close today to finishing my first altered attack
(I don't call speeding up attacks altering them)
how do I add health managers to a boss scene controller?
just adding the one I want one in bosses variable and increasing the bossesLeft variable doesn't seem to make it require both defeated
Does Hollow Knight have a minimum jump height?
I tried checking via dnSpy but I'm bad at reading.
private void JumpReleased()
{
if (this.rb2d.velocity.y > 0f && this.jumped_steps >= this.JUMP_STEPS_MIN && !this.inAcid && !this.cState.shroomBouncing)
{
if (this.jumpReleaseQueueingEnabled)
{
if (this.jumpReleaseQueuing && this.jumpReleaseQueueSteps <= 0)
{
this.rb2d.velocity = new Vector2(this.rb2d.velocity.x, 0f);
this.CancelJump();
}
}
else
{
this.rb2d.velocity = new Vector2(this.rb2d.velocity.x, 0f);
this.CancelJump();
}
}
this.jumpQueuing = false;
this.doubleJumpQueuing = false;
if (this.cState.swimming)
{
this.cState.swimming = false;
}
}
this.jumped_steps >= this.JUMP_STEPS_MIN
Thanks.
i dont even know what a uhkp is
but what the FUCK
i cant believe you'd do this
Because i think mickely said in #modding-discussion that uhkp is no longer needed
I mean it's not super well used but there are bugs that it fixes
well, made it just after <#modding-discussion message>
this ain't it
the radiance bug definitely still happens
and the sharp shadow thing is like really old
What are we seeing here?
the commit message
Hi, guys!
I have a question. Are you aware of any mod that totally disables Depth of Field (background blur effect) in Hollow Knight? I mean specifically a simple fix that doesn't require an NVidia graphics card to work (like this one does: https://helixmod.blogspot.com/2017/06/hollow-knight.html) and was designed mainly with disabling DoF in mind.
And if such mod doesn't exist, I'm curious how difficult it would be to create?
I'm curious how much of a performance impact this effect has for integrated Intel HD Graphics 4600, and if disabling it totally could massively improve performance for low-end users.
Thanks!
afaik no such mod exists, but it should be as simple as deleting the blur from a scene when the scene is loaded and for the depth of field, i saw the camera has a setting for something like that, so maybe it's done with setting that to 0
dont program it to be infinite
k
anyone knows why spikes I spawn when he teleports from the left always go in a vertically flipped direction from where they're aimed at?
Red is where it went, green is where it's aimed/should go
I'd like to note this is only when he teleports from the left
From the right works fine
@ me when you answer
have you considered showing your code
forgive the mess, all the comments are different things I did to try and isolate it
if it's aimed at the other direction and you are rotating it, think about how that works. I think what you want to do is make it's scale negative
Wait but why does it work when the Hive Knight comes in from the right?
think about how rotation works
Also, I base the rotation on the parent, and add my own script to it to move it
Wait I'm an idiot
Holdup
lol
It is moving in the correct direction
yeah
it's just not looking in the right direction
think about how rotation works again
it appears you are rotating it to face in the right direction
But what does Buzzbo's direction do to it?
wdym?
is this your most recent code that makes that happen
Yep
Anyways, I'll try the scaling you mentioned
I'll make it happen only from the left
yeah?
godlike visualisation tool btw
yeah
what does your movement code do
(1, -1, 1) should work, right?
move in a single direction
thats it
I basically just copied off what you sent here a couple days ago
void Update(){
move in a single direction
}
?
lol
yep
Aight, I can see but not see what you're saying
from the code I put, it appears you are rotating it. I have rotated the image facing right, and from all rotations.
so when it's facing left do a like reverse of how you got the original position or something
what
It's going in the right direction
obviously you're flipping it horizontally
Or vertically, but yeah
no
wdym?
obviously the rotation is based off the direction the hive knight is facing
I spawn it centered on Hive Knight
Ah, right
but how do you position it to the lines showed
wdym?
in the lines you showed before
Yeah?
unparent it
this
ignore that line completely
What about it?
and just set localposition to the hiveknights position
ooh, that's a brilliant idea
and a very simple one
that would not have occurred to me for at least another week
thanks
would this work?
let's find out
Eyy, it works now
Thanks @leaden hedge
yay
you too, red
:D
Now to set all the spikes in their correct rotation and I'm pretty much done with this attack
So I made The Knight wearing a Bandana
I think #modding-discussion is better for this
Does anyone have any tips for handling submenu inputs and timeout if too long passes?
f.ex input in 0-9 range, if q: exit, if say 8 seconds: exit, and keeping status for whether it was 0-9 was chosen or one of the other exits?
So far I've looked at coroutines for attempting it, and found some stuff on async waits as an alternative for coros when return values are wanted
Can anyone help me figure out if Hive Knight's leap is always a constant amount of time?
I don't have fsm viewer atm, but shouldn't that be visible in the fsm? @jolly jungle
It should
I would guess no because it depends on where the target position for the jump is
Aight, thanks
<@&283547423706447872>
ty
No, thank you
What was it
Just spam
Haha, what the hell is this. Also, to make my message on-topic: what mods are allowed to be on the installer? Is it a PR-into-it kind of thing?
just pr modlinks really
Okay I have UABE but I don't know how to actually extract in-game sound files. Can someone quikcly help me through this? Also, do I have to open every single in-game file for these tracks, or just a select few?
Does anyone know this? I figured that you guys would know the most about this.
I mean you just have to sort of look through the shared assets files and find an AudioClip you can export with the audio export plugin
But assetstudio might be easier since you can open the entire folder at once, filter asset types to just audioclips, and preview without exporting
I'll try that and report back on what I find. Thank you.
so I may be working on a rewrite of a program that we all know and love...
and yes, I know there's a memory leak somewhere
oh if someone else is rewriting it
you can implement something useful so i dont have to
what's up
the jsons are different between patches
it'd be very nice to be able to load a 1432 spritesheet with a 1432 json
but save it according to a 1221 or whatever json
is that why there's a difference between v1.2 and v1.3 of GODump or is this something else?
this is something else i think
the json is the thing that just defines where the sprites are on the atlas
this should be 1221
this should be 1432
basically this is how its currently aligned
this is how it was aligned
and the current program does this when you try to load the old json
interesting
it also complains like 500 times, because 1221 has different duplicate sprites
but yeah then it'd let people doing speedruns on 1221, like races and stuff
use current patch customknights
I'll see what I can do, haven't touched packing yet so idk if C++ will play nicely with me on that front
How does the modding for Hollow Knight work? Are you injecting assembly into the DLLs or are you disassembling the exe and writing in C# or are you doing something else?
patch in some classes and methods which replace and add to the assembly
for the api itself
the api itself then just loads the mod assemblies which can change methods using the hooks given by the api or using the hooks given by monomod's runtime detour
So the code I provide to monomod is the assemblies of some C# code then?
I found the radiance.host link in the pins. Thanks for the info @copper nacelle!
Aight
Slightly stupid question
How do I figure out what direction hive knight is facing when I don't have something as generous as the fsm telling me it's left/right?
yes
Cool, thanks 👌
that means I can rid myself of an annoying variable
or at least generalise it
thanks @worn eagle
you too, grenade
np
I have been asked to ask if there is a way to stop the scene manager from changing the colors of a scene
not having one would be one way to not change color correction
great idea
another one would be to have the color correction curves as linear from 0,0 to 1,1
ok
ig it's for sanctuary
in that case the linear curves are the way to have the scene look as close as possible to the view in unity
there aren't many mods that utilize custom scenes
this is betrayal redfrog
the only other playmaker dude is getting kicked out of pale court 
I didn't say what the punishment for betrayal was, smd
The punishment for betrayal is syd? 😳
yes
Is there a mod I can look at for an example of how to modify the quick/world maps? I know how to edit pins but would like to be able to make room-related changes to it
not currently
wait nvm
https://github.com/SFGrenade/AdditionalMaps early starts
just pushed new code again
Oh sweet, thanks much! That looks to be exactly what I am attempting to do, which is adding White Palace and also other interior areas.
You already knew about this
I might've messed up a thing or two; is vanilla max mp 99 or 100? 
99 afaik
yea, thats what i thought. Also found an older PlayerData where its 99. Weird that nothing stopped maxMP in the playerinstance from going 1 up 🥴
might be because i died and killed the shade (that dead piece of code I asked about earlier) 
got the sprite packing working, with the program peaking at ~100 MB while the WPF version peaks at 300
pack time for Knight.png is also cut from 32 seconds to 15 
in release mode it's 4 seconds 
Anyone have any specific tips for performance testing mods? 
if you run it and you have 3fps you probably messed up somewhere
What if I had 3fps before that as well
you messed up elsewhere
But I'm assuming no actual tools or anything to help, then 
set breakpoints on each update and count the ms to reach each breakpoint in debug 
you might be able to grab the unity profiler but not sure how/if that works outside of unity studio
you'll only really be able to do your own profiling
personally i'd just test it outside of the scope of hollow knight
if something runs at 0.1ms outside of hollow knight it should be fine inside and any lag isn't your fault 
hi is there a general guide anywhere for how to get started making a mod? I looked in the pinned messages and didn't really understand them so if it was listed there, sorry
thank you
Damnit, I missed all the fun
Anyways
Anyone knows how this reaches the Globs?
I created another glob (copied one of them) and placed it as a sibling to the others, but it seems like this FIRE event doesn't reach it
How do I make Hive Knight's DNail dialogue be a specific thing only when stunned?
Also, how do I generally recognize when Hive Knight is struck?
Wait I might have figured this one out
Yep, I did it
Been a while since I’ve looked at hive knight, but I think a parent object has all of them as references, then sends the event that way. If you instantiated it, then the parent object would have no way to also send the event to that one
is EnemyRandomizer still developing? I search the source code in github, but can just find a three years old version(0.2.x). but in the ModInstaller, the latest verion is 0.3.2.
Waitwaitwait again?
All three of the originals are children of Globs
have you looked at the parents fsm
its might have a list of children cached
because looking everytime is slow af
Ah, found it
Seems to remember the three of them, yes, as "L, M, R"
it looks for 3 random ones
i would just make my own action
The current ModInstaller version should be based off of my fork, but I haven't touched it in quite a few months (last commit was in May 2020, though I should probably make sure I've pushed all changes). Planning to get back to it eventually, but currently no particular time frame.
That does what, though?
I'm not sure how this works
Oh wait
I'm dumb
just make a playmaker action called "SendEventToAllChildren"
copy the code that SendEventByName does, but do it for a list of all children instead of one gameobject
would you mind tell me your github name?
i am planning to steal some code
lmao
It's TheGreatGallus
thanks
although i'd personally just remove all the SendEventsByName, and a new FsmAction that just ignores all fsm stuff
and just finds all glob-control fsms and move them into the tween up state
No problem. If you have questions about what's going on with any of it, feel free to message me. Can't guarantee I'll know what the code in question does (I've mainly just fixed compatibility and some of the quirks), but I might be able to help out
the annoying things is that tons of enemies can't simply spawn in other area(especially bosses), so I am investigating how your guys fix them

sometimes you need to set the state of the fsm for it to startup
yea that too
that's not the case for enemies though which is what I thought you were referring to
Bosses are very fussy. I have suspicions based on the way that they currently act in ER that there's a few hardcoded position values in their AI which interferes with putting them in other spots. It's something I need to dive into at some point to fix ER stuff, but haven't gotten around to
for example, the pure vessel, the value "Plume Y" is just fit for that room
If you do plan to put bosses in other rooms, be mindful of their roar. If you don't make adjustments to it in situations where they activate on player transition, it can push the player immediately out of the door and prevent access to said room
or oob
That too
do you mean the roar will push player ouside of the doors?
ER has a workaround in it that just skips the roar state. I originally wanted to just disable the push/stun effect so that the player could still see the roar visual effect, but it was easier to just disable it at the time and look into that later
Yeah. The roar has a stun and slight pushback, so if the roar occurs as the player enters a room, they'll stun inside the transition and be pushed back through it or out of bounds
what does ER mean?
Enemy Randomizer
Just something to keep in mind if you encounter that sort of behavior with whatever you are trying to do ^_^
shrugs Was the only workaround I knew how to do at the time. Might be able to come up with something better now, but it works

Heh, yeah. I mean, it works XD
Just tells it to go to Roar End when it wants to Roar at the start
Yeah, that effect
Wouldn’t destroying it cause stuff to have null references?
I'll jot it down for later updates (whenever I get around to it again). Does this have any impact on stuns from mid-battle roars?
It probably does
if some mods require this object will cause null ref exception. but, you can just remove the action or transtion
K
Cool. Thanks for the info. I might be able to come up with a better fix for the issue in the future with that
is the 1221 windows modding api on the drive here (https://drive.google.com/drive/folders/1TSrchx3jl7b19Ltcip8Inwsaw_S-F1jM) up to date?
well, as "up to date" as it gets
Can you post the relevant error? I'm on phone so viewing .text is 🥴
the entire modlog's pretty short so I'll post the whole thing
[INFO]:[ModManager] - Initializing
[INFO]:[ModManager] - Initialized
[ERROR]:Failed to fetch url with error:
System.Net.WebException: Error getting response stream (Write: The authentication or decryption has failed.): SendFailure ---> System.IO.IOException: The authentication or decryption has failed. ---> Mono.Security.Protocol.Tls.TlsException: The authentication or decryption has failed.
at Mono.Security.Protocol.Tls.RecordProtocol.ProcessAlert (AlertLevel alertLevel, AlertDescription alertDesc) [0x00000] in <filename unknown>:0
at Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
at Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0
at System.Net.HttpWebRequest.GetResponse () [0x00000] in <filename unknown>:0
at System.Net.WebClient.GetWebResponse (System.Net.WebRequest request) [0x00000] in <filename unknown>:0
at System.Net.WebClient.DownloadDataCore (System.Uri address, System.Object userToken) [0x00000] in <filename unknown>:0
[ERROR]:[API] - Couldn't check for new version.System.IndexOutOfRangeException: Array index is out of range.
at Modding.ModHooks..ctor () [0x00000] in <filename unknown>:0
[INFO]:GameLoading
[INFO]:[API] - Trying to load mods
[INFO]:Saving Global Settings
[INFO]:Saving Global Settings```
Oh wait yea ignore that one. Its bc TLS 1.1/1.2 is dead, and that's what the api uses
It just means it can't check if mods are outdated or not
(or it TLS 1.0/1.1, numbers are hard. Either way deprecated and no longer usable)
1.0 is dead
then there's a different reason why customknight 1.2.0 isn't working...
unless it's just broken on this patch
I just wanna see how my spritepacker works 
Imagine if anything 1221 was ever simple 
I just beat the game with my audio program alone 😄 Not sure if this is the right place to put it, but it seems to have a mix of programming and toying around with HK, so I'll put it here. If this is the wrong place I'll remove it https://www.youtube.com/watch?v=HwN5ttEm7nc
In this video I will explain how I played hollow knight using nothing but sounds. No keyboards, mice or controllers required.
For this I used the following python program that I developed: https://github.com/chaosparrot/parrot.py
This video was edited using VSDC Free Video Editor. I apologize for the bad recording audio at times, this was m...
watched the first bit, pretty cool.
the final boss: going brrrrrr long enough to absorb the infection from thk.
Brrrrrrrrrrrrrrrrrrr
Radiance: you can't contain me
Knight: haha brrr go brrrr
do coroutines behave differently in 1221 vs 1432? they're exiting without warning for me
I've no clue how they work in 1432, but how are you instantiating them?
GameManager.instance.StartCoroutine in the mod class and StartCoroutine in a monobehaviour
What are you talking about?
I honestly ended up just using the gamemanager.instance.etcetc everywhere bc I gave up trying to have the monobehaviour keep it alive
No clue how inefficient that might be, but at least it let's my coroutine live
What's the easiest way of introducing a delay before an action in a FSM?
there's probably a better way than this, but putting a state in between the target state and the state(s) before it with a Wait action works
It doesn't work if the Wait is in the state before it?
weird. I tried that (using 2 states that already exist) and it doesn't seem to work
how do the transitions on those states work
best option is to disable the fsm, wait, then reenable the fsm and set the state
transition FINISHED -> End
[...]
action HutongGames.PlayMaker.Actions.Wait
HutongGames.PlayMaker.FsmFloat time = = 1
FsmEvent finishEvent = FINISHED global: False
System.Boolean realTime = False
System.Single startTime = 0
System.Single timer = 0
State: End
oh fsms, i'm not good with those
I wasn't increasing the time for the wait at all, just putting the action I want to delay on state "End"
Is the wait not measured in seconds?
why must it fight me
Okay so I got around to dpwnloading AssetStudio, but I don't know how to open AssetStudio. The README doesn't tell me either.
Okay so I got around to downloading AssetStudio, but I can't figure out how to actually open it. The Readme doesn't help me with this.
I downloaded it from github
no
So if I want to obtain the sound files, I select Extract, right?
you click open and select the assets and then get the sounds you want and then extract or w/e
Open?
Okay so I can now play specific audio files if I find them manually. Is there a place where all music files are stored?
I can filter by Audioclip but that's it.
no
I have to search each individual level file?
I loaded all of the files into one tree
That's not the issue though
Oh wait the Filter Type makes this easier
you just use the list and then go by audio clip
beyond that there's nothing else though really
Pretty sure there is even an open folder option
ye
I think that this resolves my issue.
I'm busy atm but I hope the files have loopstart and loopend tags
Shade Knight
send me all of those NOW :gunL
oh yeah pixel knight
oh
questionable
you can decrease the size of your window and then alt-enter to get a similar effect fwiw
also its only like 3 months ago it was in like oct
yeah
:monkahmm:
me when i forget an entire year
lmao
Q: Is AssemblyInfo.cs the appropriate place to version your mod?
Ah, okay, it looks like there's a "GetVersion" override, this looks to be what I need to use.
you can just make your GetVersion return your assembly info
Oh, dang, okay, I'll look that up. :''']
public override string GetVersion() => Assembly.GetExecutingAssembly().GetName().Version.ToString();
dang, way more concise than https://stackoverflow.com/a/909583
you can also make your assembly version auto increment
Yeah, I just saw that! It's v exciting. I had to put off determinism, but I didn't know what that did anyway, so ---
gl on that
@leaden hedge if you wouldn't mind a second attempt...
it certainly is
Stop
How does the color change in Absolute Inferno King Grimm work?
I wonder if i can make a mod too make pure vessle even harder
something of that sort exists, aka the pale prince mod
Oh no
Aight, I want to give a boss some HP shenanigans. What's the best way to track changes and such, to figure out best how to balance? The HP Bar mod?
Like giving it different phases? I check the hp on update and keep a bool for it I have already initiated the phase. Probably a better solution though
Come again?
I'm looking into moss knight behavior. Found "Moss Knight B-Moss Knight Control" using FSM viewer. "Initialise" state finds a child called "Evade Range" which should be an object of type AlertRange, which keeps track of whether the hero is inside a list of colliders. How can I find what those colliders are?
something has to create this evade range and add it as a child of the moss knight (which I think is just a Walker), but I haven't been able to find it in IL or FSM
how do I look at the scene?
evaderange only has one box collider
and alertrange just gets all colliders on the gameobject
@dark wigeon can you send me yor lastest ssdeav build?
version on github not working?
I just forget how to search it in github sorry
thanks
cool, thanks
Another C# question. I'm trying to have my mod thing spit out things into a debug log. I'm trying to use Tracer and tried to a) define it in the constructor (?? i'm still new at this, i think that's the constructor) and use it below, but it does not seem to make any files or write anything out.
If anyone has a second: https://github.com/jsal13/HKRDreamCatcher/blob/logging_debug/Mod/websocket.cs#L23-L24
(Usage example on 429. And yes, I need to put that long-ass dictionary into another file.)
🙃
might want to try just specifying the path in the constructor for TextWriterTraceListener
I'll try it out, thanks! :']
how come when I fade out the white blanker, only the center of the screen fades out
using this?
GameObject.Find("Blanker White").LocateMyFSM("Blanker Control").SendEvent("FADE OUT");
brb eating
yea
Hm, maybe try delaying that by a frame
I do
Hm
try having
GameObject.Find("Blanker White").LocateMyFSM("Blanker Control").SendEvent("FADE OUT");
EventRegister.SendEvent("GG TRANSITION IN");
BossSceneController.Instance.GetType().GetProperty("HasTransitionedIn").SetValue(BossSceneController.Instance, true, null);
at a point you're sure everything has loaded in
yea this is what I do
and it still doesn't work?
nope
that's odd
mind sending me modlog and outputlog?
what may be contributing (unsure if it's the only thing):
PlayMakerUnity2DProxy requires the 'PlayMaker Unity 2D' Prefab in the Scene.
Use the menu 'PlayMaker/Addons/Unity 2D/Components/Add PlayMakerUnity2D to Scene' to correct the situation
that has been there for a while so I dont think so?
idk what that's needed for, i just have it in my scenes to be safe
otherwise i'm not sure what the source of the problem is
Purely a C# question: if I have external CSVs in my project (eg, a long list of rooms mapping to their areas), what's the best way to use this resource (what Build Action / Copying should I be using?) and will this output an all-in-one DLL file that will be usable as a mod?
you can put the file as an embedded resource
in which case it will be an all in one
lol the problem was the opposite, I was delaying too much
i think for me it also worked if i delayed it like half a second 
maybe it's because I dont copy from one scene to another like you do
oh you mean the playmaker thing?
so ig adding the playmaker prefab fixed the blanker problem?
I didn't do that
I just removed a yield return null
first time removing a yield return null fixed a problem lol
Okay so I cannot find any in-game equivelant for the OST track "Pale Court". The track is basically a remix of White Palace but with more focus on the violin triplet melody.
I never did path of pain in game. Lemme see if it's that one.
I'll need a sec
It seems that Path of Pain plays the sorrow tracks that are also used when || the not final boss starts stabbing himself.||
I already found those five, which is not what I'm looking for.
I hardly did much of the postgame godmaster content so I don't think I would have found it ingame
Wdym
I don't know if it even shows up in-game
Tmk it doesn’t
It could be an OST exclusive track
Unused
Got this from looking it up 
Yeah, it's literally the first result when I googled it. :/
lol
Make moss charger but 2x bigger and faster, and deals 2 masks
Why?
Because I’m in school
I wasn’t talking to you tho
I know
I was talking to the mod makers
Your the only one?
No
You were talking to everyone, and I haven’t seen many people other than myself take up random requests so
You can’t?
I guess that’s fair
I can’t even play it since I’m not on pc
F
considering the fact that an artist came here with actual animation for new mosscharger attacks but got ignored, I highly doubt just making a boss bigger and faster will be accepted by any modder

Alright, if anyone loves critiquing code to make the coder a better coder, here we go. I'm not good at C#, I like trying to do best practices, and these things are at odds: if some peeps want to even just scan some of this code and give general comments / notes about what could be better, I'd appreciate it!
Websocket: https://github.com/jsal13/HKRDreamCatcher/blob/main/Mod/websocket.cs
Parser/Main: https://github.com/jsal13/HKRDreamCatcher/blob/main/Mod/item_loc_data_dump.cs
Main Folder: https://github.com/jsal13/HKRDreamCatcher/tree/main/Mod
Your C# looks like JS is my immediate impression. That's not bad, just not fitting overall.
https://github.com/jsal13/HKRDreamCatcher/blob/main/Mod/item_loc_data_dump.cs#L43
You could break this static function down. Make the dictionary definition static and plop at the top of the file. Make the spoiler text regex into its own static function.
the usage of var is kinda erratic
like if you're going to use var, this would be one of the cases where it's nice to not repeat the type twice
i prefer value ? "true" : "false"
god i love ternaries
private bool ShouldNotProcessEvent(string eventMessage)
{
if (this.ignoreEvent.Contains(eventMessage)) { return true; }
if (!(eventMessage.StartsWith("killed") || eventMessage.StartsWith("kills") || eventMessage.StartsWith("newData") || eventMessage.StartsWith("opened"))) { return true; }
return false;
}
you could also just replace this with return what you have in the if
this is severely overkill
private bool ShouldNotProcessEvent(string eventMessage)
{
return this.ignoreEvent.Contains(eventMessage) || (!(eventMessage.StartsWith("killed") || eventMessage.StartsWith("kills") || eventMessage.StartsWith("newData") || eventMessage.StartsWith("opened")))
}
unity's scene changed hook is more appropriate, you really don't need to detour the game's beginscenetransition for this
should do the same
also is it just me or are the indents kinda off
it's two-space
you can do using StreamWriter outputFile = ... and it'll close when it falls out of scope, which is the same as what you have here, also the if not having braces but the using having it is weird
also is there a reason you have the srRoomMapper/eventsToIgnore static
yeah i'd open/close those in the constructor, the lifetime on them feels weird as static fields that you close on first invocation of the constructor anyways
Okay, this is all amazing. I'm sorry I'm not responding fast, I'm at work, but I will read all of these when I get home.
Yeah, my daily drivers are Python + JS, so unsurprising that my stuff looks like JS.
Okay, so far, all of these are totally legit. I just found out about the scene change hook, so my next version will be using that --- one of the downfalls of not reading the APIs you're using! Also, wow, you all hate 2-space! It was default, I guess, in my VS, since I def didn't change anything. I'll change it tho.
I wish that discord was good at responding to all of them individually, but tl;dr, I'll be putting all of that in. All seems reasonable. I think the static part of srRoomMapper/eventsToIgnore was a remnant of a previous bit of code.
lol: this is the default i had, i have no idea why. changin' it due to popular demand.
Also, if y'all have better ideas about how to share code for critique, let me know. I don't know how to really do it besides doing a PR and having collabs which isn't really useful here.
Q: When should I be using var over explicitly using the type?
that's a matter of style, I like to do it when the type is evident enough
like var x = new T(); or var y = JsonConvert.Deserialize<T> or var z = (T) expr
but some people use it everywhere and other people use it nowhere
with c# 9 you can use target typed new as an alternative too
which looks like List<string> li = new()
Hm, so it's one of those things I should prob either use everywhere or nowhere.
At least so that it's not so weirdly distributed for me, a beginner.
There's essentially no reason to ever avoid using short types, especially value types.
I usually only use it for nested generics, like Dictionary<string, Dictionary<string, string>>, again where the construction makes it obvious and the type is distracting.
Okay, that seems reasonable. What about in cases like for (var idx = 0; ...)? Should I be using int?
I think that's generally helpful for anyone scanning over the code, but it's mostly preference.
It's easy enough to do. I'll prefer typing to not using var then, except in cases where there's long or nested types and the type is obvious from the right-hand side.
Alright, awesome, I've put all that stuff in, I'll test, and push. Thanks all, this was really helpful for me! 
(just chiming in to say I find explicit typing much easier to quickly read for me at least)
I'm trying to use the sprite script for Kitra to create a custom knight. I'm having problems though with pasting a .png on the Custom Knight Layer. Instead it creates a new paint layer. I'm also wondering do you need to create a new layer for each frame or is there a way to change the single layers animation based on its current frame reference? Is there a good reference video or guide for this? I was using https://www.youtube.com/watch?v=Rb8_Qvtdco0 as a guide but even at .25 speed its to fast to follow along and his docks are very different from mine.
An example of a workflow for creating Hollow Knight custom knight skins using Krita and SpritePacker by Magegihk.
Download Krita: https://krita.org/en/download/krita-desktop/
Download Spritepacker: https://github.com/magegihk/HollowKnight.SpritePacker/releases
Music: In a Sentimental Mood, Duke Ellington & John Coltrane
To create a new version of a layer on a certain frame, right click the square in the animation area for the layer/frame and select "create new/duplicate key frame". Dunno how to do this in bulk, or how to make paste not go to new layer
Also this is more a #modding-discussion ask; this channel is more for programming mods
Pasting always creates a new layer in krita
Does anyone have the github / name of a mod that you know makes modifications to audio (eg, replacing audio)? I'd like to see a template of how to do that so I know I'm on the right track.
Royal Dreamer / Godly Nightmares by Sid does add audio afaik
this isn't moddingdev but the experts on this topic only browse here so
recommend me a good arch DE
2nd gen ryzen 7, gtx 1070, 16gb ram
Oo, then unless somethings new has come along probably something like KDE, or KDE plasma or something
using plasma rn lol
Well then you're good to go 
Wtf I just googled it and apparently KDE is more lightweight than XFCE now, which was really the only other alternative I thought about 
bspwm
So, I was going through the game code and making some very basic mods and I happened upon some code that slightly confused me because it made my code not work. Why does Team Cherry have their NailSlash.OnTriggerStay2D just call NailSlash.OnTriggerEnter2D? I was trying to make some code that did stuff when the player hit stuff and the function kept getting hit on the same object every frame the nail slash was in the object and I was quite confused until I realized they were doing this. Is there a better way to determine if I just hit an enemy or other object for the first time other than Mod.Instance.SlashHitHook/NailSlash.OnTriggerEnter2D?
There’s probably a much better way than this, but if you are putting stuff into a on hook for OnTriggerEnter2D then I would assume the best thing to do to only detect the first one is set some bool to false in a on hook for OnTriggerStay2D and make it true the next frame so it differentiates between the 2 with that bool. Another way could be recreating the OnTriggerEnter2D code in OnTriggerStay2D.
somewhat pseudo code
OnTriggerEnter2D(collider) {
if collider is not from Knight or internal_bool
return
internal_bool = true
}
OnTriggerExit2D(collider) {
if collider is not from Knight
return
internal_bool = false
}
Completely forgot about trigger exit
That's not quite what I was trying to do. I'm trying to only deal damage to each target hit once per attack instead of once per frame. The current code in the OnTriggerEnter2D makes it deal damage every frame. However, I do notice that the code in OnTriggerEnter2D only seems to do knockbacks and pogos and stuff and not damage so I'm assuming the actual code that deals damage to enemies once per attack is somewhere else. To get around this issue I'm just going to move the current code in OnTriggerEnter2D into its own function and have both OnTriggerEnter2D and OnTriggerStay2D call that function instead of OnTriggerStay2D calling OnTriggerEnter2D.
I'm looking to replace audio files as a mod... how easy would this be to do for someone who's never modded anything 😬
like hit sounds etc
The first pin in this channel is about how to replace audio
You might want to check that
thankye
No problem
Yeah, I was looking through the pins for something else and happened to notice that info in the pin
wait what, the first pin is about a dnSpy alternative wrong first, but that way is not the best way, as one would have to replace game files to make the changes
to give an example: Royal Dreamer / Godly Nightmares by Sid does add audio afaik
I looked for this github before, I remember, and couldn't find it. Is this the author? https://github.com/Sid-003?tab=repositories
yes, but afaik the source code isn't online
why the fuck did i miss this https://github.com/SFGrenade/SFCore/blob/master/MonoBehaviours/PatchMusicRegions.cs (a way to change / create custom BGM triggers)
i mean it's not difficult, it's just annoying to find the states that controls the audio and shit because you know tc is very consistent
also the code for markoth mod is shit, i wouldn't want anyone seeing that and using it
🤔
I saw the code in dnspy when editing it to try it in a pantheon. Can’t tell if it’s better or worse
okay, i thought i was crazy because i was having trouble figuring out the audio states. whew. :']
Hey, guys! I'm completely new to this Hollow Knight modding thing. In fact, I'm not a mod developer, I'm a translator and I want to translate Hollow Knight into my native language. For some games, translating can be as simple as going into the installation folder, finding the localization files and going to town. When I did the official translation for Black Mesa, the developers even sent me the string files and then took care of putting the string in-game once I translated them (that was nice).
For Hollow Knight, things are not quite so simple - the game files are packed in Unity's .assets files. I was wondering if you guys could help me and point me in a general direction of what I'd need to do to unpack localization files from Hollow Knight and then put them back in after I'm done with them. Links to any tools or documentation would be much appreciated!
UABE can extract them from resources.asset
they are like EN_<something>.txt
you can make a mod that does a dictionary lookup so you don't need to replace files
UABE can also repack, but you'd have to overwrite a language
That would be a great solution. Much more elegant than having the user paste the modified asset bank over the original files. Can you give me any guidance on that?
so theres a hook called LanguageGet
that has a key to lookup
and you can just return a different string for each key
the mod should be pretty simple assuming your language uses latin characters, just because of fonts
public class Translate : Mod
{
public Dictionary<string, Dictionary<string,string>> transData
public Translate()
{
transData = new Dictionary<string, Dictionary<string,string>>();
//load transData from a file or hardcode it here
transData["sheetTitle"] = new Dictonary<string, string>();
transData["sheetTitle"]["aKeyToBeReplaced"] = "translated line";
//etc
ModHooks.Instance.LanguageGetHook += Instance_LanguageGetHook;
}
private string Instance_LanguageGetHook(string key, string sheetTitle)
{
return transData[sheetTitle][key];
}
}
sheetTitles are things like ui/npc dialogue/boss name etc
keys are the actual id of the string to be replaced
if you need any guidance on building a mod, https://radiance.host/apidocs/Getting-Started.html#creating-mods
My language does use latin characters so font hopefully won't be an issue (unless Hollow Knight's font turns out to have issues with accented characters like é, í, č, ř, etc.)
if they are included in other langauges in game, it should be ok
foreach (string text in Language.settings.sheetTitles)
{
Language.currentEntrySheets[text] = new Dictionary<string, string>();
string languageFileContents = Language.GetLanguageFileContents(text);
if (languageFileContents != string.Empty)
{
using (XmlReader xmlReader = XmlReader.Create(new StringReader(languageFileContents)))
{
while (xmlReader.ReadToFollowing("entry"))
{
xmlReader.MoveToFirstAttribute();
string value = xmlReader.Value;
xmlReader.MoveToElement();
string text2 = xmlReader.ReadElementContentAsString().Trim();
text2 = text2.UnescapeXML();
Language.currentEntrySheets[text][value] = text2;
}
}
}
}
is the function the game uses to load the xml files for localization data, so if you keep the format the same, you can use that to load them in
just sheetTitles are hardcoded
I just realized the "Poor Translation" mod includes all the original text assets as well 🤦♂️
They're nicely formatted, too
Now I need UABE only to find the asset ID (I think)
you won't need the asset ID
if you look at EN_UI
the sheetTitle should be UI and the keys are stuff like CHARM_DESC_39, INV_DESC_HEARTPIECE_NONE etc
EN_sheetTitle and <entry name="key">
I see what you mean
how good is your c#
Never used it before
trying to make something similar to customknight just for languages
i mean it should just be add a folder somewhere called Translate/Language
then another folder like EN / JP etc
then have each language file in there
thinking of just having a folder, in which are jsons with whatever name the language should be called
dont really need a json
just have a file in the folder, like UI.txt
but call it something like mod.txt
wtf
the TRANSLATED_EN_x are in a different format
i mean thats the exact same, except you've merged multiple files into one massive file
and i can load this easier
i mean the difficulty of iterating over a folder directory so translators can give people one file to translate, is probably easier than getting translators to understand how to avoid merge conflicts in one big file and to care about using git
i'd personally split it more, just because of the target demographic
I tried the "brute" method of just overriding the English text assets with UABE to try how it looks. Mostly good, unfortunately some letters are missing. Can't blame the devs for not creating all UTF-8 characters
you'll have to download unity, the font they used, and textmeshpro
and generate text sprites
or any font you want, but it'd look different
because the way textmeshpro works is you only give it the characters you want, so you dont have 8000 characters in your spritesheet
surprisingly easy
nice BG
at least you didn't have to see the Fortnite logo
the fortnite logo wqs great
we're no strangers to (i apparently voided out in the end)
https://github.com/SFGrenade/LanguageSupport/releases/tag/v1.0 if people want to have fun with it
does Hornet have weird position setting
oh she has a ConstrainPosition component, ffs
anybody know why Hornet's needle might not spawn as a child gameobject? it's not there when I print out her hierarchy tree and it causes her to break when she throws
ig for context, I'm just instantiating her
Boss Holder/Hornet Boss 1/Needle just doesn't exist it seems
ask in #modding-discussion
also customknight skins are expensive and can cost more than 100 dollars
its not easy to make skins
Ok sorry
its fine
*casualy gets back to playing hollow knight *
so, how to load the text sprites you generate? and can I generate them by using Unity 2018.x? because i can't found TMPro for unity2017.4.10f
you need to setup a TMP_FontAsset and load it in ChangeFontByLanguage.SetFont
its serialiazable so it should be saveable to a json and out from a json
looking at it, you need either the same version of tmpro and unity to make an asset bundle
or you're going to have to manually turn it into a json, and then make a fontasset from that json because they've changed the font asset class
you'll also need to load the texture2d atlas
i tried it on a random font i had, and got this, which looks like enough to rebuild a fontasset in code (not including materials+textures)
thanks, i'll try
how to make Monomod say which line it failed, it just tells me that something is NULL
show
trying to make SupportedLanguages and TestingLanguages obsolete, so replacing all of those with LanguageCode, and some method apparently didn't like that
also figured verbose out btw
update it
shit's shit, i'll just expand the original enums
ok, this is breaking, just trying to load mods a bit earlier (not the preloads tho)
like i'm just trying to hook On.Language.Language.cctor (which may be a static constructor, but who cares)
So, quick question; why does the Mod class overwrite the SaveSettings property with a new instance when the scene is changed to the main menu? It took me a bit to track down exactly why a pre-filled list in my settings class was turning out to be empty :P
before it just stayed at the old value and then you'd load one save and quit out and load another and it would result in the values staying anyways if the save didn't have something overwriting it
like if you loaded a save and then went to another you'd just keep your settings and so you'd end up just hooking the scene change for the main menu to reset the settings so that doesn't happen
which isn't something you want in every mod
if it's prefilled then you just set it on field init or in the constructor and it should work fine
Ah, that makes sense. Yeah, the problem is I was initializing global settings or save settings based on a value and the settings class itself doesn't know whether its a save or global settings - I ended up just making the default constructor assume that it was for save settings.
this is too similar to something I was planning to do and I don't like it 
Wait I think I forgot to turn off the ping
Damnit
sorry grenade
Say goodbye 
without a LanguageGetHook
Wait what are we seeing here
easiest method now that i got things working
how come the crack isn't bright like it's supposed to be
at first I thought it might be the z, but I brought it forward and it looked the same
versus
the light is just a part of the sprite so I dont understand what's happening
sprite opacity?
if the colour on the material is like 1,1,1,0.1
it'd look like that
ah I set the color of the spriterenderer to 1,1,1,1 but didn't think of the material
will try that
rip setting the tint to 1,1,1,1 didn't change anything
try changing On.SceneManager.SetLighting
yea that fixes it but it messes up the scene
ok so its scene lighting 
try another shader or sprite sorting layer id thing
are you making it from scratch?
change shader to default sprite one
you want a shader that ignores
RenderSettings.ambientLight and RenderSettings.ambientIntensity
cool thank you
probably unlit/transparent
works fine
apparently its just sprite/diffuse that does it sprites/default or unlit/transparent should work fine
they were using Sprites/Lit
If they keep using 2d toolkit they shouldn't be using anything past 2018.4
because they decided to
hot
W a i t
that's just thk fsm 🙂
true
They're trying to tell you something
Is it a known issue that if I make a custom charm using the charm helper, equip it, save and reload the game that the charm notch calculator won't take my custom charm into account when displaying how many notches I've used?
Also, what are the sizes of charms supposed to be art wise?
It looks like the linked issue has to do with my equipped settings not getting saved between loads of the save so I must be doing the actual saving wrong somehow
Yeah
Suppose I want to reskin a generic enemy
But every instance of it
How would one go about and do that?
https://radiance.host/apidocs/Hooks.html#onenableenemyhook and filter the gameobject according to name would be a possibility
its.. not out..
go to australia and rob a build
I have no idea how this is supposed to be at all related to mods let alone to their development
56 making the classic mistake of assuming a build exists 
🥴
make yourself a personal copy of it
Aight, thanks
And we can assume they all have the same name cuz that's how it works and thank god for that
I'll look into it, I guess, and come back later with more questions
i think all aspids have names like Super Spitter (1), with the last part ( (1), including the space) not there for the first in the scene
Hm, cuz copies and stuff?
Wait
How does enemy placement work in Hollow Knight
Does it spawn them in upon entry or do they exist in the scene when it's loaded?
If you get my question
the enemies are already in the scene, though i have no idea when specifically the hook is called
Hm
The reskinning itself should be replacing their texture with a recolored/skinned version of the ripped spritesheet right?
hey i'm new and i have a question:
is there a unity project available?
for hk?
or just the game files?
Hello?
What exactly do you mean?
yes
just the game files, but given tools, you can create a unity project out of the game files
what tools?
A lot of tools are scattered over the documentation pages
ok thanks.
Is there a tool that does !!everything!! to a unity project?
utiny ripper can create a unity out of HKs game files
ok thanks again.
Updated?
na, just an example of utiny ripper in use which is what Davidb might want to look at
Ah

That's sort of rad
ooo are you updating the shade mod?
I really like that, if I ever can I will download
That looks awesome 👍
Haha, I'm so dumb, I thought the keyboard in the corner was the mod. I was like "wow this is neat."
Touch screen hollow knight when
sure
you write them in C#
or with unity I guess if you really want to do it that way
it's installed when you run the installer
and is also...
?mods
Mods
Google Drive with Mods - https://drive.google.com/drive/folders/0B_b9PFqx_PR9Um9MeFZMV21oWGs
Installer - https://radiance.host/mods/ModInstaller.exe
Mod Summaries - https://docs.google.com/document/d/1cz5tcggpGofrBcM90XyTkMWjMelDHzugvQM6HpB13Ew
on the drive
For mods that work with randomizer: I'm trying to get a good way to see if a user has started a new game (as opposed to loading a save). I've had a few "eh" solutions to this, but I'm finally looking at the SceneManager.activeSceneChanged hook.
Do y'all think that it would be enough to look for a transition Menu_Title to Tutorial_01. I can't think of a case where this would be able to come up except for a new game.
no
make a new save
die to tiktik
quit out
open save
there's a NewGameHook for non-rando saves, and you can do On.GameManager.StartNewGame for both rando and non-rando saves
Ah, that's fair. I guess it would get messed up on my tracker if they got the fury item then died which, I think, brings them back to tutorial_01.
I didn't know that there was a On.GameManager.StartNewGame hook, so lemme try that out, that's exactly what I need.
Alright, I tried the following:
public void HandleStartNewGame(On.GameManager.orig_StartNewGame orig, GameManager self, bool permadeathMode, bool bossRushMode)
{
orig(self, permadeathMode, bossRushMode);
Send(MakeEvent("game_level_event", "game_level_event", "new_game"));
}
But it kept freezing the game at the screen right after the rando new game screen (where you pick stuff) and never got to the Tutorial_01 screen. If I swap the order, it'll give me an error since I'm trying to read the spoiler log which isn't created yet (or is being created, I guess).
I can't think of a way to make this nicer (putting a "sleep" command didn't help much), so if anyone has any ideas, lemme know. I think it might be okay to use the scene transition thing since the edge case for that is so niche that I don't think it'll come up for rando players much --- and if it does, it will only affect the tracker if they check Fury and then die, and only then if it has an "important" item ---
the edge case for that is so niche
If they quit to menu and then return to the game while their bench is KP, then that will also count
That also goes to Tutorial_01?
Tutorial_01 is King's Pass, so if their bench is there I assume that that's where it sends you 
Oh, like, if they never pick up another bench or something?
yeah - but also you can benchwarp to King's Pass
(Even though there isn't an actual bench there)
Ohh. I understand.
Ugh, okay, I COULD combine this with one other event which is like "firstTimeSeeingCutscene" or something, but yeah, point taken. It's a hack, to be sure. Lemme see what errors I'm getting when I get a frozen screen for the HandleStartNewGame, since that's the ideal hook for me to use.
openingCreditsPlayed is what I was thinking of in the previous thing; it seems to only play on the New Game start. Still, a gross hack.
make a coroutine and wait in that
yield return null;
waits a frame
put it in a while until the game is in the state you want
a sleep doesn't allow other parts of the game to advance, it just pauses the entire game
Ah, okay, that makes sense since that's exactly what happened. Okay, I'm gonna haft'a read up on coroutines. But the gist would be: make a coroutine that waits for some event from a hook and then does the stuff I want?
not a hook, or you could just hook that event
but you can check a variable every frame
Got'cha. Okay, I'll mess around with this and see where I can get! Thank you!
you need a monobehaviour and gameobject to run them on
so I'm trying to make PV not hud out on death using Vasi, is there any way to do this with reflection?
their corpse is tied to a corpsePrefab field in EnemyDeathEffects, but I can't seem to get it working with the following code:
GameObject corpsePrefab = Mirror.GetField<EnemyDeathEffects, GameObject>(
GetComponent<EnemyDeathEffectsUninfected>(),
"corpsePrefab");
corpsePrefab.LocateMyFSM("corpse").GetState("Music").RemoveAction<SendEventByName>();
Mirror.SetField<EnemyDeathEffects, GameObject>(
GetComponent<EnemyDeathEffectsUninfected>(),
"corpsePrefab",
corpsePrefab);
this would also help me make WD not teleport the player to the waterways after dying
Does anyone here know how big in pixels new charm images are supposed to be?
nvm I should've been looking at corpse instead
fwiw the set is redundant
🙂
@mystic umbra At the wiki its 50*50 but I dont know if thats also like that in the game.
Thanks! I was actually able to get the correct proportions from #art-discussion since they had the actual sprite sheets for the charms
Now I just need to get a good idea for the charm art since my previous ideas turned out to either be too busy or looked terrible
What charm are you making?
Let me give you the fancy in lore description of it
Title: Weaver Whetstone
Description: A whetstone used by a merciful Weaver whose opponents often left with their lives, but never with their geo. \n\nThe bearer's nail will deal less damage, but they will gain geo with every slash.
All the code is done, I just need to make the art for it
It was my first mod so I made it as simple as possible. I've already got an idea for my second charm which will be a bit more in depth
Maybe something with Geo and six eyes?
That's what I was thinking as well. My initial idea was to make a whetstone in the shape of the geo symbol and put the Weaversong eyes onto it. Doing this though didn't really work. The proportions of the geo symbol don't work too well with the positioning of the eyes. Simplifying it made it look too much like Weaversong too
You could use the geo that is 5 geo worth
Potentially, this is the image used on the wiki https://cdn.discordapp.com/attachments/391435697581457408/806054153381609512/unknown.png
Maybe I could do the whetstone idea and have two copies of each geo symbol ascending from the bottom to about halfway up the whetstone. Then in the center have nail
im actually kinda interested in doing the art..
Maybe something like this except not terrible looking. There is a lot of deadspace at the top though. I was also thinking of giving the geo and nail an etched look so it seemed like they were etched into the whetstone
The Weaver symbolism is kind of subtle here. There are six geo symbols mirrored down the center
I also had an idea at one point to do a money eyes kind of thing where the geo symbol was masked in the shape of weaver eyes, but that just looked super weird and didn't read well
The only other Weaver symbolism really used is the thread and silk spools, but silksong uses that a lot so I don't know if I want to retread that
https://paste.mod.gg/wugegoluka.cs anyone know why this isnt making crawlids go way faster
what is the default speed?
4
idk
ok i guess it works on every crawlid except the first one in kings pass
for some reason
Concept Sketch for Mantis Knight Skin
ok
what language of programming do u use for the mods?
C#
nice
should I learn how to code with C#?
I am learning Python rn, so I dont think it'll be useful
any programming experience will help
knowing some Unity knowledge would be fine
As long as you understand how to read one language of that style (like python for example) you can pick up c# or any other similar language from other code and just testing and trying yourself
is it possible to modify game object atributes of something using the gameObject variable that is in a lot of the PlayMakerFSM's
