#archived-modding-development

1 messages ยท Page 18 of 1

solemn rivet
#

I'll focus on implementing int for now

hazy sentinel
marble scarab
#

oh

hazy sentinel
#

0 nail damage though so I'm fucked

#

i'll see if i can get a rancid egg

solemn rivet
#

Respec

#

See if it helps

hazy sentinel
#

i don't have any eggs

solemn rivet
#

Hahaha

#

Did str overflow?

hazy sentinel
#

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

solemn rivet
#

That should never happen tho

hazy sentinel
#

what should never happen

solemn rivet
#

Nowhere in the code does a stat get diminished

#

Ever

hazy sentinel
#

idk it happened

solemn rivet
#

It only either gets set to a value (always non negative) or incremented

#

Maybe the dupe screwed with memory

hazy sentinel
#

guess it's now a pacifist run for a rancid egg

solemn rivet
#

And overwrote stats

#

But lol thanks for that

hazy sentinel
#

do spells damage bluggsacs?

solemn rivet
#

Probably

#

Any natural eggs left?

hazy sentinel
#

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

solemn rivet
#

Or buy them

hazy sentinel
#

just beat hornet 1

solemn rivet
#

I see

#

At least you won't die

hazy sentinel
#

what's the earliest egg ๐Ÿค”

solemn rivet
#

Dunno

#

Tuk knows

hazy sentinel
#

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

solemn rivet
#

Does 0 damage nail not refil soul?

hazy sentinel
#

no

solemn rivet
#

Yikes

hazy sentinel
#

but if i can get literally 1 rancid egg

#

i will become god

solemn rivet
#

Not rly

hazy sentinel
#

what

solemn rivet
#

It just gives you back all spent geo

#

Not actually the levels

hazy sentinel
#

what's the difference

solemn rivet
#

Well

hazy sentinel
#

also will this overflow the geo counter ๐Ÿค”

solemn rivet
#

The levels you have were not gained from spending geo

#

So you won't get geo for them

hazy sentinel
#

oh so it keeps track of spent geo?

solemn rivet
#

Yup

#

That's why it won't work on previous patches

#

If you respec then you'll lose your levels and geo

hazy sentinel
#

guess I'll grind 5.9 million geo and get 5 nail damage then

solemn rivet
#

But if you respec now you'll be where you were before the glitch

hazy sentinel
#

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

#

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

#

it capped out but it still gave me way too much

#

now that i've basically won the game, how much is enemy hp boosted

#

killed gruz mother in 2 seconds

heavy geyser
#

wow git gud

#

beat her in 0 seconds

#

or less than a second

hazy sentinel
#

but was that nail only

hazy sentinel
#

killed massive moss charger before it dug into the ground

marble scarab
#

kill a crawlid

hazy sentinel
#

literally 2 hit elder hu

marble scarab
#

how much damage do you have

hazy sentinel
#

36

marble scarab
#

how tf

hazy sentinel
#

idk it's just what happened

deep pilot
#

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

hazy sentinel
#

hey man, i earned this game break

deep pilot
#

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

hazy sentinel
#

i also have 2.61x base swing speed and 27 blue hearts

#

so there's that

deep pilot
#

Yeah, I want to start a new playthrough with that bonfire mod

#

See how things go

hazy sentinel
#

keep in mind this is not feasible in normal gameplay

deep pilot
#

Probably dump most of my levels into dex

hazy sentinel
#

str is better

civic hatch
#

no u

deep pilot
#

Well dex is both slash speed and crit damage

#

Strength would be the other stat to dump stuff into

hazy sentinel
#

i mean then you have to actually invest in luck

deep pilot
#

Well I don't really care for HP

#

And for Wisdom either

#

So I'd really only level up Strength, Dex, and Luck

hazy sentinel
#

idk i'd rather focus STR and level DEX after i at least get past pure nail damage levels

deep pilot
#

How many levels is that anyways?

hazy sentinel
#

8 or 9? i'm not sure

#

i mean w/ all nail upgrades, not from base

deep pilot
#

Wait, so all nail upgrades in the mod doesn't give you pure nail damage?

hazy sentinel
#

no

#

they give 2 each

#

but they're also affected by the multiplier

#

so around 2x damage you're already past pure nail

deep pilot
#

Well, I guess I'm going to have to try it to see for myself

hazy sentinel
#

what

marble scarab
#

what

#

wrong channel

hazy sentinel
#

nice mod hollowomg

marble scarab
#

^

dapper folio
serene tundra
#

wait

#

i apologize

#

yes

dapper folio
#

no problem

serene tundra
#

i just remembered i stayed in this channel cause of spritesheets noot

hazy sentinel
#

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

hazy sentinel
solemn rivet
#

Yeah, first time I locked him was with lightbringer using the glass soul charm

solemn rivet
#

would Kein mind if I basically used his HP bars mod as a base for the "damage dealt" feature of the bonfire mod?

leaden hedge
#

how does it work, via imgui?

solemn rivet
#

basically, yeah

#

lots and lots of smart thinking

#

I tried it all day today and couldn't get it anywhere near working

leaden hedge
#

hmm let me try with text mesh

solemn rivet
#

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

leaden hedge
#

IMGUI is pretty slow and ugly

buoyant obsidian
#

That's the essence of modding

leaden hedge
#

oh 753 fix your lightbringer

buoyant obsidian
#

What'd I do?

leaden hedge
#

uses frames to give mana regen

#

instead of Time.deltaTime

#

so more fps = more mana regen

buoyant obsidian
#

Ah

solemn rivet
#

yeah

#

I tried to cheat using CT and was disappointed

buoyant obsidian
#

hmm what would I even do to fix it

leaden hedge
#

have a variable called manaRegenTime

#

manaRegenTime += Time.deltaTime;

#

if( manaRegenTime >= 2 ){
manaRegenTime -= 2
regenMana()
}

buoyant obsidian
#

So how does Time.deltaTime work?

leaden hedge
#

its the time since last frame

#

so it'll return 0.01666666666666666666666666666667 at 60fps

buoyant obsidian
#

Ah I see

leaden hedge
#

but if you lagged for a frame to say 30fps it'd return double that

buoyant obsidian
#

Thanks

rain cedar
#

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

leaden hedge
#

I think he means more rendering

#

he already has hp, from the code I gave him to change health and geo drops

solemn rivet
#

yup

rain cedar
#

Oh ok

leaden hedge
#

he wants to add damage numbers

rain cedar
#

Just use canvas to be different

#

Easy

leaden hedge
#

you can attach a canvas as a child of each enemy

#

and it'll follow them

solemn rivet
#

oh

leaden hedge
#

then just create a text object on the canvas and move it about

solemn rivet
#

sounds interesting

leaden hedge
#

canvas is similar to IMGUI

#

but it exists in the game as an object

solemn rivet
#

I'll research into that

rain cedar
#

Canvas is overly complicated and awful

#

It was never meant to be used in script

solemn rivet
#

oh

rain cedar
#

Don't actually use it

#

Save yourself

leaden hedge
#

you can use text mesh

rain cedar
#

Too late for me

solemn rivet
leaden hedge
#

its not that complicated

#

just add all the functions you made for debug

#

into the api

rain cedar
#

Yeah, I am planning to release the canvas classes I made as a library dll

#

But there's bugs to fix first

solemn rivet
#

btw I was meaning to ask you sean, how did you manage to put those nice borders on the debug mod?

leaden hedge
#

via canvas

solemn rivet
#

oh

rain cedar
#

It's just images

leaden hedge
#

although sliced sprites don't seem to work

rain cedar
#

Look in the DebugMod folder

leaden hedge
#

I was trying to get them to work for hitboxes

solemn rivet
#

I though it was some other way

#

anyway, thanks for all the info

summer tapir
#

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?

leaden hedge
#

yes

#

check pins for a google drive

#

itll be in there

#

you also need the modding api, also in the google drive

summer tapir
#

I'll look into it! Thanks cirLove

rain cedar
#

I should port the modding api to old versions at some point

#

1028 at the least

leaden hedge
#

I wish kcghost would port FSM mod to 1.1.1.8

rain cedar
#

It's a mod to playmaker.dll

#

Probably works on any version

leaden hedge
#

oh it does

rain cedar
#

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

leaden hedge
#

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

rain cedar
#

Not sure how to auto dream gate but I'll look into it

leaden hedge
#

you get a reference to the dream nail

#

and then just set state

rain cedar
#

Already have that reference

leaden hedge
#

I can go find the state in a sec

rain cedar
#

Alright

leaden hedge
#
        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

rain cedar
#

Alright

#

I'd have to manually set dream gate coords for each boss

#

Not too bad, though

leaden hedge
#
            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

rain cedar
#

Oh, thanks

#

Why do you have lost kin twice?

leaden hedge
#

that actually points to hollow knight

buoyant obsidian
#

dnSpy killed Time Fracture :(

leaden hedge
#

but I had him disabled

rain cedar
#

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

buoyant obsidian
#

Yeah that's why I've been hesitant about it

rain cedar
#

It looks easy to override language files, at least

#

They just call Resources.Load in the Language class

buoyant obsidian
#

Framerate mana bug fixed!

#

I even saved Time Fracture from dnSpy

summer tapir
#

hey sean, is it possible to turn off the randomizer again?

rain cedar
#

You can't turn it off on a save it's enabled on, if that's what you mean

summer tapir
#

oh, so I have the choice to activate it or not when making a save?

rain cedar
#

Yes

summer tapir
#

I see, thanks zurairNice

buoyant obsidian
#

Should be all updated

rain cedar
#

Cool

buoyant obsidian
#

Thanks for the bug report KDT

leaden hedge
#

sean found it

rain cedar
#

Is the up to date one in the drive folder yet?

buoyant obsidian
#

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.

summer tapir
#

I dont think there is a way to change the content of a zip-file on the drive

rain cedar
#

Yeah I just remove the zip on there and upload again when I update

leaden hedge
#

maybe you should split it into 2 zips

#

assets / code

leaden hedge
#

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

rain cedar
#

This looks like a spiderweb

leaden hedge
rain cedar
#

Are you making these images yourself or did you make something to make images from the json automatically?

leaden hedge
#

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

rain cedar
#

Oh that would be sick

#

Let me know if you figure that out

#

We could add another charms pane or something

#

For modded charms

leaden hedge
#

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

rain cedar
#

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

rain cedar
#

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?

leaden hedge
#

in health_manager_enemy I believe there is a essence chance state

rain cedar
#

Alright

hexed basalt
#

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

leaden hedge
#

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

hexed basalt
#

thats where i was putting the debug mod dll ๐Ÿค”

rain cedar
#

Is there a file called ModLog.txt in your save directory?

hexed basalt
#

no

rain cedar
#

Then I don't think you put the modding dll in the right spot

leaden hedge
#

have you replaced the vanilla assembly-csharp with the modding dll

rain cedar
#

That file should always exist after running the game

hexed basalt
#

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?

leaden hedge
#

yes

hexed basalt
#

am i supposed to delete assembly-CSharp and assembly-CSharp-firstpass or just assembly-CSharp

leaden hedge
#

just assembly-csharp

#

make a backup

hexed basalt
#

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

rain cedar
#

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

hexed basalt
#

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

leaden hedge
#

it'll overwrite it anyway

rain cedar
#

You need the assembly-csharp from the modding api download

hexed basalt
#

oh...

#

i should have asked if i needed that or not

#

im dumb

rain cedar
#

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

leaden hedge
#

its probably unset until health_manager_enemy goes into that state

rain cedar
#

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

leaden hedge
#

yeah it should work instantly

rain cedar
#

Alright

leaden hedge
#

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

rain cedar
#

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

leaden hedge
#

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

hexed basalt
#

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

leaden hedge
#

have you got appid.txt

rain cedar
#

Oh wait

#

I get what's happening

#

Are you using Steam?

hexed basalt
#

yeah

rain cedar
#

Alright

#

Steam is dumb

leaden hedge
#

it launches the default version unless you have a text file

rain cedar
#

Yeah

leaden hedge
#

to say what app it is

hexed basalt
#

i was thinking that might be what was happening

rain cedar
#

So it's running the wrong files even if you click the other exe

hexed basalt
#

alright ill try it on my main files, if it doesn't work after that then i will be insanely confused

leaden hedge
#

steam_appid.txt
367520
if you put that in the same folder as your exe

#

it should work

rain cedar
#

So where is the byteData stored?

leaden hedge
#

its on each state

rain cedar
#

Oh ok I was looking at the full fsm var

leaden hedge
#

its how everything other than strings is identified and stored

#

pretty sure it gets converted to FSMInt / FSMBool etc

hexed basalt
#

ITS WORKING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! only took like an hour lmao

#

thanks for the help guys

rain cedar
#

I'm not seeing a byteData property on the states either

leaden hedge
#

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

rain cedar
#

Alright, so it's probably 1/60 for the specific enemy you're looking at, then?

leaden hedge
#

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

rain cedar
#

Yeah

leaden hedge
#

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

rain cedar
#

Yeah, I hate everything to do with playmaker

rain cedar
#

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

rain cedar
#

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

leaden hedge
#

they should

#

although I dunno if you can do cylical stuff

#

like A depends on B and B depends on A

rain cedar
#

I don't think there's anything like that

leaden hedge
#

so edit class

#

at the bottom theres a folder

#

click that, and add assembly-csharp as a reference

rain cedar
#

I'm not using dnspy here

#

And I do have that as a reference in the mod dll in visual studio

leaden hedge
#

you should be able to use all its classes then

rain cedar
#

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

leaden hedge
#

probably

leaden hedge
#

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

stray mirage
#

This happened two weeks ago to someone who just reinstalled the game

#

There is hope yet

leaden hedge
#

hope for what

young walrus
#

our children

hazy sentinel
#

hope for memes

stray mirage
#

in a way, yes

young walrus
#

Sean, did you update the google drive version of the randomizer?

#

the one with the most recent change by adding compass?

wispy root
#

I don't think he did

young walrus
#

so intended skips..... is getting into mantis village part of the logic without claw or dash or anything?

wispy root
#

I think it is

#

It is possible by doing a pretty hard fireball skip in queen's station

young walrus
#

okay. just wanted to know if that was an intended part of the logic

rain cedar
#

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

bleak robin
#

Oh you only have to do that

young walrus
#

or you could go around

rain cedar
#

You can't go around

young walrus
#

oh right. non dash

#

no*

rain cedar
#

Yeah

#

It's probably the hardest thing the randomizer can make you do

young walrus
#

yeah. sounds like it. lol

buoyant wasp
#

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)

young walrus
#

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.

rain cedar
#

The randomization algorithm is what's stored in xml, essentially

#

Not the actual randomizations

buoyant obsidian
#

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

daring snow
#

@buoyant obsidian thanks!

#

I've been speedrunning it so I'll test it tomorrow ๐Ÿ˜ƒ

summer tapir
#

I did yesterday a randomizer run sean, it's super fun zurairNice

#

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

leaden hedge
#

no way to fix that

#

atm

summer tapir
#

hmm I see

#

I didnt really understand the difference between Easy and Hard tho. Is there a chance for a "harder" randomization?

leaden hedge
#

hard has harder requirements for each item

#

so its more likely a difficult or obscure trick is required to complete the run

summer tapir
#

hmm, I see.

buoyant wasp
#

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

leaden hedge
#

the ui is a confusing place

#

and we basically can't edit it atm

buoyant wasp
#

ah, so just placing stuff on top of it?

leaden hedge
#

well not the way controllers interact with it

#

but yeah, just adding our own ui in the free space

young walrus
#

i believe that's in the works wyza

leaden hedge
#

@rain cedar I think it'd be a good idea to add a version to mods

buoyant wasp
#

yes

leaden hedge
#

like just above the 1.1.1.8
write DebugMod - 0.1.0.0

#

but obviously for every installed mod

buoyant wasp
#

versioning = highly important for diagnosing issues

rain cedar
#

Yeah, mod version would be easy to implement

#

Getting controller to work for the menus is basically impossible, though

buoyant wasp
#

ยฏ_(ใƒ„)_/ยฏ 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 ๐Ÿ˜ƒ

leaden hedge
#

nope because keyboard doesn't work either

#

its only interactable with the mouse

buoyant wasp
#

My day job is coding, and it's always stuff you never think of that gets you

leaden hedge
#

yeah, I'm currenntly working on ui stuff, hopefully I can get an extra pane added to the inventory

buoyant wasp
#

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"

leaden hedge
#

adding panes would be useful for most mods

#

bonfire could add a level screen

#

most mods could add new charms

rain cedar
#

It'd be really nice for Lightbringer

#

That mod replaces like half the charms

#

And sure some of those make sense to replace

leaden hedge
#

I understand the inventory control

rain cedar
#

But others like lifeblood heart

leaden hedge
#

I've just not figured out how to edit it at runtime

buoyant wasp
#

anyway, thoughts on adding masks/soul vessels to the pool of randomizer stuff? or is that not possible due to their nature?

rain cedar
#

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

buoyant wasp
#

ah

#

would think that would add a level of brutality when trying to find stuff

rain cedar
#

All the player data stores is your mask count

#

Scene data stores which you've picked up

young walrus
#

could you have it just ignore the scene data?

#

since the count is what matters?

leaden hedge
#

you could remove the transitions from Blocker, Blocker Control

#

specifically Idle -> Close

young walrus
#

oh nvm. it needs to look at scene data to know that you've picked up that item

#

ignore me

rain cedar
#

Yeah Mickely

#

Alright KDT I'll try that

buoyant wasp
#

gonna love the seed you get where dream nail is dropped by the glubber effigy ๐Ÿ˜‰

rain cedar
#

That's impossible

young walrus
#

not possible

buoyant wasp
#

๐Ÿ˜ฆ

#

guessing one of them is behind something you need shadow dash for?

#

trying to think of where that would be...

leaden hedge
#

it'd just be cancer lol

young walrus
#

it's not that. the algorithm doesn't allow it

#

cuz getting all grubs would be so stupid

rain cedar
#

Yeah, I'm specifically not allowing grubberfly/grubsong to be anything important

buoyant wasp
#

lol, but it's the shacktool of hollowknight

#

or the pedistal seed of zelda

#

๐Ÿ˜ƒ

young walrus
#

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

buoyant wasp
#

how many do you need for grubsong? (edit fixed)

#

10?

young walrus
#

grubsong? 10

buoyant wasp
#

that wouldn't be terrible to have something good behind

young walrus
#

nah. that one would be decent

#

would have to work out which grubs are possible with what abilities though to properly code it

buoyant wasp
#

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

rain cedar
#

Yeah, early geo can suck pretty hard

#

Not sure what to do about that, though

buoyant wasp
#

that's rando

young walrus
#

there's some large enemies you can farm

#

it's not a roadblock

#

just.... annoying

buoyant wasp
#

the big guys in FC, the ones with the clubs

young walrus
#

yeah

buoyant wasp
#

drop like 40 or 50 I think

young walrus
#

43

#

plus the headbanging shroom

#

in fungal

buoyant wasp
#

and you can get a couple hundred out of early grubs

#

which could be valuable if grubsong was something that could be good

leaden hedge
#
                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 hollowface

#

completely unrelated to what you guys are talking about

#

this is at sean

young walrus
#

i mean... it's randomizer, it's relevant

#

lol

buoyant wasp
#

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

young walrus
#

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

rain cedar
#

Alright KDT, I'll try that

buoyant wasp
#

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

young walrus
#

yeah. early game routing is pretty consistent

buoyant wasp
#

what about charm notches, any way to throw those into the pool too?

#

(or a reason not to?)

young walrus
#

that would be weird with the ones you can buy from salubra

#

since those are locked behind charm count

rain cedar
#

It's hard for the same reason as masks/vessels

#

At least I think so

buoyant wasp
#

so what you're saying is, there's a chance ๐Ÿ˜ƒ

rain cedar
#

Maybe

#

I'm not really as interested in randomizing notches

leaden hedge
#

its not a major thing anyway

#

you never pick them up

young walrus
#

mask/vessel stuff is more interesting imo

leaden hedge
#

same as health / vessels

#

atleast not in a race

young walrus
#

if you know masks/vessels are randomized, would make things much more interesting

buoyant wasp
#

^

leaden hedge
#

well if it was to other stuff like skills

buoyant wasp
#

what if the shroom notch could have mantis claws ๐Ÿ˜ƒ

rain cedar
#

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

leaden hedge
#

oh

#

Shot Anim End

#

is the name of that state

rain cedar
#

Alright

leaden hedge
#

however

#

its the 2nd event

#

not the first

rain cedar
#

Yeah, I'll change the Skip(1) to actually checking state name I think

leaden hedge
#

tbh, making this viewer

#

made this shit way easier

rain cedar
#

Makes sense

leaden hedge
#

oh

#

you could also remove the fireball check

#

by sending Set R and Set L straight to roller

rain cedar
#

What do those events do?

young walrus
#

OH

#

what is the fireball check

#

and chance of roller?

#

can you see that?

leaden hedge
#

er probably

#

fireball check says if you would fire a roller but you've got no fireball it shoots goop

young walrus
#

makes sense

rain cedar
#

Oh ok

young walrus
#

and i think we've known that

rain cedar
#

I'll have to change that

leaden hedge
#

thsoe events literally just spawn the roller

rain cedar
#

I want him to still shoot rollers if you've only got dive

#

Dive can hit him

young walrus
#

but knowing the chance to spawn a roller and if there's another trigger would help normal runs

leaden hedge
#

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

rain cedar
#

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

leaden hedge
#

they are weighted the same @young walrus

#

unless there is some bug in the randomness its 50/50

rain cedar
#

Wtf

buoyant wasp
#

congrats you turned the shaman into a charm

#

a whole new rando category

#

where even the bugs themselves can be charms

rain cedar
#

I need to test if this happens every time you try to pick that up before talking to her

#

That's bizarre

buoyant wasp
#

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?

rain cedar
#

Gotta recompile the dll and restart the game

buoyant wasp
#

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

rain cedar
#

Modifying the game while it's running and having it actually take effect is not very realistic

buoyant wasp
#

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)

leaden hedge
#

might aswell reload the game then

buoyant wasp
#

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?

rain cedar
#

Not sure

#

Steam tends to react poorly to debuggers being attached to things

buoyant wasp
#

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

buoyant wasp
#

could nail upgrades be randomized?

leaden hedge
#

pale ore could be

#

technically the upgrades could too

young walrus
#

i'd randomize pale ore before nail upgrades

#

having items locked behind pale or AND geo seems like a bit much

leaden hedge
#

you could put ore into relic + key pool

young walrus
#

keys are in the relic pool?

#

also, did shopkeeper key get added in?

leaden hedge
#

dunno

#

sean was messing with whiteKey which I think is shopkeepers key

rain cedar
#

whiteKey is elegant key

#

And that was for debug mod

leaden hedge
#

ah mb

rain cedar
#

Also hasDashSlash is great slash and hasUpSlash is dash slash

leaden hedge
#

yes

rain cedar
#

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

leaden hedge
#

can you really trust the guys who instead of making an array, made 36 seperate variables to track charms

rain cedar
#

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

leaden hedge
#

those are actually used for different things

#

the array is for the thing on the charm pane, that shows your used up notches

rain cedar
#

Is there a good reason for them to be used for separate things, though?

#

Could just use the array for everything

leaden hedge
#

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

rain cedar
#

Yeah

#

And it's not really a big enough performance difference to matter, anyway

leaden hedge
#

I'd say its a playmaker thing, but I know you can call a method

#

so you could just create / call getCharmEquipped(x)

buoyant wasp
#

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

buoyant wasp
#

@rain cedar - are there charms that aren't randomized ?

rain cedar
#

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

buoyant wasp
#

glowing womb?

rain cedar
#

Glowing womb is random

bleak robin
#

i want unn to spit out a compass for me

buoyant wasp
#

ah, so i just got lucky that this seed had it in vanilla

bleak robin
#

i need that to be canon

rain cedar
#

Shape of Unn can't really be random until Isma's Tear is random

buoyant wasp
#

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

rain cedar
#

I don't really care about places where you can quit

buoyant wasp
#

k

rain cedar
#

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

buoyant wasp
#

k

young walrus
#

plus, you can still get to double jump, even if you can't get back out

buoyant wasp
#

double jump is randomized

young walrus
#

that's why Sean took the bench away there

buoyant wasp
#

unless you are talking about glitching

young walrus
#

i know, but you can still check there

buoyant wasp
#

oh, yeah, for sure

summer tapir
#

I might have hard locked in the randomizer

young walrus
#

how so?

buoyant wasp
#

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?

summer tapir
#

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

rain cedar
#

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

summer tapir
#

what do you mean with glitches?

young walrus
#

you can sean

summer tapir
#

I didnt oob or anything

young walrus
#

you can get to hornet 2 with just double jump

summer tapir
#

yea

rain cedar
#

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

summer tapir
#

yea

#

I managed to get out if the abyss by luring a shadow ghost all the way up

rain cedar
#

Jesus

young walrus
#

hahaha

buoyant wasp
#

that's dedication

young walrus
#

that's actually hilarious

summer tapir
#

but when I get back to the beginning of the basin I cant get back

rain cedar
#

Alright

#

I'll think about a good way to fix that

summer tapir
#

oki, just wanted to let you know

young walrus
#

is it possible to just remove that hard save?

rain cedar
#

Yeah, maybe

young walrus
#

you get that stuff figured out with the baldur for VS?

rain cedar
#

Yeah I got the Baldur to not close anymore a while ago

young walrus
#

cool cool. is that the most recent build on the google drive then?

rain cedar
#

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

young walrus
#

ooh

#

good point

rain cedar
#

I should've thought of it

#

Lightbringer is just reskinned grubberfly beams

young walrus
#

yeah.

rain cedar
#

And I kill the baldur without fireball every time I play that

young walrus
#

even that alone would allow VS to be randomized

rain cedar
#

Nah

young walrus
#

...provided elegy is somewhere early

buoyant wasp
#

could the nail master's skills be part of the skill pool?

rain cedar
#

Yeah, probably

#

One thing at a time, though

#

Not gonna try too much new stuff at once

buoyant wasp
#

hah, np, just throwing out ideas ๐Ÿ˜ƒ

rain cedar
#

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

buoyant wasp
#

could make it possible only in hard mode?

rain cedar
#

No, you're completely stuck if you rest there without wall jump or monarch wings

buoyant wasp
#

ah

rain cedar
#

I'll just remove the bench if you don't have one

#

Same thing I do in basin

buoyant wasp
#

oh nice, you can dynamically remove them? neat

rain cedar
#

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

buoyant wasp
#

that'd be sadistic

young walrus
#

it'd be hilarious

#

lol

rain cedar
#

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

buoyant wasp
#

is wayward compass randomized?

rain cedar
#

Nah not in the current version

#

But there's no code changes to get that in, so I will add it

buoyant wasp
rain cedar
#

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

buoyant wasp
#

@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)

leaden hedge
#

its gradows hollowface

#

and it increases health by 2 at most iirc

#

it starts at 1.4 and ends at 2.4

rain cedar
#

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

leaden hedge
#

check HutongGames.Playmaker.Actions.GetPlayerDataInt

#

unless spells don't use that

rain cedar
#

All that does is call PlayerData.GetInt, though

leaden hedge
#

oh this is quite an fsm

rain cedar
#

Is that the spell control?

leaden hedge
#

yes

rain cedar
#

Looks pretty bad

leaden hedge
rain cedar
#

Why is enter quake not connected to anything?

#

I guess you wouldn't know

leaden hedge
#

oh it is

#

this thing is just so big, my lines dont reach

rain cedar
#

Nice

leaden hedge
#

I make a 2k by 2k svg to draw lines on

rain cedar
#

I'm surprised spell casting doesn't lag more

leaden hedge
#

no surprise its glitchy af though

rain cedar
#

Well, I'm able to cast spells when I set the int for them now

#

Hopefully the pickups work fine too

leaden hedge
#

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

rain cedar
#

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

leaden hedge
#

why won't it work for wraiths

#

looking at the fsm, it looks the same

rain cedar
#

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

leaden hedge
#

did you remove the floors in soul masters room?

rain cedar
#

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

leaden hedge
#

If you can use reflection to edit ActionData.fsmStringParams you could just change what its looking for

#

to say _fireballLevel

rain cedar
#

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?

leaden hedge
rain cedar
#

Oh wow that's so much less than I expected

leaden hedge
#

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

rain cedar
#

Thanks

leaden hedge
#

oh and the FALSE is just whether or not it runs every frame

#

which in this case it isn't

rain cedar
#

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

leaden hedge
#

hmm

#

compare one of the gameobjects with and without

rain cedar
#

Oh yeah, the water fsm is way more complicated

#

Probably needs something similar to that on it

leaden hedge
#

I think if you just add that fsm

#

it'll work

rain cedar
#

The problem is in making a copy of that

#

Not sure how really to do that

leaden hedge
#

can you not deserialize that json

#

i'd ask kcghost

rain cedar
#

I'll look into it more later

#

Gonna try to get spells working tonight instead

leaden hedge
#

I think if you do PlayMakerFSM fsm = JsonUtility.FsomJson<PlayMakerFSM>(waterJson);

#

it "should" work

heavy geyser
#

got pretty darn far and still no dash ;_;

#

randomizer mod

#

have half the charms

rain cedar
#

Well, you've got a lot of other things so you don't need it too badly

heavy geyser
#

yeah, i'm still spamming dash out of habit

#

it feels slow

leaden hedge
#

you can beat the game rn hollowface

heavy geyser
#

it is fun having to pogo and double jump instead of dash though. it's like a different game sometimes

rain cedar
#

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

leaden hedge
#
typeof(ActionData).GetProperties().Select(f => f.Name).ToList();

what does that print

rain cedar
#

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

leaden hedge
#

NullReferenceException: Object reference not set to an instance of an object

#

then something to do with a camera

buoyant wasp
#

@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.

rain cedar
#

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

buoyant wasp
#

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

rain cedar
#

@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

buoyant wasp
#

hmm

#

then perhaps all 3 can't be early? I mean, to finish the game you need, what, dash+mantis+dream nail+super dash?

rain cedar
#

How do we define "early", though?

#

All I'm doing now is making charms 4x as likely

buoyant wasp
#

all shops + fireball charm +thorns.

rain cedar
#

Fireball charm?

buoyant wasp
#

uhm, normally soul catcher

rain cedar
#

Right

buoyant wasp
#

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

rain cedar
#

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

buoyant wasp
#

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"

rain cedar
#

Yeah, could be a good idea

young walrus
#

just had a seed where dream nail was at sharp shadow

#

gate was at awoken nail, and awoken nail was at elegy

#

BAH

leaden hedge
#

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

rain cedar
#

Nice

leaden hedge
#
                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 hollowface

rain cedar
#

You can just do HeroController.instance.spellControl

leaden hedge
#

either way that prints fsmStringParams to the console

heavy geyser
leaden hedge
#

so its definitely in there

rain cedar
#

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

leaden hedge
#

when I just did ActionData it gave me issues

#

I had to type out HutongGames.PlayMaker.ActionData for some reason

rain cedar
#

Weird

#

Maybe there is some other ActionData class in another namespace

leaden hedge
#

which charm# costs one

rain cedar
#

1, for one

leaden hedge
#

actually I guess I can charmSlotsFilled

#

alright let me test this

rain cedar
#

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

leaden hedge
#

why do you need to

#

change the string, and look for the new string in PlayerData.GetInt

rain cedar
#

Oh, will it just work that way?

#

I assumed it would get an error because the int isn't there

leaden hedge
#

it should I think you have to reload the state somehow though

#

well, only if you use the GetValue thats in GetInt

rain cedar
#

GetInt just uses reflection to get variables in PlayerData though

leaden hedge
#

so put an if above that, and say if string = _fireballLevel return whatever

#

it'll never get to the reflection part

rain cedar
#

Oh yeah, obviously

leaden hedge
#
                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 hollowface

#

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

rain cedar
#

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

leaden hedge
#

what about ismas hollowface

rain cedar
#

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

rain cedar
#

@leaden hedge Send me your ModLog.txt

wispy root
#

Seems to be working fine for me, got dashmaster from fireball and I can't cast fireball

leaden hedge
rain cedar
#

Looks fine

#

But to be fair I don't do very extensive debug output

leaden hedge
#

only thing I picked up was fury

#

which was dash

rain cedar
#

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?

leaden hedge
#

I play in japanese but I don't think that'd affect it

rain cedar
#

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

leaden hedge
#

blocker worked though

rain cedar
#

Can you send me the .rnd save file?

leaden hedge
#

I restarted to test it without debug enabled

#

I uninstalled debug mod and it worked

rain cedar
#

Odd

#

I've got them both on and it's fine

void tree
#

The baldur in front of greenpath seems to only spit fireballs, even with vengeful picked up

leaden hedge
#

might have been my reference I made to test it

rain cedar
#

That makes sense, Trinomi

#

I should fix that

leaden hedge
#

the state is Can Roller?

#

first string param is fireballLevel

rain cedar
#

Alright, thanks

#

Any scenes have baldurs besides this and baldur shell?

leaden hedge
#

wheres baldur shell

#

is that the one with 2 on either side

rain cedar
#

Yes

leaden hedge
#

I believe those are the only 2 places

rain cedar
#

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

wispy root
#

I just got desolate dive twice...

leaden hedge
#

like from 2 seperate places

#

or from soul master twice?

wispy root
#

from dashmaster and from mark of pride

leaden hedge
#

do you have lv2 dive?

wispy root
#

no

leaden hedge
#

wow bug

#

fix sean hollowface

wispy root
#

aaahhh... sorry D:

leaden hedge
#

I assume you picked up lv2 first so it became lv1

#

but lv1 didn't become lv2