#archived-modding-development
1 messages ยท Page 18 of 1
@solemn rivet something happened
oh
i don't have any eggs
stuck with no nail damage but i have 209 hp so i'm like invincible or something
no, i was at around 5-6 strength and 1 in everything else
then i accidentally did a room dupe
then i save/quit
and now i have like 2400 levels
That should never happen tho
what should never happen
idk it happened
It only either gets set to a value (always non negative) or incremented
Maybe the dupe screwed with memory
guess it's now a pacifist run for a rancid egg
do spells damage bluggsacs?
huh i can still pogo mushrooms with 0 damage, didn't think that was the case
i haven't gotten any eggs
i was in greenpath
Or buy them
just beat hornet 1
what's the earliest egg ๐ค
it would be the 60 geo one from sly
but i didn't fight gruz mother
and i can't beat her with 3 fireballs
Does 0 damage nail not refil soul?
no
Yikes
Not rly
what
what's the difference
Well
also will this overflow the geo counter ๐ค
The levels you have were not gained from spending geo
So you won't get geo for them
oh so it keeps track of spent geo?
Yup
That's why it won't work on previous patches
If you respec then you'll lose your levels and geo
But if you respec now you'll be where you were before the glitch
i guess I'll try to float glitch to the egg in blue lake
bc mantis village absolutely failed
oh wait
fuck
i can't even use stag stations because the nail doesn't hit the bell
holy shit
i am become god
thorns of agony
oh wait it's gonna do 0 damage too
i have beaten the system
or have i ๐ค
hold on what
apparently there are 2 enemies in CoT that die even with 0 nail damage

also city of tears without wall jump is actual cancer
@solemn rivet so, it did give me "all" of my geo back
it capped out but it still gave me way too much
meme
now that i've basically won the game, how much is enemy hp boosted
killed gruz mother in 2 seconds
but was that nail only
killed massive moss charger before it dug into the ground
kill a crawlid
literally 2 hit elder hu
how much damage do you have
36
how tf
idk it's just what happened
Still not as silly as straight up setting your nail damage to some high value
Using that save editor from a while back I set my starting nail damage to be 50
Just one shot everything
Actually, I think I reduced it down to 50 after finding out 100 was too absurd
I was killing bosses too quickly for my tastes
keep in mind this is not feasible in normal gameplay
Probably dump most of my levels into dex
str is better
no u
Well dex is both slash speed and crit damage
Strength would be the other stat to dump stuff into
i mean then you have to actually invest in luck
Well I don't really care for HP
And for Wisdom either
So I'd really only level up Strength, Dex, and Luck
idk i'd rather focus STR and level DEX after i at least get past pure nail damage levels
How many levels is that anyways?
Wait, so all nail upgrades in the mod doesn't give you pure nail damage?
no
they give 2 each
but they're also affected by the multiplier
so around 2x damage you're already past pure nail
Well, I guess I'm going to have to try it to see for myself
what
nice mod 
^
@serene tundra I think you might've posted in the wrong channel. This is #archived-modding-development, not #art-discussion
no problem
i just remembered i stayed in this channel cause of spritesheets 
3 shot a mantis lord
i think the room dupe broke enemy hp or something
also i'm totally going to fight radiance
eventually
going to fight failed champion before soul master
Due to a room duplication glitch, I now have far too many levels in Gradow's Bonfire Mod (found here: https://github.com/Ayugradow/bonfire-mod). What ensues ...
Yeah, first time I locked him was with lightbringer using the glass soul charm
would Kein mind if I basically used his HP bars mod as a base for the "damage dealt" feature of the bonfire mod?
how does it work, via imgui?
basically, yeah
lots and lots of smart thinking
I tried it all day today and couldn't get it anywhere near working
hmm let me try with text mesh
I'm not gonna steal his mod, by any means
I'm just gonna reverse engineer it and fit what comes of it to my needs
IMGUI is pretty slow and ugly
That's the essence of modding
What'd I do?
uses frames to give mana regen
instead of Time.deltaTime
so more fps = more mana regen
Ah
hmm what would I even do to fix it
have a variable called manaRegenTime
manaRegenTime += Time.deltaTime;
if( manaRegenTime >= 2 ){
manaRegenTime -= 2
regenMana()
}
So how does Time.deltaTime work?
its the time since last frame
so it'll return 0.01666666666666666666666666666667 at 60fps
Ah I see
Thanks
Gradow, your code to get enemy hp will be the same as kein's whether you take it from his mod or not
It's just getting a value from a game object
Might as well look at how he does it
I think he means more rendering
he already has hp, from the code I gave him to change health and geo drops
yup
Oh ok
he wants to add damage numbers
oh
then just create a text object on the canvas and move it about
sounds interesting
I'll research into that
oh
you can use text mesh
Too late for me

its not that complicated
just add all the functions you made for debug
into the api
Yeah, I am planning to release the canvas classes I made as a library dll
But there's bugs to fix first
btw I was meaning to ask you sean, how did you manage to put those nice borders on the debug mod?
via canvas
oh
It's just images
although sliced sprites don't seem to work
Look in the DebugMod folder
I was trying to get them to work for hitboxes
Hey everyone, sorry to intercept here out of nowhere. I was looking for a randomizer but couldnt find one by googling. Is there one out there?
yes
check pins for a google drive
itll be in there
you also need the modding api, also in the google drive
I'll look into it! Thanks 
I wish kcghost would port FSM mod to 1.1.1.8
oh it does
The only thing with the modding api on old versions is dream gate
Easy to add a version string to the api
But then I have to add checks in debug and randomizer
you could just have a support version on the mods themselves
oh btw for debug, a cool toggle to have under the boss section
on boss kill,
respawn boss
set health to full
set soul to full
activate dreamgate
Not sure how to auto dream gate but I'll look into it
Already have that reference
I can go find the state in a sec
Alright
public void autoWarp()
{
this.pmfsm.SetState("Warp End");
this.pmfsm.FsmVariables.FindFsmFloat("Gate X").Value = this.gm.playerData.dreamGateX;
this.pmfsm.FsmVariables.FindFsmFloat("Gate Y").Value = this.gm.playerData.dreamGateY;
this.pmfsm.FsmVariables.FindFsmString("dreamGateScene").Value = this.gm.playerData.dreamGateScene;
}
this is how I did it in my early vesion of bossrush
Alright
I'd have to manually set dream gate coords for each boss
Not too bad, though
this.bossRushGates[0] = new HK_MOD_TOOLS.bossRushGate("Crossroads_10", 13.81486f, 27.40562f);
this.bossRushGates[1] = new HK_MOD_TOOLS.bossRushGate("Crossroads_04", 95.01903f, 15.40562f);
this.bossRushGates[2] = new HK_MOD_TOOLS.bossRushGate("Fungus1_04", 26.61754f, 28.40562f);
this.bossRushGates[3] = new HK_MOD_TOOLS.bossRushGate("Fungus2_15", 30.3f, 7.405624f);
this.bossRushGates[4] = new HK_MOD_TOOLS.bossRushGate("Mines_18", 30.07801f, 11.40562f);
this.bossRushGates[5] = new HK_MOD_TOOLS.bossRushGate("Ruins2_03", 44.2238f, 70.40561f);
this.bossRushGates[6] = new HK_MOD_TOOLS.bossRushGate("Waterways_05", 83.09189f, 7.405624f);
this.bossRushGates[7] = new HK_MOD_TOOLS.bossRushGate("Fungus3_archive_02", 53.54183f, 110.4056f);
this.bossRushGates[8] = new HK_MOD_TOOLS.bossRushGate("Ruins2_11", 47.50203f, 95.40561f);
this.bossRushGates[9] = new HK_MOD_TOOLS.bossRushGate("Fungus3_23", 33.74541f, 29.40562f);
this.bossRushGates[10] = new HK_MOD_TOOLS.bossRushGate("Deepnest_East_Hornet", 24.43399f, 28.40562f);
this.bossRushGates[11] = new HK_MOD_TOOLS.bossRushGate("Abyss_19", 24.92674f, 28.40562f);
this.bossRushGates[12] = new HK_MOD_TOOLS.bossRushGate("Dream_01_False_Knight", 44.98343f, 28.40562f);
this.bossRushGates[13] = new HK_MOD_TOOLS.bossRushGate("Dream_02_Mage_Lord", 44.98343f, 28.40562f);
this.bossRushGates[14] = new HK_MOD_TOOLS.bossRushGate("Dream_03_Infected_Knight", 44.98343f, 28.40562f);
this.bossRushGates[15] = new HK_MOD_TOOLS.bossRushGate("Dream_03_Infected_Knight", 35.41851f, 6.405623f);
this.bossRushGates[16] = new HK_MOD_TOOLS.bossRushGate("Dream_Final_Boss", 44.98343f, 28.40562f);
heres most of them
that actually points to hollow knight
dnSpy killed Time Fracture :(
but I had him disabled
Benefits of modding api, you don't need dnspy
Although for now I don't think lightbringer makes sense to be on there
We don't have texture overriding as a feature
Not sure how to do that
Yeah that's why I've been hesitant about it
It looks easy to override language files, at least
They just call Resources.Load in the Language class
hey sean, is it possible to turn off the randomizer again?
You can't turn it off on a save it's enabled on, if that's what you mean
oh, so I have the choice to activate it or not when making a save?
Yes
I see, thanks 
Should be all updated
Cool
Thanks for the bug report KDT
sean found it
Is the up to date one in the drive folder yet?
Nope I'll get it
What's the best way to change it on Drive? It'd be kinda annoying to download the huge .zip, put it in, then reupload.
I dont think there is a way to change the content of a zip-file on the drive
Yeah I just remove the zip on there and upload again when I update
I like how the inventory has to go through 20 states before it actually loads the pane you want
no wonder it lags like shit
This looks like a spiderweb
some of them are better
Are you making these images yourself or did you make something to make images from the json automatically?
I'm making a thing to draw from json in a webpage
I'll add things like events / variables
I want to add another pane to inventory but its such a clusterfuck of so many fsms
Oh that would be sick
Let me know if you figure that out
We could add another charms pane or something
For modded charms
that was the first thing I was going to try and do
because that should be mostly copying the builtin charm page
and adding it the inventory controller
I've just gotta figure out how it generates the event, at Check Current Pane and Loop Through, it some how generates INV / MAP / JOURNAL / CHARMS, and that sends it through getting the page to the right / left and the pane to load
So with all mp boosting charms on in the new lightbringer you can cast a spell once every ~2.86 seconds using eye of the storm
At base mp regen it's once every 20 seconds
2 second tickrate feels way too harsh
It's actually not even possible to put all the charms on at once so the 2.86 is unachievable
@buoyant obsidian
So I've been told that essence drops are 1/200
But I have no idea where that number comes from
Anyone know where to see the drop chance?
in health_manager_enemy I believe there is a essence chance state
Alright
im having trouble getting the debug mod to work, ive tried copying and pasteing the debug mod files and the modding dll into the hollow knight files a few times but its not working
its probably not hard to get this to work but im bad
you're overwriting the vanilla csharp with the modding dll
C:\Program Files (x86)\Steam\steamapps\common\Hollow Knight\hollow_knight_Data\Managed\Mods\DebugMod.dll
thats where the debug mod dll goes
thats where i was putting the debug mod dll ๐ค
Is there a file called ModLog.txt in your save directory?
no
Then I don't think you put the modding dll in the right spot
have you replaced the vanilla assembly-csharp with the modding dll
That file should always exist after running the game
no i haven't done anything with the vanilla assembly-csharp, should i delete that and put the modding dll in its place or something?
am i supposed to delete assembly-CSharp and assembly-CSharp-firstpass or just assembly-CSharp
i copy and pasted the hollow knight files into another folder and im trying to use that for the debug mod
where am i supposed to be putting the "DebugMod" folder? maybe thats what im doing wrong
The folder structure for both zips is set up so you can just copy paste them into the main hollow knight folder
And everything will be in the right spot
so if i just copy and paste "hollow_knight_Data" and "DebugMod" from the debug mod folder into the hollow knight folder and delete assembly-CSharp it SHOULD work right
it'll overwrite it anyway
You need the assembly-csharp from the modding api download
I mean it's literally the only thing in the download
Of course you need it lmao
So @leaden hedge I've got the health_manager_enemy json and I'm looking at the states you mentioned but I can't make much sense of it
There's apparently an "Essence Chance" int but I'm not seeing that when I print out all the ints in game
its probably unset until health_manager_enemy goes into that state
Alright
I'll try forcing the fsm to essence chance state first
Still nothing
I just want to know if different enemies have different drop chance
For low% nsoob routing
Does SetState take effect immediately?
Maybe I need to wait a frame before printing
yeah it should work instantly
Alright
the problem is with playmakerfsm
is they have these FSMString that work and make sense
but then they just gave up
and everything else is just byteData
So it's probably stored as bytes is what you're saying?
There's a ton of variables, just not essence chance
That seems unlikely to me
hmm nah, they aren't used as bytes
it just stores everything as a byte then converts it to what it needs
look at
byteData
paramDataType
paramName
paramDataPos
paramByteDataSize
tfw i still cant get it to work, does it not work if you try to use a mod on backup files of the game
have you got appid.txt
yeah
it launches the default version unless you have a text file
Yeah
to say what app it is
i was thinking that might be what was happening
So it's running the wrong files even if you click the other exe
alright ill try it on my main files, if it doesn't work after that then i will be insanely confused
steam_appid.txt
367520
if you put that in the same folder as your exe
it should work
So where is the byteData stored?
its on each state
Oh ok I was looking at the full fsm var
its how everything other than strings is identified and stored
pretty sure it gets converted to FSMInt / FSMBool etc
ITS WORKING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! only took like an hour lmao
thanks for the help guys
I'm not seeing a byteData property on the states either
but some stuff isn't stored at all by vars
check "Pooled" and you'll see paramName, first 2 are min and max, then paramDataType are 16 for those 2, so they are 5bytes
and the ParamDataPos are 0 and 5 and paramByteDataSize are 5 / 5
so if you then check Pooled.byteData, you'll see min = 1,0,0,0,0 and max = 60,0,0,0,0
so the min and the max for the randomInt is 1 and 60
and that isn't even stored anywhere in the fsm
Alright, so it's probably 1/60 for the specific enemy you're looking at, then?
well pooled is 1/60, unpooled is 1/299, pooled W is 1/40 unpooled W is 1/200
1/200 is what people say it is
I assume depending on the logic it goes to those different states
Yeah
this is the next thing I'm going to tackle, is this byteData
because its by far the most unwieldly stupid shit i've ever seen
Yeah, I hate everything to do with playmaker
Put up a new debug mod build with some minor bug fixes:
Enemy panel no longer gains duplicate entries
HP bars/collision no longer stay active after disabling the enemy panel
Alright, I'm having a problem with moving the modding namespace to a second dll
I'm pretty sure it's because mods no longer have access to classes within assembly-csharp.dll when not loaded from there
But I don't know how to fix that
they should
although I dunno if you can do cylical stuff
like A depends on B and B depends on A
I don't think there's anything like that
so edit class
at the bottom theres a folder
click that, and add assembly-csharp as a reference
I'm not using dnspy here
And I do have that as a reference in the mod dll in visual studio
you should be able to use all its classes then
Well, in any case, I'm getting this when the mod loader tries to load mods:
System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded
And the mods load fine if I'm not using this, so I know that's not the problem
I don't really have any ideas, here
Wait a minute I know what the problem is
Yeah, I was just being dumb
It loaded the mod fine now but I for some reason don't have input on the main menu
So something else is breaking, I guess
probably
ok great lol
datatype = 17
data = 0, 1, 77, 97,112,32,83,104, 111,114,116,99,117,116, <- this is an ascii string Map Shortcut
datatype = 17
data = 0, 0 <- this is the value 0
This happened two weeks ago to someone who just reinstalled the game
There is hope yet
hope for what
our children
hope for memes
in a way, yes
Sean, did you update the google drive version of the randomizer?
the one with the most recent change by adding compass?
I don't think he did
so intended skips..... is getting into mantis village part of the logic without claw or dash or anything?
okay. just wanted to know if that was an intended part of the logic
Yeah
Only in hard mode
You need to do a triple fireball past queen's station then explosion pogo without dash
Then either the hard as fuck mantis pogo to the left side or 2x fireball skip
Oh you only have to do that
or you could go around
You can't go around
yeah. sounds like it. lol
looking at #races-discussion - it seems like the randomizer is currently pretty easy to know all the locations of stuff. Does it really just store it in plain text XML? Would think that it should be a seed and that the ability to determine what's in the seed should be difficult without going extra distance. (but maybe i'm just misunderstanding)
It generates the random locations based on a number that you input in the game. That generates/decodes the randomization and puts it in a text file for reference later (if desired).
Sure, you could just go open that text file and cheat but what fun is that
Maybe I'm misunderstanding the question? The seed locations aren't generated until the game is started.
The randomization algorithm is what's stored in xml, essentially
Not the actual randomizations
The google doc setup is kinda inconvenient to me, it takes quite a long time for my internet to download / reupload the big .zip
just updated Lightbringer with mana regen balancing
I did yesterday a randomizer run sean, it's super fun 
the only thing bugging me was the display of the wrong sprites for the items when picking them up, but it's not that bad
hmm I see
I didnt really understand the difference between Easy and Hard tho. Is there a chance for a "harder" randomization?
hard has harder requirements for each item
so its more likely a difficult or obscure trick is required to complete the run
hmm, I see.
small thing
but, with the randomizer, on the main menu, where you can toggle randomizer off/easy/hard
you can't get to that menu using a controller. if you use up/down buttons, it skips over the randomizer input field
works with the mouse though
also, it'd be hilarious if the mask/soul fragments were randomized too
ah, so just placing stuff on top of it?
well not the way controllers interact with it
but yeah, just adding our own ui in the free space
i believe that's in the works wyza
@rain cedar I think it'd be a good idea to add a version to mods
yes
like just above the 1.1.1.8
write DebugMod - 0.1.0.0
but obviously for every installed mod
versioning = highly important for diagnosing issues
Yeah, mod version would be easy to implement
Getting controller to work for the menus is basically impossible, though
ยฏ_(ใ)_/ยฏ i'm not fussed, but figured I'd point it out if it was one of those things where you developed and played entirely on KB/M ๐
My day job is coding, and it's always stuff you never think of that gets you
yeah, I'm currenntly working on ui stuff, hopefully I can get an extra pane added to the inventory
that'd be interesting, thoughts on what you'd put there, or just the goal of "get the ability to add Pane's added so that whoever can put whatever"
adding panes would be useful for most mods
bonfire could add a level screen
most mods could add new charms
It'd be really nice for Lightbringer
That mod replaces like half the charms
And sure some of those make sense to replace
I understand the inventory control
But others like lifeblood heart
I've just not figured out how to edit it at runtime
anyway, thoughts on adding masks/soul vessels to the pool of randomizer stuff? or is that not possible due to their nature?
It's possible but harder than the other stuff
Because I'd have to look at sceneData
Everything I'm doing now is in the player data
All the player data stores is your mask count
Scene data stores which you've picked up
you could remove the transitions from Blocker, Blocker Control
specifically Idle -> Close
oh nvm. it needs to look at scene data to know that you've picked up that item
ignore me
gonna love the seed you get where dream nail is dropped by the glubber effigy ๐
That's impossible
not possible
๐ฆ
guessing one of them is behind something you need shadow dash for?
trying to think of where that would be...
it'd just be cancer lol
it's not that. the algorithm doesn't allow it
cuz getting all grubs would be so stupid
Yeah, I'm specifically not allowing grubberfly/grubsong to be anything important
it's a bit different from pedestal seed. lol
pedestal seed would add like.... 15 minutes or so to a run
grub elegy would add like.... an hour and a half
grubsong? 10
that wouldn't be terrible to have something good behind
nah. that one would be decent
would have to work out which grubs are possible with what abilities though to properly code it
10 of them is easy enough and getting a few grubs isn't bad for geo either
my first seed last night had mothwing behind fragile strength, yay 600 geo early game without getting into the city
that's rando
the big guys in FC, the ones with the clubs
yeah
drop like 40 or 50 I think
and you can get a couple hundred out of early grubs
which could be valuable if grubsong was something that could be good
PlayMakerFSM fsm = FSMUtility.LocateFSM(blocker, "Blocker Control");
for (int i = 0; i <= fsm.FsmStates.Length; i++)
{
if (fsm.FsmStates[i].Name == "Idle")
{
fsm.FsmStates[i].Transitions = fsm.FsmStates[i].Transitions.Skip(1).ToArray();
}
}
I think something like this would work too lazy to test though 
completely unrelated to what you guys are talking about
this is at sean
course my biggest fail was that before i got to fragile stuff, i had bought a couple of charms (spell twister+shaman stone), if I hadn't done that, it would have been much less painful
unlocking VS position would be pretty huge
oh yeah.... i've learned to not buy stuff unless i know i don't have to buy essentials
Alright KDT, I'll try that
yeah, it's my first rando run, which i haven't even finished yet. gonna take a few to get used to which are fast places to check and when to spend/not to spend
yeah. early game routing is pretty consistent
what about charm notches, any way to throw those into the pool too?
(or a reason not to?)
that would be weird with the ones you can buy from salubra
since those are locked behind charm count
so what you're saying is, there's a chance ๐
mask/vessel stuff is more interesting imo
if you know masks/vessels are randomized, would make things much more interesting
^
well if it was to other stuff like skills
what if the shroom notch could have mantis claws ๐
Alright KDT, this works but there seems to also be a transition to block from spitting
Should be easy to remove that as well
Thanks
Alright
Yeah, I'll change the Skip(1) to actually checking state name I think
Makes sense
oh
you could also remove the fireball check
by sending Set R and Set L straight to roller
What do those events do?
er probably
fireball check says if you would fire a roller but you've got no fireball it shoots goop
makes sense
Oh ok
and i think we've known that
I'll have to change that
thsoe events literally just spawn the roller
but knowing the chance to spawn a roller and if there's another trigger would help normal runs
can roller? shoots goop instead
GetPlayerDataInt(fireballLevel)
HutongGames.PlayMaker.Actions.IntCompare
this is all there is
if the int is 0 then shoots goop
else shoots roller
This might not be a problem, anyway
Depending on how it checks fireballLevel
If it uses GetInt then randomizer will override that and return 1 anyway
Because the fireball pickup has been obtained
they are weighted the same @young walrus
unless there is some bug in the randomness its 50/50
congrats you turned the shaman into a charm
a whole new rando category
where even the bugs themselves can be charms
I need to test if this happens every time you try to pick that up before talking to her
That's bizarre
inb4 the mask maker is dream gate ๐
so with your guys' modding tools, do you have to redeploy the dll + restart the game every time you make a change? or do you have some way to hotload changes in?
Gotta recompile the dll and restart the game
bleh. wonder if there is some way to unload the assembly on demand. hmmm
probably too many things that would hold object references to do that
i guess
Modifying the game while it's running and having it actually take effect is not very realistic
well, if it was something where you could just exit to main menu, reload and then go back into the game, (assuming the mod isn't modifying the main menu)
might aswell reload the game then
guess it depends on how long it takes for the game to load to main menu for you
i want to say even with a NVMe, it's a good 3-5 seconds more to exit game/start game
not as bad as trying to fiddle with factorio mods, when that load time is like 15-20s even on a high end machine ๐
can you attach the VS debugger to it?
though again that might not be helpful, idk, mostly curious. I'd love to play with modding, but just don't have the time to really devote to it, so mostly just gathering understanding for the sake of adding knowledge
could nail upgrades be randomized?
i'd randomize pale ore before nail upgrades
having items locked behind pale or AND geo seems like a bit much
you could put ore into relic + key pool
ah mb
Also hasDashSlash is great slash and hasUpSlash is dash slash
yes
Team cherry fucked up their nail art vars
Annoying
I get the vars being different from in game like white key
But there's literally an ability called dash slash and hasDashSlash is unrelated
can you really trust the guys who instead of making an array, made 36 seperate variables to track charms
They have an array of equipped charms as well as the equippedCharm_x vars, though
They did both
Lmao
Actually even worse than just not having an array
those are actually used for different things
the array is for the thing on the charm pane, that shows your used up notches
Is there a good reason for them to be used for separate things, though?
Could just use the array for everything
technically equippedCharm_x == false is faster than checking that x doesn't exist in an array
but I doubt thats what they were going for
I'd say its a playmaker thing, but I know you can call a method
so you could just create / call getCharmEquipped(x)
if you're going for performance, an array may not even make sense, you could probably go even faster using bit-shifting
though I don't know that they necessarily needed it there. An array of Enums would have been sufficient
@rain cedar - are there charms that aren't randomized ?
A few, yeah
I'm gonna try to add in all of them that are missing except kingsoul/void heart and shape of unn
Which might just be joni's blessing and lifeblood core
Not sure
glowing womb?
Glowing womb is random
i want unn to spit out a compass for me
ah, so i just got lucky that this seed had it in vanilla
i need that to be canon
Shape of Unn can't really be random until Isma's Tear is random
also, found a place where you can get stuck that requires save/quit. the place where you get the double jump, if you don't have it, i don't see a way out
though i suppose save quit there is faster anyway
I don't really care about places where you can quit
k
Too many of those to worry about fixing them all for every item set
Places where you're actually completely stuck I'll try to fix, though
Let me know if that happens
k
plus, you can still get to double jump, even if you can't get back out
double jump is randomized
that's why Sean took the bench away there
unless you are talking about glitching
i know, but you can still check there
oh, yeah, for sure
I might have hard locked in the randomizer
how so?
is there any thing in the logic that weights things like double jump being closer to the beginning or is it purely random outside of it not being behind something that requires it or a dependency?
I got to the abyss without the walljump. I picked up the shadow cloak item which auto saved the game there
and now I cant get back out of the ancient basin
unless I miss something
The only way you could have gotten shade cloak without wall jump is with glitches
And I'm not really building it around glitches for now
what do you mean with glitches?
you can sean
I didnt oob or anything
you can get to hornet 2 with just double jump
yea
Hang on
Oh wait
I get it
You can get to shade cloak without wall jump if you already have shade cloak from somewhere else
I didn't think of that option
Jesus
hahaha
that's dedication
that's actually hilarious
but when I get back to the beginning of the basin I cant get back
oki, just wanted to let you know
is it possible to just remove that hard save?
Yeah, maybe
you get that stuff figured out with the baldur for VS?
Yeah I got the Baldur to not close anymore a while ago
cool cool. is that the most recent build on the google drive then?
Nah
Vengeful Spirit isn't in the randomizer yet, I'm just rewriting the xml file right now to make more sense
Changing some requirements while I'm at it because some of them don't make too much sense
Added in grubberfly's elegy as a potential item for getting into greenpath after watching xeph play earlier
Hadn't thought of that before
yeah.
And I kill the baldur without fireball every time I play that
even that alone would allow VS to be randomized
Nah
...provided elegy is somewhere early
could the nail master's skills be part of the skill pool?
Yeah, probably
One thing at a time, though
Not gonna try too much new stuff at once
hah, np, just throwing out ideas ๐
Do you think it's worth doing anything about the waterways bench?
If you rest there without wall jump or monarch wings you're stuck
Yeah, if spells are being randomized that's worth fixing, I think
Without random dive placement you would have had to pogo on enemies to get to the bench, but now it will be much easier
could make it possible only in hard mode?
No, you're completely stuck if you rest there without wall jump or monarch wings
ah
oh nice, you can dynamically remove them? neat
As a general rule, you can do anything to the scenes as long as you're only using game objects that already exist in the scene
So I could turn a screen into a jumping puzzle if I really wanted to put in the effort
But I couldn't easily do something like put a saw from white palace in the soul master fight
that'd be sadistic
I could actually do that
It just wouldn't be easy
And it would make the game take forever to load
Because basically what would be happening in the load is:
Load the Soul Master room
Load a random room in White Palace
Save a reference to a saw
Deload the White Palace room
Move the saw into the middle of the fight arena
is wayward compass randomized?
Nah not in the current version
But there's no code changes to get that in, so I will add it
wonder if there should be a #randomizer channel, I mean, #archived-modding-development makes sense, but if lots of people are doing it... /shrug
The only reason to have multiple channels is so that multiple discussions don't happen in the same place at the same time
So as long as that's not a problem I don't see a reason for mod specific channels
@leaden hedge does your bonfire mod increase the health/damage/etc of later bosses such that just going through the game vanilla is basically impossible (IE you need to level)
its gradows 
and it increases health by 2 at most iirc
it starts at 1.4 and ends at 2.4
Great, the game isn't just checking the ints directly for if you can cast spells
Now I have to figure out some magic to return the right number when you're trying to cast
Seems like charms and abilities are the only things where I can fuck with the Get/Set functions without messing them up
All that does is call PlayerData.GetInt, though
Is that the spell control?
yes
Looks pretty bad
Nice
I make a 2k by 2k svg to draw lines on
I'm surprised spell casting doesn't lag more
no surprise its glitchy af though
Well, I'm able to cast spells when I set the int for them now
Hopefully the pickups work fine too
oh btw, Knight, Spell Control, has a bool called "Dream Focus" which im pretty sure controls whether or not you heal or suck
if you didnt find it yet
Alright, I'll try changing that when you warp in debug mod
Well, checking stack trace seems to work for fireball but I don't think it's going to work for wraiths
Guess I don't have an easy solution
Have to mess with the fsm
Don't ask me why the stack is different
I think I did get the shitty easy solution working, though
Just gonna test it some more to be sure we're not all running a broken randomizer tomorrow
did you remove the floors in soul masters room?
No, but I'll look into it
There's probably some fsm event I can send to them to do it cleanly
Nah, this doesn't work for dive
Didn't spawn after soul master
Guess the next thing to try is checking if the fsm is in one of the has spell? states
If you can use reflection to edit ActionData.fsmStringParams you could just change what its looking for
to say _fireballLevel
Yeah, that would be better
Because with my way it is technically possible for another check to happen at the same time
Which would mess it up
@leaden hedge Could you get me a picture of the acid fsm?
Oh wow that's so much less than I expected
Check
PlayerDataBoolTest(hasAcidArmour) is check
and
Disable
SetFsmInt(undefined, damages_hero, damageDealt, 0, FALSE)
SetFsmInt(undefined, damages_hero, hazardType, 0, FALSE)
is what disable does
undefined is base gameobject in this case
Thanks
oh and the FALSE is just whether or not it runs every frame
which in this case it isn't
I think there is more to this than this FSM
I've tried setting those to 0 and it just got rid of the damage but didn't add swimming
Oh yeah, the water fsm is way more complicated
Probably needs something similar to that on it
I think if you do PlayMakerFSM fsm = JsonUtility.FsomJson<PlayMakerFSM>(waterJson);
it "should" work
Well, you've got a lot of other things so you don't need it too badly
you can beat the game rn 
it is fun having to pogo and double jump instead of dash though. it's like a different game sometimes
I'm trying to edit the fsm with reflection but the only fields I'm seeing are type_info and _impl
No fsmStringParams
Looking at the ActionData on the has spell? states
typeof(ActionData).GetProperties().Select(f => f.Name).ToList();
what does that print
I'll try that
I was doing
typeof(ActionData).GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static)
Alright that's found a lot of fields but not the string params one
There's GenericParamterAttributes
I'll look into that
Alright, trying to get the type of the variable has somehow caused an error
NullReferenceException: Object reference not set to an instance of an object
then something to do with a camera
@rain cedar - was thinking about the rando logic. in my first 2 seeds (which I admit is rather narrow), both had dream nail easily acheivable early on via shops.
One thing that the super metroid randomizer does, is bar certain powerful/coveted/required items from being available super early in the game, to force higher chances of having to explore to find them.
Nah, I'm not getting a null reference, I'm getting object does not match target type
But I don't get why
I mean state.ActionData is obviously of type ActionData
given dream nail being one of the primary linchpins of the game, would think it might be better to ensure it can't be in a shop and can't be the earliest accessible items
@buoyant wasp I'm already limiting the appearance of important items
There's just 3 dream nail pickups
Because getting dream gate or awoken dream nail first gives you dream nail instead and swaps awoken/gate to be where dream nail was meant to be
hmm
then perhaps all 3 can't be early? I mean, to finish the game you need, what, dash+mantis+dream nail+super dash?
all shops + fireball charm +thorns.
Fireball charm?
uhm, normally soul catcher
Right
basically ensure that it is behind obtaining at least 1 movement ability and no shops. I think finding everything you need to beat the game in a shop to be meh. This run I had Dream Nail + Mothwing Cloak both in shops
Yeah
Shops were a lot worse before I added the weight to charms
First run I did on that got all 5 movement abilities between salubra and sly
haha
perhaps a hard limit to say that in addition to it not being able to have dream nail, the shops can't, combined, have more than 1 or 2 abilities
(including the spells assuming you can get those via pickups after your new stuff)
cause then it's just, "hey i gotta go farm 1500 geo and i'm good to go"
Yeah, could be a good idea
just had a seed where dream nail was at sharp shadow
gate was at awoken nail, and awoken nail was at elegy
BAH
you know what I just realised, when I was testing this reflection stuff and it not working
I was moving my /Mods/dll -> my bin folder
Nice
GameObject inv = UnityEngine.GameObject.FindGameObjectWithTag("Player");
PlayMakerFSM fsm = FSMUtility.LocateFSM(inv, "Spell Control");
for (int i = 0; i < fsm.FsmStates.Length; i++)
{
if (fsm.FsmStates[i].Name == "Has Fireball?")
{
FieldInfo[] fieldInfo = typeof(HutongGames.PlayMaker.ActionData).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
for (int j = 0; j < fieldInfo.Length; j++)
{
if (fieldInfo[j].Name == "fsmStringParams") {
Console.AddLine(fieldInfo[j].Name);
}
}
}
}
yes players variable is called inv 
You can just do HeroController.instance.spellControl
either way that prints fsmStringParams to the console
There you are 
so its definitely in there
I'm not sure why that works when mine didn't
I mean the only difference I can see is I had BindingFlags.Static in there too
Thanks, though
when I just did ActionData it gave me issues
I had to type out HutongGames.PlayMaker.ActionData for some reason
which charm# costs one
1, for one
Alright, I've got a reference to the fireballLevel string now
But I don't think we can add variables to playerdata without it breaking
So I'm not sure what my options here are now
Didn't think this far ahead
why do you need to
change the string, and look for the new string in PlayerData.GetInt
Oh, will it just work that way?
I assumed it would get an error because the int isn't there
it should I think you have to reload the state somehow though
well, only if you use the GetValue thats in GetInt
GetInt just uses reflection to get variables in PlayerData though
so put an if above that, and say if string = _fireballLevel return whatever
it'll never get to the reflection part
Oh yeah, obviously
GameObject inv = UnityEngine.GameObject.FindGameObjectWithTag("Player");
PlayMakerFSM fsm = FSMUtility.LocateFSM(inv, "Spell Control");
for (int i = 0; i < fsm.FsmStates.Length; i++)
{
if (fsm.FsmStates[i].Name == "Has Fireball?")
{
FieldInfo[] fieldInfo = typeof(HutongGames.PlayMaker.ActionData).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
for (int j = 0; j < fieldInfo.Length; j++)
{
if (fieldInfo[j].Name == "fsmStringParams") {
List<FsmString> value = new List<FsmString>();
value.Add("charmCost_1");
fieldInfo[j].SetValue(fsm.FsmStates[i].ActionData, value);
fsm.FsmStates[i].LoadActions();
}
}
}
}
you need to make sure to do LoadActions()
to reload the state
although this sets it to charmCost_1 
thats easier to test the actual state is working
@solemn rivet when you wake up or whatever, what do you reckon to making the more powerful spells require higher int
Put up a new randomizer build:
Added spells to randomizer
Added a couple missing charms
Baldur in shaman hut no longer closes
Breakable floors after soul master are gone if you don't have dive
Redid xml format to be more easily changeable
what about ismas 
There's a small bug in that reloading a scene with dive or wraiths in it after grabbing them makes the pickups reappear
But I've deemed that not important enough to care about right now
And nah no Isma's, but I'll look into duplicating the water fsm
But yeah I think the wraiths and dive pickups are looking at the playerdata ints directly for some reason
And I'm just keeping those at 0
Should be easy to fix, but I'm going to bed now
@leaden hedge Send me your ModLog.txt
Seems to be working fine for me, got dashmaster from fireball and I can't cast fireball
Yeah, this says vengeful spirit is at lifeblood core
I dunno
Turn off debug mod and try again, I guess
Just in case that's the problem
Don't really see how it would be, though
Anything odd about your setup for the game?
I play in japanese but I don't think that'd affect it
Shouldn't, but I'll try that
Really the only way I see this could happen is if the code to change the fsm is crashing
But I've got that in a try catch to print errors
blocker worked though
Can you send me the .rnd save file?
The baldur in front of greenpath seems to only spit fireballs, even with vengeful picked up
might have been my reference I made to test it
Yes
I believe those are the only 2 places
Alright, fixed
Give me a sec to upload it
Alright it's up
Going to sleep for real this time if nobody finds another important bug soon
I just got desolate dive twice...
from dashmaster and from mark of pride
do you have lv2 dive?
no
aaahhh... sorry D:
