#archived-modding-development
1 messages ยท Page 30 of 1
Oh
trying to make the item prompts work iirc
I gotta go now
peace everyone

also, if you do release it anytime soon, can you please tag me, KDT?
KDT @ me when you are going to upload the hitless item less
now I gotta go
Bye
sweet, i'll try it out after work
Can confirm float math is a pain in the ass in the c# too or just generally really
the maths itself is fine, its just that binary happens to be a shitty way to store irrational numbers
I just mean the actual maths itself for binary is the same as normal integers
so its not floats that suck, its limits on accuracy
That's a really weird way to put it
if anything float maths is great
1.5 + 1.5 is the same as 3+3, just shifted to the right one
well it is once you account for the mantissa
assuming fixed point at 4, 00110000 = 3, 00011000 = 1.5
which is a bitshift
I mean you're actually moving the mantissa by one
well fixed and floating points are the same, except one has a mantissa to say where the point is
the math is the same
What?
Go ahead and bitshift some floats, see if you get the result you expect
Either what you mean by shifting to the right is a bad way to say divided by two, or you are talking about the actual binary representation in which case you are factually wrong
afaik
exponent mantissa
0010 0010
0001 0100
adding these you normalise the exponents by shifting the mantissa of the second to the right one as 0010 - 0001 = 0001 (and its smaller), then just add 0010 to 0010 which gives you 0010-0100
although its been a while since I've actually done floating point maths at a binary level
obviously shifting the entire thing would fuck the exponent and mantissa positions
{
float x = 6;
unsafe
{
float* px = &x;
UInt32* pux = (UInt32*)px;
*pux = *pux >> 1;
}
Console.WriteLine(x);
Console.ReadLine();
}
thats why I said
obviously shifting the entire thing would fuck the exponent and mantissa positions
so when you say bitshift to the right you mean subtract one from the exponent, got it
very similiar
why are you saying it here 
Just leave the server
why not just click on Hollw Knight at the top left, then leave server @pulsar trout
can we also delete his messages?
yes
thanks
we have some entertainment?
I was directed here by 753 after asking questions regarding his mod and current compatibility. I was hoping to ask if anyone happened to have a save file created before March 11th, when the Quick Focus/Slash nerfs took place
Please note I am new to this sub and I hope I haven't broken any rules by asking this here
Why do you need a save file?
He just wants a cheaper quick slash
to test out Quick slash/focus combinations that would be otherwise impossible without overcharming and to run the lightbringer mod
so basically what sean said
I don't think quick focus was ever nerfed
it used to cost 2, did it not?
@rain cedar yeah, I get that, but wouldn't a lot of other things do for that as well?
that seems like cheating though
fair point lol
how would I go about using this save editor? and more to the point, where exactly do I find it
It's in the pinned messages
And I've never used it
So you'll have to figure that out yourself
i don't know what those are, and pressing the buttons overhead brings me to scary places
oh nvm
Is it the Save Manager link you posted on 9/09? the Debug mod posted by Seanpr? Not seeing a definitive "Save Editor" in the pinned messages
the save manager has a built in editor
ah ok, thanks
the jar file? or do I need to unpack the Zip file? I don't really do much modding
it should just be a jar
then double click it
its not really a mod
its an external program
Want the jar to be in the folder with your save files
there is a button to set the save folder
so you can put it anywhere
just click, SET SAVE FOLDER
The jar needs to be in that folder if you want to use the stuff on the left
Setting the save folder doesn't allow the game to detect the correct save files
I just tried it
Reloading the jar fixes it, but it doesn't make sense that you'd have to
And there isn't exactly a readme that says you have to reload the jar after changing your save directory
it also doesn't update the left when you move saves
decrypting saves is pretty slow
so I pretty much only do it for the 4 main saves whilst the jar is loading, and when you edit something
I could put it into the readme I guess
I still think it's easier to tell people to put it in the save folder directory to save confusion
Or edit the readme to mention how it it decrypts the saves, whatever works
Well, you can all call me stupid now if you'd like, but I transferred the jar files to a folder I created within the same location as the HK save files, and that seems to have accomplished nothing, so I am at a loss as for what to do. I can't find an executable within the JAR files, and nor does it seem to impact the game itself.
I see 6 folders, labeled "com", "fonts", "gnu", "HKSM", "jiconfont" and "META-INF"
no mention of a jar
Yes, that, I exported it using an unpacker and transferred the files to the save file locations
Don't need to export it to an unpacker
Just paste that file into the save file location
Double click to open it
You can think of a jar as a java executable
on a side note, I did manage to open the jar, but I would much like to have a version I can open without resorting to the github verytime
and thanks for your patience, this must be infuriating for you
why would you need to resort to github each time?
It's sitting there in that directory on your computer after you've downloaded it
because I can't copy over a working executable jar file to my computer without my unpacker converting it to a host of useless folders lol
why is your unpacker doing that?
You should be allowed to just download the file as is
I have no idea lol
I mean, isn't there an option in your browser to just save file?
Not open it with a program?
Apparently not, I get a warning popup everytime it attempts to transcribe it and I have to manually open it
might be my antivirus
if so, I apologize to my unpacker for flase assumption of guilt
Isn't there usually an option in said warning popup to allow you go save it anyways?
idk man, I just came here to get an older save file before the Quick Slash/Focus nerfs that would allow me to try out some new charm combos and run older mods
An older save isn't going to let you run old mods
I've browsed everything from the subreddit, to old Steam forum threads asking how to revert to previous patches, and have finally come to the conclusion that the only way to run the mods is with an older save file
@rain cedar what Vere wants to do is reduce the notch cost of those two charms
since Steam forces updates to games unless you go throught the directory, download the depot, go onto offline mode and play the game
yeah, i've been using the steam console
Steam definitely doesn't force updates after patching down
Also, older save file =/= able to run mods as far as I know
it does if you attempt to launch the game
You still have to change the base game to an older version for those mods
It doesn't
well, then idk man
not gonna lie though, those commands are super helpful, I spent like an hour trying to access the specific manifests for each depot, finding the app/depot id and inputting them, and never once found that page
and all i had to do was copy/paste the first code on that page into the console, fml
I tried backing up the installation and renaming the new files I obtained from the directory, but after I did so I found that steam had renamed them back, updating the files in the process when i tried to launch the game
once you download the depot, you can actually just keep it in a separate folder
it doesn't have to go back where HK was installed
they both will use the same save game area, but otherwise can be used independently
...oh
you need to put a text file called appid.txt with '367520' in it iirc
So I can just run the executable that comes from the depot then? that's it? and steam won't force an update? do I need to adjust my settings to only download updates between x and y time, or to run offline in conjunction with "only update when launched" or something?
i was able to just double click the exe and go
didn't work too well when i tried it last time
right, but then i wait 7 minutes for steam to download the update, at which point the game starts and it's version 1.2.1.4
doesn't let me actually launch previous versions of the game
GameObject go;
PlayMakerFSM fsm;
void Start(){
go = GameObject.Find("Charm Effects"); //cache this
fsm = FSMUtility.LocateFSM(go, "Spawn Orbit Shield");
//This should be after the level has loaded
Invoke("duplicate", 1); //duplicate after 1 second
Invoke("duplicate", 2); //duplicate another after 2 seconds
}
void duplicate(){
fsm.SetState("Init");
}
@buoyant obsidian im not sure how this will actually respond though
well you'd called the start function as a delegate of levelLoaded
so you'd really have something like
public class shieldDuper(){
GameObject go;
PlayMakerFSM fsm;
public shieldDuper(){
UnityEngine.SceneManagement.SceneManager.sceneLoaded += onSceneLoad;
go = GameObject.Find("Charm Effects"); //cache this
fsm = FSMUtility.LocateFSM(go, "Spawn Orbit Shield");
};
public void onSceneLoad(){
Invoke("duplicate", 1); //duplicate after 1 second
Invoke("duplicate", 2); //duplicate another after 2 seconds
}
void duplicate(){
fsm.SetState("Init");
}
}
then you'd just call new shieldDuper() somewhere and it'd make 3 shields on load
I assume
not actually tested it 
is fury still broken in the latest BR?
Why do I feel like someone is making a mod where you fight using only the dream shield?
;)
yes it is still broken 
can we make it not broken and also work at full health even if you get hit and then heal? ๐
vs broken in both regards
i know, i'm needy
i'll fix it
but not for the second case
Hmmm.. wonder if there's a way to get dreamshield modded so it faces with say a mouse, and does damage on a 'nail swing'...
No that would basically be like some sort of ranged parry design...
I can't get it to work :(
Finite state machine
hmmmm
It won't let me create a shield without the charm equipped
good news, verulean
good nudes, verulean
Glad to see I'm not the only one here with crap internet
I sometimes can't load videos :)
ffs
don't you mean fsm
can't you instantiate two shields?
btw, I managed to solve the issue with blackmoth where the dash kept reverting to 1 damage
but it still sometimes does no damage
but that's a vanilla bug, so not my problem
duping is a vanilla bug so it's not your problem ๐
you can still dupe
I just won't give you any more levels
so don't waste your time
oh yeah @rain cedar , is there any chance of a tookDamage(int damage), that gets called when health actually gets decreased
instead of before damage gets calculated
@buoyant obsidian
FSMUtility.LocateFSM(GameObject.Find("Charm Effects"), "Spawn Orbit Shield").FsmStates[3].Actions[0].OnEnter();
FSMUtility.LocateFSM(GameObject.Find("Charm Effects"), "Spawn Orbit Shield").FsmStates[3].Actions[2].OnEnter();
that spawns a dreamshield
Yeah I suppose that's a good hook to have
@buoyant obsidian you only need to do the first line once, the second line actually spawns the shield
Thanks
as for desync'ing or spawning multiple, thats on you 
well that was fast
do they despawn when hit?
also I should probably go down from 0.5.76 to 0.6.0
Nope :)
lol
.76, great iterations, did you manually update the number every build? or did you break down and batch in the build incrementer?
I update it every build
yuck
lol, i think there is a way, yes. at work i use gitversion which just sets the version info based on the commit hash, but i'm pretty sure you can auto-increment stuff on build
v0.6.1
- fury now works after loading a scene until you get hit,
- fixed a grimm softlock
i installed the debug mod so i could check the health on bosses, and the enemy panel doesn't seem to be registering bosses, or at least not failed champion
any help?
double tap f9
Or pause and press scan
how do I set mod version for the api?
{
return "Whatever";
}```
i did it this way in the randomizer overlay
huh. the scan button isn't doing thing but double tapping f9 picks it up even while paused. weird but good enough i guess
enabling auto scan didnt help either
public static String version = "version";
public static String current;
public string GetCurrentVersion()
{
try
{
System.Net.WebClient web = new System.Net.WebClient();
web.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2";
return web.DownloadString("https://www.yoursite.com/version.txt");
} catch (Exception e){
return version;
}
}
public override string GetVersion()
{
if (current == null)
current = GetCurrentVersion();
if ( current == version )
return version;
return version + " | UPDATE REQUIRED";
}
if you want to be able to check for updates from an external source @solemn rivet
only if the external service is http
hmm
is there a way to edit the hotkeys?
we talked about that remember? ๐
return web.DownloadString("https://iamwyza.github.io/HollowKnightRandomizerTracker/version.txt");
worked for me
oh
if you don't, the CA repo is empty
yeah, you have to point it at a http site 
public static string Version = FileVersionInfo.GetVersionInfo(Assembly.GetAssembly(typeof(PlayerDataDump)).Location).FileVersion;
you could then set the assembly version with something like this
then you don't have to worry about versioning (if you already use a source control system)
https://github.com/KayDeeTee/hk-bossrush/tree/master/src I updated the src for boss rush 
fk source control, just push everything to master
and hope it works
well, you still can, i'm just saying that will take the commit and make your version value based on that and tags, so you could still do tag 0.6.0 and it'd just append -asf3423 to it
even if you do it manually, i'm still a fan of using the assembly version so that you can right click the dll and get the version without booting the game
FSMUtility.LocateFSM(GameObject.Find("Charm Effects"), "Spawn Orbit Shield").FsmStates[3].Actions[0].OnEnter();
FSMUtility.LocateFSM(GameObject.Find("Charm Effects"), "Spawn Orbit Shield").FsmStates[3].Actions[2].OnEnter();
Any way to know what the actions are aside from guessing and checking?
it is
you could change it
to do Debug.Log() instead of ModHooks.ModLog()
and it'd put it into the outputlog.txt
Now am I adding this class to the .dll or...?
add it where, if you are using a api mod just add it like
then do FsmUtils.FsmUtil.LogFSM(fsm);
kdt, is bossrush waiting to calculate what the drops are until the drops happen?
nope its all done at the start again
hmm, but that only happens the first time? cause future bosses die and spawn shinies fast
it does it 7 times on the first boss, but only 3 times on others
hmm, guess its not a huge thing, just wondering if you could hide it in the load screen so it doesn't seem like it takes longer
Uh where would I get a blank modding api .dll
like what's the bare minimum required stuffs
Thanks
should only have a single hook
I was even too lazy to rename the names from PlayerDataDump 
I'm lost as fuck here, I don't know what any of this is or what to do with it :)
do you have visual studio?
yep
double click ExampleMod.sln
how do I install the boss rush mod?
where can I download the api?
pinned gdrive
shit Visual Studio Code is different from Visual Studio isn't it
thanks
# Visual Studio Express 2013 for Windows Desktop
VisualStudioVersion = 12.0.31101.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExampleMod", "Source\ExampleMod.csproj", "{E3E4D0B7-656C-6C50-7567-696E2E57696E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E3E4D0B7-656C-6C50-7567-696E2E57696E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E3E4D0B7-656C-6C50-7567-696E2E57696E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E3E4D0B7-656C-6C50-7567-696E2E57696E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E3E4D0B7-656C-6C50-7567-696E2E57696E}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
That it?
using System.Collections.Generic;
using System.Linq;
using Modding;
using GlobalEnums;
namespace ExampleMod
{
public class ExampleMod : Mod
{
private static string version = "0.0.1";
public override string GetVersion()
{
return version;
}
public override void Initialize()
{
ModHooks.ModLog("Initializing PlayerDataDump");
ModHooks.Instance.AfterAttackHook += onAttack;
ModHooks.ModLog("Initialized PlayerDataDump");
}
//This will get called on attack
public void onAttack(AttackDirection dir)
{
ModHooks.ModLog("Attacked!");
}
}
}
yes thats the code
Visual Studio Code is not visual studio
I'm not sure if vs code supports csharp out of the box
and i don't think it knows or understands sln's
visual studio community edition 2017 is free tho
so
wait so do I just make a \Mods\ folder?
api as in the mod itself or did I miss something
go to
Hollow Knight\hollow_knight_Data\Managed\Mods
there's no \Mods
then you didn't install the api
go to the gdrive
and download the modding api
install that
the first pinned message?
yes
oh ok I get it now
just once or?
Are there mod descriptions somewhere?
Kill her harder
thought you were in ireland
Finland
knew it was a land of some sort
It's 5 am. Can't sleep.
eww
both of those places are fake
are you resetting all the variables on new game? cause somehow i carried grimmchild over from the previous run
@rustic fossil - each mod has a readme usually
I beat hornet and got drops, so
Dunno if the main readme has a single unified list
first 2 times i killed hornet, got drops, 3rd time didn't
Also, beat Mantis Lords and Gruz Mother without getting hit but only got one pickup
did you dive
or have some sort of otherwise invulnerable frames?
Um... Does shield count?
Even so, I think I picked it up after that
I had nail 3,long nail, dashslash and vengeful
well I asked for another hook, for after the damage function
that actually returns delta health
Oh
so that should be more accurate at determining if you actually took damage
Nah, it was the dreamshield, not grimmshield
I've not tested dreamshield
Anyway, I'm out
alright later
Loving the mod so far btw
also I like VS' automatic versioning system, yeah just put the days and seconds since, january 1, 2000 in there
huh, didn't even know that existed, sweet ๐
yeah thats why boss rush now says, 0.6.6520.5630
so, this new hook, just needs to fire after at the end of the takedamage routine?
I think theres playerData.takeHealth
yeah
which might be more accurate
there's already a hook for that
OnTakeHealth
public void TakeHealth(int amount)
{
amount = ModHooks.Instance.OnTakeHealth(amount);
if (this.healthBlue > 0)
{
this.damagedBlue = true;
this.healthBlue -= amount;
if (this.healthBlue < 0)
{
this.health += this.healthBlue;
return;
}
}
else
{
this.damagedBlue = false;
if (this.health - amount <= 0)
{
this.health = 0;
return;
}
this.health -= amount;
}
}
hmm, now is there any reason, I wouldn't use this
well its probably better than the current hook zzz
not sure if I want to count hazards as damage or not
your existing code does doesn't it?
oh, i guess right now you can check the hazzard type
I can't think of any reason this would give a fake positive
unless something does takeHealth randomly
Cool, thanks!
tfw you get 2 nail upgrades, f str, and fury before WK
killing them in 5 hits FeelsGoodMan
how do I do the boss rush itself
install the modding api, then drop the bossrush dll in the mods folder
@leaden hedge - Glubber elegy + fury is normally buffed at 1hp, thoughts on making it work the same with that unhit fury state?
grubberfly works completely differently to fury
it actually checks if hp == 1, in HeroController.attack
oh
yeah
thats probably er
cg2 doesn't actually have a variable associated with it
no but how do I start it when I installed
each boss drops 3 items
if you took no damage, you can take 2 of them
if you took any damage, you can take 1
umm was that a damageless nightmare god grimm fight I just watched
where? i must see this
After Steel Glass Soul speedrun nothing surprises me
nothing is impossible
make it harder
Somewhere, someone is working on old nail only no charms lowest upgrades steel glass soul NGG hitless.
but still is cool to see
stick to your readme
maybe leave the normal one avaible but stillmake a harder one for people to beat
oh nvm he took some damage fighting NGG
still beat it
we must inform kdt
Radiant God Radiance
KDT if you see this i recommend leaving the normal NGG on the drive but still make the harder one
lol
i can see tha
Nah don't make a harder one, make harder Radiance
it's important to have it difficult yet attainable
lets have radiance attacks go faster and the beams that go across the screen never stop coming lol
the ones you need shade cloak for
Heh... Imagine making the beams go vertical instead of horizontal.
DO BOTH
constant lance rain and beam waves
So you have to dodge around them.
not so much that dashmaster is needed
That fight is also segmented
one thing i dont like about fights like ngg and radiance at times is just luck just hope that lucks on your side at times
though sitll amazing
Trinomi hasn't beaten it yet in one go
As noted, they said it was rng based for the final phase.
i havent checkewd the video yet but ive tried the fight before
its only the last phase that is segmented
and yea a bit to RNG
Which makes sense, given that the grimm who was busy doing spikes the entire fight stops.
And starts saying oh hi there hope you can handle two.
He's gotten to the final phase a bunch, but after awhile, used the debug MOD to get.there faster
Skill over Luck i say
psst what's segmented mean?
Cheated
You notice how they paused?
gasp

i thought it ment it was in multiple parts put into one part
I didn't watch the full thing, it's 5 minutes 
i was wrong lol
I might make them sync like, mantis lords
They probably just restarted from that pause point if they lost.
He's beaten all phases, just not all at the same time
I mean, the mantis lords have unsync'd
ah
load mantis lords into radiance
so nobody as beaten it yet
Not legit, no.
well its to rng so i aint trying
And question. If two grimms do the jump fire thing at the same time, can they cover the entire screen in fire?
That's kinda why segmented is needed
Like the big balls of fire raining from above.
probably not considering they'd aim at you
honestly im impressed to see trinomis fight working out that well
Not saying I disagree with what Trinomi did by any means
even if its segmented
and you should stand in the corners so they can only attack in one direction
You can use dive for the iframes
You can. But that might be difficult to keep doing.
It is
More so if RNg means they do the _/๐ฅ
Random Number God Grimm?
from trinomi playstyle during the fight id say a charm build of spell damage and something like soul catcher/soul eater
something like that
just a guess
a lot of charms are pretty much required
long nail / mop, and dash master
you want spell twister and soul catcher / soul eater too
anything rng or luck based for a fight is kinda unfair to me not complaining or insulting the fight just dont like them as much
still 2 grimms wtf
that insanity
indeed skill over luck
oh goood
god
pufferfish in ngg
so odd question how does one or how would one modify a sprite or change them?
is it possible to do a boss rush not on a new save?
no
With the boss rush, how are the available charms chosen? Are they in sets or entirely random?
random I think
Oh is boss rush a thing again?
That's good :)
I'll give it a try when I get the chance
aits random but you have to restart the game and make a new save for new set of random stuff
Okey
this was going on for about 40 seconds and he doesnt move or attack me
happens if you leave the arena
Yeah, it's called patching down to 1.0.0.6
Hmm?
That was a "feature" of the initial release
Oh, interesting
I'd be curious to see it with the new ones, too, though
But if it was in the code I bet it would be easy to add again
You can just change all the charm costs to 0 in your save
boss rush sets all the charm costs to 0
Oh, there's a boss rush?
so you can just load it up, s+q and reload it without boss rush enabled
Or is it a mod?
its a mod
I may just make a dedicated one
@rustic fossil
Something like this is only like 5 lines of code
{
public override void Initialize()
{
ModHooks.Instance.NewPlayerDataHook += MakeCharmsFree;
ModHooks.ModLog("Free charm mod initialized");
}
public void MakeCharmsFree(PlayerData pd)
{
for (int i = 1; i <= 40; i++)
{
pd.SetIntInternal("charmCost_" + i, 0);
}
}
}```
question how would one modify change an sprite for an enemy?
You would need to change the resource file containing it
Unity studio can pull assets from the game, but I'm not sure if it can repack it with changes
Worth trying
Probably not
But it should be fine as long as the new sprites are the same resolution
well i wana try modifying an sprite for something im thinking about working on
when is lightbringer gonna update 
yeah
was the google drive file for the boss rush updated?
idk
to the current version on github i mean
does the nail damage increace when you chose it? nail in the inv doesnt change
i think i t does
randomizer update is probably a bit out. it's totally playable right now though. the stuff being added/changed will be, in general, minor
also, hate my life when mantis claw was in hiveblood
"I'll fight flukemarm when i find quick slash"
Plot twist, she had it all along. My last charm
i'm assuming you didn't have dive?
oh, no, you had to have had dive
so.....1 shot him
literally easiest boss in the game with dive
Thanks i never played the game before ๐ค
no idea if you're being serious or no....
have yet to time the dive on fluke to 1 shot it
it's not a timing
you know whast i ment
you can do it at any point in the fight
i failed quite a few times myself when i learned it
several hours of failing in fact
well fluke will be easy if i can get past watcher knighs
knights
their nto that hard but i always have trouble with them
just got the fluke 1 shot finnaly
lol
now i see how it works
dont you love it when your stuck in the ground on a good boss rush run?
does the boss rush run save?
if i quit to menu and return
i think so
it didnt
when boss rushing bugs again
and its like this every time on hornets fight
ive redone the boss rush 3 times and each it bugged ehre on this fightr
ive also found an bug where the collector cant be hit in his ending stage
this is a vanilla bug
ive never seen it
till boss rush
and with boss rush it seemed to happen everytime glad i tend to have grimmchild at that point
downloaded the bossrush again and the soul tyrant boss is bugged again
i think the drive version is out of date
get the last one posted by KDT last night
but yeah collector is definitely a vanilla bug
especially if you use something like flukenest
the current version is 0.6.5something
0.6.6 somethingh
which i have
these are bugs on the most revent b uilf
sorry cant spell right onsd mobile ahte it
Is it that you kill him to quickly or is it with the use of spells? I'd like to try to avoid the bug
@leaden hedge - not that it matters a ton, but any idea why mawlek has this obsession with the right side? (in boss rush)
it's as if his sense of spacial position is shifted
dunno
also, how are you setting nail upgrades in boss rush?
blackmoth doesn't seem to like it
dash damage doesn't increase when I pick up sharpened nail
is it possible that you're spawned directly into the Mawlek arena instead of the left area where you walk in?
pd.nailDamage = xx
you are spawned into the arena
are you check upgrades or nail damage?
I can up upgrades# on pickup
if (PlayerData.equippedCharm_16)
{
this.dashDamage *= 2;
}
if (PlayerData.equippedCharm_25)
{
this.dashDamage = (int)((double)this.dashDamage * 1.5);
}
FSMUtility.LocateFSM(this.sharpShadow, "damages_enemy").FsmVariables.GetFsmInt("damageDealt").Value = this.dashDamage;```
it's possible that spawning into the arena means the Mawlek gets set to the right of normally where he's set but I have no idea :)
kdt for some odd reason even with the new build for boss rush the soul tyrant fight seems to be puting me in the ground so i can barely move is this an often bug?
shouldn't be, I moved the spawn point in the new version anyway
Is palette/color editing possible so far?
that looks like someone colored the shell with crayon ๐
why would you do that tho
wait
does debug mod use the fsm dump mod?
because the hack_fsm folder keeps re-appearing in my saves folder
no thats a playmaker.dll mod
weird
I had this earlier when GOG kept backing up the whole saves folder
but I just checked the backed up version and it doesn't contain hack_ or save_fsm
NGG+ ๐
glhf
the fight is pretty easy even without his sprite tbh
Fight is easy one handed with eyes closed tbh cus I'm a pro gamer
ffs
I did something to blackmoth and it's now broken forever
FSMUtility.LocateFSM(this.sharpShadow, "damages_enemy").FsmVariables.GetFsmInt("damageDealt").Value = this.dashDamage;
if (oldDashDamage != dashDamage)
{
ModHooks.ModLog(string.Concat(new object[]
{
"Sharp Shadow Damage set to ",
this.dashDamage
}));
oldDashDamage = dashDamage;
}```
anyone see any glaring nre?
What's the problem you're getting?
Where in it?
no line numbers?
while setting dash
So in here?
{
FSMUtility.LocateFSM(this.sharpShadow, "damages_enemy").FsmVariables.GetFsmInt("damageDealt").Value = this.dashDamage;
if (oldDashDamage != dashDamage)
{
ModHooks.ModLog(string.Concat(new object[]
{
"Sharp Shadow Damage set to ",
this.dashDamage
}));
oldDashDamage = dashDamage;
}
}```
oh, that reminds me, i need to change the Modding API to not try and load .pdb files from the Mods folder, wanna see if i can make it so that PDB files are loaded properly
at Blackmoth.BlackmothMod.DamageUpdate () [0x00000] in <filename unknown>:0 while setting Dash Damage
Sharp Shadow Damage set to 5
System.NullReferenceException: Object reference not set to an instance of an object
at Blackmoth.BlackmothMod.DamageUpdate () [0x00000] in <filename unknown>:0 while setting Dash Damage```
so it doesn't work - then it works - then it doesn't anymore, ever
FSMUtility.LocateFSM(this.sharpShadow, "damages_enemy").FsmVariables.GetFsmInt("damageDealt").Value = this.dashDamage;this is the piece of code that's giving the exception
it's not getting the sharpShadow object, even though it was before, with this exact same code...
Maybe the object doesn't exist at the time you're calling that
restart PC
it's running on Update()
I'll restart my pc
sigh
public void GetSharpShadow(GameObject gameObject)
{
if (sharpShadow == null && gameObject.tag == "Sharp Shadow")
{
sharpShadow = gameObject;
ModHooks.ModLog("Set Sharp Shadow object: " + sharpShadow.name);
}
}```
I'm sure this is the cause because this is not getting written in the log
nope, still doesn't work
RIP
what was the issue (inquiring minds)
the issue was obvious
sharp shadow wasn't instantiated
so the game returned a NRE whenever I tried setting its damage
but why did it work, then not?
prolly I was dashing as soon as I got control
this is how it is now:
{
if (sharpShadow == null || sharpShadow.tag != "Sharp Shadow")
foreach (GameObject gameObject in Resources.FindObjectsOfTypeAll<GameObject>())
{
if (gameObject != null && gameObject.tag == "Sharp Shadow")
{
this.sharpShadow = gameObject;
}
}
}```
and it only returns System.NullReferenceException: Object reference not set to an instance of an object at Blackmoth.BlackmothMod.DamageUpdate () [0x00000] in <filename unknown>:0 while setting Dash Damage Sharp Shadow Damage set to 5now
and stops after that
so it works
interesting, how often does that get called? how expensive is a foreach of all game objects?
it's expensive, but the first condition ensures it only runs once
yup
You could make it a bit cheaper by adding a break after setting it
it's too bad resources isn't a dictionary
I also check if it's the correct object (in case something goes awfully wrong for some reason)
oh, yeah
thanks sean!
thanks to KDT for making the BossRush compatible with it
๐
is there a hook for GameManager.Start()?
No, but running your own component with a start function might work
Not sure what purpose you want the hook for
oh, nvm, I don't need it
and how would I add new classes? Just declare them with : Mod at the end?
no
just do
public class newClassName : MonoBehaivour
{
public void Start(){
//stuff
}
}
then on game load just do
GameManager.instance.gameObject.addComponent<newClassName>();
okay
the only class you have to have the does :Mod is the main one
though i imagine bonfire needs to save data right?
if so, do Mod<T> where T is IModSettings
i'll post some sample code to do that here in a bit
about to eat dinner
@leaden hedge : That's not working for me
that doesn't really help me in anyway
{
ModHooks.ModLog("Bonfire Mod initializing!");
GameManager.instance.gameObject.AddComponent<LevellingSystem>();
ModHooks.Instance.CharmUpdateHook += BenchApply;
ModHooks.Instance.AttackHook += AtkSpdAfterAttack;
ModHooks.ModLog("Bonfire Mod initialized!");
}```
whats not working about it
levellingSystem has a onGui, but nothing is showing
not in the initialize
oh
do like public static LevellingSystem;
You could do it in initialize and add your own gameobject to attach it to
then onload do LevellingSystem = GameManager.instance.gameObject.AddComponent<LevellingSystem>();
yeah you could add it to a new gameobject
If you're doing it the way I said be sure to add:
GameObject.DontDestroyOnLoad(newthing);
I'm sorry, I don't get what you mean by "onload". I thought that meant "on Initialize", but I guess I was wrong...
UnityEngine.SceneManagement.SceneManager.sceneLoaded += onSceneLoad;
wil get called everytime a scene gets loaded
oh
Wouldn't that result in a ton of duplicates?
I can't imagine GameManager is reinitialized every load
if (gm == null)
{
gm = GameManager.instance;
gm.gameObject.AddComponent<BossRushUpdate>();
}
its not
I guess you could just put it, on loading a save
because you're going to have to reset it then anyway
ok, so saves. You can approach this in one of 2 ways. I think the first way I'm going to present is cleaner and easier to follow, but the 2nd way works just as well
way 1:
public class RandomizerMod : Mod<RandomizerSettings>
{
public override void Initialize() {
ModHooks.Instance.BeforeSavegameSaveHook += Randomizer.SaveGame;
ModSettings = (RandomizerSettings)Settings;
}
}
[Serializable]
public class RandomizerSettings : IModSettings
{
public int Seed {
get => IntValues.ContainsKey(nameof(Seed)) ? IntValues[nameof(Seed)] : 0;
set
{
if (IntValues.ContainsKey(nameof(Seed)))
IntValues[nameof(Seed)] = value;
else
IntValues.Add(nameof(Seed), value);
}
}
public string Difficulty
{
get => StringValues.ContainsKey(nameof(Difficulty)) ? StringValues[nameof(Difficulty)] : null;
set
{
ModHooks.ModLog(nameof(Difficulty) + " = " + value);
if (StringValues.ContainsKey(nameof(Difficulty)))
StringValues[nameof(Difficulty)] = value;
else
StringValues.Add(nameof(Difficulty), value);
}
}
}
public static class Randomizer
{
public static RandomizerMod Mod;
public static void SaveGame(SaveGameData data)
{
Mod.ModSettings.Seed = seed;
Mod.ModSettings.Difficulty = hardMode ? "hard" : "easy";
}
}
so, basically at it's base, the Settings class is of IModSettings, which gives you access to 4 dictionaries, (<string,int>,<string,string>,<string,bool>,<string,float>)
you can choose to interact with those dictionaries directly in your code
but honestly I find that making that interaction occur in the settings class as properties is easier. Properties like the above won't get saved, so they have to be stored and filled by the backing dictionary
So if you stick all that access logic in your MySettings class, then you can easily access them in your mod elsewhere
There are 2 events you can hook into, BeforeSavegameSaveHook and AfterSavegameLoadHook.
BeforeSavegameSaveHook is called after SaveGameData is instantiated and populated by the normal GameManager code, but before it's serialized to disk. This is where the base Mod<T> class will go through and save all of the mod settings into the SaveGameData. My advice is to hook into this event only if you want to do something to the Settings object before it's saved. Often you may not need to if you're maintaining it's state always.
Oy does anyone know where I can find that hardcore grimm boss mod
check the pins
it's called nightmare god grimm
AfterSavegameLoadHook is called right after the file has been deserialized and a SaveGameData object has been hydrated, but before PlayerData and SceneData has been assigned to their Instance versions. This is where the base Mod<T> class will automatically fill those dictionaries for each mod. Usually you don't need to hook into that event, but you can if for some reason you needed to alter something before the game had access to it.
so you don't need to worry about the saving or loading in most cases, just make your class that contains the properties for your settings and use that to maintain the dictionaries. The API should handle the rest most of the time.
also, i use the "nameof(field)" convention not because it's substantially better from a performance standpoint,but because if you rename a property, then the nameof() will get renamed too.
and now, afk again for 15-20
so, getting this error: MissingMethodException: Method not found: 'System.Reflection.FieldInfo.op_Inequality'. at BonfireMod.LevellingSystem.OnGUI () [0x00000] in <filename unknown>:0
I googled it and it seems it's a .NET version issue?
About the Randomizer, you could swap the Hunter Journal too.
If it's a version issue, try compiling against a different version of .NET
I'm trying to do that, but I'm not that familiar with VS
who doesn't use VS2013 
IT'S ALIVE!
well, the interface is, at least
that's something, right?
also, I made it add LevellingSystem as a component to GameManager.instance on both savegameload and newgame
i use VS2017 because it's the full version of VS with nothing missing, unlike the previous community releases, but honestly it's not that different. That said, I don't think 2013 can compile CS 7.0
ModHooks.Instance.SavegameLoadHook += setupGameRefs;```
and CS 7 has some really, really nice stuff in it
Are those Blackmoth and Boss Rush updates I see?
I'll add it to the gdrive later, SD
I got it
Is it 1.2.1.4 specific? or does it work with any API version?
does it do saves yet?
yeah, it should work
cause the save functionality was 1.2.0.1+
because if that's true for the two API versions already in the folder, we can just get rid of them and have a single API zip
blackmoth doesn't use saves
cool
btw, Wyza, thanks for the explanation earlier
the API itself is heavily version specific
the API is, but not the mod dlls iirc
depends on the mod
tbh, I didn't quite get it, but I'll try working with what you gave me later tomorrow
or are you talking about mod version and not game version
SD: some mods are also version specific
eg: if the mod does something with a TGT charm or grimm, then the mod couldn't work on older versions unless it was specifically coded to be backwards compatable
for instance, boss rush
true
blackmoth should work on any API version, because it requires basically no hooks
ModHooks.Instance.HeroUpdateHook += GetSharpShadow;
ModHooks.Instance.DashVectorHook += CalculateDashVelocity;
ModHooks.Instance.DashPressedHook += CheckForDash;```
uhm.....it should work....i think
is Blackmoth?
I don't know how KDT pools items
as long as its TGT+
Blackmoth is
Boss Rush probably won't work 1.1.1.8
dunno
@leaden hedge
Blackmoth should work 1.1.1.8 onwards
same as API then
boss rush requires latest version
alright
just let me know if you run into any issues with the save stuff. I'll be happy to help in any way i can ๐
yeah, I was about to say that
Can you really get mark of pride charm with only Monarch wings?
thank you Wyza!
@slate owl easily
yes
yeah
it's slow as dirt, but totally doable
same way you get to them with dash
you'll need 2 pogos in the claw area but it's not bad
you can lure the flying mantis
yup
and use it to get enough height
pogo->pogo->double jump, but yeah, definitely have had 3 seeds in the last week where it was done
I was about to ask if you can't pogo on those spikes
Oh, you can pogo on the spikes... Im dumb
hah, nah
better not to pogo than to pogo where you can't
Oh its easy-peesy.
me trying to pogo on Greenpath's thorny vines
yeah, i was a little confused, makes sense now that you were trying to do it sans pogo
Can you enter the mantis lords fight room from deepnest?
nope
not until you've killed them
that door is shut i believe
at least like 75% sure
the way is shut
but you'd have a hard time getting over to that spot in deepnest without any of the abilities that would trivialize getting into mantis imo
thanks @hazy sentinel
thought as much, but its a place i went to exactly once during my first run of being lost in deepnest
i was making a bad lotr reference but ok
Mellon
@hazy sentinel , It was amazing
I have monarch wings. I can use the path that leads to the mask shard in deepnest.
The UI glitches when I do the Options -> Keyboard with the Randomizer mod.
how so?
The Option UI doesnt want to go off.
interesting
Like it stays open but the game starts running again?
Does it glitch for you too?
Or it just doesn't close?
Interesting
looks fine to me 
Try to do that in a vanilla game
I also have the debug mod on.
Oh, ok
Nevermind
That's because of debug mod
I'm toggling pause when you hit esc because otherwise there's a high chance esc will do nothing because one of the debug buttons will have focus
I'd rather have that bug than not be able to close menu half the time
Lesser of two evils and all that
found another boss rush bug dying in the second crystal guardian fight will send you to kings pass for no good reason
Cant kill watcher knights with lantern without mantis claw ๐ฆ
Last I checked you can't kill anything with lantern
Dropping the chandelure.
float 
mantis claw is required for all 3 dreamers
so other than opening the paths to them, it's pretty pointless to do much else in those areas until you've got it
Is it normal thats this is still there in randomizer? https://puu.sh/yhbrV.png
I did collect it.
It wouldn't be hard to fix, I'm just lazy
I do have desolative dive.
I think that goes away if you have both items that get swapped with dive?
I don't really know
Just picked up the spell again and got Hiveblood charm again.
It might just be there unconditionally
it doesn't matter, you dont' get anything if you re-get it
Yeah, it's a very low priority bug
super hiveblood ๐
you can't get out of the room without picking it up unless you have claw at the very least and if you have claw, why are you there (most likely)
I don't think you can get out without grabbing it at all
There's an invisible ceiling
ah
You must take it.
so yeah, it's odd to see
And leaving that place requires pogo-ing ghosts.
yup
And save-quitting at least once.
To not quit you have to either leave the floaty dudes alive to get out of the pit or break the floor without going down
yup
you can fake dive or leash the floaty dudes
it might be faster to s&q if you aren't used to fake dives though, just saying it isn't required
On?
the little object on the middle platform is breakable/pogoable
now get out of abyss
What was at spell twister?
Really?