#archived-modding-development
1 messages ยท Page 20 of 1
can you share your source code? maybe a second set of eyes.
or if you have it github or somethin
your problem is, i believe, how you add the service
you have this
wss.AddWebSocketService<SocketServer>(
"/playerData",
() =>
ss
);```
what you need instead is
wss.AddWebSocketService<SocketServer>(
"/playerData",
() =>
new SocketServer()
{
IgnoreExtensions = true
}
);
because "ss" is the actual socket that allows for connections
so by instantiating it once
you're saying "only 1 connection ever"
at least, based on this: https://github.com/sta/websocket-sharp/issues/136
hmmm
ok but the issue then is, I can't access that from my functions
to broadcast updates
try using WebSocketBehavior.Sessions.Broadcast
or i guess it would be
wss.Sessions.Broadcast()
I think Sessions is a member of WebSocketBehavior instead of WebSocketServer
ah, so it is
so then, you'd need to make a class like this
then
wss.AddWebSocketService<SocketServer>(
"/playerData",
() => {
PlayerDataSocket socket = new PlayerDataSocket()
{
IgnoreExtensions = true
};
ModHooks.Instance.SavegameLoadHook += socket.updateJson;
ModHooks.Instance.SetPlayerBoolHook += socket.updateJson;
ModHooks.Instance.SetPlayerIntHook += socket.updateJson;
ModHooks.Instance.ApplicationQuitHook += socket.onQuit;
return socket;
}
);
i think that would work
if you moved the updateJson methods (and friends) into PlayerDataSocket and PlayerDataSocket inherited from WebSocketBehavior
(doing this purely in discord, don't have VS loaded so syntax could be offish)
is the randomizer on the google drive the most up to date one?
try this @buoyant wasp
it should be
oh
now every time you refresh it sends another set
okok
I fixed that 
ok @buoyant wasp the one on the gdrive should work fine
playerData.json doesn't get written too anymore considering you can just do ws.send("json") to get it
cool, will try now
seems to work. just need to do a little refactor of my side of things now
it returns what you actually picked up, not what you actually got
for debugging purposes, can you add a function where i can say send("gotCharm_1") and it will return the {"var":"gotCharm_6","value":"True"}?
(where value is whatever the real value is)
so, right now it won't work for rando?
you'll have to ask sean for a dictionary
ye, randomizer will have to dump a json file
and you can use that to calculate the real pickup
though again, we run into the same issue with parsing json files locally, so really it needs to be hooked into your socket events
so that it can be requested
well I can read it in my mod, then return it
its probably easier than me implementing the entire rando logic into this mod aswell
I think he already has the logic done, there is a button in the UI now that dumps the mapping in modlog
it does it automatically on load
so @rain cedar - need to get the same randomizer logic dump that you used for the log implemented as a json that KDT can consume
@leaden hedge - If i use debug mod to grant myself a charm, will that trigger the socket broadcast?
(for testing?)
k
k, will test that out
websocket implementation works though. (although it's wrong because of the randomizer logic) ๐
oh, that's weird
so
if you get the broadcast of changes, it gives you the wrong one, because of randomzier
but
if you use the send("json"), you get the right one
hmm
I guess for now you can do, onmessage that isn't json, send("json")
yeah, short term, could do that. inefficient, but not terrible. as long as you don't trigger messages on every geo/essence drop ๐
does it get triggered on trinket1-4, tram pass, etc?
its just charm get, item get, charm equip, spell get, dreamer kill, overcharm, nail upgrades, health upgrades and max mp
I don't know about trinkets
k, will try seeing what happens when i pick one up
right now my UI has the ability to handle those too, it's in the playerdata, but will have to see if it gets triggered
also, to answer question, no, debug mod doesn't trigger events
must use setboolinternal then
hmm, nope, trinket pickups don't trigger an update :/
that's annoying
oh, i wonder
you're doing updateJson(string var, int value) and checking for specific values
can you add these:
trinket1, trinket2, trinket3, trinket4, ore, rancidEggs, & grubsCollected?
yeah
as for having a test send("xxx")
you'll need some way to tell me what type it is
as theres 2 functions one for ints and one for bools
try this for trinkets
I just did startswith(trinket)
so hopefully that doesn't do anything unwanted
k, does that include the grubs/ore too?
yep
k, seems to work. can't easily test ore at the moment since i have no place where i have quick access to get one, but trinkets and grubs work, so i'm going to assume ore does too. so does the ability to send the debug query.
so really then all that's left is when sean wakes up is to get a method to do the randomizer mapping. for now i'm just sending a request for updated json when i get a key/value pair message
alright cool
so the only real thing i have left that I need to do is normalize the icon sizes so that they look right
do you happen to have a grub sprite handy?
i see the one on the wiki that has it in the jar, but was wanting one out of the jar
ye
Sick. Do the graphics change for lvl 2 spells?
yup
they have different sprites so they should
they go to the black version when you get them
Awesome
but you'll still have the outline
also, because of the way we did this mickely, we could still look at the bot option, but it's not really needed anymore. a small single http socket is open to feed this data to the browser now, so i'll have a direction to add a parameter to the url that says "instead of looking at localhost, look at XYZ" where XYZ is the name of your game machine.
so if your gaming rig is
That would be really cool actually. Have them talk over the home network
"mickelysrig", you'd just add "?url=mickelysrig" to the end and it'll look there.
yup
at least, in theory anyway
don't have a way to test it atm
๐
sure
up to you, technically they don't even need the HTML locally if they don't want. Thanks to the magic of github, you could just point the OBS at https://iamwyza.github.io/HollowKnightRandomizerTracker/Index.html and it'll work. So you can do both local or hosted. either will work.
that works I guess
if we do local, then I'd just put it into a folder at the "Hollow Knight" root dir
for folks with crappy internet local would be better, the sprites aren't massive, but it is a total of 2.4MB that it'd have to load the first time they load it in obs
not a huge amount, but if you're already strapped for bandwidth, adding even a little more at the beginning may not be optimal
the less people have to setup the better tbh
unless some specifically asks for a local version
k. I'll write up a readme then for the OBS part
Which would be better for my setup talking over internal network? Just curious
doesn't matter
the communication between you and the game is always local
where the overlay is hosted code wise only affects where the browser gets it from
its tracked
Should be able to just add their masks
ah, yeah, maskBroken<name>
or
<name>Defeated
so, should be easy to add
will just need the sprites
๐
Hollow Knight Item/Skill/Spell Tracker UI overlay for OBS. Provides a method to overlay the current state of your game on-top of your OBS stream . Works with the Randomizer too! https://github.com/iamwyza/HollowKnightRandomizerTracker
gotta run for a bit, but will be back if anyone tries it out and has issues
Kk. I'll try this out in a few hours when I have a chance. Will ping you if I need some help
What a guy, less than 24 hours later its done ty Wyza
what
@leaden hedge - did lots of work too
Sorry KayDee โค
@leaden hedge, happen to have the sprites for the 3 dreamer masks?
er
k
I have all the sprites, but I don't know where those are specifically
wyza edit your post to have <> on the link
so the image / preview doesn't load
and ill pin it
done
I guess change the text to Tracker instructions too
something more informative than k, heres the instructions 
oh sure, be reasonable and logical about it then /s ๐
only downside is the coloring is rather grey, but yeah, it'll work well enough probably
Possible to whiten it up?
oh yeah
Oh
thankfully there aren't alot of white places in the game other than white palace ๐
Well with the background taken out by obs you'll see it yeah?
Except white palace
Lol
But rando never goes there
rando all bosses 
Lol
hmm is that the same
actually it has the eyes coloured in
not sure if thats better or worse
i'd say better
cool. I'll add them. Also added a screenshot to the readme page and updated the pinned message/link to be more descriptive
so in the instructions, i need to install the one part on my gaming pc, then just use the browser source on the streaming one?
yes
kk
as far as I understand it
yup
you don't need the test_html one
thats just to check its working / help people develop stuff using it
is it possible to shrink the charm box a bit?
yup
tried with width and height
you can add this in the CSS box
body.sm > #charms img {
zoom: 15%;
}
the current one is set at 25%
can also just resize it using obs
and crop out areas you don't want
instead of changing the code
right, but if you wanted to just shrink charms, but not shrink items
can open 4 sources
that'd involve having 4 sources open
maybe a line of css would be better 
right here
ah, right
not sure if I can change the padding of each item
nah
body.sm > #charms div {
width: 25px;
height:25px;
}
you can fiddle with those
and it should do it
thanks 
so to move the groups around the scene, i just put the code you have right into the css block under what's already there?
yup
ideally, i want to do something like a config ui that would generate a URL that has all these things settable there
but meh, this'll do
well it seems to be working
is a bit slow loading in the first time
but i'm also talking to a separate pc
well, there's 2 stages of the first load, "get all the sprites, and put them into the page" then "load from game". Note that if the game isn't started yet, then it retries on a 5s interval to connect to the game
kay. well i didn't even have the game running. lol
the first stage of loading would also take a bit the very first time since it'd have to cache all the sprites
which is a couple of MB of images ๐
but after that, should be pretty quick
LOL
-5m
so, i just gotta invent time travel then
nail arts could go, just hide it offscreen
yeah, could play around with that
yeah, working on dreamers now
yeah yeah
atleast you won't have to change anything for front end updates 
I mean from the users end
yeah, i just push an update, and bam, everyone is updated
you don't have to download a new file or whatever if wyza updates his half
yeah that'll be nice
Haha hiding offscreen makes a scrollbar
lol, body { overflow : hidden }
ushebti, gimme a few and I can make it so that you can disable a specific item/skill/charm
actually you can already
#skill_hasDashSlash { display:none; }
try adding that to the css, see if it works
also wyza dunno if you know, but apparently dashSlash and greatSlash are actually inverted for some reason 
atleast according to sean
oh
don't think anyone will be picking up any nail arts though
๐
ah, kept the nail arts? or did they not hide with that
I just kept them
So #items { display: none; } shouldnt break anything right
shouldn't
and its cycloneSlash right?
yup
you'd just need to change top/left in this block
#items div.counter {
width: 19px !important;
height: 19px !important;
border-radius: 50%;
box-shadow: 0px 0px 5px 2px #FFFFFF;
position: absolute;
top: 25px;
left: 20px;
background-color: #000000;
color: #FFFFFF;
text-align: center;
vertical-align: middle;
display:none;
}
#skill_hasDashSlash { display:none; }
#skill_hasGreatSlash { display:none; }
#skill_hasCycloneSlash {display:none }
Great and cyclone doesnt work for me for some reason
slap 1 and slap 2 
but as far as I can tell from the file it's hasDashSlash, hasUpwardSlash, and hasCyclone
ยฏ_(ใ)_/ยฏ
ah totally makes sense
that's the mapping of the data from the game, to the sprites/names/etc
heh, k, i'll update the map then
the bottom argument in CSS isn't working for items
only works for top
to change position
copy paste what you wrote
#items {
position:absolute;bottom:0px;left:100px;}
okay, that's fine. but it puts them on the top
so charms is sitting on top of items atm
the bottom isn't working
hmm
k, lemme test it
the src should always be the same size
I think the problem is, if bottom and top are supplied it streches the content
I replaced bottom with top
And it worked
Didn't have both
But I want to align via bottom
yeah because the css by default has top
charms are aligned by bottom, so
he is moving items
yeah, i see why, i just need to clear it somehow
ye thats way better
got it @young walrus
the xml on the drive for the randomizer is up to date?
#items {
top:unset;
right:unset;
position:absolute;
bottom:10px;
left:100px;
}
try that
Hmm I installed the randomizer 30 minutes ago from the gdrive but it doesnt update when I pick something up
body.sm > #charms div {
width: 25px;
height:25px;
}
did you update the api
not the randomizer
for the items, the uneven spacing is due to the sprites not being uniform in size
I need to go back and make them so
did it for charms, but those were pretty easy to do in bulk
kk. and that'll push to us automatically? same as adding dreamers?
and you need to make sure you have websocket-sharp.dll where assembly-csharp.dll is
yup
awesome
ah Im a dumb fuck
nope nvm
websocket-sharp is in the same folder. What do you mean with api exactly
I installed the one that Wyzas readme refer to
I'll add a link to the API too in my readme since the playerdata requires it
the randomizer requires it too, but there was an update this morning
well, it won't crash, but it won't do anything either ๐
it'll just sit there like a bump on a log
hmm.... it's not updating
works for me now 10/10
that might be an issue with the redirecting
so i updated the api, installed the other mod
can you try it locally ie same machine
there was a test_html folder that was in the playerdata, you could try opening that and see if you get output
had like test.html or something
run it on the game's machine just to see if it's connecting and getting data, if it is, we know it's something about the network
if it isn't then we know it's something about the mod
can just open that with chrome?
yup
or what?
yep
undefined => undefined
also, do you use the windows firewall or a 3rd party? windows likely prompted you when you first launched HK after the mod to say "hey, allow this to access private or public networks"
k, so next step would be copy that html to your OBS box
so i have to pick up an item for it to work?
and change line 5 where it says "localhost" to whatever your box's name is
i can't just load into a save?
er
no, loading the save will work too
yeah. it's updating in there
cool, so that part's good
ok the mod works fine then
equippedcharm_20=>true
so yeah, try coping test.html to your obs box
and edit that line i mentioned above
localhost to whatever your game machine's name is
so.... i'd copy over "file:///D:/Steam/steamapps/common/Hollow%20Knight/test_html/test.html" over?
yup
do i have to check the local file box on the obs source too?
can just dump it on your desktop
right now we can just open this in chrome
what we want to see is that you get the same response on your OBS PC
that you got locally
wait what?
copy test.html from your PC that runs HK, to the PC that runs OBS
okay. so copy the actual html file
then open it, just like you did on your PC that runs HK
and put it on OBS PCs desktop
yup
kk
you need to change
var ws = new WebSocket("ws://localhost:11420/playerData");
that to point to your other machine
so if your gaming machine is "MickelysAwesomePC" it'd be
var ws = new WebSocket("ws://MickelysAwesomePC:11420/playerData");
now, if you open it in chrome, do you get the same thing where you get stuff?
yeah
cool
happening on both pcs
in OBS, what URL do you have set?
k
so probably a bug on my side
sec
ah, ok....i see
so i know what the problem is. The issue is that while it will let you connect to localhost when the page itself is on https and the websocket does not have SSL, it won't let you do that if it's on another host.....
i just have to think about how to deal with that
is it possible to mirror the updates on this pc like what we just did with the test html?
and then use that to have just a local URL in OBS?
the local version might work tbh
i just have to figure out loading the map.json, but yeah, it's feasable
do i need to move another file over to make it work?
no, we're just gonna have to do the local mirror method
i just need to refactor 1 bit of code to make that work
@young walrus Unzip this to a folder on your OBS PC, then run makeLocal.bat. Then run Index.html in chrome. Add ?isLocal=true&url=gamingpc to the url.
kkay
sick
that works
just have to have that as my OBS url now
what's the layout argument for the masks?
is it just #masks?
right, so there is only 1 real downside, which is that since you'll have a local copy of it, it won't automatically update (because the reason it "auto-updated" before is that it was just a webpage that OBS was loading like any other website). so basically if you want to get the most recent version you'd go to https://github.com/iamwyza/HollowKnightRandomizerTracker/archive/master.zip to get it, unzip it and run that "makeLocal.bat" file.
yeah
oh
no
sorry, brain
lol
it's under "#misc" because there are other things I could show that I'm not
that really don't fall into any other category
i'm updating the readme to include the #misc css sample too
question, what does your OBS URL look like now? just want to make sure i have it right in the readme
@young walrus
race just started
ah
didn't know there was one
cool
man, look at that, going straight in with the tracker live like a boss
I dont have it
k
sorry
no worries, paint to the rescue
@buoyant wasp
oh, nice, that's alot better than the version i was trying to pull from in game
happen to have dreamnail 1/2?
i think these 3 are the first 3 KDT didn't have
@leaden hedge - does simpleKeys trigger the event?
nope
mind adding it? ๐
ill add it after this race
no worries
Based on feedback, now has dreamnail, dreamgate, keys and lumafly lantern. Now we can adjust if the icons for each grouping show when you dont' have it (and be grey) or not be on the list until you have it with a little CSS. Charms now use the dot from inventory, and only have a border if they are equipped.
still need to fix fragile stuff when it breaks
I think monomon should be in the middle
with herrah on right
and lurien on left
oh wait
lurien middle
monomon left
herrah right
just middle and left need to swap
so the left facing mask is on the left
middle facing in the middle
simpleKeys
thanks!
k, UI update released.
Added dreamnail, added simple key, added dreamers, re-designed charm display, added hiding of non-obtained items, added dreamgate, added coding for broken fragile items. updated readme for all
so to update this for me, do i need to add in all the files like i did the first time?
of special note, I'd look https://github.com/iamwyza/HollowKnightRandomizerTracker#hidingshowing-ungotten-items
for you
just download https://github.com/iamwyza/HollowKnightRandomizerTracker/archive/master.zip, unzip it to the same directory, and run that "makeLocal.bat"
and you'll be updated
will i have to update the html too?
nope
kk
that zip file should overwrite it
Alright I put up a new version of the modding api that has support for version strings
You just need an override function GetVersion in your main class that returns a string
for everyone else, you're already updated, just hide/show your "Browser Source" and it should load the latest and greatest. (or so the theory goes)
Without that it says "UNKNOWN"
this version isn't hiding the nail arts like i'm telling it to
hmm
hey it works
what CSS you using to hide the nail arts? That might have changed a little due to the changes I put in to allow for hiding of non-obtained items/skills/etc
#skill_hasDashSlash {display:none;}
#skill_hasUpwardSlash {display:none;}
#skill_hasCyclone {display:none;}
if you're trying to figure out what something might be called, you can look at https://github.com/iamwyza/HollowKnightRandomizerTracker/blob/master/map.json It has a listing of all the things we're displaying and I went through and put the "normal" names on them too so that you can do a ctrl+f. (at least i think i have all the names right, i'm bad with names)
so.... would hiding awoken dream nail work with this version?
if you wanted to hide it 100% of the time, you can probably do so with the same approach as the others, it'd be #misc_dreamNailUpgraded
i just mean like.... since that other one is extra right?
well, the other one is the regular dream nail. What i need to do is say "if I have dream nail, but not awoken, show dream nail, else if I have dream nail and awoke dream nail, hide dream nail and only show awoken"
the game doesn't track it as a level, it tracks it as 2 separate entities
yeah
for...reasons
ah gotcha
i'll get it sorted here in a sec
I think it was added at different times
ah, probably because of the hidden dreams dlc
like originally there was just a dream nail, then they added an upgraded version later on, and was too lazy to make everything old work with an int
ye but it might not have been planned when they added base dream nail
so they might have still added it later
whereas lv2 spells probably were
which is pretty much the only other psuedo bool / int thing
oh and dash
is 2 bools too
@buoyant obsidian been messing with the most recent Lightbringer w/ the passive soul regen adjusted. It's signifcantly slower to the point where using "Eye of the Storm" feel pretty worthless (especially on the speedrun routing)
it's extremely slow
it didn't even full to fill after exiting to Dirmouth
fill to full*
@young walrus - https://raw.githubusercontent.com/iamwyza/HollowKnightRandomizerTracker/master/Index.html - you can do File->Save As, and overwrite the Index.html on your local version (it's the only thing that changed). But now it should deal with Dream Nail/Awoken correctly i think.
Yeah it should take I think 2 minutes to get full soul
ah I see
And 12 seconds to cast with eye of the storm
if that's intended, then it's fine
the change was because of a bug
@daring snow I'll look into it tonight and update it accordlingly
If you equip a couple charms that buff mp regen it's really not bad
sick
It's not easy to balance around weak mp regen without making the charms OP
WoW has spent over a decade trying to deal with the problems surrounding mana regen.
so it's not easy to get right ๐
yeah that's fair - i'm only complaining because it alters my route 
using Eye of the Storm for speedruns is awesome
Shit, I don't think OBS classic has browser source as an option
Guess I can't really use the tracker
Oh well
it has a CLR plug in
you can use the clr plugin
disclaimer, haven't tried it on the CLR one, would assume it works, but i only have OBS Studio
You mean you only have the bad OBS 
ยฏ_(ใ)_/ยฏ
I need to see some of these speedruns some time
I don't stream often enough to care too terribly much, it works for me, which is enough
whenever I'm not studying for 3 exams
no worries!
the race this afternoon was hilarious if you weren't running it
I'm still kind of routing it
..... that's one word for it. lol
Alright I've got the CLR plugin in my OBS plugins folder but it didn't do anything
Can't add browser source and don't see it under plugins
I figured it out
it's called BrowserSource I think
I have two installations of OBS because I'm a fucking idiot
oh, hah
@leaden hedge
Error: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded.
at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (bool)
at System.Reflection.Assembly.GetExportedTypes () [0x00000] in <filename unknown>:0 ```
er
did you copy the dump.dll only
Makes sense
unrelated, you should probably put a version string in your xml
and append it to your randomizer version string
oh whilst your here, any chance of dumping the mapping to a json file
What for? Seems like the tracker is working fine without that
it works, but it sends the entire json every update
basically the problem is that when he get's the value for things like charms via the events
it is the "vanilla" version, regardless of what you get
so we're mostly just using those events to say, "oh something changed, ask for the entire playerdata"
not really a 'problem' per se. it works, it's just not "efficient" ๐
I'm going to sleep, so no rush on those features
what are ppl working on here? owo
mods ๐
you can check out the pinned messages, there is link to a drive folder with all available mods
I know
an overlay for randomizer races
o
yeah, this weekend was UI Overlay (which while geared towards randomizer works for non-rando), and sean did somme updates to the modding api i think (to give us versions) and some fixes for the rando logic
the only thing i really need to do for non-rando is to make it so you can easily shrink the charms down to only hte ones you need for your specific run instead of the whole list
uhm, #misc_hasDreamNail and #misc_dreamNailUpgraded, and #misc_hasDreamGate
they are under #misc
ah alright
so that'd be those and the masks
did you remove the items?
got you
there is no need to redownload or?
if I have only a wanderes journal, would it be displayed on the far left side or right side of the row? Assuming the items are hidden until I pick them up
far left
https://github.com/iamwyza/HollowKnightRandomizerTracker/blob/master/map.json#L302 - Each one has a "order" field. it's sorted by that, left to right (applies to skills/spells/misc too)
ok, looks good again 
I hope you guys wont have too much trouble with the dlc and the mods
I like that you changed the charms
to empty spots
makes it less clustered
meh, right now i'm not terrible concerned with other mods. like, i'll look into them, but for now, most concerned with the basic UI working well. probably the next thing on my list is to make configuration less dependent on fiddling with the CSS
did you say you make this in javascript?
yup
because I think javascript has some easy drag and drop functions
there's really not alot too it
oh, yeah, certainly
mostly it's providing a way to get that config into OBS ๐
and then going back and altering some of the generation structures. right now I have alot of the special rules on how to handle things like charms coded to only work in the "charms" area. Ideally it should know what to do with the icon based on the core config. Then you can do whatever you want with it's placement.
http://www.moddb.com/mods/hollow-knight-lightbringer/downloads/hollow-knight-lightbringer-download
Lightbringer has been updated with 25% reduced time to recharge mana, let me know if it needs any further adjusting.
@daring snow
keep in mind the non-steam version is quite a bit behind
Non-steam?
yes
Well that's awfully unfortunate. Someone else could try to port it over but I'm way too busy at the moment
otherwise I'll get to it by the end of the week hopefully
will update the drive folder
updated
is there a way to upgrade nail with debug mod?
thanks kdt
Tfw nobody looks at the help panel
is that even on the help panel
Pretty sure
The readme is for english keyboards. Hiding shortcuts for me is for example with "รฆ" and not "'"
So sometimes its a bit confusing
I don't really know how to fix that
I mean I'm checking KeyCode.F1 etc for keys
Not hardcoding a string for the key or anything like that
I assumed that would work regardless of layout
seanpr and KDT: I've talked to firzen a few days ago and he taught me the basics on porting the bonfire mod to the modding api. The thing is, I can't seem to grasp how to write new hooks... Could I ask you for help on that?
You need to add a delegate for the event in a new class, then an event for that delegate in ModHooks
Then just make a function that calls the methods in the event and put that where you need the hook
I got that, but I couldn't figure out how to make the hook behave the way I want it to
like, there's already a hook for "after attack"
but how would I make a hook to "before attack" or even a hook to override portions of Attack()?
AttackHandler is the before attack hook
And to override the attack just set cState.attacking to false in after attack then do whatever your replacement attack code is
I need, for instance, to add a few lines to GameManager.LoadGame()... Not before, after or completely override the code - simply add a few lines somewhere in the middle of the code
oh yeah, gradow needs to add stuff to the save
Oh ok, that's a bit more complicated
yeah
It's on the to do list to have a function that you can pass something like a FieldInfo and have it saved automatically
Probably just a string of the variable name makes more sense
that's basically my main issue with the porting process right now
For now you can just make a separate save file like I do with randomizer
It's a bit messy but it works
yeah, that's what it used to do
ok
also, speaking of randomizer, that seed you and risky used on the race was really interesting xD
most of the movement upgrades were easily accessible
Yeah that happens sometimes
I wish we could have one of those on GDQ
Eh
what if mantis claw was at abyss shriek
It's possible
Shriek requirements actually make no sense at all right now
I'm gonna change those
I don't even know what I was thinking
that would be an awful seed
exactly 
whens the extreme version when it tries to place movement abilities in hard a position as possible
and vengeful as early as possible
how many viable seeds are there (not counting relics)?
9^10
yeah
But it's 9 digits and 10 options per digit
33 charms, 5 movement abilities, 6 spells
you can do 1->8 digits too
because if you coun those, there are basically infinite seeds
*count
well, not really
although I guess if you count leading 0s as a digit
it's one of those annoying counting problems where "you have 33+5+6 spaces, but you can't have X before Y" etc.
theres a lot of possible seeds anyway
Wait I forgot dream nail stuff
36^35 + 35^34 ...
So 3 more things
pretty sure any charm can be any charm
Nah, some charms are included in the logic so they're weighted differently
Although I guess weight doesn't mean anything
not only that, with some charms you can kill baldurs, so it changes orders
is glowing womb taken into account?
Oh, does that actually generate enough damage to kill one before you run out of soul?
I thought it did crap damage
kills it in 2 hits or something
Oh, weird
xeph did it
Maybe it's better than I thought
srsly?
went in with 4 and left with 2
dunno if its a weird interaction with glowing womb and baldurs
womb op, from pls nerf
I'll add that, I suppose
Actually nah
I'll do it when I've made the XML format better
Baldur shell XML is already unreadable garbage
@leaden hedge Is this good formatting to use for the item tracker?
ye thats fine
Alright, cool
Alright I'll log that too
Alright I put the new version with that up
The file gets put in the save directory
Logs the seed, mode, and all permutations
nice
@buoyant wasp its done now, you need to do ws.send("random") to get the randomizer mappings
is the latest bonfire mod the one in the gdrive?
@solemn rivet
will wants to check it out
yeah its good
o shit
I dunno
oh okay I'll talk with Simo we might have a race and try to start joining in
or hosting some
trinomi is really good atm
Graig ๐
he finished a really hard seed like 30m before everyone else
Legend
is it just any%?
any% nmg
any% nmg
so quick
right
I think all bosses would be cool
It's not technically possible to get 100% with randomizer
considering you have to run around everywhere
Because of how I'm doing spells
same seed
oh right
dont show will anything by magolor 
"thats really cool" from william about that skip
have fun with the Bonfire mod ๐
I'm interested in contributing to Randomizer development and Modding API development. I believe Randomizer is on github, but not Modding API. Is there a place I can find the Modding API source?
one project i'd like to do is figure out a way to get the modding api source on github in a way that doesn't infringe on copyright. it might not be feasible, but i know it's theoretically possible. like just comitting diffs from the original, or perhaps diffs that don't include the - lines.
@leaden hedge so you're saying that the Modding API is really just a binary that sean and firzen edit with dnspy? like there is no source code at all?
alright, thanks. i think i understand the problem i'm trying to solve now. ๐
do any of the bots in this channel post github notifications?
not that I know of
No, they don't as of yet
ok thanks. is there any mechanism in place currently for preventing multiple users (like sean and firzen) from editing the modding api at the same time and uploading conflicting binaries and clobbering each other?
I would not know the answer to that question, maybe shoot them a PM unless someone else knows
Communication
not really
you just send sean the api
if it gets updated by two people, whoever made the least changes remakes them with the others api
ok. thanks.
i've got a design in my mind of a way to have the modding api github accessible, although it's not going to be pretty. i'll write up an explanation and post it here. standby.
@warped sinew dunno about the version on gdrive, but this should be the most up-to-date version
I haven't touched it for a while - mostly due to real life issues and trying to make it compatible with the modding API
@leaden hedge - if I send("random") on a save that isn't randomized, what will i get back?
undefined
actually
hey @rain cedar
do you delete the file when the save isn't running?
I'm not deleting it ever, it just gets overwritten
I could make it delete the file if you load a non-randomizer save or start a new game
that + onquit
would probably make it work well
you could always add a parameter though wyza
yeah, cause the tracker really isn't randomizer dependent
?random=true or something
er
yeah, i guess that'd work
though
hmm
yeah, that's fine. cause the update i'm working on right now will let folks have a great deal more control over what's on screen. The notion being you'll have the "randomizer" layout, but you could have a layout for say any%nmg which would just have the charms/items/skills that you know will be part of your run and nothing else. and those would just be separate sources in OBS that you could hide/show depending on what run they are doing
so having an option in that config to say "this is for randomizer" would be fine
I don't see much point in using this for regular runs as it is right now
Since it requires a modded game
I'm not gonna accept runs on a modded game unless they're really bad
ยฏ_(ใ)_/ยฏ that's your prerogative of course. I'm just gonna provide the tool as an option and let the leadership decide if it can be used in a specific way ๐
though since your mod API shows version info now, you could easily show that the only mod loaded is the data API to expose this info
Still a modded game
If it was click to turn on/off of items or plugged into chat without any game interaction, then could be used for 100% runs. I know I won't be using it for any% runs
Well anyway the item tracker doesn't entirely rely on the mod
It could in theory also work with a program that periodically decrypts the save files
true
So should I still be making randomizer delete the json file or nah?
Sounded like you might've got that worked out
i think you can leave it, shouldn't hurt anything
@leaden hedge - can you send me the source files for your stuff for this thing? and is there a code snippet somewhere about decrypting the save files? Dunno that i'll do it, but want to at least look at what would be required to do the save file approach for non-modded runs
yeah if you check my save editor
theres snippet for decrypting the files
as for the src one sec
thanks ๐
was thinking I could put your stuff under the same git repo as the UI, so that the code is all one place, or not, idc just an offer. (if I do that I can add you as a maintainer to the repo, if you want)
can you add a "send" command to get the version for the PlayerDataDump mod? That way I can check on the UI side if we make some breaking change and the mod needs to be updated and notify the user.
oh, no rush. i'm at work for the next 5 hours ๐
just eating lunch myself
or even, dump the version of all mods, if that's an option. Dunno what i might do with the information, but it could be worth something maybe
dont think I can access other mods data
didn't know if the modding API had a function to dump the list of installed mods
if it doesn't, perhaps it should so that mods can query on what other mods are installed @rain cedar
for these cs files, how are you compiling them to DLLs, do you have a backing csproj for them or are you just doing some single file compile?
๐ thanks
I think the current gdrive version will accept version
Here's my plan for publishing the Modding API to GitHub. feedback would be appreciated @rain cedar @leaden hedge https://gist.github.com/thejoshwolfe/db369bebf6518227c830fffee12ddbec
Does the randomizer work with blackmoth and lightbringer
Cool thanks
Genuinely no-one knows that I wrote the modding API smh
you're listed as an author 
Hey @vale zenith . Your feedback would be appreciated too ๐
Honestly i think the best option is to have some form of dialogue with team cherry
Otherwise we are trying to solve a problem that might not even exist
no need to complicate the process unless they want us to
My ideal outcome is that they would integrate the modding API into their code
But i think that's very unlikely
as for the legal issue you worry about thats quite unlikely, as they've publicly promoted 753's mods which are distributed via assembly-csharp, and they play other mods too

amirite
