#archived-modding-development
1 messages ยท Page 533 of 1
okay, that makes sense. is there ever a need to modify things other than just main though ?
things
?
there isn't that much you need to care about, other than maybe for the blurplane
sorry my bad i wrote music instead when i meant main
oh
public AudioClip Main;
public AudioClip Action;
public AudioClip Sub;
public AudioClip Tension;
public AudioClip MainAlt;
public AudioClip Extra;
basically what do these others do
other channels for dynamic audio, like the extra track that playing in arenas, or the layering in path of pain
the chosen audiomixersnapshots affect how all of those are played
so when i select main only and transition to it i basically mute out all other stuff ?
yes
so i could have like "crowd cheers" set in my Sub audio clip and transition to an audio mixer that lowers main a bit and increases volume of sub, whenever someone does a PVP kill for example?
yea, though the colosseum afaik does it with audiosources
that it tells those to play the cheer sound
but both are options
okay gotcha now i sortof understand the excel sheet lol
so if i want main and sub i go for "normal" audio mixer
yes
thanks!
Uhm what was i supposed to do again
I think i have to select hollow_knight.exe
Nvm fsm programs keep crashing
avalonia?
Yeah
damn
The normal fsm thing also keeps crashing
im gonna debug the normal fsm viewer if there is something wrong that keeps crashing it
Fsmviewer keeps crshing
oh sad
this is the reason?
Yeah
hm
Apparently
for both?
I haven't tested avalonia but it also crashes
cuz avalonia doesn't crash for me at all
Wait
what's that reason even mean
How do you view fsms in avalonia
like, what does that line cause
like in the first fsmviewer?
Like, the only thing that's in avalonia is "open" and it requests me to open a file
have you tried the latest fsmvieweravalonia
Should be this
yes
wrong chat lol
because it takes two seconds to change your postbuild to include a folder (note that the msbuild copy task generates missing in-betweens), it promotes practice that shouldn't be used for encapsulation, allows me to sidestep the issue of 1.4 mods more cleanly, and makes distribution of mods generally simpler in that files cannot conflict and folders are entire units which can be removed
I don't like loading subfolders because it makes unmanaged dll handling harder as it'll attempt to load those and throw as it did with discord rpc
So how does one create a mod?
oh yea, now i can make a managed mod that loads an unmanaged one that is basically the entire mod then 
yeah
Ah, thanks.
and if you really can't imagine making a folder in-between for every mod then you can ignore it by just making a dev folder and throwing all the mods in there
but i'm not gonna do that, too much can go wrong and checking if a mod does what it's supposed to do will be too difficult
when using a dll to load scripts in unity , should i use the same mod that will contain the asset bundle ?
like compile once => get dll
use dll in unity => create asset bundle
compile mod again with asset bundle in resources => get final mod dll
will unity know to look in my mods namespace , considering that when the game loads there will be 2 dlls that contain the same namespace if i go ahead with shared project and not a core.dll?
Well, thanks for the explanation at least
the only thing unity cares about when assetbundling:
(- name of dll) (i'm not sure on this one, but likely)
- namespace/typename of monobehaviour on the object
- values of said monobehaviour
which is why i recommend 2 different assemblies for working with custom scenes:
1 exclusively for unity, with only monobehaviours, 'nothing' with HK (as in: no references to assembly-csharp)
1 as the final mod, with everything
if it cares about the name of the dll then i'll need to make my dll name that i load in unity the same as it will be when it is a mod ?
or is that no longer a concern when the asset has already been bundled ?
i do that, i don't really know if it's necessary though
i can experiment with a different name,
i do worry that having my shared project setup might break if 2 mods create 2 scenes each wanting a different "version" of the same monobehaviour in the same namespace.
i mean, you can look how sfcoreunity.dll is basically the same as sfcore.dll, just with only monobehaviours and no methods
and renaming it to sfcore for unity, doing stuff with that and using the resulting bundle with actual sfcore works just fine
so here's what i am doing rn for the sake of experiment
also makes my vs solution look funny
Probably just checks the assembly name
these are 3 dlls of the same mod with different namespace for the mod itself (each with their own copy of 'DandyCore')
unity only shows me 1 here
so which dll's DandyCore got loaded ?
DandyCore is the namespace here
just pick a type of that and watch the errors
i could probably reduce the unity-exclusive things with fancy stuff in the csproj, but effort
this works even if i use the compiled mod with references to the modded Assembly-Csharp
it cries in the editor but works after asset bundling
last time i tried with actual mod assembly, unity just crashed when i updated the mod and reloaded it in the editor
my problem is idk what version of DandyCore this is here & what version it will be when the game loads with 2 mods each with their own version of it
that's fair i have yet to do this lol
add a monobehaviour that only logs its full type and see which gets logged with multiple mods ig
i actually don't know what would happen
how can i log it's full type ?
i am willing to experiment
private void Awake() {
Modding.Logger.Log("Type: " + this.GetType().FullName);
}
or something
okay i shall be back with results
is there some sort of black fader that gets activated in the junk pit? it covers the screen when I teleport to it
no
oh, it has a giant fade thing that is also used for secret areas?
idk it just kinda exists
GameCameras.instance.cameraFadeFSM.Fsm.SetState("FadeIn");
var gm = GameManager.instance;
yield return new WaitWhile(() => gm.gameState != GameState.PLAYING);
yield return null;
PlayMakerFSM.BroadcastEvent("BOX DOWN");
PlayMakerFSM.BroadcastEvent("BOX DOWN DREAM");
it has a blanker on the right side
could it be because my dreamgate's there?
I'll change it and see
nope it's a GG_Waterways thing
i assume my thing didn't work?
testing it out now
try, maybe additionally, broadcasting UNCOVER as well
because that's what the maskers want
worked, nice
gg
_waterways
true
btw, i assume mi2.5 won't really be released with only 2 mods in modlinks?
i can add howwowknyight
then you have 3
i can ask mulhima and dandy for ck and debug
if i add my mods we're at like 25 then
ye lol
italy, add all your mods too, i need gatling crystal aspid
i need every variation, chosen randomly
or all of those as seperate mods
bigger number = better person
then bother tomorrow
watching my pc burn after clicking "open scene list" in fsmviewavalonia was a fun experience
https://github.com/hk-modding/api/issues/66#issuecomment-895513430 smh, no single line Copy
the normal open thing also doesn't work
does it glob
yes
wdym by glob
https://github.com/SFGrenade/SFCore/blob/master/SFCore.csproj#L18-L32 this works, so idk, didn't test it
what i did :
- added dll with namespace Futbol & DandyCore in unity => created assetBundle
- compiled a new dll with namespace changed to Futbol2 & DandyCore
- compiled another dll with namespace changed to Futbol3 & DandyCore
- copied only Futbol2.dll & Futbol3.dll into mods folder
-> game complained about not having the monobehaviour.
-
renamed Futbol3.dll to Futbol.dll => game still complained
-
compiled a new dll with Namespace Futbol & DandyCore , copied in mods folder
-> it worked, and Modlog containedType: DandyCore.WhoAmI
if all it needed was DandyCore from the file Futbol.dll then when i renamed Futbol3.dll to Futbol.dll it should have worked, right?
<Copy SourceFiles="ReadMe.md;$(TargetPath);$(TargetDir)/$(TargetName).pdb" DestinationFolder="$(ExportDir)/$(TargetName)/zip/" /> is single line with 3 files
fair
the online one is not even the updated one with mod folders i just noticed
<@&283547423706447872>
<@&283547423706447872>
?mute 12h 265869087975014411
Please use a valid limit less than 14 days. ex. 3m, 2h, 1d
<@&283547423706447872>
I couldn't mute the user. Make sure the Dyno role has Manage Roles permissions.
lmao
despises me
nitrogen
you tried to mute that person for around 8.4 billion years
fun
wrong parameter order feelsbadman
in seconds or planck time? 
ICYMI , pls help i do not understand what experiment i just ran and what this means
i'm useless in everything other than linking people to stuff
seems like it does check for some things to make sure that futbol is futbol, even if another internal namespace is used
do you just ref like every unity dll
yes, if that's towards me
was easier to copy+paste into every csproj
lmao
alright so if i can't do shit in fsmview/fsmviewavalonia, do i just log stuff into console and expect a mess in the bottom left of my screen?
idk how vs would handle that tbh, probably would still do the normal relative link if i'd add another one
yeah
another interesting observation :
at one point in my code i do this
GameObject go = GameObject.Find("dc_"+sceneName);
// if null create blah blah
var customScene = go.GetComponent<CustomScene>();
if i load both Futbol2 & Futbol3 , obviously the one loading second finds the go, but then the component is null for it (even though they're both DandyCore.CustomScene just from different dlls).
YEP
what is futbol
a game where you hit a ball with your foot
or this
yes
and yes
partial yes it is a nail here
oh, for hkmp?
when were you able to make custom save art for areas in-game?
always
so this was a feature in modding api since the dawn of time or a specific core mod?
yes if i can ever get the ball to sync without a custom build of hkmp
nothing, actually coded per mod lol
i did it as a fun thing to do in early 2020, though idk if i was the first
you could manually do it if u used an unused map zone, but DandyCore allows me to set save art based on scene name
lfg
this was a big help in researching how to do this tbh
i just wish there was something to make the unity scene making not a pain in the ass
or maybe there is
or if u want to manually do things read sfcore and watch salehs video
have to rely on automatically cropped sprites, hope they are the exact same size as in-game, then preload objects
basically the same lol
yes, but make sure you set the pixelPerUnit to 64
๐
more or less yeah
sigh
how horrific now 3 children will die
I'm 3 children
i forgor ๐
in doing all this research i also found 56's youtube
then go on a diet
my condolences
https://www.youtube.com/watch?v=auuDqiRi7uQ this is way better
how do you even preload acid
get gameobject of it
oh 
also perfectly shows iframes on enemies
i think i still have the video of the first time i actually got custom music working
found it
both 1432 and 1.5 versions
vignette looks deep fried to me for some reason even though it may not be
in the video
it's definitely something
and it's loud af
it's deepnest color correction curves in the kingdoms edge scene
my ears felt like they were dying
have you tried turning your volume down?
74% ๐
meanwhile i'm here at 24
i forgot i left it at 74% lol
i get it my bad
damn i wonder why didn't i use this when making stuff in my mod
pretty cool
so , i did a this.GetType().AssemblyQualifiedName instead of this.GetType().FullName
and that got me :
Type: DandyCore.WhoAmI, Futbol, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
The assembly-qualified name of a type consists of the type name, including its namespace, followed by a comma, followed by the display name of the assembly. The display name of an assembly is obtained using the Assembly.FullName property.
maybe that's how it works ? unity ensures Assembly.FullName also matches ?
I'm just gonna create a testing mod that would log stuff in the modlogs
and if i load 2 dlls in unity i can add DandyCore.WhoAmI from both of them on the same GO
and print this
[INFO]: Type: DandyCore.WhoAmI, Futbol, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
[INFO]: Type: DandyCore.WhoAmI, Futbol2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
so i can safely use DandyCore the way i had planned
these probably have the same assembly name? right now my theory is that is how unity decides it has the right dll
fsm view avalonia will no longer crash on fsms with missing node connections
a
what
Just say that the mapi had a breaking change. Time to try and tell rusty how to insert it into the game and the downloads folder 
wha
grenade where are the mi2.5 modlinks again?
<Windows SHA256="9866A9023181C27B599B46E259798580E5EAB76DE343E95E3B1E98D3F820CAE0">
<![CDATA[https://github.com/HollowKnight-Modding/HollowKnight.Modding/releases/download/v1.5.68.11808-61/ModdingApiWin.zip]]>
</Windows>
would you think it matters which api version i reference?
if not i'll just take the latest release
take the latest, can also PR it into the modlinks if you want, otherwise i may do that later if i don't forget
k
i'll just take this one: https://github.com/hk-modding/api/actions/runs/1109205688
do i need the SHA of the zip or the dll?
the zip that the installer will download
yea
<Manifest>
<Name>HowwowKnyight</Name>
<Description>Twanswates aww of de text in Howwow Knyight into de much supewiow UwU wanguage, incwuding menyus, usew intewface and in-game diawogues! >w<</Description>
<Version>3.7.5.0</Version>
<Link SHA256="b8be2445f5ce7d9f7a3a5c2d1ce39e11f3275a041127b984804a8ce78b5f92b4">
<![CDATA[https://github.com/DDRM-VGV/HowwowKnyight/releases/download/3.7.5/HowwowKnyight.zip]]>
</Link>
<Dependencies />
</Manifest>
```should work then right?
looks about right
ok i'll make a pr then
while you're at it, can you remove 22 - 24 (the files thing from the comment)?
as it's not needed since like 6 hours ago
<Files>
<File><![CDATA[Test Filename]]></File>
</Files>
```?
yes
k
thx
deepnest_east_hornet
Where'd you enter it from though?
deepnest_east_12
no? it's already there, that's the normal way you get kingsbrand
before you get kings brand, it may have less ash lying around
Hm
saved
the release doesn't contain any files
just go to actions
I'm in here, there are two actions
However, even if shouldTurnInLunge is false, it logs the last line in the image
even though it should come definitely after the BoolTest
Also, the FaceObject seems to never happen, no matter the results of the bool test, while the method below always happens
Basically, seems like any action I add simply doesn't function correctly, while methods are fine
Any ideas what the problem is?
what is should turn in lunge
Wdym?
is it re evaluated every time the action happens
Yep
that doesn't count
it's a bool
a value type
given to an fsm action by putting it on a field
it won't update the other one
make it an FsmBool and set the Value
but you're saying its stuck using a specific value?
Aight, thanks
Oh wait I think I get where you're going
IEnumerator F(int x) {
while (true) {
Log(x);
yield return null;
}
}
StartCoroutine (F(x))
yield return new WaitForSeconds(2);
x = 37;
setting x to 37 doesn't make it stop printing 3
because primitives/structs are value types
np
Ooh, thanks
Can I just reference Vasi and use it?
yeah
Is the one you released 13 hours ago alright?
Wait I already have vasi 
What's vasi even mean?
Modding staff
yeah
what are you gonna do to that fence
I N S P E C T
oh the map shiney that u stole from divine
funny words
visual vasic
true
vasid on what
I just didn't want to name another mod ___Core

where assets if not github?
putting binaries in a repo 
true
but here they are: https://github.com/SFGrenade/AdditionalMaps/tree/master/Resources
sure, we dont source control them there but then whats the better alternative ?
yeah i've already seen that and hence ask
idrk, the only repo i work with that has binaries in it is because those were there before i started, so i just keep them, even though it takes like an hour to clone the repo. others are 1 man projects, so i can keep the assemblies on my machine
right but now if i try to clone your repos they dont work ๐ฆ would you / do you include the necessary assets in a a zip with a release tag?
i can try
are you fixing up additionalmaps so I can use fastteleport with it
50%,
i'm fixing it up
oh yea, i can try fastteleport
it was attack to teleport, right?
no you just use your mouse, the cursor shows up when you open your full map
but how do i teleport
click
ok, i think i broke it completely
using the 1.5 version?
none
doesn't work without other mods, probably needs preloading
lemme install the latest api and see if it runs
it might be the save i used that somehow broke the map screen
hm, clicking still does nothing
๐ค

it reads possible null reference return value or similar
hm, nah, it's fine
Assembly location is nullable?
Shhhhhhh pretend it is
when hovered, vs tells me that: "Location" is not NULL here
null if path denotes a root directory or is null.
bottom thing:
"Location" is not NULL here.
yeah but it could be in C:\
i'll just glimpse over that ig
the ?? throw thing did get rid of that
_dir = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? throw new DirectoryNotFoundException("I have no idea how you did this, but good luck figuring it out."), FOLDER);
no
so much effort
I worked on it yesterday
it has the whole version store to update meme
improved di usage
moved the thing to an installer class and abstracted everything to interfaces
I need to start adding tests
you know Microsoft doesn't have a decent filesystem abstraction by default
kinda annoying
Imagine testing code
Too bad you canโt really add tests to the api
god dammit
What are you doing? Going through all suggestions for the mapi?
nah, going through resharper for all my mods
across ~32 projects it's only like 1052 spelling mistakes
thanks resharper
np
why is incorrect
looks like your references are wrong
are you referencing a modded assembly-csharp?
intialize
oh intialize
also are you putting using Modding; at the top?
modded?
is your game currently modded or vanilla
i put and its like that only the initialize is incorrect
initialize with big i
like if have other mods instaled?
whether or not you have the modding api installed
which you do
yo
how to build a map
from zero
with no knowledge else than knowing how to install a mod
i wanna build a platforming challenge
also i can't code
<@&328354344313421825> (idk if this role is supposed to be pinged for help, if not i'm really sorry)
you are now really sorry
you don't need to know how to mod for a basic platforming challenge though
i mean
There's a mod called DecorationMaster which let's you make your own though it'll be in normal levels
mmh
for a new scene you have to use unity and such
i never ever saw a modding staff ping and this is the first time
I HAVE BEEN SUMMONED FROM DARKNESS
gradow when is mi4 coming out
pretty good
Make mi6942036042
i need help to get hk mods
does this look like #archived-modding-help to you
sorry
happens
this channel is #archived-modding-help and #modding-discussion for mod developers
the modding api has a menu api
A
@dark wigeon Hey, I'm running into an issue in regards to AssetTools.Net. Everything up until now has been working smoothly, but when I try to remove an audio asset from the WeaverCore Bundle, AssetTools is throwing an exception saying the provided data seems to be corrupted. All I did was change the AudioClip's AssetBundle name from "weavercore_bundle" to "None". It will only work if I include this audio asset in the bundle.
However, when I switch the compression type in the Pack() method from LZ4 to LZMA, the issue goes away. It only seems to occur when using LZ4 compression. I also tried deleting the audioClip entirely and deleting any cached files left over during the build, but those things didn't change anything.
I doubt changing the name has anything to do with it
I didn't write the lz4 packing code so I'm not sure
if you give me the bundle I'll try checking it out
like before and after so I can compare
is this before or after
This is before packing. The pack function seems to create a bundle with 0KB in size
is it possible to change the location the game looks for unity dlls ?
yeah no lol
i was thinking if there was a way to copy the xbox game pass version's exe and tell it to look for assembly-c-sharp & /mods in the saves folder & all other files from the normal install, that would only require the permissions to the game files to be read only and still work to mod. though i neither have windows nor the xbox game pass version so i was mostly asking a theoretical question
the modded exe & dll would sit outside the trusted ms crap folder
as far as i understand windows and its quirks, an executable looks in its directory, then at enviroment paths to find wanted DLLs, so you'd have to add a hk-assembly-directory to the enviroment variables and remove the assemblies from the games installtion folder, which is difficult because of the permissions
no but we also moved the executable
we are only copying things out and modifying the copies, and telling the copies to look at the original folder for other stuff
though at that point one isn't that far off of providing pirated copies
tbf mapi already includes a modded assembly-c-sharp.
What's the hook of the nail damage
Should be here https://hk-modding.github.io/api/api/Modding.ModHooks.html
In some fashion
I think
Wdym?
Wdym? What's that
What do you mean
resulting of how hk is structured, that is done with the GetPlayerIntHook https://hk-modding.github.io/api/api/Modding.ModHooks.html#Modding_ModHooks_GetPlayerIntHook
you can do pretty much what the example is but instead of "charmSlots" you have "nailDamage"
wdym? what do you mean?
is it correct have one error
PlayerData.instance.nailDamage = 5;
assuming you want to set naildamage to 5
oh thx
what unity version do i need for 1.5?
2020.2.2
k
didnt function in game
i put damage 2
in which modhook did you put it
i put there
well you are trying to set info of a save before a save is loaded
int target = 5;
public override void Initialize()
{
ModHooks.instance.HeroUpdateHook += Update;
}
private void Update()
{
if (PlayerData.instance.nailDamage != target)
{
PlayerData.instance.nailDamage = target;
}
else
{
ModHooks.instance.HeroUpdateHook -= Update;
}
}
```Should work
not the most optimized way
you can change target to the damage you want
thx
See what debug does
but hasn't that transferred to 1.5 already?
embed
So?
well if you want to make a mod for 1.4 1.5 code won't work
do add PlayMakerFSM.BroadcastEvent("UPDATE NAIL DAMAGE"); after PlayerData.instance.nailDamage = target;
What grenade suggested you do
In init
ModHooks.GetPlayerIntHook += GetInt;```
Then do
```cs
Private int? GetInt(string name, int orig) {
return name == "nailDamage" ? Target : orig;
}```
fail
mul you need to put 3 backticks at the start not two
wait
if you hook getint to set nail damage to another number (e.g. 7), doesn't the game save naildamage variable as 7?
i was not doing anything
no, it saves whatever gets set to the internal PlayerData.nailDamage variable
oh ok
did you want to announce that or did you want to tell kaan that?
No my English is trash what i want to said is i want to learn more c sharp if this help to modding
If you know how to code in Csharp that helps alot yes
Oh ok
im kind of regretting failing my csharp class these days lmao
There is an official guide on c# by microsoft, it's pretty great
It's a text guide but it has everything about c# i think
Smh using hero update at least use on hero awake if you arenโt gonna use pd hooks
Iโm kind of regretting applying for programming classes in my school and not getting them, not regretting learning on my own though 
I learned c# on my own

Is there a reaspn to use MondHooks.HeroUpdateHook rather than On.HeroController.Update?

Also it's not MondHooks it's ModHooks
Other than needing to call orig if you want it to function like normal, but I think thatโs a given with on hooks
autocorrect stop
I disabled autocorrect on my phone 
Iโm too lazy
why intialize is incorrect
You didn't put : Mod after the name of your class
oh
Oh and also do
public MyMod() : base("My Mod")
{
// stuff
}
Replace "MyMod" with the name of your class and "My Mod" with the actual name of your mod
ok
Question, is it fine if i make the initialize method asynchronous?
Now they to have error
You need to do
public HardMode() : base("Hard Mode")
{
}
Can you show the upper part of your code, like public class HardMode?
Apparently it works?
Oh
You added two Initialize methods and two constructors (public HardMode () : base("Hard Mode")
That's why it's giving errors
Yeah except move the contents of the second Initialize method to the first one
less gooo
is it ok if i use async in initialize
depends on if you use anything unity
my system took ages to reach 3.85% or something in utiny
technically this isn't utiny :)
utiny ripper
AssetRipper
Oh ok
Yoooooo
hey where can i find mod api download?
Smh if that single extra number stops it -
#archived-modding-help itโs usually automatically installed when using a mod installer, if not itโs on the list of mods
k thanks
cus it isn't working for me 
Assets\AssetBundles-Browser-1.7.0\Tests\Editor\ABModelTests.cs(13,7): error CS0246: The type or namespace name 'Boo' could not be found (are you missing a using directive or an assembly reference?)
_ _
Assets\AssetBundles-Browser-1.7.0\Tests\Editor\Util\TestUtil.cs(5,7): error CS0246: The type or namespace name 'Boo' could not be found (are you missing a using directive or an assembly reference?)
_ _
Assets\AssetBundles-Browser-1.7.0\Tests\Editor\Util\TestUtil.cs(19,56): error CS0246: The type or namespace name 'RuntimeServices' could not be found (are you missing a using directive or an assembly reference?)
time to make a stupid mistake while modding and break everything
delete it and put it back tm
so basically yeet the tests directory ?
yea
assetbundle browser 
I swear utiny wasn't this slow
YOOO
it worked
and shaders work too now apparently??
the blurplane didn't work automatically with utiny ripper
nvm shaders are just broken in a different way lmao
lol
Isn't update a bad idea for a name for this?
no, because Mod isn't a derivative of MonoBehaviour
Ah, true
Hive Knight arena?
yes
What're you planning to do with it
vespa battle in pale court apparently 
because i don't have monobehavior and heroupdate is basically the same as update, i like to make them the same name so i don't get confused
how do you move where the map zooms in to show the quickmap ?
i saw a set position with space = 1
but trying to set the positon using
self.gameObject.transform.localPosition = new Vector3(0, 0, 0);
in PositionCompass did nothing ๐ฆ
yes but i am trying to not modify that FSM because it relies on mapZone and i need to show the map based on scene name
then have a lot of fun
i am able to show my map
it's just in the corner of the screen because the greenpath map is in the center (which i made inactive)
if you want it to work correctly, you can edit the quickmap fsm to include some method of yours in each of the area states (after all other actions ofc)
... or you hook On.HutongGames.PlayMaker.Actions.SetPosition.OnEnter and filter out the ones of the quick map fsm, then after it do your code, but that's overboard
the first bit is probably what i will do in the end, for now i am just hooking into QuickMapGreenpath to atleast get the map working once
have fun with that, when the position is changed after that method is called
true, coroutine abuse it is
yeah i had seen that i also thought that since the game updates the positon of the compass it will probably be called again after that
apparently not
but thanks! i have finally got the map on screen, now i can peacefully fix this crap
Noice
so the ?mute still didn't work ig
nah
I can't find user 56.
blind
wait what
?mute SFGrenade amogus
SFGrenade#2066 was muted | amogus
SFGrenade#2066 was unmuted
coool
mod abuse
true
sus
your mom is sus
can someone test if this works in 1432? when you hover your cursor over a scene on the map, it should show the scene name above the cursor, but I'm not getting any hits
not working for me
i can see the cursor but it's not even teleporting when i click
0
what do i do then if i want a custom enemy in-game?
ok yeeting the test directory worked
i'll just hope that isn't needed
assetbundle without assetbundle browser?
i meant that towards the
what do i do then if i want a custom enemy in-game?
that knowledge is not shared with me yet
https://docs.unity3d.com/Manual/AssetBundles-Workflow.html - Assigning Assets to AssetBundles - 3rd step
Am I the only one who severely doubts this? #modding-discussion message
yes
Yoo what is that 
a custom map in a custom scene 
dandy is elaborating
basically i was trying to make a futbol mod, on HKMP but needed to make new scene and maps and stuff
so thats what this is, the actual futbol part, may not work tho
Woo, that's awesomw
How'll the scene be accessed?
may not work 
rn by hugging the left most wall in dirtmouth

yeah i am not yet sure how to sync the ball, because it'll go out of sync pretty quickly i think
test it before making assumptions
"only once you see it doesn't work, should you give up"
- Sun Tzu
but yea, with the latency it will desync
yep i plan on completing the mod one way or the other
i might have to make a player turn into ball for hkmp to sync the ball
because hkmp can clearly sync player positions lol
make the ball a player ๐ฅด
physics does not have randomness ?
Can you make one of the players host the ball?
far as i can tell, not without messing with re-implementing part of HKMP in my mod / custom HKMP builds
this is easiest tbh, take control away from a player , make them a child of ball & set their z behind the ball / make use of invisible skin
Iโve suggested this a long time ago but I suggest creating some api for hkmp that other mods can use
Mods can see if theyโre the host, then sync their own stuff, ex the ball in this case
is it just football
are you porting soccer to hollow knight
i thought it was some sort of pvp arena
soccer
Is there a guide anywhere for how to do stuff with IL hooks?
my accent is ameritish
it is a planned feature but not a super high priority one atm
ye PVP soccer
i dont even like soccer , i thought it would be an easy mod to make lol
Iirc hollow point uses them
i was referred to this once
perhaps it can help you more than it did me
Ooh, thanks
I'll take a look
Ah yeah that seems helpful enough
Definitely better than this one https://radiance.host/apidocs/IL.html ๐ค
yes that is definitely true
the time we get a complete apidocs is longer than silksong
How would I go about adding a lore tablet interaction?
what is the difference between canDash and hasDash?
can dash is set to false if you dashed and didn't touch the ground
hasDash is wheter you have acquired the cloack
thanks
Tot has one
It looks more like that it appears when that is set to true
hmm
1 sec, booting pc
https://github.com/SFGrenade/TestOfTeamwork/blob/master/MonoBehaviours/Patcher/PatchInspectRegion.cs, have some inspect region prefab
very yoinkable code this is , i like
it's good that it's 'yoinkable', confirms that it's widely usefull, not much hardcoded (in this case, only where it gets the prefab from)
yep
how do i hide soul/health hud if i wanted to
debug mod or there also is some fsmevent you can broadcast
the gg nkg scene does that
what is the fsmevent i can broadcast
idk, gimme a sec
well, that is one you could broadcast
also can't believe 56 is typing while offline
wait can you demonstrate in code
We are planning on making Fyremoth open source, but you probably shouldn't look at it.
It's absolute chaos
the eventTarget is btw definetly not complicated at all...
thanks
alright I think I got it working, if someone can try it out on 1432
it's kind of a hit and miss,
when I loaded the game and tried it, it seemed to work, but after the first teleport I wasn't able to open the map by double-clicking Tab
I reloaded the save and then I tried it again, but I wasn't able to teleport. It didn't show the scene name above the cursor either.
grenade, I tried to implement your code by doing this:
public static GameObject familyInteraction;
public static void Initialize()
{
SetupFamilyInteraction();
}
public static void SetupFamilyInteraction()
{
GameObject inspect = UnityEngine.Object.Instantiate(Fyremoth.preloadedObjects["White_Palace_18"]["Inspect Region"]);
inspect.name = "familyDialogue";
var collider = inspect.GetComponentInChildren<BoxCollider2D>();
collider.offset = new Vector2(0f, -2f);
collider.size = new Vector2(10f, 1f);
var fsm = inspect.LocateMyFSM("inspect_region");
var fsmVar = fsm.FsmVariables;
fsmVar.GetFsmString("Game Text Convo").Value = "UI_MENU_STYLE_FYREMOTH";
inspect.SetActive(false);
GameObject.DontDestroyOnLoad(inspect);
familyInteraction = inspect;
}```
and then when the scene is loaded:
Fyremoth.Instance.Log(CustomObjects.familyInteraction == null);
GameObject interaction = UObject.Instantiate(CustomObjects.familyInteraction);
interaction.SetActive(true);
interaction.transform.position = new Vector3(50f, 132f, 3.5f);
Fyremoth.Instance.Log(interaction == null);```
both null checks return false
but the interaction doesn't show up and neither does it's hitbox
the collider might be underground then, though should be rendered
otherwise that should work
whats going wrong
if(go1 == null && arg1.name == "Town")
{
Log("loading GO");
go1 = GameObject.Instantiate(assetb.LoadAsset<GameObject>("Capsule"));
go1.SetActive(true);
go1.GetComponent<SpriteRenderer>().material = new Material(Shader.Find("Sprites/Default"));
go1.AddComponent<DamageHero>();
go1.AddComponent<HealthManager>();
hm = go1.GetComponent<HealthManager>();
hm.hp = 100;
Log("GO loaded");
}
```for reference
oh nvm saleh added his code to the docs
Hmmm. Wierd
Something else: when getting the current scene, getting the game object and trying to log itโs coordinates it give a null reference error.
at which point of that sequence
At the end
After the final null check
Just realised I forgot to add (clone) behind it
nice
So that is probably unrelated
but i meant:
getting scene
log
getting game object
log
get coordinates
log
the
so how hard would it be to go in and replace enemies with specific ones by hand? like to make new encounters
not that hard as long as you have modding knowledge
Well guys, im trying to make this skin based on Hollow Knight, i would love some tips on how i can complete this and how to change the other sprites, any tips and any help is much appreciated, if anyone from TWP mods would like to give some advices too!
well if you can get a reaction from TWP you're very lucky
Anyone that made any skin that can help would be a lot too
but #modding-discussion would probably be the best place to ask
am still having this issue, the code that is in the docs does not help
the error shows up everytime i try to hit the enemy
looks like whatever is supposed to be spawned when getting hit is null
that would be
InfectedEnemyEffects ogrimHitEffects = Kin.GetComponent<InfectedEnemyEffects>();
foreach (FieldInfo fi in typeof(InfectedEnemyEffects).GetFields(
BindingFlags.Instance | BindingFlags.NonPublic))
{
// Reposition where the hit effect comes from to be slightly higher
if (fi.Name == "effectOrigin")
{
fi.SetValue(iee, new Vector3(0, 0.5f, 0f));
}
else fi.SetValue(iee, fi.GetValue(ogrimHitEffects));
}
```this part of saleh's code?
maybe
<@&283547423706447872>
i don't know how i manage to break my entire modded installation every once in a while
same
ok, maybe i just broke more than the modded installation
oof
is this registry magic gone wrong?
i have no idea
apparently a file in my main installation got fucked while i modded a seperate installtion
Could there be any reason why an enemy I'm spawning on scene load would get displaced when entering from one room and not from another
It's unlikely this is the reason, but are either of the scenes you're coming from boss scenes?
no. The scene that displaces it is Ruins2_03B
What is the scene that doesn't displace it?
Ruins1_18
Uhh
So which is the scene you're trying to spawn the enemy in? Because IIRC those two are connected
Ruins2_01
Oh I'm dumb, you're coming from the bench and not from the walkway
Uhh
Well it's not totally impossible that this would be the reason, because Ruins2_03b was split off from Ruins2_03
how would that affect it?
You could try coming to Ruins2_01 from other scenes via dreamgate/benchwarp/doorwarp and seeing if you can spot the pattern
Well, there's been an issue in rando where certain scene changes (made through the ...activeSceneChanged hook) fail to work if the previous scene was a boss scene, so that's why I suggested it
ah
using a dreamgate doesn't displace the enemy
dreamgate from Ruins2_03, so it's definitely when you're coming in through the top transition that breaks it?
Just tried that. It's definitely the transition
Me neither
what does a game object need to damage player but not send them to hazard respawn ?
DamageHero normal...?
so just a collider and damageHero ?
yeah?
okay will try that
layer 11
gotcha, thanks!
thanks ๐ฎ๐น
22 also works, should be enemy attack afaik
My mods should be all set for release whenever. I also have a new video setup for the new feature to IKG too.
Also, is the modlinks format the same still (A zip with the mod and readme?)
ok cool
and other files
if you want dll's or other files not to be loaded add it into a subfolder of the zip
then the api has no trouble with it
While i was messing around with mi's source code
I realized you can "recommend" other mods within your mod
?
interesting
oh, old modlinks
https://github.com/hk-modding/modlinks don't forget to pr to these not the old one
Wait what? There is a new modlinks page??
ok, will do that later. Might also release the mod videos on my yt too, but that's bound to create a demand for the mods
ye better wait for MIwhatever to be released
also, grenade you call it MI2.5 but your github says MI3.0 which one is it??
56's mi2.5
and MI3.0?
did it work?
i can find it in the globalsettings file
but when i change it nothing actually changes
though that might be a problem with my code
probably a problem with my code*
how do i make to colliders like collide and not just pass through each other if both are enemies ?
do i have to detect it in code with a trigger and push?

MAPI suggestion: dont yeet toggled off mods from the top left list but instead, change/append its "version" text to "DISABLED"
Is there any way to communicate with a mod without directly using it as a dependency?
Benchwarp lets you do that by doing something like this
https://github.com/homothetyhk/HollowKnight.BenchwarpMod/blob/master/Source/Events.cs#L42
If you have control over both mods then you can do something like that
What's wrong with adding as dependancy
you can add it as an optional dependency
If you're adding to modlinks is the sha256 of the zip or the dll?
new modlinks: zip
K
Well, I made my PR https://github.com/hk-modding/modlinks/pull/9
not that anyone will be using it for a million years
When are you going to release the new "Mod Installer" compatible with version 1.5 ??
Probably not until after all the mod developers have moved their mods over to 1.5, which won't happen for a few weeks or months
But this really isn't a question for here, go ask in #modding-discussion
Second one maintains the knight essence
i like the first one
flib, check your PR
Making a skin is so much work lol
yep good luck
OK, hopefully it works now, thanks
it does

ah but if i need to put a value there that it can find it in my mod, where do i define said value?
probably in the CSProj, but what do i call it
any value, just don't let it be lower than the last release
but in the actual mod, it's dependend on wether you use old or new csproj
old: in assemblyinfo.cs
new: in the csproj itself
But can't you simply put it in override string GetVersion()?
yea
but you can have the difference of modlinks version, actuall dll version (dll file version as well if we want to be specific) and version shown in game
[assembly: AssemblyVersion("1.1.0.0")]
[assembly: AssemblyFileVersion("1.1.0.0")]
```which one?
both
k
what are .pdb files for?
i just added them cus other mods have them, but are they needed?
to see line numbers on exceptions
So with the pdb included modlinks will get better error messages?
wait 1.5 unity supports pdb files and not just mdb files ?









